/**************************************************************************
Validator functions
**************************************************************************/
var W3C = document.getElementById? true : false;
var NN4 = document.layers? true : false;
var IE4 = document.all? true : false;


/*
function validateSelect(field, required)
{ 
	index = field.selectedIndex;
	if (required && (field.options[index].value.length == 0)) 
	{ 
		return 	 field.name +' > no valid input for field ' +' \n';
	}
	return ''; 
} 
*/


function validateTextInteger(field, required)
{	if(required||(field.value>''))
	{	var re = /^[\d]+$/;
		
		if( !re.test(field.value))
			return field.name + ' > geen numerieke waarde'+' \n';
	}
	return '';
}

function validateTextDate(field, required)
{
	if(required||(field.value>''))
	{
		var re = /^(3[01]|0[1-9]|[12]\d)\/(0[1-9]|1[012])\/\d{4}/;
		if (!re.test(field.value)) 
		{
			return field.name +' > datum niet correct'+' \n'; 
		}
	}
	return ''; 
}

function validateTextEmail(field, required)
{

	if(required||(field.value>''))
	{
		//var re = /^.+\@.+\..+$/;
		var re=/^[A-Za-z0-9._%-]+@[A-Za-z0-9._%-]+\.[A-Za-z0-9._%-]{2,4}$/;
		
		if (!re.test(field.value)) 
		{
			return field.name +' > email niet correct'+' \n'; 
		}
	}
	return ''; 
}

function validatePhone(field, required, regioCode)
{
	
	if(required||(field.value>''))
	{
		var re = /^\D*\d{2,3}?\D*\d{7,8}?\D*$/;
		if (!re.test(field.value)) 
		{
			return field.name +' > telefoon nummer niet goed'+' \n'; 
		}
	}
	return ''; 
}

function validateSelect(field, required)
{
	if (required&&(field.value=="0"))
	{
		return field.name +' > Selecteer een Optie'+' \n'; 
	}
	return ''; 
}

function validateRadio(field, required) 
{ 
	if(required)
	{
		isSelected = field[0].name +' > maak een selectie ' +' \n';
		for (var i=0; i < field.length; i++) 
		{ 
			if (field[i].checked) 
			{ 
				isSelected = ''; 
			}
		}
		return isSelected; 
	}
	else
	{
		return '';
	}
} 

function validateText(field, required) 
{ 
	if(required&&(field.value<=''))
	{
		return 	 field.name +' > Veld invullen ' +' \n';
	}
	return ''
} 

function validateTextCharacterCount(field, required, maxCharCount)
{
	if(required||(field.value>''))
	{
		if (field.value.length>maxCharCount)	return 'u mag niet meer dan ' +maxCharCount +' tekens gebruiken \n';
	}
	return '';
}

function validateTextWordCount(field, required, maxWordCount)
{
	if(required||(field.value>''))
	{
		var fullStr = field.value + " ";
		var initial_whitespace_rExp = /^[^A-Za-z0-9]+/gi;
		var left_trimmedStr = fullStr.replace(initial_whitespace_rExp, "");
		var non_alphanumerics_rExp = rExp = /[^A-Za-z0-9]+/gi;
		var cleanedStr = left_trimmedStr.replace(non_alphanumerics_rExp, " ");
		var splitString = cleanedStr.split(" ");
		var words = splitString.length -1;
		
		if (fullStr.length <2) words = 0;
		
		if (words>maxWordCount) return 'u mag niet meer dan '+maxWordCount +' woorden gebruiken \n';
	}	
	return '';
}

function validateZip(field, required)
{
	if(required||(field.value>''))
	{
		return field.name +' > Veld invullen ' +' \n';
	}
	return '';
}

function validatePostcode(field, required)
{
	var re = /[0-9]{4} *[A-Za-z]{2}/;
	
	if(required&&(field.value==''))
	{
		return field.name +' > Veld invullen ' +' \n';
	}
	
	if(field.value>'') 
	{
		if (!re.test(field.value)) 
		{
			return field.name +' > niet correct'+' \n'; 
		}
	}
	return '';
}

