function validateNumber(FNumber,FAllowZero)
{
if (FAllowZero)
{
	var pattern = /\D/;
	PosText = "";
}
else
{
	var pattern = /\D|^0/;
	PosText = "postive ";
}
if (pattern.test(FNumber.value))
{
	message = "This field accepts " + PosText + "whole numbers only.\n\n"
	message += "Please try again.  Thank you."
	alert(message);
	FNumber.value = FNumber.defaultValue;
	FNumber.focus();
	return false;
}
else
	return true;
}

function validateEmail(FEmail)
{
if (FEmail.value == "")
	return true;
else if ((FEmail.value.indexOf(".") == -1) || (FEmail.value.indexOf("@") == -1) || (FEmail.value.indexOf(" ") != -1))
{
	message = "You have entered an invalid e-mail address.\n\n"
	message += "Please try again.  Thank you."
	alert(message);
	FEmail.value = FEmail.defaultValue;
	FEmail.focus();
	return false;
}
else
	return true;
}

function changeState(FState,FCountry)
{
stateValue = selectValue(FState);
firstSemicolonPos = stateValue.indexOf(";");
lastSemicolonPos = stateValue.lastIndexOf(";");
if (firstSemicolonPos != -1)
{
	if (firstSemicolonPos == lastSemicolonPos)
		setSelectBox(FCountry,stateValue.slice(firstSemicolonPos+1));
	else
		setSelectBox(FCountry,stateValue.slice(firstSemicolonPos+1,lastSemicolonPos));
}
}

function changeCountry(FCountry,FState)
{
countryValue = selectValue(FCountry);
firstSemicolonPos = countryValue.indexOf(";");
lastSemicolonPos = countryValue.lastIndexOf(";");
if (firstSemicolonPos != -1)
{
	if (firstSemicolonPos == lastSemicolonPos)
		setSelectBox(FState,countryValue.slice(firstSemicolonPos+1));
	else
		setSelectBox(FState,countryValue.slice(firstSemicolonPos+1,lastSemicolonPos));
}
}

function validateState(FState,FCountry)
{
stateValue = selectValue(FState);
stateFirstSemicolonPos = stateValue.indexOf(";");
stateLastSemicolonPos = stateValue.lastIndexOf(";");
countryValue = selectValue(FCountry);
countryFirstSemicolonPos = countryValue.indexOf(";");
countryLastSemicolonPos = countryValue.lastIndexOf(";");

if (stateFirstSemicolonPos == -1)
	stateCountry = "";
{
	if (stateFirstSemicolonPos == stateLastSemicolonPos)
		stateCountry = stateValue.slice(stateFirstSemicolonPos+1);
	else
		stateCountry = stateValue.slice(stateFirstSemicolonPos+1,stateLastSemicolonPos);
}

if (countryFirstSemicolonPos == -1)
	countryState = "";
{
	if (countryFirstSemicolonPos == countryLastSemicolonPos)
		countryState = countryValue.slice(countryFirstSemicolonPos+1);
	else
		countryState = countryValue.slice(countryFirstSemicolonPos+1,countryLastSemicolonPos);
}

if ((stateCountry == "") && (countryState == ""))
	return false;
else if (stateCountry == selectText(FCountry))
	return true;
else if (countryState == selectText(FState))
	return true;
else
	return false;
}

function trim(FString)
{
return FString.replace(/^\s*|\s*$/g,"");
}

function selectText(FSelectBox)
{
textValue = FSelectBox.options[FSelectBox.selectedIndex].text;
return trim(textValue);
}

function selectValue(FSelectBox)
{
return FSelectBox.options[FSelectBox.selectedIndex].value;
}

function setSelectBox(FSelectBox,FText)
{
for (Fi=0; Fi < FSelectBox.length; Fi++)
{
	if (FSelectBox.options[Fi].text == FText)
	{
		FSelectBox.selectedIndex = Fi;
		break;
	}
}
}

function checkAlphanumeric(FInput,FName)
{
var pattern = /[^a-zA-Z0-9]/;
if (pattern.test(FInput.value))
{
	alert(FName + " accepts only letters and numbers.\n\nPlease try again.");
	FInput.value = FInput.defaultValue;
	FInput.focus();
}
}

function validateExpDate(FExpMonth,FExpYear)
{
curDate = new Date();
if ((FExpMonth.selectedIndex < curDate.getMonth()) && (FExpYear.selectedIndex == 0))
	return false;
else
	return true;
}

function promptOther(FSelect,FText)
{
if (FSelect.selectedIndex == FSelect.length-1)
{
	NewText = prompt("Please enter " + FText + ":","");
	if (NewText == null)
		FSelect.selectedIndex = 0;
	else if (NewText == "")
		promptOther(FSelect,FText)
	else
	{
		FSelect.options[FSelect.length-1].text = NewText;
		FSelect.options[FSelect.length-1].value = NewText;
	}
}
}

function validateNoSpace(FInput)
{
if (FInput.value == "")
	return true;
else if (FInput.value.indexOf(" ") != -1)
{
	message = "This field does not accept spaces.\n\n"
	message += "Please try again.  Thank you."
	alert(message);
	FInput.value = FInput.defaultValue;
	FInput.focus();
	return false;
}
else
	return true;
}

function isURL(FValue)
{
var pattern = /^ht{2}ps?:\/{2}/i;
if (pattern.test(FValue))
	return true;
else
	return false;
}

function validateURL(FURL)
{
if (FURL.value == "")
	return true;
else if (isURL(FURL.value))
	return true;
else
{
	message = "This field must begin with http:// or https://.\n\n"
	message += "Please try again.  Thank you."
	alert(message);
	FURL.value = FURL.defaultValue;
	FURL.focus();
	return false;
}
}

function formatPhone (field) {
    field.value = trim(field.value);

    var ov = field.value;
    var v = "";
    var x = -1;

    // is this phone number 'escaped' by a leading plus?
    if (0 < ov.length && '+' != ov.charAt(0)) { // format it
        // count number of digits
        var n = 0;
        if ('1' == ov.charAt(0)) {  // skip it
            ov = ov.substring(1, ov.length);
        }

        for (i = 0; i < ov.length; i++) {
            var ch = ov.charAt(i);

            // build up formatted number
            if (ch >= '0' && ch <= '9') {
                if (n == 0) v += "(";
                else if (n == 3) v += ") ";
                else if (n == 6) v += "-";
                v += ch;
                n++;
            }
            // check for extension type section;
            // are spaces, dots, dashes and parentheses the only valid non-digits in a phone number?
            if (! (ch >= '0' && ch <= '9') && ch != ' ' && ch != '-' && ch != '.' && ch != '(' && ch != ')') {
                x = i;
                break;
            }
        }
        // add the extension
        if (x >= 0) v += " " + ov.substring(x, ov.length);

        // if we recognize the number, then format it
        if (n == 10 && v.length <= 40) field.value = v;
    }
    return true;
}

function clearcols () {
    for (var frm = 0; frm < document.forms.length; frm++) {
        for (var fld = 0; fld < document.forms[frm].elements.length; fld++) {
            var elt = document.forms[frm].elements[fld];
            if (elt.name == "c" || elt.name.substring(0,2) == "c_") {
                elt.checked = false;
            }
        }
    }
}
