function emailvalidation(entered, alertbox)
{
with (entered)
{
apos=value.indexOf("@");
dotpos=value.lastIndexOf(".");
lastpos=value.length-1;
if (apos<1 || dotpos-apos<2 || lastpos-dotpos>4 || lastpos-dotpos<2) 
{if (alertbox) {alert(alertbox);} return false;}
else {return true;}
}
}

function postcodevalidation(entered, alertbox)
{
with (entered)
{
ingevuld=value;
pczs=ZonderSpace(value);
value=pczs;
if (ingevuld=="0000"){return true;}
if (emptyvalidation(entered, alertbox, 6)==false){value=ingevuld; return false;}
lastpos=value.length;
if (lastpos>6){if (alertbox!="") {alert(alertbox);} value=ingevuld; return false;}
value=ingevuld
pcnum=pczs.substr(0,4)-0;
pcalf=pczs.substr(4,6);
pcalf=pcalf.toUpperCase();
var re = /^[A-Z]*$/ ;
if (re.test(pcalf)==false){if (alertbox) {alert(alertbox);} return false;}
if (isNaN(pcnum)){if (alertbox) {alert(alertbox);} return false;}
if (pcnum<1000){if (alertbox) {alert(alertbox);} return false;}
value=pcnum+" "+pcalf;
return true;
}
}

function valuevalidation(entered, min, max, alertbox, datatype)
{
with (entered)
{
checkvalue=parseFloat(value);
if (datatype)
  {smalldatatype=datatype.toLowerCase();
   if (smalldatatype.charAt(0)=="i") {checkvalue=parseInt(value)};
  }
if ((parseFloat(min)==min && checkvalue<min) || (parseFloat(max)==max && checkvalue>max) || value!=checkvalue)
{if (alertbox!="") {alert(alertbox);} return false;}
else {return true;}
}
}

function digitvalidation(entered, min, max, alertbox, datatype)
{
with (entered)
{
checkvalue=parseFloat(value);
if (datatype)
  {smalldatatype=datatype.toLowerCase();
   if (smalldatatype.charAt(0)=="i") {checkvalue=parseInt(value); if (value.indexOf(".")!=-1) {checkvalue=checkvalue+1}};
  }
if ((parseFloat(min)==min && value.length<min) || (parseFloat(max)==max && value.length>max) || value!=checkvalue)
{if (alertbox!="") {alert(alertbox);} return false;}
else {return true;}
}
}

function emptyvalidation(entered, alertbox, min)
{
with (entered)
{
lastpos=value.length;
if (value==null || ZonderSpace(value)=="" || lastpos<min)
{if (alertbox!="") {alert(alertbox);} return false;}
else {return true;}
}
}

function BankGiroRekeningControle(veld, alertbox){
	var input=veld.value.toUpperCase();
	if (input.substr(0,1)=="P"){//postbanknummer:
		input=AlleenCijfers(input);
		if (input.length<3|input.length>7){
			//foutief postbanknummer
			veld.focus();
			if (alertbox!="") {alert(alertbox);}
			return false;
		}
	}else{
		input=AlleenCijfers(input);
		var tot=0;
		var deel=0;
		var rest =0;
		var melding="";
		if (input.length<9|input.length>9){
			//melding= "u moet 9 cijfers ingeven";
			veld.focus();
			if (alertbox!="") {alert(alertbox);}
			return false;
		}else{
			for (i=0;i<input.length;i++){
				getal=input.substr(i,1);
				tot +=getal * (9 - i);
			}
			deel =tot/11;
			//alert("dit is de waarde gedeeld door 11: " + deel);
			rest=tot%11;
			if (rest!=0){
				//melding= "dit is gŽŽn juist banknummer";
				veld.focus();
				if (alertbox!="") {alert(alertbox);}
				return false;
			}else {
				//("dit banknummer is juist");
			}
		}
	}
	return true;
}

function ZonderSpace(Instr) {
	var Ret="";
	var i=0;
	while(i<Instr.length) {
		if (Instr.charAt(i)!=" ") Ret= Ret + Instr.charAt(i);
		i++;
	}
	return Ret;
}

function AlleenCijfers(Instr) {
	var Ret="";
	var i=0;
	while(i<Instr.length) {
		if (isFinite(Instr.charAt(i))) Ret= Ret + Instr.charAt(i);
		i++;
	}
	return Ret;
}

function isdatum(entered, alertbox)
{
if (isDate(entered)==false){
	alert(alertbox);
	return false;
}
else {return true;}
}

