/****************************************************************************************************************

Form Validator v1.0.1
Bart Lute
OOiPTech

+++++++ include this on the page where the form is situated (adjust/extend it for your form): +++++++

<script language="javascript">
<!--
var valForm1 = new Array();
valForm1[0] = new Array("name","text",5,10,"Naam is verplicht","Naam is minimaal 5 en max 10 karakters lang");
valForm1[1] = new Array("passwd1","password","passwd2",4,8,"Wachtwoord is verplicht","De wachtwoorden zijn niet gelijk","Wachtwoord moet tussen 4 en 8 karakters zijn");
valForm1[2] = new Array("email","email",5,255,"E-mail is verplicht","U heeft geen geldig e-mailadres ingevuld","E-mailadres is te kort");
valForm1[3] = new Array("gender","radio","Kies een geslacht");
valForm1[4] = new Array("country","select","Kies een land");
valForm1[5] = new Array("number","numerical",100,200,"Nummer is verplicht","U heeft geen geldig getal ingevuld","Het nummer moet liggen tussen 100 en 200");
//-->
</script>
<script src="js/validateform.js"></script>

+++++++ to here +++++++

+++++++ your form tag should look something like this +++++++

<form method="post" action="<your target here>" onsubmit="return validate(this,valForm1);">

ONLY touch anything below when you want to change something in the way this script works

****************************************************************************************************************/
function validate(form,aVal) {
	var i = 0;

	// check for empty fields
	for (i=0; i<aVal.length;i++) {
		var isEmpty = false;
		var msgEmpty = "";
		switch(aVal[i][1]) {
			case "text":
				isEmpty = chkEmptyText(form,aVal[i]);
				if (isEmpty) msgEmpty = aVal[i][4];
				break;
			case "password":
				isEmpty = chkEmptyPassword(form,aVal[i]);
				if (isEmpty) msgEmpty = aVal[i][5];
				break;
			case "email":
				isEmpty = chkEmptyEmail(form,aVal[i]);
				if (isEmpty) msgEmpty = aVal[i][4];
				break;
			case "radio":
				isEmpty = chkEmptyRadio(form,aVal[i]);
				if (isEmpty) msgEmpty = aVal[i][2];
				break;
			case "select":
				isEmpty = chkEmptySelect(form,aVal[i]);
				if (isEmpty) msgEmpty = aVal[i][2];
				break;
			case "numerical":
				isEmpty = chkEmptyNumerical(form,aVal[i]);
				if (isEmpty) msgEmpty = aVal[i][4];
				break;
		}
		if (isEmpty) {
			alert(msgEmpty);
			return false;
		}
	}

	// Validate the input
	for (i=0; i<aVal.length;i++) {

		var isInvalidLength = false;
		var msgInvalidLength = "";
		var passwordCheckFailed = false;
		var msgPasswdCheckFailed = "";
		var emailCheckFailed = false;
		var msgEmailCheckFailed = "";
		var isNoNumber = false;
		var msgIsNoNumber = "";
		var isInvalidSize = false;
		var msgInvalidSize = "";

		switch(aVal[i][1]) {
			case "text":
				isInvalidLength = chkLength(form,aVal[i],aVal[i][2],aVal[i][3]);
				if (isInvalidLength) msgInvalidLength = aVal[i][5];
				break;
			case "password":
				isInvalidLength = chkLength(form,aVal[i],aVal[i][3],aVal[i][4]);
				if (isInvalidLength) msgInvalidLength = aVal[i][7];
				passwordCheckFailed = chkPasswdCheck(form,aVal[i]);
				if (passwordCheckFailed) msgPasswdCheckFailed = aVal[i][6];
				break;
			case "email":
				isInvalidLength = chkLength(form,aVal[i],aVal[i][2],aVal[i][3]);
				if (isInvalidLength) msgInvalidLength = aVal[i][6];
				emailCheckFailed = chkEmail(form,aVal[i]);
				if (emailCheckFailed) msgEmailCheckFailed = aVal[i][5];
				break;
			case "numerical":
				isNoNumber = chkNumericalNumber(form,aVal[i]);
				if (isNoNumber) msgIsNoNumber = aVal[i][5];
				isInvalidSize = chkNumericalSize(form, aVal[i]);
				if (isInvalidSize) msgInvalidSize = aVal[i][6];
				break;
		}

		// length
		if (isInvalidLength) {
			alert(msgInvalidLength);
			return false;
		}

		// password
		if (passwordCheckFailed) {
			alert(msgPasswdCheckFailed);
			return false;
		}

		// email
		if (emailCheckFailed) {
			alert(msgEmailCheckFailed);
			return false;
		}

		// isNumber
		if (isNoNumber) {
			alert(msgIsNoNumber);
			return false;
		}

		// number (size)
		if (isInvalidSize) {
			alert(msgInvalidSize);
			return false;
		}

	}

	return true;
}

// functions to check empty fields
function chkEmptyText(form,aVal) {
	return (form.elements[aVal[0]].value == "");
}

function chkEmptyPassword(form,aVal) {
	return (form.elements[aVal[0]].value == "");
}

function chkEmptyEmail(form,aVal) {
	return (form.elements[aVal[0]].value == "");
}

function chkEmptyRadio(form,aVal) {
	var chkFound = false;
	for (var i = 0; i < form.elements[aVal[0]].length; i++) {
		if (form.elements[aVal[0]][i].checked) chkFound = true;
	}
	return (!chkFound);
}

function chkEmptySelect(form,aVal) {
	return (form.elements[aVal[0]].value == "-1");
}

function chkEmptyNumerical(form,aVal) {
	return (form.elements[aVal[0]].value == "");
}

// functions to check the length of fields
function chkLength(form, aVal, minLength, maxLength) {
	return (
		(form.elements[aVal[0]].value.length < minLength) ||
		(form.elements[aVal[0]].value.length > maxLength)
	);
}

// functions for validation of input
function chkPasswdCheck(form, aVal) {
	return (form.elements[aVal[0]].value != form.elements[aVal[2]].value);
}

function chkEmail(form, aVal) {
	return (
		form.elements[aVal[0]].value.indexOf('@') == -1 ||
		form.elements[aVal[0]].value.indexOf('.') == -1 ||
		form.elements[aVal[0]].value.lastIndexOf('.') < form.elements[aVal[0]].value.indexOf('@') ||
		form.elements[aVal[0]].value.substring(form.elements[aVal[0]].value.length-1,form.elements[aVal[0]].value.length) == "." ||
		form.elements[aVal[0]].value.indexOf('@') == 0 ||
		form.elements[aVal[0]].value.indexOf(';') != -1
	);
}

function chkNumericalNumber(form, aVal) {
	return (isNaN(form.elements[aVal[0]].value));
}

function chkNumericalSize(form, aVal) {
	return (
		parseInt(form.elements[aVal[0]].value) < aVal[2] ||
		parseInt(form.elements[aVal[0]].value) > aVal[3]
	);
}