function loadPage(elementId, divId, url){
	var div = document.getElementById(elementId);
	div.innerHTML = "<div id='" + divId + "'><hr><img src='images/ajax-loader.gif' border=0><hr></div>";
	
	new Ajax.Updater(divId, url, {asynchronous:true, evalScripts:true});
}

function openAdditionalPage(elementId, divId, url){
	var div = document.getElementById(elementId);
	div.innerHTML = div.innerHTML + "<div id='" + divId + "'></div>";
	//div.innerHTML = "<div id='" + divId + "' style='visibility: hidden;'></div>" + div.innerHTML;
	new Ajax.Updater(divId, url, {asynchronous:false, evalScripts:true});
}

function removePageElement(parentId, childId)
{
	var child = document.getElementById(childId);
	var parent = document.getElementById(parentId);
	parent.removeChild(child);
}

function login(username)
{	
	loadPage('main','loginForm','loginForm.php?username=' + username);
}

function logout()
{
	new Ajax.Updater('', 'logoutFunction.php', {asynchronous:false, evalScripts:true});
	document.location.href = 'index.php';
}

function registration()
{
	loadPage('main','regForm','registrationForm.php');
}

function goMemberArea()
{	
	loadPage('main','userPageFormArea','userPageForm.php');
}

function goHome()
{	
	loadPage('main','homeArea','initPageForm.php');
}

function checkRegistration()
{
	if (document.getElementById('username').value == "") return;
	
  	if (document.getElementById('username').value != "")
  	{
  		new Ajax.Request('functionCheckUserAvaibility.php?username=' + document.getElementById('username').value, {
		  method: 'get',
		  asynchronous: false,
		  onSuccess: function(request) {
		    if (request.responseText.match('true')){
		      alert ("Username ist bereits vergeben!");
		      document.getElementById('username').value = "";
		      return;
		    }
		  }
		});
  	}

	var errormsg = "";
	
	if (document.getElementById('captchadigits').value == ""){
		alert ("Security Digits required!");
		return;
	}
		
	var url = 'captchaCheckDigits.php?captchadigits=' + document.getElementById('captchadigits').value;
		
	new Ajax.Request(url, {
	  method: 'get',
	  asynchronous: false,
	  onSuccess: function(request) {
	    if (request.responseText.match('false')){
	      alert ("Wrong security digits!");
	      return;
	    }
	  }
	});
	
	if (document.getElementById('username').value == "") errormsg = errormsg + "- Username\n";
	if (document.getElementById('email').value == "") errormsg = errormsg + "- Email\n";
	if (document.getElementById('passwort').value == "") errormsg = errormsg + "- Passwort\n";
	if (document.getElementById('passwort2').value == "") errormsg = errormsg + "- Passwort wiederholen\n";
	
	if (errormsg != ""){
		errormsg = "Bitte folgende Felder ausfüllen:\n" + errormsg;
		alert(errormsg);
		return;
	}else{
		if (document.getElementById('passwort2').value != document.getElementById('passwort').value)
		{
			alert("Passwort Wiederholung ungleich!");
			return;
		}
		
		document.registrationForm.submit();
	}
}

function checkLogin()
{
	var errormsg = "";
	var username = document.getElementById('username').value;
	var passwort = document.getElementById('passwort').value;
	
	if (username == "") errormsg = errormsg + "- Username\n";
	if (passwort == "") errormsg = errormsg + "- Passwort\n";
	
	if (errormsg != ""){
		errormsg = "Bitte folgende Felder ausfüllen:\n" + errormsg;
		alert(errormsg);
		return false
	}else{
		var url = 'functionLogin.php?username=' + username + '&passwort=' + passwort;
		
		new Ajax.Request(url, {
		  method: 'get',
		  asynchronous: false,
		  onSuccess: function(request) {
		    if (request.responseText.match('false')){
		      alert ("Wrong user / passwort combination!");
		      return false;
		    }
		    else
		    {
			    document.location.href = 'index.php';
			    return false;
		    }
		  }
		});
	}
	
	return false;
}

function initUserPage()
{
	loadPage('main','userPage','userPageForm.php');
}

