var dbclk = false; // ten behoeve van het afvangen van dubbelklik

var errorCount = 0
var lastAjaxData = '';

function reportError(msg,url,l){
	if(errorCount < 5){
		var sError = ' Msg: ' + msg + '\n Url: ' + url + '\n Line: ' + l + '\n Mod: ' + MOD + '\n Actie: ' + ACTIE + '\n ID: ' + ID + '\n Laatste ajax data: ' + lastAjaxData ;
		sError += '\nControleer het bestaan van :'  + "/javascript/" + MOD + ".js";
		sError += "\n\nBrowser Name: " + navigator.appName + " :: " + navigator.appVersion;
		sError += "\nCookies Enabled: " + navigator.cookieEnabled;
		sError += "\nPlatform: " + navigator.platform;
		sError += "\n\n";
		if(LIFE_MODE != 1){
			alert(sError);
		}
		errorCount++;
		x_debug(sError, function (){});
	}
}
window.onerror = reportError;

/**
 ** return true
 ** $param1 = filename
 ** $param2 = type (default javascript);
 ** $param3 = languae (default javascript)
 ** @desc appends a javascript to de header
 **/

if (navigator.appName == 'Netscape'){
 	var browser = "FF";
}else{
	var browser = "IE"	
}
/*
function include(file, type, language) {

   if (!file) return false;

   var type = (type) ? type : 'text/javascript';
   var language = (language) ? language : 'javascript';

   var tag = document.createElement('script');

   tag.setAttribute('src',file);
   tag.setAttribute('type',type);
   tag.setAttribute('language',language);

   document.getElementsByTagName('head')[0].appendChild(tag);

   return true;
}*/

/**
 ** Return true als een string voorkomt in een array
 **
 ** $param1 = string
 ** $param2 = array om te doorzoeken
 **/

function in_array(stringToSearch, arrayToSearch) {
	for (var s = 0; s < arrayToSearch.length; s++) {
		var thisEntry = arrayToSearch[s].toString();
		if (thisEntry == stringToSearch) {
				return true;
		}
	}
	return false;
}

/**
 ** Set the title van een scherm
 **
 ** $param1 = string
 **/
function setTitle(x) {
	document.title = x
}

/**
 ** Geef als parameter een string mee en geeft eerste hoofdletter een hoofdletter
 ** @para 1 = string
 ** @return = string
 **/
 function ucFirst(x) {
   var firstLetter = x.substr(0,1).toUpperCase()
   return firstLetter + x.substr(1,x.length);
}

function header(x) {
	window.location = x;
}

function refresh(){
	loc = document.URL.split('#');
	window.location = loc[0] ; 
}

function getEl(x) {
	if(document.getElementById(x) != undefined)
		return document.getElementById(x);
	else
		return false;
}

function scrollWindow(y) {
	window.scrollTo(0,y);
	//setTimeout('scrollWindow()', 1000);
}

function getDateTime() {
	timeObject = new Date();
  	var terugString = 'Tijd: '+ timeObject.getHours() +':'+ timeObject.getMinutes() +':'+ timeObject.getSeconds() +'<br />';
	return terugString;
}

function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}
var sInhoud;

function maxLength(oTxt, iMax, sOverDiv, event) {
	iLength = oTxt.value.length;
	iOver = iMax - iLength;
	getEl(sOverDiv).innerHTML = iOver;
	if(iOver <= 10) {
		getEl(sOverDiv).style.backgroundColor = 'red';	
	} else {
		getEl(sOverDiv).style.backgroundColor = '';
	}
	if(iLength > iMax)  {
		getEl(sOverDiv).innerHTML = '0';
		oTxt.value = oTxt.value.substring(0, iMax);
		return false;
	} else {
		return true;
	}
}

function checkEmail(str) {
	str = trim(str);
    var at="@"
    var dot="."
    var lat=str.indexOf(at)
    var lstr=str.length
    var ldot=str.lastIndexOf(dot)
    
    if (str.indexOf(at)==-1)
       return false
    if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr)
       return false
    if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr)
        return false
    if (str.indexOf(at,(lat+1))!=-1)
        return false
    if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot)
        return false
    if (str.indexOf(dot,(lat+2))==-1)
        return false
    if ((ldot + 2) >= lstr)
        return false
    if ((ldot + 6) <= lstr)
        return false
    if (str.indexOf(" ")!=-1)
        return false
   	return true
}