function isDate(textField) {
  var myDate = new String(textField.value);
  var delimiterFirstInstance;
  var delimiterSecondInstance;
  var delimiterType;
  var monthPart;
  var dayPart;
  var yearPart;

  //accepts delimiting characters of either "/" or "-"
	//alert("datum: "+textField.value);

  //indexOf is similar to the Vb InStr() function
  delimiterFirstInstance = myDate.indexOf("/");
  if (delimiterFirstInstance == -1) {
   //check for the other allowed delimiter
   delimiterFirstInstance = myDate.indexOf("-");
   //if it is still not found, return false
   if (delimiterFirstInstance == -1) {
    return false;
   } delimiterType = "-";
  } else { delimiterType = "/";
  }

  //indexOf is similar to the Vb InStr() function
  delimiterSecondInstance = myDate.indexOf(delimiterType,
(delimiterFirstInstance + 1));
  if (delimiterSecondInstance == -1) {
   return false;
  }

  monthPart = myDate.substring((delimiterFirstInstance + 1),
   (delimiterSecondInstance));
  if(validateMonth(monthPart) == false) {
   return false;
  }
  yearPart = myDate.substring((delimiterSecondInstance + 1),
   (myDate.length));

  if(validateYear(yearPart) == false) {
   return false;
  }

  dayPart = myDate.substring(0, delimiterFirstInstance);
  if(validateDay(monthPart, dayPart, yearPart) == false) {
   return false;
  } else { return true;
  }
 }


 function validateDay(m, d, y) {
  if((isNaN(d)) || d == "") {
   return false;
  }

  var mo = parseInt(m, 10);
  var da = parseInt(d, 10);
  var ye = parseInt(y, 10);

  if (da < 1) {
   return false;
  }

  if ((mo == 4) || (mo == 6) || (mo == 9) || (mo == 11)) {
   //it is a 30 day month
   if (da > 30) {
    return false;
   }
  } else if(mo == 2) {
   // it is february (either 28 or 29 depending on leap year)
   if (isLeapYear(ye) == true) {
    if (da > 29) {
    //leap years have 29 days in february
     return false;
    }
   } else {
    if (da > 28) {
    //non leap years have 28 days in february
     return false;
    }
   }
  } else {
   // it is a 31 day month
   if (da > 31) {
    return false;
   }
  }
  //if we made it through all of the above without falling out,
  //it must be a valid day for the given month and year
  return true;
 }

 function validateMonth(mnth) {
  if((isNaN(mnth)) || mnth == "") {
   return false;
  }
  var intMonth = parseInt(mnth, 10);
  if((intMonth < 1) || (intMonth > 12)) {
   return false; //month must be between 1 and 12 (inclusive)
  } else { return true;
  }
 }

 function validateYear(yr) {
  if((isNaN(yr)) || yr == "") {
   return false;
  }
  var intYear = parseInt(yr, 10);
  if((intYear < 1970) || (intYear > 9999)) {
   return false; //year must be between 1970 and 9999 (inclusive)
  } else { return true;
  } 
 }

 function isLeapYear(yr) {
   /* classic leap year calculation:
    if the year is:
     evenly divisible by 4 and not evenly divisible by 100
     or
     evenly divisible by 400
    then it is a leap year,
    Otherwise it is not a leap year
   */

    if (((yr % 4 == 0) && (yr % 100 != 0)) || (yr % 400 == 0)) {
         return true;
   } else { return false;
   } 
 }

function inVerleden (textField) {
	// gaat uit van en juiste datum in textField d-m-jjjj
	var vandaag = new Date();
	var datum = new Date();
	var milsecvandaag = vandaag.getTime();

	var myDate = new String(textField.value);
	var delimiterFirstInstance;
	var delimiterSecondInstance;
	var delimiterType;
	var monthPart;
	var dayPart;
	var yearPart;

	delimiterType = "-";
	delimiterFirstInstance = myDate.indexOf("-");
	//if not found, return false
	if (delimiterFirstInstance == -1) {return true;} 
	delimiterSecondInstance = myDate.indexOf(delimiterType,
	(delimiterFirstInstance + 1));
	if (delimiterSecondInstance == -1) {return true;}

	monthPart = myDate.substring((delimiterFirstInstance + 1),
	(delimiterSecondInstance));
	monthPart=monthPart-1
	yearPart = myDate.substring((delimiterSecondInstance + 1),
	(myDate.length));
	dayPart = myDate.substring(0, delimiterFirstInstance);
	
	datum.setDate(dayPart);
	datum.setFullYear(yearPart);
	datum.setMonth(monthPart);
	//alert(datum.getTime());
	if (datum.getTime() < vandaag.getTime()){
		return true;
	}else{
		return false;
	}
}

