function debugObj(obj) {
	attrs="";
	vals="";
	for( var attr in obj ) {
		if (attrs) { attrs+=", "; }
		attrs+=attr;
		if (typeof obj[attr] == "object") {
			var nestedAttrs="";
			for(var attr2 in obj[attr] ) {
				if (nestedAttrs) { nestedAttrs+=", "; }
				nestedAttrs+=attr2;
			}
			vals+='\n'+attr+': {'+nestedAttrs+'}';
		} else {
			vals+='\n'+attr+': '+obj[attr];
		}
	}
	
	if (attr) {
		return attrs + "\n----------------------------------------------------------------\n"+vals;
	} else {
		return "(object without properties)";
	}
}

function debug(v) {
	var t=typeof v;
	if (t=="object") {
		var s=debugObj(v);
		alert(s);
	} else {
		alert(v.toString());
	}
}



//################################################################################



function popup1(aurl) {
  var w=Lvl_openWin(aurl,'toets_popup','640','480','0','0','1','width=640,height=480,scrollbars=yes,status=yes,menubar=no,location=no,resizable=yes,titlebar=no');
}

function popup2(aurl) {
  var w=Lvl_openWin(aurl,'toets_popup','800','600','0','0','1','width=800,height=600,scrollbars=yes,status=yes,menubar=no,location=no,resizable=yes,titlebar=no');
}

function checkDocentCode() {
	var docentCode=document.forms.createaccountform.docent_code.value;
	if (docentCode && !isNaN(docentCode) && docentCode >= 1000 && docentCode <= 9999) {
		var url='/shared/php/docent_lookup.php?id='+docentCode;
		new Ajax.Request(url, {
	  	method: 'get',
	  	onSuccess: function(transport) {
	  		if (transport.responseText) {
	  			document.getElementById("docentCodeHint").innerHTML="Docent: " + transport.responseText;
	  		} else {
	  			document.getElementById("docentCodeHint").innerHTML="De ingevoerde docentcode is niet gevonden.";
	  		}
			},
			onFailure: function(transport) {
	 			document.getElementById("docentCodeHint").innerHTML="";
				alert("Door een onbekende fout kon de docentcode niet worden opgezocht.\n\n" +transport.responseText);
			}
		});
	} else {
		alert("De docentcode moet uit 4 cijfers bestaan.");
	}
}

function focusZoeken(sbx,zoeken) {
	if (sbx.value==zoeken) {
		sbx.style.color='#000';
		sbx.value='';
	}
}

function exitZoeken(sbx,zoeken) {
	if (sbx.value=='') {
		sbx.style.color='#cecbcb';
		sbx.value=zoeken;
	}
}

function resetZoeken(zoeken) {
	if (document.getElementById('zoekBox').value==zoeken) {
		document.getElementById('zoekBox').value="";
	}
}

/**
 * center popups
 */
function Lvl_openWin(u,n,w,h,l,t,c,f,x) { //v2.0 4LevelWebs
  var ww=((screen.width-w)/2);if(c==1){l=ww;t=(screen.height-h)/2;}if(c==2){l=ww}
	f+=',top='+t+',left='+l;LvlWin = window.open(u,n,f);LvlWin.focus();
	document.MM_returnValue=false;
}

/**
 * open Articulate Presenter presentatie in een popup
 */
function openPresenter(presentatieID) {
  var aurl="/presentaties/"+presentatieID+"/player.html";
  var w=Lvl_openWin(aurl,'presenter_popup','900','600','0','0','1','width=900,height=600,scrollbars=no,status=yes,menubar=no,location=no,resizable=yes,titlebar=no');
}

/**
 * open een toets in een popup
 */
function openToetsVersie2(toetsID,userID,check,biebSession) {
  var aurl="/toetsen/"+toetsID+"/quizmaker.html?t="+toetsID+"&u="+userID+"&c="+check+"&s="+biebSession;;
  var w=Lvl_openWin(aurl,'toets_popup','720','540','0','0','1','width=720,height=540,scrollbars=no,status=yes,menubar=no,location=no,resizable=no,titlebar=no');
  return document.MM_returnValue;
}

