﻿var No_Renewal_Ord_Msg = "<img src='../lib/images/warning_icon.png' align='absmiddle' /> There are no orders to renew. If you received this message in error, please call our Ticket Office at (202) 785-9727.";
var count_selected_performances = 0;
var current_pkg = 0;
var current_selected_perf_list = [];
var current_selected_perf_list_index = 0;
var current_performance = 0;
var current_PerformanceGroup_index = -1;
var count_selected_groups = 0;
var NFSPkgSummary = null;
var selectedZone = 0;
var currentRadioBtn = null;
var multiplier = 1;


// default: false. Make zone selection by package when false
var SelectZoneByPerformance = false;
var selectedFlexZoneDescription = "";
var PerformanceGroups = [];
var nfspkg_num_perf_min = 0;
var nfspkg_num_perf_min = 0;
var currentPerfGroupPerfs = [];
var currentPerfGroupPerfsIndex = 0;
var pkg_production_min_max = { min: 0, max: 0, current: 0 };
var selectedPerfNo = 0;

/* ---------------------------------------------------------------------------------------------------------------------------------------------- */

var quantities = [];
function setZone(iPkgNo, iZoneNo) {
    var tobj;
    if (quantities["pkg" + iPkgNo] == null)
        tobj = getpackagehandler();
    else
        tobj = quantities["pkg" + iPkgNo];
    if (iZoneNo) {
        tobj.zone = iZoneNo;
        quantities["pkg" + iPkgNo] = tobj;
        checkPackage(iPkgNo);
    }
}

function getpackagehandler() {
    var tobj = {};
    tobj.qty = [];
    tobj.pt = [];
    tobj.zone = 0;
    return tobj;
}

function setPriceTypeQuantity(howmany, iPkgNo, iPriceType, ptindex) {
    var tobj;
    if (quantities["pkg" + iPkgNo] == null)
        tobj = getpackagehandler();
    else
        tobj = quantities["pkg" + iPkgNo];

    for (var x = 0; x <= ptindex; x++) {
        if (tobj.qty[x] == null) {
            tobj.qty[x] = 0;
            tobj.pt[x] = 0;
        }
    }
    tobj.qty[ptindex] = howmany;
    try {
        tobj.pt[ptindex] = iPriceType;
    }
    catch (e) {
        alert(e.description ? e.description : e);
    }

    if (SelectZoneByPerformance) {
        tobj.zone = -1; // mark it specially
    }
    else if (selectedZone > 0)
        tobj.zone = selectedZone; // we only do this when there's only 1 zone to select and [hopefully] it's preselected
    else if (NFSPkgSummary) {
        if (selectedPerfNo == 0) {
            for (var x = (current_selected_perf_list_index - 1); x > -1; x--) {
                selectedPerfNo = current_selected_perf_list[x].PerfNumber;
                if (selectedPerfNo > 0)
                    break;
            }
        }
        if (selectedPerfNo > 0)
            tobj.zone = GetZoneIDForPerformance(selectedPerfNo)
    }
    else
        tobj.zone = getZone();

    quantities["pkg" + iPkgNo] = tobj;
    if (!checkPackage(iPkgNo)) {
        var ddl = document.getElementById("p_" + iPkgNo + "pt_" + iPriceType);
        if (ddl)
            ddl.selectedIndex = 0; // will this generate an on-change event?
    
    }
}

function getZone() {
    var zone_no = 0;
    var zone_table = document.getElementById("zone_table");
    if (zone_table) {
        var zone_radio_buttons = zone_table.getElementsByTagName("input");
        for (var x = 0; x < zone_radio_buttons.length; x++)
            if (zone_radio_buttons[x].checked) {
            zone_no = parseInt(zone_radio_buttons[x].value);
            break;
        }
    }
    return zone_no;
}

function validateNFSPackage() {
    // for ( var y = 0; y < current_selected_perf_list.length; y++ )
    // 	if ( current_selected_perf_list[y] != null )
    // 		current_selected_perf_list[y].zone = zone_no;

    count_selected_performances = 0;

    for (var x = 0; x < PerformanceGroups.length; x++) {
        var selected_perfs_this_group = 0;
        for (var y = 0; y < PerformanceGroups[x].performances.length; y++) {
            selected_perfs_this_group += (PerformanceGroups[x].performances[y].selected ? 1 : 0);

        }
        count_selected_performances += selected_perfs_this_group;
        if (selected_perfs_this_group < PerformanceGroups[x].min || selected_perfs_this_group > PerformanceGroups[x].max) {
            if (selected_perfs_this_group < PerformanceGroups[x].min)
                alert("Please review the selection instructions above. You haven't selected enough items yet.");
            else if (selected_perfs_this_group > PerformanceGroups[x].max)
                alert("Please review the selection instructions above. You have selected too many items.");
            return false;
        }
    }
    if (!SelectZoneByPerformance && selectedFlexZoneDescription.length == 0)
        return false;

    return true;
}


