// Sign in functions
function checkSignInForm() {
	var error = "ok";
	var email = document.getElementById("siemail").value;
	var error = checkFieldValue ("siemail", "e-mail", error);
	var pwd = document.getElementById("siwachtwoord").value;
	var error = checkFieldValue ("siwachtwoord", "wachtwoord", error);
	if (error!="ok") {
		var err_message = "De rood gemarkeerde velden zijn verplicht";
		clearElement ("sierror");
		var newText = create_text(err_message, parElement);
	}else{
		url = "script/signin.php?email=" + escape(email) + "&pwrd=" + escape(pwd)+"&check=0";
		createAjax (url);
	}
}

function updateSignin (root) {
	var response = root.getElementsByTagName("response");
	var err_code = getNodeValue(response.item(0), "err_code");
	var err_message = getNodeValue(response.item(0), "err_message");
	if (err_code==0){
		window.location.reload();
	}else{
		clearElement ("sierror");
		var parElement = document.getElementById("sierror");
		var newText = create_text(err_message, parElement);
	}
}

// Signout functions
function signOut () {
	var url = "script/signin.php?check=1";
	createAjax (url);
}

function updatesignOut (root) {
	var response = root.getElementsByTagName("response");
	var err_code = getNodeValue(response.item(0), "err_code");
		window.location.reload();
}

// Recover account details functions

function forgotSignIn () {
    //show_element ("lostloginform")
    clearElement ("lsierror");
    clearElement ("lsiresponse");
    toggle_elements("loginblock", "lostLoginblock");
}

function getSignIn() {
    var error = "ok";
    var email = document.getElementById("lostemail").value;
    var error = checkFieldValue ("lostemail", "e-mail", error);
    if (error!="ok") {
	var err_message = "De rood gemarkeerde velden zijn verplicht";
	clearElement ("lsierror");
	var newText = create_text(err_message, parElement);
    }else{
	var url = "script/forgotpassword.php?email=" + escape(email);
	createAjax (url);
    }
}

function updateLostSignIn (root) {
    response = root.getElementsByTagName("response");
    err_code = getNodeValue(response.item(0), "err_code");
    err_message = getNodeValue(response.item(0), "err_message");
	if (err_code==0){
	    hide_element ("lostsigninform")
	    clearElement ("lsierror");
	    clearElement ("lsiresponse");
	    newText = create_text(err_message, parElement);
	}else{
	    clearElement ("lsierror");
	    newText = create_text(err_message, parElement);
	}
}

// Interface functions

function create_retrieving_img(parentElement) {
	parElement = document.getElementById(parentElement);
	divElement = create_element_quick ("div", "retrieving", "retrieving", parElement)
	imgElement = create_img ("loading_img", "loading_img", "img/loading.gif", "25", "20", divElement);
	spElement = create_element_quick ("span", "legenda", "retrieving_text", divElement);
	newText = create_text("Retrieving data", spElement);
	divElement.style.textAlign="center";
}

function create_more (parentElement, caption, href) {
	parElement = document.getElementById(parentElement);
	divElement = create_element_quick ("div", "more", "more", parElement)
	aElement = create_a ("", "amore", href, "_self", divElement);
	newText = create_text(caption, aElement);
	divElement.style.textAlign="center";
}

// Ajax functions

function createAjax (url){
	var request = createRequest();
	request.open("GET", url, true);
	request.onreadystatechange = updateAjax;
	request.send(null);
}