function initPage()
{
	var divMain = document.getElementById('main');
	divMain.innerHTML = "<div id='initPage'></div>";

	var url = "initPageForm.php";
	new Ajax.Updater('initPage', url, {asynchronous:false, evalScripts:true});
}

function kategorieMethode(functionId, kategorie, kategorieId)
{
	if (functionId == 1) fragenUeben(kategorie, kategorieId);
	if (functionId == 2) neueFrageEingeben(kategorie, kategorieId);
}

function fragenUeben(kategorie, kategorieId)
{
	kategorie = escape(kategorie);
	var frageid = document.getElementById('frageid');
	var frageidText = "";
	
	if (frageid != null) 
		frageidText = frageid.value;
	
	var url = 'functionFragenUeben.php?kategorie=' + kategorie + '&kategorieid=' + kategorieId + '&frageid=' + frageidText;
	loadPage('main','FragenUeben', url);
}

function kategorieWaehlen(methodId)
{
	openAdditionalPage('mitte','kategorien','kategorienListe.php?methodId=' + methodId);
	new Draggable('kategorien',{revert:false});
}

function neueFrageEingeben(kategorie, kategorieId)
{
	kategorie = escape(kategorie);
	var url = 'frageForm.php?kategorie=' + kategorie + '&kategorieid=' + kategorieId;
	loadPage('main','NeueFrage', url);
}

function frageBearbeiten(id)
{
	var url = 'frageForm.php?id=' + id;
	loadPage('main','FrageBearbeiten', url);
}

function checkBrowser()
{
}

function infoCountUser(elementId)
{
	new Ajax.Updater('userOnline', 'getUserInformations.php?info=useronline', {asynchronous:true, evalScripts:true});
	new Ajax.Updater('countUser', 'getUserInformations.php?info=countuser', {asynchronous:true, evalScripts:true});
}

function frageTypChange(bearbeiten)
{
	var frageTyp = document.getElementById('fragetyp');
	if (frageTyp.options[0].selected == true){
		changeFrageTyp("AR1","checkbox", bearbeiten);
		changeFrageTyp("AR2","checkbox", bearbeiten);
		changeFrageTyp("AR3","checkbox", bearbeiten);
		changeFrageTyp("AR4","checkbox", bearbeiten);
		changeFrageTyp("AR5","checkbox", bearbeiten);
		changeFrageTyp("AR6","checkbox", bearbeiten);
	}else{
		changeFrageTyp("AR1","radio", bearbeiten);
		changeFrageTyp("AR2","radio", bearbeiten);
		changeFrageTyp("AR3","radio", bearbeiten);
		changeFrageTyp("AR4","radio", bearbeiten);
		changeFrageTyp("AR5","radio", bearbeiten);
		changeFrageTyp("AR6","radio", bearbeiten);
	}
}

function changeFrageTyp(id, typ, bearbeiten)
{
	var antwort = document.getElementById(id);
	antwort.type = typ;

	if (typ != "checkbox"){
		if (bearbeiten == false){
			antwort.checked = "";
		}
	}
}

function saveNeueFrage()
{
	var titelfrage = document.getElementById('titelfrage');
	var detail = document.getElementById('detail');
	var hyperlink = document.getElementById('hyperlink');
	var bild = document.getElementById('bild');
	var a1 = document.getElementById('A1');
	var a2 = document.getElementById('A2');
	var a3 = document.getElementById('A3');
	var a4 = document.getElementById('A4');
	var a5 = document.getElementById('A5');
	var a6 = document.getElementById('A6');
	
	var bCodeInsertOccured = false;
	
	if (checkScriptInsert(titelfrage.value))  bCodeInsertOccured = true; 
	if (checkScriptInsert(detail.value))  bCodeInsertOccured = true;
	if (checkScriptInsert(hyperlink.value))  bCodeInsertOccured = true;
	if (checkScriptInsert(bild.value))  bCodeInsertOccured = true;
	if (checkScriptInsert(a1.value))  bCodeInsertOccured = true;
	if (checkScriptInsert(a2.value))  bCodeInsertOccured = true;
	if (checkScriptInsert(a3.value))  bCodeInsertOccured = true;
	if (checkScriptInsert(a4.value))  bCodeInsertOccured = true;
	if (checkScriptInsert(a5.value))  bCodeInsertOccured = true;
	if (checkScriptInsert(a6.value))  bCodeInsertOccured = true;
	
	if (bCodeInsertOccured) {
		codeInsertOccured();
		return;
	}
	
	document.frageForm.submit();
}

