addEventListener("load", function() {setTimeout(hidePhoneURLbar, 0);}, false);
function hidePhoneURLbar() {
    if (window.pageYOffset < 1) {
        window.scrollTo(0, 1);
    }
}
function getWidth() {
	return filterR (
		window.innerWidth ? window.innerWidth : 0,
		document.documentElement ? document.documentElement.clientWidth : 0,
		document.body ? document.body.clientWidth : 0
	);
}
function getHeight() {
	return filterR (
		window.innerHeight ? window.innerHeight : 0,
		document.documentElement ? document.documentElement.clientHeight : 0,
		document.body ? document.body.clientHeight : 0
	);
}
function getScrollX() {
	return filterR (
		window.pageXOffset ? window.pageXOffset : 0,
		document.documentElement ? document.documentElement.scrollLeft : 0,
		document.body ? document.body.scrollLeft : 0
	);
}
function getScrollY() {
	return filterR (
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0
	);
}
function filterR(n_win, n_docel, n_body) {
	var n_result = n_win ? n_win : 0;
	if (n_docel && (!n_result || (n_result > n_docel)))
		n_result = n_docel;
	return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}
function moveEditInfo(event, name) {
//    var info = document.getElementById("info_"+name);
//    var viewW = getWidth();
//    var viewH = getHeight();
//    var viewX = getScrollX();
//    var viewY = getScrollY();
//    info.style.left = (12 + event.clientX + viewX) + "px";
//    info.style.top = (12 + event.clientY + viewY) + "px";
    updateInfo(name);
}
function updateInfo(name) {
    var info = document.getElementById("info_"+name);
    var button = document.getElementById("button_"+name);
    var editregion = document.getElementById("content_"+name);
    if(editregion.getAttribute("clean")=="true") {
        editregion.style.borderColor="#0f0";
        if(info) {
            info.style.backgroundColor="#def";
            info.innerHTML = "<b>"+i18n("Bewerken:")+" "+name+"</b>: <span style='background-color: #afa; color: #080'>"+i18n("Huidige tekst is opgeslagen")+"</span>";
        }
        if(button) {
            button.setAttribute("enabled", "false");
            button.setAttribute("value", i18n("Opgeslagen"));
        }
    }
    else {
        editregion.style.borderColor="#f00";
        if(info) {
            info.style.backgroundColor="#f99";
            info.innerHTML = "<b>"+i18n("Bewerken:")+" "+name+"</b>: <span style='background-color: #faa; color: #800'>"+i18n("Wijzigingen zijn nog niet opgeslagen! - Klik op Opslaan");
        }
        if(button) {
            button.setAttribute("enabled", "true");
            button.setAttribute("value", i18n("Opslaan"));
        }
    }
}
function saveChanges(type, name) {
    var editregion = document.getElementById("content_"+name);
    
    if(editregion.value) {
        $cont = editregion.value;
    }
    else {
        $cont = editregion.innerHTML;
    }
    
//    $.post( "/save/"+type+"/"+name, {content: $cont}, saveComplete);

$.ajax({
  url: "/save/"+type+"/"+name,
  data: "content="+escape($cont),
  contentType: "text/plain",
  success: saveComplete
});
}
function saveDate(type,name,id,datum) {
    var editregion = document.getElementById(name+"_"+id);
    
    if(name=="date") {
        editregion.value = "";
        $.post( "/save/"+type+"/item"+name+"_"+id, {content: editregion.innerHTML, action: "add", subject: datum}, saveComplete);
    }
    else $.post( "/save/"+type+"/item"+name+"_"+id, {content: editregion.innerHTML, action: "edit", subject: datum}, saveComplete);
}
function deleteItem(type,name,id,subject) {
    var editregion = document.getElementById(name+"_"+id);
    
    $.post( "/save/"+type+"/item"+name+"_"+id, {content: subject, action: "del", subject: subject}, saveComplete);
}
function addItem(type,name,id,subject) {
    var editregion = document.getElementById(name+"_"+id);
    
    $.post( "/save/"+type+"/item"+name+"_"+id, {content: editregion.value, action: "add", subject: editregion.value}, saveComplete);
}
function saveComplete(data, textStatus, jqXHR) {
    var keys;
    if(data) {
        if(data.substr(0,5)=="Error") {
            alert(data);
        }
        else if(data.substr(0,6)=="added_") {
            keys = data.split("_");
            var adder = document.getElementById(keys[1]+"_add");
            var subject = keys[2]+"_"+keys[3];
            var addElem = document.createElement("span");
            if(keys[4]!="") eval('$( "#'+subject+'" ).'+keys[4]);
            addElem.innerHTML = data.substr(keys[0].length+keys[1].length+keys[2].length+keys[3].length+keys[4].length+5);
            adder.parentNode.insertBefore(addElem, adder);
        }
        else if(data.substr(0,8)=="deleted_") {
            var toDel = document.getElementById(data.substr(8));
            if(toDel.parentNode.tagName.toLowerCase() == "span") toDel = toDel.parentNode;
            toDel.parentNode.removeChild(toDel);
        }
        else if(data.substr(0,6)=="saved_") {
            keys = data.split("_");
            var element = document.getElementById(keys[1]+"_"+keys[2]);
            if(element.type.toLowerCase()=="checkbox") {element.checked = (keys[3]=="1");}
            else element.innerHTML = keys[3];
        }
        else if(data=="OK") {
        }
        else {
            var editregion = document.getElementById("content_"+data);
            editregion.setAttribute("cleantext", editregion.innerHTML);
            editregion.setAttribute("clean", "true");
            updateInfo(data);
        }
    }
}
function cleanComplete(data, textStatus, jqXHR) {
    var keys;
    if(data) {
        if(data.substr(0,5)=="Error") {
            alert(data);
        }
        else if(data=="OK") {
        }
        else {
            var name = data.substr(0,data.indexOf("|"));
            var content = data.substr(data.indexOf("|"));
            var editregion = document.getElementById("content_"+name);
            editregion.innerHTML = content;
            updateInfo(name);
        }
    }
}
function setTextIfClean(name) {
    var editregion = document.getElementById("content_"+name);
    if(editregion.getAttribute("clean")=="true") editregion.setAttribute("cleantext", editregion.innerHTML);
}
function checkClean(name) {
    var editregion = document.getElementById("content_"+name);
    if(editregion.value) {
        if(editregion.getAttribute("cleantext") != editregion.value) editregion.setAttribute("clean", "false");
    }
    else if(editregion.getAttribute("cleantext") != editregion.innerHTML) editregion.setAttribute("clean", "false");
    updateInfo(name);
}
function setBold(name) {
    document.execCommand('bold', false, null);
    checkClean(name);
    document.getElementById("content_"+name).focus();
}
function setItalic(name) {
    document.execCommand('italic', false, null);
    checkClean(name);
    document.getElementById("content_"+name).focus();
}
function setUnderline(name) {
    document.execCommand('underline', false, null);
    checkClean(name);
    document.getElementById("content_"+name).focus();
}
function setLink(name) {
    document.getElementById("content_"+name).focus();
    document.execCommand('CreateLink', true, null);
    checkClean(name);
}
function removeLinks(name) {
    document.getElementById("content_"+name).focus();
    document.execCommand('Unlink', false, null);
    checkClean(name);
}
function doCut(name) {
    document.getElementById("content_"+name).focus();
    document.execCommand('Cut', false, null);
    checkClean(name);
}
function doCopy(name) {
    document.getElementById("content_"+name).focus();
    document.execCommand('Copy', false, null);
    checkClean(name);
}
function doPaste(name) {
    var elem = document.getElementById("content_"+name);
    document.getElementById("content_"+name).focus();
    var range = document.selection.createRange();

//    if (elem.contains(range.parentElement()))
//    {
      range.text = window.clipboardData.getData('text');
//    }
    checkClean(name);
}
function doDelete(name) {
    document.getElementById("content_"+name).focus();
    document.execCommand('Delete', false, null);
    checkClean(name);
}
function doHeader(name) {
    document.getElementById("content_"+name).focus();
    document.execCommand('RemoveFormat', false, null);
    document.execCommand('FormatBlock', false, "Heading 3");
    checkClean(name);
}
function doColor(name) {
    document.getElementById("content_"+name).focus();
    document.execCommand('ForeColor', false, "ff0000");
    checkClean(name);
}
function doIndent(name) {
    document.getElementById("content_"+name).focus();
    document.execCommand('Indent', false, null);
    checkClean(name);
}
function doHR(name) {
    document.getElementById("content_"+name).focus();
    if (document.selection && document.selection.createRange) {
        var range = document.selection.createRange();
        if (range.pasteHTML) {
            range.pasteHTML("<hr />");
        }
    }
    checkClean(name);
}
function doOL(name) {
    document.getElementById("content_"+name).focus();
    document.execCommand('InsertOrderedList', false, null);
    checkClean(name);
}
function doUL(name) {
    document.getElementById("content_"+name).focus();
    document.execCommand('InsertUnorderedList', false, null);
    checkClean(name);
}
function doP(name) {
    document.getElementById("content_"+name).focus();
    document.execCommand('InsertParagraph', false, null);
    checkClean(name);
}
function doOutdent(name) {
    document.getElementById("content_"+name).focus();
    document.execCommand('Outdent', false, null);
    checkClean(name);
}
function doRemoveFormat(name) {
    var editregion = document.getElementById("content_"+name);
    $.post( "/clean/"+name, {content: editregion.innerHTML}, cleanComplete);
    checkClean(name);
}
function doSubscript(name) {
    document.getElementById("content_"+name).focus();
    if (document.selection && document.selection.createRange) {
        var range = document.selection.createRange();
        if (range.pasteHTML) {
            range.pasteHTML("<sub>"+range.htmlText+"</sub>");
        }
    }
    checkClean(name);
}
function doSuperscript(name) {
    document.getElementById("content_"+name).focus();
    if (document.selection && document.selection.createRange) {
        var range = document.selection.createRange();
        if (range.pasteHTML) {
            range.pasteHTML("<sup>"+range.htmlText+"</sup>");
        }
    }
    checkClean(name);
}
function doUndo(name) {
    document.getElementById("content_"+name).focus();
    document.execCommand('Undo', false, null);
    checkClean(name);
}