/**
 * open een toets in een popup
 */
function openToetsVersie3(toetsID,userID,check,biebSession) {
  var aurl="/toetsen/"+toetsID+"/quiz.html?t="+toetsID+"&u="+userID+"&c="+check+"&s="+biebSession;
  var w=Lvl_openWin(aurl,'toets_popup','720','540','0','0','1','width=720,height=540,scrollbars=no,status=yes,menubar=no,location=no,resizable=no,titlebar=no');
  return document.MM_returnValue;
}

function openFlash(id,w,h,v) {
  var aurl="/plugins/widgets/flashplayer/play.php?id="+id+v;
  var w=Lvl_openWin(aurl,'flashplayer_popup',w,h,'0','0','1','width='+w+',height='+h+',scrollbars=no,status=yes,menubar=no,location=no,resizable=yes,titlebar=no');
  return document.MM_returnValue;
}

/**
 * Blinking span!
 */
function blink() {
	var c1="#000";
	var c2="#f00";
	var interval=250;

	var sp=$$('span.blink');
	if (sp.length>0) {
		for (i=0;i<sp.length;i++) {
			sp[i].style.color=(sp[i].style.color && sp[i].style.color==c1)?c2:c1;
		}
		setTimeout (blink,interval);
	}
}


/**
 * Mail-a-friend popupje (rest zie: mail_a_friend.js)
 */
function showMailAFriend() {
	document.getElementById('stuurdoorBox').style.display='block';
	if (document.getElementById("mailafriend_form")) {
		document.getElementById("mailafriend_response").innerHTML="";
		document.getElementById("mailafriend_form").style.display="block";
		document.getElementById("mailafriend_response_div").style.display="none";
	}
}

function hideMailAFriend() {
	document.getElementById('stuurdoorBox').style.display='none';
}

/**
 * Forum
 */
function markeerReactie(id) {
	if (confirm("Weet u zeker dat u dit bericht als ongewenst wilt markeren? De beheerder van het forum ontvangt hierover een e-mail.")) {
		var url='/shared/php/markeer_forum_reactie.php?id='+id;
		new Ajax.Request(url, {
	  	method: 'get',
	  	onSuccess: function(transport) {
				alert(transport.responseText)
			},
			onFailure: function(transport) {
				alert("Het bericht kon niet als ongewenst worden gemarkeerd.\n\n" +transport.responseText);
			}
		});
  }
}

/**
 * Vragen
 */
var QUESTIONS_MCR_MAXOPTIONS=8;
var QUESTIONS_CHK_MAXOPTIONS=8;