function keyCancel(e, keyIn){
	var eInput = e || window.event;
	var key=eInput.keyCode || eInput.which;	
	//alert(key);
	return key != keyIn;
}

function checkPostcode(sP){
	if(sP.length != 6)
		return false;
	if(!is_numeric(sP.substring(0,4)))
		return false;
	if(!is_alpha(sP.substring(4,6)))
		return false;
	return true;
}

function checkUrl(url, http, o) { 
    var v = new RegExp(); 
    v.compile("^[A-Za-z]+://[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$"); 
    if(http != true)
    	return v.test(url);
    else if(v.test(url))
    	return true;
    url = "http://" + url;
    if(v.test(url)){
   		if(o != undefined)
   			o.value = url;
   		return true;
   	}
   	return false;
} 


function is_alpha(str){
    return str == str.replace(/[_0-9]*/gi,"");
} 	

	var iCountDown=0;
	var iCountMax = 10;
	var sCountUrl=false;
	function initCountDown(iAantal, sUrl) {
		iCountMax = iAantal;
		sCountUrl = sUrl;
		setTimeout("countDown()", 1000);
	}
	
	function countDown() {
		if(iCountDown == iCountMax) {
			location.href=sCountUrl;
		}
		iCountDown++;
		setTimeout("countDown()", 1000);
	}
	
	var iPrefKey = 0;
	
	function validateInt(e, oField) {
		var eInput = e || window.event;
		var iTempPrefKey = iPrefKey
		var iInputLengt = oField.value.length;
		var aAllowed = new Array(48,49,50,51,52,53,54,55,56,57,95,96,97,98,99,100,101,102,103,104,105,106);
		// delete, tab, pijltjes enz
		var aControl = new Array('null',0,8,9,13,16,17,18,27,35,36,37,38,39,40,46,116); 
		var key=eInput.keyCode || eInput.which;	
	//alert(key);
	  	/** 
	  	 ** Keys als control, backspace en delete toelaten
	  	 **
	  	 **/
	  	iPrefKey = key
		if (in_array(key, aControl)) {
			 return true;
		} else if (in_array(key, aAllowed)) {
			return true;
		} else if (iTempPrefKey == 17 && (key == 86 || key == 67 || key == 88)){
			return true;
		}
		return false;
	}
	
	function validateNum(e, oField) {
		var eInput = e || window.event;
		var iTempPrefKey = iPrefKey
		
		var aAllowed = new Array(48,49,50,51,52,53,54,55,56,57,95,96,97,98,99,100,101,102,103,104,105,106,110,188,190);
		// delete, tab, pijltjes enz
		var aControl = new Array('null',0,8,9,13,16,17,18,27,35,36,37,38,39,40,46,116); 
	
		var key=eInput.keyCode || eInput.which;
		//alert(key);
		iPrefKey = key
		if (in_array(key, aControl)) {
			return true;
		} else if (in_array(key, aAllowed)) {
			if(key == 188){
				if(oField.value.indexOf('.') < 0)
					oField.value = oField.value + '.';
				return false;
			}
	
			if(key == 190 || key == 110)
				return (oField.value.indexOf('.') >= 0)? false : true;
			return true;
		} else if (iTempPrefKey == 17 && (key == 86 || key == 67 || key == 88)){
			return true;
		}
		return false;
	}
	
	function validateAlpha(e, oField) {
		/**
		 ** Lengte van de input
		 **/
		
		var eInput = e || window.event;
		iInputLengt = oField.value.length;
		aAllowed = new Array(9,16,32,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,90,188,190,192,222); 
		// delete, tab, pijltjes enz
		aControl = new Array('null',0,8,9,13,16,17,18,27,35,36,37,38,39,40,46,116);
		/**
		 ** Zet de input van je event in een var genaamd keyVar
		 **/
		var key=eInput.keyCode || eInput.which;
	
	  	/** 
	  	 ** Keys als control, backspace en delete toelaten
	  	 **
	  	 **/
		if (in_array(key, aControl)) {
			 return true;
		} else if (in_array(key, aAllowed)) {
			return true;
		}
		return false;
	}

	
