//Javascript library for formvalidation

//author: Marco van Swelm

//for medi@connect B.V., Elst, the Netherlands http://www.mediaconnect.nl

//version 1.0

//

//example use:

//<script src="js/vormvalidate.js" type="text/javascript"></script>

//<input type="button" onclick="javascript:CheckForm();" value="Bestellen">

//<script type="text/javascript">

//	function CheckForm()

//	{

//		var valid = false;

//		var formref = document.formulier;

//		valid = checkminLength(formref.apotheek, 2, "ongeldige apotheek")

//			&& checkLength(formref.postcode, 6, 6, "Ongeldige postcode")

//			&& checkminLength(formref.plaats, 2, "Ongeldige plaatsnaam")

//			&& checkGetal(formref.telnet, "Ongeldig net nummer");

//		if (valid) formref.submit();

//	}

//</script>

//

//functions:

//

//filter(str)						strips a string of '.' ',' '-' and ' ' Will be deprecated in future versions

//checkLength(field, min, max, message)			returns true if min<=fieldvalue<=max

//checkminLength(field, min, message)			returns true if min<=fieldvalue

//checkPhoneNumber(field, message)			returns true is field is empty or field is a string of valid phonenumbercharacters 0-9()+

//checkOnlyNumbers(field, message)			returns true if field contains only numbers after filtering it

//checkPostcode(field, message)				returns true if field is a valid dutch, german or belgian postal code (without spaces)

//checkSOFI(field, message)				returns true is field is a valid SOFI-number

//checkDecimaal(field, message)				returns true if field is a decimal number (3,14159265)

//later(day1, mon1, year1, day2, mon2, year2, message)	returns true if date2 is later than date1. (Jan=1)

//checkGetal(field, message)				same as checkOnlyNumbers, but without filtering

//checkNetAndAbonnee(fieldNet, fieldAbonnee, message)	checks if cumulative length of two fields equals 10

//checkMailadres(field, message)			checks if field containcs a valid e-mailadres



		function filter(str)

		{

			re = /\.|,| |\-/g;

			return str.replace(re, "");

		}



		function checkLength(field, min, max, message)

		{

			var valide = false;

			valide = ((field.value.length >= min) && (field.value.length <= max));

			if (!valide) {

				alert(message);

				field.focus();

			}

			return valide;

		}



		function checkminLength(field, min, message)

		{

			var valide = false;

			valide = (field.value.length >= min);

			if (!valide) {

				alert(message);

				field.focus();

			}

			return valide;

		}



		function checkPhoneNumber(field, message)

		{

			var valide = false;

			if (field.value.length == 0) {

				valide = true;

			}else{

				var re = /^[0-9()\+]+$/;

				if (field.value.search(re) != -1){

					valide = true;

				}else{

					alert(message);

					field.focus();

				}

			}

			return valide;

		}



		function checkOnlyNumbers(field, message)

		{		 	//check op alleen cijfers, spaties, kommae, punten

					//voor opslag spaties, punten en kommae verwijderen.



			var valide = false;

			if (field.value.length >0) {

				field.value = filter(field.value);

				var re = /\d/;

				if (field.value.search(re) != -1){

					valide = true;

				}else{

					alert(message);

					field.focus();

				}

			}else{

				valide = true;

			}

			return valide;

		}



		function checkPostcode(field, message)

		{

			var valide = false;

			field.value = filter(field.value);



			var reNL = /^\d{4}[a-zA-Z]{2}$/; //NL postcodes

			var reD = /^\d{5}$/; //Deutsche Postzahlen

			var reB = /^\d{4}$/; //Belgische postcodes



			if ((field.value.search(reNL) != -1) || (field.value.search(reD) != -1) || (field.value.search(reB) != -1)){

				valide = true;

			}else{

				alert(message);

				field.focus();

			}

			return valide;

		}



		function checkSOFI(field, message)

		{ 		//check op geldig SOFInummer

				//( afkomstig van http://www.draaijer.com/cgi-bin/sofi)

			var valide = false;

			field.value = filter(field.value);

			var re = /^\d{9}$/;

			var sum = 0;

			if (field.value.search(re) != -1){

				sum += 9*field.value.charAt(0);

				sum += 8*field.value.charAt(1);

				sum += 7*field.value.charAt(2);

				sum += 6*field.value.charAt(3);

				sum += 5*field.value.charAt(4);

				sum += 4*field.value.charAt(5);

				sum += 3*field.value.charAt(6);

				sum += 2*field.value.charAt(7);

				sum -= field.value.charAt(8);

				valide = (sum%11==0);

			}

			if (!valide) {

				alert(message);

				field.focus();

			}

			return valide;

		}



		function checkDecimaal(field, message)

		{ //check op alleen getallen en/of kommae

			var valide = false;



			var re = /^([\d])*(.|,)([\d])*$/;



			if (field.value.search(re) != -1){

				valide = true;

			}else{

				alert(message);

				field.focus();

			}

			return valide;

		}



		function later(day1, mon1, year1, day2, mon2, year2, message)

		{

			if (year2.disabled==true) return true;



			var valide = false;

			date1 = new Date(year1.value,mon1.value-1,day1.value);

			date2 = new Date(year2.value,mon2.value-1,day2.value);

			valide = (date2 > date1);

			if(!valide) {

				alert(message)

				day2.focus();

			}

			return valide;

		}



		function checkGetal(field, message)

		{

			var valide = false;



			var re = /^([\d])*$/;



			if (field.value.search(re) != -1){

				valide = true;

			}else{

				alert(message);

				field.focus();

			}

			return valide;

		}



		function checkNetAndAbonnee(fieldNet, fieldAbonnee, message)

		{

			var valide = false;

			valide = ((fieldNet.value.length + fieldAbonnee.value.length) == 10);

			if (!valide) {

				alert(message);

				fieldNet.focus();

			}

			return valide;

		}



		function checkMailadres(field, message)

		{

			var valide = false;

			var re = /^.+\@.{2,}\..{2,}$/;

			

			if (field.value.search(re) != -1){

				valide = true;

			}else{

				alert(message);

				field.focus();

			}

			return valide;

		}
