//
// QueryString
//

function QueryString(key)
{
	var value = null;
	for (var i=0;i<QueryString.keys.length;i++)
	{
		if (QueryString.keys[i]==key)
		{
			value = QueryString.values[i];
			break;
		}
	}
	return value;
}
QueryString.keys = new Array();
QueryString.values = new Array();

function QueryString_Parse()
{
	var query = window.location.search.substring(1);
	var pairs = query.split("&");
	
	for (var i=0;i<pairs.length;i++)
	{
		var pos = pairs[i].indexOf('=');
		if (pos >= 0)
		{
			var argname = pairs[i].substring(0,pos);
			var value = pairs[i].substring(pos+1);
			QueryString.keys[QueryString.keys.length] = argname;
			QueryString.values[QueryString.values.length] = value;		
		}
	}

}

QueryString_Parse();


//
// Answer
//
function Answer_WriteHTML()
{
	document.write('<INPUT type="radio" value="' + this.id + '" name="answers"> ');
	document.write('<span  class="quizText">' + this.text + '</span><br>');
}

function Answer(aID)
{
	this.text = "New Answer";
	this.id = aID;
	this.correct = false;
	
	this.WriteHTML = Answer_WriteHTML;
}

//
// AnswerList
//

function AnswerList_NewAnswer()
{
	var a = new Answer(this.sequenceID);
	this.sequenceID++;
	this.aList[this.aList.length] = a;

	// Optional Args: text, correct
	if (arguments.length > 0)
		a.text = arguments[0];

	if (arguments.length > 1)
		a.correct = arguments[1];

	if (this.editor)
		this.editor.AnswerSectionUpdate();
		
	return a;
}

function AnswerList_Remove(id)
{
	for (var i=0;i<this.aList.length;i++)
	{
		if (this.aList[i] && this.aList[i].id == id)
		{
			this.aList[i] = null;
			break;
		}
	}
}

function AnswerList_Find(id)
{
	var result = null;
	for (var i=0;i<this.aList.length;i++)
	{
		if (this.aList[i] && this.aList[i].id == id)
		{
			result = this.aList[i];
			break;
		}
	}
	return result;
}

function AnswerList_WriteHTML()
{
	for (var i=0;i<this.aList.length;i++)
		this.aList[i].WriteHTML();
}

function AnswerList(editor)
{
	this.editor = editor;
	this.sequenceID = 0;
	this.aList = new Array();
	
	this.NewAnswer = AnswerList_NewAnswer;
	this.Remove = AnswerList_Remove;
	this.Find = AnswerList_Find;
	this.WriteHTML = AnswerList_WriteHTML;
}

//
// Question
//

function Question_NewAnswer(text,correct)
{
	this.answerList.NewAnswer(text,correct);
}

function Question_WriteHTML()
{
	document.write('<p class="quizQuestion">Q: ' + this.text + '</p>');
	this.answerList.WriteHTML();
}

function Question_GetCorrectAnswer(text,correct)
{
	var result = "";
	for (var i=0;i<this.answerList.aList.length;i++)
	{
		if (this.answerList.aList[i] && this.answerList.aList[i].correct)
		{
			result = this.answerList.aList[i].text;
			break;
		}
	}
	return result;
}

function Question(qID,editor)
{
	this.text = "New Question";
	this.id = qID;
	this.editor = editor;
		
	this.answerList = new AnswerList(editor);
	
	this.NewAnswer = Question_NewAnswer;
	this.WriteHTML = Question_WriteHTML;
	this.GetCorrectAnswer = Question_GetCorrectAnswer;
}

//
// QuestionList
//

function QuestionList_NewQuestion()
{
	var q = new Question(this.sequenceID,this.editor);
	this.sequenceID++;
	this.qList[this.qList.length] = q;
	
	// Optional Args: text
	if (arguments.length > 0)
		q.text = arguments[0];
	
	if (this.editor)
		this.editor.QuestionItemsAdd(q);
		
	return q;
}