function checkPackage(iPkgNo) {
    this.setEnable = function(bVal) {
        var btn = document.getElementById("btn_purchase" + iPkgNo);
        var pkg_production_min_max_ok = pkg_production_min_max.max > 0 ? (pkg_production_min_max.min <= pkg_production_min_max.current && pkg_production_min_max.max >= pkg_production_min_max.current) : true;
        btn.disabled = !(bVal && pkg_production_min_max_ok);
    }

    var result = false;
    if (NFSPkgSummary != null) {
        result = validateNFSPackage();
        if (!result) {
            this.setEnable(false);
            return result;
        }
    }

    var pkg_no = iPkgNo;
    var tobj = quantities["pkg" + iPkgNo];
    if (tobj != null) {
        if (tobj.zone != 0) {
            var howmany = 0;
            for (var x = 0; x < tobj.qty.length; x++)
                howmany += tobj.qty[x];

            this.setEnable(howmany > 0);
            result = (howmany > 0);
        }
        else
            this.setEnable(false);
    }
    return result;
}

function select_perf_group(oChkbx, pkg_no, pg_no, pkg_min, pkg_max) {
    for (var x = 0; x < PerformanceGroups.length; x++) {
        if (PerformanceGroups[x].perf_group_no == pg_no) {
            current_PerformanceGroup_index = x;
            break;
        }
    }
    if (oChkbx.checked) {
        $("select.ie6select").hide();
        var pgdetaildiv = document.getElementById('pgdetail' + pg_no);
        if (pgdetaildiv) {
            var pgdetaildivcheckboxes = pgdetaildiv.getElementsByTagName("input");
            if (pgdetaildivcheckboxes && pgdetaildivcheckboxes.length > 0) {
                for (var x = 0; x < pgdetaildivcheckboxes.length; x++)
                    pgdetaildivcheckboxes[x].checked = false;
            }
            for (var x = 0; x < PerformanceGroups[current_PerformanceGroup_index].performances.length; x++)
                $('#perf_details' + PerformanceGroups[current_PerformanceGroup_index].performances[x].perf_no).hide();
        }
        PerformanceGroups[current_PerformanceGroup_index].selected = true;
        if (count_selected_performances < nfspkg_num_perf_max) {
            count_selected_groups++;
            var pgdetail = document.getElementById("pgdetail" + pg_no);
            if (pgdetail) {
                var xy = getxy(oChkbx);
                var ww = getwindowsize();
                $("#pgdetail" + pg_no).css("top", ((ww.y / 2) -150) + "px");
                $("#pgdetail" + pg_no).css("left", ((ww.x / 2) - 248) + "px");
                $('#pgdetail' + pg_no).show();
                
                //pgdetail.style.left = "" + (xy.x + 40) + "px";
                //pgdetail.style.top = "" + (xy.y + 12) + "px";
            }
            // $('#splink' + pkg_no + "_" + pg_no).show(); 		// Show the "Select Performance" link
        }
        else {
            // too many selected: display error message and uncheck box
            oChkbx.checked = false;
            alert("Please deselect another package group, then try making this selection again.");
        }
    }
    else {
        $("select.ie6select").show();
        //$('#splink' + pkg_no + '_' + pg_no).hide();
        close_pg(pg_no);
        PerformanceGroups[current_PerformanceGroup_index].selected = true;
        for (var x = 0; x < PerformanceGroups[current_PerformanceGroup_index].performances.length; x++) {
            if (PerformanceGroups[current_PerformanceGroup_index].performances[x].selected) {
                PerformanceGroups[current_PerformanceGroup_index].performances[x].selected = false;
                count_selected_performances--;
            }
        }
        var pg_perflist = document.getElementById("pg_perflist" + pg_no);
        if (pg_perflist) {
            var checkboxes = pg_perflist.getElementsByTagName("input");
            if (checkboxes && checkboxes.length > 0) {
                for (var x = 0; x < checkboxes.length; x++)
                    if (checkboxes[x].checked)
                    checkboxes[x].checked = false;
            }
        }
        buildSelectedPerfs();
    }
}

function submit_pg(iGroupNo) {
    // have the animation vanishing point seem to go to the selected performances box;
    
    splinkxy = getxy("selected_performances");
    var perf_list_table = document.getElementById("perf_list_table"); // dynamic table containing selected performances
    var rowcount = 0;
    if (perf_list_table)
        rowcount = perf_list_table.rows.length;
    splinkxy.x += 120;
    splinkxy.y += 10 + (rowcount * 18);
    close_pg(iGroupNo);
    // alert("submit performance group");
    append_selected_perf_group(iGroupNo);

}

