/*
 *	ajax.js (20060403)
 *	Copyright 2006 C Internet Services
 */



/***************************************************************************
 *	General UI functions
 */

function htmlentities(text) {
	//	Quick function, could be improved
	text = text.replace("&", "&amp;");
	while (text.indexOf("<") >= 0) {
		text = text.replace("<", "&lt;");
	}
	while (text.indexOf(">") >= 0) {
		text = text.replace(">", "&gt;");
	}
	return text;
}

function showDiv(name, toggle) {
	element = document.getElementById(name);
	if (!element) {
		alert("showDiv: element \"" + name + "\" not found");
		result = false;
	} else {
		if (toggle == -1)
			hide = (element.style.display == "inline");
		else
			hide = !toggle;

		element.style.display=hide ? "none" : "inline";
		result = !hide;
	}

	return result;
}



/***************************************************************************
 *	AJAX functions
 */

function ajaxCreateRequestObject() {
    var result;
    if (navigator.appName == "Microsoft Internet Explorer") {
        result = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        result = new XMLHttpRequest();
    }
    return result;
}

function ajaxRequest(type, action, params) {
	if (ajax == null) {

		if (ajaxDebug) {
			alert("ajaxDebug\n\najaxRequest: Creating ajax request object");
		}

		ajax = ajaxCreateRequestObject();
	}

	url = "/js/ajax/?type=" + type + "&action=" + action;
	if (params != "")
		url = url + "&" + params;

	random = Math.floor(Math.random()*1000000);
	url = url + "&ts=" + random;

	if (ajaxDebug) {
		alert("ajaxDebug\n\najaxRequest:\nurl=" + url);
	}

	ajaxRequestURL = url;
    ajax.open("get", url);
    ajax.onreadystatechange = ajaxHandleResponse;
    ajax.send(null);

	document.body.style.cursor="wait";
}

function ajaxHandleResponse() {
	document.body.style.cursor="default";

    if (ajax.readyState == 4) {

		if (ajaxDebug) {
			alert("ajaxDebug\n\najaxHandleResponse:\najax.status=" + ajax.status + "\najax.readyState=" + ajax.readyState + "\najax.responseText=\n" + ajax.responseText);
		}

		if (ajax.status==200) {

	        var response = ajax.responseText;
	        var el = new Array();

	        if (response.indexOf("||") != -1) {
	            el = response.split("||");
				code = el[0];
				if (code == "OK") {

					//	OK response from server, handle it!

					command = el[1];
					if (command == "write") {

						//	Write to a DOM element
						elementId = el[2];
						elementHTML = el[3];
						element = document.getElementById(elementId);
						if (!element)
							alert("ajax: Server tried to write unknown element: " + elementId);
						else {
							//	Load the response into a div and display it
							element.innerHTML = elementHTML;
							element.style.display = "inline";
						}
					} else if (command == "call") {

						//	Call a Javascript function
						functionName = el[2];
						if (window[functionName]) {

							//	Evaluate the function name and arguments
							evalText = functionName + "(";
							for (i=3;i<el.length;i++) {
								evalText += "'" + el[i] + "'";
								if (i != el.length-1) {
									evalText += ",";
								}
							}
							evalText += ")";
							eval(evalText);
						} else {
							//	Function not found
							alert("ajax: Server called unknown function: " + functionName);
						}

						//alert("call: " + evalText);
					} else if (command == "eval") {

						//	Evaluate something
						evalText = el[2];
						eval(evalText);

					} else {
						alert("ajax: Server issued unknown command: " + command);
					}

				} else if (code == "ERR") {

					//	ERR response from server
					number = el[1];
					message = el[2];
					alert("ajax: Error from server:\n\nERR " + number + " " + message);

				} else {

					//	Not OK and not ERR
					alert("ajax: Unknown message from server\n\n"+response);
				}


	        } else {

				//	We couldn't even find the characteristic || string in the response
				alert("ajax: Unknown response from server\n\n"+response);
			}

		} else { // ajax.status!=200

			alert("ajax: HTTP error status "+ajax.status);
		}
    }
}

//	AJAX globals:
var ajax = null;
var ajaxRequestURL = "";
var ajaxDebug = navigator.userAgent.indexOf("transip/ajaxdebug") > -1;



/***************************************************************************
 *	Domain panel AJAX request functions
 */

function contentAjaxSearchRequest() {
	params = "subject=" + escape(document.forms.searchForm.searchSubjectInput.value);
	params += "&owner=" + escape(document.forms.searchForm.searchAuteurInput.value);
	params += "&menuitem=" + escape(document.forms.searchForm.searchCategorieInput.value);
	ajaxRequest("content", "search", params);
	setMainTitle("Zoekresultaat");
}

function contentAjaxLetterRequest(letter) {
	params = "letter=" + escape(letter);
	ajaxRequest("content", "search", params);
	setMainTitle("Artikelen met beginletter: " + letter);
}

function contentAjaxGroupRequest(groupId, level) {
	if (groupId != 0) {
		showDiv("groupTools" + groupId, 1);
	}

	divElement = document.getElementById("groupDiv" + groupId);
	if (divElement && divElement.innerHTML != "") {
		//	Result already present, show the cached version
		showDiv("groupDiv" + groupId, 1);
	} else {
		params = "groupId=" + escape(groupId);
		params += "&level=" + escape(level);
		params += "&showGroups=1";
		ajaxRequest("groups", "search", params);
	}

	setMainTitle("Categori&euml;n");
}

function contentAjaxAllRequest(column, direction) {
    params  = "column=" + escape(column);
    params += "&direction=" + escape(direction);
    params += "&all=1;" 
	ajaxRequest("content", "search", params);
	setMainTitle("Te wijzigen content");
}

function contentAjaxProblemRequest() {
	ajaxRequest("content", "search", "problem=1");
	setMainTitle("Domeinen met probleem status");
}



/***************************************************************************
 *	Domain panel: general functions
 */

function setMainTitle(title) {
	mainTitleElement = document.getElementById("mainTitle");
	if (mainTitleElement)
		mainTitleElement.innerHTML = title;	
}

function setTakenTitle(title) {
	titleElement = document.getElementById("takenTitle");
	if (titleElement)
		titleElement.innerHTML = title;	
}

function setFunctieTitle(title) {
	titleElement = document.getElementById("functieTitle");
	if (titleElement)
		titleElement.innerHTML = title;	
}

function setSubTakenTitle(title) {
	titleElement = document.getElementById("subtakenTitle");
	if (titleElement)
		titleElement.innerHTML = title;	
}

function setvwkoppelTitle(title) {
	titleElement = document.getElementById("vwkoppelTitle");
	if (titleElement)
		titleElement.innerHTML = title;	
}

function groupOpen(groupId, level) {
	arrowElement = document.getElementById("groupArrow" + groupId);
	if (arrowElement)
		arrowElement.src = "images/icons/ig1.gif";

	contentAjaxGroupRequest(groupId, level+1);
}

function groupClose(groupId) {
	showDiv("groupDiv" + groupId, 0);
	showDiv("groupTools" + groupId, 0);

	arrowElement = document.getElementById("groupArrow" + groupId);
	if (arrowElement)
		arrowElement.src = "images/icons/ig0.gif";
}

function groupClick(groupId, level) {
	groupDiv = document.getElementById("groupDiv" + groupId);

	if (groupDiv && (groupDiv.style.display == "inline")) {
		groupClose(groupId);
	} else {
		groupOpen(groupId, level);
	}
}

/***************************************************************************
 *	Admin panel: news
 */

function newsAjaxAllRequest(column, direction) {
    params  = "column=" + escape(column);
    params += "&direction=" + escape(direction);
    params += "&all=1;" 
	ajaxRequest("news", "list", params);
	setMainTitle("Alle nieuwsberichten ");
}

