<!--// Form field validation functions: Copyright, 1998-2004 adpDesign, Liverpool
//   Mods to email verify Sept 17, 1999

	var FORCEUPPER = 1;
	var FORCELOWER = 2;
	var FORCELETTER1UPPER = 4;

	var isError = false;

	function isInError()
	{
		return isError;
	}
	
	function resetError()
	{
		isError = false;
	}
	
	function noSubmit()
	{
		return !(window.event && window.event.keyCode == 13);
	}
	
	function checkHtml(form)
	{
		for(var i = 0; i < form.length; i++)
		{
			var field = form[i];
			var str = field.value;
			
			if(str.indexOf("<") != -1){
				
				doError(field, "Illegal content - '<'", true);
				return false;
			}
			
			if(str.indexOf(">") != -1){
				
				doError(field, "Illegal content - '>'", true);
				return false;
			}
		}
		
		return true;
	}
	
	function setSelectedIndex(selectCtrl, value)
	{
		for(var i = 0; i < selectCtrl.length; i++){
			if(selectCtrl.options[i].value == value){
				selectCtrl.selectedIndex = i;
				return;
			}
		}
	}
	  
	function checkForm()
	{         
		var form = document.forms[0];
		
		for(var i = 0; i < form.length; i++)
		{			
			var field = form[i];
			
			if(field.type == "hidden")
				continue;
						
			if(field.name.indexOf("Name") != -1 && !checkName(field, true))
				return false;
				
			if(field.name.indexOf("EmailAddress") != -1 && !checkEmail(field, true))
				return false;
       
			if(field.name.indexOf("Address1") != -1 && !checkAddress(field, false))
				return false;
						 
		 	if(field.name.indexOf("Address2") != -1 && !checkAddress(field, false))
				return false;		
				
		 	if(field.name.indexOf("City") != -1 && !checkCity(field, false))
				return false; 
				
		 	if(field.name.indexOf("County") != -1 && !checkCounty(field, false))
				return false;
		 		
			if(field.name.indexOf("PostCode") != -1 && !checkPostCode(field, false))
				return false;
				
			if(field.name.indexOf("Country") != -1 && !checkCountry(field, true))
				return false;
				
			if(field.name.indexOf("Telephone") != -1 && !checkPhone(field, false))
				return false;
				
			if(field.name.indexOf("Message") != -1 && !checkMessage(field, true))
				return false;
		}
		
		return true;
	}
	
	function checkName(field, required)
	{
		var name = clean(field, FORCELETTER1UPPER);
	   	  
		if(name.length)
	   		return true;

		else if(!required)
			return true;
				   
		doError(field, "Please enter your name");
		return false;
	}
	
	function checkMessage(field, required)
	{
		field.value = trim(field.value);
		var msg = field.value;
		if(msg.length)
		{
			if(msg.length <= 4096)
				return true;
				
			if(!required)
				return true;
				
			else
				doError(field, "Your message can't exceed 4096 characters");
				
			return false;
		}
			
		else if(!required)
			return true;
			
		doError(field, "Please enter a message");
		return false;
	}
   
	function checkEmail(field, required)
	{  
		var email = clean(field, FORCELOWER);
	  
	 	if(email.length){
			if(emailOK(email))
				return true
			
			doError(field, "Error found in your email address");
			return false;
		}				
		else if(!required)
			return true;
	  
		doError(field, "You must enter an email address");
		return false;
	}
   
	function checkPhone(field, required)
	{
	   var phone = clean(field);
	   
	   if(phone.length){
			phone = phone.replace(/-/g," ");
			field.value = phone;
			phone = phone.replace(/\s/g,"");
			phone = phone.replace(/^\+/,"");

       		if(isNumeric(phone))
	      		return true;
				
			doError(field, "Error in telephone number");
			return false;
	   }
	   else if(!required)
	   	   return true;

	   doError(field, "You must enter a telephone number");
	   return false;
	}
   
	function checkAddress(field, required)
	{
		var address = clean(field, FORCELETTER1UPPER);

		if(address.length)
			return true;
	   
		else if(!required)
	   		return true;
			
		doError(field, "You must enter a valid address");
		return false;
	}
   
	function checkCity(field, required)
	{
		var city = clean(field, FORCELETTER1UPPER);
	   
	   	if(city.length)
			return true;
			
		else if(!required)
			return true;
	   
		doError(field, "You must enter a valid town or city");
		return false;
	}
   
	function checkCounty(field, required)
	{
		var county = clean(field, FORCELETTER1UPPER);
	   
	   if(county.length)
	   	   return true;
	   
	   else if(!required)
			return true;
			
		doError(field, "You must enter a valid county");
		return false;
	} 
   
	function checkPostCode(field, required)
	{
		var pc = clean(field, FORCEUPPER);
		
		if(pc.length){
			
			pc = pc.replace(/\s/g,"");
			
			if(isAlphaNumeric(pc))
				return true;
		  	
			doError(field, "Error in the post code");
			return false;
		}      
		else if(!required)
	   	   return true;
	   
		doError(field, "You must enter a valid post code");
		return false;
	}
	
	function checkCountry(field, required)
	{
		var country = clean(field, FORCEUPPER);
		
		if(country.length)
			return true;
			
		if(!required)
			return true;
			
		doError(field, "Please enter your home country.", false);
		return false;
	}
   
	function emailOK(value)
	{   
		if(!validEmailChars(value)    //valid e-mail chars only                  
		|| !checkAt(value)            //one and one only "@"
		|| !checkPeriod(value)        //no doubles and none at start and end
		||  count(value,"[")>1        //max of one '['
		||  count(value,"]")>1){      //ditto
			return false;
		}
       
		return true;
	}
   
	function validEmailChars(email)
	{  
		if(email.length==0){return false;}
			var test=true;            
      
		if(email.indexOf("[[")!=-1){test=false;}
		if(email.indexOf("]]")!=-1){test=false;}
		if(email.indexOf("[]")!=-1){test=false;}      
		if(email.indexOf("@@")!=-1){test=false;}
		if(email.indexOf("..")!=-1){test=false;}    
		if(email.indexOf(".]")!=-1){test=false;}
		if(email.indexOf("[.")!=-1){test=false;}
		if(email.indexOf(".@")!=-1){test=false;}
		if(email.indexOf("@.")!=-1){test=false;}
		if(email.indexOf("-[")!=-1){test=false;}
		if(email.indexOf("]-")!=-1){test=false;}      
            
		if(test){
			for(var i=0;i<email.length;i++){
				var c=email.charAt(i).toLowerCase();
				if(!((c>="a" && c<="z") ||
						(parseInt(c)<=9) ||
								(c=="@") ||
								(c==".") ||
								(c=="-") ||
								(c=="_") ||
								(c=="[") ||               
								(c=="]"))){
					test=false;
					break;               
				}
			}                     
		}      
		
		return test;
	}
   
	function checkAt(email)
	{
		var pos=email.indexOf('@');
		if(pos<=0 || pos==email.length-1){return false;}
		if(email.indexOf('@',pos+1)>0){return false;}
		return true;
	}
   
	function checkPeriod(email)
	{
		var pos=email.indexOf('.');
		if(pos==0 || pos==email.length-1){return false;}
		while(pos!=-1){
			newPos=email.indexOf('.',pos+1);
			if(newPos==pos+1){return false;}
			pos=newPos;
		}
      
		pos=email.indexOf("@");    
		if(email.indexOf(".",pos)==-1){return false;}
      
		return true;
	}          
 
	function count(s,c)
	{                   //Returns num of chars c in string s
		var num = 0;
		var len = s.length;
		if(len > 0){
			for(var i = 0; i < len; i++){
				if(s.charAt(i) == c){
					num++;
				}
			}
		}
		
		return num;
	}
   
	function trimRight(str)
	{               //Remove trailing spaces chars from str
		while(str.match(/\s$/))
			str = str.replace(/\s$/,"");
			
		return str;
	}
   
	function trimLeft(str)
	{                //Remove leading spaces
		while(str.match(/^\s/))
			str = str.replace(/^\s/,"");
			
		return str;
	}
   
	function trim(str)
	{                    //Remove leading & trailing spaces   
		return trimLeft(trimRight(str));
	}  
	
	function tidy(str)
	{					//reduce embedded multiple spaces to single spaces
		while(str.match(/\s\s/))
			str = str.replace(/\s\s/," ");
			
		return str;
	}
   
	function isAlphaNumeric(str)
	{
		if(!str.length)
			return false;
			
		for(var i = 0; i < str.length; i++){
			var c = str.charAt(i);
			if(!isAlphabetic(c) && !isNumeric(c))
				return false;
		}
		
		return true;
	}
   
	function isAlphabetic(str)
	{
		if(!str.length)
			return false;
	   
		for(var i = 0; i < str.length; i++){
			var code = str.charCodeAt(i);
			if(!((code > 64 && code < 91) || (code > 96 && code < 123)))
				return false;
		}
		   
		return true;
	}

	function isNumeric(str)
	{
		if(!str.length)
			return false;
		  
		for(var i = 0; i < str.length; i++){
			var code = str.charCodeAt(i);
			if(code < 48 || code > 57)
				return false;
		}
		   
		return true;
	}

	function modifyQuotes(str)
	{
		var sQuote = "'";
		var dQuote = "\"";

		while(str.indexOf(dQuote) != -1)
			str = str.replace(dQuote,sQuote);

		return str;
	}
        
	function doError(field, msg, bSelect)
	{   
		alert(msg);
		field.focus();
		
		if(arguments.length < 3 || (arguments.length > 2 && bSelect))
			field.select();
	}
   
	function clean(field, flag)
	{
		var val = tidy(trim(field.value));
		
		if(val.length && arguments.length > 1){
			
			if(flag == FORCEUPPER)
				val = val.toUpperCase();
			
			else if(flag == FORCELOWER)
				val = val.toLowerCase();

			else if(flag == FORCELETTER1UPPER)
				val = val.replace(/\b\w+\b/g, function(word){return word.substring(0,1).toUpperCase() + word.substring(1);});
		}		
			
		field.value = val;			
		return val;
	}
//-->
