// on all types you can add;
// ",required"

// types checked;
// "text"
// "postalcode"
// "phonenumber"
// "postalcode_NL"
// "phonenumber_NL"
// "mm_yyyy"
// "dd_mm_yyyy" ("date")
// "dd_mm_yyyy_hh_ii"
// "dd_mm_yyyy_hh_ii_ss"
// "email"
// "url"
// "filename"
// "number"
// "amount"

// types todo;
// "creditcardnumber"
// "creditcardtype"
// "ip"


falsecolour= '#DD6666';
truecolour = '#DDFFDD';
var type = "";
var errors = "";
var language = new Array();
var selectedlanguage = "english";
language.english = new Array();

language.english.invalid = "invalid input, ";
language.english.required = "no input, ";
language.english.text = "field must contain some text\n";
language.english.radiocheck = "field must be chosen\n";
language.english.select = "select option must be chosen\n";
language.english.postalcode = "field must contain a valid postal code\n";
language.english.postalcode_NL = "field must contain a valid NL postal code\n";
language.english.phonenumber = "field must contain a valid phonenumber\n";
language.english.phonenumber_NL = "field must contain a valid NL phonenumber\n";
language.english.date = "field must contain a valid date\n";
language.english.mm_yyyy = "field must contain a valid date\n";
language.english.dd_mm_yyyy = "field must contain a valid date\n";
language.english.dd_mm_yyyy_hh_ii = "field must contain a valid date and time\n";
language.english.dd_mm_yyyy_hh_ii_ss = "field must contain a valid date and time\n";
language.english.email = "field must contain a valid e-mail address\n";
language.english.url = "field must contain a valid internet address\n";
language.english.filename = "field must contain a valid filename\n";
language.english.number = "field must contain a valid number\n";
language.english.amount = "field must contain a valid amount\n";
language.english.creditcardnumber = "field must contain a valid creditcardnumber\n";
language.english.ip = "field must contain a valid ip\n";


function CheckForm(f) {
	CheckErrors(f);
	returnvalue = true;
//alert("done");
	if(errors == "") {
//alert("emptyerrors");
//		alert("Wait a moment while the form is being processed.");
		errors = "all ready sent... ";
		returnvalue = true;
//		f.submit();
	} else {
//alert("fullerrors");
		if(errors == "all ready sent... ") {
			if(window.confirm("try to send form again?")) {
				returnvalue = true;
//				f.submit();
			} else {
				returnvalue = false;
			}
		} else {
			alert(errors);
			errors = "";
			returnvalue = false;
		}
	}


	return returnvalue;

	if(returnvalue == true) {
		f.submit();
	}

}

function isNotInvalid(fieldvalue) {
	returnvalue = true;
	if (fieldvalue == null) {
		returnvalue = false;
	}


	return returnvalue;
}

function isNotEmpty(fieldvalue) {
	returnvalue = true;
	if (fieldvalue == "") {
		returnvalue = false;
	} else {
		returnvalue = true;
	}


	return returnvalue;
}

function isNumber(fieldvalue) {
	returnvalue = true;
	invoer = fieldvalue.toString();

	for (var i=0; i<1; i++) {
		var teken = invoer.charAt(i);	
		var cf = "1234567890-";
		if(cf.indexOf(teken) == -1) {
			returnvalue = false;
		}
		// Gebruik dit als het telefoon nummer precies 10 cijfers moet zijn. 
		// if(teken < "0" || teken > "9") returnvalue = false;
	}
	for (var i=1; i<(invoer.length-1); i++) {
		var teken = invoer.charAt(i);	
		var cf = "1234567890.";
		if(cf.indexOf(teken) == -1) {
			returnvalue = false;
		}
		// Gebruik dit als het telefoon nummer precies 10 cijfers moet zijn. 
		// if(teken < "0" || teken > "9") returnvalue = false;
	}
	for (var i=(invoer.length-1); i<invoer.length; i++) {
		var teken = invoer.charAt(i);	
		var cf = "1234567890";
		if(cf.indexOf(teken) == -1) {
			returnvalue = false;
		}
		// Gebruik dit als het telefoon nummer precies 10 cijfers moet zijn. 
		// if(teken < "0" || teken > "9") returnvalue = false;
	}


	return returnvalue;
}