function newsAjaxSearchRequest() {
	params = "subject=" + escape(document.forms.searchForm.searchSubjectInput.value);
	params += "&searchdate=" + escape(document.forms.searchForm.searchDateInput.value);
	ajaxRequest("news", "search", params);
	setMainTitle("Zoekresultaat");
}

function newsAjaxLetterRequest(letter) {
	params = "letter=" + escape(letter);
	ajaxRequest("news", "search", params);
	setMainTitle("Nieuwsberichten met beginletter: " + letter);
}



/***************************************************************************
 *	Admin panel: support
 */
 
function supportAjaxAllRequest(column, direction) {
    params  = "column=" + escape(column);
    params += "&direction=" + escape(direction);
    params += "&all=1;" 
	ajaxRequest("support", "list", params);
	setMainTitle("Alle help onderdelen ");
}

function supportAjaxSearchRequest() {
    var words = document.forms.searchForm.searchWordInput.value;
    var onderdeel = document.forms.searchForm.searchOnderdeelInput.value;
	params = "words=" + escape(words);
	params += "&onderdeel=" + escape(onderdeel);
	ajaxRequest("support", "search", params);
	setMainTitle("Zoekresultaat");
}

function supportAjaxHpnRequest(hpn) {
	params = "onderdeel=" + escape(hpn);
	ajaxRequest("support", "search", params);
	setMainTitle("Zoekresultaat");
}

function supportFaqAjaxAllRequest(column, direction) {
    params  = "column=" + escape(column);
    params += "&direction=" + escape(direction);
    params += "&all=1;" 
	ajaxRequest("faq", "list", params);
	setMainTitle("Meest gestelde vragen ");
}


/***************************************************************************
 *	Admin panel: users
 */

function usersAjaxAllRequest(column, direction, level) {
    params  = "column=" + escape(column);
    params += "&direction=" + escape(direction);
    params += "&level=" + escape(level);
	ajaxRequest("users", "list", params);
	if(level == 1) { setMainTitle("Raadplegers "); }
	else if(level == 2) { setMainTitle("Gebruikers "); }
	else if(level == 3) { setMainTitle("Beheerders "); }
	else if(level == 0) { setMainTitle("Aanmeldingen "); }
	else { setMainTitle("Alle accounts "); }
}

function usersAjaxSearchRequest() {
	params = "uname=" + escape(document.forms.searchForm.searchUsernameInput.value);
	params += "&level=" + escape(document.forms.searchForm.searchLevelInput.value);
	params += "&organisatie=" + escape(document.forms.searchForm.searchOrganisatieInput.value);
	ajaxRequest("users", "search", params);
	setMainTitle("Zoekresultaat");
}

function usersAjaxLetterRequest(letter) {
	params = "letter=" + escape(letter);
	ajaxRequest("users", "search", params);
	setMainTitle("Accounts met beginletter: " + letter);
}

function deleteUserRecord(id,user) {
        params  = "id=" + escape(id);
		if (confirm("Wilt u dit record verwijderen:\n" + user)) {
		ajaxRequest("users", "delete", params);
	}
}

function editUserRecord(id) {
        params  = "id=" + escape(id);
		ajaxRequest("users", "edit", params);
}

function usersAjaxGroupRequest(column, direction, level, groupid) {
    params  = "column=" + escape(column);
    params += "&direction=" + escape(direction);
    params += "&level=" + escape(level);
    params += "&groupid=" + escape(groupid); 
	ajaxRequest("users", "list", params);
	if(level == 1) { setMainTitle("Raadplegers "); }
	else if(level == 2) { setMainTitle("Gebruikers "); }
	else if(level == 3) { setMainTitle("Beheerders "); }
	else if(level == 0) { setMainTitle("Aanmeldingen "); }
	else { setMainTitle("Alle accounts "); }
}

function usersAjaxLimitedAllRequest(column, direction, level) {
    params  = "column=" + escape(column);
    params += "&direction=" + escape(direction);
    params += "&level=" + escape(level);
	ajaxRequest("usersLimited", "list", params);
	if(level == 1) { setMainTitle("Raadplegers "); }
	else if(level == 2) { setMainTitle("Gebruikers "); }
	else if(level == 3) { setMainTitle("Beheerders "); }
	else if(level == 0) { setMainTitle("Aanmeldingen "); }
	else { setMainTitle("Alle accounts "); }
}

function usersAjaxLimitedSearchRequest() {
	params = "uname=" + escape(document.forms.searchForm.searchUsernameInput.value);
	params += "&level=" + escape(document.forms.searchForm.searchLevelInput.value);
	params += "&organisatie=" + escape(document.forms.searchForm.searchOrganisatieInput.value);
	ajaxRequest("usersLimited", "search", params);
	setMainTitle("Zoekresultaat");
}

function usersAjaxLimitedLetterRequest(letter) {
	params = "letter=" + escape(letter);
	ajaxRequest("usersLimited", "search", params);
	setMainTitle("Accounts met beginletter: " + letter);
}

function deleteLimitedUserRecord(id,user) {
        params  = "id=" + escape(id);
		if (confirm("Wilt u dit record verwijderen:\n" + user)) {
		ajaxRequest("usersLimited", "delete", params);
	}
}

function editLimitedUserRecord(id) {
        params  = "id=" + escape(id);
		ajaxRequest("usersLimited", "edit", params);
}

function usersAjaxLimitedGroupRequest(column, direction, level, groupid) {
    params  = "column=" + escape(column);
    params += "&direction=" + escape(direction);
    params += "&level=" + escape(level);
    params += "&groupid=" + escape(groupid); 
	ajaxRequest("usersLimited", "list", params);
	if(level == 1) { setMainTitle("Raadplegers "); }
	else if(level == 2) { setMainTitle("Gebruikers "); }
	else if(level == 3) { setMainTitle("Beheerders "); }
	else if(level == 0) { setMainTitle("Aanmeldingen "); }
	else { setMainTitle("Alle accounts "); }
}

/***************************************************************************
 *	Controlpanel: vrijwilligers
 */

function vwAjaxAllRequest(column, direction) {
    params  = "column=" + escape(column);
    params += "&direction=" + escape(direction);
    params += "&all=1;" 
	ajaxRequest("vrijwilligers", "list", params);
	setMainTitle("Alle vrijwilligers ");
}

function vwAjaxSearchRequest() {
	params = "achternaam=" + escape(document.forms.searchForm.searchAchternaamInput.value);
	params += "&voornaam=" + escape(document.forms.searchForm.searchVoornaamInput.value);
	ajaxRequest("vrijwilligers", "search", params);
	setMainTitle("Zoekresultaat");
}

