var sErrors;     
function doForm(sAction, sDomain, sState)
{ 

    //document.getElementById("ctl00_ContentPlaceHolder1_lblMess").value = "";

    sErrors = "";
    validateYourName();
    validateCompany();
    validatePhone();
    validateFax();
    validateEmail();  
    validateAddress();
    validateCity();
    validateState();
    validateZip();
    validateQuestion();
    if (sErrors == "")
    {
        if (document.getElementById("ctl00_ContentPlaceHolder1_ddlState"))
        {
            var e = document.getElementById("ctl00_ContentPlaceHolder1_ddlState"); 
            var strUser = e.options[e.selectedIndex].value;
 
            document.getElementById("ctl00_ContentPlaceHolder1_hdnStateCode").value = strUser;
        }
 
        document.getElementById("ctl00_ContentPlaceHolder1_hdnAct").value = sAction;

        return true;          
    }
    else
    {
        //remove initial <br>
        sErrors = sErrors.substring(4, sErrors.length);
        document.getElementById("ctl00_ContentPlaceHolder1_lblMess1").innerHTML = sErrors;
        return false;
    }
}

var sBadOnes;
var iBadOnes;
function catchBadChars(sID)
{
    iBadOnes = 0;
    sBadOnes = "";
    var s = document.getElementById(sID).value;
    var sAllowed = "\"' ,-_+.&";  //notice there is a space in sAllowed. we need to allow spaces.
    //var sAllowed = ",\"'&-+_.";
    var regExp = /^([a-zA-Z]|\d)$/;
    for (var i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (c.match(regExp))
        {}  
        else
        {
                if (sAllowed.indexOf(c) > -1)
                {
                }
                else
                {
                    iBadOnes += 1;
                    sBadOnes = sBadOnes + " " + c;
                }           
         }
    }
    sBadOnes = htmlEncode(sBadOnes);
    if (iBadOnes == 0)
        {return true;}
    else 
        {return false;}
}//catchBadChars