function selectPerformanceInGroup(iGroupNo, iPerfNo, iSelected, sDescription, oCaller) {
    var group_selected_count = 0;
    for (var x = 0; x < PerformanceGroups[current_PerformanceGroup_index].performances.length; x++) {
        if (PerformanceGroups[current_PerformanceGroup_index].performances[x].selected)
            group_selected_count++;
    }
    PerformanceGroups[current_PerformanceGroup_index].selected = (group_selected_count > 0);

    if (group_selected_count == PerformanceGroups[current_PerformanceGroup_index].max
		&& oCaller.type == "checkbox" && iSelected) {
        oCaller.checked = false;
        alert("You have already reached the maximum of " + PerformanceGroups[current_PerformanceGroup_index].max + " items.");
        return;
    }

    for (var x = 0; x < PerformanceGroups[current_PerformanceGroup_index].performances.length; x++) {
        if (PerformanceGroups[current_PerformanceGroup_index].performances[x].perf_no == iPerfNo) {
            PerformanceGroups[current_PerformanceGroup_index].performances[x].selected = (iSelected ? true : false);
            group_selected_count += (iSelected ? 1 : -1);
        }
        else if (oCaller.type == "radio" || oCaller.type == "select-one") {
            PerformanceGroups[current_PerformanceGroup_index].performances[x].selected = false;
        }
    }

    PerformanceGroups[current_PerformanceGroup_index].selected = (group_selected_count > 0);

    if (oCaller.type == "checkbox") {
        count_selected_performances += (iSelected ? 1 : -1);
        if (count_selected_performances > nfspkg_num_perf_max) {
            count_selected_performances--;
            if (oCaller.tagName == "INPUT" && oCaller.type == "checkbox")
                oCaller.checked = false;
            if (typeof oCaller == "select")
                alert("what to do?");
            alert("Sorry, you've already reached the maximum number of performances for this package: " + nfspkg_num_perf_max);
            return;
        }
    }
    evaluateCurrentPackageGroup(iGroupNo);
    RecordFlexItem(new flexitem(iGroupNo, iPerfNo, 0, iSelected, 0), PerformanceGroups[current_PerformanceGroup_index]);
    buildSelectedPerfs();
    if (SelectZoneByPerformance) 
    {
        if (iSelected)
            getSelectedPerfZones(iGroupNo, iPerfNo, oCaller);
        else
            $('#perf_details' + iPerfNo).slideUp("normal");
    }
}

function setScrollPos(iGroupNo, iPerf_no) {
    var DivToManipulate = document.getElementById("pg_perflist" + iGroupNo);
    var DivHeight = DivToManipulate.scrollHeight;
    if (DivToManipulate.scrollTop > DivToManipulate.clientHeight) 
        DivToManipulate.scrollTop = DivToManipulate.scrollHeight;
}

function getSelectedPerfZones( iGroupNo, iPerf_no, oCaller) {
    $("#zone_table").hide();
    var DivToPopulate = document.getElementById("perf_details" + iPerf_no);
    var req = getreq();
    handler = function() {
        if (req.readyState == 4) {
            document.body.style.cursor = "default";
            if (req.status == 200) {
                var rslt = JSON.parse(req.responseText);
                try {
                    rslt = rslt.d;
                } catch (err) { }

                $("#perf_details" + iPerf_no).html(rslt.FormattedHTML);
                $("#perf_details" + iPerf_no).slideDown(function() { setScrollPos( iGroupNo, iPerf_no ) });
            }
        }
    }

    if (oCaller.checked) {
        if (req && DivToPopulate && DivToPopulate.childNodes.length == 0) {
            req.open("POST", (srvr + ROOT + WEBSERVICE + "GetZoneSelector"), true);
            req.setRequestHeader(CONTENT_TYPE, APP_JSON);
            req.onreadystatechange = this.handler;
            req.send(JSON.serialize({ "perf_no": iPerf_no, "pkg_no": current_pkg }));
            document.body.style.cursor = "wait";
        }
        else
            $("#perf_details" + iPerf_no).slideDown("normal");
    }
    else
        $("#perf_details" + iPerf_no).slideUp("normal");
}

function setPerfZone(iPerf_No) 
{
    var perf_zone_no = get_menu_val(document.getElementById("ddl_zone" + iPerf_No));
    var tobj = PerformanceGroups;
    for (var x = 0; x < PerformanceGroups.length; x++) 
    {
        if (PerformanceGroups[x].selected) 
        {
            for (var y = 0; y < PerformanceGroups[x].performances.length; y++) 
            {
                if (PerformanceGroups[x].performances[y].perf_no == iPerf_No) 
                {
                    PerformanceGroups[x].performances[y].selected_zone = perf_zone_no
                    break;
                }
            }
        }
    }
    
    $("#perf_zones" + iPerf_No).hide();
}