function vwAjaxFreeSearchRequest() {
	params = "beroep=" + escape(document.forms.freesearchForm.searchBeroepInput.value);
	params += "&opleiding=" + escape(document.forms.freesearchForm.searchOpleidingInput.value);
	params += "&hobby=" + escape(document.forms.freesearchForm.searchHobbyInput.value);
	params += "&functie=" + escape(document.forms.freesearchForm.searchFunctieInput.value);
	params += "&clubtaak=" + escape(document.forms.freesearchForm.searchClubtaakInput.value);
	params += "&lidnummer=" + escape(document.forms.freesearchForm.searchLidnummerInput.value);
	params += "&lidsoort=" + escape(document.forms.freesearchForm.searchLidsoortInput.value);
	params += "&lidsoort_byz=" + escape(document.forms.freesearchForm.searchLidsoort_byzInput.value);
	params += "&rijbewijs=" + escape(document.forms.freesearchForm.searchRijbewijsInput.checked);
	params += "&rijbewijsc=" + escape(document.forms.freesearchForm.searchRijbewijsCInput.checked);
	params += "&rijbewijsd=" + escape(document.forms.freesearchForm.searchRijbewijsDInput.checked);
	params += "&rijbewijse=" + escape(document.forms.freesearchForm.searchRijbewijsEInput.checked);
	params += "&ehbo=" + escape(document.forms.freesearchForm.searchEHBOInput.checked);
	params += "&bhv=" + escape(document.forms.freesearchForm.searchBHVInput.checked);
	params += "&vrijveld1=" + escape(document.forms.freesearchForm.searchVrijveld1Input.value);
	params += "&vrijveld2=" + escape(document.forms.freesearchForm.searchVrijveld2Input.value);
	params += "&opmerkingen=" + escape(document.forms.freesearchForm.searchOpmerkingenInput.value);
	ajaxRequest("vrijwilligers", "search", params);
	setMainTitle("Zoekresultaat");
}

function vwAjaxLetterRequest(letter) {
	params = "letter=" + escape(letter);
	ajaxRequest("vrijwilligers", "search", params);
	setMainTitle("Gebruikers met beginletter: " + letter);
}

function sportSelectxxx(lidsoort) {
	var selectedValue = document.getElementById('sporttak').value;
	if(selectedValue == "") {
	        showDiv("sportDiv", 0);
	} else {
		    showDiv("sportDiv", 1);
			vwAjaxLidsoortRequest(selectedValue,lidsoort);
		}
}

function sportSelect(lidsoort) {
	var selectedValue = document.getElementById('sporten').value;
	if(selectedValue == "") {
	        showDiv("sportDiv", 0);
	} else {
		    showDiv("sportDiv", 1);
			vwAjaxLidsoortRequest(selectedValue,lidsoort);
		}
}

function vwAjaxLidsoortRequest(sportid,sel_lidsoort) {
	params = "sportid=" + escape(sportid);
	params += "&sel_lidsoort=" + escape(sel_lidsoort);
	ajaxRequest("lidsoorten", "list", params);
}

function vwLidsoortAddRecord() {
	content = document.getElementById("lidsoort_nieuw").value;
	sporttak = document.getElementById("sporten").value;
	if (sporttak == "") {
	  alert("U moet eerst een tak van sport selecteren");
	} else if (sporttak == 6) {
	    alert("U kunt niet toevoegen aan deze lidsoort");
	} else if (content == "") {
		alert("U moet een naam van de nieuwe lidsoort opgeven");
	} else {
		ajaxRequest("lidsoorten", "add", "content="+escape(content)+"&sporttak="+escape(sporttak));
    }
}

function vwAjaxLidsoortByzRequest(selected) {
	params = "selected=" + escape(selected);
	ajaxRequest("lidsoort_bijzonder", "list", params);
}

function vwLidsoort_byzAddRecord() {
	content = document.getElementById("lidsoort_byz_nieuw").value;
	
	if (content == "") {
		alert("U moet een naam van het bijzondere lidmaatschap opgeven");
	} else {
		ajaxRequest("lidsoort_bijzonder", "add", "content="+escape(content));
    }
}

function vwAjaxGewensteFunctieRequest(selected) {
	params = "selected=" + escape(selected);
	ajaxRequest("functies", "list", params);
}

function vwGewensteFunctieAddRecord() {
	content = document.getElementById("functie_gewenst_nieuw").value;
	if (content == "") {
			alert("U moet een naam van de gewenste functie opgeven");
		} else {
			ajaxRequest("functies", "add", "content="+escape(content));	
		}
}

function vwAjaxInteressenRequest(selected) {
	params = "selected=" + escape(selected);
	ajaxRequest("interessen", "list", params);
}

function vwInteressenAddRecord() {
	content = document.getElementById("interessen_nieuw").value;
	if (content == "") {
			alert("U moet een naam van de gewenste functie opgeven");
		} else {
			ajaxRequest("interessen", "add", "content="+escape(content));	
		}
}

function vwAjaxOpleidingenRequest(selected) {
	params = "selected=" + escape(selected);
	ajaxRequest("opleidingen", "list", params);
}

function vwOpleidingenAddRecord() {
	content = document.getElementById("opleidingen_nieuw").value;
	if (content == "") {
			alert("U moet de naam van de opleiding opgeven");
		} else {
			ajaxRequest("opleidingen", "add", "content="+escape(content));	
		}
}

function vwAjaxSportenRequest(selected) {
	params = "selected=" + escape(selected);
	ajaxRequest("sporten", "list", params);
}

function vwSportenAddRecord() {
	content = document.getElementById("sporten_nieuw").value;
	if (content == "") {
			alert("U moet de naam van de sport opgeven");
		} else {
			ajaxRequest("sporten", "add", "content="+escape(content));	
		}
}

function vwAjaxGewensteClubtaakRequest(selected) {
	params = "selected=" + escape(selected);
	ajaxRequest("clubtaken", "list", params);
}

function vwGewensteClubtaakAddRecord() {
	content = document.getElementById("clubtaak_gewenst_nieuw").value;
	if (content == "") {
			alert("U moet een naam van de gewenste clubtaak opgeven");
		} else {
			ajaxRequest("clubtaken", "add", "content="+escape(content));	
		}
}

function deleteVwRecord(id,user) {
        params  = "id=" + escape(id);
		if (confirm("Wilt u dit record verwijderen:\n" + user)) {
		ajaxRequest("vrijwilligers", "delete", params);
	}
}

function editVwRecord(id) {
        params  = "id=" + escape(id);
		ajaxRequest("vrijwilligers", "edit", params);
}


/***************************************************************************
 *	Controlpanel: besturen
 */
 
function bestuurSelect(bestuur_id) {
	var selectedValue = document.getElementById('bestuur').value;
	if(selectedValue == "") {
	        showDiv("doelstellingDiv", 0);
	} else if(selectedValue == '+1') {
			showDiv("doelstellingDiv", 0);
	        bestuurAjaxAddRecord();
	} else {
		    showDiv("doelstellingDiv", 1); showDiv("errormsg",0);
			bestuurAjaxDoelstellingRequest(selectedValue);
	}
}
function bestuurAjaxDoelstellingRequest(bestuur_id) {
	params = "bestuur_id=" + escape(bestuur_id);
	ajaxRequest("besturen", "list", params);
}

function bestuurAjaxEditTaak(id) {
        params  = "bestuur_id=" + escape(id);
		ajaxRequest("besturen", "edittaak", params);
}

function bestuurAjaxEditSamenstelling(id) {
        params  = "bestuur_id=" + escape(id);
		ajaxRequest("besturen", "editsamenstelling", params);
}

function bestuurAjaxSaveTaak(id) {
		var doelstelling = document.getElementById("doelstellingsave").value;
        params  = "bestuur_id=" + escape(id);
        params += "&doelstelling=" + escape(doelstelling);
        ajaxRequest("besturen", "savetaak", params);
}

function bestuurAjaxSaveSamenstelling(id) {
		var samenstelling = document.getElementById('samenstellingsave').value;
        params  = "bestuur_id=" + escape(id);
        params += "&samenstelling=" + escape(samenstelling);
		ajaxRequest("besturen", "savesamenstelling", params);
}

function bestuurAjaxAddRecord() {
	params  = "";
	ajaxRequest("besturen", "add", params);
}

function functieAjaxAdd() {
	var functie_id = document.getElementById('functie').value;
	var bestuur_id = document.getElementById('bestuur').value;
	params  = "functie_id=" + escape(functie_id);
	params += "&bestuur_id=" + escape(bestuur_id);
	ajaxRequest("besturen", "addfunctie", params);
}

