/** 
	Very simple validation! 
	Version 0.3 
	
	Coded by Leonard Burton 
**/
	
function validateform(FormName){
	
	var allRequested = 1 ;
	var emailValid = 1 ;
	var UKpcValid = 1 ;
	var UKphoneValid = 1 ;
	var tbRequired = 1 ;
	var errorsCode = "" ;
	var returnvalue = true ;
	
	
	
	/* Only validates the first form on a page */
	
	/* Mark form elements as needed with the following in the fields class tag
		req : Field required
		tbrq : Tix box must be checked
		email : Field is an email address
		ukpc : Validates as UK postcode
		ukphone : Validates as UK phone number
	
	*/
	
	
	/** This stage checks if a rule has been applies the rules to fields defined it the field class and returns changes relevant var to 0 if failed for outputting error messages later **/
	for(i=0; i<document.forms[0].elements.length; i++)
	{
		
		/* Checks required forms filled */
		if(document.forms[0].elements[i].className.match('req') != null && document.forms[0].elements[i].value == ""){
			
				allRequested = 0 ;
			
		}
		
		/* Tick box must be checked rule */
		if(document.forms[0].elements[i].className.match('tbrq') != null && document.forms[0].elements[i].checked == false){
			
				tbRequired = 0 ;
			
		}
		
		
		
		/* Validates email addresses to RFC 2822 rules */
		if(document.forms[0].elements[i].className.match('email') != null){
			
			var emailregex = new RegExp(/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*'+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/) ;
			
			if(document.forms[0].elements[i].value.match(emailregex) == null && document.forms[0].elements[i].value != ""){
				emailValid = 0 ;
			}
			
			
		}
		
		/* Validates UK postcodes */
		if(document.forms[0].elements[i].className.match('ukpc') != null){
			
			var ukpcregex = new RegExp("^[A-Za-z]{1,2}[0-9]{1,2}[A-Za-z]? ?[0-9]{1}[A-Za-z]{2}$");
				
			if(document.forms[0].elements[i].value.match(ukpcregex) == null && document.forms[0].elements[i].value != ""){
				UKpcValid = 0 ;
			}
			
			 
		}
		
		/* Validates UK format telephone number 0XXXX XXXXXX or 0XXXXXXXXXX */
		if(document.forms[0].elements[i].className.match('ukphone') != null){
			
			var ukphoneregex = new RegExp("[0]([0-9]){4,}? ?([0-9]){6,}");
				
			//alert("P: " + document.forms[0].elements[i].value.match(ukphoneregex)) ;
			
			if(document.forms[0].elements[i].value.match(ukphoneregex) == null && document.forms[0].elements[i].value != ""){
				UKphoneValid = 0 ;
			}
			
			 
		}
		
	}
	
	
	
	/** Checks to see if rules have failed and compiles the errorsCode whilst setting returnvalue to false ensuring form does not send **/
		
	if(allRequested == 0){
		errorsCode += "You must fill out all required fields to submit this form.<br />" ;
		returnvalue = false ;
	}
	
	if(emailValid == 0){
		errorsCode += "The provided e-mail address is invalid!<br />" ;
		returnvalue = false ;
	}
	
	if(UKpcValid == 0){
		errorsCode += "The postcode provided is not recognised as a UK postcode!<br />" ;
		returnvalue = false ;
	}
	
	if(UKphoneValid == 0){
		errorsCode += "A phone number provided is not recognised as a UK number!<br />" ;
		returnvalue = false ;
	}
	
	if(tbRequired == 0){
		errorsCode += "The required tickbox has not been ticked!<br />" ;
		returnvalue = false ;
	}
	
	if(errorsCode != ""){
		document.getElementById("errorbox").innerHTML = "<span>Form not sent because...</span><br />" ;
		document.getElementById("errorbox").innerHTML += errorsCode ;
		document.getElementById("errorbox").innerHTML += "<span>Please review and try again!</span>" ;
	}
	return returnvalue ;
		

}