
/* validateForm does a generic check for all required fields and throws up warnings*/
function validateForm(formName)
{
	var bErr = 0;
	var formObj = document.getElementById(formName);
	var errorItem; 
	
	//alert(formObj.elements.length);
	
	for (var c=0; c <= formObj.elements.length; c++)
	{
		//alert("name " + formObj[c].name);
		if (! formObj[c]) continue;
		var name = formObj[c].name;

		var errorId = name+'_error';
		if (! document.getElementById(errorId)) continue;
		if (! document.getElementById(name)) continue;
		var formItem = eval("document.getElementById('"+name+"')");
		var itemValue = formItem.value;
		//alert("name " + name);
		//alert(document.getElementById(name) + "\t" + document.getElementById(name).value);
		if (! document.getElementById(errorId)) continue;
		if (! validateNonBlank(itemValue) || (itemValue == "none")){
			if (! document.getElementById(errorId)) continue;
			errorItem = document.getElementById(name);
			bErr = 1;
			//alert(formObj.elements[c].value);
			//alert(document.getElementById(name).name);
			//alert(errorId);
			itemStyle = getStyleObject(errorId);
			itemStyle.display = "inline";
		} else {
			if (! document.getElementById(errorId)) continue;
			itemStyle = getStyleObject(errorId);
			itemStyle.display = "none";
		}
		//alert(formObj[c].name + " ");
	}
	

	if (bErr)
	{ 
		//focus on the item in question
		errorItem.focus();	 
		return bErr;
	} else {
		return bErr;
	}
}


function errorCheck(errorItem,itemValue)
{
	//alert("inn errorCheck");
	//var itemValue = eval("document.custinfo."+errorItem.formField+".value");
	//alert("itemValue " + itemValue + "\n errorItem.errorMessage " + errorItem.errorMessage + "errorItem.fieldType \n" + errorItem.fieldType);
	var errorMessage = errorItem.errorMessage;
	if (errorItem.fieldType == "nonblank")
	{
		if (itemValue.length == 0)
		{
			alert("Please enter a " + errorMessage);
			return false;
		} else {
			return true;
		}
	}	
	
	if (errorItem.fieldType == "string")
	{
		if (! validateString(itemValue))
		{
			alert("Please enter a " + errorMessage);
			return false;
		} else {
			return true;
		}
	
	}
	
	if (errorItem.fieldType == "email")
	{
		if (! validateEmail(itemValue))
		{
			alert("Please enter a " + errorMessage);
			return false;
		} else {
		return true;
		}
	}	
	
	if (errorItem.fieldType == "int")
	{
		if (! validateInt(itemValue))
		{
			alert("Please enter a " + errorMessage);
			return false;
		} else {
			return true;
		}
	}	
	
	if (errorItem.fieldType == "zip")
	{
		if (! validateZip(itemValue))
		{
			alert("Please enter a " + errorMessage);
			return false;
		} else {
			return true;
		}
	}	
} //end of errorCheck

function errorObject(formField,fieldType,errorMessage)
{
	this.formField = formField;
	this.fieldType = fieldType;
	this.errorMessage = errorMessage;
	return this;
} //end of errorObject

function validateNonBlank(field)
{
	//var re = new RegExp("^\w{3}$");
	var re = /[0-9a-zA-Z]{1}/;
	var name = trimValue(field);
	if (re.test(name))
	{
		return true;
	} else {
		return false;
	}
} //end of validateString

function validateString(field)
{
	//var re = new RegExp("^\w{3}$");
	var re = /[a-zA-Z]{2}/;
	var name = trimValue(field);
	if (re.test(name))
	{
		return true;
	} else {
		return false;
	}
} //end of validateString

function validateEmail(field)
{
	var re = /.*@.*\..*/;
	var name = trimValue(field);
	if (re.test(name))
	{
		return true;
	} else {
		return false;
	}
} //end of validateEmail

function validateInt(field)
{
	var re = /[0-9]{1}/;
	var name = trimValue(field);
	if (re.test(name))
	{
		return true;
	} else {
		return false;
	}
} //end of 	validateEmail

function validateZip(field)
{
	var re = /[0-9]{5}/;
	var name = trimValue(field);
	if (re.test(name))
	{
		return true;
	} else {
		return false;
	}
} //end of validateZip

function trimValue(fieldName) // strips off spaces before and after field name
{

	var startIndex, lastIndex;
	var newFieldName, newC;

	lastIndex = fieldName.length-1;
	startIndex = 0;

	newC = fieldName.charAt(startIndex);
	while ((startIndex<lastIndex) && ((newC == " ") || (newC == "\n") || (newC == "\r") || (newC == "\t"))) {
		startIndex++;
		newC = fieldName.charAt(startIndex);
	}

	newC = fieldName.charAt(lastIndex);
	while ((lastIndex>=0) && ((newC == " ") || (newC == "\n") || (newC == "\r") || (newC == "\t"))) {
		lastIndex--;
		newC = fieldName.charAt(lastIndex);
	}
	if (startIndex<=lastIndex) {
		newFieldName = fieldName.substring(startIndex, lastIndex+1);
		return newFieldName;
	} else {
		return fieldName;
	}
} //end of trimValue

function getStyleObject(objectId) 
{
  //alert("looking for " + objectId);
  if (document.getElementById && document.getElementById(objectId)) {
    return document.getElementById(objectId).style;
  } else if (document.all && document.all(objectId)) {
    return document.all(objectId).style;
  } else {
    return false;
  }
}

function debugObject(myObj)
{
	var objStr = "";
	var c = 0;
	for (thisKey in myObj) 
	{

		objStr  += "Item - " + thisKey + "\t Value " + myObj[thisKey]  + "\n";
		//if (c == 40) 
		{
		alert(objStr);
		objStr = "";
		//}
		}
		c++;
	}
}
