<!--

String.prototype.trim = function() { 
	return this.replace(/^\s+¦\s+$/g,'');
} 

function FormUtil() {
	this.ZIP_CODE_LENGTH = 5;
	this.ZIP_EXT_LENGTH = 4;
	this.EMAIL_ADDRESS_FILTER=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i ;
	this.DIGITS = "0123456789";
	this.PHONE_NUMBER_DELIMITERS = "+()- ";
}

FormUtil.prototype = {

	getObject:function(p_objectId) {
		if (document.getElementById) { // DOM3 = IE5, NS6
			return document.getElementById(p_objectId);
		} else
		if (document.layers) { // Netscape 4
			return document.p_objectId;
		} else { // IE 4
			return document.all.p_objectId;
		}
	},
	
	stripDelimiters:function(p_text, p_delimiters) {   
		var i;
	    var returnString = "";
	    for (i = 0; i < p_text.length; i++) {   
	        var c = p_text.charAt(i);
	        if (p_delimiters.indexOf(c) == -1) returnString += c;
	    }
	    return returnString;
	},

	isInteger:function(p_text){
		var i;
	    for (i = 0; i < p_text.length; i++){   
	        var c = p_text.charAt(i);
	        if (((c < "0") || (c > "9"))) return false;
	    }
	    return true;
	},

	showError:function(p_fieldErrorDivId, p_errorMsg) {
		var fieldErrorDiv = this.getObject(p_fieldErrorDivId);
		if (fieldErrorDiv == null) return;
		fieldErrorDiv.innerHTML = p_errorMsg;
		fieldErrorDiv.style.display = 'block';
	},
	
	hideError:function(p_fieldErrorDivId) {
		var fieldErrorDiv = this.getObject(p_fieldErrorDivId);
		if (fieldErrorDiv == null) return;
		fieldErrorDiv.innerHTML = ''
		fieldErrorDiv.style.display = 'none';
	},

	isFieldFilled:function(p_fieldId, p_fieldErrorDivId, p_errorMsg) {
		var fieldObj = this.getObject(p_fieldId);
		if (fieldObj == null) {
			this.showError(p_fieldErrorDivId, "The field " + p_fieldId + " does not exist!");
			return false;
		}
		if (fieldObj.value == null || fieldObj.value.trim() == "") {
			this.showError(p_fieldErrorDivId, p_errorMsg);
			return false;
		}
		this.hideError(p_fieldErrorDivId);
		return true;
	},
	
	isEmailAddressValid:function(p_fieldId, p_fieldErrorDivId, p_errorMsg, p_mustBeFilled, p_mustBeFilledErrorMsg) {
		var emailAddressField = this.getObject(p_fieldId);
		if (emailAddressField == null) {
			this.showError(p_fieldErrorDivId, "The field " + p_fieldId + " does not exist!");
			return false;
		}
		var emailAddressValue = emailAddressField.value.trim();
		if (emailAddressValue.length != 0) {
			if (! this.EMAIL_ADDRESS_FILTER.test(emailAddressValue)) {
				this.showError(p_fieldErrorDivId, p_errorMsg);
				return false;
			}
		} else
		if (p_mustBeFilled) {
			this.showError(p_fieldErrorDivId, p_mustBeFilledErrorMsg);
			return false;
		}	
		this.hideError(p_fieldErrorDivId);
		return true;
	},


	isZipCodeValid:function(p_fieldId, p_fieldErrorDivId, p_errorMsg, p_mustBeFilled, p_mustBeFilledErrorMsg) {
		var zipCodeField = this.getObject(p_fieldId);
		if (zipCodeField == null) {
			this.showError(p_fieldErrorDivId, "The field " + p_fieldId + " does not exist!");
			return false;
		}
		var zipCodeValue = zipCodeField.value.trim();
		if (zipCodeValue.length != 0) {
			if (zipCodeValue.length != this.ZIP_CODE_LENGTH) {
				this.showError(p_fieldErrorDivId, 'Zip Code must be ' + this.ZIP_CODE_LENGTH + ' digits long!');
				return false;
			}
			if (! this.isInteger(zipCodeValue)) {
				this.showError(p_fieldErrorDivId, p_errorMsg);
				return false;
			}
		} else 
		if (p_mustBeFilled) {
			this.showError(p_fieldErrorDivId, p_mustBeFilledErrorMsg);
			return false;
		}
		this.hideError(p_fieldErrorDivId);
		return true;
	},

	isZipExtValid:function(p_fieldId, p_fieldErrorDivId, p_errorMsg, p_mustBeFilled, p_mustBeFilledErrorMsg) {
		var zipExtField = this.getObject(p_fieldId);
		if (zipExtField == null) {
			this.showError(p_fieldErrorDivId, "The field " + p_fieldId + " does not exist!");
			return false;
		}
		var zipExtValue = zipExtField.value.trim();
		if (zipExtValue.length != 0) {
			if (zipExtValue.length != this.ZIP_EXT_LENGTH) {
				this.showError(p_fieldErrorDivId, 'Zip Extension must be ' + this.ZIP_EXT_LENGTH + ' digits long!');
				return false;
			}
			if (! this.isInteger(zipExtValue)) {
				this.showError(p_fieldErrorDivId, p_errorMsg);
				return false;
			}
		} else
		if (p_mustBeFilled) {
			this.showError(p_fieldErrorDivId, p_mustBeFilledErrorMsg);
			return false;
		}
		this.hideError(p_fieldErrorDivId);
		return true;
	},

	isStateSelected:function(p_fieldId, p_fieldErrorDivId, p_errorMsg) {
		var stateField = this.getObject(p_fieldId);
		if (stateField == null) {
			this.showError(p_fieldErrorDivId, "The field " + p_fieldId + " does not exist!");
			return false;
		}
		if (stateField.selectedIndex == -1 || stateField.selectedIndex == 0) {
			this.showError(p_fieldErrorDivId, p_errorMsg);
			return false;
		}
		this.hideError(p_fieldErrorDivId);
		return true;
	},
	
	isPhoneNumberValid:function(p_fieldId, p_fieldErrorDivId, p_errorMsg, p_mustBeFilled, p_mustBeFilledErrorMsg){
		var phoneNumberField = this.getObject(p_fieldId);
		if (phoneNumberField == null) {
			this.showError(p_fieldErrorDivId, "The field " + p_fieldId + " does not exist!");
			return false;
		}
		var phoneNumberValue = this.stripDelimiters(phoneNumberField.value.trim(), this.PHONE_NUMBER_DELIMITERS);
		if (phoneNumberValue.length != 0) {
			if (! this.isInteger(phoneNumberValue)) {
				this.showError(p_fieldErrorDivId, p_errorMsg);
				return false;
			}
		} else
		if (p_mustBeFilled) {
			this.showError(p_fieldErrorDivId, p_mustBeFilledErrorMsg);
			return false;		
		}	
		this.hideError(p_fieldErrorDivId);
		return true;
	}
	

}
//-->