function roundOff(number, precision) {
	result = "0";
	if(number != 0) {
		result = "";
		if(number < 0) {
			number = number * -1;
			result += "-";
		}
		precision = parseInt(precision);
		var whole = "" + Math.round(number * Math.pow(10, precision));
		if(whole.length < precision) {
			for (var i=0; i<precision-whole.length; i++) {
				whole = "0" + whole;
			}
		}
		decPoint = whole.length - precision;
		if(decPoint == 0) {
			result += "0";
		}
		if(decPoint >= 0) {
			result += whole.substring(0, decPoint);
			result += ".";
			result += whole.substring(decPoint, whole.length);
		}

	}
	return result;
}







function CheckField(field,type,required) {
	returnvalue = true;
	fieldvalue = field.value;

	if (field.type == "radio" || field.type == "checkbox") {
		type = "radiocheck";
		if (field.checked == false) {
			fieldvalue = "";
		}
	}
	if (field.type == "select" || field.type == "select-multiple") {
		type = "select";
		if (field.checked == false) {
			fieldvalue = "";
		}
	}

	if (type == "") {
		type = "notype";
	}


// "creditcardnumber"
// "creditcardtype"
// "ip"
	if (type == "creditcardnumber" || type == "creditcardtype" || type == "ip") {
		type = "text";
	}



	if (!isNotInvalid(fieldvalue)) {
		errors += language[selectedlanguage].invalid;
		returnvalue = false;
	}
	if (!isNotEmpty(fieldvalue)) {
		if (required == "") {
			returnvalue = true;
		} else {
			errors += language[selectedlanguage].required;
			returnvalue = false;
		}
	} else {


	if (type == "text") {

			returnvalue = true;

	}

	if (type == "postalcode") {


		if(fieldvalue.length<=10) {

			invoer = fieldvalue.toString()


			for (var i=0; i<fieldvalue.length; i++) {
				var teken = invoer.charAt(i);
				var cfal = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
				if(cfal.indexOf(teken) == -1) returnvalue = false;
			}


		} else {
			returnvalue = false;
		}

	}

	if (type == "postalcode_NL") {

		if(fieldvalue.length==7) {

			invoer = fieldvalue.toString()
			if(invoer.charAt(4) == " ") {
				field.value = invoer.substring(0,4) + invoer.substring(5,7);
				fieldvalue = field.value;
			}

		}

		if(fieldvalue.length==6) {

			invoer = fieldvalue.toString()


			for (var i=0; i<4; i++) {
				var teken = invoer.charAt(i);
				var cf = "1234567890";
				if(cf.indexOf(teken) == -1) returnvalue = false;
				//if(teken < "0" || teken > "9") returnvalue = false;
			}

			for (var i=4; i<6; i++) {
				var teken = invoer.charAt(i);
				var al = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
				if(al.indexOf(teken) == -1) returnvalue = false;
			}

		} else {
			returnvalue = false;
		}

	}

	if (type == "phonenumber") {

		if(fieldvalue.length<=15) {

			invoer = fieldvalue.toString()


			for (var i=0; i<fieldvalue.length; i++) {
				var teken = invoer.charAt(i);
				var cf = "1234567890+- ";
				if(cf.indexOf(teken) == -1) returnvalue = false;
				//if(teken < "0" || teken > "9") returnvalue = false;
			}

		} else {
			returnvalue = false;
		}

	}

	if (type == "phonenumber_NL") {

		if(fieldvalue.length==11) {

			invoer = fieldvalue.toString()


			for (var i=0; i<fieldvalue.length; i++) {
				var teken = invoer.charAt(i);
				var cf = "1234567890+- ";
				if(cf.indexOf(teken) == -1) returnvalue = false;
				//if(teken < "0" || teken > "9") returnvalue = false;
			}

		} else {
			returnvalue = false;
		}

	}

	if ( type == "mm_yyyy") {

		// MM-YYYY
		if(fieldvalue.length==7) {

			invoer = fieldvalue.toString();


			MM = invoer.substring(0,2);
			for (var i=0; i<2; i++) {
				var teken = MM.charAt(i);
				var cf = "1234567890";
				if(cf.indexOf(teken) == -1) returnvalue = false;
				//if(teken < "0" || teken > "9") returnvalue = false;
			}

			YYYY = invoer.substring(3,7);
			for (var i=0; i<4; i++) {
				var teken = YYYY.charAt(i);
				var cf = "1234567890";
				if(cf.indexOf(teken) == -1) returnvalue = false;
				//if(teken < "0" || teken > "9") returnvalue = false;
			}


			field.value = MM + "-" + YYYY;

		} else {
			returnvalue = false;
		}


	}

	if (type == "date" || type == "dd_mm_yyyy") {

		// DD-MM-YYYY
		if(fieldvalue.length==10) {

			invoer = fieldvalue.toString();

			DD = invoer.substring(0,2);
			for (var i=0; i<2; i++) {
				var teken = DD.charAt(i);
				var cf = "1234567890";
				if(cf.indexOf(teken) == -1) returnvalue = false;
				//if(teken < "0" || teken > "9") returnvalue = false;
			}

			MM = invoer.substring(3,5);
			for (var i=0; i<2; i++) {
				var teken = MM.charAt(i);
				var cf = "1234567890";
				if(cf.indexOf(teken) == -1) returnvalue = false;
				//if(teken < "0" || teken > "9") returnvalue = false;
			}

			YYYY = invoer.substring(6,10);
			for (var i=0; i<4; i++) {
				var teken = YYYY.charAt(i);
				var cf = "1234567890";
				if(cf.indexOf(teken) == -1) returnvalue = false;
				//if(teken < "0" || teken > "9") returnvalue = false;
			}


			field.value = DD + "-" + MM + "-" + YYYY;

		} else {
			returnvalue = false;
		}


	}



	if ( type == "dd_mm_yyyy_hh_ii") {

		// DD-MM-YYYY HH:II
		if(fieldvalue.length==16) {

			invoer = fieldvalue.toString();

			DD = invoer.substring(0,2);
			for (var i=0; i<2; i++) {
				var teken = DD.charAt(i);
				var cf = "1234567890";
				if(cf.indexOf(teken) == -1) returnvalue = false;
				//if(teken < "0" || teken > "9") returnvalue = false;
			}

			MM = invoer.substring(3,5);
			for (var i=0; i<2; i++) {
				var teken = MM.charAt(i);
				var cf = "1234567890";
				if(cf.indexOf(teken) == -1) returnvalue = false;
				//if(teken < "0" || teken > "9") returnvalue = false;
			}

			YYYY = invoer.substring(6,10);
			for (var i=0; i<4; i++) {
				var teken = YYYY.charAt(i);
				var cf = "1234567890";
				if(cf.indexOf(teken) == -1) returnvalue = false;
				//if(teken < "0" || teken > "9") returnvalue = false;
			}

			HH = invoer.substring(11,13);
			for (var i=0; i<2; i++) {
				var teken = HH.charAt(i);
				var cf = "1234567890";
				if(cf.indexOf(teken) == -1) returnvalue = false;
				//if(teken < "0" || teken > "9") returnvalue = false;
			}


			II = invoer.substring(14,16);
			for (var i=0; i<2; i++) {
				var teken = II.charAt(i);
				var cf = "1234567890";
				if(cf.indexOf(teken) == -1) returnvalue = false;
				//if(teken < "0" || teken > "9") returnvalue = false;
			}


			field.value = DD + "-" + MM + "-" + YYYY + " " + HH + ":" + II;

		} else {
			returnvalue = false;
		}


	}



	if ( type == "dd_mm_yyyy_hh_ii_ss") {

		// DD-MM-YYYY HH:II:SS
		if(fieldvalue.length==19) {

			invoer = fieldvalue.toString();

			DD = invoer.substring(0,2);
			for (var i=0; i<2; i++) {
				var teken = DD.charAt(i);
				var cf = "1234567890";
				if(cf.indexOf(teken) == -1) returnvalue = false;
				//if(teken < "0" || teken > "9") returnvalue = false;
			}

			MM = invoer.substring(3,5);
			for (var i=0; i<2; i++) {
				var teken = MM.charAt(i);
				var cf = "1234567890";
				if(cf.indexOf(teken) == -1) returnvalue = false;
				//if(teken < "0" || teken > "9") returnvalue = false;
			}

			YYYY = invoer.substring(6,10);
			for (var i=0; i<4; i++) {
				var teken = YYYY.charAt(i);
				var cf = "1234567890";
				if(cf.indexOf(teken) == -1) returnvalue = false;
				//if(teken < "0" || teken > "9") returnvalue = false;
			}

			HH = invoer.substring(11,13);
			for (var i=0; i<2; i++) {
				var teken = HH.charAt(i);
				var cf = "1234567890";
				if(cf.indexOf(teken) == -1) returnvalue = false;
				//if(teken < "0" || teken > "9") returnvalue = false;
			}


			II = invoer.substring(14,16);
			for (var i=0; i<2; i++) {
				var teken = II.charAt(i);
				var cf = "1234567890";
				if(cf.indexOf(teken) == -1) returnvalue = false;
				//if(teken < "0" || teken > "9") returnvalue = false;
			}


			SS = invoer.substring(17,19);
			for (var i=0; i<2; i++) {
				var teken = SS.charAt(i);
				var cf = "1234567890";
				if(cf.indexOf(teken) == -1) returnvalue = false;
				//if(teken < "0" || teken > "9") returnvalue = false;
			}


			field.value = DD + "-" + MM + "-" + YYYY + " " + HH + ":" + II + ":" + SS;

		} else {
			returnvalue = false;
		}


	}



	if (type == "email") {

		apos = fieldvalue.indexOf('@');

		if (apos > 1 && (fieldvalue.lastIndexOf('.') > apos + 1)) {
			returnvalue = true;
		} else {
			returnvalue = false;
		}
		if (fieldvalue.indexOf('@',apos + 1) > apos) {
			returnvalue = false;
		}

	}



	if (type == "url") {

		www = fieldvalue.indexOf('.');

		if (www > 1 && (fieldvalue.lastIndexOf('.') > www + 1)) {
			returnvalue = true;
		} else {
			returnvalue = false;
		}

	}



	if (type == "filename") {

		punt = fieldvalue.indexOf('.');

		if (punt > 0 && (fieldvalue.length > punt + 1)) {
			returnvalue = true;
		} else {
			returnvalue = false;
		}

	}



	if (type == "number") {

		if (!isNumber(fieldvalue)) {
			returnvalue = false;
		}

	}



	if (type == "amount") {

		if (!isNumber(fieldvalue)) {
			returnvalue = false;
		} else {
			field.value = roundOff(fieldvalue, 2);
			returnvalue = true;
		}

	}






	}

	if(returnvalue == false) {
		errors += eval("language[selectedlanguage]." + type);
		field.style.background=falsecolour;
	} else {
		field.style.background=truecolour;
	}



	return returnvalue;




}





