$(document).ready(function () {

/**
 * Menu open/close
 */

	// initialisatie van het menu
	var niv1Closed=$('#col1 ul li a.niv1Closed').next('ul');
	var niv2Closed=$('#col1 ul li a.niv2Closed').next('ul');
	var niv1Locked=$('#col1 ul li a.niv1Locked').next('ul');
	niv1Closed.hide();
	niv2Closed.hide();
	niv1Locked.hide();

	// click handling
	$('.active').click(function() {
		var innerItems=$(this).siblings('ul');
		if (innerItems.is(':visible')) {
			innerItems.hide();
			$(this).toggleClass('handler-closed handler-open');
		} else {
			innerItems.show();
			$(this).toggleClass('handler-closed handler-open');
		}
	});

	$('.niv2active').click(function() {
		var innerItems=$(this).siblings('ul');
		if (innerItems.is(':visible')) {
			innerItems.hide();
			$(this).toggleClass('niv2-closed niv2-open');
		} else {
			innerItems.show();
			$(this).toggleClass('niv2-closed niv2-open');
		}
	});

	$('#global-menu-handler').click(function() {
		if ($(this).hasClass('global-closed')) {
			$(this).toggleClass('global-open global-closed');
			openAll();
		} else {
			$(this).toggleClass('global-open global-closed');
			closeAll();
		}
	});

	// global open/close
	function openAll() {
		niv1Closed.show();
		niv2Closed.show();
		$('.menu-handler').each(function() {
			if($(this).hasClass('handler-closed')) {
				$(this).removeClass('handler-closed').addClass('handler-open');
			}
		});
		$('.niv2-handler').each(function() {
			if($(this).hasClass('niv2-closed')) {
				$(this).removeClass('niv2-closed').addClass('niv2-open');
			}
		});
	}

	function closeAll() {
		niv1Closed.hide();
		niv2Closed.hide();
		$('.menu-handler').each(function() {
			if(!$(this).hasClass('tab-open')) {
				$(this).removeClass('handler-open').addClass('handler-closed');
			}
		});
		$('.niv2-handler').each(function() {
			if(!$(this).hasClass('tab-open')) {
				if ($(this).hasClass('niv2-open')) {
					$(this).removeClass('niv2-open').addClass('niv2-closed');
				}
			}
		});
	}



/**
 * Student/docent-begrippen
 */

	// Een door de auteur ingevoerde definitie van een begrip
	$('a.auteurBegrip').each(function() {
		$(this).after('<div class="tooltip"><div class="tooltip_title">'+$(this).text()+'<div class="tooltip_close"></div></div><div class="auteur-begrip">'+$(this).attr("title")+'</div></div>');
		$(this).removeAttr("title");
	});

	$('a.auteurBegrip').click(function() {
		var coords=$(this).offset();
		var tip=$(this).next('.tooltip');
		tip.show().offset({
								top: (coords.top-tip.height())-30,
								left: coords.left-(tip.width()/2)
		});
	});

	// De student vult zelf de definitie van een begrip in
	$('a.studentBegrip').each(function() {
		$(this).after('<div class="tooltip"><div class="tooltip_title">'+$(this).text()+'<div class="tooltip_close"></div></div><div class="student-begrip-editable" id="tooltip_'+$(this).attr("id")+'">'+$(this).attr("title")+'</div></div>');
		$(this).removeAttr("title");
	});

	$('a.studentBegrip').click(function() {
		var coords=$(this).offset();
		var tip=$(this).next('.tooltip');
		tip.show().offset({
								top: (coords.top-tip.height())-30,
								left: coords.left-(tip.width()/2)
		});
	});

	if ($.fn.editable) {
		$('.student-begrip-editable').editable('/shared/php/save_begrip.php', {
			id: $(this).attr("id"),
			name: 'new_content',
			type	:'textarea',
			height: '150',
			width: '382',
			submit : 'Opslaan'
		});
	}

	/**
	 * Docentopmerkingen
	 */
	$('a.docentOpmerking').click(function() {
		var coords=$(this).offset();
		var tip=$(this).parent().next('.tooltip');
		tip.show().offset({
								top: (coords.top-tip.height())-30,
								left: coords.left-(tip.width()/2)
		});
	});

	if ($.fn.editable) {
		$('.docent-opmerking-editable').editable('/shared/php/save_docentopmerking.php', {
			id: $(this).attr("id"),
			name: 'new_content',
			type	:'textarea',
			height: '150',
			width: '382',
			submit : jslang_opslaan
		});
	}


	$('.tooltip_close').click(function() {
		$(this).parent().parent().hide();
	});

});

//#######################################################

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 popup3(aurl) {
  var w=Lvl_openWin(aurl,'toets_popup','560','440','0','0','1','width=560,height=440,scrollbars=yes,status=yes,menubar=no,location=no,resizable=yes,titlebar=no');
}

