//Register Page Scripting
// NVMS, Inc. 2007
// J. Scott King

// Do Stuff OnLoad
//Client Tab Initiate //////////////////////////////////////////////////////////
// Get My Tab
var tpg1;
var tpg2;

window.onload = function () {
    tpg1 = new xTabPanelGroup('tpg1', 0, 780, 25, 'tabPanel', 'tabGroup', 'tabDefault', 'tabSelected');
    //tpg1.select(1);
    xAddEventListener(window, 'resize', winOnResize, false);
    SetBlurs();
};

function winOnResize() {
    if (!winOnResize.tmr) {
        winOnResize.tmr = setTimeout("tpg1.onResize();winOnResize.tmr=null;", 500);
    }
}

winOnResize.tmr = null;
// End Client Tabs ///////////////////////////////////////////////////////////////////

//Menu Rollovers
function MenuOver(ele) {
    ele.className = "menu_over";
}

function MenuOut(ele) {
    ele.className = "menu_item";
}

function ServiceSortRows() {
    if (document.getElementById('RepSvcTableAdd')) {
        tigra_tables('RepSvcTableAdd', 1, 0, '#EBE4D4', '#F7F5EF', '#F2F454', '#F2F454');

        var st = new SortableTable(document.getElementById('RepSvcTableAdd'),
	  ['None', 'CaseInsensitiveString', 'CaseInsensitiveString']);
    }
}

function ClientSortRows() {
    if (document.getElementById('myZipList')) {
        tigra_tables('myZipList', 1, 1, '#EBE4D4', '#F7F5EF', '#F2F454', '#F2F454');

        var st = new SortableTable(document.getElementById('myZipList'),
	  ['None', 'CaseInsensitiveString', 'CaseInsensitiveString', 'CaseInsensitiveString', 'CaseInsensitiveString', 'Number']);
    }
}

//Menu Progress Bar Scripting
// ********** Load Bar ***************************************************
//Preload  images
var progressnow = 1;

var prog1 = new Image();
prog1.src = "images/rep_progress1.png";
var prog2 = new Image();
prog2.src = "images/rep_progress2.png";
var prog3 = new Image();
prog3.src = "images/rep_progress3.png";
var prog4 = new Image();
prog4.src = "images/rep_progress4.png";

function GetProgressMap(rate) {
    if (rate == 0)
        rate = GetMyElement("curprogress");

    try {
        var rimg = document.getElementById("progbar");
        rimg.src = eval("prog" + rate + ".src");
    }
    catch (e) {
        //alert("no object available...");
    }
}

function SetProgress(rate) {
    var rimg = document.getElementById("progbar");
    rimg.src = eval("prog" + rate + ".src");

    switch (rate) {
        case 1:
            DoStep1();
            break;
        case 2:
            DoStep2();
            break;
        case 3:
            DoStep3();
            break;
        case 4:
            DoStep4();
            break;
    }

}

function DoStep4() {
    SetMyHTML("err_text", "");
    if (GetMyElement("g_vendorID") == 0) {
        SetMyHTML("err_text", "Please register your demographic information first and complete steps 2 and 3...");
        SetMyElement("curprogress", 1);
    }
    else if (GetMyElement("curprogress") <= 2) {
        SetMyHTML("err_text", "Please first complete steps 2 and 3...");
    }
    else {
        var s4 = document.getElementById("Step4");
        var s3 = document.getElementById("Step3");
        var s2 = document.getElementById("Step2");
        var s1 = document.getElementById("Step1");
        setDisplay(s2, false);
        setDisplay(s1, false);
        setDisplay(s3, false);
        setDisplay(s4, true);
    }
}

function DoStep3() {
    SetMyHTML("err_text", "");
    if (GetMyElement("g_vendorID") == 0) {
        SetMyHTML("err_text", "Please register your demographic information first and complete step 2...");
        SetMyElement("curprogress", 1);
    }
    else if (GetMyElement("curprogress") <= 1) {
        SetMyHTML("err_text", "Please first complete step 2...");
    }
    else {
        var s4 = document.getElementById("Step4");
        var s3 = document.getElementById("Step3");
        var s2 = document.getElementById("Step2");
        var s1 = document.getElementById("Step1");
        setDisplay(s2, false);
        setDisplay(s1, false);
        setDisplay(s3, true);
        setDisplay(s4, false);
        SetMyElement("curprogress", 3);
        winOnResize();
    }
}

function DoStep2() {
    SetMyHTML("err_text", "");
    if (GetMyElement("g_vendorID") == 0) {
        SetMyHTML("err_text", "Please register your demographic information first...");
        SetMyElement("curprogress", 1);
    }
    else {
        var s4 = document.getElementById("Step4");
        var s3 = document.getElementById("Step3");
        var s2 = document.getElementById("Step2");
        var s1 = document.getElementById("Step1");
        SetMyElement("curprogress", 2);
        setDisplay(s2, true);
        setDisplay(s1, false);
        setDisplay(s3, false);
        setDisplay(s4, false);
        DoServiceFilter();
    }
}