function functieAjaxNew() {
	var functie = document.getElementById('functienieuw').value;
	var bestuur_id = document.getElementById('bestuur').value;
	params  = "functie=" + escape(functie);
	params += "&bestuur_id=" + escape(bestuur_id);
	//alert("1." + functie + " 2." + bestuur_id + " ");
	ajaxRequest("besturen", "newfunctie", params);
}

function deleteFunctieRecord(id,functie) {
		var bestuur_id = document.getElementById('bestuur').value;
        params  = "id=" + escape(id);
        params += "&bestuur_id=" + escape(bestuur_id);
		if (confirm("Wilt u de functie '" + functie + "' verwijderen?\n")) {
		ajaxRequest("besturen", "deletefunctie", params);
	}
}

function functieTakenAjaxrequest(functie,id) {
	params  = "koppel_taak_id=" + escape(id);
	params += "&functie=" + escape(functie);
	ajaxRequest("besturen", "listtaken", params);
	setTakenTitle('<span class="kop">Taken bij ' + functie + ' </span>');
	setSubTakenTitle('<span class="kop">Subtaken</span>');
}

function taakAjaxAdd(koppel_taak_id) {
	var taak_id = document.getElementById('taak').value;
//	var koppel_taak_id = escape(koppel_taak_id);
	params  = "taak_id=" + escape(taak_id);
	params += "&koppel_taak_id=" + escape(koppel_taak_id);
	ajaxRequest("besturen", "addtaak", params);
}

function taakAjaxNew(koppel_taak_id) {
	var taaknieuw = document.getElementById('taaknieuw').value;
	params  = "taak=" + escape(taaknieuw);
	params += "&koppel_taak_id=" + escape(koppel_taak_id);
	ajaxRequest("besturen", "newtaak", params);
}

function deleteTaakRecord(taak_id,koppel_taak_id,taak) {
        params  = "taak_id=" + escape(taak_id);
        params += "&koppel_taak_id=" + escape(koppel_taak_id);
		if (confirm("Wilt u de taak '" + taak + "' verwijderen?\n")) {
		ajaxRequest("besturen", "deletetaak", params);
		setSubTakenTitle('<span class="kop">Subtaken</span>');
		showDiv('subtakenDiv',0);
	}
}

function subTakenAjaxrequest(taak,taak_id, koppel_taak_id, functie) {
	params  = "koppel_taak_id=" + escape(koppel_taak_id);
	params += "&taak_id=" + escape(taak_id);
	params += "&taak=" + escape(taak);
	params += "&funtie=" + escape(functie);
	ajaxRequest("besturen", "listsubtaken", params);
	setSubTakenTitle('<span class="kop">Subtaken bij ' + taak + ' </span>');
}

function subtakenAjaxOmschrijvingRequest(subtaak_id) {
	params = "subtaak_id=" + escape(subtaak_id);
	ajaxRequest("besturen", "listsubtaakomschrijving", params);
}

function subtaakAjaxEditOmschrijving(subtaak_id) {
        params  = "subtaak_id=" + escape(subtaak_id);
		ajaxRequest("besturen", "editsubtaakomschrijving", params);
}

function bestuurAjaxSaveSubtaakOmschrijving(subtaak_id) {
		var subomschrijving = document.getElementById('subomschrijving').value;
        params  = "subtaak_id=" + escape(subtaak_id);
        params += "&subtaakomschrijving=" + escape(subomschrijving);
		ajaxRequest("besturen", "savesubtaakomschrijving", params);
}

function deletesubTaakRecord(subtaak_id,koppel_taak_id,subtaak) {
        params  = "subtaak_id=" + escape(subtaak_id);
        params += "&koppel_taak_id=" + escape(koppel_taak_id);
		if (confirm("Wilt u de subtaak '" + subtaak + "' verwijderen?\n")) {
		ajaxRequest("besturen", "deletesubtaak", params);
	}
}

function subtaakAjaxAdd(koppel_taak_id,taak_id) {
	var subtaak_id = document.getElementById('subtaak').value;
	params  = "subtaak_id=" + escape(subtaak_id);
	params += "&taak_id=" + escape(taak_id);
	params += "&koppel_taak_id=" + escape(koppel_taak_id);
	ajaxRequest("besturen", "addsubtaak", params);
	//alert('|'+subtaak_id+'|'+taak_id+'|'+koppel_taak_id+'|')
}

function subtaakAjaxNew(koppel_taak_id,taak_id) {
	var subtaak = document.getElementById('subtaaknieuw').value;
	params  = "subtaak=" + escape(subtaak);
	params += "&taak_id=" + escape(taak_id);
	params += "&koppel_taak_id=" + escape(koppel_taak_id);
	ajaxRequest("besturen", "newsubtaak", params);
}

function vwkoppelAjaxrequest(functie_id,functie) {
	params = "functie_id=" + escape(functie_id);
	params += "&functie=" + escape(functie);
	ajaxRequest("besturen", "listvwkoppel", params);
}

function vwkoppelAjaxAdd(functie_id,functie) {
	var vw_id = document.getElementById('vwkoppel').value;
	params  = "functie_id=" + escape(functie_id);
	params += "&vw_id=" + escape(vw_id);
	params += "&functie=" + escape(functie);
	ajaxRequest("besturen", "addkoppelvw", params);
}

function vwkoppelAjaxDelete(functie_id,vw_id,naam) {
        params  = "functie_id=" + escape(functie_id);
        params += "&vw_id=" + escape(vw_id);
		if (confirm("Wilt u '" + naam + "' verwijderen \n")) {
		ajaxRequest("besturen", "deletekoppelvw", params);
	}
}

function vwAjaxToegangRequest(id,naam) {
		params  = "vw_id=" + escape(id);
		params += "&naam=" + escape(naam);
		if (confirm("Wilt u '" + naam + "' toegang verlenen?\n")) {
		ajaxRequest("vrijwilligers", "grantAccess", params);
	}
}

function vwAjaxMakeUser(id) {
		var alevel = document.getElementById('alevel').value;
		params  = "id=" + escape(id);
        params += "&alevel=" + escape(alevel);
		//alert("-" + id + "-" + alevel + "-");
		ajaxRequest("vrijwilligers", "makeUser", params);
}

/***************************************************************************
 *  Uren 
*/

function urenBestuurSelect(bestuur_id) {
	var selectedValue = document.getElementById('bestuur').value;
	if(selectedValue == "") {
	        showDiv("urenDIV", 0);
	} else {
		    showDiv("urenDIV", 1);
			urenBestuurAjaxFunctiesRequest(selectedValue);
	}
}

function urenBestuurAjaxFunctiesRequest(bestuur_id) {
	params  = "bestuur_id=" + escape(bestuur_id);
	ajaxRequest("uren", "list", params);
	setFunctieTitle('<span class="kop">xxxxxxFuncties bij ' + functie + ' </span>');
	setSubTakenTitle('<span class="kop">Funcdsddddddd</span>')
}

function urenTakenAjaxrequest(functie,id) {
	params  = "koppel_taak_id=" + escape(id);
	params += "&functie=" + escape(functie);
	ajaxRequest("uren", "listtaken", params);
	setTakenTitle('<span class="kop">Taken bij ' + functie + ' </span>');
	setSubTakenTitle('<span class="kop">Subtaken</span>')
}

function urenSubTakenAjaxrequest(taak,taak_id, koppel_taak_id, functie) {
	params  = "koppel_taak_id=" + escape(koppel_taak_id);
	params += "&taak_id=" + escape(taak_id);
	params += "&taak=" + escape(taak);
	params += "&funtie=" + escape(functie);
	ajaxRequest("uren", "listsubtaken", params);
	setSubTakenTitle('<span class="kop">Subtaken bij ' + taak + ' </span>');
}