function processResponse(response) {
	if (response.status=="OK") {
		var id=response.id;
		var qt=response.qt;

		//Multiple choice radio
		if (qt=="mcr") {
			for (var i=1;i<=QUESTIONS_MCR_MAXOPTIONS;i++) {
				answerFieldID="answer_"+qt+id+"_o"+i;
				if (el=document.getElementById(answerFieldID)) {
					el.innerHTML=response["antwoord"+i];
				}
			}

			var feedback="";

			if (response.juiste_antwoord==response.antwoord) {
				if (response["antwoord"+response.antwoord]!="")  {
					feedback=response["antwoord"+response.antwoord];
				} else {
					feedback="Goed beantwoord";
				}
			} else{
				if (response["antwoord"+response.antwoord]!="")  {
					feedback=response["antwoord"+response.antwoord];
				} else {
					feedback="Fout beantwoord";
				}
			}


			if (el=document.getElementById("mcr_feedback"+id)) {
				el.innerHTML=feedback;
				el.style.display="block";

				if (el2=document.getElementById("mcr_al_beantwoord"+id)) {
					el2.style.display="none";
				}
			}


		} else if (qt=="open") {
			//Open vraag
			answerFieldID="answer_"+qt+id
			if (el=document.getElementById(answerFieldID)) {
				if (response["antwoord"]!="") {
					el.innerHTML="<B>Antwoord: </B>"+response["antwoord"];
					el.style.display="block";
				} else {
					el.innerHTML="Je antwoord is opgeslagen.";
					el.style.display="block";
				}
			}
		} else if (qt=="chk") {
			//Checkbox vraag
			if (response.antwoord==response.juiste_antwoord) {
				if (response.feedback_goed!="") {
					feedback=response.feedback_goed;
				} else {
					feedback="Goed beantwoord";
				}
			} else {
				if (response.feedback_fout!="") {
					feedback=response.feedback_fout;
				} else {
					feedback="Fout beantwoord";
				}
			}

			if (el=document.getElementById("chk_feedback"+id)) {
				el.innerHTML=feedback;
				el.style.display="block";
				if (el2=document.getElementById("chk_al_beantwoord"+id)) {
					el2.style.display="none";
				}
			}
		} else if (qt=="dnd") {
			//Checkbox vraag
			if (response.antwoord==response.juiste_antwoord) {
				if (response.feedback_goed!="") {
					feedback=response.feedback_goed;
				} else {
					feedback="Goed beantwoord";
				}
			} else {
				if (response.feedback_fout!="") {
					feedback=response.feedback_fout;
				} else {
					feedback="Fout beantwoord";
				}
			}

			if (el=document.getElementById("dnd_feedback"+id)) {
				el.innerHTML=feedback;
				el.style.display="block";
				if (el2=document.getElementById("dnd_al_beantwoord"+id)) {
					el2.style.display="none";
				}
			}
		} else if (qt=="marker") {
			//Marker vraag
			//.....
			
		} else if (qt=="trans") {
			//Transcriptievraag
			if (response.modelantwoord1!="") { 
				document.getElementById("transcriptie_modelantwoord"+id+"_1").innerHTML=response.modelantwoord1;
				document.getElementById("transcriptantwoord"+id+"_1").style.display="block";
			}
			
			if (response.modelantwoord2!="") { 
				document.getElementById("transcriptie_modelantwoord"+id+"_2").innerHTML=response.modelantwoord2;
				document.getElementById("transcriptantwoord"+id+"_2").style.display="block";
			}

			if (response.modelantwoord3!="") { 
				document.getElementById("transcriptie_modelantwoord"+id+"_3").innerHTML=response.modelantwoord3;
				document.getElementById("transcriptantwoord"+id+"_3").style.display="block";
			}

			if (response.modelantwoord4!="") { 
				document.getElementById("transcriptie_modelantwoord"+id+"_4").innerHTML=response.modelantwoord4;
				document.getElementById("transcriptantwoord"+id+"_4").style.display="block";
			}

			if (response.modelantwoord5!="") { 
				document.getElementById("transcriptie_modelantwoord"+id+"_5").innerHTML=response.modelantwoord5;
				document.getElementById("transcriptantwoord"+id+"_5").style.display="block";
			}
			
		}
		
	} else {
		alert(response.status);
	}
}

function save(f) {
	$(f).request({
		onFailure: function(){ alert('Je antwoord kon niet worden opgeslagen.') },
		onSuccess: function(transport){
			try {
				var json=transport.responseText.evalJSON();
				processResponse(json);
			}
			catch (e) {
				alert("Je antwoord kon niet worden opgeslagen. De volgende fout is opgetreden:\n\n"+e.message+"\n\nResponse van de server is:\n\n"+transport.responseText);
			}
		}
	});
}

/**
 * Doorsturen
 */
function submitForm(formname) {
  var f=document.forms[formname];
 	if (validateForm(f)) {
    f.submit();
  }
}

/**
 * Functie voor het updaten van de verborgen printer div voor het uitprinten van open vragen
 */
function updatePrinterDiv(ta) {
	document.getElementById("printerDiv_"+ta.id).innerHTML=ta.value.replace(/\n/g,"\n<br>");
}