function buildSelectedPerfs() {
    var newHTML = "<table cellspacing='0' width='100%' id='perf_list_table'>";

    count_selected_performances = 0;

    for (var x = 0; x < PerformanceGroups.length; x++) {
        for (var y = 0; y < PerformanceGroups[x].performances.length; y++) {
            if (PerformanceGroups[x].performances[y].selected) {
                count_selected_performances++;
                newHTML += "<tr><td style='width: 100%'>";
                newHTML += PerformanceGroups[x].performances[y].title + " - " + PerformanceGroups[x].performances[y].perf_date;
                newHTML += "&nbsp;&ndash;&nbsp;<span class='action' onclick='remove_perf_item("
                newHTML += PerformanceGroups[x].perf_group_no + "," + PerformanceGroups[x].performances[y].perf_no;
                newHTML += ")'>Remove</span>";
                newHTML += "</td></tr>";
            }
        }
    }
    newHTML += "</table>";
    $('#selected_performances').html(newHTML);
}

function evaluateCurrentPackageGroup(iGroupNo) 
{
    var selectedPerfsThisPackage = 0;
    for (var x = 0; x < PerformanceGroups[current_PerformanceGroup_index].performances.length; x++)
        selectedPerfsThisPackage += PerformanceGroups[current_PerformanceGroup_index].performances[x].selected ? 1 : 0;
    var btn = document.getElementById("btn_select_pg" + iGroupNo);
    if (btn) 
    {
        if ((selectedPerfsThisPackage >= PerformanceGroups[current_PerformanceGroup_index].min) && (selectedPerfsThisPackage <= PerformanceGroups[current_PerformanceGroup_index].max)) {
            btn.disabled = false;
        }
        else {
            btn.disabled = true;
        }
    }
}

function RecordFlexItem(oFlexitem) {
    var req = getreq();
    req.open(HTTP_VERB, (srvr + WEBSERVICE + "RecordFlexItem"), true);
    req.setRequestHeader(CONTENT_TYPE, APP_JSON);
    req.send(JSON.serialize({ currentPackageNo: current_pkg, item: oFlexitem }));
}

function flexitem(_perf_group_no, _perf_no, _pricetype, _quantity, _zone) {
    this.perf_group_no = _perf_group_no;
    this.perf_no = _perf_no;
    this.pricetype = _pricetype;
    this.quantity = _quantity;
    this.zone = _zone
}

function cancel_select_perf_group(pg_no) {
    var checkbx = document.getElementById('chk_' + current_pkg + '_' + pg_no);
    if (checkbx)
        checkbx.checked = false;
    for (var x = 0; x < PerformanceGroups[current_PerformanceGroup_index].performances.length; x++)
        PerformanceGroups[current_PerformanceGroup_index].performances[x].selected = false;
    PerformanceGroups[current_PerformanceGroup_index].selected = false;
    buildSelectedPerfs();
    close_pg(pg_no);
    current_PerformanceGroup_index = -1;
}

function close_pg(pg_no) {
    var divToShow = document.getElementById("pgdetail" + pg_no);
    if (divToShow) {
        $("select.ie6select").show();
        divToShow.style.display = "none";
        var zoom_rect = document.getElementById("zoom_rect");
        if (zoom_rect)
            animate.close(divToShow, null, null, splinkxy, targetrect);
    }
}

function append_selected_perf_group(iGroupNo, sAltDescription, iAltPerfNo) {
    for (var x = 0; x < NFSPkgSummary.Groups.length; x++) {
        if (NFSPkgSummary.Groups[x].perf_group_no == iGroupNo) {
            for (var y = 0; y < currentPerfGroupPerfsIndex; y++) {
                if (currentPerfGroupPerfs[y] && currentPerfGroupPerfs[y].perf_no > 0) {
                    var selectedObj = {};
                    selectedObj.Title = currentPerfGroupPerfs[y].desc;
                    selectedObj.PerfNumber = currentPerfGroupPerfs[y].perf_no;
                    selectedObj.GroupNumber = iGroupNo;
                    selectedObj.ZoneNumber = GetZoneIDForPerformance(selectedObj.PerfNumber);
                    current_selected_perf_list[current_selected_perf_list_index++] = selectedObj;
                }
            }

            $('#splink' + current_pkg + '_' + iGroupNo).hide();     // hides the "Select Performance" text
            buildSelectedPerfs(); 							        // displays the currently selected performances
            break;
        }
    }
    currentPerfGroupPerfs = [];
    currentPerfGroupPerfsIndex = 0;
}

