/* copyright 2000-2005 Trezorix BV */

var requiredFields = new Array();
var cookieFields = new Array();
var formPosting = new Array();
var messageRequired = "leeg!";
var regExpNonEmpty = "\\S+";
var regExpEmail = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"
var regExpPostcode = "^[1-9][0-9]{3}\\s?[a-zA-Z]{2}$";

function GetCookie(sName) {
	var cookiePair;
	var cookieArray = unescape(document.cookie).split(";");
	//alert(document.cookie);
	for (var i = 0; i < cookieArray.length; i++) {
		cookiePair = cookieArray[i].split("=");
		iFound = cookiePair[0].indexOf(sName);
		if (iFound >= 0) {
			return (cookiePair[1]) ? cookiePair[1] : "";
		}
	}
	return "";
}

function SetCookie(sName, sValue, days) {
	var sExpires;
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		sExpires = "; expires="+date.toGMTString();
	}
	else {
		sExpires = "";
	}
	document.cookie = sName+"="+sValue+sExpires+"; path=/";

}

function checkForm(formName) {
	if (requiredFields[formName] == null) return true;

	if (!formPosting[formName]) {
		formPosting[formName] = true;
		check = true;
		var message = "";
		for (var i = 0; i < requiredFields[formName].length; i += 3) {
			if (document.forms[formName].elements[requiredFields[formName][i]] != null) {
				// test to see whether field is an array
				if (typeof(document.forms[formName].elements[requiredFields[formName][i]][0]) == "object") {
					teststring = "";
					var x = 0;
					while (typeof(document.forms[formName].elements[requiredFields[formName][i]][x]) == "object") {
						if (document.forms[formName].elements[requiredFields[formName][i]][x].checked) {
							teststring += document.forms[formName].elements[requiredFields[formName][i]][x].value;
						}
						x++;
					}
				}
				else {
					teststring = document.forms[formName].elements[requiredFields[formName][i]].value;
				}
				//alert(requiredFields[formName][i] + ": " + teststring + typeof(document.forms[formName].elements[requiredFields[formName][i]][0]));
				re = new RegExp(requiredFields[formName][i+1]);
				if (!re.test(teststring)) {
					check = false;
					document.forms[formName].elements[requiredFields[formName][i]].className = "input_error";
					message = (message == "")? "- " + requiredFields[formName][i+2]:message + "\n " + "- " + requiredFields[formName][i+2];
				}
				else {
					document.forms[formName].elements[requiredFields[formName][i]].className = "text";
				}
			}
		}
		if (message!="") alert(messageRequired + "\n "	+ message);
		if (!check) formPosting[formName] = false;
		return check;
	}
	else return false;

}

function appendInputElement(aId) {
	var i = 2;
  var prevId = "";
	var newId = aId + "_" + i.toString();
	while (document.getElementById(newId)) {
		i++;
		prevId = newId;
		newId = aId + "_" + i.toString();
	}
	
	var newNode = document.createElement("input");
	newNode.setAttribute("id", newId);
	newNode.setAttribute("name", newId);
	newNode.setAttribute("type", "text");
	newNode.setAttribute("size", "30");
	newNode.setAttribute("value", "");

	var precedingNode;
	if (prevId == "") {
		precedingNode = document.getElementById(aId);
	}
	else {
		precedingNode = document.getElementById(prevId);
	}
	precedingNode.parentNode.insertBefore(newNode, precedingNode.nextSibling);
	precedingNode.parentNode.insertBefore(document.createElement("br"), precedingNode.nextSibling);
}

function renameInputElements(aNode) {
	var currentId;
	var dollar; // pattern matching result
  var childNodes = aNode.childNodes;
  var newPostfix = "";
  var newId = "";
  var firstNewId = "";
	for (var i = 0; i < childNodes.length; i++) {
		if ((childNodes[i].nodeName.toLowerCase() == "input") || (childNodes[i].nodeName.toLowerCase() == "textarea")|| (childNodes[i].nodeName.toLowerCase() == "select")) {
		  currentId = childNodes[i].getAttribute("id");
		  dollar = currentId.match(/(.*?)(_([0-9]+))?$/);
	    //alert(currentId + " -> " + dollar[1] + " " + dollar[2] + " " + dollar[3]);
		  if (dollar[3]) {
		    newPostfix = Number(dollar[3])+1;
		    newId = dollar[1] + "_" + newPostfix;
		  	childNodes[i].setAttribute("id", newId);
		  	childNodes[i].setAttribute("name", newId);
		  	if (firstNewId == "") { 
		  		firstNewId = newId;
		  	}
		  }
		  else {
		    newPostfix = "2"
		    newId = dollar[1] + "_" + newPostfix;
				childNodes[i].setAttribute("id", newId);
		  	childNodes[i].setAttribute("name", newId);
		  	if (firstNewId == "") { 
		  		firstNewId = newId;
		  	}
			}
		}
		else if (childNodes[i].nodeName.toLowerCase() == "a") { 
			if (childNodes[i].getAttribute("class") == "addInput") {
				if (firstNewId != "") {
					childNodes[i].setAttribute("onclick", "appendAllInputElements('" + firstNewId + "')");
				}
			}
			if (childNodes[i].getAttribute("class") == "removeInput") {
				if (firstNewId != "") {
					childNodes[i].setAttribute("onclick", "removeAllInputElements('" + firstNewId + "')");
				}
			}
		}
		renameInputElements(childNodes[i]);
	}
}