//Mann, wie ich Spammer hasse!
//Macht euch aus dem Acker, sonst gibts was!
function checkScriptInsert(code) {
	code = code.toUpperCase();
	
	if (code.indexOf('<') > - 1) {
	
		if (code.indexOf('HREF') > - 1)	return true;
		if (code.indexOf('SCRIPT') > - 1)	return true;
		if (code.indexOf('OBJECT') > - 1)	return true;
		if (code.indexOf('EMBED') > - 1)	return true;
		if (code.indexOf('?PHP') > - 1)	return true;
		if (code.indexOf('@') > - 1)	return true;
		if (code.indexOf('IMG') > - 1)	return true;
	}
	
	return false;
}

function codeInsertOccured() {
	new Ajax.Updater('codeInserted', 'ichsehedich.php', {asynchronous:false, evalScripts:true});
}

function checkFrage()
{
	var checkButton = document.getElementById('pruefenButton');
	var nextQuestion = document.getElementById('nextQuestion');
	var ueberspringenButton = document.getElementById('ueberspringenButton');
	var frageid = document.getElementById('frageid');
	var antwortAlsText = document.getElementById('antwortAlsText');
	
	if (checkButton.style.visibility == "hidden") return;

	nextQuestion.style.visibility = "visible";
	checkButton.style.visibility = "hidden";
	ueberspringenButton.style.visibility = "hidden";
	
	var antworten = "";
	var nr = 1;
	
	for(nr=1; nr<7; nr++)
	{
		var antwort = document.getElementById('AR' + nr);
		
		if (antwort == null) break;
		
		if (antworten == "")
			antworten = "" + antwort.checked;
		else
			antworten = antworten + "-" + antwort.checked;
	}
	
	var url = "functionSetAntwortAufFrage.php?frageid=" + frageid.value + "&antworten=" + antworten;
	
	new Ajax.Request(url, {
	  method: 'get',
	  asynchronous: false,
	  onSuccess: function(request) {
	    if (request.responseText.match(antworten)){
	      	antwortAlsText.innerHTML = "<span class='green'><b>!!! R I C H T I G !!!</b></span>";
	    } else {
	      	antwortAlsText.innerHTML = "<hr><span class='red'><b>LEIDER FALSCH !!!</b></span>";
	      
	      	var ant = request.responseText.split("-");
	      
	      	for(nr=1; nr<7; nr++)
			{
				var antwort = document.getElementById('AR' + nr);
				var text = document.getElementById('A' + nr);
				var ra = document.getElementById('RA' + nr);
				
				if (antwort == null) break;
				
				var bAnt = false;
				
				if (ant[nr - 1] == "true") bAnt = true;

				if (antwort.checked != bAnt){
					ra.innerHTML = "<span class='red'><b>F</b></span>";	
				}
				
				if (bAnt == true){
					text.style.color="#00FF00";
				} else {
					text.style.color="#FF0000";
				}
				
			}
	    }
	  }
	});
	
	showDetailsOfFrage();
}

function showDetailsOfFrage()
{
	var frageid = document.getElementById('frageid');
	
	var url = "functionShowFrageDetail.php?id=" + frageid.value;
	new Ajax.Updater('frageDetails', url, {asynchronous:false, evalScripts:true});
}

function keineFragenMehr(){
	var keineFragenMehr = document.getElementById('keineFragenMehr');
	
	if (keineFragenMehr != null){
		var checkButton = document.getElementById('pruefenButton');
		var nextQuestion = document.getElementById('nextQuestion');
		var ueberspringenButton = document.getElementById('ueberspringenButton');
		
		checkButton.style.visibility = "hidden";
		nextQuestion.style.visibility = "hidden";
		ueberspringenButton.style.visibility = "hidden";
	}
}

