// verbeterde functie om eerste form-element te selecteren indien aanwezig
function focusFirst() {
	if ((typeof(document.forms[0]) != "undefined")) {
		if ((typeof(document.forms[0].elements[0]) != "undefined")) {
			document.forms[0].elements[0].focus();
		}
	}
}

// verbeterde modaldialog-functie
function openDialog(paginaURL, w, h) {
	if (window.showModalDialog) {
		window.showModalDialog(paginaURL,"Dialog","dialogWidth:"+w+"px;dialogHeight:"+h+"px;status:no;help:no;resizable:no");
	} else {
		window.open(paginaURL,"Dialog","width="+w+",height="+h+",toolbar=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,modal=yes");
	}
}

//functie om pagina te openen via javascript
function go(paginaURL) {
	parent.location.href = paginaURL;
}

//functie om pagina te bladeren
function goPage(pageNum, oldQueryString) {

	//TODO: als oldQueryString een iPage bevat dan deze vervangen en rest van querystring behouden (RequestColumn enzo)
	parent.location.href = '?iPage=' + pageNum
}

//functie om functie uit te voeren na laden van pagina
function addLoadEvent(func) {
	var oldonload = window.onload;

	if (typeof window.onload != "function") {
		window.onload = func;
	} else {
		window.onload = function () {
			oldonload();
			func();
		}
	}
}


//Selecteer checkbox (toggle)
function selectBox(theId) {
	var box = document.getElementById("checkBox"+theId);
	if (box.checked) {
		box.checked = false;
	} else {
		box.checked = true;
	}

}

//Selecteer rij, deselecteer een rij
function selectRow(theId,newClass) {

	if(document.getElementById) {
		var row = document.getElementById("checkRow"+theId);
		var box = document.getElementById("checkBox"+theId);

		if(box.checked) {
			row.className = "row_selected";
			row.onmouseout = "";
			row.onmouseover = "";
			}
		else {
			row.className = newClass;
			row.onmouseout = function(){row.className=''+newClass+'';};
			row.onmouseover = function(){row.className='over';};
			}
	}
}

function btnOver(e) {
	if (!e)
	var e=window.event;
	var S=e.srcElement;
	while (S.tagName!="TD")
	{S=S.parentElement;}
	S.className="btnO";
}

function btnOut(active,e) {
	if (!e)
	var e=window.event;
	var S=e.srcElement;
	while (S.tagName!="TD")
	{S=S.parentElement;}
	(active==true) ? S.className="btnA" : S.className="btn"
}

function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

function trim(str)
{
   return str.replace(/^\s*|\s*$/g,"");
}

/** XHConn - Simple XMLHTTP Interface - bfults@gmail.com - 2005-04-08        **
 ** Code licensed under Creative Commons Attribution-ShareAlike License      **
 ** http://creativecommons.org/licenses/by-sa/2.0/                           **/

function XHConn() {
  var xmlhttp, bComplete = false;
  try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
  catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
  catch (e) { try { xmlhttp = new XMLHttpRequest(); }
  catch (e) { xmlhttp = false; }}}
  if (!xmlhttp) return null;
  this.connect = function(sURL, sMethod, sVars, fnDone)
  {
    if (!xmlhttp) return false;
    bComplete = false;
    sMethod = sMethod.toUpperCase();

    try {
      if (sMethod == "GET")
      {
        xmlhttp.open(sMethod, sURL+"?"+sVars, true);
        sVars = "";
      }
      else
      {
        xmlhttp.open(sMethod, sURL, true);
        xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
        xmlhttp.setRequestHeader("Content-Type",
          "application/x-www-form-urlencoded");
      }
      xmlhttp.onreadystatechange = function(){
        if (xmlhttp.readyState == 4 && !bComplete)
        {
          bComplete = true;
          //for debugging perposes alert(xmlhttp.responseText);
          //alert(xmlhttp.responseText);
          fnDone(xmlhttp);
        }};
      xmlhttp.send(sVars);
    }
    catch(z) { return false; }
    return true;
  };
  return this;
}

