function whichBrowser() {
	var agt=navigator.userAgent.toLowerCase();
	if (agt.indexOf("opera") != -1) return 'Opera';
	if (agt.indexOf("staroffice") != -1) return 'Star Office';
	if (agt.indexOf("webtv") != -1) return 'WebTV';
	if (agt.indexOf("beonex") != -1) return 'Beonex';
	if (agt.indexOf("chimera") != -1) return 'Chimera';
	if (agt.indexOf("netpositive") != -1) return 'NetPositive';
	if (agt.indexOf("phoenix") != -1) return 'Phoenix';
	if (agt.indexOf("firefox") != -1) return 'Firefox';
	if (agt.indexOf("safari") != -1) return 'Safari';
	if (agt.indexOf("skipstone") != -1) return 'SkipStone';
	if (agt.indexOf("msie") != -1) return 'Internet Explorer';
	if (agt.indexOf("netscape") != -1) return 'Netscape';
	if (agt.indexOf("mozilla/5.0") != -1) return 'Mozilla';
	if (agt.indexOf('\/') != -1) {
		if (agt.substr(0,agt.indexOf('\/')) != 'mozilla') {
			return navigator.userAgent.substr(0,agt.indexOf('\/'));}
			else return 'Netscape';} else if (agt.indexOf(' ') != -1)
			return navigator.userAgent.substr(0,agt.indexOf(' '));
			else return navigator.userAgent;
}


function isArray(obj) {
	//returns true is it is an array
	if (obj.constructor.toString().indexOf("Array") == -1)
	return false;
	else
	return true;
}

function nav_menu_hilite(item,color) {
	item.style.backgroundColor = color;
	item.style.cursor='pointer';
}

function nav_menu_unhilite(item,color) {
	item.style.backgroundColor = color
}

function centerWindow(theURL,winName,features, myWidth, myHeight, isCenter) {
	if(document.all && navigator.appVersion.indexOf('Mac')!=-1){ myWidth -= 15; }

	if(window.screen)if(isCenter)if(isCenter=="true"){
		var myLeft = (screen.width-myWidth)/2;
		var myTop = (screen.height-myHeight)/2;
		features+=(features!='')?',':'';
		features+=',left='+myLeft+',top='+myTop;
	}
	return window.open(theURL,winName,features+((features!='')?',':'')+'width='+myWidth+',height='+myHeight);
}



function PadLeft(s,len,ch){
	var h=new String(s);
	if(ch==null)ch="0";
	while(h.length<len)h=ch+h;
	return h;
}
function PadRight(s,len,ch){
	var h=new String(s);
	if(ch==null)ch="0";
	while(h.length<len)h+=ch;
	return h;
}
function isValidEmail(str) {
	var emailRe = new RegExp("^\\s*[\\w\\.\\-]+\\@([\\w\\-]+\\.)+[\\w\\-]+\\s*$");
	return str.match(emailRe);
}

function isValidPhone(str) {
	var phoneRe = new RegExp("^[-\\d]+$");
	return ( str.match(phoneRe) && str.length > 9);
}


function Replace(s,replacethis,withthis){
	var a=s.split(replacethis);
	return a.join(withthis);
}


function StripHTML(s){
	if(s==null)return "";
	return  s.replace(/(<([^>]+)>)/ig,"");
	/*
	var j=0;
	var h="";

	for(var i=0;i<s.length;i++){
	var ch=s.charAt(i);


	if(ch==">")j--;
	else if(ch=="\<")j++;
	else if(j==0) h+=ch;
	}

	return Trim(h);
	*/
}

function SelectSelect(l,val){
	for(var i=0;i<l.options.length;i++){
		if(l.options[i]==val){
			l.selectedIndex=i;
			l.options[i].selected=true;
			return l.selectedIndex;
		}
	}
	l.selectedIndex=-1;
	return l.selectedIndex;
}

function SelectTree(l,val){
	for(var i=0;i<l.options.length;i++){
		if(l.options[i].value==val){
			l.selectedIndex=i;
			return l.selectedIndex;
		}
	}
	l.selectedIndex=-1;
	return l.selectedIndex;
}

function Trim(h){
	var s=new String(h);
	while((s.indexOf("&nbsp;")==0))s=s.substring(6,s.length);
	while((s.indexOf(" ")==0))s=s.substring(1,s.length);
	while((s.substring(s.length-1,s.length)==" "))s=s.substring(0,s.length-1);
	return s;
}

function Left(h,len){
	var s=new String(h);
	if(len<0)len+=s.length;

	return s.substring(0,len);
}

function Right(h,len){
	var s=new String(h);
	if(len<0)len+=s.length;
	return s.substring(s.length-len,s.length);
}

function ExtractName(h){ //
	var s=new String(h);
	var i=s.lastIndexOf("ID");
	if(i>0)return s.substring(0,i);
	else return s;
}

