﻿var ainfo = null;
var member_signup_page = false;
var Error_Opening_Placeholder = "<div class=\"error\">";
var Error_Closing_Placeholder = "</div>";
var acct_info;
var is_cart_page = false;
var is_member_page = false;
var in_submit_order_process = false;
var acct_contact_choices = null;
var notification_visible = false;
var panel_holder_width = 400;
var panel_holder_height = 200;
var please_login_visible = false;
/* Ticketing related functions ----------------------------------------------------------------------------- */

function getPerformanceList(iProd_Season_No,caller) 
{
    var loc = getxy(caller);
    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 (E) { }
                if (rslt.Success) 
                {
                    $("#placeholder" + iProd_Season_No).css("left", (loc.x + 65) + "px");
                    $("#placeholder" + iProd_Season_No).css("top", loc.y + "px");
                    $("#placeholder" + iProd_Season_No).html(rslt.FormattedHTML);
                    $("#placeholder" + iProd_Season_No).slideDown("normal");
                }
            }
        }
    }

    if (document.getElementById("placeholder" + iProd_Season_No).childNodes.length > 0) {
        $("#placeholder" + iProd_Season_No).slideDown("normal");
        return;
    } 
    else {
        var sendObj = { "prod_season_no": iProd_Season_No };
        if (sendObj) {
            req.open(HTTP_VERB, (srvr + ROOT + WEBSERVICE + "GetProductionDetails"), true);
            req.setRequestHeader(CONTENT_TYPE, APP_JSON);
            req.onreadystatechange = this.handler;
            req.send(JSON.serialize(sendObj));
            document.body.style.cursor = "wait";
        }

    }
}

function hidePerformanceList(iProd_Season_No) {
    $("#placeholder" + iProd_Season_No).hide();
}

/* Ticketing Grid related function ---------------------------------------------------------------------------------- */

var priceTypeQty = [];
var priceTypes = [];
var priceTypeToSubmit = "";
var zone_no = 0;
var total_selected_quantity = 0;
var swidth;
var sheight;
var zoomrect;
var mousepos;
var selected_perf_no = -1;
var iFacility_no = 0;
var OKtoPurchase = false;


function doReserveTickets() {
	if (!OKtoPurchase)
		return;
    var req = null;
    handler = function() {
    	if (req.readyState == 4) {
    		if (req.status == 200) {
    			var rslt = JSON.parse(req.responseText);
    			try {
    				rslt = rslt.d;
    			} catch (err) { }

    			if (rslt.Success) {
    				$("#ticket_req_msg").html("<span style='color: #c00;font-weight:bold;font-style:italic;'>Reservation successful! Redirecting to the cart...</span>");
    				window.location.href = srvr + ROOT + "/cart/index.aspx";
    			}
    			else {
    				$("#btn_purchase_submit").show(function() { positionShadow("performance_summary_panel"); });
    				if (rslt.ErrorMessage.length > 0)
    					$("#ticket_req_msg").html(Error_Opening_Placeholder + rslt.ErrorMessage + Error_Closing_Placeholder);
    				else
    					$("#ticket_req_msg").html(Error_Opening_Placeholder + rslt.Message + Error_Closing_Placeholder);
    			}
    		}
    		else
    			alert(req.responseText);
    	}
    }

    form_validate = function() {
        var retval = {};
        priceTypeToSubmit = "";
        retval.perf_no = selected_perf_no;
        retval.quantity = total_selected_quantity;

        for (x = 0; x < priceTypes.length; x++) {
            var i = priceTypes[x];

            if (i > 0) {
                var ptmenu = document.getElementById("pricetype_" + i);
                if (ptmenu && ptmenu.selectedIndex > 0) {
                    var howmany = parseInt(ptmenu.options[ptmenu.selectedIndex].value);
                    for (y = 0; y < howmany; y++) {
                        if (priceTypeToSubmit.length > 0)
                            priceTypeToSubmit += ",";

                        priceTypeToSubmit = priceTypeToSubmit + i;
                    }
                }
            }
        }

        retval.pricetype = priceTypeToSubmit;
        retval.zone = zone_no;
        retval.specialRequests = "";
        if (document.getElementById("ddl_specialreq") != null)
            retval.specialRequests = get_menu_val(document.getElementById("ddl_specialreq"));
            
        return retval;
    }

    var sendObj = form_validate();

    if (sendObj) {
        req = getreq();
        req.open("POST", (srvr + ROOT + WEBSERVICE + "ReserveTickets"), true);
        req.setRequestHeader(CONTENT_TYPE, APP_JSON);
        req.onreadystatechange = this.handler;
        req.send(JSON.serialize(sendObj));
        $("#ticket_req_msg").html("<img src='" + srvr + ROOT + "/lib/images/wait_spinning16x16.gif' align='absmiddle' /> <i style='color:#c00;font-weight:bold;'>Please wait while we reserve your tickets...</i>");
        $("#btn_purchase_submit").hide(function() { positionShadow("performance_summary_panel"); });
    }
}

