﻿// Copyright (c) 2006 Global Relay Communications, Inc. All Rights Reserved.

var displayRow = (document.all) ? "block" : "table-row";


// Shows/Hides rows of IT or Billing Contact details if "Same As Above" box checked 
// rowId ID of the row that contains the checkbox
function AsAbove(rowId) {
    var row = document.getElementById(rowId);
    var input = row.getElementsByTagName("input")[0];
    var display = displayRow;
    if (input.checked) {
        display = "none";
    }

    var table = row.parentNode;
    var rows = table.getElementsByTagName("tr");
    var rows_length = rows.length;
    for (var i = 1; i < rows_length; i++) {
        rows[i].style.display = display;
    }
}

// Adds onclick and onkeypress handlers for AsAbove()
// rowId ID of the row that contains the checkbox
function AddAsAbove(rowId) {
    var row = document.getElementById(rowId);
    var input = row.getElementsByTagName("input")[0];
    input.onclick = function() {
        AsAbove(rowId);
    }
    input.onkeypress = input.onclick;
}

// Puts a tick in the checkbox
function TickAsAboveCheckbox(rowId) {
    var row = document.getElementById(rowId);
    var input = row.getElementsByTagName("input")[0];
    input.checked = true;
}

addLoadEvent(function () {
    AddAsAbove("trAsAbove");
    
    // Billing by default will be same as Primary Contact
    TickAsAboveCheckbox("trBillingAsAbove");
    AddAsAbove("trBillingAsAbove");
    AsAbove("trBillingAsAbove"); 
});


// Message Archiver
function ArchiverChange(ele) {
    ToggleRow(ele, 'trArchServer');
    ToggleRow(ele, 'trArchUsers');
    ToggleRow(ele, 'trArchImport');

    displayIndustry = "none";
    displayRetain = "none";
    if (ele.selectedIndex == 1) {
        displayIndustry = displayRow;
    } else if (ele.selectedIndex == 2) {
        displayRetain = displayRow;
    }
    document.getElementById("trArchIndustry").style.display = displayIndustry;
    document.getElementById("trArchRetain").style.display = displayRetain;
}
function ArchServerChange(ele) {
    var host = document.getElementById("trArchExchangeHost");
    var version = document.getElementById("trArchExchangeVersion");
    
    host.style.display = "none";
    version.style.display = "none";
    switch (ele.selectedIndex) {
        case 7: // In-house
            version.style.display = displayRow;
            break;
        case 8: // Hosted
            host.style.display = displayRow;
            break;
    }
}
function ArchImportChange(ele) {
    var display = "none";
    var yes = ele.getElementsByTagName("input")[0];    
    
    if (yes.checked) {
        display = displayRow;
    }
    document.getElementById("trArchFile").style.display = display;
    document.getElementById("trArchSize").style.display = display;    
}

// Filtering
function FilterChange(ele) {
    ToggleRow(ele, 'trFilterServer');
    ToggleRow(ele, 'trFilterNote');
    ToggleRow(ele, 'trFilterUsers');
}

// Jabber
function JabberChange(ele) {
    ToggleRow(ele, 'trJabberUsers');
}
function JabberCurrentChange(ele) {
    var display = "none";
    var yes = ele.getElementsByTagName("input")[0];    
    
    if (yes.checked) {
        display = displayRow;
    }
    document.getElementById("trJabberSystem").style.display = display;
}

// Domains
function DomainManageChange(ele) {
    ToggleRow(ele, 'trDomainNew');
    ToggleRow(ele, 'trDomainTerm');
}

// Source
function SourceChange(ele) {
    display = "none";
    if (ele.selectedIndex > 4) {
        display = displayRow;
    }
    document.getElementById("trSourceSpecify").style.display = display;
}

// Toggle specified row on dropdown selection
function ToggleRow(ele, rowid) {
    var display = "none";
    if (ele.selectedIndex > 0) {
        display = displayRow;
    }
    document.getElementById(rowid).style.display = display;
}

// Validation

var pageIsValid = true;
var place = "master_ContentPlaceHolder1_";

function ShowError(lbl_id, precondition, valid) {   
    var lbl = document.getElementById(place + lbl_id);
    if (precondition && !valid)
    {
        // Invalid
        pageIsValid = false;
        lbl.className = "error_on";
        return true;
    }
    // Valid
    lbl.className = "error_off";
    return false;
}
function ShowErrorCbl(lbl_id, precondition, cbl_id) {
    var tr = document.getElementById(cbl_id);
    var inputs = tr.getElementsByTagName("input");
    var checked = false;
    for (var i = 0; i < inputs.length; i++) {
        if (inputs[i].checked) {
            checked = true;
        }
    }
    ShowError(lbl_id, precondition, checked);
}
function ShowErrorVal(lbl_id, precondition, tb_id) {
    var tb = document.getElementById(place + tb_id);
    ShowError(lbl_id, precondition, tb.value.length > 0);
}
function ValidateEmail(lbl_id, precondition, tb_id) {
    var tb = document.getElementById(place + tb_id);
    var pattern = new RegExp("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$", "i");
    ShowError(lbl_id, precondition, tb.value.length > 0 && pattern.test(tb.value));
}

