function trim(strString)
{
	return strString.replace(/^[ ]+|[ ]+$/g,"");
}

// -----------------------------------------------
// doel:	Check var-value against a specific type
// -----------------------------------------------
function CheckValue(varValue, blnMandatory, strType, intMaxStrLen)
{
	// set default value
	if (intMaxStrLen==null)
		intMaxStrLen=0;

	if (blnMandatory)
		if (varValue == "")
			return false;

	if (strType == "string" || strType == "email" || strType == "emailms" || strType == "imail" || strType == "alphanum"
		|| strType == "NLphone" || strType == "NLphone06" || strType == "NLzip" || strType == "NLpassport" )
	{
		varValue = trim(varValue+"");
		if (varValue == "")
			return !blnMandatory;
		if ((intMaxStrLen!=0) && (varValue.length>intMaxStrLen))
			return false;
	}

	switch (strType)
	{
		case 'string':			return true;
		case 'email':			return /^[\'0-9A-Za-z_-]+(\.[\'0-9A-Za-z_-]+)*[\.]?@([0-9A-Za-z_-]+\.)+[A-Za-z]{2,6}$/.test(varValue);
		case 'imail':			return /^[0-9A-Za-z_-]+(\.[0-9A-Za-z_-]+)*@imail.nl$/i.test(varValue);
		case 'NLphone':			return /^0[0-9]{9}$/.test(varValue);
		case 'NLphone06':		return /^06[0-9]{8}$/.test(varValue);
		case 'licenseplate': 		return /^(([a-zA-Z]{2}|[0-9]{2})-([a-zA-Z]{2}|[0-9]{2})-([a-zA-Z]{2}|[0-9]{2}|[a-zA-Z]{1}[0-9]{1})|([0-9]{2})-([a-zA-Z]{3})-([0-9]{1}))$/.test(varValue);
		case 'NLzip':			return /^[1-9]{1}[0-9]{3}( ){0,1}[A-Za-z]{2}$/.test(varValue);
		case 'DEzip':			return /^[1-9]{1}[0-9]{1,}$/.test(varValue);
		case 'BEzip':			return /^[1-9]{1}[0-9]{1,8}$/.test(varValue);
		case 'LUzip':			return /^[0-9]{4,}$/.test(varValue);
		case 'NLpassport':		return /^(N|n)[A-Za-z]{1}[0-9]+$/.test(varValue);
		case 'alphanum':		return /^[A-Za-z0-9]+$/.test(varValue);
		case 'integer': 		return /^-?[0-9]+$/.test(varValue);
		case 'posint': 			return /^[0-9]+$/.test(varValue);
		case 'negint': 			return /^-[0-9]+$/.test(varValue);
		case 'float_comma':		return /^-?[0-9]+[,]?[0-9]*$/.test(varValue);
		case 'float_point':		return /^-?[0-9]+[.]?[0-9]*$/.test(varValue);
		case 'percentage':		return /^(100|([0-9]{1,2}(,[0-9]{1,2})?))$/.test(varValue);
		case 'percentage_whole':	return /^(100|[0-9]{1,2})$/.test(varValue);
		case 'boolean':			return /^(0|1)$/.test(varValue);
		case 'geslacht':		return /^(M|F|m|f|v)$/.test(varValue);
		case 'children':		return /^[0-9]{1,2}$/.test(varValue);
		case 'insurance':		return /^(ziekenfonds|particulier|werkgever)$/.test(varValue);
		case 'birthdate_dutch_short':	return /^(0?[1-9]|1[0-9]|2[0-9]|30|31)\-(0?[1-9]|10|11|12)\-[0-9]{2}$/.test(varValue);
	}

	return false;
}

// /////////////////////////////////////////
// bereken de leeftijd
var aSmallMonths = new Array(4, 6, 9, 11);
function CalculateAge(sForm, sFieldPrefix)
{
	var bError	= false;
	var iDay	= document.forms[sForm].elements[sFieldPrefix+'Day'].value;
	var iMonth	= document.forms[sForm].elements[sFieldPrefix+'Month'].value;
	var iYear	= document.forms[sForm].elements[sFieldPrefix+'Year'].value;
	var iAge	= 0;
	var oDate	= new Date();
	var iCurDay = oDate.getDay();
	var iCurMonth = oDate.getMonth();
	var iCurYear = oDate.getFullYear();

//	var newdate = new Date(iYear, iMonth, iDay);

	if (iDay < 1 || iDay > 31 || iMonth < 1 || iMonth > 12 || iMonth =='' || iDay=='' || iYear=='')
	{
		bError = true;
	}
	if (inArray(aSmallMonths, iDay) && iDay > 30 )
	{
		bError = true;
	}

	if (iMonth==2)
	{
		if (LeapYear(iYear))
		{
			if (iDay > 29)
				bError = true;
		}
		else
		{
			if (iDay > 28)
				bError = true;
		}
	}

	iAge = iCurYear - iYear;

	if((iMonth == (iCurMonth + 1)) && (iDay <= iCurDay))
	{
		iAge = iAge;
	}
	else
	{
		if(iMonth <= (iCurMonth))
		{
			iAge = iAge;
		}
		else
		{
			iAge = iAge - 1;
		}
	}

	if (!bError)
		return iAge
	else
		return 0;
}

/* ***
	Verwijder alle niet numerieke dingen uit het form-field
*** */
function forceNumeric( sFormField )
{
	var sValue = sFormField.value;
	var reg = new RegExp( "[^0-9,]+", "gi" )
	sValue = sValue.replace( reg, "" );	
	sFormField.value = sValue;
}

function forceWholeNumber( sFormField )
{
	var sValue = sFormField.value;
	if (sValue=='')
		return;
	var reg = new RegExp( "[^0-9,]+", "gi" )
	sValue = sValue.replace( reg, "" );	
	
	sValue = sValue.replace(",",".");
	sValue = Math.round(sValue);
	sFormField.value = sValue;
}

function fixPercentage( sFormField )
{
	var sValue = sFormField.value;
	sValue = sValue.replace(".",",");
	sFormField.value = sValue;
}

function roundFormField(oFormField)
{
  if((sVal=trim(oFormField.value))!='')
  {
    if(!isNaN(fVal=parseFloat(sVal.replace(',','.'))))
    {
      oFormField.value=Math.round(fVal);
    }
  }
}

// Check Nice library for PHP equivalent
function isBankAccount(sCode)
{
	if (trim(sCode) == "")
		return false;

	// Check op postbank
	if ( sCode.charAt(0).toLowerCase() == 'p')
		return /^[0-9]{3,10}$/.test(sCode.substring(1, (sCode.length) - 1));

	if(!(/^[0-9]{9}$/.test(sCode)))
		return false;

	// Normal bank accounts: 11 proof
	var iSum = 0;
	for (i=1; i<10; i++) 
		iSum += sCode.charAt(i - 1) * (10 - i);

	return (iSum % 11 == 0);
}