function remove_perf_item(pg_no, perf_no) {
    for (var x = 0; x < PerformanceGroups.length; x++) {
        var count_this_pkg = 0;

        if (PerformanceGroups[x].perf_group_no == pg_no) {
            current_PerformanceGroup_index = x;
            for (var y = 0; y < PerformanceGroups[x].performances.length; y++) {

                if (PerformanceGroups[x].performances[y].perf_no == perf_no) {
                    PerformanceGroups[x].performances[y].selected = false;
                    count_selected_performances--;
                }
                if (PerformanceGroups[x].performances[y].selected)
                    count_this_pkg++;
            }
            if (count_this_pkg == 0) {
                var chkbox = document.getElementById("chk_" + current_pkg + "_" + pg_no);
                if (chkbox && chkbox.disabled == true) {
                    $('#splink' + current_pkg + '_' + pg_no).show();
                    var pgdetail = document.getElementById("pgdetail" + pg_no);
                    if (pgdetail) {
                        var inputs = pgdetail.getElementsByTagName("input");
                        if (inputs) {
                            for (var x = 0; x < inputs.length; x++) {
                                if (inputs[x].type = "radio") {
                                    inputs[x].checked = false;
                                    break; // only 1 so break;
                                }
                            }
                        }
                    }
                    select_performances_for_perf_group(current_pkg, pg_no)
                }
                else if (chkbox) 
                {
                    chkbox.checked = false;
                }
            }
            break;
        }
    }
    buildSelectedPerfs();
}

//function AddPerformanceToGroup(iPerfNo, iPerfGroupNo, sTitle, sPerfDate) {
//    for (var x = 0; x < PerformanceGroups.length; x++) {
//        if (PerformanceGroups[x].perf_group_no == iPerfGroupNo) {
//            PerformanceGroups[x].performances[PerformanceGroups[x].performances.length] = { perf_no: iPerfNo, selected: false, title: sTitle, perf_date: sPerfDate, selected_zone: 0 };
//            break;
//        }
//    }
//}

function purchase_subs(iPkgNo) {
    var target = quantities["pkg" + iPkgNo];
    var req = getreq();
    var qty = 0;
    getptlist = function() {
        var retval = "";
        for (var x = 0; x < target.qty.length; x++) {
            qty += parseInt(target.qty[x]);
            if (target.qty[x] > 0)
                for (var y = 0; y < target.qty[x]; y++) {
                if (retval.length > 0) retval += ",";
                retval += target.pt[x];
            }

        }
        return retval;
    }

    this.handler = function() {
        if (req.readyState == 4) {
            document.body.style.cursor = "default";
            if (req.status == 200) {
                rslt = JSON.parse(req.responseText);
                try {
                    rslt = rslt.d;
                }
                catch (err) { }
                if (rslt.Success) {
                    location.href = "/cart/index.aspx";
                }
                else
                    alert(rslt.ErrorMessage);
            }
            else
                alert(req.responseText);
        }
    }

    this.errorMessage = "";

    this.validate = function(bUnseated) {
        var pt = getptlist();
        if (bUnseated)
            return { parent_pkg_no: 0, pricetype: pt, pkg_no: iPkgNo, quantity: (qty * multiplier), zone: target.zone };
        else
            return { pricetype: pt, pkg_no: iPkgNo, quantity: (qty * multiplier), zone: target.zone, requestedseats: "", leavesingleseats: false };
    }

    if (req && NFSPkgSummary != null) {
        var flexObj = { pkg_no: iPkgNo, performances: [] };
        if (validateNFSPackage()) {
            var ptlist = getptlist();
            var current_performance_index = 0;
            for (var x = 0; x < PerformanceGroups.length; x++) {
                if (PerformanceGroups[x].selected) {
                    for (var y = 0; y < PerformanceGroups[x].performances.length; y++) {
                        if (PerformanceGroups[x].performances[y].selected) {
                            var fitem = new flexitem(PerformanceGroups[x].perf_group_no, PerformanceGroups[x].performances[y].perf_no, ptlist, qty, PerformanceGroups[x].performances[y].selected_zone);
                            flexObj.performances[current_performance_index++] = fitem;
                        }
                    }
                }
            }
            document.body.style.cursor = "wait";
            req.open(HTTP_VERB, (srvr + WEBSERVICE + "AddFlexPackage"), true);
            req.setRequestHeader(CONTENT_TYPE, APP_JSON);
            //req.setRequestHeader(ORGANIZATION_CODE_KEY, ORGANIZATION_CODE);
            req.onreadystatechange = this.handler;
            req.send(JSON.serialize(flexObj));
        }
        else
            alert("Flex package validation error: " + this.errorMessage);
    }
    else {
        var sendObj = this.validate(subs_unseated);
        if (req && sendObj) {
            var target_method = subs_unseated ? "AddPackageItem" : "AddPackageItemSeated"
            document.body.style.cursor = "wait";
            req.open(HTTP_VERB, (srvr + WEBSERVICE + target_method), true);
            req.setRequestHeader(CONTENT_TYPE, APP_JSON);
            req.onreadystatechange = this.handler;
            req.send(JSON.serialize(sendObj));
        }
    }
}

/* ---------------------------------------------------------------------------------------------------------------------------------------------- */