function QuestionList_Remove(id)
{
	for (var i=0;i<this.qList.length;i++)
	{
		if (this.qList[i] && this.qList[i].id == id)
		{
			this.qList[i] = null;
			break;
		}
	}
}

function QuestionList_Find(id)
{
	var result = null;
	for (var i=0;i<this.qList.length;i++)
	{
		if (this.qList[i] && (this.qList[i].id == id))
		{
			result = this.qList[i];
			break;
		}
	}
	return result;
}

function QuestionList_WriteHTML()
{
	var index = 0;
	
	var lastQuestion = QueryString("lastQuestion");
	var ccount = QueryString("ccount");

	if (ccount == null)
		ccount = 0;
	else
		ccount = parseInt(ccount);

	document.write('<form name="quiz" method="GET" onsubmit="return QuestionListValidate(this)">');
		
	
	if (lastQuestion!=null)
	{
		lastQuestion = parseInt(lastQuestion);
		index = 1 + lastQuestion;
		var answerID = parseInt(QueryString("answers"));
		
		if (this.qList[lastQuestion].answerList.aList[answerID].correct)
		{
			document.write('<p class="quizRightWrong"></p>');
			ccount++;
		}
		else
		{
			var correctAnswer = this.qList[lastQuestion].GetCorrectAnswer();
			document.write('<p class="quizRightWrong"></p>');
		}
		
		
	}
	
	if (index < this.qList.length)
	{
		document.write('<input type="hidden" name="lastQuestion" value="' + index + '">')
		
		this.qList[index].WriteHTML();
		document.write('<p><input type="submit" name="submit" value="Next Question >>"></p>')
	}
	else
	{
		var score = Math.round((ccount*100)/this.qList.length);
		var scoreResults = this.ScoreResults(Math.min(Math.floor(score/10),9));
		document.write('<p class="quizText">You answered ' + ccount + ' questions out of ' +
			this.qList.length + ' Yes.</p>');
		document.write('<p class="quizText">Your score is ' + score + '%. ' + scoreResults + '</p>');
	}
	
	document.write('<input type="hidden" name="ccount" value="' + ccount + '">')
	document.write('</form>');
	
}

function QuestionList_ScoreResults(index,text)
{
	// Optional Args: text
	if (arguments.length > 1)
	{
		this.scoreResults[index] = text;
	}
		
	return this.scoreResults[index];
}

function QuestionList(editor)
{
	this.sequenceID = 0;
	this.qList = new Array();
	this.scoreResults = new Array(10);
	this.editor = editor;
	
	this.NewQuestion = QuestionList_NewQuestion;
	this.Remove = QuestionList_Remove;
	this.Find = QuestionList_Find;
	this.WriteHTML = QuestionList_WriteHTML;
	this.ScoreResults = QuestionList_ScoreResults;
}

function QuestionListValidate(theForm)
{
	var validated = false;
	
	for (var i=0;i<theForm.answers.length;i++)
	{
		if (theForm.answers[i].checked == true)
		{
			validated = true;
			break;
		}
	}
	
	if (!validated)
		alert("Please select an answer before continuing.");
	
	return validated;
}

var gQuestionList = new QuestionList(null);

