/*
*	Controleer of opgegeven string numerieke waarde bevat
*/
function isNumeric(str, allowDecimals, other) {
	if(!allowDecimals) allowDecimals = false;
	if(!other) other = "";
	var strValidChars = allowDecimals ? ",.0123456789" : "0123456789";
	strValidChars = strValidChars+other;
	if (str.length == 0) return false;

	// Bekijk ieder teken in string afzonderlijk
	for (i = 0; i < str.length; i++) {
		// Als huidig teken niet in bovenstaande geldige string voorkomt, fout
		if (strValidChars.indexOf(str.charAt(i)) == -1) return false;
	}
	return true;
}

//source: http://www.hscripts.com/scripts/JavaScript/alphanumeric-check.php
function isAlphaNumeric(str, space) {	
	var strValidChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-";
	if(space == true) strValidChars = strValidChars+" ";
	if (str.length == 0) return false;
	
	// Bekijk ieder teken in string afzonderlijk
	for (i = 0; i < str.length; i++) {
		// Als huidig teken niet in bovenstaande geldige string voorkomt, fout
		if (strValidChars.indexOf(str.charAt(i)) == -1) return false;
	}
	return true;
}
function ask(q) {
	var agree=confirm(q);
	if (agree) return true ;
	else return false ;
}

function getCurrentYear() {
	now = new Date;
	theYear = now.getYear();
	if (theYear < 1900) theYear=theYear+1900;
	return theYear;
}

function getCurrentMonth() {
	now = new Date;
	theMonth = now.getMonth() + 1;
	return theMonth;
}

function daysInMonth(iMonth, iYear) {
	iMonth--;
	return 32 - new Date(iYear, iMonth, 32).getDate();
}

function getRadioValue(formname,field) {
	size = document.forms[formname].elements[field].length;
	
	for (i = 0; i < size; i++) {
		if (document.forms[formname].elements[field][i].checked == true){
			return document.forms[formname].elements[field][i].value;
		}
	}
	
	return "";
}

function checkString(label,formname,field,required,minlength,maxlength) {
	var length = document.forms[formname].elements[field].value.length;
	
	check = checkRequired(label,length,required);
	if(check.length > 0) return check;
	
	check = checkLength(label,length,required,minlength,maxlength);
	if(check.length > 0) return check;
	
	return "";
}

function checkDropdownlist(label,formname,field,required) {
	var value = document.forms[formname].elements[field].value;
	if(value == "" && required) return "&raquo; "+label+" is een verplicht veld!<br />";
	else return "";
}

function checkRadio(label,formname,field) {
	size = document.forms[formname].elements[field].length;
	countchecked = 0;
	
	for (i = 0; i < size; i++) {
		if (document.forms[formname].elements[field][i].checked == true){
			return "";
		}
	}
	
	return "&raquo; "+label+" is een verplicht veld!<br />";
}

function checkDate(label,formname,dayfield,monthfield,yearfield,required) {
	if(required) {
		if(document.forms[formname].elements[dayfield].value.length == 0 && document.forms[formname].elements[monthfield].value.length == 0 && document.forms[formname].elements[yearfield].value.length == 0) {
			return "&raquo; "+label+" is een verplicht veld!<br />";
		}
	}
	
	if((document.forms[formname].elements[dayfield].value.length > 0) ||(document.forms[formname].elements[monthfield].value.length > 0) || (document.forms[formname].elements[yearfield].value.length > 0)) {
		if(document.forms[formname].elements[dayfield].value.length < 2 || document.forms[formname].elements[monthfield].value.length < 2 || document.forms[formname].elements[yearfield].value.length < 4 || !isNumeric(document.forms[formname].elements[dayfield].value,false) || !isNumeric(document.forms[formname].elements[monthfield].value,false) || !isNumeric(document.forms[formname].elements[yearfield].value,false)) { 
			return "&raquo; "+label+" is niet van het type dd-mm-yyyy!<br />";
		}
	}	
	
	if(document.forms[formname].elements[dayfield].value > daysInMonth(document.forms[formname].elements[monthfield].value,document.forms[formname].elements[yearfield].value) || document.forms[formname].elements[monthfield].value > 12 || document.forms[formname].elements[dayfield].value == "00" || document.forms[formname].elements[monthfield].value == "00" || document.forms[formname].elements[yearfield].value < 1900 || document.forms[formname].elements[yearfield].value > 2100) {
		return "&raquo; "+label+" is ongeldig!<br />";
	}
	
	return "";
}

