var qFragenNeu;

var qDiverses;

var qActualPunkte = 0;

var qTime;

var qTimeNormal;

var qLowestPoints = 0;

var qSetStopTime = false;

var qSetFifty = false;

var qSetNext = false;

var qJokerFifty = true;

var qJokerNext = true;

var qJokerTimestop = true;

var qTitle;

var qSystem;

var qGesamtAnzahlFragen;

Number(qActualPunkte);

Number(qTime);

var qFragenFalse = new Array();

var qRichtig = 1;



var Quiz = Class.create();



Quiz.prototype = {



// Structure like that will be included in your HTML Source	

//	<div id="wrapper">

//		<div id="top"></div>

//		<div id="timeDisplay"></div>

//		<div id="content">

//			<div id="joker" style="display:none;">

//				<ul>

//					<li id="joker1"><a href="#">50:50</a></li>

//					<li id="joker2"><a href="#">Frage ?berspringen</a></li>

//					<li id="joker3"><a href="#">Zeit anhalten</a></li>

//				</ul>

//			</div>

//			<div id="question">

//				<div id="QuestionDiv"></div>

//				<div id="answers"></div>

//			</div>

//			<div id="messages"></div>

//			<div id="topList"></div>	

//		</div>

//		<div id="footer">copyright: Windsbacher Knabenchor - eBugz</div>

//	</div>	

	

	initialize: function() {

		if (!document.getElementsByTagName){ return; }  // Sort out old Browser

		var objBody = document.getElementsByTagName("body").item(0);



		var objQuizContainer = document.createElement("div");

		objQuizContainer.setAttribute('id','wrapper');

		objBody.appendChild(objQuizContainer);

		

		var objTopDiv = document.createElement("div");

		objTopDiv.setAttribute('id','top');

		objQuizContainer.appendChild(objTopDiv);

		

		var objTimeDiv = document.createElement("div");

		objTimeDiv.setAttribute('id','timeDisplay');

		objQuizContainer.appendChild(objTimeDiv);

		

		var objContentDiv = document.createElement("div");

		objContentDiv.setAttribute('id','content');

		objQuizContainer.appendChild(objContentDiv);

		

		var objJokerDiv = document.createElement("div");

		objJokerDiv.setAttribute('id','joker');

		objJokerDiv.style.display = "none";

		objContentDiv.appendChild(objJokerDiv);

		

		var objJokerList = document.createElement("ul");

		objJokerDiv.appendChild(objJokerList);

		

		var objJoker1 = document.createElement("li");

		objJoker1.setAttribute('id','joker1');

		objJoker1.innerHTML = "50:50";

		objJokerList.appendChild(objJoker1);

		

		var objJoker2 = document.createElement("li");

		objJoker2.setAttribute('id','joker2');

		objJoker2.innerHTML = "Frage &uuml;berspringen";

		objJokerList.appendChild(objJoker2);

		

		var objJoker3 = document.createElement("li");

		objJoker3.setAttribute('id','joker3');

		objJoker3.innerHTML = "Zeit anhalten";

		objJokerList.appendChild(objJoker3);

		

		var objQuestionDiv = document.createElement("div");

		objQuestionDiv.setAttribute('id','question');

		objQuestionDiv.style.display = "none";

		objContentDiv.appendChild(objQuestionDiv);

		

		var objQuestionLabelDiv = document.createElement("div");

		objQuestionLabelDiv.setAttribute('id','QuestionDiv');

		objQuestionDiv.appendChild(objQuestionLabelDiv);

		

		var objAnswersDiv = document.createElement("div");

		objAnswersDiv.setAttribute('id','answers');

		objQuestionDiv.appendChild(objAnswersDiv);

		var objAnswersList = document.createElement("ul");

		objAnswersList.setAttribute('id','answerList');

		objAnswersDiv.appendChild(objAnswersList);



		var answer1Point = document.createElement("li");

		answer1Point.className = "answer";

		answer1Point.id="li1";

		answer1Point.onclick=function(){puff(1, 'li1');}

		objAnswersList.appendChild(answer1Point);

		var answer2Point = document.createElement("li");

		answer2Point.className = "answer";

		answer2Point.id="li2";

		answer2Point.onclick=function(){puff(2, 'li2');}

		objAnswersList.appendChild(answer2Point);

		var answer3Point = document.createElement("li");

		answer3Point.className = "answer";

		answer3Point.id="li3";

		answer3Point.onclick=function(){puff(3, 'li3');}

		objAnswersList.appendChild(answer3Point);

		var answer4Point = document.createElement("li");

		answer4Point.className = "answer";

		answer4Point.id="li4";

		answer4Point.onclick=function(){puff(4, 'li4');}

		objAnswersList.appendChild(answer4Point);

		

		var objMessagesDiv = document.createElement("div");

		objMessagesDiv.setAttribute('id','messages');

		objMessagesDiv.style.display = "none";

		objContentDiv.appendChild(objMessagesDiv);

		

		var objToplistDiv = document.createElement("div");

		objToplistDiv.setAttribute('id','topList');

		objToplistDiv.style.display = "none";

		objContentDiv.appendChild(objToplistDiv);

		

		var objFooterDiv = document.createElement("div");

		objFooterDiv.setAttribute('id','footer');

		objQuizContainer.appendChild(objFooterDiv);

		this.loadSettings();

		

	},

	

	///////////////////////////////////////////////////////////////////////////////////

	//				Load general Settings                                            //

	///////////////////////////////////////////////////////////////////////////////////

	loadSettings: function(){ //Loads the settings that were made in backend

		var params = "timeStamp=" + new Date().getTime();

		new Ajax.Request ( //Starting Protoype Ajax Request to load actual XML File that was asked for

		    "include/settings.xml",

		{ method: 'GET', parameters: params, onComplete: this.settingsLoaded });

	},

	settingsLoaded: function(xhr){ 
		//alert(xhr.responseText);
		var settingsXML = xhr.responseXML;

		var valSystem = settingsXML.getElementsByTagName('system');

		qSystem=valSystem[0].firstChild.nodeValue;

		//alert(qSystem);

		if (qSystem == "learn") {

			qTime=0;

			qTimeNormal=0;

		} else {

			

			var xmlTime = settingsXML.getElementsByTagName('time');

			qTime = xmlTime[0].firstChild.nodeValue;

			qTimeNormal = xmlTime[0].firstChild.nodeValue;

			var timeStop = settingsXML.getElementsByTagName('jokerTimestop');

			qJokerTimestop=timeStop[0].firstChild.nodeValue;

			var next = settingsXML.getElementsByTagName('jokerNext');

			qJokerNext=next[0].firstChild.nodeValue;

			var fifty = settingsXML.getElementsByTagName('jokerFifty');

			qJokerFifty=fifty[0].firstChild.nodeValue;

		

		}



		var valTitle = settingsXML.getElementsByTagName('title');

		qTitle=valTitle[0].firstChild.nodeValue;

		$('top').innerHTML = "<h1>" + qTitle + "</h1>";

		$('joker1').style.display="none";

		$('joker2').style.display="none";

		$('joker3').style.display="none";

		Event.observe('li1', 'mouseover', function(e){ Element.setStyle('li1', {backgroundColor: '#9DB9C3'});}  , false);

		Event.observe('li1', 'mouseout', function(e){ Element.setStyle('li1', {backgroundColor: '#DDE8F5'});} , false);

		Event.observe('li2', 'mouseover', function(e){ Element.setStyle('li2', {backgroundColor: '#9DB9C3'});}  , false);

		Event.observe('li2', 'mouseout', function(e){ Element.setStyle('li2', {backgroundColor: '#DDE8F5'});} , false);

		Event.observe('li3', 'mouseover', function(e){ Element.setStyle('li3', {backgroundColor: '#9DB9C3'});}  , false);

		Event.observe('li3', 'mouseout', function(e){ Element.setStyle('li3', {backgroundColor: '#DDE8F5'});} , false);

		Event.observe('li4', 'mouseover', function(e){ Element.setStyle('li4', {backgroundColor: '#9DB9C3'});}  , false);

		Event.observe('li4', 'mouseout', function(e){ Element.setStyle('li4', {backgroundColor: '#DDE8F5'});} , false);

		

		

		

		//alert("go" + qSystem);

	},

	

	///////////////////////////////////////////////////////////////////////////////////

	//				Start the Game                                                   //

	///////////////////////////////////////////////////////////////////////////////////

	startTheGame: function(){ //starts the Game Dialogue

		$('topList').style.display="none";

		$('messages').style.display="none";

		$('question').style.display="none";

		$('joker').style.display="none";

		var params = "timeStamp=" + new Date().getTime()

		new Ajax.Request ( //Starting Protoype Ajax Request to load actual XML File that was asked for

		    "quizAusgabe.php5?action=load_gebiete",

		{ metod: 'get', parameters: params, onComplete: this.gebieteLoaded });

	},

	

	gebieteLoaded: function(xhr){

		var backXML = xhr.responseXML;	

		var	names = backXML.getElementsByTagName("NAME");

		var divInnerHtml = "<ul>";

		for(var i=0; i<names.length; i++){
			if(names[i].getAttribute('STATUS')=="ja"){
				divInnerHtml +=  "<li><a href=\"#\" class=\"thema\" onClick='myQuiz.selectLevel(" + names[i].getAttribute('ID') + ");'>" + decode_utf8(names[i].firstChild.nodeValue)  + "</a></li>";				
			}
		}	

		divInnerHtml +="<li><a href=\"#\" class=\"thema\" onClick=\"myQuiz.selectLevel('all');\">alle Gebiete</a></li></ul>";

		$("messages").innerHTML = divInnerHtml;

		new Effect.Appear('messages', { duration: 1.0, from: 0.0, to: 1.0});

	},

	

	selectLevel: function(genre){

		$("messages").innerHTML ="";

		var auswahlDiv = "";

		auswahlDiv = auswahlDiv + "<ul><li><a class=\"level\" href=\"#\" onClick=\"myQuiz.loadQuestions('" + genre + "', 1);\">leicht</a></li>";

		auswahlDiv = auswahlDiv + "<li><a class=\"level\" href=\"#\" onClick=\"myQuiz.loadQuestions('" + genre + "', 2);\">mittel</a></li>";

		auswahlDiv = auswahlDiv + "<li><a class=\"level\" href=\"#\" onClick=\"myQuiz.loadQuestions('" + genre + "', 3);\">schwer</a></li></ul>";	

		$("messages").innerHTML =auswahlDiv;	

	},

	loadQuestions: function(genre, level){

		var params = "";

		new Ajax.Request ( //Starting Protoype Ajax Request to load actual XML File that was asked for

		    "quizAusgabe.php5?timeStamp=" + new Date().getTime() + "&action=getQuestions&genre=" + genre +"&level=" + level,

		{ metod: 'get', parameters: params, onComplete: this.questionsLoaded });

	},

	questionsLoaded: function(xhr){

		//new Effect.Fade('messages', {duration: 0.5, afterFinish: function(){new Effect.Appear('question');}});

		var backXML = xhr.responseXML;

		$('messages').innerHTML = "";

		var questions =  backXML.getElementsByTagName("QUESTION");

		var divInnerHtml = "";

		var fragenAusgabe = new Array();

		qGesamtAnzahlFragen = questions.length;

		for(var i=0; i<questions.length; i++){

			fragenAusgabe[i] = new Object();

			if(isObject(questions[i].childNodes[0].firstChild)){

				fragenAusgabe[i]["text"]=questions[i].childNodes[0].firstChild.nodeValue;

			}

			if(isObject(questions[i].childNodes[1].firstChild)){

				fragenAusgabe[i]["choice1"]=questions[i].childNodes[1].firstChild.nodeValue;

			}

			if(isObject(questions[i].childNodes[2].firstChild)){

				fragenAusgabe[i]["choice2"]=questions[i].childNodes[2].firstChild.nodeValue;

			}

			if(isObject(questions[i].childNodes[3].firstChild)){

				fragenAusgabe[i]["choice3"]=questions[i].childNodes[3].firstChild.nodeValue;

			}

			if(isObject(questions[i].childNodes[4].firstChild)){

				fragenAusgabe[i]["choice4"]=questions[i].childNodes[4].firstChild.nodeValue;

			}

			if(isObject(questions[i].childNodes[5].firstChild)){

				fragenAusgabe[i]["choice5"]=questions[i].childNodes[5].firstChild.nodeValue;			

			}

			if(isObject(questions[i].childNodes[6].firstChild)){

				fragenAusgabe[i]["choice6"]=questions[i].childNodes[6].firstChild.nodeValue;

			}

			if(isObject(questions[i].childNodes[7].firstChild)){

				fragenAusgabe[i]["hint"]=questions[i].childNodes[7].firstChild.nodeValue;

			}

			fragenAusgabe[i]["id"]=questions[i].getAttribute('ID');

			fragenAusgabe[i]["answer"]=questions[i].getAttribute('ANSWER');

			fragenAusgabe[i]["level"]=questions[i].getAttribute('LEVEL');

			fragenAusgabe[i]["genre"]=questions[i].getAttribute('GENRE');

		}

		qFragenNeu = fragenAusgabe.shuffle();

		if(qFragenNeu.length > 0){

			$("messages").innerHTML ="<ul><li><a href=\"#\" class=\"level\" onClick='myQuiz.losGehts();'>Start</a></li>";

		}	

		else{

			$("messages").innerHTML ="<br><h3>Leider keine Fragen vorhanden </h3><br><br><a href=\"#\" onClick=\"myQuiz.restart();\" class=\"btnGui\">zurueck zur Auswahl</a>";

		}

	},



	losGehts: function(){

		this.displayJokers();

		this.clearAnswers();

		if(qLowestPoints == 0){

			this.loadLowestPoints();

		}

		//new Effect.Appear('joker');

		new Effect.Appear('question');

		Element.hide('messages');

		//new Effect.Fade('messages');

		var divInnerHTML ="";

		$("QuestionDiv").innerHTML = "";

		if(qFragenNeu.length > 0){

			$("QuestionDiv").style.display = "block";

			$("answers").style.display = "block";

		 	var richtigeAntwort = Number(qFragenNeu[0]['answer']) +1;

		 	$("QuestionDiv").innerHTML = "<h3>" + decode_utf8(qFragenNeu[0]['text'])  +" </h3>";

		 	if(qFragenNeu[0]['choice1']){

				$('li1').innerHTML = decode_utf8(qFragenNeu[0]['choice1']);

				$('li1').style.display="block";

			}

			if(qFragenNeu[0]['choice2']){

				$('li2').innerHTML = decode_utf8(qFragenNeu[0]['choice2']);

				$('li2').style.display="block";

		 	}

		 	if(qFragenNeu[0]['choice3']){

				$('li3').innerHTML = decode_utf8(qFragenNeu[0]['choice3']);

				$('li3').style.display="block";

			}

			if(qFragenNeu[0]['choice4']){

				$('li4').innerHTML = decode_utf8(qFragenNeu[0]['choice4']);

				$('li4').style.display="block";

		 	}

		 	qTime = qTimeNormal;

			$("timeDisplay").innerHTML = qTimeNormal;

			if(qSystem != "learn"){

				countdown = setInterval("myQuiz.decreaseTime()", 1000);

			}else{

				countdown = setInterval("myQuiz.increaseTime()", 1000);

			}	

		 }else{

		 	if(qSystem == "learn"){

		 		var qRichtigeFragen = qGesamtAnzahlFragen - qFragenFalse.length;

		 		if(qFragenFalse.length > 0){$("messages").innerHTML ="Sie haben " + qRichtigeFragen + " von "+ qGesamtAnzahlFragen + " Fragen richtig beantwortet. <br> M&ouml;chten Sie die falsch beantworteten Fragen <a href=\"#\" onClick=\"myQuiz.startFalse();\" class=\"btnGui\">noch einmal probieren</a>?";}

		 		else{

		 			$("messages").innerHTML ="Alle "+ qGesamtAnzahlFragen + " Fragen wurden richtig beantwortet.";

		 			$("messages").innerHTML += this.backStart();

		 		}

		 		this.loadHighScoreXML();	

		 	}else{	

			 	$("messages").innerHTML ="<h3>Alle Fragen wurden beantwortet!</h3>";

			 	$("messages").innerHTML += this.backStart();

			 	Element.hide('question');

			 	//new Effect.Fade('question', {duration: 0.4, onFinish: function(){new Effect.Appear('messages');}});

		 		Element.show('messages');

			 }

		 }

	},

	startFalse: function(){

		qFragenNeu = qFragenFalse;

		this.losGehts();	

	},

	decreaseTime: function(){

		Number(qTime);

		if(qTime > 0){

			qTime = qTime - 1;

			$("timeDisplay").innerHTML = qTime;

		}

		else{

			$("messages").innerHTML ="<h3>Zeit leider abgelaufen!</h3><br />";

			$("messages").innerHTML += this.butTopList();

			$("messages").innerHTML += this.backStart();

			

			this.clearAnswers();

			Element.hide('question');

			Element.hide('joker');

			 	//new Effect.Fade('question', {duration: 0.4, onFinish: function(){new Effect.Appear('messages');}});

		 	Element.show('messages');

			//this.loadHighScoreXML();

			$("timeDisplay").innerHTML = 0;

			clearInterval(countdown);	

		}

	},

	increaseTime: function(){

		Number(qTime);

		qTime += 1;

		$("timeDisplay").innerHTML = qTime;

	},

	///////////////////////////////////////////////////////////////////////////////////

	//				Joker Section                                                    //

	///////////////////////////////////////////////////////////////////////////////////

	displayJokers: function(){

		if (qSystem != "learn")

		{

			$('joker').style.display = "block";

		}

		if(qJokerTimestop=="true"){	

			$('joker3').style.display = "block";

			$('joker3').onclick=function() {myQuiz.stopTime();};

	 	}	

		if(qJokerFifty=="true"){	

			$("joker1").style.display = "block";

			$('joker1').onclick=function() {myQuiz.fifty();};

	 	}	

		if(qJokerNext=="true"){	

			$("joker2").style.display = "block";

			$('joker2').onclick = function() {myQuiz.nextQuestion();}; 

	 	}

	},

	

	stopTime: function (){

		if(qSetStopTime == false){

			clearInterval(countdown);	

			qSetStopTime = true;

			qJokerTimestop="false";

			$('joker3').id = "joker3Off";

		}

	},

	fifty: function(){

		if(qSetFifty == false){

			var trueAnswer = Number(qFragenNeu[0]['answer']) +1;

			var shownAnswers = 0;

			if(qFragenNeu[0]['choice1']){ shownAnswers++; }

		 	if(qFragenNeu[0]['choice2']){ shownAnswers++; }

		 	if(qFragenNeu[0]['choice3']){ shownAnswers++; }

		 	if(qFragenNeu[0]['choice4']){ shownAnswers++; }

	

			var half = Number(shownAnswers) / 2;

			half = Math.floor(half);

			var ausschluss = new Array();

			for(var y=0; y<half; y++){

			 	var x=Math.random();  //Zufallszahl

				x=Math.ceil(x*Number(shownAnswers));

				if(x == trueAnswer){

					half++;

				}else{

					ausschluss.push(x);

				}		

			}

			for(var i=1; i<5; i++){  // Alle Antworten ausblenden

				$('li' + i).style.display="none";

			}

			if(qFragenNeu[0]['choice1']){ //Einblendend er einzelnen Antworten wenn sie nicht "wegfallen"

				if(!ausschluss.inArray(1)){

		 			document.getElementById('li1').style.display="block";

				}

		 	}

		 	if(qFragenNeu[0]['choice2']){

		 		if(!ausschluss.inArray(2)){

		 			document.getElementById('li2').style.display="block";

		 		}

		 	}

		 	if(qFragenNeu[0]['choice3']){

		 		if(!ausschluss.inArray(3)){

		 			document.getElementById('li3').style.display="block";

		 		}	

		 	}

		 	if(qFragenNeu[0]['choice4']){

		 		if(!ausschluss.inArray(4)){

		 			document.getElementById('li4').style.display="block";

		 		}	

		 	}

		 	qSetFifty = true;

			qJokerFifty="false";

		 	$('joker1').id = "joker1Off";

		}	

	},

	nextQuestion: function(){

		if(qSetNext == false){

			qFragenNeu.splice(0,1);

			//actualPunkte = actualPunkte + (time * 100); 

			//alert(actualPunkte);

			this.clearAnswers();

			clearInterval(countdown);

			$('joker2').id = "joker2Off";

			qJokerNext="false";

			qSetNext = true;

			this.losGehts();	

		}

	},

	

	



	checkAntwort: function (value){

		qRichtig = Number(qFragenNeu[0]['answer']) +1;

		if(value != qRichtig){

			return false;

		}else{

			return true;

		}

	},

	

	dispatchAnswer: function(val){

		this.clearAnswers();

		var divInnerHTML;

		if(val == false){

			if(qSystem != "learn"){

				divInnerHTML = "<h3>" + decode_utf8(qFragenNeu[0]['text']) + "</h3>";

				divInnerHTML += "<div class=\"antwortFalsch\">Die Antwort ist leider falsch.</div>Die richtige Antwort w&auml;re gewesen: <div class=\"antwortRichtig\"><h5>" + decode_utf8(qFragenNeu[0]['choice' + qRichtig]) + "</h5></div>";

				if(qFragenNeu[0]['hint']){

		 			divInnerHTML += "<div class=\"hint\" >Hinweistext:<br>" + decode_utf8(qFragenNeu[0]['hint']) + "</div>";	

				}

		 		

		 		clearInterval(countdown);	

		 		$("messages").innerHTML = divInnerHTML; 	

		 		this.sendTopList();

		 		var tryAgain="";

		 		tryAgain += this.butTopList();

		 		tryAgain += this.backStart();

		 		$("messages").innerHTML += tryAgain;

			}else{

				divInnerHTML = "<h3>" + qFragenNeu[0]['text'] + "</h3><br>";

				divInnerHTML += "<div class=\"antwortFalsch\">Die Antwort ist leider falsch.</div> Die richtige Antwort w&auml;re gewesen:<div class=\"antwortRichtig\"><h5>" + qFragenNeu[0]['choice' + qRichtig] + "</h5></div>";

				if(qFragenNeu[0]['hint']){

		 			divInnerHTML += "<div class=\"hint\" >Hinweistext: <br>" + qFragenNeu[0]['hint'] + "</div>";	

				}

				divInnerHTML += "<div class=\"next\"><a href=\"#\" onClick=\"myQuiz.losGehts();\">n&auml;chste Frage</a></div>";	

				$("messages").innerHTML = divInnerHTML; 	

				qFragenFalse.push(qFragenNeu[0]);

				qFragenNeu.splice(0,1);

				qActualPunkte = qActualPunkte + (qTime * 100); 

				clearInterval(countdown);	

			}

			new Effect.Fade('question', {duration: 0.4, afterFinish: function(){new Effect.Appear('messages', {duration: 0.6});}});

			$('joker').style.display="none";

		}

		else

		{

			this.clearAnswers();

				qFragenNeu.splice(0,1);

			if(qSystem != "learn"){

				qActualPunkte = qActualPunkte + (qTime * 100); 

			}else{

				var qTimeZero = 100 - qTime;

				Number(qTimeZero);

				if(qTimeZero > 0){

					qActualPunkte = (qActualPunkte + qTimeZero) * 1; 	

				}	

			}	

			clearInterval(countdown);	

			this.losGehts();	

		}

	},

	

	restart: function(){

		qSetStopTime = false;

		qSetFifty = false;

		qSetNext = false;

		

		if($('joker2Off')){

			$('joker2Off').id = "joker2";

			$('joker2').onclick = function() {myQuiz.nextQuestion();}; 

		}if($('joker1Off')){

			$('joker1Off').id = "joker1";

			$('joker1').onclick=function() {myQuiz.fifty();};

		}if($('joker3Off')){

			$('joker3Off').id = "joker3";

			$('joker3').onclick=function() {myQuiz.stopTime();};

		}	

		$('joker').style.display="none";

		

		this.startTheGame();

		

	},



	///////////////////////////////////////////////////////////////////////////////////

	//				helper methods                                                   //

	///////////////////////////////////////////////////////////////////////////////////

	clearAnswers: function(){

		for(var i=1; i<5; i++){  // Alle Antworten ausblenden

			$('li' + i).style.display="none";

			Element.setStyle('li' + i,{backgroundColor: '#dde8f5'});

			

		}

	},

	backStart: function(){

		var htmlString = "<a href='#' class='btnGui' onClick='myQuiz.restart();' id='again'>noch einmal probieren</a>";

		return htmlString;

	},

	

	rollOverEffect: function(el){

		Element.setStyle(el ,{backgroundColor: '#9DB9C3'});		

	},

	///////////////////////////////////////////////////////////////////////////////////

	//				TOPLIST Methods                                                  //

	///////////////////////////////////////////////////////////////////////////////////

	sendTopList: function(){

		if(qLowestPoints < qActualPunkte) //Abfrage ob man in die TopList kommt

		{

			$("messages").innerHTML += "<p class=\"quizHero\">Herzlichen Gl&uuml;ckwunsch - Sie haben mit " + qActualPunkte + " Punkten einen Eintrag in die Toplist erreicht!<br><br><input type=\"text\" id=\"nameValue\"><br><input type=\"button\" onClick=\"myQuiz.setNewHigh()\" value=\"abschicken\"></p>";

		}

	},	

	showToplist: function(xhr){

		var backXML = xhr.responseXML;

		var entries =  backXML.getElementsByTagName("SCORE");

		var values  = "<h3>Toplist:</h3> <ul>";

		//alert("go" + values);

		for(var i=0; i<entries.length; i++){

			var j = (i+1)*1;

			values += "<li id='top" + j + "'>" + entries[i].firstChild.nodeValue + " - "+ entries[i].getAttribute('PUNKTE') + "</li>";

		}

		values += "</ul>";

		values += "<a href='#' class='btnGui' onClick='myQuiz.restart();' id='again'>noch einmal probieren</a>";

		//alert("go2" + i +  values + j);

		$('topList').innerHTML = values;

	//	new Effect.Fade('messages');	

		$('joker').style.display="none";

		new Effect.Fade('messages', {duration: 0.3, afterFinish: function(){ new Effect.Appear('topList');}});

		

	},

	butTopList: function (){

		var back = "<div id=\"hall\"><a href=\"#\" class=\"btnGui\" onClick=\"myQuiz.loadHall(); return false;\">Hall of Fame</a></div>";

		return back;

	},

	loadHall: function (){

		//$('hall').style.display="none";	

		this.loadHighScoreXML();

	},

	

	loadLowestPoints: function (){

		var params = "";

		new Ajax.Request ( //Starting Protoype Ajax Request to load actual XML File that was asked for

		    "quizAusgabe.php5?timeStamp=" + new Date().getTime() + "&action=getHighScore",

		{ metod: 'get', parameters: params, onComplete: this.lowestLoaded });

	},

	lowestLoaded: function (xhr){

		var backXML = xhr.responseXML;

		var entries =  backXML.getElementsByTagName("SCORE");

		for(var i=0; i<entries.length; i++){

			qLowestPoints = entries[i].getAttribute('PUNKTE');

		}

		

	},

	setNewHigh: function (){

		var params = "";

		new Ajax.Request ( //Starting Protoype Ajax Request to load actual XML File that was asked for

		    "quizAusgabe.php5?timeStamp=" + new Date().getTime() + "&action=setNewHigh&name=" + $('nameValue').value + "&points=" + qActualPunkte,

		{ metod: 'get', parameters: params, onComplete: this.showToplist });

		qActualPunkte = 0;

	},



	loadHighScoreXML: function(){

		var params = "";

		new Ajax.Request ( //Starting Protoype Ajax Request to load actual XML File that was asked for

		    "quizAusgabe.php5?timeStamp=" + new Date().getTime() + "&action=getHighScore",

		{ metod: 'get', parameters: params, onComplete: this.showToplist });

	}

};



