//	file: 		validations.js
//	author:     	Joke Dekker-Homan
//	date: 		februari 2002
//	modified by:	John Hessing, Karel Lammers
//	date: 		august 2003, september 2003, October 2003, juli 2004

// 	this library includes the following checks:
// 			isExistingDate
// 			daysInFebruary
// 			DaysArray
//			ReqRadioEmpty
//			GetRadioValue
//			postcode_check

// Controleer datum op formaat d[d]/m[m]/jjjj, d[d]-m[m]-jjjj, d[d] m[m] jjjj of ddmmjjjj
// JH, juli 2004: indien datum-object wordt meegegeven, dan wordt de datum goed opgemaakt op het scherm 
function isExistingDate(waarde,datumobject)
{
	// stap één - indien spaties of slashes gebruikt, dan deze omzetten naar streepjes om pattern matching en validatie te vereenvoudigen
	waarde = waarde.replace(" ","-");
	waarde = waarde.replace(" ","-");
	waarde = waarde.replace("/","-");
	waarde = waarde.replace("/","-");
	
	// stap twee - kijk of de invoer aan het pattern voldoet
	var pattern1 = /^(\d{2}-\d{2}-\d{4})/;    // dd-mm-jjjj
	var pattern2 = /^(\d{1}-\d{1}-\d{4})/;    // d-m-jjjj
	var pattern3 = /^(\d{1}-\d{2}-\d{4})/;    // d-mm-jjjj
	var pattern4 = /^(\d{2}-\d{1}-\d{4})/;    // dd-m-jjjj
	var pattern5 = /^(\d{8})/;                // ddmmjjjj
	
	if (!((pattern1.test(waarde))|(pattern2.test(waarde))|(pattern3.test(waarde))|(pattern4.test(waarde))|(pattern5.test(waarde))))
	{
		return false;
	}
	if (pattern5.test(waarde))
	{
		waarde = waarde.substring(0,2) + "-" + waarde.substring(2,4) + "-" + waarde.substring(4,8);
	}
	
	//split date into day, month, year
	var arrayDate 	= waarde.split('-'); 
	var day     	= parseInt(arrayDate[0], 10);
	var month   	= parseInt(arrayDate[1], 10);
	var year    	= parseInt(arrayDate[2], 10);
	var daysInMonth = DaysArray(12);

	if (month<1 || month>12)
	{
		return false;
	}
	if ( day<1 || day>31 || ( (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month] ) )
	{
		return false
	}
	if (arrayDate[2].length != 4 || year==0 )
	{
		return false;
	}

	if (typeof(datumobject)!="undefined")
	{
		var dayS   = ("0"+day).substr(("0"+day).length-2,2);;
		var monthS = ("0"+month).substr(("0"+month).length-2,2);;
		var yearS  = ("0"+year).substr(("0"+year).length-4,4);;
		datumobject.value = dayS+"-"+monthS+"-"+yearS;
	}

	return true;
}

function daysInFebruary (year)
{
	// February has 29 days in any year evenly divisible by four,
	// EXCEPT for centurial years which are not also divisible by 400.
	return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function DaysArray(n) 
{
	for (var i = 1; i <= n; i++) 
	{
		this[i] = 31;
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30};
		if (i==2) {this[i] = 29};
	}
	return this;
}
function ReqRadioEmpty(obj,vartxt)
{
	if (GetRadioValue(obj)=="")
		return !ShwErr(vartxt,obj[0]);
	return false;
}
function GetRadioValue(obj)
{
	for(var a=0; a<obj.length; a++)
	{
		if(obj[a].checked)
		{
			return obj[a].value;
		}
 	}
 	return "";
}

// vier cijfers, 0,1 of 2 spaties, 2 letters
function postcode_check(waarde) {
	var re = /^\d{4}\s{0,2}[A-Za-z][A-Za-z]\b/;
	return re.test(waarde);
}	
function IsNumber(obj,vartxt)
{
	rexexp=/^\d+[.,]?\d*$/gi;
	if (obj.value.match(rexexp)==null)
		return ShwErr("Het bij "+vartxt+" ingevulde getal is niet correct.",obj);
	return true;
}

function IsEmailAdres(obj,vartxt)
{
//	rexexp=/^[A-Za-z\.]+\@[A-Za-z.]+$/gi;
//	rexexp=/^.+\@.+$/gi;
	rexexp=/^[A-Za-z0-9_\-\.]+\@[A-Za-z0-9_\-\.]+$/gi;
	if (obj.value.match(rexexp)==null)
		return ShwErr(vartxt,obj);
	return true;
}

/*
     remove illegal characters     
 */
var splChar = [ '<' , '>', ':' , '^','{','}','(',')'];
var charFound = false;
var tempQueryString = unescape(location.search.replace(/\+/g,  " "));
for ( var i=0 ;  i<splChar.length; i++)  {
	var regex = new RegExp("\\"+splChar[i],"gi");		
	if (tempQueryString.search(regex)!=-1)
	{
		charFound = true;
		tempQueryString = tempQueryString.replace(regex,"");
	}
}

if(charFound)	{
	location.search = tempQueryString;
}