function urenSettingsAjaxChange() {
		var urenPeriodeInputId = document.getElementById('urenPeriodeInputId').value;
		var urenFtsInputId = document.getElementById('urenFtsInputId').value;
        params  = "periode=" + escape(urenPeriodeInputId);
        params += "&fts=" + escape(urenFtsInputId);
		//alert("periode: " + urenPeriodeInputId + ", fts: " + urenFtsInputId); 
		ajaxRequest("uren", "savesettings", params);
}


/***************************************************************************
 *  Afdrukken Bestuur
 */

function PRINT_bestuurSelect(id) {
	var selectedValue = document.getElementById('bestuur').value;
	if(selectedValue == "") {
	        showDiv("listBestuurDiv", 0);
	} else {
		    showDiv("listBestuurDiv", 1);
			PRINT_bestuurAjaxfunctieRequest(selectedValue);
	}
}

function PRINT_functieSelect(id) {
	var selectedValue = document.getElementById('functie').value;
	if(selectedValue == "") {
	        showDiv("listFunctieDiv", 0);
	} else {
		    showDiv("listFunctieDiv", 1);
			PRINT_bestuurAjaxbestuurRequest(selectedValue);
	}
}

function PRINT_taakSelect(id) {
	var selectedValue = document.getElementById('taak').value;
	if(selectedValue == "") {
	        showDiv("listFunctieDiv", 0);
	} else {
		    showDiv("listFunctieDiv", 1);
			PRINT_bestuurAjaxtaakRequest(selectedValue);
	}
}

function PRINT_vwSelect(id) {
	var selectedValue = document.getElementById('vrijwilliger').value;
	if(selectedValue == "") {
	        showDiv("listFunctieDiv", 0);
	} else {
		    showDiv("listFunctieDiv", 1);
			PRINT_bestuurAjaxvwRequest(selectedValue);
	}
}

function PRINT_bestuurAjaxfunctieRequest(id) {
	params = "bestuur_id=" + escape(id);
	ajaxRequest("print_besturen", "list", params);
}

function PRINT_bestuurAjaxbestuurRequest(id) {
	params = "functie_id=" + escape(id);
	ajaxRequest("print_besturen", "list", params);
}

function PRINT_bestuurAjaxtaakRequest(id) {
	params = "taak_id=" + escape(id);
	ajaxRequest("print_besturen", "list", params);
}

function PRINT_bestuurAjaxvwRequest(id) {
	params = "vrijwilliger_id=" + escape(id);
	ajaxRequest("print_besturen", "list", params);
}

function checkprintTaak() {
	var printTaak = document.getElementById('functie_taken').checked;
	var printSubtaak = document.getElementById('taak_subtaken');
	var subtaak_omschrijving = document.getElementById('subtaak_omschrijving')
	if(printTaak == true) {
			//showDiv("printTakenDiv", 1);
			printSubtaak.disabled=false;
			subtaak_omschrijving.disabled=false;
	} else {
			//showDiv("printTakenDiv", 0);
			printSubtaak.disabled=true;
			subtaak_omschrijving.disabled=true;
	}
}

function checkprintSubtaak() {
	var printSubtaak = document.getElementById('taak_subtaken').checked;
	var subtaak_omschrijving = document.getElementById('subtaak_omschrijving')
	if(printSubtaak == true) {
			//showDiv("printSubtakenDiv", 1);
			subtaak_omschrijving.disabled=false;
	} else {
			//showDiv("printSubtakenDiv", 0);
			subtaak_omschrijving.disabled=true;
	}
}

function setprintlistTitle(title) {
	titleElement = document.getElementById("printlistTitle");
	if (titleElement)
		titleElement.innerHTML = title;	
}

/***************************************************************************
 *	Tools: kalender
 */

function editCalenderRecord(id) {
        params  = "id=" + escape(id);
		ajaxRequest("kalender", "edit", params);
}

/***************************************************************************
 *	Admin panel: images
 */

function imagesAjaxListRequest(listdir) {
    params  = "listdir=" + escape(listdir);
	ajaxRequest("images", "list", params);
	//setMainTitle("Alle artikelen <a href=\"javascript:basketAddAll()\" title=\"Alle domeinen aan uw werkmap toevoegen\"><img src=\"images/icons/bas_small.gif\" width=16 height=16 border=0></a>");
}

/***************************************************************************
 *	Admin panel: files
 */

function filesAjaxListRequest(listdir) {
    params  = "listdir=" + escape(listdir);
	ajaxRequest("files", "list", params);
	//setMainTitle("Alle documenten <a href=\"javascript:basketAddAll()\" title=\"Alle domeinen aan uw werkmap toevoegen\"><img src=\"i/icons/bas_small.gif\" width=16 height=16 border=0></a>");
}

/***************************************************************************
 *	Admin panel: newsletters
 */

function newsletterAjaxAllRequest(column, direction) {
    params  = "column=" + escape(column);
    params += "&direction=" + escape(direction);
    params += "&all=1;" 
	ajaxRequest("newsletter", "search", params);
	setMainTitle("Alle nieuwsbrieven <a href=\"javascript:basketAddAll()\" title=\"Alle domeinen aan uw werkmap toevoegen\"><img src=\"/i/icons/bas_small.gif\" width=16 height=16 border=0></a>");
}

function deleteNewsletterRecord(id,subject) {
        params  = "id=" + escape(id);
		if (confirm("Wilt u deze nieuwsbrief verwijderen:\n" + subject)) {
		ajaxRequest("newsletter", "delete", params);
	}
}

function addressbooksAjaxAllRequest(column, direction) {
    params  = "column=" + escape(column);
    params += "&direction=" + escape(direction);
    params += "&all=1;" 
	ajaxRequest("addressbook", "list", params);
	setMainTitle("Alle adresboeken ");
}

function addressbookAjaxAddressesRequest(id,column,bookname,direction) {
    params  = "id=" + escape(id);
    params += "&column=" + escape(column);
    params += "&bookname=" + escape(bookname);
    params += "&direction=" + escape(direction);
	ajaxRequest("addresses", "list", params);
	setMainTitle("Adressen " + bookname + "  ");
}

function addressbookAjaxUserAddressesRequest(id,column,bookname,direction) {
    params  = "id=" + escape(id);
    params += "&column=" + escape(column);
    params += "&bookname=" + escape(bookname);
    params += "&direction=" + escape(direction);
	ajaxRequest("useraddresses", "list", params);
	setMainTitle("Adressen " + bookname + "  ");
}

function deleteAddressRecord(id,name,bookid) {
        params  = "id=" + escape(id);
        params  += "&bookid=" + escape(bookid);
		if (confirm("Wilt u dit adres verwijderen:\n" + name)) {
		ajaxRequest("addresses", "delete", params);
	}
}

function editAddressbookRecordRequest(id,name) {
        params  = "id=" + escape(id);
		ajaxRequest("addressbook", "edit", params);
}

function editAddressRecordRequest(id,name) {
        params  = "id=" + escape(id);
		ajaxRequest("addresses", "edit", params);
}

function addressbooksAjaxSelectRequest(column, direction, newsletter) {
    params  = "column=" + escape(column);
    params += "&direction=" + escape(direction);
    params += "&newsletter=" + escape(newsletter);
    params += "&all=1;" 
	ajaxRequest("addressbookselect", "list", params);
	setMainTitle("Selecteer adresboek <a href=\"javascript:basketAddAll()\" title=\"Alle domeinen aan uw werkmap toevoegen\"><img src=\"/i/icons/bas_small.gif\" width=16 height=16 border=0></a>");
}