function showPricing(iPerf_No, iProd_Season_No, caller) 
{
    panel_holder_width = 700;
    var loc = getxy(caller);
    var req = getreq();

    handler = function() {
    	if (req.readyState == 4) {
    		document.body.style.cursor = "wait";

    		if (req.status == 200) {
    			document.body.style.cursor = "default";
    			var rslt = JSON.parse(req.responseText);
    			try {
    				rslt = rslt.d;
    			} catch (err) { }


    			if (rslt.Success) {

    				iFacility_no = rslt.VenueID;
    				priceTypes = rslt.PriceTypes;

    				var performance_summary = "";

    				if (rslt.PriceTypes.length > 0) {
    					performance_summary = rslt.PerformanceSummary;
    					performance_summary += '<div id="performance_summary" style="border: 1px solid #8fadca; background-color:#edf4fa; padding:5px; width:345px">';
    					performance_summary += '<div style="font-size: 120%;margin: 8px 0px;">Choose the ticket price you prefer:</div>';
    					performance_summary += '<div style="border: 1px solid #8fadca; background-color:#ffffff; padding:3px;" id="pricing_grid_holder">';
    					performance_summary += rslt.TicketPriceGrid;
    					performance_summary += '</div><div style="font-size: 120%;margin: 8px 0px;">Select the number of seats you wish to buy:</div>';
    					performance_summary += '<div style="border: 1px solid #8fadca; background-color:#ffffff; padding:3px 3px 3px 12px;">';
    					performance_summary += rslt.ZoneQuantitySelector;
    					performance_summary += '</div></div>';
    					performance_summary += '<div style="margin-top:12px;"><input type="button" id="btn_purchase_submit" value="Purchase Tickets" onclick="doReserveTickets();" style="color: #666; background-color: #ccc; cursor:inherit;" /></div>';

    				}
    				else
    					performance_summary = "";

    				$("#perfsum").html(performance_summary);
    				$("#img_venue_map").attr({ src: "http://scottsdaleperformingarts.org/images/Map/v" + rslt.VenueID + ".gif", alt: rslt.VenueName });
    				positionShadow("performance_summary_panel");
    				onlyOneZoneAvailable();
    			}
    		}
    	}
    }

    function showWindow() {
    	var ww = getwindowsize();
    	var aa = getscrolltop();

    	var proposedTop = Math.floor((ww.y / 2) - 150) + aa.y;
    	if (proposedTop < 0)
    		proposedTop = 0;

    	$("#performance_summary_placeholder").css("left", "" + Math.floor((ww.x / 2) - 350) + "px");
    	$("#performance_summary_placeholder").css("top", "" + proposedTop + "px");

    	var performance_summary_placeholder = document.getElementById("performance_summary_placeholder");
    	performance_summary_placeholder.scrollTop = performance_summary_placeholder.scrollHeight;

    	var placeholder_width = parseInt(performance_summary_placeholder.style.width);
    	var placeholder_height = parseInt(performance_summary_placeholder.style.height);
    	zoomrect =
                    {
                    	left: ((ww.x / 2) - 224),
                    	top: ((ww.y / 2) - 150),
                    	width: panel_holder_width,
                    	height: panel_holder_height
                    };

    	mousepos = { x: loc.x, y: loc.y };
    	animate.open("performance_summary_placeholder", function() { $("#performance_summary_placeholder").show(); addShadow("performance_summary_panel"); }, null, mousepos, zoomrect);

    }

    selected_perf_no = iPerf_No;
    req.open("POST", (srvr + ROOT + WEBSERVICE + "GetPerformancePricing"), true);
    req.setRequestHeader(CONTENT_TYPE, APP_JSON);
    req.onreadystatechange = this.handler;
    req.send(JSON.serialize({ "perf_no": iPerf_No }));
    document.body.style.cursor = "wait";
    $(caller).hide();
    showWindow();
}

function hideTicketingGrid() {
	$("#ticket_req_msg").html("");
	$("#perfsum").html("<img src='/lib/images/wait_spinning16x16.gif' alt='' style='height:16px;width:16px;' />");
    animate.close("performance_summary_placeholder", function() { $("#performance_summary_placeholder").hide(); }, null, mousepos, zoomrect);
}