if( typeof Array.prototype.splice==='undefined' ) {

 Array.prototype.splice = function( a, c ) {

  var i = 0, e = arguments, d = this.copy(), f = a, l = this.length;

  if( !c ) { c = l - a; }

  for( i; i < e.length - 2; i++ ) { this[a + i] = e[i + 2]; }

  for( a; a < l - c; a++ ) { this[a + e.length - 2] = d[a - c]; }

  this.length -= c - e.length + 2;

  return d.slice( f, f + c );

 };

}



if( typeof Array.prototype.inArray==='undefined' ) {

	Array.prototype.inArray=function(pSearch)

	

	{

	    var len=this.length;   

	    var stat=false;

	    while (len--)   

	      if (this[len]==pSearch)

	        stat=true;

	    return stat;

	};

}



function isObject(a) {

    return (a && typeof a == 'object') || isFunction(a);

}



function isFunction(a) {

    return typeof a == 'function';

}



// Array.shuffle( deep ) - Randomly interchange elements

Array.prototype.shuffle = function( b ) {

 var i = this.length, j, t;

 while( i ) {

  j = Math.floor( ( i-- ) * Math.random() );

  t = b && typeof this[i].shuffle!=='undefined' ? this[i].shuffle() : this[i];

  this[i] = this[j];

  this[j] = t;

 }

 return this;

};

function decode_utf8(utftext) {

	var plaintext = ""; var i=0; var c=c1=c2=0;

            // while-Schleife, weil einige Zeichen uebersprungen werden

             while(i<utftext.length)

                 {

                 c = utftext.charCodeAt(i);

                 if (c<128) {

                     plaintext += String.fromCharCode(c);

                    i++;}

                 else if((c>191) && (c<224)) {

                     c2 = utftext.charCodeAt(i+1);

                     plaintext += String.fromCharCode(((c&31)<<6) | (c2&63));

                     i+=2;}

                 else {

                     c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2);

                     plaintext += String.fromCharCode(((c&15)<<12) | ((c2&63)<<6) | (c3&63));

                     i+=3;}

                 }

             return plaintext;

  }

   

///////////////////////////////////////////////////////////////////////////////////

//				Start the Class                                                  //

///////////////////////////////////////////////////////////////////////////////////

function initQuiz(){ myQuiz = new Quiz(); myQuiz.startTheGame();}

Event.observe(window, 'load', initQuiz, false);


	
