function ValidateForm(FormID){
var BdrRed = "2px Solid red";

var RegXcase = "gi"; // gi = case in-sensitive, g = case sensitive
// Loop thought all form elements, only checking those with an accept attribute
Continue = true;
for(i=0; i<document.getElementById(FormID).elements.length; i++){
	if(document.getElementById(FormID).elements[i].accept){
		// Element has an accept attribute, read-in its value / validation criteria
		var Value = document.getElementById(FormID).elements[i].value;
		var Criteria = document.getElementById(FormID).elements[i].accept.split('{}'); 
		var LabelId = document.getElementById(FormID).elements[i].name+"Lbl";
		var fail = 0;
		// Validate the value by Length
		failV0 = ValLength(Criteria[0],Value);
		// Validate the value by allowed content
		failV1 = ValAllowed(Criteria[1],Value,RegXcase);
		// Validate the value by required content
		failV2 = ValRequired(Criteria[1],Criteria[2],Value,RegXcase);
		// Validate by matches
		failV3 = ValMatch(Criteria[3],Value);
		// If any of the validations have failed do this
		if (failV0==1||failV1==1||failV2==1||failV3==1){
			Continue = false; 	//stop form from submitting
			document.getElementById(FormID).elements[i].className += " redborder";
			// If ErrorMsg and Label Tag exists Output error
			if (Criteria[4] && document.getElementById(LabelId)){document.getElementById(LabelId).innerHTML = Criteria[4];}
		} else{
			// Imput value has validaded OK, ensure no error message or red border show
			//document.getElementById(FormID).elements[i].style.border = "";
			var NewLine = document.getElementById(FormID).elements[i].className.split(' redborder');
			document.getElementById(FormID).elements[i].className = NewLine[0];
			if (Criteria[4] && document.getElementById(LabelId)){document.getElementById(LabelId).innerHTML = "";}
		}
	}
}
// Tell the browser whether to continue submitting the form or not
return Continue;
}
function ValidateElement(ElementID){
var BdrRed = "2px Solid red";
var RegXcase = "gi"; // gi = case in-sensitive, g = case sensitive
// Loop thought all form elements, only checking those with an accept attribute
Continue = true;
	if(document.getElementById(ElementID).accept){
		// Element has an accept attribute, read-in its value / validation criteria
		var Value = document.getElementById(ElementID).value;
		var Criteria = document.getElementById(ElementID).accept.split('{}'); 
		var LabelId = document.getElementById(ElementID).name+"Lbl";
		// Validate the value by Length
		failV0 = ValLength(Criteria[0],Value);
		// Validate the value by allowed content
		failV1 = ValAllowed(Criteria[1],Value,RegXcase);
		// Validate the value by required content
		failV2 = ValRequired(Criteria[1],Criteria[2],Value,RegXcase);
		// Validate by matches
		failV3 = ValMatch(Criteria[3],Value);
		// If any of the validations have failed do this
		if (failV0==1||failV1==1||failV2==1||failV3==1){
			Continue = false; 	//stop form from submitting
			document.getElementById(ElementID).className += " redborder";
			
			// If ErrorMsg and Label Tag exists Output error
			if (Criteria[4] && document.getElementById(LabelId)){document.getElementById(LabelId).innerHTML = Criteria[4];}
		} else{
			// Imput value has validaded OK, ensure no error message or red border show
			var NewLine = document.getElementById(ElementID).className.split(' redborder');
			document.getElementById(ElementID).className = NewLine[0];
			if (Criteria[4] && document.getElementById(LabelId)){document.getElementById(LabelId).innerHTML = "";}
		}
	}
// Tell the browser whether to continue submitting the form or not
return Continue;
}
function ValLength(LengthStr,Value0){
	var fail0 = 0;
	var Length = LengthStr.split('-'); 
	if(Length[0] && Value0.length<Length[0]){fail0=1;}
	else if(Length[1] && Value0.length>Length[1]){fail0=1;}
	return fail0;
}
function ValAllowed(AllowedStr,Value1,RegXcase1){
		var fail1 = 0;
		if(AllowedStr){
			if(AllowedStr == "EmailAdd"){var NotAllowedExp = new RegExp(/[^A-z0-9@\._-]/g);}
			else if(AllowedStr == "WebSite"){var NotAllowedExp = new RegExp(/[^A-z0-9-.\/]|\/(?=\/\/)/g);}
			else if(AllowedStr == "Name"){var NotAllowedExp = new RegExp(/[^A-z\s\'-]|\s(?=\s)|\-(?=\-)/g);}
			else if(AllowedStr == "Date"){var NotAllowedExp = new RegExp(/[^0-9\/]|\/(?=\/)/g);}	
			else if(AllowedStr == "Date2"){var NotAllowedExp = new RegExp(/[^A-z0-9\/]|\/(?=\/)/g);}	
			else if(AllowedStr == "Word"){var NotAllowedExp = new RegExp(/[^A-z-]|\-(?=\-)/g);}
			else if(AllowedStr == "PhoneNumber"){var NotAllowedExp = new RegExp(/[^0-9\s\(\)\+]|\s(?=\s)/g);}
			else if(AllowedStr == "Number"){var NotAllowedExp = new RegExp(/[^0-9]/g);}
			else if(AllowedStr == "FreeText"){var NotAllowedExp = new RegExp(/[^A-z0-9\s\"\'\:\;\(\)\!\£\$\%\&\*,\.\-\_\@\#]|\s(?=\s)|\-(?=\-)/g);}
			else if(AllowedStr == "PostCode"){var NotAllowedExp = new RegExp(/[^A-z0-9\s]|\s(?=\s)/g);}
			else {var NotAllowedExp = new RegExp(AllowedStr.replace("[","[^"),"g");}
																		  
			if (NotAllowedExp.test(Value1)) {fail1=1;}
		}
		return fail1;
}
function ValRequired(AllowedStr,RequiredStr,Value2,RegXcase2){
		var fail2 = 0;
		if(AllowedStr||RequiredStr){
			if(AllowedStr == "EmailAdd"){var RequiredExp = new RegExp(/(?=.*[@])(?=.*[\.])/g);}
			else if(AllowedStr == "WebSite"){var RequiredExp = new RegExp(/[A-z](?=.*[\.])/g);}
			else if(AllowedStr == "Name"){var RequiredExp = new RegExp(/[A-z]/g);}
			else if(AllowedStr == "Date"){var RequiredExp = new RegExp(/^([0-9]){2}(\/){1}([0-9]){2}(\/)([0-9]){4}$/g);}
			else if(AllowedStr == "Date2"){var RequiredExp = new RegExp(/^([0-9]){2}(\/){1}([A-Z]){1}([a-z]){2}(\/)([0-9]){4}$/g);}
			else if(AllowedStr == "Word"){var RequiredExp = new RegExp(/[A-z]/g);}
			else if(AllowedStr == "PhoneNumber"){var RequiredExp = new RegExp(/[0-9]/g);}
			else if(AllowedStr == "Number"){var RequiredExp = new RegExp(/[0-9]/g);}
			else if(AllowedStr == "FreeText"){var RequiredExp = new RegExp(/[A-z]/g);}
			else if(AllowedStr == "PostCode"){var RequiredExp = new RegExp(/[A-z0-9]/g);}
			else {var RequiredExp = new RegExp(RequiredStr,RegXcase2);}  	
			if (!RequiredExp.test(Value2)) {fail2=1;}
		}
		return fail2;
}
function ValMatch(MatchStr,Value3){
		var fail3 = 0;
		if(MatchStr){
			var MatchesFound = 0; var Matches = MatchStr.split('|'); 
			for(m=0; m<Matches.length; m++){if (Matches[m].toLowerCase() == Value3.toLowerCase()) {MatchesFound=1;}}
			if(!MatchesFound==1){fail3=1;}
		}
		return fail3;
}
