// ------------------------------
// Validation Checks
// ------------------------------
function ValidateForm(iNumberOfFields, formFields, checkTypes, checkSettings, errorMsgs)
{

	var bHasErrors = false;
	var msgText = "";
	
	
	// Do the Checks
	for(i=0; i<iNumberOfFields; i++) { 
	
		// Perform Required Field Check
		if(checkTypes[i]=='required')
	 	{
			//alert('required check = ' + validate_required(eval(formFields[i])));
			if(validate_required(eval(formFields[i]))== false)
			{
				bHasErrors=true;
				msgText = msgText + errorMsgs[i] + "\n";
		
			}
		}  
		
		
		// Perform min length Field Check
		else if(checkTypes[i]=='min_length')
	 	{
			if(checkMinLength(eval(formFields[i]),eval(checkSettings[i]))==false)
			{
				bHasErrors=true;
				msgText = msgText + errorMsgs[i] + "\n";
		
			}
		}  
		
		// Perform max length Field Check
		else if(checkTypes[i]=='max_length')
	 	{
			if(checkMaxLength(eval(formFields[i]),eval(checkSettings[i]))== false)
			{
				bHasErrors=true;
				msgText = msgText + errorMsgs[i] + "\n";
		
			}
		}  
		
		// Perform isDate Field Check
		else if(checkTypes[i]=='isDate')
	 	{
			if(isDate(eval(formFields[i]))== false)
			{
				bHasErrors=true;
				msgText = msgText + errorMsgs[i] + "\n";
		
			}
		}  
		
		
		// Perform isDate2 Field Check
		else if(checkTypes[i]=='isDate2')
	 	{
			if(isDate2(eval(formFields[i]))== false)
			{
				bHasErrors=true;
				msgText = msgText + errorMsgs[i] + "\n";
		
			}
		}  
		
		// Perform number Field Check
		else if(checkTypes[i]=='isNum')
	 	{
			if(isNum(eval(formFields[i]))== false)
			{
				bHasErrors=true;
				msgText = msgText + errorMsgs[i] + "\n";
		
			}
		}  
		
		
		// Perform index check
		else if(checkTypes[i]=='optionSelected')
	 	{
			if(optionSelected(eval(formFields[i]))== false)
			{
				bHasErrors=true;
				msgText = msgText + errorMsgs[i] + "\n";
		
			}
		}  
		
		
		// Perform postcode check
		else if(checkTypes[i]=='isPostcode')
	 	{
			if(isPostcode(eval(formFields[i]))== false)
			{
				bHasErrors=true;
				msgText = msgText + errorMsgs[i] + "\n";
		
			}
		}  
		
		// Perform postcode check
		else if(checkTypes[i]=='isEmail')
	 	{
			if(isEmail(eval(formFields[i]))== false)
			{
				bHasErrors=true;
				msgText = msgText + errorMsgs[i] + "\n";
		
			}
		}  
		
		
	}
	
	if(bHasErrors==true)
	{
		alert(msgText);
	}
	
	return bHasErrors;
}
	


// ------------------------------
// individual functions to check specific things
// these should always return false, if the check is invalid
// ------------------------------

function checkMaxLength(formField, maxLength)
{
	
	var fieldValue = formField.value;
	if (fieldValue.length > maxLength)
	{
		return false;	
	}
	else
	{
		return true;	
	}

}

function checkMinLength(formField, minLength)
{	
	var fieldValue = formField.value;
	if (fieldValue.length < minLength)
	{
		return false;	
	}
	else
	{
		return true;	
	}

}



function validate_required(formField)
{
	with (formField)
		{
		  if (formField.value==null || formField.value=="")
		  {
			  return false; 
		  }
		  else
		  {
		  	return true;
		  }
	}
} 

function isDate(sDate){
   var tDate = sDate.value;
   var re = /^\d{4}\/\d{2}\/\d{2}$/;
   return re.test(tDate);
}

function isDate2(sDate){
   var tDate = sDate.value;
   var re = /^\d{2}\/\d{2}\/\d{4}$/;
   return re.test(tDate);
}

function isNum(num){
   var tNum = num.value;
   var re = /^\d+\.?\d*$/;
   return re.test(tNum);
}

function isPostcode(pcode){
   var post = pcode.value;
   var re = /^(GIR ?0AA|(?:[A-PR-UWYZ](?:\d|\d{2}|[A-HK-Y]\d|[A-HK-Y]\d\d|\d[A-HJKSTUW]|[A-HK-Y]\d[ABEHMNPRV-Y])) ?\d[ABD-HJLNP-UW-Z]{2})$/;
   return re.test(post);
}

function isEmail(email){
   var tEmail = email.value;
   var re = /^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$/;
   return re.test(tEmail);
}

function optionSelected(option)
{
  
    if (option.selectedIndex == 0)
	{
       return false;
    } 
	else 
{
       return true;
   }
}


function validate_email(formField)
{
		with (formField)
			{
			apos=value.indexOf("@");
			dotpos=value.lastIndexOf(".");
				if (apos<1||dotpos-apos<2) 
				  {
					  return false;
				  }
				else 
				{
					return true;
				}
			}
}











