////////////////////

	//BEM FormValidation - Version 2.6 - 24th Feb 06

////////////////////

function ConfirmFormSubmittal(FormNameVar,MessageVar) {
	input_box=confirm(MessageVar);
	if (input_box==true) { 
		document[FormNameVar].submit();
	}
}

////////////////////

function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
		
////////////////////

function Right(str, n){
	if (n <= 0)
	   return "";
	else if (n > String(str).length)
	   return str;
	else {
	   var iLen = String(str).length;
	   return String(str).substring(iLen, iLen - n);
	}
}
				
////////////////////

function ValidateForm(FormNameVar,FieldsVar) {	
	
	var FieldsArrayVar = FieldsVar.split(',');
	var AllowSubmit = 1;
	
		for (i=0; i<parseInt(FieldsArrayVar.length);) {
		
			if (FieldsArrayVar[i+1] == "D") { //DATE
				if (ValidateDate(document[FormNameVar][FieldsArrayVar[i]].value)) {
				} else {
					document[FormNameVar][FieldsArrayVar[i]].select();
					alert('Please enter a valid ' + FieldsArrayVar[i+2]);
					document[FormNameVar][FieldsArrayVar[i]].focus();
					return false
				}
			}
			
			if (FieldsArrayVar[i+1] == "N") { //DATE OR NULL
				if (document[FormNameVar][FieldsArrayVar[i]].value == "") {
					//OK
				} else {
					if (ValidateDate(document[FormNameVar][FieldsArrayVar[i]].value)) {
					} else {
						document[FormNameVar][FieldsArrayVar[i]].select();
						alert('Please enter a valid ' + FieldsArrayVar[i+2]);
						document[FormNameVar][FieldsArrayVar[i]].focus();
						return false
					}
				}
			}				
			
			if (FieldsArrayVar[i+1] == "F") { //FUTURE DATE
				if (ValidateDateFutureOnly(document[FormNameVar][FieldsArrayVar[i]].value)) {
				} else {
					document[FormNameVar][FieldsArrayVar[i]].select();
					alert('Please enter a valid ' + FieldsArrayVar[i+2]);
					document[FormNameVar][FieldsArrayVar[i]].focus();
					return false
				}
			}
			
			if (FieldsArrayVar[i+1] == "P") { //DATE PRIOR TO DESIGNATED
				if (document[FormNameVar][FieldsArrayVar[i]].value == "") {
					//OK
				} else {
					if (ValidateDateBeforeDesignated(Right(FieldsArrayVar[i+2],10), document[FormNameVar][FieldsArrayVar[i]].value)) {
					} else {
						document[FormNameVar][FieldsArrayVar[i]].select();
						alert('Please enter a valid ' + FieldsArrayVar[i+2]);
						document[FormNameVar][FieldsArrayVar[i]].focus();
						return false
					}
				}
			}			
			
			if (FieldsArrayVar[i+1] == "A") { //DATE AFTER DESIGNATED
				if (document[FormNameVar][FieldsArrayVar[i]].value == "") {
					//OK
				} else {
					if (ValidateDateAfterDesignated(Right(FieldsArrayVar[i+2],10), document[FormNameVar][FieldsArrayVar[i]].value)) {
					} else {
						document[FormNameVar][FieldsArrayVar[i]].select();
						alert('Please enter a valid ' + FieldsArrayVar[i+2]);
						document[FormNameVar][FieldsArrayVar[i]].focus();
						return false
					}
				}
			}						
			
			if (FieldsArrayVar[i+1] == "T") { //TEXT
				if (ValidateText(document[FormNameVar][FieldsArrayVar[i]].value)) {
				} else {
					document[FormNameVar][FieldsArrayVar[i]].select();
					alert('Please enter a valid ' + FieldsArrayVar[i+2]);
					document[FormNameVar][FieldsArrayVar[i]].focus();
					return false
				}
			}
			
			if (FieldsArrayVar[i+1] == "I") { //INTEGER
				if ((document[FormNameVar][FieldsArrayVar[i]].value) > 0) {
				} else {
					alert('Please enter a valid ' + FieldsArrayVar[i+2]);
					return false
				}
			}
			
			if (Left(FieldsArrayVar[i+1],1) == "V") { //VALUE BETWEEN X AND Y
			
				var ValuesArrayVar = FieldsArrayVar[i+1].split('|');
				
				if (parseFloat(document[FormNameVar][FieldsArrayVar[i]].value) >= parseFloat(ValuesArrayVar[1])) {
				} else {
					alert('Please enter a valid ' + FieldsArrayVar[i+2]);
					return false
				}
			
				if (parseFloat(document[FormNameVar][FieldsArrayVar[i]].value) <= parseFloat(ValuesArrayVar[2])) {

				} else {
					alert('Please enter a valid ' + FieldsArrayVar[i+2]);
					return false
				}
			}
			
			if (FieldsArrayVar[i+1] == "M") { //MONEY > 0
				if ((document[FormNameVar][FieldsArrayVar[i]].value) > 0) {
				} else {
					alert('Please enter a valid ' + FieldsArrayVar[i+2]);
					return false
				}
				if (ValidateMoney(document[FormNameVar][FieldsArrayVar[i]].value)) {
				} else {
					document[FormNameVar][FieldsArrayVar[i]].select();
					alert('Please enter a valid ' + FieldsArrayVar[i+2]);
					document[FormNameVar][FieldsArrayVar[i]].focus();
					return false
				}
			}
			
			if (FieldsArrayVar[i+1] == "X") { //MONEY >= 0
				if ((document[FormNameVar][FieldsArrayVar[i]].value) >= 0) {
				} else {
					alert('Please enter a valid ' + FieldsArrayVar[i+2]);
					return false
				}
				if (ValidateMoney(document[FormNameVar][FieldsArrayVar[i]].value)) {
				} else {
					document[FormNameVar][FieldsArrayVar[i]].select();
					alert('Please enter a valid ' + FieldsArrayVar[i+2]);
					document[FormNameVar][FieldsArrayVar[i]].focus();
					return false
				}
			}
			
			if (FieldsArrayVar[i+1] == "Y") { //MONEY NOT ZERO BUT CAN BE NEGATIVE OR POSITIVE
				if ((document[FormNameVar][FieldsArrayVar[i]].value) < 0 || (document[FormNameVar][FieldsArrayVar[i]].value) > 0) {
				} else {
					alert('Please enter a valid ' + FieldsArrayVar[i+2]);
					return false
				}
				if (ValidateMoney(document[FormNameVar][FieldsArrayVar[i]].value)) {
				} else {
					document[FormNameVar][FieldsArrayVar[i]].select();
					alert('Please enter a valid ' + FieldsArrayVar[i+2]);
					document[FormNameVar][FieldsArrayVar[i]].focus();
					return false
				}
			}
			
			if (FieldsArrayVar[i+1] == "C") { //ASK CONFIRMATION OF THE FORM TO BE SUBMITTED
				input_box=confirm(FieldsArrayVar[i+2]);
				if (input_box==true) {
				} else {
					return false
				}
			}
			
			if (FieldsArrayVar[i+1] == "B") { //CHECKBOX MUST BE TICKED
				if (document[FormNameVar][FieldsArrayVar[i]].checked == true) {
				} else {
					document[FormNameVar][FieldsArrayVar[i]].select();
					alert('Please enter a valid ' + FieldsArrayVar[i+2]);
					document[FormNameVar][FieldsArrayVar[i]].focus();
					return false
				}
			}
			
			if (FieldsArrayVar[i+1] == "E") { //FORM IS USING THE BEM EDITOR
				document[FormNameVar].onsubmit();
			} 
		
		i=i+3
		}
		
	document[FormNameVar].submit();
	
}