function insertImage(name) {
    document.execCommand('InsertImage', true, null);
    checkClean(name);
    document.getElementById("content_"+name).focus();
}

function toggleCheckBox(type, name) {
    var value = "1";
    if(document.getElementById(name).checked) value="0";
    
    $.post( "/save/"+type+"/item"+name, {content: value}, saveComplete);
}

function setFocus() {
    elem = document.getElementsByTagName("input");
    for(i = 0; i < elem.length; i++) {
        if(elem[i].getAttribute("first")=="1") {
            elem[i].focus();
        }
    }
}

function checkLayouts() {
    var elem = document.getElementsByTagName("div");
    var tmp;
    var cont;
    var i;
    for(i = 0; i < elem.length; i++) {
        if(elem[i].id.toString() == "editblock") 
        {
            cont = elem[i].getElementsByTagName("div");
            if(cont[0].id.toString().substr(0,8) == "content_") {
                tmp = removeStyle(removeTags(cont[0].innerHTML));
                if(tmp!=cont[0].innerHTML) {
                    if(confirm(i18n("Dit document bevat opmaak die\nniet in de stijl van de site is!\n\nLayout opschonen?"))) {
                        cleanFonts(cont[0].id.toString().substr(8), true);
                    }
                }
            }
        }
    }
    
    setFocus();
}

