//<script>
//Some of the function have not been tested for netscape compatability.
//When run, these function will bring up an alert box with thier name.
//Please check to make sure the function works in netscape THEN comment it out.
var useNetscapeDebugMessages = false;

var valIsOK = true;
var valBadFlds = new Array();
var valSkipValidation = false;
var valCustomValMsg = '';

function confirmDelete(oForm) {
	if (valSkipValidation = confirm('Are you sure?')) {
		var a = oForm.action;
			
		if (a.search(/\?/) >= 0)
			a += '&btnDelete=';
		else
			a += '?btnDelete=';

		oForm.action = a;
		oForm.submit();
	}
}

function valResetForm() {
	for (var i = 0; i < valBadFlds.length; i++ ) {
		valBadFlds[i].style.backgroundColor='#FFFFFF';
	}
	valIsOK = true;
	valCustomValMsg = '';
	valBadFlds = new Array();
}

function valReqdEntry(oFld) {
//alert('valReqdEntry');
	var sFldType = new String;
if (! oFld.type) {
	sFldType = oFld[0].type;
} else {
	sFldType = oFld.type;
}
//alert(sFldType);

	switch (sFldType.toLowerCase())
	{
		case 'select\-one':
			if(oFld.options[oFld.selectedIndex].value != '')
				return true;
			break;
		case 'select-multiple':
			if(oFld.options[oFld.selectedIndex].value != '')
				return true;
			break;
		case 'radio':
			if(getRadioValue(oFld) != '' )
				return true;
			break;
		case 'checkbox':
			if (oFld.checked) 
				return true;
			break;
		default:
			if(oFld.value.length > 0)
				return true;
			break;
	}

	if (valCustomValMsg.isEmpty() && typeof(valCustomMsgEvent) != 'undefined')
		valCustomValMsg = '\n' + valCustomMsgEvent(oFld.name);
	valSetBadField(oFld);
	return false;
}

function valDate(oFld) {
//alert('valDate');
	if ( oFld.value.isEmpty() ) return true;
	if ( oFld.value.isDate() ) {
		oFld.value = oFld.value.formatDate();
		return true;
	}
	valSetBadField(oFld);
	return false;
}

function valNumber(oFld) {
if (useNetscapeDebugMessages) alert('valNumber');
	if ( oFld.value.isEmpty() ) return true;
	if (oFld.value.numericOnly().length == oFld.value.length) return true;
	valSetBadField(oFld);
	return false;
}

function valInteger(oFld)
{
if (useNetscapeDebugMessages) alert('valInteger');
	if ( oFld.value.isEmpty() ) return true;
//alert(oFld.value);
//alert(isNaN(oFld.value));
//alert(Math.round(oFld.value));
	if (!isNaN(oFld.value))
	{
		if (oFld.value > 0)
		{
			//alert("error");
			var n = Math.round(oFld.value);
			oFld.value = n;
			return true;		
		}

	}
	valSetBadField(oFld);
	valCustomValMsg = '\nEnter only numbers greater than zero in numeric fields.';
	return false;
}

function valFloat(oFld) {
if (useNetscapeDebugMessages) alert('valFloat');
	if ( oFld.length > 1 ) return true;	//<------------ needs work here - TODO
	if ( oFld.value.isEmpty() ) return true;
	var s = oFld.value.floating() + '';
	if ((oFld.value.floating() * 1) == (oFld.value * 1)) return true;
	if (s.length == oFld.value.length) return true;
	valSetBadField(oFld);
	return false;
}

function valEmail(oFld) {
//alert('valEmail');
	if ( oFld.value.isEmpty() ) return true;
	if ( oFld.value.indexOf('@') > 0 ) {
		return true;
	}
	valSetBadField(oFld);
	return false;
}

function valUSPhone(oFld) {
//alert('valUSPhone');
	if ( oFld.value.isEmpty() ) return true;
	var s = oFld.value.numericOnly();
	if ( s.length > 9 ) {
		oFld.value = oFld.value.formatUSPhone();
		return true;
	}
	valSetBadField(oFld);
	return false;
}

function valUSZipCode(oFld) {
//alert('valUSZipCode');
	if ( oFld.value.isEmpty() ) return true;
	return true;
}

function valCCNumber(oFld) {
if (useNetscapeDebugMessages) alert('valCCNumber');
	if ( oFld.value.isEmpty() ) return true;
	return true;
}

function valCCExpireDate(oFld) {
if (useNetscapeDebugMessages) alert('valCCExpireDate');
	if ( oFld.value.isEmpty() ) return true;
	var a = oFld.value.split('/')
	if ( a.length == 2 ) {
		oFld.value = ('00' + a[0]).right(2) + "/" + a[1].right(2);
		return true;
	}
	valSetBadField(oFld);
	return false;
}

function valCountryNeedState(oCtySel, oStaSel, nUSCountryCode) {
//alert('valCountryNeedState');
	if ( oCtySel.options[oCtySel.selectedIndex].value != nUSCountryCode ) {
		oStaSel.selectedIndex = 0;
		return true;
	}
	else if ( oCtySel.options[oCtySel.selectedIndex].value == nUSCountryCode && oStaSel.options[oStaSel.selectedIndex].value != '') {
		return true;
	}
	
	if (valCustomValMsg.isEmpty() && typeof(valCustomMsgEvent) != 'undefined')
		valCustomValMsg = '\n' + valCustomMsgEvent(oStaSel.name);
	valSetBadField(oStaSel);
	return false;
}

function valIsEqual(oFld1, oFld2) {
	if (oFld1.value == oFld2.value) return true;
	
	valSetBadField(oFld2);
	return false;
}