function DoStep1() {
    SetMyHTML("err_text", "");
    var s4 = document.getElementById("Step4");
    var s3 = document.getElementById("Step3");
    var s2 = document.getElementById("Step2");
    var s1 = document.getElementById("Step1");
    setDisplay(s2, false);
    setDisplay(s1, true);
    setDisplay(s3, false);
    setDisplay(s4, false);
}

// Global Variables ///////////////////////////////
var zipArray = new Array();
var cntyArray = new Array();
var zip_edit = 0;
var svcArray = new Array();

function AddZipToArray(ele) {
    var val = ele.value;
    if (ele.checked) {
        zipArray.push(val);
    }
    else {
        zipArray = RemoveArrayItems(zipArray, val);
    }
    SetMyElement("g_svcID", zipArray);
    //alert(svcArray.length + ", Array:" + GetMyElement('g_svcID'));
}

function AddCountyToArray(val, act) {

    if (act == "add") {
        cntyArray.push(val);
    }
    else {
        cntyArray = RemoveArrayItems(cntyArray, val);
    }
    SetMyElement("g_svcID", cntyArray);
    //alert(cntyArray.length + ", Array:" + GetMyElement('g_svcID'));
}

function RemoveArrayItems(array, item) {
    var i = 0;
    while (i < array.length) {
        if (array[i] == item) {
            array.splice(i, 1);
        }
        else {
            i++;
        }
    }
    return array;
}

function ClearArray() {
    SetMyElement("g_svcID", svcArray);
    svcArray = new Array();
}

function CheckAllSvc(ele) {
    var tot = GetMyElement("totsvc");

    if (ele.checked) {
        for (var i = 0; i < tot; i++) {
            var chk = document.getElementById("se" + i);
            chk.checked = true;
            AddService(chk);
        }
    }
    else {
        for (var i = 0; i < tot; i++) {
            var chk = document.getElementById("se" + i);
            chk.checked = false;
            AddService(chk);
        }
    }

    //alert(svcArray.length + ", Array:" + GetMyElement('g_svcID'));
}

function CheckAllAddSvc(ele) {
    var tot = GetMyElement("totsvcadd");

    if (ele.checked) {
        for (var i = 0; i < tot; i++) {
            var chk = document.getElementById("asvc" + i);
            chk.checked = true;
            AddService(chk);
        }
    }
    else {
        for (var i = 0; i < tot; i++) {
            var chk = document.getElementById("asvc" + i);
            chk.checked = false;
            AddService(chk);
        }
    }

    //alert(svcArray.length + ", Array:" + GetMyElement('g_svcID'));
}

function CopyBilling(ele) {
    if (ele.checked) {
        SetMyElement("BillName", GetMyElement("VendorName"));
        SetMyElement("BillStreet", GetMyElement("Street"));
        SetMyElement("BillCity", GetMyElement("City"));
        SetMyElement("BillState", GetMyElement("State"));
        SetMyElement("BillZip", GetMyElement("Zip"));
    }
    else {
        SetMyElement("BillName", "");
        SetMyElement("BillStreet", "");
        SetMyElement("BillCity", "");
        SetMyElement("BillState", "");
        SetMyElement("BillZip", "");
    }
}

