﻿var errorMsg = "";
var FormIsValid = "";
var InitContactForm = true;

//sets dropdown values if they are set to be hidden
function SetDropDowns(StateVal,IndustryVal) {
    var state = document.getElementById("State");
    var industry = document.getElementById("Industry");

    var hState = document.getElementById("hState");
    var hIndustry = document.getElementById("hIndustry");
    if (hState!= null && hState.value != undefined) {
        var stateSel = document.getElementById(hState.value.toUpperCase());
        if (stateSel != null) {
            for (var i = 0; i < state.options.length; i++) {
                if (state.options[i].value.toLowerCase() == hState.value.toLowerCase()) {
                    state.options[i].selected = "selected";
                }
            }
        }
    }
    if (hIndustry != null && hIndustry.value != undefined) {
        var industrySel = document.getElementById(hIndustry.value.toUpperCase());
        if (industrySel != null) {
            for (var i = 0; i < industry.options.length; i++) {
                if (industry.options[i].value.toUpperCase() == hIndustry.value.toUpperCase()) {
                    industry.options[i].selected = "selected";
                }
            }
        }
    }
    ShowHideOther();
}
//sets radiobutton values if they are hidden fields
function SetRadioButtonValues() {
    var leads = document.getElementsByName("ReceivingInternetLeads");
    var partner = document.getElementsByName("ReferredPartner");
    var mention = document.getElementsByName("Mention");

    var hLeads = document.getElementById("hReceivingInternetLeads");
    var hPartner = document.getElementById("hReferredPartner");
    var hMention = document.getElementById("hMention");

    if (leads[0] != null && hLeads.value != undefined) {
        if (hLeads.value.toLowerCase() == 'yes') {
            leads[0].checked = "checked";
        }
        else if(hLeads.value.toLowerCase() == 'no'){
            leads[1].checked = "checked";
        }
        else if (hLeads.value.toLowerCase() == 'considering'){
            leads[2].checked = "checked";
        }
    }
    if (partner[0] != null && hPartner.value != undefined) {
        if (hPartner.value.toLowerCase() == 'yes') {
            partner[0].checked = "checked";
        }
        else if (hPartner.value.toLowerCase() == 'no'){
            partner[1].checked = "checked";
        }
    }
    if (mention[0] != null && hMention.value != undefined) {
        if (hMention.value.toLowerCase() == 'yes') {
            mention[0].checked = "checked";
        }
        else if (hMention.value.toLowerCase() == 'no'){
            mention[1].checked = "checked";
        }
    }
    ShowHideReferredInfo();
}