function checkEnableSubmitPurchase() {
    total_selected_quantity = 0;
    $('select.ddlzoneqty').each(
		function(i) {
		    total_selected_quantity += parseInt(this.options[this.selectedIndex].value);
		}
	);
	if (zone_no > -1 && total_selected_quantity > 0) {
		$g("btn_purchase_submit").style.color = "#fff";
		$g("btn_purchase_submit").style.backgroundColor = "#000";
		$g("btn_purchase_submit").style.cursor = "pointer";
		OKtoPurchase = true;
	}
	// $('#btn_purchase_submit').show(function() { positionShadow("performance_summary_panel"); });
	else {
		$g("btn_purchase_submit").style.color = "#666";
		$g("btn_purchase_submit").style.backgroundColor = "inherit";
		OKtoPurchase = false;
	}
		//$('#btn_purchase_submit').hide(function() { positionShadow("performance_summary_panel"); });
}

function selectZone(iZone_no) {
    // $("#zone_map").html("iZone_no: " + iZone_no);

    zone_no = iZone_no;
    if (iZone_no > 0) {
    	document.getElementById("img_venue_map").setAttribute("src", "http://scottsdaleperformingarts.org/images/Map/" + iZone_no + ".gif");
    }
    else {
    	document.getElementById("img_venue_map").setAttribute("href", "http://scottsdaleperformingarts.org/images/Map/v" + iFacility_no + ".gif");
    	document.getElementById("img_venue_map_link").setAttribute("href", "http://scottsdaleperformingarts.org/images/Map/v" + iFacility_no + ".pdf");
    }
}

function selectPriceTypeQty(iPriceType, iQty) {
    checkEnableSubmitPurchase();
    $("#ticket_req_msg").html("");
}

function redirect_external(url) {
    if (confirm("You are about to leave Scottsdale Center for the Performing Arts website.  All tickets in your current shopping cart will be released.  Are you sure you want to redirect to this website?"))
        window.location.href = url;
}

/* Login related function ---------------------------------------------------------------------------------- */

function getCustomerStats() {
/*
    var login_content = "";
    var cky = readCookie("scpauser");
    
    var cartcky = readCookie("scpacart");
    if (cky)
        login_content += "<a href=\"" + srvr + ROOT + "/account/index.aspx\">Logged in as " + cky + "</a> &middot " + "<a href=\"" + srvr + ROOT + "/account/logout.aspx\">Log Out</a>";
    else
        login_content += "<a id=\"login_link\" href=\"javascript:void(0);\" onclick=\"toggle_login(this);\">Login</a> - Your email address is your Login. If you have previously purchased Tickets online, you may have an account with us.<br/><a href='" + srvr + ROOT + "/account/register.aspx'>Register Now!</a> - Are you new to Scottsdale Center for the Performing Arts?";

    if (cartcky)
        login_content += " &middot; <a href=\"/cart/index.aspx\">View Cart</a>";
        
    $("#login_link_holder").html(login_content);
*/
}

var login_panel_visible = false;

function toggle_login(oCallback) 
{
    panel_holder_width = 400;
    panel_holder_height = 200;
    
    var login_link = document.getElementById("login_link");
    var login_panel_holder = document.getElementById("login_panel_holder");
    if (login_panel_visible) {
        animate.close("login_panel_holder", function() { $("#login_panel_holder").hide(); login_panel_visible = false; if (oCallback) { oCallback(); } else { in_submit_order_process = false; } }, null, login_mouspos, login_zoomrect);
    }
    else 
    {
            
        if (login_panel_holder) 
        {
        	var loc = getxy("login_link");
        	if (!loc)
				loc = {x:0,y:0};
            var ww = getwindowsize();
            $("#login_panel_holder").css("left", "" + Math.floor((ww.x / 2) -224) + "px");
            $("#login_panel_holder").css("top", "" + Math.floor(ww.y / 2) + "px");
            login_zoomrect =
                    {
                        left: Math.floor((ww.x / 2) - 224),
                        top: Math.floor(ww.y / 2),
                        width: panel_holder_width,
                        height: panel_holder_height
                    };
            login_mouspos = { x: loc.x, y: loc.y };
            animate.open("login_panel_holder", function() {
                $("#login_panel_holder").show(); login_panel_visible = true; addShadow("login_panel");
                if (please_login_visible)
                    toggle_please_login_msg();
            }, null, login_mouspos, login_zoomrect);
        }
    }
}