function createRequest() {
	try {
		request = new XMLHttpRequest();
	} catch (trymicrosoft) {
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (othermicrosoft) {
			try {
				request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (failed) {
				request = false;
			}
		}
	}
	if (!request) {
		alert("Error initializing XMLHttpRequest!");
	}
	return request;
}

function updateAjax() {
	if (request.readyState == 4) {
		if (request.status == 200) {
			var root = request.responseXML.documentElement;
			response = root.getElementsByTagName("response");
			updatefunction = getNodeValue(response.item(0), "updatefunction");
			//alert (updatefunction);
			eval(updatefunction);
		}else{
			alert("status is " + request.status);
		}
	}
}

// Generic DOM functions

function getNodeValue(obj,tag) {
    return obj.getElementsByTagName(tag)[0].firstChild.nodeValue;
}

function toggle_elements (hideElementId, showElementId) {
    hide_element (hideElementId);
    show_element (showElementId);
}

function show_element (elementId) {
    Element = document.getElementById(elementId);
	Element.style.display="";
}

function hide_element (elementId) {
    Element = document.getElementById(elementId);
	Element.style.display="none";
}

function clearElement (elementId) {
    parElement = document.getElementById(elementId);
    removeChildElement (parElement, 0);
}
function removeChildElement (parElement, ElementIndex) {
    x = parElement.childNodes;
    if (x.length > 0) {
  		if (!(ElementIndex >= x.length)) {
			Element = x[ElementIndex];
      		Element.parentNode.removeChild(Element);
  		}
    }
}

function delete_element (elementId) {
    Element = document.getElementById(elementId);
    Element.parentNode.removeChild(Element); 
}

function create_element_quick (elementType, elementClass, elementId, parElement) {
    newElement = document.createElement(elementType);
	newElement.className = elementClass;
    newElement.setAttribute("class", elementClass);
    newElement.setAttribute("id", elementId);
	parElement.appendChild(newElement);
	return newElement;
}

function create_img (elementClass, elementId, src, w, h, parElement) {
    newElement = document.createElement("img");
	newElement.className = elementClass;
    newElement.setAttribute("class", elementClass);
    newElement.setAttribute("id", elementId);
    newElement.setAttribute("src", src);
    newElement.setAttribute("width", w);
    newElement.setAttribute("height", h);
    newElement.setAttribute("border", "0");
	parElement.appendChild(newElement);
	return newElement;
}

function create_text(elementText, parElement) {
    newElement = document.createTextNode(elementText);
	parElement.appendChild(newElement);
	return newElement;
}

function create_a (elementClass, elementId, url, target, parElement) {
	newElement = document.createElement("a");
	newElement.className = elementClass;
	newElement.setAttribute("class", elementClass);
	newElement.setAttribute("id", elementId);
	newElement.setAttribute("href", url);
	newElement.setAttribute("target", target);
	parElement.appendChild(newElement);
	return newElement;
}

function create_br (parElement) {
    newElement = document.createElement("br");
	parElement.appendChild(newElement);
	return newElement;
}

function create_option (optiontext, optionvalue, selected, parElement) {
    newElement = document.createElement("OPTION");
    newElement.setAttribute("text", optiontext);
    newElement.text = optiontext;
    newElement.value = optionvalue;
    newElement.selected = selected;
    browser=navigator.appName;
	if (browser=="Microsoft Internet Explorer") {
	   parElement.add(newElement);
    }else{
	   parElement.appendChild(newElement);
	}
	return newElement;
}

// Generic functions
function checkFieldValue (fieldID, defValue, err){
        var fieldValue = document.getElementById(fieldID).value;
	if (fieldValue==defValue){
		 document.getElementById(fieldID).style.borderColor= "#e45f25";
		 err = "nok";
	 }else{
		 document.getElementById(fieldID).style.borderColor= "#f2ba25";
		 if (!err == "nok") {
			err = "ok"
		 }	
	 }
	return (err);
}

function checkInputValue (value, label, err) {
	if (value==""){
	   document.getElementById(label).style.borderColor= "#e45f25";
	   err = "nok";
	}else{
	   document.getElementById(label).style.borderColor= "#f2ba25";
	   if (!err == "nok") {
	   	  err = "ok"
       }	
	}
	//alert(err);
	return (err);
}

function findPosition( Element) {
  if( typeof( Element.offsetParent ) != 'undefined' ) {
    for( var posX = 0, posY = 0; Element; Element = Element.offsetParent ) {
      posX += Element.offsetLeft;
      posY += Element.offsetTop;
    }
    return [ posX, posY ];
  } else {
    return [ Element.x, Element.y ];
  }
}

function isEven (i){
	if(i % 2 == 0) { // It's even
		return 1;
	}else{ // It's odd
		return 0;
	}

}