var existing_order_no = 0;
function select_order_to_renew(i) {
    existing_order_no = i;
}

function load_existing_order() {
    var req = getreq();

    handler = function() {
        if (req.readyState == 4) {
            if (req.status == 200) {
                var rslt = JSON.parse(req.responseText);
                try {
                    rslt = rslt.d;
                }
                catch (err) { alert(err); }
                var msg = "";
                if (rslt.Success) {
                    msg += "<i>Redirecting to cart...</i>";
                    window.location.href = srvr + ROOT + "/cart/index.aspx";
                }
                $("#renewal_msg").html(msg);
                $("#renewal_msg").slideDown("slow");
            }
        }
    }

    req.open(HTTP_VERB, (srvr + ROOT + WEBSERVICE + "LoadExistingOrder"), true);
    req.setRequestHeader("Content-Type", "application/json");
    req.onreadystatechange = this.handler;
    var qs = "{order_no:" + existing_order_no + "}";
    req.send(qs);
}

function get_existing_orders() {
    var req = getreq();

    handler = function() {
        if (req.readyState == 4) {
            if (req.status == 200) {
                var rslt = JSON.parse(req.responseText);
                try {
                    rslt = rslt.d;
                }
                catch (err) { alert(err); }
                var msg = "";
                if (rslt.Success) {
                    var order_count = 0;
                    try {
                        order_count = parseInt(rslt.Message);
                    }
                    catch (err) { }

                    if (order_count == 1) {
                        msg += "<i>Redirecting to cart...</i>";
                        window.location.href = srvr + ROOT + "/cart/index.aspx";
                    }
                    else if (order_count > 1)
                        msg += rslt.FormattedHTML;
                    else
                        msg += No_Renewal_Ord_Msg;
                }
                else
                    msg += "<img src='../lib/images/warning_icon.png' align='absmiddle' />  " + rslt.ErrorMessage;

                $("#renewal_msg").html(msg);
                $("#renewal_msg").slideDown("slow");
            }
        }
    }

    req.open(HTTP_VERB, (srvr + ROOT + WEBSERVICE + "GetExistingOrderInfo"), true);
    req.setRequestHeader("Content-Type", "application/json");
    req.onreadystatechange = this.handler;
    req.send("");
}

/* ---------------------------------------------------------------------------------------------------------------------------------------------- */

function login_order() {

    var req = getreq();
    handler = function() {
        if (req.readyState == 4) {
            $('#btn_ologin').show();
            $('#ologin_wait').fadeOut("slow");
            if (req.status == 200) {
                var msg = "";
                var rslt = JSON.parse(req.responseText);
                try {
                    rslt = rslt.d;
                }
                catch (err) { alert(err); }

                if (rslt.Success) {
                    $("#renewal_login_options").slideUp('slow');
                    $('#ologin_wait').html("<i>Login Successful!</i>");
                    customer_status();
                    if (rslt.Message.length == 0) {
                        document.getElementById("tbx_new_email").value = rslt.AccountInfo.Email;
                        if (rslt.LoginInfo.Status == "T")
                            toggle_update_login();
                        else
                            get_existing_orders();
                    }
                    else
                        msg += "<img src='" + srvr + ROOT + "/lib/images/warning_icon.png' align='absmiddle' /> " + rslt.Message;
                }
                else
                    msg += "<img src='" + srvr + ROOT + "/lib/images/warning_icon.png' align='absmiddle' /> " + rslt.ErrorMessage;
                if (msg.length > 0) {
                    $("#renewal_msg").html(msg);
                    $("#renewal_msg").slideDown('slow');
                }
            }
        }
    }

    form_validate = function() {
        var errmsg = "";
        var retval = {};
        var order_no = document.getElementById('tbx_order_no').value;
        if (order_no.length == 0)
            errmsg += "Order Number required.\n"
        else
            retval.order_no = order_no;

        var customer_no = document.getElementById('tbx_cust_no').value; ;
        if (customer_no.length == 0)
            errmsg += "Subscriber Account Number required."
        else
            retval.customer_no = customer_no;

        if (errmsg.length == 0)
            return retval;
        else {
            alert(errmsg);
        }
    }

    var sendObj = form_validate();

    if (sendObj) {
        req.open(HTTP_VERB, (srvr + ROOT + WEBSERVICE + "LoginWithOrderNo"), true);
        req.setRequestHeader(CONTENT_TYPE, APP_JSON);
        req.onreadystatechange = this.handler;
        req.send(JSON.serialize(sendObj));
        $('#btn_ologin').hide();
        $('#ologin_wait').html("<img src='" + srvr + ROOT + "/lib/images/wait_spinner24x24.gif' align='absmiddle' /> <i>Logging In...</i>");
        $('#ologin_wait').fadeIn("slow");
        $('#renewal_msg').slideUp("slow");
    }

}