function addressAjaxSelectRequest(column, direction, bookid, newsletter) {
    params  = "column=" + escape(column);
    params += "&direction=" + escape(direction);
    params += "&bookid=" + escape(bookid);
    params += "&newsletter=" + escape(newsletter); 
    params += "&all=1;" 
	ajaxRequest("addressselect", "list", params);
	setMainTitle("Verzendlijst (controleer onderstaande adressen) ");
}

function newsletterAjaxSendmailRequest(sendmailDiv,mailaddress,name,newsletter,layout) {
    params  = "sendmailDiv=" + escape(sendmailDiv);
    params += "&mailaddress=" + escape(mailaddress);
    params += "&name=" + escape(name);
    params += "&newsletter=" + escape(newsletter);    
    params += "&layout=" + escape(layout);
    params += "&all=1;" 
	ajaxRequest("newslettersend", "sendmail", params);
	setMainTitle("Verzending nieuwsbrieven ");
}

/***************************************************************************
 *	Admin panel: div cms functions
 */
 
function statusClick(navId,status) {
	ajaxRequest("navigation", "change", "navId=" + navId + "&status=" + status);
} 

function blockStatusClick(id,status) {
	ajaxRequest("blocks", "change", "id=" + id + "&status=" + status);
} 

function statusPublicClick(id,status) {
	ajaxRequest("content", "changePublicStatus", "id=" + id + "&status=" + status);
} 

function statusBoxesClick(id,status) {
	ajaxRequest("content", "changeBoxesStatus", "id=" + id + "&status=" + status);
}

/***************************************************************************
 *	Domain panel: newsletter basket functions
 */

var basket = new Array();

function basketAdd(address) {
	if (basket[domain] != 1) {
		ajaxRequest("basket", "add", "basketId=" + basketId + "&domains=" + escape(domain));
	}
}

function addressBasketAjaxAllRequest(column, direction) {
    params  = "column=" + escape(column);
    params += "&direction=" + escape(direction);
    params += "&all=1;" 
	ajaxRequest("addressbasket", "list", params);
	setMainTitle("Uw werkmap ");
}

function basketAddAddressbook(addressbookId) {
	if (addressbookId > 0) {
		ajaxRequest("addressbasket", "addaddressbook", "addressbookId=" + addressbookId);
		setMainTitle("Uw werkmap ");
	}
}

function basketAddUserAddressbook(addressbookId) {
	if (addressbookId == 99999) {
		ajaxRequest("addressbasket", "addUserAddressbook", "addressbookId=" + addressbookId);
		setMainTitle("Uw werkmap ");
	}
}

function basketAddAddress(addressId) {
	if (addressId > 0) {
		ajaxRequest("addressbasket", "addaddress", "addressId=" + addressId);
		setMainTitle("Uw werkmap ");
	}
}

function basketAddUserAddress(addressId) {
	if (addressId > 0) {
		ajaxRequest("addressbasket", "adduseraddress", "addressId=" + addressId);
		setMainTitle("Uw werkmap ");
	}
}

function basketAddAll() {
	if (domainCount<500 || confirm("U heeft " + domainCount + " domeinen.\nWilt u al uw domeinen aan uw werkmap toevoegen?\nDeze bewerking kan even duren.")) {
		ajaxRequest("basket", "addall", "basketId=" + basketId);
	}
}

function basketAddCallback(domain) {
	basket[domain] = 1;
	//basketUpdateUI();
}

function basketRemove(addressId, name) {
	if (addressId > 0 ) {
	    params  = "addressId=" + escape(addressId);
		if (confirm("Wilt u dit adres verwijderen:\n" + name)) {
		ajaxRequest("addressbasket", "delete", params);
	}
  }
}

function basketRemoveCallback(domain) {
	basket[domain] = 0;
	basketUpdateUI();
}

function basketReset() {
	ajaxRequest("addressbasket","reset");
}

function basketResetCallback(newBasketId) {
	url = "./?id=-" + newBasketId;
	document.location.href = url;
	//basket = new Array();
	//basketUpdateUI();
}

function basketUpdateUI() {
	contentsHTML = "";
	count = 0;
	for (domain in basket) {
		if (basket[domain] == 1) {
			contentsHTML += "<a href=\"javascript:basketRemove('" + domain + "')\"><img src=\"i/icons/bas_delete_small.gif\" width=16 height=16 border=0></a>";
			contentsHTML += "<a href=\"submit/?domain=" + domain + "\">" + domain + "</a>";
			contentsHTML += "<br>\n";
			count++;
		}
	}

	//	show or hide basketDiv
	showBasket = (count > 0) ? 1 : 0;
	//	mainBlockDiv = document.getElementById("mainBlockDiv");
	//	mainBlockDiv.style.height = showBasket ? 250 : 320;

	showDiv("basketDiv", showBasket);
	showDiv("introDiv", 1-showBasket);

	//	update basket contentsDiv with list of domains
    contentsDiv = document.getElementById("basketContents");
	if (contentsDiv) {
		contentsDiv.innerHTML = contentsHTML;
	}

	//	remove basket intro text
	if (count > 0) {
		myIntroDiv = document.getElementById("basketIntro");
		if (myIntroDiv) {
			myIntroDiv.innerHTML = "";
		}
	}

	//	update countDiv
    countDiv = document.getElementById("basketCount");
	if (countDiv) {
		if (count == 0)
			countHTML = "Leeg";
		else if (count == 1)
			countHTML = count + " domein";
		else
			countHTML = count + " domeinen";

		if (count > 0) {
			countHTML += " (<a href=\"javascript:basketReset()\" title=\"Begin opnieuw met een lege werkmap.\">legen</a>)";
		}

		countDiv.innerHTML = countHTML;
	}


	//	update basket image
	myBasketImage = document.getElementById("basketImageId");
	if (myBasketImage) {
		basketStr = (count>0) ? "full" : "empty";
		myBasketImage.src = "images/icons/bas_" + basketStr + ".gif";
	}
}

function basketCheckSelect() {
 	selectBox = document.getElementById("basketActionSelectId");
	result = false;
	if (selectBox) {
		selectValue = selectBox.value;
		if (!selectValue || selectValue=="") {
			alert("Kies een geldige bewerking.");
		} else {
			result = selectValue;
		}
	}
	return result;
}



/***************************************************************************
 *	Control panel main page functions
 */

function cpClickSection(section) {
	sectionDiv = document.getElementById("section_" + section);
	sectionLink = document.getElementById("link_" + section);
	for (i=0; i<sectionArray.length; i++) {
		if (sectionArray[i] != section) {
			divElement = document.getElementById("section_"+sectionArray[i]);
			if (divElement != null) {
				showDiv("section_" + sectionArray[i], 0);
			}
			linkElement = document.getElementById("link_"+sectionArray[i]);
			if (linkElement != null) {
				linkElement.style.textDecoration="none";
			}
		}
	}
	showDiv("section_" + section, 1);
	sectionLink.style.textDecoration="underline";
}



/***************************************************************************
 *	DNS editor functions
 */

var DNSRECORD_CLASS_NORMAL = 1;
var DNSRECORD_CLASS_SYSTEM = 2;
var DNSRECORD_CLASS_HEADER = 3;

function expireString(value) {
	if (value==60)
		result = "1 min";
	else if (value==300)
		result = "5 min";
	else if (value==3600)
		result = "1 uur";
	else if (value==86400)
		result = "1 dag";
	else
		result = "" + value;
	
	return result;
}