/*****************************************************************************************************	
*	CREDIT CARD FUNCTIONS
*
*	If you want to use the credit card validating capabilities of this script, please read this
*	documentation before continuing
*
*--	Constants and Globals for Credit Card functions
*
*	Enter the DOM name of the SELECT object here. Make sure you pay attention to the values (CC Types)
*	used in the case statement for the function validateCC()
*/	var ccTypeObj = 'form1.Credit_Card_Type';
/*
*********** WARNING: DO NOT EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING! ****************/	

//function cleanupCCNum(ccNum)
//	{
//	return ccNum.replace(/\D/g,'');
//	}
//	
///***************************************************************************/	
//function validateCC(formObj)
//	{
//	var objName = formatName(formObj.name);
//	if (blankOK)
//		{ blankOK=false; return true; }
//	else if (!validateBlank(formObj)) 
//		return false;
//	
//	switch (eval(ccTypeObj).value)
//		{
//VISA
//		case '1'		: var ccReg = new RegExp(/^4\d{12}(\d{3})?$/); break;
//MC
//		case '2'		: var ccReg = new RegExp(/^5[1-5]\d{14}$/); break;
//DISC
//		case '3'		: var ccReg = new RegExp(/^6011\d{12}$/); break;
//AMEX
//		case '4'		: var ccReg = new RegExp(/^6011\d{12}$/); break;		
//DINERS
//		case '5'	: var ccReg = new RegExp(/^3[0|6|8]\d{12}$/); break;
//ENROUTE
//		case '6'	: var ccReg = new RegExp(/^2[014|149]\d{11}$/); break;
//JCB
//		case '7'		: var ccReg = new RegExp(/^3[088|096|112|158|337|528]\d{12}$/); break;
//		// Add additonal card types here
//		default			: alert('Error! Card Type not found!'); return false;
//		}
//	var formatOK = ccReg.test(formObj.value);
//	var luhnOK = validateLUHN(formObj.value);	
//	if (!formatOK || !luhnOK)
//		{
//		alert('The '+objName+' you entered is not valid. Please check again and re-enter');
//		errorProcess(formObj,1,1);
//		return false;
//		}		
//	return true;
//	}
//***************************************************************************/	
//function validateLUHN(ccString)
//	{
//	var odds = "";
//	var evens = "";
//	var i=1;
//	for (i=0; i<ccString.length; i=i+2)
//		{
//		var digit = parseInt(ccString.charAt(i)) * 2;
//		odds += digit+"";
//		}
//	for (i=1; i<ccString.length; i=i+2)
//		evens += ccString.charAt(i);
//	var luhnStr = odds + evens;
//	var checkSum = 0;
//	for (i=0; i<luhnStr.length; i++)
//		checkSum += parseInt(luhnStr.charAt(i));
//	var bool;
//	(checkSum % 10 == 0)?bool=true:bool=false;
//	return bool;
//	}
//	