function cleanFonts(name, silent) {
    var elem = document.getElementById("content_"+name);
    if(silent || confirm(i18n("Layout opschonen?")))
    {
        elem.innerHTML = removeStyle(removeTags(elem.innerHTML));
        checkClean(name);
    }
    elem.focus();
}
function getCursorPos() {
    var cursorPos;
    if (window.getSelection) {
        var selObj = window.getSelection();
        var selRange = selObj.getRangeAt(0);
        cursorPos =  findNode(selObj.anchorNode.parentNode.childNodes, selObj.anchorNode) + selObj.anchorOffset;
        /* FIXME the following works wrong in Opera when the document is longer than 32767 chars */
    }
    else if (document.selection) {
        var range = document.selection.createRange();
        var bookmark = range.getBookmark();
        /* FIXME the following works wrong when the document is longer than 65535 chars */
        cursorPos = bookmark.charCodeAt(2) - 11; /* Undocumented function [3] */
    }
    return cursorPos;
}
function findNode(list, node) {
    for (var i = 0; i < list.length; i++) {
        if (list[i] == node) {
            return i;
        }
    }
    return -1;
}

function removeTags(str) {
    var tagsToRemove = new Array("font","span","o:p");
    for(var i = 0; i < tagsToRemove.length; i++) {
        str=str.replace(new RegExp('<'+tagsToRemove[i]+'[^><]*>|<.'+tagsToRemove[i]+'[^><]*>','ig'),'');
    }
    str = str.replace(new RegExp('align="[^"]*"|align=\'[^\']*\'','ig'),'');
    return str;
}
function removeStyle(str) {
    str = str.replace(new RegExp('style="[^"]*"|style=\'[^\']*\'','ig'),'');
    str = str.replace(new RegExp('class="mso[^"]*"|class=\'mso[^\']*\'','ig'),'');
    return str;
}