function IsFieldRequired(fieldId,RequiredList) {
    var reqList = RequiredList.split(",");
    for (var i = 0; i < reqList.length; i++) {
        if (reqList[i] == fieldId) {
            return true;
        }
    }
    return false;
}
function IsFieldEmpty(fieldId) {
    var curField = document.getElementById(fieldId);
    if (fieldId == "Phone" || fieldId == "Phone2" || fieldId == "Fax" || fieldId == "ReferralPhone") {
        var part1 = document.getElementById("p" + fieldId + "1");
        var part2 = document.getElementById("p" + fieldId + "2");
        var part3 = document.getElementById("p" + fieldId + "3");
        if (part1 != null && part2 != null && part3 != null) {
            if (part1.value != "" || part2.value != "" || part3.value != "") {
                return false;
            }
            else {
                return true;
            }
        }
    }
    else
    {
        if (curField != null) {
            if (curField.value == "") {
                return true;
            }
            else {
                return false;
            }
        }
    }
    return true;
}
//check if all required fields are entered
function IsRequired(idList) {
    if (idList != "") {
        var ids = idList.split(",");
        var valid = true;

        for (var i = 0; i < ids.length; i++) {
            var fieldContainer = "";
            var field = document.getElementById(ids[i]);
            var reqField = document.getElementById("req" + ids[i]);
            
            var fieldRow;
            //dropdowns
            if (field != null) {
                fieldRow = document.getElementById("ctl01_Field" + ids[i]);
                if (fieldRow != null && fieldRow.style.display != "none") {
                    if (ids[i] == "State" || ids[i] == "Industry") {
                        fieldContainer = document.getElementById("div" + ids[i]);
                        if (fieldContainer != null) {
                            if (ids[i] == "Industry" && field.value == "Other") {
                                var other = document.getElementById("IndustryOther");
                                if (other.value == "") {
                                    reqField.style.display = "";
                                    valid = false;
                                }
                            }
                            if ((ids[i] == "State" || ids[i] == "Industry") && field.value == "-1") {
                                reqField.style.display = "";
                                valid = false;
                            }
                        }
                    }
                }
            }
            if (field != null) {
                fieldRow = document.getElementById("ctl01_Field" + ids[i]);
                if (fieldRow != null && fieldRow.style.display != "none") {
                    //phone numbers
                    if (ids[i] == "Fax" || ids[i] == "Phone" || ids[i] == "Phone2" || ids[i] == "ReferralPhone") {
                        var part1 = document.getElementById("p" + ids[i] + "1");
                        var part2 = document.getElementById("p" + ids[i] + "2");
                        var part3 = document.getElementById("p" + ids[i] + "3");

                        if (part1.value == "") {
                            reqField.style.display = "";
                            valid = false;
                        }
                        if (part2.value == "") {
                            reqField.style.display = "";
                            valid = false;
                        }
                        if (part3.value == "") {
                            reqField.style.display = "";
                            valid = false;
                        }
                    }
                    //textboxes
                    else {
                        if (field != null && field.value == "") {
                            reqField.style.display = "";
                            valid = false;
                        }
                    }
                }
            }
            //radiobuttons
            if (ids[i] == "ReceivingInternetLeads" || ids[i] == "ReferredPartner" || ids[i] == "Mention") {
                var field = document.getElementsByName(ids[i]);

                if (ids[i] == "ReferredPartner") {
                    if (field != null && field.length > 0) {
                        fieldRow = document.getElementById("ctl01_Field" + ids[i]);
                        var v2 = document.getElementById("ReferralCompany");
                        var v3 = document.getElementById("ReferralName");
                        var v4 = document.getElementById("ReferralEmail");
                        var v5 = document.getElementById("pReferralPhone1");
                        var v6 = document.getElementById("pReferralPhone2");
                        var v7 = document.getElementById("pReferralPhone3");
                        
                        var r2 = document.getElementById("ctl01_FieldReferralCompany");
                        var r3 = document.getElementById("ctl01_FieldReferralName");
                        var r4 = document.getElementById("ctl01_FieldReferralEmail");
                        var r5 = document.getElementById("ctl01_FieldReferralPhone");
                        
                        var f2 = document.getElementById("reqReferralCompany");
                        var f3 = document.getElementById("reqReferralName");
                        var f4 = document.getElementById("reqReferralEmail");
                        var f5 = document.getElementById("reqReferralPhone");
                        
                        if (fieldRow != null && fieldRow.style.display != "none") {
                            if (!field[0].checked && !field[1].checked) {
                                reqField.style.display = "";
                                valid = false;
                            }
                            if (r2.style.display != "none" && v2.value == "") {
                                f2.style.display = "";
                                valid = false;
                            }
                            if (r3.style.display != "none" && v3.value == "") {
                                f3.style.display = "";
                                valid = false;
                            }
                            if (r4.style.display != "none" && v4.value == "") {
                                f4.style.display = "";
                                valid = false;
                            }
                            if (r5.style.display != "none" && v5.value == "" && v6.value =="" && v7.value=="") {
                                f5.style.display = "";
                                valid = false;
                            }
                        }
                    }
                }
                else {
                    if (field != null && field.length > 0) {
                        fieldRow = document.getElementById("ctl01_Field" + ids[i]);
                        if (fieldRow != null && fieldRow.style.display != "none") {
                            if (!field[0].checked && !field[1].checked) {
                                reqField.style.display = "";
                                valid = false;
                            }
                        }
                    }
                }
            }
        }
    }
    return valid;
}
// formats phone number for submitting
function GetPhone(phoneId, part1, part2, part3,extension) {
    var phone = document.getElementById(phoneId);
    var p1 = document.getElementById(part1);
    var p2 = document.getElementById(part2);
    var p3 = document.getElementById(part3);
    var ext = document.getElementById(extension);

    if (phone != null && p1 != null && p2 != null && p3 != null) {
        return p1.value + p2.value + p3.value + ext.value;
    }
    else {
        return '';
    }
}