function confirmDelete(id) {
	var antwort = confirm("Wirklich die Frage löschen?");
	
	if (antwort){
		new Ajax.Updater('','functionDeleteFrage.php?id=' + id, {asynchronous:false, evalScripts:true});
		window.location.reload();
	}
}

function showAdminButton() {
	var adminButton = document.getElementById('adminButton');
	
	if (adminButton == null) {
		var tab_group = document.getElementById('TAB_GROUP_DEFAULT');
		
		tab_group.innerHTML = tab_group.innerHTML + "<li class='TABS' onclick='Administration();' id='adminButton'>| Admin |</li>";
	}
}

function Administration() {
	var divMain = document.getElementById('main');
	divMain.innerHTML = "<div id='initPage'></div>";

	var url = "Administration.php";
	new Ajax.Updater('initPage', url, {asynchronous:false, evalScripts:true});
}

function adminUser() {
	var url = "adminUser.php";
	new Ajax.Updater('adminMain', url, {asynchronous:false, evalScripts:true});
}

function adminFragen() {
	var url = "adminFragen.php";
	new Ajax.Updater('adminMain', url, {asynchronous:false, evalScripts:true});
}

function adminKommentare() {
	var url = "adminKommentare.php";
	new Ajax.Updater('adminMain', url, {asynchronous:false, evalScripts:true});
}

function userRolleHoch(username) {
	var url = "functionSetUserRolle.php?username=" + username + "&richtung=oben";
	new Ajax.Updater('', url, {asynchronous:false, evalScripts:true});
	
	adminUser();
}

function userRolleRunter(username) {
	var url = "functionSetUserRolle.php?username=" + username + "&richtung=runter";
	new Ajax.Updater('', url, {asynchronous:false, evalScripts:true});
	
	adminUser();
}

function saveKommentar(frageid, username, nr) {
	var kommentar = document.getElementById('kommentar' + nr);
	var bewertung = document.getElementById('bewertung' + nr);
	var fangfrage = document.getElementById('fangfrage' + nr);
	var gespeichert = document.getElementById('gespeichert' + nr);

	var fangfrageParam = 'fangfrage=0';
	
	if (fangfrage.checked === true)
		fangfrageParam = 'fangfrage=1';

	var params = new Array("frageid=" + frageid, "username=" + username,"kommentar=" + kommentar.value, "bewertung=" + bewertung.value, fangfrageParam);

	params = params.join('&');
	
	var url = 'functionSaveKommentar.php';
	new Ajax.Updater('result', url, {method: 'post', parameters: params} );
	
	gespeichert.innerHTML = "GESPEICHERT!";
	Effect.Pulsate('gespeichert' + nr, {duration: 10});
}

function showUserDetails(username) {
	var url = 'functionGetUserDetails.php?username=' + username;
	new Ajax.Request(url, {
	  method: 'get',
	  asynchronous: false,
	  onSuccess: function(request) {
	    alert(request.responseText)
	  }
	});
}

function showHelp() {
	loadPage('main','help','help.php');
}

function showHighscore() {
	loadPage('main','highscore','functionShowHighscore.php');
}

//Qualitätsicherung der Fragen
function frageMelden(id,titel){
	var meldung = document.getElementById('frageMelden');
	
	if (meldung == null) return;
	
	if (meldung.innerHTML == '') {
		loadPage('frageMelden','Meldung','functionWriteMeldung.php?id=' + id + '&titel=' + escape(titel));
	} else {
		meldung.innerHTML = '';
	}
}

function sendeNachrichtAnAuthor() {
	var meldungId = document.getElementById('meldungId');
	var meldungNachricht = document.getElementById('meldungNachricht');

	var meldung = document.getElementById('frageMelden');
	meldung.innerHTML = "<center><img src='images/ajax-loader.gif' border=0></center>";

	var params = new Array("meldungId=" + meldungId.value, "meldungNachricht=" + meldungNachricht.value);

	params = params.join('&');
	
	var url = 'functionSendMeldung.php';
	new Ajax.Updater('frageMelden', url, {asynchronous:false, evalScripts:true, method: 'post', parameters: params} );

	var meldungGesendet = document.getElementById('meldungGesendet');
	Effect.Pulsate('meldungGesendet', {duration: 10});
}

//TODO: 
// User: Passwort an Email senden