function checkRegFilled() {
    if(document.getElementById("naam").value == "") {alert(i18n("Vult u a.u.b. alle velden in!"));return false;}
    if(document.getElementById("adres").value == "") {alert(i18n("Vult u a.u.b. alle velden in!"));return false;}
    if(document.getElementById("postcode").value == "") {alert(i18n("Vult u a.u.b. alle velden in!"));return false;}
    if(document.getElementById("plaats").value == "") {alert(i18n("Vult u a.u.b. alle velden in!"));return false;}
    if(document.getElementById("email").value == "") {alert(i18n("Vult u a.u.b. alle velden in!"));return false;}
    if(document.getElementById("repeat").value == "") {alert(i18n("Vult u a.u.b. alle velden in!"));return false;}
    if(document.getElementById("telefoon").value == "") {alert(i18n("Vult u a.u.b. alle velden in!"));return false;}
    if(!document.getElementById("akkoord").checked) {alert(i18n("U dient te bevestigen dat u zich\nvoor deze cursus in wilt schrijven.\nVink hiervoor het betreffende vakje aan."));return false;}
    if(!document.getElementById("voorw").checked) {alert(i18n("U dient akkoord te gaan met de voorwaarden.\nVink hiervoor het betreffende vakje aan."));return false;}
    var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,12})$/;
    if(reg.test(document.getElementById("email").value) == false) {alert(i18n("Vult u a.u.b. een geldig e-mailadres in!"));return false;}
    if(document.getElementById("email").value != document.getElementById("repeat").value) {alert(i18n("De ingevulde e-mailadressen stemmen niet overeen!\nControleer uw invoer en probeer het opnieuw."));return false;}
    
    return true;
}