function do_login() {
    var req = null;
    handler = function() {
        document.body.style.cursor = "default";
        if (req.readyState == 4) {
            if (req.status == 200) {
                var rslt = JSON.parse(req.responseText);
                try {
                    rslt = rslt.d;
                }
                catch (Error) { /* ignore */ }

                if (rslt.Success) {
                    $("#login_wait").html("<i style='color:#666;'>Login Successful!</i>");
                    if (rslt.AccountInfo != null) 
                    {
                        acct_info = rslt.AccountInfo;
                        createCookie("scpauser", rslt.AccountInfo.NameFirst + " " + rslt.AccountInfo.NameLast, 0);
                        getCustomerStats();
                        if (member_signup_page)
                            populateMembershipForm(rslt.AccountInfo);
                    }

                    if (location.href.indexOf("register.aspx") > -1 || location.href.indexOf("logout.aspx") > -1)
                        window.location.href = srvr + ROOT + "/account/index.aspx";

                    if (is_cart_page) {
                        toggle_login(login_callback);
                        customer_logged_in = true;
                        document.getElementById("progress_tracker_1").className = "done";
                    } else
                        toggle_login();
                }
                else {
                    $("#btn_login").show();
                    $("#login_wait").fadeOut("fast");
                    $("#login_panel_error").html(Error_Opening_Placeholder + "Login/Password Invalid" + Error_Closing_Placeholder);
                    $("#login_panel_error").slideDown(function() { positionShadow("login_panel"); });
                }
            }
        }
    }

    form_validate = function() {
        var retval = {};
        var errmsg = "";
        var username = document.getElementById("tbx_login").value.trim();
        if (username.length == 0)
            errmsg += "Email Address required.<br/>";
        else
            retval.login = username;
        var passwd = document.getElementById("tbx_password").value.trim();
        if (passwd.length == 0)
            errmsg += "Password required.<br/>";
        else
            retval.passwd = passwd;
        retval.promo_code = 0;

        try {
            retval.remember_me = document.getElementById("chk_remember_me").checked;
        }
        catch (err) {
            retval.remember_me = false;
        }

        if (errmsg.length > 0) {
            $("#login_panel_error").html(Error_Opening_Placeholder + "Please correct the following:<br/>" + errmsg + Error_Closing_Placeholder);
            $("#login_panel_error").slideDown("slow");
        }
        else
            return retval;
    }

    var sendObj = form_validate();

    if (sendObj) {
        req = getreq();
        req.open("POST", (srvr + ROOT + WEBSERVICE + "Login"), true);
        req.setRequestHeader(CONTENT_TYPE, APP_JSON);
        req.onreadystatechange = this.handler;
        req.send(JSON.serialize(sendObj));
        $("#login_panel_error").hide();
        $("#btn_login").hide();
        $("#login_wait").html("<img src='" + srvr + ROOT + "/lib/images/wait_spinning16x16.gif' align='absmiddle' /> <i>Logging In...</i>");
        $("#login_wait").slideDown(function() { positionShadow("login_panel"); });
    }

}

// -------------- contact preferences { email, mail, phone } support methods -------------------------

function GetContactPrefID(desc) {
    var id = 0;
    for (var x = 0; x < acct_contact_choices.length; x++) {
        if (acct_contact_choices[x].Description == desc) {
            id = acct_contact_choices[x].id;
            break;
        }
    }
    return id;
}

function AllowEmarket(desc) 
{
    var id = GetContactPrefID(desc);
    if (id == 3)
        return true;
    else
        return false;
}

function AllowMail(desc) 
{
    var id = GetContactPrefID(desc);
    if (id == 3)
        return true;
    else
        return false;
}

function AllowPhone(desc) 
{
    var id = GetContactPrefID(desc);
    if (id == 3)
        return true;
    else
        return false;
}

function remove_punctuations(e) 
{
    var rgx = new RegExp(/[^a-zA-Z0-9\s]+/g);
    var target = e.value;
    var retval = String(target).replace(rgx, "");
    document.getElementById(e.id).value = retval;
    return retval;
}