function var_dump(obj) {
   if(typeof obj == "object") {
      return "Type: "+typeof(obj)+((obj.constructor) ? "\nConstructor: "+obj.constructor : "")+"\nValue: " + obj;
   } else {
      return "Type: "+typeof(obj)+"\nValue: "+obj;
   }
}//end function var_dump

	
function trim(value) {
	value = value.replace(/^\s+/,'');
	value = value.replace(/\s+$/,'');
	return value;
}

function rand(n){
	return ( Math.floor ( Math.random ( ) * n + 1 ) );
}

function debug(x){
	x_debug(x, function(){});
}	

function urlencode (str) {
	str = escape(str);
	return str.replace(/[*+\/@]|%20/g,
		function (s) {
			switch (s) {
				case "*": s = "%2A"; break;
				case "+": s = "%2B"; break;
				case "/": s = "%2F"; break;
				case "@": s = "%40"; break;
				case "%20": s = "+"; break;
			}
			return s;
		}
	);
}

function validateAlphaInput(x) {
	var re	   = new RegExp("[^A-Za-z0-9]", "g");
	x.value = x.value.replace(re, "");
	return;
}

function setFlashVar(sMovie, sFlashVar, vValue){
	if(window.document[sMovie])
		window.document[sMovie].SetVariable(sFlashVar, vValue);
	if(document.sMovie) 
		document.sMovie.SetVariable(sFlashVar, vValue);
}

function copy_clip(meintext){

	if (browser == "IE") {
		return window.clipboardData.setData("Text", meintext);
	} else if (browser == "FF") { 
		// This is importent but it's not noted anywhere
		try{
			netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
		}catch(e){
			return false;
		}
		   
		// create interface to the clipboard
		var clip = Components.classes['@mozilla.org/widget/clipboard;[[[[1]]]]'].createInstance(Components.interfaces.nsIClipboard);
		if (!clip) return false;
		   
		// create a transferable
		var trans = Components.classes['@mozilla.org/widget/transferable;[[[[1]]]]'].createInstance(Components.interfaces.nsITransferable);
		if (!trans) return false;
		   
		// specify the data we wish to handle. Plaintext in this case.
		trans.addDataFlavor('text/unicode');
		   
		// To get the data from the transferable we need two new objects
		var str = new Object();
		var len = new Object();
		   
		var str = Components.classes["@mozilla.org/supports-string;[[[[1]]]]"].createInstance(Components.interfaces.nsISupportsString);
		var copytext=meintext;
		str.data=copytext;
		trans.setTransferData("text/unicode",str,copytext.length*[[[[2]]]]);
		var clipid=Components.interfaces.nsIClipboard;
		   
		if (!clip) return false;
		   
		clip.setData(trans,null,clipid.kGlobalClipboard);
	}
	return true;
}

function changeSelect(oIn) {
	if(oIn.checked) {
		oIn.checked=false;
		return false;
	}
	oIn.checked=true;
	return false;
}

function is_numeric(iIn){
	if ((isNaN(iIn)) || (iIn.length == 0))
    	return false;
	return true;
}

function hide(sId){
	getEl(sId).style.visibility = 'hidden';
	getEl(sId).style.display = 'none';
}

function show(sId){
	getEl(sId).style.visibility = 'visible';
	getEl(sId).style.display = '';
}

function getElsByName(namen, type){
	var oEls = document.getElementsByTagName(type)
	var oR = new Array();
	var y = 0;
	for(i=0; i < oEls.length; i++) {
		if(oEls[i].name == namen){
			oR[y] = oEls[i];
			y++;
		}
	}
	return oR;
}


// outlinks toevoegen aan a href	
function bindOut(){
	var oOut = getElsByName('out', 'a');
	for(x in oOut){
		oOut[x].onclick = function(){x_out(this.href, function(){})};
		oOut[x].target = "_blank";
	}
}

/**
 * voor het wisselen tussen select en inputfield
 */

var oSelectTemp;
function handleSelectToInput(oSelect, maxL){
	if(oSelect.value == "new"){
		oSelectTemp = oSelect.cloneNode(true);
		var newInpt = document.createElement("INPUT"); 

		oSelect.parentNode.appendChild(newInpt);
		if(maxL != undefined)
			newInpt.maxLength = maxL;
		
		newInpt.type = "text"
		newInpt.value = "";
		newInpt.onblur = function(){handleInputToSelect(this)};
		newInpt.focus();
		oSelect.parentNode.removeChild(oSelect);
	}
	return false;
}