function htmlEncode(s) 
{
    var str = new String(s);
    str = str.replace(/&/g, "&amp;");
    str = str.replace(/</g, "&lt;");
    str = str.replace(/>/g, "&gt;");
    str = str.replace(/"/g, "&quot;");
    return str;
} 
function validateYourName() {
   
    var sID = "ctl00_ContentPlaceHolder1_txtName";
    var sLabel = "Your name";
    bAtLeastOK = textBoxAtLeast(sID, 1)
    bCatchOK = catchBadChars(sID, sBadOnes)
    if (bAtLeastOK == true && bCatchOK == true)
    {
        document.getElementById(sID).className = "NoErr";
    }
    else
    {
        document.getElementById(sID).className = "Err";
    }
    if (bAtLeastOK == false)
    {
        sErrors = sErrors + "<br>Please fill in '" + sLabel + "'.";
    }
    if (bCatchOK == false)
    {
        var sPlural;                
        if (iBadOnes == 1){sPlural = "This character is";}
        else{sPlural = "These characters are";}
        sErrors = sErrors + "<br>" + sPlural + " not allowed in '" + sLabel + "': " + sBadOnes;
    }

}//validateYourName
function validateCompany() {
    
    var sID = "ctl00_ContentPlaceHolder1_txtCompany";
    var sLabel = "Company";
    bCatchOK = catchBadChars(sID, sBadOnes)
    if (bCatchOK == true)
    {
        document.getElementById(sID).className = "NoErr";
    }
    else
    {
        var sPlural;                
        if (iBadOnes == 1){sPlural = "This character is";}
        else{sPlural = "These characters are";}
        sErrors = sErrors + "<br>" + sPlural + " not allowed in '" + sLabel + "': " + sBadOnes;
        document.getElementById(sID).className = "Err";
    }

}//validateCompany

function validatePhone() {
    
    var sID = "ctl00_ContentPlaceHolder1_txtPhone";
    var bOK = textBoxIsPhone(sID);
    if (bOK == true)
    {
        document.getElementById(sID).className = "NoErrPhone";        
    }
    else
    {   
        sErrors = sErrors + "<br>Please fill in a valid phone number, e.g. xxx-xxx-xxxx."
        document.getElementById(sID).className = "ErrPhone";
    }
}

function validateFax() {
   
    var sID = "ctl00_ContentPlaceHolder1_txtFax";
    var sVal = document.getElementById(sID).value;
    sVal = sVal.replace(/^\s+|\s+$/g,""); //trims off start and end spaces
    if (sVal == "")
    {
        document.getElementById(sID).className = "NoErrPhone";
        return;
    }
    var bOK = textBoxIsPhone(sID);
    if (bOK == true)
    {
        document.getElementById(sID).className = "NoErrPhone";        
    }
    else
    {   
        sErrors = sErrors + "<br>Please fill in a valid fax number, e.g. xxx-xxx-xxxx."
        document.getElementById(sID).className = "ErrPhone";
    }
}

function validateEmail()
{
    var sID = "ctl00_ContentPlaceHolder1_txtEmail";
    var bOK = textBoxIsEmail(sID);
    if (bOK == true)
    {
        document.getElementById(sID).className = "NoErr";        
    }
    else
    {   
        sErrors = sErrors + "<br>Please fill in a valid email address so we can respond to your inquiry."
        document.getElementById(sID).className = "Err";
    }
}

function validateAddress()
{
    var sID = "ctl00_ContentPlaceHolder1_txtAddress";
    if (document.getElementById(sID))
    {
        var bOK = textBoxAtLeast(sID, 1);
        if (bOK == true)
        {
            document.getElementById(sID).className = "NoErr";        
        }
        else
        {   
            sErrors = sErrors + "<br>Please fill in 'Address'."
            document.getElementById(sID).className = "Err";
        }
    }
}
function validateCity()
{
    var sID = "ctl00_ContentPlaceHolder1_txtCity";
    if (document.getElementById(sID))
    {
        var bOK = textBoxAtLeast(sID, 1);
        if (bOK == true)
        {
            document.getElementById(sID).className = "NoErr";        
        }
        else
        {   
            sErrors = sErrors + "<br>Please fill in 'City'."
            document.getElementById(sID).className = "Err";
        }
    }
}

function validateState()
{
    var sID = "ctl00_ContentPlaceHolder1_ddlState";
    if (document.getElementById(sID))
    {
        
        doDomainDefines();
/*
        if (g_domain == "other")
        {
            document.getElementById(sID).className = "NoErrState";
            return;
        }
*/
        var bOK = ddlIsSelected(sID);
        if (bOK == true)
        {
            document.getElementById(sID).className = "NoErrState";        
        }
        else
        {   
            sErrors = sErrors + "<br>Please select your " + g_state + ".";
            document.getElementById(sID).className = "ErrState";
        }
    }
}
function validateZip()
{
    var sID = "ctl00_ContentPlaceHolder1_txtZip";
    if (document.getElementById(sID))
    {

        doDomainDefines();

        var sErr = "";
        var bOK;
        var sVal = document.getElementById(sID).value;
        sVal = sVal.replace(/^\s+|\s+$/g,"");  // trims off start and end spaces
        if (g_domain == "au")
        {
            sErr = "Please enter a valid postal code (4 digits).";
            bOK = isValidAuZip(sVal);
        }
        else  if (g_domain == "ca")
        {
            sErr = "Please enter a valid postal code (6 characters).";        
            bOK = isValidCaZip(sVal);
        }
        else if (g_domain == "us")
        {
            sErr = "Please enter a valid zip code (5 digits).";
            bOK = isValidUsZip(sVal);
        }       
        else  //for "other" countries
        {
            bOK = true;
        }     

        if (bOK == true)
        {
            document.getElementById(sID).className = "NoErrZip";
        }
        else
        {
            sErrors = sErrors + "<br>" + sErr;
            document.getElementById(sID).className = "ErrZip";
        }
    }
}
function validateQuestion()
{
    var sID = "ctl00_ContentPlaceHolder1_txtQuestion";
    var bOK = textBoxAtLeast(sID, 10);
    if (bOK == true)
    {
        document.getElementById(sID).className = "NoErrWide"; 
    
    }
    else
    {   
        sErrors = sErrors + "<br>Please provide more detail for your question."
        document.getElementById(sID).className = "ErrWide";
    }
}

var g_domain;   // = au, ca, us, other
var g_state;    // = territory, province, other, state
var g_zip;      // = zip, postal code, zip / postal code

function doDomainDefines()
{
    g_domain = "";
    g_state = "";
    g_zip = "";

    var rdos = document.getElementsByName("ctl00_ContentPlaceHolder1_rdoCountry");
    for (var i = 0; i < rdos.length; i++)
    {
        if (rdos[i].checked == true)
        {
            g_domain = rdos[i].value; break;
        }
    }

    switch (g_domain)
    {
        case "au": 
            g_state = "territory";
            break;
        case "ca": 
            g_state = "province";
            break;
        case "us": 
            g_state = "state";
            break;
        case "other": 
            g_state = "country";
            break;
    }

}