function register() {
    var req = getreq();
    var login_source_no = -1;

    handler = function() {
        if (req.readyState == 4) {
            $("#btn_register").show();
            if (req.status == 200) {
                var rslt = JSON.parse(req.responseText);
                try {
                    rslt = rslt.d;
                }
                catch (E) { }
                if (rslt.Success) {
                    $("#register_msg").html("<i>Redirecting...</i>");
                    createCookie("scpauser", rslt.AccountInfo.NameFirst + " " + rslt.AccountInfo.NameLast, 0);
                    getCustomerStats();

                    if (rslt.RedirectUrl.length > 0)
                        window.location.href = srvr + ROOT + rslt.RedirectUrl;
                    else
                        window.location.href = srvr + ROOT + "/account/index.aspx";
                }
                else 
                {
                    var regerror = "An account with this email address already exists.  If you forgot your password, use the Password Retrieval form on the right.";
                    $("#register_msg").html(Error_Opening_Placeholder + regerror + Error_Closing_Placeholder);
                    
//                    if (rslt.Message.length > 0)
//                        $("#register_msg").html(Error_Opening_Placeholder + rslt.Message + Error_Closing_Placeholder);
//                    else
//                        $("#register_msg").html(Error_Opening_Placeholder + rslt.ErrorMessage + Error_Closing_Placeholder);
                }
            }
        }
    }

    form_validate = function() {
        var userinputs = [];
        var errmsg = "";
        var customer_register_form = document.getElementById("customer_register_form");
        if (customer_register_form) {
            userinputs = getObjectChildrenInput(customer_register_form);

            var PhoneDay = "";
            var PhoneEve = "";
            for (var x = 0; x < userinputs.length; x++) 
            {
                var K = userinputs[x].K;
                var V = userinputs[x].V;

                if (K == "Email" && V.length == 0)
                    errmsg += "Email Address required.\r\n";

                if (K == "Password" && V.length == 0)
                    errmsg += "Password required.\r\n";

                if (K == "NameFirst" && V.length == 0)
                    errmsg += "First Name required.\r\n";

                if (K == "NameLast" && V.length == 0)
                    errmsg += "Last Name required.\r\n";

                if (K == "Street1" && V.length == 0) 
                    errmsg += "Street Address Required.\r\n";

                if (K == "City" && V.length == 0)
                    errmsg += "City Required.\r\n"

                if (K == "PhoneDay")
                    PhoneDay = V;

                if (K == "PhoneEve")
                    PhoneEve = V;

                if (K == "PostalCode" && V.length == 0)
                    errmsg += "Postal Code is required.\r\n";
            }

            if (PhoneDay.length == 0 && PhoneEve.length == 0)
                errmsg += "Day Phone or Evening Phone is required.\r\n";

            var em = document.getElementById("tbx_emailaddr").value;
            var e = email_validation(em);
            if (!e)
                errmsg += "Email format is incorrect."
        }

        if (errmsg.length == 0)
            return { userinfo: userinputs };
        else
            alert(errmsg);
    }

    var sendObj = form_validate();

    if (sendObj) 
    {
        //alert(JSON.serialize(sendObj));
        req.open("POST", (srvr + ROOT + WEBSERVICE + "SubmitUserInfo"), true);
        req.setRequestHeader(CONTENT_TYPE, APP_JSON);
        req.onreadystatechange = this.handler;
        req.send(JSON.serialize(sendObj));
        $("#btn_register").hide();
        $("#register_msg").html("<i style='color:#666;'>Please wait...</i>");
        $("#register_msg").fadeIn("fast");
    }
}


function submit_customer_info() {
    var login_source_no = -1;
    var req = null;

    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 (E) { }
                if (rslt.Success) 
                {
                    if (is_cart_page) 
                    {
                        evaluate_constituency();
                        customer_info_set = true;
                        document.getElementById("progress_tracker_2").className = "done";
                        toggle_customer_panel(customer_callback);
                        build_customer_account_form(rslt.AccountInfo);
                        $("#edit_account_link").show();
                    }
                    else {
                        build_customer_account_details(rslt.AccountInfo);
                        getCustomerStats();
                        toggle_account_panel();
                    }
                }
                else
                    alert(rslt.ErrorMessage);
            }
        }
    }

    form_validate = function() {
        var retval = [];
        var errmsg = "";
        var userinputs = [];

        var customer_panel_form = document.getElementById("customer_panel_form");   //used in /cart

        if (customer_panel_form == null)
            customer_panel_form = document.getElementById("customer_info_panel");   //used in /account

        if (customer_panel_form) {
            userinputs = getObjectChildrenInput(customer_panel_form);
            var PhoneDay = "";
            var PhoneEve = "";
            for (var x = 0; x < userinputs.length; x++) {
                var K = userinputs[x].K;
                var V = userinputs[x].V;

                if (K == "Email" && V.length == 0)
                    errmsg += "Email Address required.\r\n";

                if (K == "NameFirst" && V.length == 0)
                    errmsg += "First Name required.\r\n";

                if (K == "NameLast" && V.length == 0)
                    errmsg += "Last Name required.\r\n";

                if (K == "Street1" && V.length == 0)
                    errmsg += "Street Address Required.\r\n"

                if (K == "City" && V.length == 0)
                    errmsg += "City Required.\r\n"

                if (K == "PhoneDay")
                    PhoneDay = V;

                if (K == "PhoneEve")
                    PhoneEve = V;

                if (K == "PostalCode" && V.length == 0)
                    errmsg += "Postal Code is required.\r\n";
            }
            if (PhoneDay.length == 0 && PhoneEve.length == 0)
                errmsg += "Day Phone or Evening Phone is required.";
        }
        if (errmsg.length == 0) {
            retval = userinputs;
            return { userinfo: retval };
        }
        else
            alert(errmsg);
    }

    var sendObj = form_validate();
    //alert(JSON.serialize(sendObj));
    if (sendObj) {
        req = getreq();
        req.open("POST", (srvr + ROOT + WEBSERVICE + "SubmitUserInfo"), true);
        req.setRequestHeader(CONTENT_TYPE, APP_JSON);
        req.onreadystatechange = this.handler;
        req.send(JSON.serialize(sendObj));
        document.body.style.cursor = "wait";
    }
}