function emptyInputElements(aNode) {
  var childNodes = aNode.childNodes;
	for (var i = 0; i < childNodes.length; i++) {
		if ((childNodes[i].nodeName.toLowerCase() == "input") || (childNodes[i].nodeName.toLowerCase() == "textarea")) {
		  //alert(childNodes[i].getAttribute("value"));
			childNodes[i].value = "";
		}
		emptyInputElements(childNodes[i]);
	}
}

function removePlusMin(aNode) {
  var childNodes = aNode.getElementsByTagName("a");
	for (var i = 0; i < childNodes.length; i++) {
			if (childNodes[i].className == "addInput") { //getAttribute("class") == "addInput") {
				childNodes[i].parentNode.removeChild(childNodes[i]);
			} 
	}
	for (var i = 0; i < childNodes.length; i++) {
			if (childNodes[i].className == "removeInput") {
				childNodes[i].parentNode.removeChild(childNodes[i]);
			}
	}
}

/*
	<a class="addInput" onclick="appendAllInputElements('Es.perspektieflink_3')">+</a>
	<a class="removeInput" onclick="removeAllInputElements('Es.perspektieflink')">-</a>
*/
function addPlusMin(aNode) {
  var inputChildNodes = aNode.getElementsByTagName("input");
  if (inputChildNodes.length == 0) {
		inputChildNodes = aNode.getElementsByTagName("textarea");
  }
  var inputChildNodeId = inputChildNodes[0].getAttribute("id");
  
  var newMinNode = document.createElement("a");
	newMinNode.className = "addInput"; 
	newMinNode.onclick = Function("appendAllInputElements('" + inputChildNodeId + "')");
	newMinNode.appendChild(document.createTextNode("+"));
	//aNode.insertBefore(newMinNode, inputChildNodes[0].nextSibling);
	
	if (inputChildNodeId.match(/_[0-9]+$/)) {
		var newPlusNode =	document.createElement("a");
		newPlusNode.className = "removeInput"; //setAttribute("class", "removeInput");
		newPlusNode.onclick = Function("removeAllInputElements('" + inputChildNodeId + "')");
		newPlusNode.appendChild(document.createTextNode("-"));
		//aNode.insertBefore(newPlusNode, inputChildNodes[0].nextSibling);	
		aNode.getElementsByTagName("div")[1].appendChild(newPlusNode);
	}

	aNode.getElementsByTagName("div")[1].appendChild(newMinNode);
}

// verdubbelt alle velden binnen de een li en voegt aan de naam _2 toe (of _3 bij een volgende
// verdubbeling etc.)
function appendAllInputElements(aId) {
	var inputNode = document.getElementById(aId);
	// bepaal bovenliggende <li>
	var liParentNode = inputNode.parentNode.parentNode;
  // verwijder plusje in oorspronkelijke node
  removePlusMin(liParentNode);
	// kopieer
  var newLiNode = liParentNode.cloneNode(true);  
  // maak leeg
  emptyInputElements(newLiNode);
  // hernummer
  renameInputElements(newLiNode);
	// voeg plus min in
	addPlusMin(newLiNode);
  // voeg in
  liParentNode.parentNode.insertBefore(newLiNode,liParentNode.nextSibling);
  // zet de onclick van de <a> elementen die een popup met te linken objecten oproepen
  updateAnchors();
}

// verwijdert alle velden binnen en inclusief een li
function removeAllInputElements(aId) {
	var inputNode = document.getElementById(aId);
	// bepaal bovenliggende <li>
	var liParentNode = inputNode.parentNode.parentNode;
	// verplaats de +- knoppen weer omhoog
	var prevSiblingLiNode = liParentNode.previousSibling;
	if (prevSiblingLiNode != null) {
		//alert(prevSiblingLiNode.nodeName.toLowerCase());
		if (prevSiblingLiNode.nodeName.toLowerCase() != 'li') {
			prevSiblingLiNode = liParentNode.previousSibling.previousSibling;
		}
	}
	addPlusMin(prevSiblingLiNode);
	// verwijder in rdf of sla tijdelijk op om na post te verwijderen???
	// ...
	// verwijder de node
  liParentNode.parentNode.removeChild(liParentNode);  
}


function togglePanel(id) {
	Element.toggle($(id));	
	var toggleIcon = 'toggle_'+id;
	if (Element.hasClassName(toggleIcon, 'down') == true ) {
		Element.removeClassName(toggleIcon, 'down');
	} else {
		Element.addClassName(toggleIcon, 'down');
	}
}

function openPrintWindow(pageId, altTemplate) {
	var features = "left=100,top=100,height=477,width=600,scrollbars=yes,menubar=yes,resizable=yes,toolbar=yes";
	var url = "/"+pageId+".aspx?altTemplate="+altTemplate;
	var name = "printWindow";
	top.window[name] = window.open(url, name, features);
	if (top.window[name] != null)
	{ 
		top.window[name].focus();
	}
}