function handleInputToSelect(oSelect){
	oSelect.parentNode.appendChild(oSelectTemp);
			
	if(oSelect.value != ""){
		var newOpt = document.createElement("OPTION"); 
		oSelectTemp.options.add(newOpt);
		newOpt.text = oSelect.value;
		newOpt.value = oSelect.value;
		newOpt.selected = true;
		
		if( browser == "FF") {
		  	var evObj = document.createEvent('MouseEvents');
		  	evObj.initEvent( 'onchange', true, false );
		  	oSelectTemp.dispatchEvent(evObj);
		} else if( document.createEventObject ) {
		  	oSelectTemp.fireEvent('onchange');
		}
	}
	oSelect.parentNode.removeChild(oSelect);
}

function windowOpener(sUrl, sName, sParam){
	var win = false;
	if(sName == false){
		var tijd_datum = new Date();
		sName =+ tijd_datum.getHours();
		sName =+ tijd_datum.getMinutes();
		sName =+ tijd_datum.getSeconds();
	}
	
	win = window.open(sUrl, sName, sParam);
	
	x_out(sUrl, function(){})
	
	if(win){
		win.focus();
		return win;
	}
	alert("De applicatie kon een popupscherm niet openen, mogelijk maakt u gebruik van een popupblocker. Schakel deze uit voor dit domein.");
	return win;
}

function mailOpener(sMail){
	window.open("mailto:" + sMail, '', '');
	x_out("mailto:" + sMail, function(){})
}

function windowModalDialogShower(sUrl, sName, sParam){
	var win = false;

	try{
		win = window.showModalDialog(sUrl, sName, sParam);
	}catch(e){	
		alert("De applicatie kon een popupscherm niet openen, mogelijk maakt u gebruik van een popupblocker. Schakel deze uit voor dit domein.");
	}
	return win;
}

function findPageHeight(){
	var winHeight, d=document;
	if (typeof window.innerWidth!='undefined') {
		winHeight = window.innerHeight;
	} else if ( d.documentElement
			&& typeof d.documentElement.clientWidth!='undefined'
			&& d.documentElement.clientWidth!=0 ) {
		winHeight = d.documentElement.clientHeight;
	} else if ( d.body
			&& typeof d.body.clientWidth!='undefined') {
		winHeight = d.body.clientHeight;
	}
	return winHeight;
}

function findPageWidth(){
	var winWidth, d=document;
	if (typeof window.innerWidth!='undefined') {
		winWidth = window.innerWidth;
	} else if ( d.documentElement
			&& typeof d.documentElement.clientWidth!='undefined'
			&& d.documentElement.clientWidth!=0 ) {
		winWidth = d.documentElement.clientWidth;
	} else if ( d.body
			&& typeof d.body.clientWidth!='undefined') {
		winWidth = d.body.clientWidth;
	}
	return winWidth;
}

function elf_proef(bankrekeningnummer) {
	if(bankrekeningnummer.indexOf('p') == 0){
		return true;
	}
	bankrekeningnummer=bankrekeningnummer.replace(/\./gi, "");
	if(!is_numeric(bankrekeningnummer))
		return false;
	aantal_tekens=bankrekeningnummer.length;
	var som=0;
	for (i=1; i<10; i++) {
		getal=bankrekeningnummer.charAt(i-1);
		som+=getal*(10-i);
	} 
	if (som % 11==0 && aantal_tekens==9) {
		return true
	} else {
		return false
	}
}

function getSelectionStart(o) {
	if (o.createTextRange) {
		var r = document.selection.createRange().duplicate()
		r.moveEnd('character', o.value.length)
		if (r.text == '') return o.value.length
		return o.value.lastIndexOf(r.text)
	} else return o.selectionStart
}

function getSelectionEnd(o) {
	if (o.createTextRange) {
		var r = document.selection.createRange().duplicate()
		r.moveStart('character', -o.value.length)
		return r.text.length
	} else return o.selectionEnd
}

if (browser != "IE")
	window.addEventListener("load", function(){bindOut()}, false);
else
	window.attachEvent("onload", function(){bindOut()});