function Validate1() {
    var vc = true;
    var err_txt = "<div style='text-align:left' class=Register><b>Registration Validation ::</b></div>";
    var err = document.getElementById("err_text");
    err.innerHTML = "";

    if (GetMyElement("VendorName") == "") {
        err_txt += "<div class=error style='text-align:left'><img src='application/images/buttons/validate.gif' align=absmiddle> You must enter a Company or Rep Name...</div>";
        vc = false;
    }

    if (GetMyElement("Contact") == "") {
        err_txt += "<div class=error style='text-align:left'><img src='application/images/buttons/validate.gif' align=absmiddle> Please enter a contact full name...</div>";
        vc = false;
    }
    if (GetMyElement("Race") == "") {
        err_txt += "<div class=error style='text-align:left'><img src='application/images/buttons/validate.gif' align=absmiddle> Please enter Race...</div>";
        vc = false;
    }
    if (GetMyElement("Street") == "") {
        err_txt += "<div class=error style='text-align:left'><img src='application/images/buttons/validate.gif' align=absmiddle> Please enter a street address...</div>";
        vc = false;
    }
    if (GetMyElement("City") == "") {
        err_txt += "<div class=error style='text-align:left'><img src='application/images/buttons/validate.gif' align=absmiddle> Please enter a city...</div>";
        vc = false;
    }
    if (GetMyElement("State") == "") {
        err_txt += "<div class=error style='text-align:left'><img src='application/images/buttons/validate.gif' align=absmiddle> Please enter a state...</div>";
        vc = false;
    }
    if (GetMyElement("Zip") == "") {
        err_txt += "<div class=error style='text-align:left'><img src='application/images/buttons/validate.gif' align=absmiddle> Please enter a zip code...</div>";
        vc = false;
    }
    if (GetMyElement("Phone") == "") {
        err_txt += "<div class=error style='text-align:left'><img src='application/images/buttons/validate.gif' align=absmiddle> Please enter a phone number...</div>";
        vc = false;
    }
    if (GetMyElement("Email") == "") {
        err_txt += "<div class=error style='text-align:left'><img src='application/images/buttons/validate.gif' align=absmiddle> Please enter an email address...</div>";
        vc = false;
    }
    if (GetMyElement("MatchKey") == "") {
        err_txt += "<div class=error style='text-align:left'><img src='application/images/buttons/validate.gif' align=absmiddle> Please enter the security key below...</div>";
        vc = false;
    }
    if (GetMyElement("MatchKey") != skey) {
        err_txt += "<div class=error style='text-align:left'><img src='application/images/buttons/validate.gif' align=absmiddle> The key number you enter must match the security key below...</div>";
        vc = false;
    }
    err.innerHTML = err_txt;
    return vc;
}

function ServiceSortRows() {
    if (document.getElementById('RepSvcTable')) {
        tigra_tables('RepSvcTable', 1, 0, '#EBE4D4', '#F7F5EF', '#F2F454', '#F2F454');

        var st = new SortableTable(document.getElementById('RepSvcTable'),
	      ['None', 'CaseInsensitiveString', 'CaseInsensitiveString', 'Date']);
    }
}

function DoServiceFilter() {
    var venID = GetMyElement("g_vendorID");
    var svctype = Register.GetVendorServices(venID).value;
    SetMyHTML("ServiceHolder", svctype);
    ServiceSortRows();
}

function AddService(ele, flag) {
    var v = GetMyElement('g_vendorID');
    var username = 'Online' + v;
    ShowAlert("Processing...", "Please wait while we process this service.");
    if (flag == 1) {
        Register.AddServiceBatch(v, ele, 0, username, AddServiceCallback);
    }
    else {
        Register.AddServiceBatch(v, 0, ele, username, AddServiceCallback);
    }
}

function AddServiceCallback(res) {
    //alert(res.value);
    var d = document.getElementById("err_text")
    res.value == null || res.error != null ? d.innerHTML = res.error.Message :
		DoServiceFilter();
    HideAlert();
}

// Zip Code Functions >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
function CheckAllZips(ele) {
    var tot = GetMyElement("totrows");

    if (ele.checked) {
        for (var i = 0; i < tot; i++) {
            var chk = document.getElementById("vSel" + i);
            chk.checked = true;
            AddZipToArray(chk);
        }
    }
    else {
        for (var i = 0; i < tot; i++) {
            var chk = document.getElementById("vSel" + i);
            chk.checked = false;
            AddZipToArray(chk);
        }
    }

    //alert(zipArray.length + ", Array:" + GetMyElement('g_svcID'));
}

function FilterByCounty(ele) {
    var cn = ele.value;
    var ven = GetMyElement("g_vendorID");
    var zip = GetMyElement("ZipSearch");
    Register.GetVendorZips(ven, cn, zip, ZipFilterCallback);
}

function ZipFilterCallback(res) {
    //alert(res.value);
    var d = document.getElementById("vZipList");
    res.value == null || res.error != null ? d.innerHTML = res.error.Message :
	    d.innerHTML = res.value;
    ClientSortRows();
}

function FilterByZip() {
    var zip = GetMyElement("ZipSearch");
    var ven = GetMyElement("g_vendorID");
    var cn = GetMyElement("CountyLookup");

    Register.GetVendorZips(ven, cn, zip, ZipFilterCallback);
}

function DeleteZips() {
    var zips = GetMyElement("g_svcID");

    if (zipArray.length >= 1) {
        if (confirm("Are you sure you want to remove the selected [" + zipArray.length + "] zip codes from this list?"))
            Register.DeleteSelectedZips(zips, DeleteZipCallback);
    }
}

function DeleteZipCallback(res) {
    var d = document.getElementById("vZipList");
    res.value == null || res.error != null ? d.innerHTML = res.error.Message :
	    alert(res.value + " Zips were successfully removed...");
    ClearArray();
    FilterByZip();
}