function formChecker(theForm, radio_needed, checkbox_needed) {
	var allvalid = true;
	var alertstr = "U heeft het formulier nog niet geheel ingevuld!\n\n";
	var validstr = "Alle data is correct\n\n";
	var num_of_elements = theForm.length;
	var radio_selected = !radio_needed;
	var checkbox_selected = !checkbox_needed;
        
        var password_first = "";
        var password_second = "";
        
        var checkboxes_need = "";

	for (var i=0; i<num_of_elements; i++) {
		var theElement = theForm.elements[i];
		var element_type = theElement.type;
		var element_name = theElement.name;
		var element_value = theElement.value;
                var element_label = theElement.getAttribute("label");

// Check Text boxes ...
		if ((element_type == "text" || element_type == "password" || element_type == "email") && theElement.getAttribute("required")=="required") {
			var checkstr = "abcdefghijklmnopqrstuvwxyzáéúíóàèùìòäëüïöãõñâêûîôåßçABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-/*,.'@~#%$£€!?µ°±(){}[ ]";
			if (element_value.length == 0) {
				alertstr += "U heeft '" + element_label + "' niet ingevuld.\n\n";
				allvalid = false;
			} else {
				var badchars = "";
				for (var j=0; j<element_value.length; j++) {
					for (var k=0; k<checkstr.length; k++) {
						if (element_value.charAt(j) == checkstr.charAt(k)) {
							break;
						}
					}
					if (k == checkstr.length) {
						for (var l=0; l<badchars.length; l++) {
							if (element_value.charAt(j) == badchars.charAt(l)) {
								break;
							}
						}

						if (l == badchars.length) {
							badchars += element_value.charAt(j);
						}						allvalid = false;
					}
				}
				if (!allvalid) {
					alertstr += "In '" + element_label + "' komen de volgende onjuiste tekens voor:\n\t" + badchars + "\n\n";
				}
			}
			if (allvalid) {
				if(element_type == "password" && element_name == "password") password_first = element_value;
				if(element_type == "password" && element_name == "repeat") password_second = element_value;
			}
		}

// Check Textarea boxes ...
		if (element_type == "textarea" && theElement.getAttribute("required")=="required") {
			var checkstr = "abcdefghijklmnopqrstuvwxyzáéúíóàèùìòäëüïöãõñâêûîôåßçABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-/*,.'@~#%$£€!?µ°±(){}[ ]\n\r\f";
			if (element_value.length == 0) {
				alertstr += "U heeft '" + element_label + "' niet ingevuld.\n\n";
				allvalid = false;
			} else {
				var badchars = "";
				for (var j=0; j<element_value.length; j++) {
					for (var k=0; k<checkstr.length; k++) {
						if (element_value.charAt(j) == checkstr.charAt(k)) {
							break;
						}
					}
					if (k == checkstr.length) {
						for (var l=0; l<badchars.length; l++) {
							if (element_value.charAt(j) == badchars.charAt(l)) {
								break;
							}
						}

						if (l == badchars.length) {
							badchars += element_value.charAt(j);
						}
						allvalid = false;
					}
				}
				if (badchars != "") {
					alertstr += "In '" + element_label + "' komen de volgende onjuiste tekens voor:\n\t" + badchars + "\n\n";
				}
			}
			if (allvalid) {
				validstr += "In '" + element_label + "' voerde u in:\n\"" + element_value + "\".\n\n";
			}
		}

// Check Drop-down lists ...
		if (element_type.indexOf("select") > -1 && theElement.getAttribute("required")=="required") {
			var index = theElement.selectedIndex;
			if (index <= 0) {
				alertstr += "U dient een keuze te maken bij '" + element_label + "'.\n\n";
				allvalid = false;
			}
			if (allvalid) {
				validstr += "Uit '" + element_label + "' koos u optie \"" + theElement.options[index].value + "\".\n\n";
			}
		}

// Check Radio buttons ...
		if (element_type == "radio" && theElement.getAttribute("required")=="required") {
			if (theElement.checked == true) {
				radio_selected = true;
				validstr += "Uit '" + element_label + "' koos u optie \"" + element_value + "\".\n\n";
			}
		}

// Check Checkboxes ...
		if (element_type == "checkbox" && theElement.getAttribute("required")=="required") {
			if (theElement.checked == true) {
				checkbox_selected = true;
				validstr += "Uit '" + element_label + "' koos u optie \"" + element_value + "\".\n\n";
			}
                        else {
                            if(checkboxes_need != "") checkboxes_need += ", ";
                            checkboxes_need += element_label;
                        }
		}

// Check Buttons ...
		if (element_type == "button") {
			// Don't check buttons - use the onClick event to invoke functions.
		}

 	// .... End of loop through form elements ....
	}

	if (radio_selected == false) {
		alertstr += "Maakt u a.u.b. een keuze.\n\n";
		allvalid = false;
	}

	if (checkbox_selected == false) {
		alertstr += "Vinkt u a.u.b. "+checkboxes_need+" aan.\n\n";
		allvalid = false;
	}
        
        if(password_first != password_second)
        {
		alertstr += "De wachtwoorden stemmen niet overeen.\n\n";
		allvalid = false;
        }

// All elements checked - now determine if form is OK ...
	if (allvalid) {
		return true;
	} else {
		alert (alertstr);
		return false;
	}
}

function i18n($string) {
    return $string;
}