function checkTime(label,formname,hourfield,minutefield,required) {
	if(required) {
		if(document.forms[formname].elements[hourfield].value.length == 0 && document.forms[formname].elements[minutefield].value.length == 0) {
			return "&raquo; "+label+" is een verplicht veld!<br />";
		}
	}
	
	if((document.forms[formname].elements[hourfield].value.length > 0) ||(document.forms[formname].elements[minutefield].value.length > 0)) {
		if(document.forms[formname].elements[hourfield].value.length < 1 || document.forms[formname].elements[minutefield].value.length < 2 || !isNumeric(document.forms[formname].elements[hourfield].value,false) || !isNumeric(document.forms[formname].elements[minutefield].value,false)) { 
			return "&raquo; "+label+" is geen geldige tijd!<br />";
		}
	}	
	
	if(document.forms[formname].elements[hourfield].value < 0 || document.forms[formname].elements[hourfield].value > 23 || document.forms[formname].elements[minutefield].value < 0 || document.forms[formname].elements[minutefield].value> 59) {
		return "&raquo; "+label+" is ongeldig!<br />";
	}
	
	return "";
}

function checkDateJQuery(label,formname,field,required,minvalue,maxvalue) {
	if(required) {
		if(document.forms[formname].elements[field].value.length == 0) {
			return "&raquo; "+label+" is een verplicht veld!<br />";
		}
	}
	
	fields = document.forms[formname].elements[field].value.split("/");
	
	if(fields[0].length != 2 || fields[1].length != 2 || fields[2].length != 4 || !isNumeric(fields[0]) || !isNumeric(fields[1]) || !isNumeric(fields[2])) { 
		return "&raquo; "+label+" is niet van het type 01/01/2000!<br />";
	}	
	
	if(minvalue == "today") {
		var date = new Date(fields[2], fields[1] - 1, fields[0]); //Month is 0-11 in JavaScript
		var today = new Date();
		if(date < today) return "&raquo; "+label+" moet minimaal vandaag zijn!<br />";
	}
	
	if(minvalue > 0) {
		var date = new Date(fields[2], fields[1] - 1, fields[0]); //Month is 0-11 in JavaScript
		
		minvalue_day = ""+minvalue.getDate();
		if(minvalue_day.length == 1) minvalue_day = "0"+minvalue_day;
		
		minvalue_month = minvalue.getMonth() + 1;
		minvalue_month = ""+minvalue_month;
		if(minvalue_month.length == 1) minvalue_month = "0"+minvalue_month;
		
		minvalue_year = minvalue.getYear();
		
		if(date < minvalue) return "&raquo; "+label+" moet minimaal "+minvalue_day+"/"+minvalue_month+"/"+minvalue_year+" zijn!<br />";
	}
	
	if(maxvalue == "today") {
		var date = new Date(fields[2], fields[1] - 1, fields[0]); //Month is 0-11 in JavaScript
		var today = new Date();
		if(date > today) return "&raquo; "+label+" mag niet in de toekomst liggen!<br />";
	}
	
	if(maxvalue > 0) {
		var date = new Date(fields[2], fields[1] - 1, fields[0]); //Month is 0-11 in JavaScript
		var today = new Date();
		
		maxvalue_day = ""+maxvalue.getDate();
		if(maxvalue_day.length == 1) maxvalue_day = "0"+maxvalue_day;
		
		maxvalue_month = maxvalue.getMonth() + 1;
		maxvalue_month = ""+maxvalue_month;
		if(maxvalue_month.length == 1) maxvalue_month = "0"+maxvalue_month;
		
		maxvalue_year = maxvalue.getYear();
		
		if(date > maxvalue) return "&raquo; "+label+" mag maximaal "+maxvalue_day+"/"+maxvalue_month+"/"+maxvalue_year+" zijn!<br />";
	}
	
	return "";
}

function checkPostalCode(label,formname,field1,field2,required) {
	if(required) {
		if(document.forms[formname].elements[field1].value.length == 0 || document.forms[formname].elements[field2].value.length == 0) {
			return "&raquo; "+label+" is een verplicht veld!<br />";
		}
	}
	
	if((document.forms[formname].elements[field1].value.length > 0) ||(document.forms[formname].elements[field2].value.length > 0)) {
		if(document.forms[formname].elements[field1].value.length < 4 || document.forms[formname].elements[field2].value.length < 2 || !isNumeric(document.forms[formname].elements[field1].value,false)) { 
			return "&raquo; "+label+" is niet van het type 1234 AA!<br />";
		}
	}	
	
	return "";
}