function validateCheckbox(field, required, minimum)
{
	var checked=0;
	for (var i=0; i < field.length; i++) 
	{ 
		if (field[i].checked) 
		{ 
			checked++; 
		}
	}
	
	if (required &&(checked<minimum))
	{
		return 	 field[0].name +' > minimaal ' +minimum +' opties selecten ' +' \n';
	}
	return '';
}


function validateCZReleatienummer(field, required)
{
	if(required||(field.value>''))
	{
		return field.name +' > Veld invullen ' +' \n';
	}
	return '';
}

function resetDefaultValues(what) {

    for (var i=0, j=what.elements.length; i<j; i++) {
        myName = what.elements[i].name;
        myType = what.elements[i].type;
        if(myName.substring(0,2) != '__') {
       		if (!what.elements[i].readOnly) {
				//deze gebruiken we niet omdat we de checkbox en radio niet op readOnly kunnen zetten
				if (myType.indexOf('checkbox') > -1 || myType.indexOf('radio') > -1)
				 what.elements[i].checked = false;
				if (myType.indexOf('hidden') > -1 || myType.indexOf('password') > -1 || myType.indexOf('text') > -1)
					what.elements[i].value = '';
				if (myType.indexOf('select') > -1)
				for (var k=0, l=what.elements[i].options.length; k<l; k++) {
					what.elements[i].options[k].selected = what.elements[i].options[k].defaultSelected;
					}
				}
			}
    }
}

/**************************************************************************
Support functions
**************************************************************************/
function showGroup()
{
	for(var _p=0;_p<arguments.length;_p++) 
	{
		showDiv(arguments[_p]);
	}
}

function hideGroup()
{
	for(var _p=0;_p<arguments.length;_p++) 
	{
		hideDiv(arguments[_p]);
	}
}

function showDiv(id) {
	if (W3C) {
		//document.getElementById(id).style.display = 'block';
		var oElm = document.getElementById(id)
		if (oElm!=null)
		{	
			oElm.style.display = 'block';
		}
		return;
	}
	if (IE4) {
		document.all(id).style.display = 'block';
		progressDispatch(id);
		return;
	}
	if(NN4) {
		progressDispatch(id);
		document.layers[id].visibility = 'show';
		return;
	}
}


function hideDiv(id) {
	if (W3C) {
		//document.getElementById(id).style.display = 'none';
		var oElm = document.getElementById(id)
		if (oElm!=null)
		{	
			oElm.style.display = 'none';
		}
		
		return;
	}
	if (IE4) {
		document.all(id).style.display = 'none';
		return;
	}
	if(NN4) {
		document.layers[id].visibility = 'hidden';
		return;
	}
}

function clearFormFields()
{
	for(var _p=0;_p<arguments.length;_p++) 
	{
		document.forms[0].elements[arguments[_p]].value=""
	}
}

/**************************************************************************
Support functions
**************************************************************************/
function showGroup()
{
	for(var _p=0;_p<arguments.length;_p++) 
	{
		showDiv(arguments[_p]);
	}
}

function hideGroup()
{
	for(var _p=0;_p<arguments.length;_p++) 
	{
		hideDiv(arguments[_p]);
	}
}

function showDiv(id) {
	if (W3C) {
		//document.getElementById(id).style.display = 'block';
		var oElm = document.getElementById(id)
		if (oElm!=null)
		{	
			oElm.style.display = 'block';
		}
		return;
	}
	if (IE4) {
		document.all(id).style.display = 'block';
		progressDispatch(id);
		return;
	}
	if(NN4) {
		progressDispatch(id);
		document.layers[id].visibility = 'show';
		return;
	}
}


function hideDiv(id) {
	if (W3C) {
		//document.getElementById(id).style.display = 'none';
		var oElm = document.getElementById(id)
		if (oElm!=null)
		{	
			oElm.style.display = 'none';
		}
		
		return;
	}
	if (IE4) {
		document.all(id).style.display = 'none';
		return;
	}
	if(NN4) {
		document.layers[id].visibility = 'hidden';
		return;
	}
}

function clearFormFields()
{
	for(var _p=0;_p<arguments.length;_p++) 
	{
		document.forms[0].elements[arguments[_p]].value=""
	}
}