function AllowThese(val,validchars){
	var h="";
	validchars=validchars.toUpperCase();
	val=val.toUpperCase();
	for(var i=0;i<val.length;i++) if(validchars.indexOf(val.charAt(i))>=0)h+=val.charAt(i);
	return h;
}

function SafeInt(val){
	return parseInt(AllowThese(new String(val),'0123456789-+.'));
}

function SQLExecute(sql,whendone){

	if(window.ActiveXObject)var http = new ActiveXObject("Microsoft.XMLHTTP");
	if(window.XMLHttpRequest)var http = new XMLHttpRequest();
	var url="return.php?sql="+escape(sql);
	if(whendone){
		http.onreadystatechange = function () {
			if(http.readyState==4)eval(whendone+";");
		}
	}
	http.open("GET",url,true);
	http.send(null);
}

function Rekeningnummer(val){
	/*
	We gaan hier de 11-proef uitvoeren op Bankrekeningnummer 12345678?.
	1e cijfer Bankrekeningnummer = 1      9 * 1 =   9
	2e cijfer Bankrekeningnummer = 2      8 * 2 =  16
	3e cijfer Bankrekeningnummer = 3      7 * 3 =  21
	4e cijfer Bankrekeningnummer = 4      6 * 4 =  24
	5e cijfer Bankrekeningnummer = 5      5 * 5 =  25
	6e cijfer Bankrekeningnummer = 6      4 * 6 =  24
	7e cijfer Bankrekeningnummer = 7      3 * 7 =  21
	8e cijfer Bankrekeningnummer = 8      2 * 8 =  16
	9e cijfer (berekend)         = 9      1 * 9 =   9
	opgeteld:   165

	Omdat 165 deelbaar is door 11 is de kans groot
	dat Bankrekeningnummer 123456789 klopt (165/11=15 rest 0)
	(Cijfer 9 is berekend om het sommetje te laten kloppen)
	*/

	if(typeof(val)=='object')val=val.value;
	var s=new String(Trim(val));
	var som=0;

	s=s.toUpperCase();
	if(s.charAt(0)=='P'){
		s=s.replace(/\D/, "");	// verwijder alle tekens die geen cijfers zijn
		return((s.length>=3)&&(s.length<=7));  // Geen idee hoe je postbank nummers anders checkt
	}


	if(s.length!=9)return false;

	for (i=1; i<10; i++)som+=s.charAt(i-1)*(10-i);  // loop door de 9 cijfers met de 11 proef formule
	return (som % 11==0);

}


function Sofinummer(val){
	/*
	We gaan hier de 11-proef uitvoeren op Sofinummer 12345678?.
	1e cijfer Sofinummer = 1      9 * 1 =   9
	2e cijfer Sofinummer = 2      8 * 2 =  16
	3e cijfer Sofinummer = 3      7 * 3 =  21
	4e cijfer Sofinummer = 4      6 * 4 =  24
	5e cijfer Sofinummer = 5      5 * 5 =  25
	6e cijfer Sofinummer = 6      4 * 6 =  24
	7e cijfer Sofinummer = 7      3 * 7 =  21
	8e cijfer Sofinummer = 8      2 * 8 =  16
	9e cijfer (berekend) = 2     -1 * 2 =  -2
	opgeteld:   154

	Omdat 154 deelbaar is door 11 is de kans groot
	dat Sofinummer 123456782 klopt (154/11=14 rest 0)
	(Cijfer 9 is berekend om het sommetje te laten kloppen)
	
	*/

	if(typeof(val)=='object')val=val.value;
	
	var s=new String(Trim(val));
	var som=0;

	if(s.length!=9)return false;

	//	s=s.replace(/\D/, "");	// verwijder alle tekens die geen cijfers zijn
	for (i=1; i<10; i++) som+=s.charAt(i-1)*((i==9)?(-1):(10-i));
	return (som % 11==0);
}

function BTWnummer(val){
	if(typeof(val)=='object')val=val.value;
	
	val=Replace(Replace(val,'.', ''),' ', '');
	var url="http://isvat.appspot.com/"+val.substr(0,2)+"/"+val.substr(2)+"/";
	var http = new XMLHttpRequest();
	var result=false;
	
	http.onreadystatechange=function(){if(http.readyState==4)result=http.responseText=="true";}
	http.open("GET",url,false);
	http.send(null);
	
	return result;
}
function indexOf(a,s){
	for(var i=0;i<a.length;i++)if(a[i]==s)return i;
	return -1;
}

function writeCookie(name,value,days) {
	return createCookie(name,value,days);
}		
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function StrAdd(s,val,glue){
	if(val){
		if(s!="")s+=glue+val;
		else s=val;
	}
	return s;
}

function StrToFloat(s){
  return parseFloat(Replace(Replace(Replace(s,",","."),"%","")," ",""));
}

function FormatReal(val,decimals){
  return parseFloat(val).toFixed(decimals);
}