function ValidateForm() {
    pageIsValid = true;

    // Registration Information
    ShowErrorVal("lblCompany", true, "txtCompany");
    ShowErrorVal("lblDomain", true, "txtDomain");
    ShowErrorVal("lblCompanyPhone", true, "txtCompanyPhone");
    ShowErrorVal("lblAddress", true, "txtAddress");
    ShowErrorVal("lblCity", true, "txtCity");
    ShowErrorVal("lblZip", true, "txtZip");
    ShowErrorVal("lblCountry", true, "ddlCountry");

    // Primary Contact
    ShowErrorVal("lblName", true, "txtName");
    ShowErrorVal("lblPhone", true, "txtPhone");
    ValidateEmail("lblEmail", true, "txtEmail");

    // IT Contact
    var valIT = !document.getElementById(place + "cbITSame").checked;
    ShowErrorVal("lblITName", valIT, "txtITName");
    ShowErrorVal("lblITCompany", valIT, "txtITCompany");
    ShowErrorVal("lblITPhone", valIT, "txtITPhone");
    ValidateEmail("lblITEmail", valIT, "txtITEmail");
    
    // Billing Contact
    var valBilling = !document.getElementById(place + "cbBillingSame").checked;
    ShowErrorVal("lblBillingName", valBilling, "txtBillingName");
    ShowErrorVal("lblBillingPhone", valBilling, "txtBillingPhone");
    ValidateEmail("lblBillingEmail", valBilling, "txtBillingEmail");
    
    // Message Archiver
    var valArchive = document.getElementById(place + "ddlArchiving").selectedIndex;
    ShowErrorCbl("lblArchIndustry", valArchive == 1, "trArchIndustry");
    ShowErrorVal("lblArchRetain", valArchive == 2, "ddlArchRetain");
    
    var valIsArchive = document.getElementById(place + "ddlArchiving").selectedIndex > 0;
    ShowErrorVal("lblArchServer", valIsArchive, "ddlArchServer");
    ShowErrorVal("lblArchUsers", valIsArchive, "txtArchUsers");
    
    var valXVersion = valIsArchive && document.getElementById(place + "ddlArchServer").selectedIndex == 7;
    ShowErrorVal("lblArchExchangeVersion", valXVersion, "ddlArchExchangeVersion");
    
    var valXHost = valIsArchive && document.getElementById(place + "ddlArchServer").selectedIndex == 8;
    ShowErrorVal("lblArchExchangeHost", valXHost, "txtArchExchangeHost");
    
    var valImport = document.getElementById(place + "radArchImport").getElementsByTagName("input")[0].checked;
    ShowErrorVal("lblArchFile", valIsArchive && valImport, "ddlArchFile");
    ShowErrorVal("lblArchSize", valIsArchive && valImport, "txtArchSize");

    // Filtering
    var valFilter = document.getElementById(place + "ddlFilter").selectedIndex > 0;
    ShowErrorVal("lblFilterUsers", valFilter, "txtFilterUsers");
    
    // Mail
    ShowErrorVal("lblMailUsers", document.getElementById(place + "ddlEmail").selectedIndex > 0, "txtMailUsers");
    
    // Continuity
    ShowErrorVal("lblContUsers", document.getElementById(place + "ddlContinuity").selectedIndex > 0, "txtContUsers");

    // Jabber
    var valJabber = document.getElementById(place + "ddlJabber").selectedIndex > 0;
    var valCurrent = document.getElementById(place + "radIMCurrent").getElementsByTagName("input")[0].checked;
    ShowErrorVal("lblJabberUsers", valJabber, "txtJabberUsers");
    ShowErrorCbl("lblIMSystem", valCurrent, "trJabberSystem");
    
    // Domains
    //var valDomain = document.getElementById(place + "ddlDomainManage").selectedIndex > 0;
    //ShowErrorVal("lblDomainNew", valDomain, "txtDomainNew");
    //ShowErrorVal("lblDomainTerm", valDomain, "ddlDomainTerm");

    // Source
    ShowErrorVal("lblSource", true, "ddlSource");
    ShowErrorVal("lblSourceSpecify", document.getElementById(place + "ddlSource").selectedIndex > 4, "txtSourceSpecify");

    // Agreement
    ShowError("lblAgree", true, document.getElementById(place + "radAgree_0").checked);

    if (!pageIsValid) {
        alert("Please complete all required fields (marked with a red asterisk)");
    }
    
    return pageIsValid;
}