/* globale regular expressions */
var g_ReEx_numeric = /^([0-9])+$/
var g_ReEx_email =	/^[\w\._-]+\+?[\w\._-]+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/
var g_ReEx_money = /^[0-9]+([\,][0-9]{1,2})?$/
var g_ReEx_phonenumber = /^(0)([0-9-])+([0-9])$/
var g_ReEx_boolean = /^([0,1]{1})$/
var g_ReEx_dutchzipcode = /^([0-9]{4})([a-zA-Z]{2})$/
var g_ReEx_xmldatetime = /^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$/
var g_ReEx_Price = /^[0-9]+([.,]?[0-9]{1,2})?$/
var g_ReEx_Percentage0_100 = /^[0-9]{1,2}[.,]{0,1}[0-9]{0,1}[0-9]{0,1}$/
var g_ReEx_Number0_100 = /^[0-9]{1,2}$/
var g_ReEx_Number999 = /^[0-9]{3,5}$/
var g_ReEx_ISBN = /^ISBN\x20(?=.{13}$)\d{1,5}([- ])\d{1,7}\1\d{1,6}\1(\d|X)$/


/* basis validatie functie*/
var strValidatorMessage = '';
function ValidatorValid(strMsg,blnIsValid,strValidatorID)
{

	Item = document.getElementById(strValidatorID);	
	
	if(!blnIsValid)
	{
		strValidatorMessage +=strMsg+'\n';		
		if(Item != null)
		{		
			Item.style.display = 'inline';
		}	
	}
	else
	{
		if(Item != null)
		{
			Item.style.display = 'none';
		}	
	}
	
  return blnIsValid;
}


 

/*  functie om een reguliere expressie te checken*/
function checkExpression(strValue, strRegExp)
{

	var myRegExp	= new String(strRegExp);
	var intPos		= myRegExp.indexOf('@');
	var blnEmail	= intPos > 0;

	if(blnEmail && trimspaces(strValue) == '')
	{
		//Floris: Expressie is een email, dus niet checken indien leeg (wordt in form object ander altijd aangezien als fout e-mail adres
		return true;
	}
	
	var blnReg = false;
	var filter  = strRegExp;
	if (filter.test(strValue)) {
		blnReg = true;
	};
	return blnReg;
}

/* functie om bij voor en achter een string de lege spaties weg te halen. */
function trimspaces(strValue)
{
	strValue=strValue.replace(/^[\s]+/g,"");
    strValue=strValue.replace(/[\s]+$/g,"");
	return strValue;
};

function removeSpaces(string)
{
	var tstring = "";
	string = '' + string;
	splitstring = string.split(" ");
	for(i = 0; i < splitstring.length; i++)
	{
		tstring += splitstring[i];
	}
	return tstring;
}


function isEmpty(strValue)
{
	var chkEmpty = false;
	if ( trimspaces(strValue) == ''){		
		chkEmpty = true;
	};	
	return chkEmpty;
}

/* functie om een datum te valideren.  */
function isDate(day,month,year) {
 	var today = new Date();
    year = ((!year) ? y2k(today.getYear()):year);
    month = ((!month) ? today.getMonth():month-1);
    if (!day) return false

    var test = new Date(year,month,day);	
	
    if ((year == y2k(test.getYear())) && (month == test.getMonth()) && (day == test.getDate()) ){
        return true;
    } else {
        return false;
	};		
};

/* functie om een xml datum te valideren.  */
function isXMLDate(date) 
{
	var blnResult = true;
	if(checkExpression(date,g_ReEx_xmldatetime))
	{
		var year = parseInt(date.substring(0,4),10);
		var month = parseInt(date.substring(5,7),10);
		var day = parseInt(date.substring(8,10),10);
		var hour = parseInt(date.substring(11,13),10);
		var minutes = parseInt(date.substring(14,16),10);
		var seconds = parseInt(date.substring(17,18),10);
		
		blnResult *= month>0&&month<13;
		blnResult *= day<=daysInMonth(month,year);
		blnResult *= hour>=0&&hour<24;
		blnResult *= minutes>=0&&minutes<60;
		blnResult *= seconds>=0&&seconds<60;
		
	}
	else
	{
		blnResult = false;
	}
	return blnResult==true;
};

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    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 daysInMonth(month,year) 
{
	var intResult = 31
	if (month==4 || month==6 || month==9 || month==11) {intResult = 30}
	if (month==2) {intResult = daysInFebruary(year)}
	return intResult
}

/* functie om een jaartal in 4 cijfers af te beelden.  */
function y2k(number) { return (number < 1000) ? number + 1900 : number; }

/* functie om de maximum  van een string te controleren   */
function checkMaxLength(strValue, maxLength) 
{
	var varLength = getValueLength(strValue);
	var blnLength = false;	
	if (varLength <= maxLength) {
		blnLength = true;
	};
	return blnLength;
}

/* functie om de minimum  van een string te controleren   */
function checkMinLength(strValue, minLength) 
{
	var varLength = getValueLength(strValue);
	var blnLength = false;	
	if (varLength >= minLength) {
		blnLength = true;
	};
	return blnLength;
}
/* functie om lengte van een string te berekenen */
function getValueLength(strValue) {
	return strValue.length;		
}

