function DisplayReqFields(objForm) {
	for (i=0; i < objForm.length; i++) {
		if (objForm[i].type == 'checkbox' || objForm[i].type == 'radio') {
			if (objForm[i].getAttribute('required') == 'true' && !objForm[i].checked) {
				objForm[i].style.backgroundColor = '#FFFF99';
			}
		} else {
			if (objForm[i].getAttribute('required') == 'true' && objForm[i].value.length == 0) {
				objForm[i].style.backgroundColor = '#FFFF99';
			}
		}
	}
}
// Validate Required Fields
function ValidateReqFields(objForm) {
	for (i=0; i < objForm.length; i++) {
		if (objForm[i].getAttribute('formatvalidation') == 'true') {
			if (objForm[i].value.length > 0 && objForm[i].getAttribute('format') == 'email') {
				// REGEX for valid e-mail address
				var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
				if (!re.test(objForm[i].value)) {
					return HighlighReqField(objForm[i],'Please enter a valid '+objForm[i].getAttribute('title')+'.');
				} else {
					objForm[i].style.backgroundColor = '#FFFFFF';
				}
			}
			if (objForm[i].value.length > 0 && objForm[i].getAttribute('format') == 'phone') {
				// REGEX for vali US Phone Number
				var re = /^(\()?([0-9]{3})(\)|-)?([0-9]{3})(-)?([0-9]{4}|[0-9]{4})$/;
				if (!re.test(objForm[i].value)) {
					return HighlighReqField(objForm[i],'Please enter a valid '+objForm[i].getAttribute('title')+'.');
				} else {
					objForm[i].style.backgroundColor = '#FFFFFF';
				}
			}
			if (objForm[i].value.length > 0 && objForm[i].getAttribute('format') == 'state') {
				if (objForm[i].value == '*') {
					return HighlighReqField(objForm[i],'Please select a specific U.S. state or territory, Canadian province, or other location.');
				} else if (objForm[i].value.length == 0) {
					return HighlighReqField(objForm[i],'Your Location is required');
				}
			}
		}
		if (objForm[i].getAttribute('required') == 'true') {
			if (objForm[i].type == 'checkbox') {
				if (objForm[i].length) {
					var ok = false;
					for (j=0; i < objForm[i].length; j++) {
						if (objForm[i][j].checked) ok = true;
					}
					if (!ok) return HighlighReqField(objForm[i],objForm[i].getAttribute('title')+' is required.'); else objForm[i].style.backgroundColor = '#FFFFFF';
				} else {
					if (!objForm[i].checked) return HighlighReqField(objForm[i],objForm[i].getAttribute('title')+' is required.'); else objForm[i].style.backgroundColor = '#FFFFFF';
				}
			} else if (objForm[i].type == 'radio') {
				var ok = false;
				for (j=0; j < objForm.length; j++) {
					if (objForm[j].name == objForm[i].name && objForm[i].checked == true) {
						ok = true;
					}
				}
				//if (!ok) return HighlighReqField(objForm[i],objForm[i].getAttribute('title')+' is required.'); else objForm[i].style.backgroundColor = '#FFFFFF';
			} else {
				if (objForm[i].value.length == 0) {
					return HighlighReqField(objForm[i],objForm[i].getAttribute('title')+' is required.');
				} else {
					objForm[i].style.backgroundColor = '#FFFFFF';
				}
			}
		}
		if (objForm[i].getAttribute('addressvalidation') == 'true' && objForm[i].getAttribute('addressvalidationfields').length > 0) {
			var aFields = ListToArray(objForm[i].getAttribute('addressvalidationfields'),',');
			for (a=0; a < aFields.length; a++) {
				//alert(aFields[a]);
			}
		}
	}
	return true;
}

// Convert a delimited string into an array
function ListToArray(objList,delimiter) {
	var aArray = new Array();
	var a = 0,item = '';
	for (i = 0; i < objList.length; i++) {
		ch = objList.substring(i,i+1);
		if (ch != delimiter) {
			item += ch;
		} else {
			aArray[a] = item;
			item = '';
			a++;
		}
	}
	aArray[a] = item;
	
	return aArray;
}