// Quiz Source Start (to edit with QuizEditor copy/paste between here and end
// -->
gQuestionList.ScoreResults(0,"You indicate that you have very few or no symptoms of generalized anxiety disorder. However, if you think you are feeling anxious too much of the time, talk to your doctor. You may also read more about GAD below.");
gQuestionList.ScoreResults(1,"You indicate that you may have a few symptoms of generalized anxiety disorder. If your worries are taking up your thoughts and time, talk to your doctor. You may also read more about GAD below.");
gQuestionList.ScoreResults(2,"You indicate that you may have a few symptoms of generalized anxiety disorder. If your worries are taking up your thoughts and time, talk to your doctor. You may also read more about GAD below.");
gQuestionList.ScoreResults(3,"You indicate that you may have a few symptoms of generalized anxiety disorder. If your worries are taking up your thoughts and time, talk to your doctor. You may also read more about GAD below.");
gQuestionList.ScoreResults(4,"You have several symptoms of generalized anxiety disorder. Before your worries interfere with your normal, daily life, be sure to talk with your doctor or another healthcare provider. You may also read more about GAD below.");
gQuestionList.ScoreResults(5,"You indicate that you may have a few symptoms of generalized anxiety disorder. If your worries are taking up your thoughts and time, talk to your doctor. You may also read more about GAD below.");
gQuestionList.ScoreResults(6,"You indicate that you may have a few symptoms of generalized anxiety disorder. If your worries are taking up your thoughts and time, talk to your doctor. You may also read more about GAD below.");
gQuestionList.ScoreResults(7,"You have many symptoms of generalized anxiety disorder, and they are interfering with your normal routines. Please talk to a doctor, therapist or other trusted healthcare provider. You may also read more about GAD below.");
gQuestionList.ScoreResults(8,"You have many symptoms of generalized anxiety disorder, and they are interfering with your normal routines. Please talk to a doctor, therapist or other trusted healthcare provider. You may also read more about GAD below.");
gQuestionList.ScoreResults(9,"You have many symptoms of generalized anxiety disorder, and they are interfering with your normal routines. Please talk to a doctor, therapist or other trusted healthcare provider. You may also read more about GAD below.");
q = gQuestionList.NewQuestion("Do you worry continually almost every day about both big and small problems, situations, events, and/or activities?");
q.NewAnswer("Yes",true);
q.NewAnswer("No",false);
q = gQuestionList.NewQuestion("Do you have difficulty controlling your worries or anxieties?");
q.NewAnswer("Yes",true);
q.NewAnswer("No",false);
q = gQuestionList.NewQuestion("Do you have trouble keeping your mind on one thing?");
q.NewAnswer("Yes",true);
q.NewAnswer("No",false);
q = gQuestionList.NewQuestion("Do you feel restless or keyed up or own edge much of the time?");
q.NewAnswer("Yes",true);
q.NewAnswer("No",false);
q = gQuestionList.NewQuestion("Do you have headaches and/or other aches and pains for no apparent reason?");
q.NewAnswer("Yes",true);
q.NewAnswer("No",false);
q = gQuestionList.NewQuestion("Do you feel irritable or easily angered frequently?");
q.NewAnswer("Yes",true);
q.NewAnswer("No",false);
q = gQuestionList.NewQuestion("Do you have difficulty falling or staying asleep?");
q.NewAnswer("Yes",true);
q.NewAnswer("No",false);
q = gQuestionList.NewQuestion("Do you feel tired a lot or are you easily fatigued?");
q.NewAnswer("Yes",true);
q.NewAnswer("No",false);
q = gQuestionList.NewQuestion("Do you sometimes sweat or have hot flashes?");
q.NewAnswer("Yes",true);
q.NewAnswer("No",false);
q = gQuestionList.NewQuestion("Do you sometimes have a lump in your throat when you're worried?");
q.NewAnswer("Yes",true);
q.NewAnswer("No",false);
q = gQuestionList.NewQuestion("Do you sometimes feel like you might throw up when you're worried?");
q.NewAnswer("Yes",true);
q.NewAnswer("No",false);
q = gQuestionList.NewQuestion("Do you feel like you can't concentrate or that your mind goes blank at times?");
q.NewAnswer("Yes",true);
q.NewAnswer("No",false);
q = gQuestionList.NewQuestion("Does your worrying interfere with your normal routines, work or school, and/or social activities?");
q.NewAnswer("Yes",true);
q.NewAnswer("No",false);


// <-- Quiz Source End 