function build_customer_account_details(acct_info) {
    var col_one = "";
    var col_two = "";

    try {
        col_one += get_menu_val(document.getElementById("ddl_polite")) + " ";
        col_one += document.getElementById("tbx_fname").value + " ";
        col_one += document.getElementById("tbx_mname").value + " ";
        col_one += document.getElementById("tbx_lname").value + "<br/>";
        col_one += document.getElementById("tbx_street1").value + ", ";
        if (("" + document.getElementById("tbx_street2").value) != "")
            col_one += document.getElementById("tbx_street2").value + "<br/>";
        col_one += document.getElementById("tbx_city").value + ", ";
        col_one += get_menu_val(document.getElementById("ddl_state")) + " ";
        col_one += document.getElementById("tbx_zip").value + "<br/>";

        col_two += "Email: " + document.getElementById("tbx_emailaddr").value + "<br/>";
        col_two += "Day Phone: " + document.getElementById("tbx_dayphone").value + "<br/>";
        col_two += "Evening Phone: " + document.getElementById("tbx_evephone").value;

        $("#customer_info_details_one").html(col_one);
        $("#customer_info_details_two").html(col_two);
        $("#edit_account_link").show();

        if (is_cart_page && !customer_info_set && in_submit_order_process)
            toggle_customer_panel();
        else {
            $("#customer_details").html(col_one + col_two);
        }
    }
    catch (err) {
        alert(err.description ? err.description : err);
    }
}

function build_customer_account_form(acct_info) {

    try 
    {
        document.getElementById("tbx_emailaddr").value = acct_info.Email;
        document.getElementById("tbx_fname").value = acct_info.NameFirst;
        document.getElementById("tbx_mname").value = acct_info.NameMiddle;
        document.getElementById("tbx_lname").value = acct_info.NameLast;
        var menu = document.getElementById("ddl_polite");
        if (menu && (acct_info.Prefix.length > 0))
            set_selected_value(menu, acct_info.Prefix);
        document.getElementById("tbx_street1").value = acct_info.Street1;
        document.getElementById("tbx_street2").value = acct_info.Street2;
        document.getElementById("tbx_city").value = acct_info.City;
        menu = document.getElementById("ddl_state");
        if (menu && (acct_info.State.length > 0))
            set_selected_value(menu, acct_info.State);
        document.getElementById("tbx_zip").value = acct_info.PostalCode;

        Phones = acct_info.Phones;
        if (Phones) {
            //alert(Phones[i].DayIndicator);
            for (var i = 0; i < Phones.length; i++) {
                if (Phones[i].DayIndicator == "D")
                    document.getElementById("tbx_dayphone").value = Phones[i].PhoneNumberString;

                if (Phones[i].DayIndicator == "E")
                    document.getElementById("tbx_evephone").value = Phones[i].PhoneNumberString;
            }
        }
        else {
            document.getElementById("tbx_dayphone").value = acct_info.PhoneDay;
            document.getElementById("tbx_evephone").value = acct_info.PhoneEve;
        }
        if (acct_contact_choices) {
            document.getElementById("chk_email_ind").checked = AllowEmarket(acct_info.EmarketInd);
            document.getElementById("chk_mail_ind").checked = AllowMail(acct_info.MailInd);
            document.getElementById("chk_phone_ind").checked = AllowPhone(acct_info.PhoneInd);
        }

        build_customer_account_details();
    }
    catch (err) {
        alert(err.description ? err.description : err);
    }
}


