/*

This Javascript Source Code is Intellectual Property owned by FrostyLabs LLC. 
You may not do any of the following without prior written permission by FrostyLabs LLC, and not limited to:

duplicate or reuse the Service, Source Code, or any portion of it.
sell, resell, trade, or transfer ownership of the Service or any portion of it. 
take advantage of the Source Code for any profitable purposes.

This property of FrostyLabs LLC is protected through all appropriate laws.

If you have any questions please contact www.FrostyLabs.com

*/

// valid field types		// function called from isFunctions
// integer			// isInteger
// float			// isFloat
// date				// isDate
// text				// is text blank
// select			// is Selected == 0
// phone			// isPhone
// ssn				// isSSN
// zip				// isZip
// dollar			// isDollar
// email			// isEmail
// checkbox			
var debugField;

// 2,3,4 elements should be parallel length arrays
function required(formName, arrFieldsLabels, arrFieldTypes, arrFieldsRequired, sOriginalColor, sErrorColor){
	var bReturn = true;
	for(var z=0; z < arrFieldsRequired.length; z++){
		oField = eval("document." + formName + "." + arrFieldsRequired[z]);
		debugField = arrFieldsRequired[z];
		if(didPass(arrFieldTypes[z], oField)){
			glow(arrFieldsLabels[z], sOriginalColor);						
		}else{
			glow(arrFieldsLabels[z], sErrorColor);
			bReturn = false;
		}
	}
	return bReturn;
}

function invalid(formName, arrFieldsLabels, arrFieldTypes, arrFieldsNonRequired, sOriginalColor, sErrorColor){
	var bReturn = true;
	for(var z=0; z < arrFieldsNonRequired.length; z++){
//		alert(arrFieldsNonRequired[z]);
		oField = eval("document." + formName + "." + arrFieldsNonRequired[z]);
		debugField = arrFieldsNonRequired[z];
//		alert(arrFieldTypes[z]);
		if(arrFieldTypes[z] != "select"){
//			alert(arrFieldsLabels[z]);
			if(oField.value != ""){			
				if(didPass(arrFieldTypes[z], oField)){
					glow(arrFieldsLabels[z], sOriginalColor);						
				}else{
					glow(arrFieldsLabels[z], sErrorColor);
					bReturn = false;
				}
			}else{
				glow(arrFieldsLabels[z], sOriginalColor);										
			}
		}else{
			glow(arrFieldsLabels[z], sOriginalColor);						
		}
	}
	return bReturn;	

}
function didPass(sType, oField){
	try{
	switch(sType.toLowerCase()){
		case "phone":
			if(isPhone(oField.value)){
				return true;
			}else{
				return false;
			}
			break;
		case "ssn":
			if(isSSN(oField.value)){
				return true;
			}else{
				return false;
			}
			break;
		case "zip":
			if(isZip(oField.value)){
				return true;
			}else{
				return false;
			}
			break;
		case "dollar":
			if(isDollar(oField.value)){
				return true;	
			}else{
				return false;
			}
		case "email":
			if(isEmail(oField.value)){
				return true;
			}else{
				return false;
			}
		case "text":
			if(oField.value == ""){
				return false;	
			}else{
				return true;
			}			
			break;
		case "select":
			try{
				if(oField.selectedIndex == 0){
					return false;
				}else{
					return true;
				}
			}catch(e){
				alert(debugField);
			}
			break;
		case "date":
			if(isDate(oField.value)){
				return true;
			}else{
				return false;
			}
			break;
		case "float":
			if(isFloat(oField.value)){
				return true;
			}else{
				return false;
			}
			break;
		case "integer":
			if(isInteger(oField.value)){
				return true;
			}else{
				return false;
			}
			break;
		case "checkbox":
			return oField.checked;
			break;
						
		default:
//			alert("Sorry, Incompatible Field Type");
			return false;
	}
	}catch(e){
		alert(e.description + " " + sType);
	}
}

function throwError(){
	alert("Please Correct Highlighted Field(s) Before Continuing!");
}