function valSetBadField(oFld1, oFld2) {
//alert('valSetBadField2');
	if ( oFld1.value == oFld2.value ) {
		return true;
	}
	valSetBadField(oFld2);
	return false;
}


function valSetBadField(oFld) {
//alert('valSetBadField');
	var sFldType = new String;
if (! oFld.type) {
	sFldType = oFld[0].type;
} else {
	sFldType = oFld.type;
}
	switch (sFldType.toLowerCase())
	{
		case 'select-one', 'select-multiple':
			//oFld.style.backgroundColor ='#7FFF00';
			valBadFlds[valBadFlds.length] = oFld;
			break;
		case 'radio':
			for ( var i = 0; i < oFld.length; i++ ) {
				//oFld[i].style.backgroundColor ='#7FFF00';
				valBadFlds[valBadFlds.length] = oFld[i];
			}
			break;
		default:
			oFld.style.backgroundColor ='#7FFF00';
			
			valBadFlds[valBadFlds.length] = oFld;
			break;
	}

	valBadFlds[0].focus();
	if (valBadFlds[0].select) valBadFlds[0].select();
	valIsOK = false;
}

function setCheckBox(oChkBox, vValue) {
	if (oChkBox) oChkBox.checked = (vValue == true || vValue == 'Y');
}

function setSelect(oSelect, vValue) {
	var cOpts = oSelect.options;
	var iNumOpts = cOpts.length;

	for (var i = 0; i < iNumOpts; i++)
	{
		var eOpt = cOpts[i];
		if (eOpt.value == vValue)
		{
			oSelect.selectedIndex = i;
			return true;
		}
	}
}

function setRadio(oRadio, vValue) {
	if ( oRadio && oRadio.length > 0 ) {
		for ( var i = 0; i < oRadio.length; i++ ) {
			if ( oRadio[i].value == vValue ) {
				oRadio[i].checked = true;
				return;
			}
		}
	} else if (oRadio) oRadio.checked = (oRadio.value == vValue);
}

/*
function valFormRegExpr(aParam, oForm) {
    var oExprText
    for (var i = 0; i < aParam.length; i += 2)
    {
        oExprText = new RegExp(aParam[i+1], 'g');
        if (!oExprText.test(oForm[aParam[i]].value)) {
            oForm[aParam[i]].focus();
            alert('Please enter the correct text into the textbox');
            return false;
        }
    }
    return true;
}

function valFormReqdEntry(oDoc, oFlds) {
	for (var key in oFlds) {
		if (oDoc.all[oFlds[key]].value == '') {
			alert('Please enter a value for ' + key);
			oDoc.all[oFlds[key]].focus();
			return false;
		}
	}
	return true;
}

function valFieldDate(oFld, sMsg) {
	if (oFld.value.length < 1) return true;
	if (isDate(oFld.value)) {
		oFld.value = formatDate(oFld.value);
		return true;
	}
	if (sMsg) sMsg = " for " + sMsg; else sMsg = "";
	alert("Please enter a valid date (m/d/yyyy)" + sMsg);
	oFld.focus();
	return false;
}


function isFormDirty(eForm, bCheckFirstOne) 
{
	var nSelStart = 0;
	var iNumElems = eForm.elements.length;
	var eElem;
	
	if(bCheckFirstOne != null) 
	{
		if(!bCheckFirstOne) 
		{
		    nSelStart = 1;
		}
	}

	for(var i = 0; i < iNumElems; i++) 
	{
		eElem = eForm.elements[i];
		
		// The textbox type is used for netscape 6!!!...
	    if("text" == eElem.type | "textbox" == eElem.type | "hidden" == eElem.type | "TEXTAREA" == eElem.tagName) 
	    {
			if(eElem.value != eElem.defaultValue) 
			{
			    return true;
			}
		}
		else 
		if("checkbox" == eElem.type || "radio" == eElem.type) 
		{
			if (eElem.checked != eElem.defaultChecked) 
			{
			    return true;
			}
		} 
		else 
		if("SELECT" == eElem.tagName) 
		{
			var cOpts    = eElem.options;
			var iNumOpts = cOpts.length;
			
			for(var j = nSelStart; j < iNumOpts; j++) 
			{
				var eOpt = cOpts[j];
				
				if(eOpt.selected != eOpt.defaultSelected) 
				{
				    return true;
				}
			}
		}
	}
	
	return false;
}

function isOK2LeaveForm(oForm) {
	if (isDirty(oForm)) {
		alert('You must save or cancel the changes you have made to this form before you can use this option.');
		return false;
	}
	return true;
}

function isOK2DeleteRec(bShowActive) {
	var sMsg = 'WARNING: Clicking OK will permanently delete this record.';
	if (bShowActive == null) { bShowActive = true };
	
	if (bShowActive) { sMsg += '\nYou can also click CANCEL and set active to \'No\' to remove\nthis record from view without permanently deleting\nthis record.'; }
	
	if (confirm(sMsg)) {
		valSkipValidation = true;
		return true;
	}
	return false;
}

function delRec(sMsg, oForm) {
	var sAddon = 'Are you sure you wish to delete this record.';
	if (sMsg != null) {
		if (sMsg != '')
			sMsg = sMsg + '\n\n' + sAddon;
		else
			sMsg = sAddon;
	}
						
	if (confirm(sMsg))
		oForm.submit();
}


function valSearchText()
	{

		alert('valSearchText');
		return false;
	}
	

//************************************************************************************************
//CHANGE LOG
//************************************************************************************************
//dam 2/6/03
//Edited valSetBadFld so that both IE and Nav use same call to set background color

*/
