// Change background color of form elements
function changeBgColor(id, color) {
	var item;
	
	if (document.getElementById) {
		item = document.getElementById(id);
	} else if (document.all) {
		item = document.all(id);
	}

	if (item && item.style) {
		item.style.backgroundColor = color;
	}
}

//-----------------------------------------------------------------------------
//						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 ValidateQuoteForm() {
	var errmsg = '';
	
	for(i=0; i<document.thisform.elements.length; i++)
	{
		// Check for fields that need SOMETHING entered
		if (document.thisform.elements[i].className.match('required') != null) {
			if (document.thisform.elements[i].type == 'radio') {
				var radio_checked = 0;
				
				for (counter = 0; counter < document.thisform.elements[document.thisform.elements[i].getAttribute('id')].length; counter++)
				{
					if (document.thisform.elements[document.thisform.elements[i].getAttribute('id')][counter].checked == true) {
						radio_checked++;
					}
				}
				
				if (radio_checked == 0) {
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = '#fe5757';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '#000000';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = 'You must select one';
				} else {
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = 'transparent';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "";
				}
			} else {
				if (document.getElementById(document.thisform.elements[i].getAttribute('id')).value == '') {
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = '#fe5757';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '#000000';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = 'This field is required';
					errmsg = errmsg + 'Yes';
				} else if (document.getElementById(document.thisform.elements[i].getAttribute('id')).value != '') {
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = 'transparent';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "";
				}
			}
		}
		
		// Check for fields that need SOMETHING entered, based on the selection of another box
		if (document.thisform.elements[i].className.match('requireif') != null) {
			var namestart = document.thisform.elements[i].className.indexOf('(') + 1;
			var nameend = document.thisform.elements[i].className.indexOf(')');
			var getid = document.thisform.elements[i].className.substring(namestart,nameend);
			
			var answerstart = document.thisform.elements[i].className.indexOf('[') + 1;
			var answerend = document.thisform.elements[i].className.indexOf(']');
			var getanswer = document.thisform.elements[i].className.substring(answerstart,answerend);
			
			if (document.getElementById(getid).value.toLowerCase() == getanswer.toLowerCase()) {
				if (document.getElementById(document.thisform.elements[i].getAttribute('id')).value == '') {
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = '#fe5757';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '#000000';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = 'This field is required, based on a previous selection';
					errmsg = errmsg + 'Yes';
				} else if (document.getElementById(document.thisform.elements[i].getAttribute('id')).value != '') {
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = 'transparent';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "";
				}
			} else if (document.getElementById(getid).value.toLowerCase() != getanswer.toLowerCase()) {
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = 'transparent';
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '';
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "";
			}
		}
		
		// Check for fields that need SOMETHING entered, based on the selection of another box
		if (document.thisform.elements[i].className.match('ifselected') != null) {
			var namestart = document.thisform.elements[i].className.indexOf('(') + 1;
			var nameend = document.thisform.elements[i].className.indexOf(')');
			var getid = document.thisform.elements[i].className.substring(namestart,nameend);
			
			var answerstart = document.thisform.elements[i].className.indexOf('[') + 1;
			var answerend = document.thisform.elements[i].className.indexOf(']');
			var getanswer = document.thisform.elements[i].className.substring(answerstart,answerend);
			
			var radio_checked = 0;
			
			for (counter = 0; counter < document.thisform.elements[getid].length; counter++)
			{
				if (document.thisform.elements[getid][counter].checked == true) {
					var radio_value = counter;
					radio_checked++;
				}
			}
			
			if (radio_checked > 0) {
				if (getanswer.toLowerCase().match(document.thisform.elements[getid][radio_value].value.toLowerCase()) != null) {
					if (document.getElementById(document.thisform.elements[i].getAttribute('id')).value == '') {
						document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = '#fe5757';
						document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '#000000';
						document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = 'This field is required, based on a previous selection';
						errmsg = errmsg + 'Yes';
					} else if (document.getElementById(document.thisform.elements[i].getAttribute('id')).value != '') {
						document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = 'transparent';
						document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '';
						document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "";
					}
				} else if (getanswer.toLowerCase().match(document.thisform.elements[getid][radio_value].value.toLowerCase()) == null) {
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = 'transparent';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "";
				}
			}
		}
		
		// Check for fields that need contain a single email address
		if (document.thisform.elements[i].className.match('email') != null) {
			if (document.getElementById(document.thisform.elements[i].getAttribute('id')).value == '' && document.thisform.elements[i].className.match('required') == null) {
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = 'transparent';
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '';
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "";
			} else if (document.getElementById(document.thisform.elements[i].getAttribute('id')).value != '') {
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = 'transparent';
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '';
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "";
		
				apos = document.getElementById(document.thisform.elements[i].getAttribute('id')).value.indexOf("@")
				dotpos = document.getElementById(document.thisform.elements[i].getAttribute('id')).value.lastIndexOf(".")
				if (apos < 1 || dotpos-apos < 2) {
					errmsg = errmsg + 'Yes';
				}
				if (apos < 1 || dotpos-apos < 2) {
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = '#fe5757';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '#000000';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "Please check the formatting of this address";
					errmsg = errmsg + 'Yes';
				} else if (apos >= 1 || dotpos-apos >= 2) {
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = 'transparent';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "";
				}
			}
		}
		
		// Check for fields that need to be formatted like a phone number - 10 digits, only numeric characters
		if (document.thisform.elements[i].className.match('phone') != null) {
			if (document.getElementById(document.thisform.elements[i].getAttribute('id')).value == '' && document.thisform.elements[i].className.match('required') == null) {
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = 'transparent';
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '';
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "";
			} else if (document.getElementById(document.thisform.elements[i].getAttribute('id')).value != '') {
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = 'transparent';
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '';
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "";
				
				if (document.getElementById(document.thisform.elements[i].getAttribute('id')).value.length != 10) {
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = '#fe5757';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '#000000';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "This field must be 10 digits in length";
					errmsg = errmsg + 'Yes';
				} else if (document.getElementById(document.thisform.elements[i].getAttribute('id')).value.length == 10) {
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = 'transparent';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "";
					
					var checkOK = "0123456789";
					var checkStr = document.getElementById(document.thisform.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.thisform.elements[i].getAttribute('id')+'_box').style.background = '#fe5757';
						document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '#000000';
						document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "Numeric digits only, please";
						errmsg = errmsg + 'Yes';
					} else if (allValid) {
						document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = 'transparent';
						document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '';
						document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "";
					}
				}
				
			}
		}
		
		// Check for fields that need to be formatted like a zip code - 5 or 9 digits, only numeric characters
		if (document.thisform.elements[i].className.match('zip') != null) {
			if (document.getElementById(document.thisform.elements[i].getAttribute('id')).value == '' && document.thisform.elements[i].className.match('required') == null) {
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = 'transparent';
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '';
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "";
			} else if (document.getElementById(document.thisform.elements[i].getAttribute('id')).value != '') {
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = 'transparent';
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '';
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "";
				
				if (document.getElementById(document.thisform.elements[i].getAttribute('id')).value.length != 5 && document.getElementById(document.thisform.elements[i].getAttribute('id')).value.length != 9) {
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = '#fe5757';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '#000000';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "This field must be 5 or 9 digits in length";
					errmsg = errmsg + 'Yes';
				} else if (document.getElementById(document.thisform.elements[i].getAttribute('id')).value.length == 5 || document.getElementById(document.thisform.elements[i].getAttribute('id')).value.length == 9) {
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = 'transparent';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "";
					
					var checkOK = "0123456789";
					var checkStr = document.getElementById(document.thisform.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.thisform.elements[i].getAttribute('id')+'_box').style.background = '#fe5757';
						document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '#000000';
						document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "Numeric digits only, please";
						errmsg = errmsg + 'Yes';
					} else if (allValid) {
						document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = 'transparent';
						document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '';
						document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "";
					}
				}
				
			}
		}
		
		// Check for fields that must contain only numeric characters
		if (document.thisform.elements[i].className.match('numeric') != null) {
			if (document.getElementById(document.thisform.elements[i].getAttribute('id')).value == '' && document.thisform.elements[i].className.match('required') == null) {
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = 'transparent';
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '';
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "";
			} else if (document.getElementById(document.thisform.elements[i].getAttribute('id')).value != '') {
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = 'transparent';
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '';
				document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "";
				
				var checkOK = "0123456789";
				var checkStr = document.getElementById(document.thisform.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.thisform.elements[i].getAttribute('id')+'_box').style.background = '#fe5757';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '#000000';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "Numeric digits only, please";
					errmsg = errmsg + 'Yes';
				} else if (allValid) {
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.background = 'transparent';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_box').style.color = '';
					document.getElementById(document.thisform.elements[i].getAttribute('id')+'_text').innerHTML = "";
				}
				
			}
		}
	}
	
	if (errmsg != '') {
		errmsg = 'There were some errors in this form:\n\nPlease correct these errors and resubmit.\n\nErrors are marked in red.\n\n';
		alert(errmsg);
		return false;
	}
	
	if (errmsg == '') { 
		return true;
	}
}

//-----------------------------------------------------------------------------
//						END MASTER VALIDATION
//-----------------------------------------------------------------------------