function do_password_retrieve() {
    var req = getreq();
    var sendObj = null;

    handler = function() {
        if (req.readyState == 4) {
            if (req.status == 200) {
                var rslt = JSON.parse(req.responseText);
                try {
                    rslt = rslt.d;
                }
                catch (E) { }
                if (rslt.Success)
                    $("#retrieve_msg").html("Your request has been submitted. If the login you submitted matches an existing login, it has been emailed to the address associated with that account.");
                else
                    $("#retrieve_msg").html("<span style='color:Red;'>Sorry, we did not find a login associated with the email address you provided.</span>");
            }
        }
    }

    var email = document.getElementById('tbx_forgot_email').value;
    if (email.length == 0)
        alert("Email Address required.");

    var e = email_validation(email);
    if (e)
        sendObj = { "email": email };
    else
        alert("Email format is incorrect.");

    if (sendObj) {
        req.open("POST", (srvr + ROOT + WEBSERVICE + "ForgotLogin"), true);
        req.setRequestHeader(CONTENT_TYPE, APP_JSON);
        req.onreadystatechange = this.handler;
        req.send(JSON.serialize(sendObj));
        $("#retrieve_msg").html("<i style='color:#666;'>Please wait...</i>");
        $("#retrieve_msg").fadeIn("fast");
    }

}
var fee_waived_visible = false;
function evaluate_constituency() {
    var req = getreq();
    handler = function() {
        if (req.readyState == 4) {
            if (req.status == 200) {
                var rslt = JSON.parse(req.responseText);
                try {
                    rslt = rslt.d;
                }
                catch (E) { }
                if (rslt.Success) {
                    $("#cartholder").html(rslt.FormattedHTML);
                    var loc = getxy(document.getElementById("fees_link"));
                    $("#fee_waived").css("top", (loc.y + 20) + "px");
                    $("#fee_waived").css("left", loc.x + "px");
                    $("#fee_waived").fadeIn("normal");
                    fee_waived_visible = true;
                }
            }
        }
    }
    
    req.open("POST", (srvr + ROOT + WEBSERVICE + "EvaluateMembershipConstituency"), true);
    req.setRequestHeader(CONTENT_TYPE, APP_JSON);
    req.onreadystatechange = this.handler;
    req.send("");
}

var customer_info_panel_visible = false;
function toggle_account_panel() {

    if (customer_info_panel_visible) {
        $("#customer_info_panel").slideUp('slow');
        customer_info_panel_visible = false;
    }
    else {
        $("#customer_info_panel").slideDown('slow');
        customer_info_panel_visible = true;
    }
}


function get_state(id) 
{
    alert(id);
    var req = getreq();
    handler = function() {
        if (req.readyState == 4) {
            if (req.status == 200) {
                var rslt = JSON.parse(req.responseText);
                try {
                    rslt = rslt.d;
                }
                catch (E) { }
                if (rslt.Success)
                    alert(rslt.FormattedHTML);
            }
        }
    }
    var sendObj = { "country_id": id };
    
    if (sendObj) {
        req.open("POST", (srvr + ROOT + WEBSERVICE + "GetState"), true);
        req.setRequestHeader(CONTENT_TYPE, APP_JSON);
        req.onreadystatechange = this.handler;
        req.send(JSON.serialize(sendObj));
    }
}

var gift_panel_visible = false;
function toggle_gift( obj ) {
        
    if (gift_panel_visible)
        $('#gift_membership_info').slideUp(function() { gift_panel_visible = false; });
    else
        $('#gift_membership_info').slideDown(function() { gift_panel_visible = true; });
}

function update_password() 
{
    var req = getreq();

    handler = function() {
        if (req.readyState == 4) {
            document.getElementById("btn_updatepass").value = "Submit";
            document.getElementById("btn_updatepass").disabled = false;
            document.body.style.cursor = "default";
            if (req.status == 200) {
                var rslt = JSON.parse(req.responseText);
                try {
                    rslt = rslt.d;
                }
                catch (E) { }
                document.getElementById("tbx_new_password_1").value = "";
                document.getElementById("tbx_new_password_2").value = "";
                document.getElementById("tbx_current_password").value = "";
                if (rslt.Success)
                    $("#sp_updatepass_msg").html("Your password has been updated.<br/><span style=\"cursor:pointer;\" onclick=\"$('#account_login').toggle(function() { $('#sp_updatepass_msg').hide(); });\">Click here to close.</span>");
                else
                    $("#sp_updatepass_msg").html(rslt.ErrorMessage + "<br/>" + rslt.Message);
            }
        }
    }
    
    form_validate = function() {
        var retval = {};
        var errmsg = "";
        $("sp_updatepass_msg").html("");
        
        retval.login = document.getElementById("hdn_login").value;
        retval.email = retval.login;

        var pass1 = document.getElementById("tbx_new_password_1").value;
        var pass2 = document.getElementById("tbx_new_password_2").value;

        if (pass1 != pass2)
            errmsg += "New Password and Confirm Password must match.";
        else
            retval.password = pass1;

        if (errmsg.length == 0)
            return retval;
        else {
            $("#sp_updatepass_msg").html(errmsg);
            $("#sp_updatepass_msg").fadeIn("normal");
        }
    }

    var sendObj = form_validate();

    if (sendObj) 
    {
        req.open("POST", (srvr + ROOT + WEBSERVICE + "UpdateLogin"), true);
        req.setRequestHeader(CONTENT_TYPE, APP_JSON);
        req.onreadystatechange = this.handler;
        req.send(JSON.serialize(sendObj));
        $("sp_updatepass_msg").fadeOut("normal");
        document.getElementById("btn_updatepass").value = "wait...";
        document.getElementById("btn_updatepass").disabled = true;
        document.body.style.cursor = "wait";
    }

}