function ResetMessages() {
    var arr = new Array();
    arr = document.documentElement.getElementsByTagName("span");

    for (i = 0; i < arr.length; i++) {
        if (arr[i].id.indexOf("err") >= 0 || arr[i].id.indexOf("req") >= 0) {
            arr[i].style.display = "none";
        }
    }
}
//reset border to original state
function ResetField(id) {
    var field = document.getElementById(id);
    var reqField = document.getElementById("req" + id);

    if (id == "Phone" || id == "Phone2" || id == "Fax" || id=="ReferralPhone") {
        var p1 = document.getElementById("p" + id + "1");
        var p2 = document.getElementById("p" + id + "2");
        var p3 = document.getElementById("p" + id + "3");
        if (p1.value != "" || p2.value != "" && p3.value != "") {
            reqField.style.display = "none";
        }
    }
    else if (id== "Mention" || id=="ReferredPartner" || id=="ReceivingInternetLeads"){
        var field = document.getElementsByName(id);
        if (field[0] != null && (field[0].checked || field[1].checked))
        {
            reqField.style.display = "none";
        }
    }
    else {
        if (field != null && field.value != "") {
            reqField.style.display = "none";
        }
    }
}
//validates dropdown list
function ValidateDropDown(id, name) {
    var dd = document.getElementById(id);
    var FieldRow = document.getElementById("ctl01_Field" + id);
    var errDrop = document.getElementById("err" + id);
    if (dd != null) {
        if (dd.value == "-1") {
            errDrop.style.display = "";
            FormIsValid = false;
            return false;
        }
        else {
            errDrop.style.display = "none";
            return true;
        }
    }
}
//validates email address
function ValidateEmail(id, name) {
    var email = document.getElementById(id);
    var row = document.getElementById("ctl01_Field" + id);
    var errEmail = document.getElementById("err" + id);
    if (row != null) {
        if (email != null) {
            if (!((email.value.indexOf(".") > 2) && (email.value.indexOf("@") > 0))) {
                errEmail.style.display = "";
                FormIsValid = false;
                return false;
            }
            else {
                errEmail.style.display = "none";
                return true;
            }
        }
    }
}
//validates phone number
function ValidatePhone(id, name, part1, part2, part3, extension) {
    var valid = false;
    var phone = document.getElementById(id);
    var p1 = document.getElementById(part1);
    var p2 = document.getElementById(part2);
    var p3 = document.getElementById(part3);
    var ext = document.getElementById(extension);
    var row = document.getElementById("ctl01_Field" + id);
    var errPhone = document.getElementById("err" + id);
    if (row != null) {
        if (phone != null && p1 != null && p2 != null && p3 != null) {
            phone.value = p1.value + p2.value + p3.value;  
            if (phone.value != "") {
                if (phone.value.length < 10 || isNaN(phone.value)) {
                    errPhone.style.display = "";
                    FormIsValid = false;
                }
                else {
                    errPhone.style.display = "none";
                    valid = true;
                }
            }
            if (ext != null && ext.value != '') {
                phone.value = GetPhone(id, part1, part2, part3, extension);
                if (isNaN(phone.value)) {
                    errPhone.style.display = "";
                    FormIsValid = false;
                }
            }
            return valid;
        }
    }
}
//validates zipcode
function ValidateZip(id, name) {
    var zip = document.getElementById(id);
    var row = document.getElementById("ctl01_Field" + id);
    var errZip = document.getElementById("err" + id);
    if (row != null) {
        if (zip != null) {
            if (isNaN(zip.value) || zip.value.length != 5) {
                errZip.style.display = "";
                FormIsValid = false;
                return false;
            }
            else {
                errZip.style.display = "none";
                return true;
            }
        }
    }
}
//validates a number
function ValidateNumber(id, name) {
    var numField = document.getElementById(id);
    var errMsg = document.getElementById("err" + id);
    if (numField != null) {
        if (isNaN(numField.value)) {
            errMsg.style.display = "";
            FormIsValid = false;
            return false;
        }
        else {
            errMsg.style.display = "none";
            return true;
        }
    }
}
//validates website url
function ValidateUrl(id, name) {
    var urlregex = /(((ht|f)tp(s?):\/\/)|(www\.[^ \[\]\(\)\n\r\t]+)|(([012]?[0-9]{1,2}\.){3}[012]?[0-9]{1,2})\/)([^ \[\]\(\),;&quot;\'&lt;&gt;\n\r\t]+)([^\. \[\]\(\),;&quot;\'&lt;&gt;\n\r\t])|(([012]?[0-9]{1,2}\.){3}[012]?[0-9]{1,2})/
    
    var url = document.getElementById(id).value.toLowerCase();
    var row = document.getElementById("ctl01_Field" + id);
    var errUrl = document.getElementById("err" + id);
    if (row != null) {
        if (url != null) {
            if (!(urlregex.test(url))) {
                errUrl.style.display = "";
                FormIsValid = false;
                return false;
            }
            else {
                errUrl.style.display = "none";
                return true;
            }
        }
    }
}

// show or hide "other" field if "other" is selected from dropdown
function ShowHideReferredInfo() {
    var refPartner = document.getElementsByName("ReferredPartner");
    var trRefComp = document.getElementById("ctl01_FieldReferralCompany");
    var refComp = document.getElementById("ReferralCompany");
    var trRefName = document.getElementById("ctl01_FieldReferralName");
    var refName = document.getElementById("ReferralName");
    var trRefPhone = document.getElementById("ctl01_FieldReferralPhone");
    var refPhone = document.getElementById("ReferralPhone");
    var trRefEmail = document.getElementById("ctl01_FieldReferralEmail");
    var refEmail = document.getElementById("ReferralEmail");
    
    if (trRefComp != null) {
        refComp.value = "";
        if (refPartner != null) {
            if (refPartner[0].checked) {
                trRefComp.style.display = "";
                trRefName.style.display = "";
                trRefPhone.style.display = "";
                trRefEmail.style.display = "";
            }
            else if (refPartner[1].checked) {
                trRefComp.style.display = "none";
                trRefName.style.display = "none";
                trRefPhone.style.display = "none";
                trRefEmail.style.display = "none";
            }
            else
            {
            trRefComp.style.display = "none";
                trRefName.style.display = "none";
                trRefPhone.style.display = "none";
                trRefEmail.style.display = "none";
            }
        }
        else if (trRefComp != null) {
            trRefComp.style.display = "none";
            trRefName.style.display = "none";
            trRefPhone.style.display = "none";
            trRefEmail.style.display = "none";
        }
    }
}

// show or hide "other" field if "other" is selected from dropdown
function ShowHideOther() {
    var industry = document.getElementById("Industry");
    var trOther = document.getElementById("ctl01_FieldIndustryOther");
    var other = document.getElementById("IndustryOther");

    if (trOther != null) {
        other.value = "";
        if (industry != null) {
            if (industry.value.toLowerCase() == "other") {
                trOther.style.display = "";
            }
            else {
                trOther.style.display = "none";
            }
        }
        else if (trOther != null) {
            trOther.style.display = "none";
        }
    }
}

function ValidateForm(RequiredList) {
    FormIsValid = true;
    
    ResetMessages();
    
    //validate required fields
    if (IsRequired(RequiredList) == false) {
        return false;
    }

    //if all required fields are entered, validate input
    if (!IsFieldEmpty("Phone") || IsFieldRequired("Phone",RequiredList)) {
        ValidatePhone("Phone", "Phone", "pPhone1", "pPhone2", "pPhone3","pPhoneExt");
    }
    if (!IsFieldEmpty("Phone2") || IsFieldRequired("Phone2",RequiredList)){
        ValidatePhone("Phone2", "Phone2", "pPhone21", "pPhone22", "pPhone23","pPhone2Ext");
    }
    if (!IsFieldEmpty("Fax") || IsFieldRequired("Fax", RequiredList)) {
        ValidatePhone("Fax", "Fax", "pFax1", "pFax2", "pFax3", null);
    }
    if (!IsFieldEmpty("Email") || IsFieldRequired("Email", RequiredList)) {
        ValidateEmail("Email", "Email");
    }
    if (!IsFieldEmpty("Website") || IsFieldRequired("Website", RequiredList)) {
        ValidateUrl("Website", "Website");
    }
    if (IsFieldRequired("State",RequiredList)) {
        ValidateDropDown("State", "State");
    }
    if (!IsFieldEmpty("Zip") || IsFieldRequired("Zip",RequiredList)) {
        ValidateZip("Zip", "Zip");
    }
    if (IsFieldRequired("Industry",RequiredList)) {
        ValidateDropDown("Industry", "Industry");
    }
    if (!IsFieldEmpty("NumOfEmployees") || IsFieldRequired("NumOfEmployees",RequiredList)) {
        ValidateNumber("NumOfEmployees", "# of employees ");
    }
    if (!IsFieldEmpty("NumOfUsers") || IsFieldRequired("NumOfUsers", RequiredList)) {
        ValidateNumber("NumOfUsers", "# of users ");
    }
    if (!IsFieldEmpty("ReferralPhone") || IsFieldRequired("ReferralPhone",RequiredList)) {
        ValidatePhone("ReferralPhone", "Referral Phone", "pReferralPhone1", "pReferralPhone2", "pReferralPhone3","pReferralPhoneExt");
    }
    if (!IsFieldEmpty("ReferralEmail") || IsFieldRequired("ReferralEmail",RequiredList)) {
        ValidateEmail("ReferralEmail", "Referral email");
    }

    if (FormIsValid == true) {
        return true;
    }
    else {
        
        errorMsg = "";
        return false;
    }
}
function InitForm() {
    SetRadioButtonValues();
    SetDropDowns();
    ShowHideOther();
    ShowHideReferredInfo();
}