function expireSelect(id, value) {
	html = "<select class=\"dnsRecordExpire\" id=\"dnsrecord_" + id + "_expire\">\n";
	html += "<option value=\"60\"" + (value==60 ? " selected" : "") + ">1 min</option>\n";
	html += "<option value=\"300\"" + (value==300 ? " selected" : "") + ">5 min</option>\n";
	html += "<option value=\"3600\"" + (value==3600 ? " selected" : "") + ">1 uur</option>\n";
	html += "<option value=\"86400\"" + (value==86400 ? " selected" : "") + ">1 dag</option>\n";
	html += "</select>\n";
	return html;
}

function typeString(value, name) {
	if (name == "@") {
		nameTitle = dnsDomainStr;
	} else {
		nameTitle = htmlentities(name) + "." + dnsDomainStr;
	}

	if (value=="A") {
		result = "A: De hostnaam " + nameTitle + " verwijst naar het genoemde IP-adres.";
	} else if (value=="MX") {
		result = "MX: De mail voor " + nameTitle + " wordt verzonden naar de genoemde mailserver.";
	} else if (value=="CNAME") {
		result = "CNAME: " + nameTitle + " is een alias dat verwijst naar de genoemde server.";
	} else if (value=="AAAA") {
		result = "AAAA: De hostnaam " + nameTitle + " verwijst naar het genoemde IPv6-adres.";
	} else if (value=="NS") {
		result = "NS: Het (sub)domein " + nameTitle + " draait op de genoemde nameserver.";
	} else if (value=="TXT") {
		result = "TXT: Dit record bevat tekst of informatie voor applicaties.";
	} else if (value=="SRV") {
		result = "SRV: Dit record bevat een RFC2782 service definitie.";
	} else {
		result = "Onbekend recordtype.";
	}
	return result;
}

function typeSelect(id, value) {
	html = "<select class=\"dnsRecordType\" id=\"dnsrecord_" + id + "_type\">\n";
	html += "<option value=\"A\"" + (value=="A" ? " selected" : "") + ">A (subdomein)</option>\n";
	html += "<option value=\"MX\"" + (value=="MX" ? " selected" : "") + ">MX (mail)</option>\n";
	html += "<option value=\"CNAME\"" + (value=="CNAME" ? " selected" : "") + ">CNAME (alias)</option>\n";
	html += "<option value=\"AAAA\"" + (value=="AAAA" ? " selected" : "") + ">AAAA</option>\n";
	html += "<option value=\"NS\"" + (value=="NS" ? " selected" : "") + ">NS</option>\n";
	html += "<option value=\"TXT\"" + (value=="TXT" ? " selected" : "") + ">TXT</option>\n";
	html += "<option value=\"SRV\"" + (value=="SRV" ? " selected" : "") + ">SRV</option>\n";
	html += "</select>\n";
	return html;
}



/***************************************************************************
 *	DNS editor: DnsRecord class and functions
 */

function DnsRecord(id, name, expire, type, content, recordClass) {
	this.id = id;
	this.name = name;
	this.expire = expire;
	this.type = type;
	this.content = content;
	this.recordClass = recordClass;
	this.deleted = 0;
}

DnsRecord.prototype.toString = function() {
	result = "[DnsRecord " + this.id + ": " + this.name + " " + this.expire + " " + this.type + " " + this.content + " " + this.recordClass;
	if (this.deleted) {
		result += " DELETED]";
	} else {
		result += "]";
	}
	return result;
}

function dnsRecordMouse(table, value) {
	if (value) {
		if (dnsRecordEditCount == 0) {
			table.style.backgroundColor = "#f0f0f0";
		}
	} else {
		table.style.backgroundColor = "#ffffff";
	}
}

function dnsRecordCheckEditCount(silent) {
	if (dnsRecordEditCount > 0) {
		if (!silent) {
			alert("U bent nog een record aan het bewerken.\nSluit eerst de huidige bewerking af met \"OK\" of \"Terug\".");
		}
		return false;
	}
	return true;
}

function dnsMarkDirty() {
	dnsDirty = 1;
	myDiv = document.getElementById("dirtyRemindDiv");
	if (myDiv != null) {
		myDiv.innerHTML = "<span class=\"vet\">DNS-records gewijzigd.<br>Kies <i>Bevestig</i> om de DNS-records op te slaan.</span>";
	}
	myButton = document.getElementById("saveButton");
	if (myButton != null) {
		myButton.style.color = "#0000ca";
		myButton.style.textDecoration = "underline";
	}
	
}

DnsRecord.prototype.getHTML = function(putInDiv) {
	if (this.recordClass == DNSRECORD_CLASS_NORMAL) {
		tdExtraClass="";
	} else if (this.recordClass == DNSRECORD_CLASS_SYSTEM) {
		tdExtraClass=" dnsRecordSystem";
	} else if (this.recordClass == DNSRECORD_CLASS_HEADER) {
		tdExtraClass=" dnsRecordHeader";
	}

	html = "";
	if ((this.recordClass == DNSRECORD_CLASS_NORMAL) && putInDiv) {
		html += "<div id=\"dnsrecord_" + this.id + "\">\n";
	}

	html += "<table class=\"dnsRecordTable\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"";
	if (this.recordClass == DNSRECORD_CLASS_NORMAL) {
		html += " onMouseOver=\"dnsRecordMouse(this, 1)\" onMouseOut=\"dnsRecordMouse(this, 0)\"";
	}
	html += ">\n";
	html += "<tr>\n";

	onClickHTML = (this.recordClass == DNSRECORD_CLASS_NORMAL) ? (" onClick=\"editDnsRecord(" + this.id + ", true)\"") : "";

	if (this.name == "@") {
		nameTitle = dnsDomainStr;
	} else {
		nameTitle = htmlentities(this.name) + "." + dnsDomainStr;
	}

	html += "<td class=\"dnsRecordName" + tdExtraClass + "\" " + onClickHTML + " title=\"Dit record is op Internet zichtbaar als: " + nameTitle + "\">" + htmlentities(this.name) + "</td>\n";
	html += "<td class=\"dnsRecordExpire" + tdExtraClass + "\" " + onClickHTML + " title=\"DNS-servers zullen dit record na " + expireString(this.expire) + " opnieuw opvragen.\">" + expireString(this.expire) + "</td>\n";
	html += "<td class=\"dnsRecordType" + tdExtraClass + "\" " + onClickHTML + " title=\"" + typeString(this.type, this.name) + "\">" + this.type + "</td>\n";
	html += "<td class=\"dnsRecordContent" + tdExtraClass + "\" " + onClickHTML + "><div class=\"dnsRecordContentText\">" + htmlentities(this.content) + "</div></td>\n";
	if (this.recordClass == DNSRECORD_CLASS_NORMAL) {
		html += "<td class=\"dnsRecordButtons" + tdExtraClass + "\">";
		html += "<a href=\"javascript:editDnsRecord(" + this.id + ")\" title=\"Edit dit record.\"><img src=\"/i/c/dnsrecord_edit.gif\" width=16 height=16 border=0>Edit</a>";
		html += " <a href=\"javascript:deleteDnsRecord(" + this.id + ")\" title=\"Verwijder dit record.\" style=\"color:#a04040\"><img src=\"/i/c/dnsrecord_delete.gif\" width=16 height=16 border=0>Del</a>";
	} else if (this.recordClass == DNSRECORD_CLASS_SYSTEM) {
		html += "<td class=\"dnsRecordButtons" + tdExtraClass + "\">(standaard)</td>\n";
	} else {
		html += "<td class=\"dnsRecordButtons" + tdExtraClass + "\">&nbsp;</td>\n";
	}
	html += "</tr>\n";
	html += "</table>\n";
	if (putInDiv) {
		html += "</div>\n";
	}

	return html;
}