////////////////////

function ValidateDate(ValueVar) {

	var DatePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
	var matchArray = ValueVar.match(DatePat);
	
	if (matchArray == null) {
		return false;
	}
	day = matchArray[1];
	month = matchArray[3];
	year = matchArray[4];
	
	if (month < 1 || month > 12) {
		return false;
	}
	
	if (day < 1 || day > 31) {
		return false;
	}
	
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		return false
	}
	
	if (month == 2) { // February leap years
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap)) {
			return false;
	   	}
	}

	return true;

}

////////////////////

function ValidateText(ValueVar) {
	
	if (ValueVar == "") {
		return false;
	}
	return true;
}

////////////////////

function ValidateMoney(ValueVar) {

	var Chars = "0123456789.-";
	DecimalFoundVar = false
  
    if (ValueVar == "") {
		return false;
	}
	
    for (var i = 0; i < ValueVar.length; i++){
	   
       if (Chars.indexOf(ValueVar.charAt(i)) == -1) {
           return false;
       }
	   
	   if (ValueVar.charAt(i) == '.') {
		   if (DecimalFoundVar == false) {
				DecimalFoundVar = true
		   } else {
			     return false;
		   }
	   }
    }
	return true;
}

////////////////////

function ValidateDateFutureOnly(ValueVar) {

	var DatePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
	var matchArray = ValueVar.match(DatePat);
	
	if (matchArray == null) {
		return false;
	}
	day = matchArray[1];
	month = matchArray[3];
	year = matchArray[4];
	
	if (month < 1 || month > 12) {
		return false;
	}
	
	if (day < 1 || day > 31) {
		return false;
	}
	
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		return false
	}
	
	if (month == 2) { // February leap years
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap)) {
			return false;
	   	}
	}
	
	var SelectedDate = new Date(month + "/"+ day + "/" + year);
	
	// Format Todays Date
	var Today = new Date();
	var ThisDay = Today.getDate() - 1;
	var ThisMonth = Today.getMonth() + 1;
	var ThisYear = Today.getFullYear();
	var TodayDate = new Date(ThisMonth + "/" + ThisDay + "/" + ThisYear);
	
	if (SelectedDate > TodayDate) {
		return true;
	} else {
		return false;
	}

}

