//-----------------------------------------------------------------------------
//						BEGIN MASTER VALIDATION
//-----------------------------------------------------------------------------

// Validate any form. Use the following keywords in a 'class' tag to make that 
//field get validated. Multiple keywords are ok (Example - class='required email' 
//if you want a field to be both required AND formatted like an email address)
//
// required - Field cannot be blank
// requireif(certainfield)[certainanswer] - Field cannot be blank IF certain field contains certain answer
// ifselected(certainfield)[certainanswer] - Field cannot be blank IF certain answer was selected in certain field, seperate different options by commas (ie. test,test2,test3)
// email - Field must be formatted as a single email address
// phone - Field must be 10 digits in lenght and contain only numbers
// zip - Field must be 5 or 9 digits in length and contain only numbers
// numeric - Field must contain only numbers
function FormValidation(frmID) {
	var i;
	var errmsg = '';
	
	for(i=0; i<document.forms[frmID].elements.length; i++) {
		// Check for fields that need SOMETHING entered
		if (document.forms[frmID].elements[i].className.match('required') != null) {
			if (document.forms[frmID].elements[i].type == 'radio') {
				var radio_checked = 0;
				
				for (counter = 0; counter < document.forms[frmID].elements[document.forms[frmID].elements[i].getAttribute('id')].length; counter++)
				{
					if (document.forms[frmID].elements[document.forms[frmID].elements[i].getAttribute('id')][counter].checked == true) {
						radio_checked++;
					}
				}
				
				if (radio_checked == 0) {
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = '#ffc1c1';
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #c40202';
					errmsg = errmsg + document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).name + ' - You must select one\n';
				} else {
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = 'transparent';
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #d1d1d1';
				}
			} else {
				if (document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value == '') {
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = '#ffc1c1';
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #c40202';				
					errmsg = errmsg + document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).name + ' - This field is required\n';
				} else if (document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value != '') {
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = 'transparent';
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #d1d1d1';
				}
			}
		}
		
		// Check for fields that need SOMETHING entered, based on the selection of another box
		if (document.forms[frmID].elements[i].className.match('requireif') != null) {
			var namestart = document.forms[frmID].elements[i].className.indexOf('(') + 1;
			var nameend = document.forms[frmID].elements[i].className.indexOf(')');
			var getid = document.forms[frmID].elements[i].className.substring(namestart,nameend);
			
			var answerstart = document.forms[frmID].elements[i].className.indexOf('[') + 1;
			var answerend = document.forms[frmID].elements[i].className.indexOf(']');
			var getanswer = document.forms[frmID].elements[i].className.substring(answerstart,answerend);
			
			if (document.getElementById(getid).value.toLowerCase() == getanswer.toLowerCase()) {
				if (document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value == '') {
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = '#ffc1c1';
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #c40202';
					errmsg = errmsg + document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).name + ' - This field is required, based on a previous selection\n';
				} else if (document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value != '') {
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = 'transparent';
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #d1d1d1';
				}
			} else if (document.getElementById(getid).value.toLowerCase() != getanswer.toLowerCase()) {
				//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = 'transparent';
				//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #d1d1d1';
			}
		}
		
		// Check for fields that need SOMETHING entered, based on the selection of another box
		if (document.forms[frmID].elements[i].className.match('ifselected') != null) {
			var namestart = document.forms[frmID].elements[i].className.indexOf('(') + 1;
			var nameend = document.forms[frmID].elements[i].className.indexOf(')');
			var getid = document.forms[frmID].elements[i].className.substring(namestart,nameend);
			
			var answerstart = document.forms[frmID].elements[i].className.indexOf('[') + 1;
			var answerend = document.forms[frmID].elements[i].className.indexOf(']');
			var getanswer = document.forms[frmID].elements[i].className.substring(answerstart,answerend);
			
			var radio_checked = 0;
			
			for (counter = 0; counter < document.forms[frmID].elements[getid].length; counter++)
			{
				if (document.forms[frmID].elements[getid][counter].checked == true) {
					var radio_value = counter;
					radio_checked++;
				}
			}
			
			if (radio_checked > 0) {
				if (getanswer.toLowerCase().match(document.forms[frmID].elements[getid][radio_value].value.toLowerCase()) != null) {
					if (document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value == '') {
						//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = '#ffc1c1';
						//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #c40202';
						errmsg = errmsg + document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).name + ' - This field is required, based on a previous selection\n';
					} else if (document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value != '') {
						//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = 'transparent';
						//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #d1d1d1';
					}
				} else if (getanswer.toLowerCase().match(document.forms[frmID].elements[getid][radio_value].value.toLowerCase()) == null) {
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = 'transparent';
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #d1d1d1';
				}
			}
		}
		
		// Check for fields that need contain a single email address
		if (document.forms[frmID].elements[i].className.match('email') != null) {
			if (document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value == '' && document.forms[frmID].elements[i].className.match('required') == null) {
				//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = 'transparent';
				//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #d1d1d1';
			} else if (document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value != '') {
				//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = 'transparent';
				//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #d1d1d1';
		
				apos = document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value.indexOf('@')
				dotpos = document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value.lastIndexOf('.')
				if (apos < 1 || dotpos-apos < 2) {
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = '#ffc1c1';
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #c40202';
					errmsg = errmsg + document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).name + ' - Please check the formatting of this address\n';
				} else if (apos >= 1 || dotpos-apos >= 2) {
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = 'transparent';
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #d1d1d1';
				}
			}
		}
		
		// Check for fields that need to be formatted like a phone number - 10 digits, only numeric characters
		if (document.forms[frmID].elements[i].className.match('phone') != null) {
			if (document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value == '' && document.forms[frmID].elements[i].className.match('required') == null) {
				//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = 'transparent';
				//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #d1d1d1';
			} else if (document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value != '') {
				//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = 'transparent';
				//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #d1d1d1';
				
				if (document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value.length != 10) {
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = '#ffc1c1';
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #c40202';
					errmsg = errmsg + document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).name + ' - This field must be 10 digits in length\n';
				} else if (document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value.length == 10) {
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = 'transparent';
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #d1d1d1';
					
					var checkOK = '0123456789';
					var checkStr = document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value;
					var allValid = true;
					var x = '';
					for (x = 0;  x < checkStr.length;  x++) {
						ch = checkStr.charAt(x);
						
						for (j = 0;  j < checkOK.length;  j++)
						if (ch == checkOK.charAt(j))
						break;
						
						if (j == checkOK.length) {
							allValid = false;
							break;
						}
					}
					if (!allValid) {
						//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = '#ffc1c1';
						//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #c40202';
						errmsg = errmsg + document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).name + ' - Numeric digits only, please\n';
					} else if (allValid) {
						//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = 'transparent';
						//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #d1d1d1';
					}
				}
				
			}
		}
		
		// Check for fields that need to be formatted like a zip code - 5 or 9 digits, only numeric characters
		if (document.forms[frmID].elements[i].className.match('zip') != null) {
			if (document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value == '' && document.forms[frmID].elements[i].className.match('required') == null) {
				//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = 'transparent';
				//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #d1d1d1';
			} else if (document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value != '') {
				//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = 'transparent';
				//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #d1d1d1';
				
				if (document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value.length != 5 && document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value.length != 9) {
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = '#ffc1c1';
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #c40202';
					errmsg = errmsg + document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).name + ' - This field must be 5 or 9 digits in length\n';
				} else if (document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value.length == 5 || document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value.length == 9) {
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = 'transparent';
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #d1d1d1';
					
					var checkOK = '0123456789';
					var checkStr = document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value;
					var allValid = true;
					var x = '';
					for (x = 0;  x < checkStr.length;  x++) {
						ch = checkStr.charAt(x);
						
						for (j = 0;  j < checkOK.length;  j++)
						if (ch == checkOK.charAt(j))
						break;
						
						if (j == checkOK.length) {
							allValid = false;
							break;
						}
					}
					if (!allValid) {
						//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = '#ffc1c1';
						//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #c40202';
						errmsg = errmsg + document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).name + ' - Numeric digits only, please\n';
					} else if (allValid) {
						//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = 'transparent';
						//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #d1d1d1';
					}
				}
				
			}
		}
		
		// Check for fields that must contain only numeric characters
		if (document.forms[frmID].elements[i].className.match('numeric') != null) {
			if (document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value == '' && document.forms[frmID].elements[i].className.match('required') == null) {
				//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = 'transparent';
				//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #d1d1d1';
			} else if (document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value != '') {
				//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = 'transparent';
				//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #d1d1d1';
				
				var checkOK = '0123456789';
				var checkStr = document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).value;
				var allValid = true;
				var x = '';
				for (x = 0;  x < checkStr.length;  x++) {
					ch = checkStr.charAt(x);
					
					for (j = 0;  j < checkOK.length;  j++)
					if (ch == checkOK.charAt(j))
					break;
					
					if (j == checkOK.length) {
						allValid = false;
						break;
					}
				}
				if (!allValid) {
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = '#ffc1c1';
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #c40202';
					errmsg = errmsg + document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).name + ' - Numeric digits only, please\n';
				} else if (allValid) {
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.background = 'transparent';
					//document.getElementById(document.forms[frmID].elements[i].getAttribute('id')).style.border = '1px solid #d1d1d1';
				}
				
			}
		}
	}
	
	if (errmsg != '') {
		// If there were any errors... display them
		//errmsg = 'There were some errors in this form:\n\nPlease correct these errors and resubmit.\n\nErrors are marked in red.\n\n';
		errmsg = 'There were some errors in this form:\n\nPlease correct these errors and resubmit.\n\n' + errmsg + '\n\n';
		alert(errmsg);

		return false;
	} else { 
		// Otherwise, submit the form
		return true;
	}
}

//-----------------------------------------------------------------------------
//						END MASTER VALIDATION
//-----------------------------------------------------------------------------