function DoZipEdit(code, row, id) {
    zip_edit = id;
    SetMyHTML("zCodeEdit" + row, "<input type=text size=8 id='redit" + row + "' value='" + code + "' onchange='ZipSingleChange(this)'/>");
    var e = document.getElementById("redit" + row);
    e.focus();
}

function ZipSingleChange(ele) {
    var zip = ele.value;
    Register.UpdateSingleZip(zip_edit, zip, ZipEditCallback);
}

function ZipEditCallback(res) {
    var d = document.getElementById("err_text");
    res.value == null || res.error != null ? d.innerHTML = res.error.Message :
		FilterByZip();
}

function ZipAddCallback(res) {
    var d = document.getElementById("err_range");
    res.value == null || res.error != null ? d.innerHTML = res.error.Message :
		SetMyHTML("err_range", res.value + " zips added successfully...");
    FilterByZip();
}

function ValidateZipRange() {
    var valid = true;
    !IsFieldValid("FromZip") ? valid = false :
		!IsFieldValid("ToZip") ? valid = false : valid = true;
    return valid;
}

function InsertZipRange() {
    var username = 'Online' + GetMyElement("g_vendorID");

    if (ValidateZipRange()) {
        var ven = GetMyElement("g_vendorID");
        var z1 = GetMyElement("FromZip");
        var z2 = GetMyElement("ToZip");

        Register.AddZipRange(z1, z2, ven, username, ZipAddCallback);
    }
    else {
        SetMyHTML("err_range", "You need to include both From Zip and To Zip before submitting...");
    }

}

function GetCountyFromState(ele) {
    var st = ele.value;
    Register.GetCountyByState(st, GetCountyCallback);
}

function GetCountyCallback(res) {
    var d = document.getElementById("county_list");
    var addbox = document.getElementById("sel_county");
    res.value == null || res.error != null ? d.innerHTML = res.error.Message :
		d.innerHTML = res.value;
    addbox.length = 0;
    cntyArray = new Array();
}

function SelectMyCounty() {
    var selbox = document.getElementById("CountyListSel");
    var addbox = document.getElementById("sel_county");

    //Get Selected County From Choice Box
    var selectedItem = selbox.selectedIndex;
    var selectedText = selbox.options[selectedItem].text;
    var selectedValue = selbox.options[selectedItem].value;
    var boxLength = addbox.length;
    var i;
    //alert(selectedText + ", " + selectedValue);

    var isNew = true;
    if (boxLength != 0) {
        for (i = 0; i < boxLength; i++) {
            var thisitem = addbox.options[i].text;
            if (thisitem == selectedText) {
                isNew = false;
                break;
            }
        }
    }
    if (isNew) {
        var newoption = new Option(selectedText, selectedValue, false, false);
        addbox.options[boxLength] = newoption;
    }

    selbox.selectedIndex = -1;
    boxLength = addbox.length;
    AddCountyToArray(selectedValue, "add");
    SetMyHTML("cscnt", " [" + boxLength + "]");
}

function RemoveSelectedCnty() {
    var addbox = document.getElementById("sel_county");
    var boxLength = addbox.length;
    arrSelected = new Array();
    var count = 0;
    for (i = 0; i < boxLength; i++) {
        if (addbox.options[i].selected) {
            arrSelected[count] = addbox.options[i].value;
        }
        count++;
    }
    var x;
    for (i = 0; i < boxLength; i++) {
        for (x = 0; x < arrSelected.length; x++) {
            if (addbox.options[i].value == arrSelected[x]) {
                addbox.options[i] = null;
                AddCountyToArray(arrSelected[x], "rem");
            }
        }

        boxLength = addbox.length;
        SetMyHTML("cscnt", " [" + boxLength + "]");
    }
}

function ValidateCounty() {
    var valid = true;
    var addbox = document.getElementById("sel_county");
    var boxLength = addbox.length;
    !IsFieldValid("StateSelect") ? valid = false :
		boxLength == 0 ? valid = false : valid = true;
    return valid;
}

function InsertCountyRange() {
    var username = 'Online' + GetMyElement("g_vendorID");

    if (ValidateCounty()) {
        var ven = GetMyElement("g_vendorID");
        var st = GetMyElement("StateSelect");
        var ca = GetMyElement("g_svcID");

        Register.AddCountyList(ca, st, ven, username, CntyAddCallback);
    }
    else {
        SetMyHTML("err_county", "You need to select a State and select some Counties before submitting...");
    }

}

function CntyAddCallback(res) {
    var d = document.getElementById("err_range");
    var addbox = document.getElementById("sel_county");
    res.value == null || res.error != null ? d.innerHTML = res.error.Message :
		SetMyHTML("err_county", res.value + " zips added successfully...");
    FilterByZip();
    addbox.length = 0;
    cntyArray = new Array();
}

function SendReport() {

}