////////////////////

function ValidateDateAfterDesignated(DesignatedDateVar, ValueVar) {

	//SELECTED DATE
	var DatePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
	var matchArray = ValueVar.match(DatePat);
	
	if (matchArray == null) {
		return false;
	}
	day = matchArray[1];
	month = matchArray[3];
	year = matchArray[4];
	
	if (month < 1 || month > 12) {
		return false;
	}
	
	if (day < 1 || day > 31) {
		return false;
	}
	
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		return false
	}
	
	if (month == 2) { // February leap years
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap)) {
			return false;
	   	}
	}
	
	var SelectedDate = new Date(month + "/"+ day + "/" + year);
	
	
	//DESIGNATED DATE
	var DatePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
	var matchArray = DesignatedDateVar.match(DatePat);
	
	if (matchArray == null) {
		return false;
	}
	day = matchArray[1];
	month = matchArray[3];
	year = matchArray[4];
	
	if (month < 1 || month > 12) {
		return false;
	}
	
	if (day < 1 || day > 31) {
		return false;
	}
	
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		return false
	}
	
	if (month == 2) { // February leap years
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap)) {
			return false;
	   	}
	}
	
	var DesignatedDate = new Date(month + "/"+ day + "/" + year);
	
	if (SelectedDate > DesignatedDate) {
		return true;
	} else {
		return false;
	}

}

////////////////////

function ValidateDateBeforeDesignated(DesignatedDateVar, ValueVar) {

	//SELECTED DATE
	var DatePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
	var matchArray = ValueVar.match(DatePat);
	
	if (matchArray == null) {
		return false;
	}
	day = matchArray[1];
	month = matchArray[3];
	year = matchArray[4];
	

	if (month < 1 || month > 12) {
		return false;
	}
	
	if (day < 1 || day > 31) {
		return false;
	}
	
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		return false
	}
	
	if (month == 2) { // February leap years
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap)) {
			return false;
	   	}
	}
	
	var SelectedDate = new Date(month + "/"+ day + "/" + year);
	
	
	//DESIGNATED DATE
	var DatePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
	var matchArray = DesignatedDateVar.match(DatePat);
	
	if (matchArray == null) {
		return false;
	}
	day = matchArray[1];
	month = matchArray[3];
	year = matchArray[4];
	
	if (month < 1 || month > 12) {
		return false;
	}
	
	if (day < 1 || day > 31) {
		return false;
	}
	
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		return false
	}
	
	if (month == 2) { // February leap years
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap)) {
			return false;
	   	}
	}
	
	var DesignatedDate = new Date(month + "/"+ day + "/" + year);
	
	if (SelectedDate < DesignatedDate) {
		return true;
	} else {
		return false;
	}

}

////////////////////