function toggle_perfs(prod_season_no) 
{
    var tbl = document.getElementById("tbl_pyo_prod" + prod_season_no);
    
    $("#tbl_pyo_prod" + prod_season_no).slideDown("normal");
}

function get_calendar(target_date,rentals) {
    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 (Error) { /* ignore */ }
                //alert(rslt.CalendarTable);

                if (rslt.Success)
                    $("#calendarholder").html(rslt.FormattedHTML);
                else
                    $("#calendarholder").html(rslt.Message + rslt.ErrorMessage);
            }
        }
    }

    var sendObj = {};
    if (target_date == null)
    {
        sendObj.targetDate = "";
        sendObj.rentalsOnly = rentals;
    }
    else
    {   
        sendObj.targetDate = target_date;
        sendObj.rentalsOnly = rentals;
    }
    
    if (req && sendObj) 
    {
        req.open("POST", (srvr + ROOT + WEBSERVICE + "GetCalendar"), true);
        req.setRequestHeader(CONTENT_TYPE, APP_JSON);
        req.onreadystatechange = this.handler;
        req.send(JSON.serialize(sendObj));
        //alert(JSON.serialize(sendObj));
        document.body.style.cursor = "wait";
    }

}
function populateMembershipForm(ainfo) {
    if (ainfo) 
    {
        try 
        {
            var prefix = document.getElementById("ddl_prefix");
            if (prefix && (ainfo.Prefix.length > 0))
                set_selected_value(prefix, ainfo.Prefix);
            document.getElementById("tbx_fname").value = ainfo.NameFirst;
            document.getElementById("tbx_lname").value = ainfo.NameLast;

            var prefix2 = document.getElementById("ddl_prefix2");
            if (prefix2 && (ainfo.Prefix2.length > 0))
                set_selected_value(prefix2, ainfo.Prefix2);
            document.getElementById("tbx_fname2").value = ainfo.NameFirst2;
            document.getElementById("tbx_lname2").value = ainfo.NameLast2;

            document.getElementById("tbx_street1").value = ainfo.Street1;
            document.getElementById("tbx_street2").value = ainfo.Street2;
            document.getElementById("tbx_city").value = ainfo.City;
            var state = document.getElementById("ddl_state");
            if (state && (ainfo.State.length > 0))
                set_selected_value(state, ainfo.State);
            document.getElementById("tbx_postalcode").value = ainfo.PostalCode;
            document.getElementById("tbx_dayphone").value = ainfo.PhoneDay;
            document.getElementById("tbx_emailaddress").value = ainfo.Email;
            
            document.getElementById("tbx_member_password").value = ainfo.Password;
            document.getElementById("tbx_member_password2").value = ainfo.Password;
            
            $("#tr_password").hide();
            $("#tr_password2").hide();
        }
        catch (err) {
            alert(err.description ? err.description : err);
        }
    }
}

function toggle_please_login_msg() {
    panel_holder_height = 200;
    panel_holder_width = 320;
    var loc = getxy(document.getElementById("member_registration_form"));
    var please_login_panel_holder = document.getElementById("please_login_panel_holder");

    if (please_login_visible) {
        animate.close("please_login_panel_holder",
                function() {
                    $("#please_login_panel_holder").hide();
                    please_login_visible = false;
                }, null, panel_holder_mousepos, panel_holder_zoomrect);
    }
    else {
        if (notification_panel_holder) {
            var ww = getwindowsize();
            $("#please_login_panel_holder").css("left", "" + (ww.x / 2) - (panel_holder_width / 2) + "px");
            $("#please_login_panel_holder").css("top", "" + (ww.y / 2) - (panel_holder_height / 2) + "px");
            panel_holder_zoomrect = { left: (ww.x / 2), top: (ww.y / 2), width: panel_holder_width, height: panel_holder_height };
            panel_holder_mousepos = { x: loc.x, y: loc.y };
            animate.open("please_login_panel_holder", function() { $("#please_login_panel_holder").show(); please_login_visible = true; addShadow("please_login_panel"); }, null, panel_holder_mousepos, panel_holder_zoomrect);
            createCookie("please_log_in", true, 0);
        }
    }
}