//captcha check	
	var request;
	var captcha_Result="pending";

	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!");
	}	
	createRequest();
	
	function validCaptcha(field)
	{
		var params="captcha_var="+field.name+"&"+field.name+"="+field.value;
		request.open("GET","?mod=captcha2&verify&"+params,false);
	    request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
	    //request.setRequestHeader("Content-length", params.length);
	    request.setRequestHeader("Connection", "close");
		request.onreadystatechange = sendComplete;
		request.send(null);
		var res=request.responseText;

		return res;
	}
	
	function sendComplete()
	{
		if (request.readyState == 4){
	        if(request.status != 200){
	        	captcha_Result="ERR";
	            alert("Error #"+request.status+": " + request.responseText); 
	        } else {
	            if(request.responseText.substr(0,2) != "OK"){
	            	captcha_Result="ERR";
	                //alert(request.responseText);
	            } else {
	                captcha_Result="OK";
	            }
	        }
	    }
	}

//submit-time validators
	function validateform(formobj){
		var outstr='';
		for(i=0;i < formobj.elements.length; i++){
			var isValid=true;
			var whyNotValid="";
			if(formobj.elements[i].type == 'text' || formobj.elements[i].type == 'textarea'){
				var vtype=formobj.elements[i].getAttribute('validator');
				switch(vtype){
					case 'noop': //do nothing
					break;
					case 'e-mail':
						isValid=validate_email(formobj.elements[i].value);
						whyNotValid='is geen geldig e-mail adres.';
					break;
					case 'not_empty':
						isValid=validate_notempty(formobj.elements[i].value);
						whyNotValid='hoort niet leeg te zijn.';
					break;
					case 'postcode':
						isValid=validate_notempty(formobj.elements[i].value);
						whyNotValid='is geen geldige postcode.';
					break;
					case 'captcha':
						var cres=validCaptcha(formobj.elements[i]);
						isValid=cres.substr(0,2) == "OK";
						whyNotValid='heeft niet de goede CAPTCHA code.';
					break;
				}
			} else if(formobj.elements[i].type == 'hidden'){
				//ignore
			} else if(formobj.elements[i].type == 'select-one'){
				var idx=formobj.elements[i].selectedIndex;
				var opt=formobj.elements[i].options[idx];
				if(opt.value == "noop"){
					isValid=false;
					whyNotValid='mist een selectie.';
				}
				//alert("select idx: " + opt.value);
			//} else {
				//alert("ele: " + formobj.elements[i].name + " " + formobj.elements[i].type);
			}
			if(!isValid){
				outstr+="Veld " + formobj.elements[i].name + " " + whyNotValid + "\n";
				formobj.elements[i].style.background='red';
			} else {
				formobj.elements[i].style.background='';
			}
		}
		if(outstr != ''){
			alert("Formulier kon niet verzonden worden:\n"+outstr);
			return false;
		} else {
			return true;
		}
	}
	
	function validate_notempty(value){
		value=value.replace(/\s+/g," ");
		value=value.replace(/^\s+/,"");
		return value != "";
	}
	
	function validate_email(value){
		value=value.replace(/\s+/g,"");
		return value.match(/^[a-z0-9.\-_]+@[a-z0-9.-]+\.[a-z]{2,}$/i);
	}
	
	
	function validate_postcode(value){
		value=value.replace(/\s+/g,"");
		return value.match(/^[0-9]{4}[a-z]{2}$/i);
	}
	
//real-time validators
	var isOpera = navigator.userAgent.indexOf("Opera") > -1;
	var isIE = navigator.userAgent.indexOf("MSIE") > 1 && !isOpera;
	var isMoz = navigator.userAgent.indexOf("Mozilla/5.") == 0 && !isOpera;

	function textboxSelect (oTextbox, iStart, iEnd) {

	   switch(arguments.length) {
	       case 1:
	           oTextbox.select();
	           break;

	       case 2:
	           iEnd = oTextbox.value.length;
	           /* falls through */
	           
	       case 3:          
	           if (isIE) {
	               var oRange = oTextbox.createTextRange();
	               oRange.moveStart("character", iStart);
	               oRange.moveEnd("character", -oTextbox.value.length + iEnd);      
	               oRange.select();                                              
	           } else if (isMoz){
	               oTextbox.setSelectionRange(iStart, iEnd);
	           }                    
	   }

	   oTextbox.focus();
	} 

	function makeValuta(field,keyevent){
		var l=field.value.length;
		var unicode=keyevent.keyCode? keyevent.keyCode : keyevent.charCode;
		if(unicode == 8 || unicode == 46){
			l--;
	    }
  		var re=/[^0-9\.]*/g;
  		var rs=/[\.,]/;
  		var rm=/^0+/;
    	var res0=field.value.replace(re,"");
        if(res0){
    		var res=res0.split(rs);
    		res[0]=res[0].replace(rm,"");
    		if(res[0].length == 0){ res[0]="0"; }
    		if(res.length > 1){
    		   if(res[1].length < 2){ res[1] += "00"; }
    		   field.value=res[0] + "." + res[1].substr(0,2);		
    		} else {
             field.value=res[0] + ".00";		
    		}
    		textboxSelect(field,l);
        } else {
				field.value="";        
        }
	}

	function makePercentage(field){
	  var re=/[^0-9]*/g;
	  var val=field.value.replace(re,"");
		if(val && val < 0){ val=0; }
		if(val && val > 100){ val=100; }
		field.value=val;
	}

	function makeNumber(field){
		  var re=/(-?[0-9]+)/;
		  var val=field.value.match(re);
			field.value=val[1];
	}

	function makeUnsignedNumber(field){
		  var re=/([0-9]+)/;
		  var val=field.value.match(re);
			field.value=val[1];
	}
	
	function noop(field){ //do nothing
	}
	

	
	
	