/* ---------------------------------------------------------------------------------------------------------------------------------------------- */

function login_email() {
    var req = getreq();
    handler = function() {
        if (req.readyState == 4) {
            $('#btn_elogin').show();
            $('#elogin_wait').fadeOut("slow");
            if (req.status == 200) {
                var msg = "";
                var rslt = JSON.parse(req.responseText);
                try {
                    rslt = rslt.d;
                }
                catch (err) { alert(err); }

                if (rslt.Success) {
                    $("#renewal_login_options").slideUp('slow');
                    $('#elogin_wait').html("<i>Login Successful!</i>");
                    customer_status();
                    if (rslt.Message.length == 0) {
                        document.getElementById("tbx_new_email").value = rslt.AccountInfo.Email;
                        if (rslt.LoginInfo.Status == "T")
                            toggle_update_login();
                        else
                            get_existing_orders();
                    }
                    else
                        msg += "<img src='" + srvr + ROOT + "/lib/images/warning_icon.png' align='absmiddle' /> " + rslt.Message;
                }
                else
                    msg += "<img src='" + srvr + ROOT + "/lib/images/warning_icon.png' align='absmiddle' /> " + rslt.ErrorMessage;

                if (msg.length > 0) {
                    $("#renewal_msg").html(msg);
                    $("#renewal_msg").slideDown('slow');
                }
            }
        }
    }

    form_validate = function() {
        var errmsg = "";
        var retval = {};
        var email = document.getElementById('tbx_renewal_email').value;
        if (email.length == 0)
            errmsg += "Email Address required.\r\n"
        else if (!email_validation(document.getElementById('tbx_renewal_email').value))
            errmsg += "Email Address format is incorrect.\r\n"
        else
            retval.email = email;

        var password = document.getElementById('tbx_renewal_pass').value; ;
        if (password.length == 0)
            errmsg += "Password required."
        else
            retval.pass = password;

        if (errmsg.length == 0)
            return retval;
        else {
            alert(errmsg);
        }
    }

    var sendObj = form_validate();

    if (sendObj) {
        req.open(HTTP_VERB, (srvr + ROOT + WEBSERVICE + "LoginWithEmail"), true);
        req.setRequestHeader(CONTENT_TYPE, APP_JSON);
        req.onreadystatechange = this.handler;
        req.send(JSON.serialize(sendObj));
        $('#btn_elogin').hide();
        $('#elogin_wait').html("<img src='" + srvr + ROOT + "/lib/images/wait_spinner24x24.gif' align='absmiddle' /> <i>Logging In...</i>");
        $('#elogin_wait').fadeIn("slow");
        $('#renewal_msg').slideUp("slow");
    }
}

/* ---------------------------------------------------------------------------------------------------------------------------------------------- */

function login_lname() {

    var req = getreq();
    handler = function() {
        if (req.readyState == 4) {
            $('#btn_lnlogin').show();
            $('#lnlogin_wait').fadeOut("slow");
            if (req.status == 200) {
                var msg = "";
                var rslt = JSON.parse(req.responseText);
                try {
                    rslt = rslt.d;
                }
                catch (err) { alert(err); }

                if (rslt.Success) {
                    $("#renewal_login_options").slideUp('slow');
                    $('#lnlogin_wait').html("<i>Login Successful!</i>");
                    customer_status();
                    if (rslt.Message.length == 0) {
                        document.getElementById("tbx_new_email").value = rslt.AccountInfo.Email;
                        if (rslt.LoginInfo.Status == "T")
                            toggle_update_login();
                        else
                            get_existing_orders();
                    }
                    else
                        msg += "<img src='" + srvr + ROOT + "/lib/images/warning_icon.png' align='absmiddle' /> " + rslt.Message;
                }
                else
                    msg += "<img src='" + srvr + ROOT + "/lib/images/warning_icon.png' align='absmiddle' /> " + rslt.ErrorMessage;

                if (msg.length > 0) {
                    $("#renewal_msg").html(msg);
                    $("#renewal_msg").slideDown('slow');
                }
            }
        }
    }

    form_validate = function() {
        var errmsg = "";
        var retval = {};
        retval.renewals = true;
        var lname = document.getElementById('tbx_lname').value;
        if (lname.length == 0)
            errmsg += "Last name required.\n"
        else
            retval.lname = lname;

        var customer_no = document.getElementById('tbx_customer_no').value; ;
        if (customer_no.length == 0)
            errmsg += "Customer Number required."
        else
            retval.customer_no = customer_no;

        if (errmsg.length == 0)
            return retval;
        else
            alert(errmsg);
    }

    var sendObj = form_validate();

    if (sendObj) {
        req.open(HTTP_VERB, (srvr + ROOT + WEBSERVICE + "LoginWithLastName"), true);
        req.setRequestHeader(CONTENT_TYPE, APP_JSON);
        req.onreadystatechange = this.handler;
        req.send(JSON.serialize(sendObj));
        $('#btn_lnlogin').hide();
        $('#lnlogin_wait').html("<img src='" + srvr + ROOT + "/lib/images/wait_spinner24x24.gif' align='absmiddle' /> <i>Logging In...</i>");
        $('#lnlogin_wait').fadeIn('slow');
        $('#renewal_msg').slideUp("slow");
    }

}