DnsRecord.prototype.getEditHTML = function(putInDiv) {
	if (this.recordClass != DNSRECORD_CLASS_NORMAL) {
		alert("DnsRecord.getEditHTML: recordClass is not DNSRECORD_CLASS_NORMAL\n" + this);
		return "";
	}

	html = "";
	if (putInDiv) {
		html += "<div id=\"dnsrecord_" + this.id + "\">\n";
	}
	html += "<table class=\"dnsRecordTable dnsRecordEdit\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";
	html += "<tr>\n";
	html += "<td class=\"dnsRecordName\"><input onKeyDown=\"dnsRecordInputKeydown(event, " + this.id + ")\" class=\"dnsRecordName\" id=\"dnsrecord_" + this.id + "_name\" value=\"" + this.name + "\"></td>\n";
	html += "<td class=\"dnsRecordExpire\">" + expireSelect(this.id, this.expire) + "</td>\n";
	html += "<td class=\"dnsRecordType\">" + typeSelect(this.id, this.type) + "</td>\n";
	html += "<td class=\"dnsRecordContent\"><input onKeyDown=\"dnsRecordInputKeydown(event, " + this.id + ")\" class=\"dnsRecordContent\" id=\"dnsrecord_" + this.id + "_content\" value=\"" + this.content + "\"></td>\n";
	html += "<td class=\"dnsRecordButtons\">";
	html += "<input type=\"button\" value=\" OK \" class=\"dnsRecordButton\" onClick=\"editSaveDnsRecord(" + this.id + ")\">";
	html += "<input type=\"button\" value=\" Terug \" class=\"dnsRecordButton\" onClick=\"editCancelDnsRecord(" + this.id + ")\"></td>\n";
	html += "</tr>\n";
	html += "</table>\n";
	if (putInDiv) {
		html += "</div>\n";
	}
	return html;
}

function deleteDnsRecord(id) {
	if (dnsRecordCheckEditCount()) {
		record = getDnsRecordById(id);
		if (record != null && (record.name=="" || record.content=="" || confirm("Wilt u dit record verwijderen:\n" + record.name + " " + record.type + " " + record.content))) {
			record.deleted = 1;
			recordElement = document.getElementById("dnsrecord_" + id);
			recordElement.innerHTML = "";	//	for Firefox
			recordElement.outerHTML = "";	//	for MSIE
			dnsMarkDirty();
		}
	}
}

function editDnsRecord(id, silentFail) {
	if (dnsRecordCheckEditCount(silentFail)) {
		record = getDnsRecordById(id);
		if (record != null) {
			recordElement = document.getElementById("dnsrecord_" + id);
			recordElement.innerHTML = record.getEditHTML(false);

			nameElement = document.getElementById("dnsrecord_" + id + "_name");
			if (nameElement.value == "") {
				nameElement.focus();
			} else {
				contentElement = document.getElementById("dnsrecord_" + id + "_content");
				contentElement.focus();
			}
			dnsRecordEditCount++;
		}
	}
}

function dnsRecordInputKeydown(e, id) {
	key = 0;
	if (window.event) {
		key = window.event.keyCode;
	} else if (e) {
		key = e.keyCode;
	}

	if (key == 13) {
		// Enter
		editSaveDnsRecord(id);
	}
}

function editSaveDnsRecord(id) {
	record = getDnsRecordById(id);
	if (record != null) {
		name = document.getElementById("dnsrecord_" + id + "_name").value;
		expire = document.getElementById("dnsrecord_" + id + "_expire").value;
		type = document.getElementById("dnsrecord_" + id + "_type").value;
		content = document.getElementById("dnsrecord_" + id + "_content").value;
		domainname = dnsDomainStr;
		ajaxRequest("dnsedit", "validate", "id="+id+"&name="+escape(name)+"&expire="+escape(expire)
					+"&rrType="+escape(type)+"&domainname="+escape(domainname)+"&content="+escape(content));
	}
}

function editSaveDnsRecordCallback(id, name, expire, type, content, status) {
	if (status.indexOf("ERR") == 0) {
		//	Error status, display it
		statusText = status.substring(4);
		statusText = statusText.replace("(", "\n(");
		statusText = statusText.replace(". ", ".\n");
		alert("Het record bevatte een fout en kon niet opgeslagen worden.\n\n" + statusText);
		document.getElementById("dnsrecord_" + id + "_content").focus();
	} else {
		//	Save changes and close edit line
		record = getDnsRecordById(id);
		if (record != null) {
			record.name = name;
			record.expire = expire;
			record.type = type;
			record.content = content;
			recordElement = document.getElementById("dnsrecord_" + id);
			recordElement.innerHTML = record.getHTML(false);
			dnsRecordEditCount--;
			dnsMarkDirty();
		}
	}
}

function editCancelDnsRecord(id) {
	record = getDnsRecordById(id);
	if (record != null) {
		recordElement = document.getElementById("dnsrecord_" + id);
		recordElement.innerHTML = record.getHTML(false);
		dnsRecordEditCount--;
	}
}

function addDnsRecord() {
	if (dnsRecordCheckEditCount()) {
		record = new DnsRecord(dnsRecordAddId, "", 86400, "A", "", DNSRECORD_CLASS_NORMAL);
		dnsRecordsArray[dnsRecordsArray.length] = record;
   		mainDiv.innerHTML += record.getHTML(true);
		editDnsRecord(dnsRecordAddId);
		dnsRecordAddId--;	//	Counter to make sure DnsRecord id's are unique
	}
}

function dnsRecordsBodyUnload() {
	result = true;
	if (dnsDirty && !dnsSaving) {
		//	Does not work on most browsers, disabled
		//result = confirm("Er zijn wijzigingen aan uw DNS-records.\nU heeft deze nog niet opgeslagen.\n\nWilt u deze pagina verlaten zonder uw DNS-records op te slaan?");
	}
	return result;
}

function saveDnsRecords() {
	if (!dnsRecordCheckEditCount()) {
		return false;
	}
	//	Future enhancement: Validate
	//	- check for empty names/content
	//	- check for duplicate CNAME and other types
	//	- check for missing @ A/MX record
	html = makeDnsRecordsSubmitForm();
	mySubmitDiv = document.getElementById("submitDiv");
	mySubmitDiv.innerHTML = html;
	mySubmitForm = document.getElementById("submitForm");
	dnsSaving = 1;	//	So the onUnload check does not give any warning
	mySubmitForm.submit();
}

function makeDnsRecordsSubmitForm() {
	html = "<form id=\"submitForm\" action=\"submit/\" method=\"POST\">\n";
	html += "<input type=\"hidden\" name=\"id\" value=\"" + dnsId + "\">\n";
	count = 0;
	for (i=0; i<dnsRecordsArray.length; i++) {
		record = dnsRecordsArray[i];
		if (record.recordClass = DNSRECORD_CLASS_NORMAL) {
			if (record.name=="" || record.content=="") {
				//	Empty record, skip it
			} else {
				html += "<input type=\"hidden\" name=\"records[]\" value=\"" + record.id + "|"
						+ record.name + "|" + record.expire + "|" + record.type + "|"
						+ record.content + "|" + record.deleted + "\">\n";
				count++;
			}
		}
	}
	html += "<input type=\"hidden\" name=\"count\" value=\"" + count + "\">\n";
	html += "</form>";
	return html;
}

function getDnsRecordsHTML() {
	html = "";
	for (i=0; i<dnsRecordsArray.length; i++) {
		html += dnsRecordsArray[i].getHTML(true);
	}
	return html;
}

function getDnsRecordById(id) {
	result = null;
	for (i=0; i<dnsRecordsArray.length; i++) {
		if (dnsRecordsArray[i].id == id) {
			result = dnsRecordsArray[i];
		}
	}
	return result;
}


/***************************************************************************
 *	End of controlpanel.js
 */