function checkPhoneNumber(label,formname,field1,field2,required) {
	if(required) {
		if(document.forms[formname].elements[field1].value.length == 0 || document.forms[formname].elements[field2].value.length == 0) {
			return "&raquo; "+label+" is een verplicht veld!<br />";
		}
	}
	
	if((document.forms[formname].elements[field1].value.length > 0) ||(document.forms[formname].elements[field2].value.length > 0)) {
		if(((document.forms[formname].elements[field1].value.length + document.forms[formname].elements[field2].value.length) != 10) || (document.forms[formname].elements[field1].value.length < 2) || (document.forms[formname].elements[field2].value.length < 6)) { 
			return "&raquo; "+label+" is ongeldig!<br />";
		}
		
		if(!isNumeric(document.forms[formname].elements[field1].value,false) || !isNumeric(document.forms[formname].elements[field2].value,false)) {
			return "&raquo; "+label+" mag alleen numerieke waarden bevatten!<br />";
		}	
	}	
	
	return "";
}

function checkNumber(label,formname,fieldname,required,allowDecimals,minlength,maxlength) {
	var length = document.forms[formname].elements[fieldname].value.length;
	var value = document.forms[formname].elements[fieldname].value;
	
	check = checkRequired(label,length,required);
	if(check.length > 0) return check;
	
	if(length > 0) {
		if(!isNumeric(value, allowDecimals)) {
			return "&raquo; "+label+" mag alleen numerieke waarden bevatten!<br />";
		}		
	}
	
	check = checkLength(label,length,required,minlength,maxlength);
	if(check.length > 0) return check;	
	
	return "";
}

function checkBankAccountNumber(label,formname,fieldname,required,minlength,maxlength) {
	var length = document.forms[formname].elements[fieldname].value.length;
	var value = document.forms[formname].elements[fieldname].value;
	
	check = checkRequired(label,length,required);
	if(check.length > 0) return check;
	
	if(length > 0) {		
		var strValidChars = "P0123456789.";
		var valid = true;
		// Bekijk ieder teken in string afzonderlijk
		for (i = 0; i < value.length; i++) {
			// Als huidig teken niet in bovenstaande geldige string voorkomt, fout
			if (strValidChars.indexOf(value.charAt(i)) == -1) valid = false;
		}
				
		if(!valid) {
			return "&raquo; "+label+" heeft een ongeldige waarde!<br />";
		}		
	}
	
	check = checkLength(label,length,required,minlength,maxlength);
	if(check.length > 0) return check;	
	
	return "";
}

function checkEmail(label,formname,fieldname,required,minlength,maxlength) {
	var length = document.forms[formname].elements[fieldname].value.length;
	var value = document.forms[formname].elements[fieldname].value;
	
	check = checkRequired(label,length,required);
	if(check.length > 0) return check;
	
	check = checkLength(label,length,required,minlength,maxlength);
	if(check.length > 0) return check;
	
	if(length > 0) {	
		if ((value.indexOf('@') < 0) || ((value.charAt(value.length-4) != '.') && (value.charAt(value.length-3) != '.'))) {
			return "&raquo; "+label+" is ongeldig!<br />";
		}
	}
	
	return "";
}

function checkLength(label,length,required,minlength,maxlength) {
	if(!required && length==0) return "";
	
	if(((length < minlength) && minlength > 0) || ((length > maxlength) && maxlength > 0)) {
		if(minlength == maxlength) return "&raquo; "+label+" moet "+minlength+" karakters lang zijn!<br />";
		if((minlength > 0) && (maxlength > 0)) return "&raquo; "+label+" moet minimaal "+minlength+" en mag maximaal "+maxlength+" karakters lang zijn!<br />";
		if((minlength > 0) && (maxlength == 0)) return "&raquo; "+label+" moet minimaal "+minlength+" karakters lang zijn!<br />";
		if((minlength == 0) && (maxlength > 0)) return "&raquo; "+label+" mag maximaal "+maxlength+" karakters lang zijn!<br />";
	}
	return "";
}

function checkRequired(label,length,required) {
	if((length == 0) && required) {
		return "&raquo; "+label+" is een verplicht veld!<br />";
	}
	return "";
}
	
function in_array(array, obj) {
	for(var i = 0; i < array.length; i++) { 
		if(array[i] === obj){ 
			return true; 
	    }
	} 
	return false; 
} 

function checkCheckbox(label,formname,fieldname,message) {
	if(document.forms[formname].elements[fieldname]) {
		var values = new Array();
		var x= 0;
		
		for (var i=0; i < document.forms[formname].elements[fieldname].length; i++) {
			if (document.forms[formname].elements[fieldname][i].checked) x++;
		}
	
		if(x == 0) {
			if(message) {
				if(message.length > 0) return "&raquo; "+message+"<br />";
			}
			else return "&raquo; "+label+" is een verplicht veld!<br />";
		}
		else return "";
	} else return "&raquo; Veld is niet gevonden!<br />";;
}

function copyToClipboard(s)
{
	clipboardData.setData("Text", s);
}

function numberOfErrors(string) {
	errors = string.split("<br");
	return errors.length - 1;
}

function goBack() {
	history.go(-1);
}
