﻿$(document).ready(function() {
    //cancellation jqmodal window
    $("#cancelModal").jqm({
        modal: 'true',
        toTop: true,
        trigger: '#lnkCancel',
        onShow: function(h) {
            h.w.fadeIn('slow');
            $("#txtConfNum").val("");
            $("#txtLname").val("");
            $("#cancellationresult").hide();
            $("#lnkclose").hide();
            $("#statusbox").hide();
            $("#lnkgetdetails").show();
            $("#txtConfNum").focus();
            $("#printnav").hide();
            $("#cancelbox").show();
            showResInfo(false);
            pageTracker._trackPageview("Dining/Cancel/10_ResvDetailEntry/");
        }
    });

    $("#txtLname").keyup(function() {
        charOnly(this);
    });

    function charOnly(fld) {
        if (fld.value.match(/[^a-zA-Z]/g)) {
            fld.value = fld.value.replace(/[^a-zA-Z]/g, '');
        }
    }

    //cancellation click
    $("#lnkgetdetails").click(getdetailsClick);
    $("#lnkcancellation").click(cancellationClick);
    $("#lnkprint").click(printClick)

    function printClick() {
        var htmlstr = "<table id='confirmtable' width='98%'> <tr><td>" +
                         "<div><img src='" + BASEURL + "/Content/images/wynn_logo_small.png')/> </div></td>" +
                         "<td align='right' valign='bottom'> <h3>Your reservation #" + $('#txtConfNum').val() +
                         " has been cancelled successfully. </td></tr><tr><td id='confirmcell' colspan='2'> <hr/> <div id='confcontent'> <br/> <table id='tabcontent'> <col width='120' /> <col width='400'/>" +
                         $("#tabresinfo").html() + "</table></div></td></tr></table>";
        $("#printbox").html(htmlstr);
        $("#printbox").jqprint({ importCSS: true, operaSupport: true });
    }

    function getdetailsClick() {
        $("#statusbox").hide();
        $("#resvinfo").hide();
        $("#cancebuttonbar").hide();
        $("#printnav").hide();
        $("#cancellationresult").hide();
        var cancelInfo = {};
        cancelInfo.confNumber = $("#txtConfNum").val();
        cancelInfo.lastName = $("#txtLname").val();
        //Validation
        var valid = true;
        var msg = "<ul>";
        if (cancelInfo.lastName == "") {
            msg += "<li>Please enter your last name</li>";
            valid = false;
        }
        if (cancelInfo.confNumber == "") {
            msg += "<li>Please enter your confirmation number</li>";
            valid = false;
        }

        /*
        if (cancelInfo.email == "") {
        msg += "<li>Please enter your email address</li>";
        valid = false;
        } else {
        if (/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(cancelInfo.email) == false) {
        msg += "<li>Please enter a valid email address</li>";
        valid = false;
        }
        }
        */
        if (!valid) {
            $("#cancellationresult").html(msg + "</ul>");
            $("#cancellationresult").show();
            return;
        }

        $("#lnkgetdetails").unbind('click').html("Processing...");
        //$("#lnkgetdetails").html("Processing...");

        $.ajax(
            {
                type: "POST",
                url: BASEURL + '/Dining/GetReservationDetails',
                dataType: "json",
                cache: false,
                data: "confNumber=" + cancelInfo.confNumber + "&lname=" + cancelInfo.lastName,
                success: showdetails,
                error: showDetailsError
            });
    };

    function showdetails(data) {
        var rinfo;
        var msg;
        var errMsg = "Please call Dining Reservations (888) 320-7110 for help";
        if (data != null) {
            if (!data.IsCancel && data.ErrorMessage == null) {
                $("#rguestname").text(data.GuestName);
                $("#rrestname").text(data.Restaurant);
                $("#rtime").text(data.DiningDate + " - " + data.Time);
                $("#rsize").text(data.PartySize);
                showResInfo(true);
                pageTracker._trackPageview("Dining/Cancel/20_ShowResvDetails/");
            } else if (data.ErrorMessage != null) {
                $("#statusbox").html(data.ErrorMessage + "<br/> " + errMsg).show();
                pageTracker._trackPageview("Dining/Cancel/11_DetailsNotFound/");
            }
        } else {
            $("#statusbox").html(errMsg).show();
        }
        resetGetDetails();
    }

    function cancellationClick() {
        $("#cancelbuttonbar").hide();
        $("#loadingcancel").show();
        $.ajax(
        {
            type: "POST",
            url: BASEURL + '/Dining/CancelReservation',
            dataType: "json",
            cache: false,
            data: "confNumber=" + $("#txtConfNum").val() + "&guestname=" + $("#rguestname").text(),
            success: processCancellation,
            error: showCancelError
        });
    }
    processCancellation = function(data) {
        var msg;
        if (data) {
            msg = "Reservation #" + $("#txtConfNum").val() + " has been cancelled successfully.";
            $("#lnkclose").show();
            //clear all fields

            $("#statusbox").html(msg);
            $("#statusbox").show();
            $("#lnkgetdetails").hide();
            $("#cancelbox").hide();
            $("#cancelbuttonbar").hide();
            $("#loadingcancel").hide();
            $("#printnav").show();
            resetCancellation();
            pageTracker._trackPageview("Dining/Cancel/30_CompleteCancelation/");
        } else
            showCancelError(null);

    };

    function showDetailsError(data) {
        $("#statusbox").html("An error occured while retrieving your reservation." +
             "Please call (888) 320-7110 for help").show();
        resetGetDetails();
    }

    function showCancelError(data) {
        $("#loadingcancel").hide();
        $("#statusbox").html("An error occured while cancelling your reservation." +
            "Please call (888) 320-7110 for help").show();
        resetCancellation();
    }

    function resetGetDetails() {
        $("#lnkgetdetails").html("Get Reservation Details").bind('click', getdetailsClick);
    }
    function resetCancellation() {
        $("#lnkcancellation").html("Cancel this reservation").bind('click', cancellationClick);
    }
    function showResInfo(flag) {
        if (flag) {
            $("#resvinfo").slideDown(300);
            $("#cancelbuttonbar").slideDown(300);
        } else {
            $("#resvinfo").hide();
            $("#questionbox").hide();
            $("#loadingcancel").hide();
        }
    }
});