function checkDocentCode(editmode) {
	if (editmode) {
		var docentCode=document.forms.modifyaccountform.docent_code.value;
	} else {
		var docentCode=document.forms.createaccountform.docent_code.value;
	}

	if (docentCode) {
		$.ajax({
			url: '/shared/php/docent_lookup.php?id='+docentCode,
		  success: function(result,textStatus) {
		  	if (result) {
	  			document.getElementById("docentCodeLookup").innerHTML=result+"<br><br>";
	  		} else {
	  			document.getElementById("docentCodeLookup").innerHTML=jslang_docent_code_niet_gevonden+"<br><br>";
	  		}
			},
			error: function (xhr, desc, exceptionobj) {
	 			document.getElementById("docentCodeLookup").innerHTML="";
				alert("Door een onbekende fout kon de docentcode niet worden opgezocht.<br><br>");
			}
		});
	} else {
		alert(jslang_4cijferige_docent_code);
	}
}

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;
}

/**
 * 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(jslang_confirm_markeren_als_ongewenst)) {
		$.ajax({
		  url: '/shared/php/markeer_forum_reactie.php',
		  data: 'id='+escape(id),
		  success: function(result,textStatus) {
				alert(result)
		  },
			error: function (xhr, desc, exceptionobj) {
				alert("Het bericht kon niet als ongewenst worden gemarkeerd.\n\n"+xhr.responseText);
		  }
		});
	}
}

/**
 * Vragen
 */
var QUESTIONS_MCR_MAXOPTIONS=8;
var QUESTIONS_CHK_MAXOPTIONS=15;

function processResponse(response) {
	if (response.status=="OK") {
		var id=response.id;
		var qt=response.qt;

		if (response.disable==1) {
			disableQuestion(qt,id);
		}

		//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=jslang_goed_beantwoord;
				}
			} else{
				if (response["antwoord"+response.antwoord]!="")  {
					feedback=response["antwoord"+response.antwoord];
				} else {
					feedback=jslang_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>"+jslang_antwoord+": </B>"+response["antwoord"];
					el.style.display="block";
				} else {
					el.innerHTML=jslang_antwoord_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=jslang_goed_beantwoord;
				}
			} else {
				if (response.feedback_fout!="") {
					feedback=response.feedback_fout;
				} else {
					feedback=jslang_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=jslang_goed_beantwoord;
				}
			} else {
				if (response.feedback_fout!="") {
					feedback=response.feedback_fout;
				} else {
					feedback=jslang_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
			if (response.disable!=1) {
				$('#reset_marker'+id).show();
			}
			$('#button_marker'+id).hide();
			$('#markers'+id).hide();
			$('#marker-question'+id).css('padding','10px');
			$('#markeerVraagModelAntwoord'+id).slideDown(600);
		} else if (qt=="trans") {
			//Transcriptievraag
			for (var i=1;i<=20;i++) {
				if (response["modelantwoord"+i]!="") {
					document.getElementById("transcriptie_modelantwoord"+id+"_"+i).innerHTML=response["modelantwoord"+i];
					document.getElementById("transcriptantwoord"+id+"_"+i).style.display="block";
				}
			}
		}

	} else {
		alert(response.status);
	}
}

function resetMarkeerVraag(id) {
	removeSelections(id);
	jQuery('#markeerVraagModelAntwoord'+id).slideUp(400,function () {
    jQuery('#markers'+id).show();
		jQuery('#reset_marker'+id).hide();
		jQuery('#button_marker'+id).show();
  });
}

function save(f) {
	$.ajax({
	  type: "POST",
	  url: $('#'+f).attr("action"),
	  dataType: "json",
	  data: $('#'+f).serialize(),
	  success: function(result) {
	  	processResponse(result);
	  },
		error: function (xhr, desc, exceptionobj) {
			alert("Je antwoord kon niet worden opgeslagen. De volgende fout is opgetreden:\n\n"+xhr.responseText);
	  }
	});
}

function disableQuestion(questionType,questionID) {

	//Disable save knop
	$('#button_'+questionType+questionID).hide();

	//Hier vraagspecifieke zaken uitzetten of op readonly zetten
	switch (questionType) {
		case "chk":
			$('#chk_f'+questionID+' input').attr("disabled", "disabled");
			$('#chk_f'+questionID+' textarea').attr("disabled", "disabled");
			break;
		case "dnd":
			break;
		case "mcr":
			$('#mcr_f'+questionID+' input').attr("disabled", "disabled");
			$('#mcr_f'+questionID+' textarea').attr("disabled", "disabled");
			break;
		case "open":
			$('#open_f'+questionID+' textarea').attr("disabled", "disabled");
			break;
		case "trans":
			break;
		case "marker":
			$('#markers'+questionID).hide();
			$('#reset_marker'+questionID).hide(); //opnieuw maken
			$('#marker-question'+questionID).css('padding','10px');
			$('#markeerVraagModelAntwoord'+questionID).slideDown(600);
	}
}

/**
 * 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>");
}