function datumVolgorde (textField1,textField2) {
	// gaat uit van en juiste datum in textField 1 en 2: d-m-jjjj
	var datum1 = new Date();
	var datum2 = new Date();
	var myDate1 = new String(textField1.value);
	var myDate2 = new String(textField2.value);
	var delimiterFirstInstance;
	var delimiterSecondInstance;
	var delimiterType;
	var monthPart;
	var dayPart;
	var yearPart;

	delimiterType = "-";
	delimiterFirstInstance = myDate1.indexOf("-");
	//if not found, return false
	if (delimiterFirstInstance == -1) {return false;} 
	delimiterSecondInstance = myDate1.indexOf(delimiterType,
	(delimiterFirstInstance + 1));
	if (delimiterSecondInstance == -1) {return false;}
	monthPart = myDate1.substring((delimiterFirstInstance + 1),
	(delimiterSecondInstance));
	monthPart=monthPart-1
		
	yearPart = myDate1.substring((delimiterSecondInstance + 1),
	(myDate1.length));
	dayPart = myDate1.substring(0, delimiterFirstInstance);
	datum1.setDate(dayPart);
	datum1.setFullYear(yearPart);
	datum1.setMonth(monthPart);
	//alert(datum1.getTime());

	delimiterFirstInstance = myDate2.indexOf("-");
	//if not found, return false
	if (delimiterFirstInstance == -1) {return false;} 
	delimiterSecondInstance = myDate2.indexOf(delimiterType,
	(delimiterFirstInstance + 1));
	if (delimiterSecondInstance == -1) {return false;}
	monthPart = myDate2.substring((delimiterFirstInstance + 1),
	(delimiterSecondInstance));
	monthPart=monthPart-1
	yearPart = myDate2.substring((delimiterSecondInstance + 1),
	(myDate2.length));
	dayPart = myDate2.substring(0, delimiterFirstInstance);
	datum2.setDate(dayPart);
	datum2.setFullYear(yearPart);
	datum2.setMonth(monthPart);
	//alert(datum2.getTime());
	if (datum1.getTime() > datum2.getTime()){
		//alert("Dat1>Dat2");
		return false;
	}else{
		//alert("GOED");
		return true;
	}
}

function DatumVerschilInDagen(Datum1,Datum2) {
	return (Datum2-Datum1)/(24*60*60*1000);
}//end function

//Hier een voorbeeldfunctie om webservice te gebruiker POSTCODE, STRAAT, PLAATS
// het IP adres is: 82.175.216.78
function doCompletePostcode(webServerIP, postcodeControlID, straatControlID, plaatsControlID){    
	var ctrl = document.getElementById(postcodeControlID);
	var waarde = ctrl.value;
	waarde = waarde.replace(' ','');
	
	var oXmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
	var webService = "http://" + webServerIP + "/Effector.WebServices/PostcodeService.asmx?op=GetStraatPlaats'"
	oXmlHttp.open("POST", webService, false);
	oXmlHttp.setRequestHeader("Content-Type", "text/xml");
	oXmlHttp.setRequestHeader("SOAPAction", "http://tempuri.org/GetStraatPlaats");
	oXmlHttp.setRequestHeader("Content-Length", "200");

	var S = "";
	S = "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>";
	S += "<soap:Body>"
	S += "<GetStraatPlaats xmlns='http://tempuri.org/'>";
	S += "<postcode>" + waarde + "</postcode>";
	S += "</GetStraatPlaats>";
	S +=  "</soap:Body>";
	S += "</soap:Envelope>";

	oXmlHttp.send(S);
	
	var straat = oXmlHttp.responseXML.selectSingleNode("//Straat").text;
	
	if ((straat != '') && (straat != null))
	{
		ctrl.innerText =  oXmlHttp.responseXML.selectSingleNode("//Postcode").text;
				
		ctrl = document.getElementById(straatControlID);
		ctrl.innerText =  oXmlHttp.responseXML.selectSingleNode("//Straat").text;
		
		ctrl = document.getElementById(plaatsControlID);
		ctrl.innerText =  oXmlHttp.responseXML.selectSingleNode("//Plaats").text;
	}
	else
	{
		window.alert("De postcode is niet geldig");
	}	
}//end function doCompletePostcode
