var NS4=(navigator.appName=="Netscape") && (parseInt(navigator.appVersion)<5); 
var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
var waiting=false;

function PreloadCaptcha() {
    showRecaptcha();
}

function showRecaptcha() {
    Recaptcha.create("6LcSbwwAAAAAAMsRXiDsbrVUe_X92O-LPAtxIY3M", "dynamic_recaptcha_1", {
        theme: "white",
        callback: Recaptcha.focus_response_field
    });
}

var xmlhttp;
function submitFormData(passed)
{
        alert("SubmitFormData: "+passed);
    xmlhttp=null;
    if (window.XMLHttpRequest)
    {// code for IE7, Firefox, Opera, etc.
        xmlhttp=new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (xmlhttp!=null)
    {
        waiting=true;
        xmlhttp.onreadystatechange=state_Change(passed);
        var url = "requestaccount";
        var params = "action=recaptcha&recaptcha_challenge_field=" + Recaptcha.get_challenge() + "&recaptcha_response_field="+Recaptcha.get_response();
        var status = document.getElementById("status");
        status.innerHTML = "<img src='img/ajax-loader.gif'><b>Submitting your data. Please wait...</b>";
        xmlhttp.open("POST",url,true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.setRequestHeader("Content-length", params.length);
        xmlhttp.setRequestHeader("Connection", "close");
        xmlhttp.send(params);
    }
    else
    {
        alert("Your browser does not support XMLHTTP.");
    }
}
function state_Change(passed)
{
    if (xmlhttp.readyState==4)
    {// 4 = "loaded"
        if (xmlhttp.status==200)
        {
            // 200 = "OK"
            var status = document.getElementById("status");
            status.innerHTML = xmlhttp.responseText;;
            Recaptcha.reload();
            setTimeout(function() {
                status.innerHTML = "";
            }, 3000);
        }
        else {
            var status = document.getElementById("status");
            status.innerHTML = xmlhttp.responseText;;
            Recaptcha.reload();
            setTimeout(function() {
                status.innerHTML = "";
            }, 3000);
        }
        waiting=false;
    }
}


/////////////////////////////////////////////////////////////////////////
// Form submit -- calls submit_check form validation
////////////////////////////////////////////////////////////////////////
function submit_check(passed){
//    alert("submit_check: "+passed);

    // alert("submit_check: "+RecaptchaState.valueOf());
    // alert("submit_check: "+RecaptchaState.is_incorrect);
    if(passed.indexOf("Submit")==0){
        if(document.requestaccount.command.value.indexOf('lostCred')>=0){
        }else{
            document.requestaccount.command.value = "Submit";
        }
        //        document.requestaccount.submit.value = "Submit";
        validate(passed);
    }else if(passed.indexOf("Reset")==0){
        //alert("reset");
        document.requestaccount.command.value = "Reset";
//        document.requestaccount.submit.value = "Reset";
        document.requestaccount.submit(this.value);

    }
//        var params = "action=recaptcha&recaptcha_challenge_field=" + Recaptcha.get_challenge() + "&recaptcha_response_field="+Recaptcha.get_response();
//    submitFormData(passed);
//    while(waiting){
//            sleep();
//    }
    //    alert("returning from subcheck");
    return true;
}

function validate(passed){
    // alert("validate");

    //    var passed=document.requestaccount.command.value;
    var requiredfields = "";
    if(document.requestaccount.command.value.indexOf('lostCred')>=0){
        if(document.requestaccount.email.value.length > 0){
            var x = document.requestaccount.email.value;
            var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/;
            if (! filter.test(x)){
                requiredfields += "\n   *  Incorrect email address format (someone@somedomain.com)\n";
                if(document.requestaccount.email.value.indexOf('@') > 0){
                    for (var i=0; i < document.requestaccount.email.value.length; i++) {
                        var letter = document.requestaccount.email.value.charAt(i).toLowerCase();
                        if (validchars.indexOf(letter) != -1)
                            continue;
                        requiredfields += "\n   *  Your email address contains an invalid character " + letter + ".\n";
                    }
                }
            }
        }
        else{
            requiredfields += "\n   *  Email address must be provided";
        }
    }else if(document.requestaccount.verification){
//        alert("Verifying account");
    }else{
        if(! document.requestaccount.acceptTerms.checked){
            requiredfields += "\n   *  You MUST agree to the terms & conditions to receive an account\n";
        }
        //        if(document.requestaccount.user.value.length > 5){
        //            var x = document.requestaccount.user.value;
        //            var filter  = /^([a-zA-Z0-9])+$/;
        //            if (! filter.test(x)){
        //                requiredfields += "\n   *  Incorrect Username format (only letters and numbers please)\n";
        //            }
        //        }
        //        else{
        //            requiredfields += "\n   *  A Username of at least 6 characters must be provided";
        //        }
        //        if(document.requestaccount.pass.value.length > 5){
        //            var x = document.requestaccount.pass.value;
        //            var filter  = /^([a-zA-Z0-9])+$/;
        //            if (! filter.test(x)){
        //                requiredfields += "\n   *  Incorrect Password format (only letters and numbers please)\n";
        //            }
        //        }
        //        else{
        //            requiredfields += "\n   *  A Password of at least 6 characters must be provided";
        //        }
        if(document.requestaccount.email.value.length > 0){
            var x = document.requestaccount.email.value;
            var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/;
            if (! filter.test(x)){
                requiredfields += "\n   *  Incorrect email address format (someone@somedomain.com)\n";
                if(document.requestaccount.email.value.indexOf('@') > 0){
                    for (var i=0; i < document.requestaccount.email.value.length; i++) {
                        var letter = document.requestaccount.email.value.charAt(i).toLowerCase();
                        if (validchars.indexOf(letter) != -1)
                            continue;
                        requiredfields += "\n   *  Your email address contains an invalid character " + letter + ".\n";
                    }
                }
            }
        }
        else{
            requiredfields += "\n   *  Email address must be provided";
        }
    //        if(document.requestaccount.org.value.length > 0){
    //        }
    //        else{
    //            requiredfields += "\n   *  Organization Name must be provided";
    //        }
    }
    if (requiredfields != "") {
        requiredfields ="Please correctly enter the following fields:\n" + requiredfields;
        alert(requiredfields);
        return false;
    }
    else{
        document.requestaccount.captcha_challenge.value = Recaptcha.get_challenge();
        document.requestaccount.captcha_response.value = Recaptcha.get_response();
//alert(document.requestaccount.captcha_challenge.value);
//alert(document.requestaccount.captcha_response.value);
document.requestaccount.command.value = "Submit";
        //        document.requestaccount.submit.value = "Submit";

        //    alert("submit: "+passed);
        document.requestaccount.submit();
        //        document.requestaccount.submit(passed);
        //        alert("submitting: "+document.requestaccount.submit.value+" : command: "+document.requestaccount.command.value);
        //    alert("returning from val");
        return true;
    }
}


/////////////////////////////////////////
// Div Hide/Show functions
////////////////////////////////////////
function hideMenu (MenuName){
    if (NS4){
        eval('document.layers.'+MenuName+'.display="none"');
    } else {
        eval('document.getElementById(\''+MenuName+'\').style.display="none"');
    }
}

function showMenu (MenuName){
    if (NS4){
        eval('document.layers.'+MenuName+'.display="block"');
    } else {
        eval('document.getElementById(\''+MenuName+'\').style.display="block"');
    }
}

function toggleMenu(MenuName){
    if (NS4){
        eval('Shown=document.layers.'+MenuName+'.display;');
    } else {
        eval('Shown=document.getElementById(\''+MenuName+'\').style.display;');
    }
  
    if (Shown=="none"){
        showMenu(MenuName);
    } else {
        hideMenu(MenuName);
    }
}