// Counts the number words for an input or textarea field
function MaxWords(objItem,maxWords) {
	var words = objItem.value.replace(/\s/g,' ').split(' ');
	var ct = 0;
	for (i=0; i < words.length; i++) if (words[i].length > 0) ct++;
	var divID = objItem.name+'_WordCountDIV';
	if (ct == 1) {
		document.getElementById(divID).innerHTML = ct +' word';
	} else {
		document.getElementById(divID).innerHTML = ct +' words';
	}
}
// Counts the number characters for an input or textarea field
function MaxChars(objItem,maxChars) {
	var divID = objItem.name+'_CharCountDIV';
	var ct = objItem.value.length;
	if (ct == 1) {
		document.getElementById(divID).innerHTML = ct +' character';
	} else {
		document.getElementById(divID).innerHTML = ct +' characters';
	}
	if (ct > maxChars) {
		objItem.value = objItem.value.substring(0,maxChars);
	}
}

// Validate file upload
function ValidateUpload(objForm,fieldName) {
	if (objForm[fieldName].value.length == 0) return HighlighReqField(objForm[fieldName],objForm[fieldName].getAttribute('title'));
}

// Highlight Required Fields
function HighlighReqField(objItem,message,color) {
	if (color == undefined) color = '#FFCC00';
	if (objItem.length) {
		for (i=0; i < objItem.length; i++) objItem[i].style.backgroundColor = color;
	} else {
		objItem.style.backgroundColor = color;
	}
	if (message.length) alert(message);
	return false
}

// AJAX function check
function getXmlHttpRequestObject() {
	try {
		return new XMLHttpRequest();
	} catch(e1) {
		try {
			return new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e2) {
			try {
				return new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e3) {
				alert('Sorry, this browser doesn\'t support XmlHttpRequestObject() functions. Try using a newer browser.');
			}
		}
	}
}

// Time the pause between keystrokes to assist search
start = '';
startCounter = 0;
function startTimer() {
	clearTimeout(start);
	start = setTimeout('startTimer()', 10);
	startCounter++;
}
function suggestInstitution(objForm,objItem) {
	var paused = startCounter;
	startCounter = 0;
	startTimer();

	institutionFormFieldObj = objItem;
	ficeFormFldId = objItem.name+'_ace_fice';
	institutionListID = objItem.name+'_institution_list';
	institutionStatus = objItem.name+'_institution_status';
	ficeFormFieldObj = objForm[ficeFormFldId];
	if (paused > 30 && (suggestInstitutionAJAX.readyState == 4 || suggestInstitutionAJAX.readyState == 0)) {
		document.getElementById(institutionStatus).innerHTML = '<img src=/images/loading_0000cc.gif border=0 />';
		var instName = escape(objItem.value);
		if (instName.length > 2) {
			suggestInstitutionAJAX.open("GET", '/application/suggestInstitutionList.cfm?institutionName='+instName, true);
			suggestInstitutionAJAX.onreadystatechange = displayInstitutionList;
			suggestInstitutionAJAX.send(null);
		} else {
			document.getElementById(institutionListID).style.display = 'none';
		}
	}
}
function displayInstitutionList() {
	if (suggestInstitutionAJAX.readyState == 4) {
		document.getElementById(institutionStatus).innerHTML = '';
		document.getElementById(institutionListID).style.display = '';
		document.getElementById(institutionListID).innerHTML = suggestInstitutionAJAX.responseText;
	}
}
var suggestInstitutionAJAX = getXmlHttpRequestObject();
function selectInstitutionName(InstitutionName,Fice) {
	institutionFormFieldObj.value = InstitutionName;
	ficeFormFieldObj.value = Fice;
	document.getElementById(institutionListID).style.display = 'none';
}

function LookupAuto(objForm,objItem,name,selected) {
	lookupID = 'lookup_div_'+name;
	if (objItem.value.length > 2 && (lookupAutoAJAX.readyState == 4 || lookupAutoAJAX.readyState == 0)) {
		lookupAutoAJAX.open("GET", 'includes/lookup_list.cfm?find='+objItem.value+'&name='+name+'&selected='+selected, true);
		lookupAutoAJAX.onreadystatechange = displayLookupList;
		lookupAutoAJAX.send(null);
	}
}
function displayLookupList() {
	if (lookupAutoAJAX.readyState == 4) {
		document.getElementById(lookupID).style.display = '';
		document.getElementById(lookupID).style.overflowY = 'scroll';
		document.getElementById(lookupID).style.height = '200px';
		document.getElementById(lookupID).innerHTML = lookupAutoAJAX.responseText;
	}
}
function ToggleList(listID) {
	if (document.getElementById(listID).style.display == '') {
		document.getElementById(lookupID).style.display = 'none';
	} else {
		document.getElementById(lookupID).style.display = '';	
	}
}
var lookupAutoAJAX = getXmlHttpRequestObject();