var update_login_visible = false;
function toggle_update_login(oCallback) 
{
    panel_holder_height = 300;

    var update_login_panel_holder = document.getElementById("update_login_panel_holder");
    if (update_login_visible)
        animate.close("update_login_panel_holder", function() { $("#update_login_panel_holder").hide(); update_login_visible = false; if (oCallback) { oCallback(); } }, null, panel_holder_mousepos, panel_holder_zoomrect);
    else {
        if (update_login_panel_holder) 
        {
            var ww = getwindowsize();
            $("#update_login_panel_holder").css("left", "" + ((ww.x / 2) -100) + "px");
            $("#update_login_panel_holder").css("top", "" + ((ww.y / 2) -200) + "px");
            panel_holder_zoomrect = { left: ((ww.x / 2) - 100), top: ((ww.y / 2) - 200), width: panel_holder_width, height: panel_holder_height };
            panel_holder_mousepos = { x: ((ww.x / 2) - 100), y: ((ww.y / 2) - 200) };
            animate.open("update_login_panel_holder", function() { $("#update_login_panel_holder").show(); update_login_visible = true; }, null, panel_holder_mousepos, panel_holder_zoomrect);
        }
    }
}

function do_update_login() {

    var req = getreq();
    handler = function() {
        if (req.readyState == 4) {
            if (req.status == 200) {
                var rslt = JSON.parse(req.responseText);
                try {
                    rslt = rslt.d;
                }
                catch (err) { alert(err); }
                if (rslt.Success) {
                    toggle_update_login();
                    get_existing_orders();
                } 
                else
                    alert(rslt.ErrorMessage);
            }
        }
    }

    form_validate = function() {
        var retval = {};
        var errmsg = "";

        retval.login = document.getElementById('tbx_new_email').value;
        if (retval.login.length == 0)
            errmsg += "New Login required.";

        var email_valid = email_validation(retval.login);
        if (!email_valid)
            errmsg += "Email format is incorrect.\r\n";

        retval.password = document.getElementById('tbx_new_password').value;
        if (retval.password.length == 0)
            errmsg += "New Password required.";

        retval.email = retval.login;

        if (errmsg.length > 0)
            alert(errmsg);
        else
            return retval;
    }

    var sendObj = form_validate();

    if (sendObj) {
        req.open(HTTP_VERB, (srvr + ROOT + WEBSERVICE + "UpdateLogin"), true);
        req.setRequestHeader(CONTENT_TYPE, APP_JSON);
        req.onreadystatechange = this.handler;
        req.send(JSON.serialize(sendObj));
        $("#sp_update_login").html("<img src='" + srvr + ROOT + "/lib/images/wait_spinner24x24.gif' align='absmiddle' /> <i>Updating login credentials...</i>");

    }
}

/* ---------------------------------------------------------------------------------------------------------------------------------------------- */


function GetZoneIDForPerformance(iPerfNo) {
    if (selectedFlexZoneDescription == "")
        return 0;

    var pzi = null;
    try {
        pzi = NFSPkgSummary.ZonesForNFSPackage.NFSPackageZoneItems;
    }
    catch (er) { }
    if (pzi != null) {
        for (var x = 0; x < pzi.length; x++)
            if (pzi[x].perf_no == iPerfNo && pzi[x].zone_desc == selectedFlexZoneDescription) {
            return pzi[x].zone_no;
        }
    }
    return 0;
}

function AddPerformanceToGroup(iPerfNo, iPerfGroupNo, sTitle, sPerfDate) {
    for (var x = 0; x < PerformanceGroups.length; x++) {
        if (PerformanceGroups[x].perf_group_no == iPerfGroupNo) {
            PerformanceGroups[x].performances[PerformanceGroups[x].performances.length] = { perf_no: iPerfNo, selected: false, title: sTitle, perf_date: sPerfDate, selected_zone: 0 };
            break;
        }
    }
}

$(document).ready(function() {
    if (SelectZoneByPerformance)
        $('#zone_table').hide();
});

function toggle_venue(iFacilityNo) {
    alert(iFacilityNo);
}

function no_update_login() {
    toggle_update_login();
    try {
        $("#renewal_msg").html("<img src='" + srvr + ROOT + "/lib/images/wait_spinner24x24.gif' align='absmiddle' /> <i>Please wait while we load your order...</i>");
        get_existing_orders();
    } catch (e) { }    

}