// code to keep-alive session
function callKeepSessionAlive() {
	var objAlive = new XHConn();
	if (objAlive) {
		var rndNr=Math.floor(Math.random() * 99999);
		objAlive.connect("blank.asp?rnd="+rndNr, "GET");
	}
}

function confirmExit(){
	if (needToConfirm) return "Als u deze pagina verlaat worden de gegevens niet opgeslagen. Weet u zeker dat u deze pagina wilt verlaten?";
}

function validate_email(mailAdr) {
	apos=mailAdr.indexOf("@");
	dotpos=mailAdr.lastIndexOf(".");
	if (apos<1||dotpos-apos<2) {
		return false;
	} else {
		return true;
	}
}

	function sendEmailFunc() {
		resultBox.innerHTML = "Een ogenblik aub...";
		var urlMail = document.sendMail.mail.value;
		if (!validate_email(urlMail)) {
			resultBox.innerHTML = urlMail + " is <strong>geen</strong> geldig e-mailadres. Vul een geldig e-mailadres in en probeert u het opnieuw.";

		} else {
			var urlData = document.sendMail.data.value;
			var urlFname = document.sendMail.fname.value;
			var urlNiveau = document.sendMail.niveau.value;

			// convert (&, +, =) to string equivs. Needed so URL encoded POST won't choke.
			urlMail = escapeChars(urlMail);
			urlData = escapeChars(urlData);
			urlFname = escapeChars(urlFname);
			urlNiveau = escapeChars(urlNiveau);

			var posData = "mail="+urlMail+"&data="+urlData+"&fname="+urlFname+"&niveau="+urlNiveau;
			var objAjax = new XHConn();

			if (!objAjax) {
				resultBox.innerHTML = "Uw browser is helaas niet geschikt voor het versturen van e-mail.";
				return false;
			} else {
				objAjax.connect("sendMail.asp?ajax=true", "POST", posData, isDone);
			}
		}
	}

	function escapeChars(txt) {
		txt = txt.replace(/\s+/g,"**_**");
		txt = txt.replace(/&/g,"**am**");
		txt = txt.replace(/=/g,"**eq**");
		txt = txt.replace(/\+/g,"**pl**");
		return txt;
	}

	function isDone(returnedDataObject) {
		if (grabPosXML("statusBack", returnedDataObject)=="OK") {
			resultBox.innerHTML = "Uw opdracht is verwerkt, binnen enkele minuten kunt u de mail verwachten.";
		} else {
			resultBox.innerHTML = "Er is een fout met het versturen van mail. Probeert u het later nogmaals. <br>Foutmelding " + grabPosXML("statusBack", returnedDataObject);
		}
	}


	function grabPosXML (tagName, ajaxObject) {
		return ajaxObject.responseXML.documentElement.getElementsByTagName(tagName)[0].childNodes[0].nodeValue;
	}



function toggleDescriptions() {
	var arrDivs = document.getElementsByTagName('div');
	for(i = 0 ; i < arrDivs.length ; i++) {
		if (arrDivs[ i ].id.match("hidden_desc_")) {
			if (arrDivs[ i ].style.display == 'none') {
				arrDivs[ i ].style.display = 'block'
			} else {
				arrDivs[ i ].style.display = 'none'
			}
		}
		if (arrDivs[ i ].id.match("rowHolder_")) {
			if (arrDivs[ i ].style.height == "12px") {
				arrDivs[ i ].style.height = "";
			} else {
				arrDivs[ i ].style.height = "12px";
			}
		}
	}

}

function toggleInfo(idAdd) {
	var info = document.getElementById("knopUitleg"+idAdd);
	var btn  = document.getElementById("close_btn"+idAdd);
	if (info.style.display == 'none') {
		info.style.display = 'block';
		btn.innerHTML = '_';
		btn.style.fontWeight = 'bold';
	} else {
		info.style.display = 'none';
		btn.innerHTML = '&dArr;';
		btn.style.fontWeight = 'normal';
	}
}
