//
// 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>');
	document.write('<p class="quizQuestion">السؤال:' + 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>');
						document.write('<p class="quizText"> الإجابة الصحيحة:</p>');
						document.write('<p class="quizText">هى</p>');
			document.write('<p class="quizIndent">' + this.qList[lastQuestion].text + '</p>');
			//document.write('<p class="quizText">هى</p>');
			document.write('<p class="quizIndent">' + correctAnswer + '</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="السؤال القادم >>"></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"> لقد قمت بإجابة عدد ' + ccount + ' أسئلة صحيحة من ' +
			this.qList.length + '  سؤال</p>');
		document.write('<p class="quizText">النتيجة  ' + 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("الرجاء إختيار إجابة قبل الإكمال");
	
	return validated;
}

var gQuestionList = new QuestionList(null);

// Quiz Source Start (to edit with QuizEditor copy/paste between here and end
// -->

gQuestionList.ScoreResults(0,"هل انت متاكد من انك تحاول؟");
gQuestionList.ScoreResults(1," تحتاج الى المزيد من التدريب");
gQuestionList.ScoreResults(2,"تحتاج الى المزيد من التدريب");
gQuestionList.ScoreResults(3,"تحتاج الى المزيد من التدريب");
gQuestionList.ScoreResults(4,"تحتاج الى المزيد من التدريب");
gQuestionList.ScoreResults(5,"تحتاج الى المزيد من التدريب");
gQuestionList.ScoreResults(6,"ليس بسىء");
gQuestionList.ScoreResults(7,"جيد!");
gQuestionList.ScoreResults(8,"جيد جدا!");
gQuestionList.ScoreResults(9,"ممتاز!");

//gQuestionList.ScoreResults(0,"Are you sure you are trying?");
//gQuestionList.ScoreResults(1,"You may want to practice more.");
//gQuestionList.ScoreResults(2,"You may want to practice more.");
//gQuestionList.ScoreResults(3,"You may want to practice more.");
//gQuestionList.ScoreResults(4,"You may want to practice more.");
//gQuestionList.ScoreResults(5,"You may want to practice more.");
//gQuestionList.ScoreResults(6,"Not bad.");
//gQuestionList.ScoreResults(7,"Good job!");
//gQuestionList.ScoreResults(8,"Great job!");
//gQuestionList.ScoreResults(9,"Excellent job!");

q = gQuestionList.NewQuestion(" السياحة هى ");
q.NewAnswer("حركة الأشخاص فى المكان والزمان خارج مجتمعاتهم لأغراض ترفيهية أو لغرض العمل ",true);
q.NewAnswer("أى تحرك للأشخاص خارج مساكنهم لمدة تزيد عن 24 ساعة",false);

q = gQuestionList.NewQuestion("تولد السياحة فى المدن الساحلية إجمالى دخل قومى أعلى من المدن الغير ساحلية :");
q.NewAnswer("خطـأ ",false);
q.NewAnswer("صـح ",true);

q = gQuestionList.NewQuestion("  السياحة الساحلية يكون لها تأثير على ");
q.NewAnswer("شريط ساحلى ضيق حيث يوجد بنية تحتية سياحية",false);
q.NewAnswer("	إمدادات المياه والطاقة والبنية التحتية الخاصة بالنقل فى الشريط الساحلى (وأجزاء) من المناطق الخلفية للشريط الساحلى",true);

q = gQuestionList.NewQuestion("تعتمد توقعات السائحين بتزايد فى هذه الأيام على الجمع مابين :");
q.NewAnswer("الطبيعة والثقافة",false);
q.NewAnswer("الشمس، البحروالرمال",false);
q.NewAnswer("الطبيعة، الأنشطة الترفيهية والثقافة",true);

q = gQuestionList.NewQuestion(" السياحة المستدامة لاتهدف فى الأساس إلى");
q.NewAnswer("المسؤولية الاجتماعية",false);
q.NewAnswer("الربح لكبار المرشدين السياحيين",true);
q.NewAnswer("الالتزام القوى تجاه الحفاظ على البيئة",false);
q.NewAnswer("دمج السكان المحليين فى الأنشطة السياحية أو التنموية",false);

q = gQuestionList.NewQuestion("  المنهج المستدام لتطوير السياحة له أهمية حيوية لـ");
q.NewAnswer("جميع الدول التى تهدف إلى تطوير السياحة",true);
q.NewAnswer("	غالباً المدن الساحلية، حيث أنها الوجهة الأولى للسواح ومن أهم الأقاليم الإيكولوجية المعرضة للإنقراض",false);
q.NewAnswer("غالبا شرق آسيا والمحيط الهادئ حيث أنهما أقل تطوراً من الناحية الاقتصادية ولكن من ناحية أخرى تعد وجهات سياحية فى تزايد مطرد ",false);

q = gQuestionList.NewQuestion("  تحدد استراتيجيات اللجنة الأوروبية للإدارة المتكاملة للمناطق الساحلية ");
q.NewAnswer("الخطوات التى يجب إتخاذها من قبل الدول الأعضاء لتطوير الاستراتيجيات القومية للإدارة المتكاملة للمناطق الساحلية",true);
q.NewAnswer("تعريف الاتحاد الأوروبى للمناطق الساحلية والأدوات القانونية إدارة تلك المناطق (بما فيها القواعد الخاصة بالسياحة المستدامة",false);

q = gQuestionList.NewQuestion("  الإطار التوجيهى الأوروبى للمياه هى وثيقة");
q.NewAnswer("تشير إلى كيفية إدارة المياه فى سياق السياحة المستدامة",false);
q.NewAnswer("نابعة من الطلب المتزايد من قبل المواطنين والمنظمات البيئية التى تهدف إلى وضع ضوابط واضحة من أجل الحصول على أنهار وبحيرات نظيفة، ومياه جوفية وشواطئ ساحلية",true);
q.NewAnswer("تهدف إلى التوزيع المتساوى لموارد المياه بين الدول",false);

q = gQuestionList.NewQuestion("  التحفيذ والمشاركة فى الاستهلاك المستدام لقطاع السياحة هو مهمة خاصة بـ");
q.NewAnswer("لمنظمات المختصة بحماية البيئة ",false);
q.NewAnswer("المنظمات الحكومية المحلية والوطنية",false);
q.NewAnswer("شركات النقل",false);
q.NewAnswer("الشركات التى تعمل فى مجال الخدمات السياحية",false);
q.NewAnswer("جميع المنظمات سابقة الذكر",true);

q = gQuestionList.NewQuestion("تحديد قدرة الإقليم على استيعاب السواح، يساعد على :");
q.NewAnswer("تجنب تدمير القاعدة الطبيعية والبيولوجيةوالاقتصادية والاجتماعيةالثقافية للتنميةالسياحية",true);
q.NewAnswer("تقدير العدد الأقصى من السواح الذى يمكن السماح لهم بالمبيت",false);

q = gQuestionList.NewQuestion("  لفوائد الاجتماعية-الثقافية للسياحة المستدامة فى المناطق الساحلية لاتشتمل على ");
q.NewAnswer("التفاهم الأمثل بين الأشخاص والثقافات",false);
q.NewAnswer("تقوية المجتمعات",false);
q.NewAnswer("تقوية الثقافات المحلية والتقاليد",false);
q.NewAnswer("سهولة الانتقال لسوق العمالة المحلية",true);

q = gQuestionList.NewQuestion(" الأداة القانونية التى تطبق حالياً فى ممارسة تقييم الآثار البيئية السلبية للمشاريع السياحية الملموسة");
q.NewAnswer("تقييم الأثر البيئى (EIA)",true);
q.NewAnswer("التقييم البيئى الاستراتيجى (SEA)",false);
q.NewAnswer("التدقيق البيئي ",false);

q = gQuestionList.NewQuestion("السؤال الثالث عشر: أى من الأجوبة التالية غير صحيح: التدقيق البيئى يساعد الشركات السياحية على:");
q.NewAnswer("تقييم الكفاءة المهنية",true);
q.NewAnswer("التأكد من مدى مواءمتها مع التشريعات البيئية",false);
q.NewAnswer("التعرف على المشكلات",false);
q.NewAnswer("تقييم الآداء البيئى",false);
q.NewAnswer("أن تصبح أكثر كفاءة إيكولوجية",false);
q.NewAnswer("عمل قائمة خاصة بالإجراءات الاصلاحية المستقبلية",false);
q.NewAnswer("زيادة التنافس ",false);

q = gQuestionList.NewQuestion(" علامة التوافق البيئى (التوسيم الإيكولوجى) هو نظام جبرى لمنح شعار للمنتجات التى تم تصنيفها على أنها أقل ضرراً للبيئة. العلامات البيئية تقوم بتعريف المستهلك بمنتج / بخدمة معينة");
q.NewAnswer("صـح",false);
q.NewAnswer("خطـأ  ",true);




// <-- Quiz Source End 

