var UrlCart = '../public/redeem_cart.aspx'; 
var UrlDel = "";
var CrtUpd = "";
var LowestMinPts = -1;
var AvlPts = 0;
var TglWsltBtn = false;


$(function() {
    $("#dialog-add-to-cart").dialog({
        bgiframe: true,autoOpen: false,resizable: false,height:275,width:400,modal: true,
        overlay: {backgroundColor: '#000',opacity: 0.5},
        open: function() {
            $(this).html($(this).html().replace("#remaining-points#", formatCommas(parseInt(AvlPts),true)));
                
            SetDialogStyle(this);
            var ctn =  $(this).find(".dialog-btn-continue");
            var chk =  $(this).find(".dialog-btn-checkout");
            $(ctn).click(function(){
                $("#dialog-add-to-cart").html($("#dialog-add-to-cart").html().replace(formatCommas(parseInt(AvlPts),true),"#remaining-points#"));
                $("#dialog-add-to-cart").dialog('close');
            })
            $(chk).click(function(){
                window.location.href = UrlCart;
                $("#dialog-add-to-cart").dialog('close');
            })
        }
    });
    
    $("#dialog-add-to-cart-points").dialog({
        bgiframe: true,autoOpen: false,resizable: false,height:275,width:400,modal: true,
        overlay: {backgroundColor: '#000',opacity: 0.5},
        open: function() {
            var new_text = $("#dialog-add-to-cart-points");
            if (new_text != null) {new_text.html(new_text.html().replace("#minimum_threshold#", formatCommas(parseInt(LowestMinPts),true)));}
            SetDialogStyle(this);
            var btn = $(this).find(".dialog-btn-points");
            $(btn).click(function(){
                var new_text = $("#dialog-add-to-cart-points");
                new_text.html(new_text.html().replace(formatCommas(parseInt(LowestMinPts),true),"#minimum_threshold#"));
                $("#dialog-add-to-cart-points").dialog('close');
            })
        }
    });
    
    $("#dialog-add-to-cart-min-points").dialog({
        bgiframe: true,autoOpen: false,resizable: false,height:275,width:400,modal: true,
        overlay: {backgroundColor: '#000',opacity: 0.5},
        open: function() {
            var new_text = $("#dialog-add-to-cart-min-points");
            if (new_text != null){new_text.html(new_text.html().replace("#minimum_threshold#", formatCommas(parseInt(LowestMinPts),true)));}            
            SetDialogStyle(this);
            var btn = $(this).find(".dialog-btn-min");
            $(btn).click(function(){
                var new_text = $("#dialog-add-to-cart-min-points");
                new_text.html(new_text.html().replace(formatCommas(parseInt(LowestMinPts),true),"#minimum_threshold#"));
                $("#dialog-add-to-cart-min-points").dialog('close');
            })
       }
    });
    $("#dialog-cart-error").dialog({
        bgiframe: true,autoOpen: false,resizable: false,height:275,width:400,modal: true,
        overlay: {backgroundColor: '#000',opacity: 0.5},
        open: function() {
            SetDialogStyle(this);
            var btn = $(this).find(".dialog-btn-error");
            $(btn).click(function(){
                $("#dialog-cart-error").dialog('close');
            })
       }
    });

    $("#dialog-cart-error-quantity").dialog({
        bgiframe: true,autoOpen: false,resizable: false,height:275,width:400,modal: true,
        overlay: {backgroundColor: '#000',opacity: 0.5},
        open: function() {
            SetDialogStyle(this);
            var btn = $(this).find(".dialog-btn-qty");
            $(btn).click(function(){
                $("#dialog-cart-error-quantity").dialog('close');
            })      
        }
    });
    
    $("#dialog-delete-cart-items").dialog({
            bgiframe: true,autoOpen:false,resizable:false,height:275,width:400,modal:true,
            overlay: {backgroundColor: '#000',opacity: 0.5},
            open: function() { 
                SetDialogStyle(this);
                var btn = $(this).find(".dialog-btn-cart-cont"); 
                $(btn).click(function(){
                    if ($("#dialog-delete-cart-items").find('input[name=delete_cart_product]:checked').val() == "yes"){
                        if (UrlDel == ""){
                            DeleteCartItem("#dialog-delete-cart-items",RemoveItemOnDel,RemoveTROnDel,true);
                        }else{
                            window.location.href = UrlDel;
                       }
                    }else{
                        window.location.href = UrlCart;
                    }  
                    UrlDel = ""; 
                    $("#dialog-delete-cart-items").dialog('close');
                }) 
       } 
    });

    $("#dialog-logout").dialog({
        bgiframe: true,autoOpen: false,resizable: false,height:275,width:400,modal: true,
        overlay: {backgroundColor: '#000',opacity: 0.5},
        open: function() {
            SetDialogStyle(this);
            $("#ibtnYes").click(function(){
                    var url =  '../public/logout.aspx?cartsave=yes'
                    window.location.href = url;
                    $(this).dialog('close');
            })
            $("#ibtnNo").click(function(){
                    var url =  '../public/logout.aspx?cartsave=no'
                    window.location.href = url;
                    $(this).dialog('close');
            })
        }
    });   
 
    if (ShwLst())  {  
        var CntBox = $("#reward-count-box");
        $(CntBox).hover(function(){
           if($('#cart-box-list').is(':hidden')) { $("#cart-box-list").show(); } 
        }) 

        var ToggleCartButton = $(".button-toggle-cart-max");
        $(ToggleCartButton).click(function(){
            if($('#cart-box-list').is(':hidden')) { $("#cart-box-list").show(); }  
        })  

        $(ToggleCartButton).hover(function(){
            if($('#cart-box-list').is(':hidden')) { $("#cart-box-list").show(); }  
        })  

        var ToggleCartButtonOpen = $(".button-toggle-cart-min");
        $(ToggleCartButtonOpen).click(function(){
            $("#cart-box-list").toggle();
        })  
    }
    
    var LogoutCartButton = $(".button-logout_cart");
    $(LogoutCartButton).click(function(){
        var TotalItemsInCart = 0;
        if($("#reward-count").length)
        {
            TotalItemsInCart =  parseInt($("#reward-count").text());
        }
        if(TotalItemsInCart>0) {
            $("#dialog-logout").dialog('open'); }
        else {
            var url =  '../public/logout.aspx'
            window.location.href = url;}
    });

 
    var show_flag_init = $(this).find(".show-popup-flag-init").val();
    var AddNonCartItem = $(".redeem-ff-super-button");
    var CurrentURL = window.location.href;
    
    
    if (show_flag_init=="true")
    {
        if(CurrentURL.indexOf("?") >= 0) {UrlDel =  CurrentURL + '&delete_cart=yes';}
        else {UrlDel =  CurrentURL + '?delete_cart=yes';}
    
        $("#dialog-delete-cart-items").dialog('open');
    }
    $(AddNonCartItem).click(function(){
        var show_flag = $("#dialog-delete-cart-items").find(".show-popup-flag").val();
        if (show_flag=="true")
        {
            if(CurrentURL.indexOf("?") >= 0) {UrlDel =  CurrentURL + '&delete_cart=yes';}
            else {UrlDel =  CurrentURL + '?delete_cart=yes';}
            $("#dialog-delete-cart-items").dialog('open');
            return false;
        }
    });
    
    var previous_recom_add_output_init = $("#divShoppingCartButtons").find("#Init_Recom_Add_Output");
    
    if(previous_recom_add_output_init.length)
    {
        var recom_data_array = previous_recom_add_output_init.val().split('|');
        if(recom_data_array.length==2)
        {
            if(recom_data_array[0]=="PointsExceeded" || recom_data_array[0]=="InsufficientMinimumPoints")
            {
                var new_text = $("#dialog-add-to-cart-points");
                if (new_text.html() != null) {
                    var min_val = formatCommas(parseInt(recom_data_array[1]),true);
                    new_text.html(new_text.html().replace("#minimum_threshold#", min_val));
                    $("#dialog-add-to-cart-points").dialog('open'); 
                } 
                $("#divShoppingCartButtons").find("#Init_Recom_Add_Output").val("");
            }
            if(recom_data_array[0]=="ErrorBasketItem")
            {
                $("#dialog-cart-error").dialog('open');
            }
        }
    }
});  //end of big function()

var SetDialogStyle=function(dialog)
{
    $(dialog).parent().addClass("cart-dialog-parent-style");
    $(dialog).parent().find(".ui-dialog-titlebar").addClass("cart-dialog-title-style");
    $(dialog).parent().find(".ui-dialog-titlebar-close").css("display","none");
}

var SetFormNotesTDStyle=function()
{
    $('table.formtable tbody tr td.frmnote').each(function() {
         $(this).css("position","static");
    });
}

var AddCartItem = function(requestData,Caller,Inline,Sel,OldSel,MinPts) {
    var fn = "";
    var lst = "AddBasketItemRequest"; 
    switch (Caller) {
        case "p":
            fn = "AddBasketItemRequest";
         break;
        case "c":
            fn = "AddBasketItemShoppingCart";
            if ($("input[name='vppcalc']").val() == "1") {$("#divShoppingCartCheckoutButton").hide();} 
            break;
       default: //"d"    
            fn = "AddBasketItemListRequest";
            lst =  "AddBasketItemListRequest";
            break;
   }  
    var ajaxurl = "../default.aspx/" + fn;
    var data = "{'" + lst + "':" + JSON.stringify(requestData) + "}";
    $.ajax({
        type: "POST",
        url: ajaxurl,
        data: data,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(Result) { 
            var Response = Result.Response;
            switch(Result.ResponseText){
                case "AddedBasketItem":
                case "UpdatedBasketItem":
                    if(OldSel!=null){OldSel.val(Sel.val());}
                    ToggleChkOut(true);
                    UpdateCart(Response);
                    CrtUpd = "suc";
                    if (Caller=="d")
                    {
                        $(".dept-point-pay-table").trigger("update");
                    }
                    else
                    {
                        $(".point-pay-table").trigger("update");
                    }
                    $("#dialog-add-to-cart").dialog('open');
                      
                    ShowInlineMessage();
                    break;
                case "MaxQuantityExceeded":
                    CrtUpd = "fail";
                    ToggleChkOut(true);
                    if(OldSel!=null){Sel.val(OldSel.val());}
                    $("#dialog-cart-error-quantity").dialog('open');
                    break;
                case "ErrorBasketItem":
                    CrtUpd = "fail";
                    if(OldSel!=null){Sel.val(OldSel.val());}
                    $("#dialog-cart-error").dialog('open');
                    break;
                case "PointsExceeded":
                case "InsufficientMinimumPoints":
                    CrtUpd = "fail";
                    ToggleChkOut(true);
                    $("#dialog-add-to-cart-points").dialog('open');
                    $(".point-pay-table").trigger("update"); 
                    if(OldSel!=null){Sel.val(OldSel.val());}
                    break;
            }
        },
        failure: function() {
            CrtUpd = "fail";
            if(OldSel!=null){Sel.val(OldSel.val());}
            $("#dialog-cart-error").dialog('open');
        },
        error: function() {
            CrtUpd = "fail";
            if(OldSel!=null){Sel.val(OldSel.val());}
             $("#dialog-cart-error").dialog('open');
        }
    });
 
}
   
var DeleteCartItem = function(me,remBI,remTR,delAll) {
    var Request = new Object();
    Request.BasketItemId = ((delAll)?1:me.id);
    Request.DeleteAllItems = delAll; 
    $.ajax({
        type: "POST",
        url: "../default.aspx/DeleteBasketItemRequest",
        data: "{'DeleteBasketItemRequest':" + JSON.stringify(Request) + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(Result) { 
            var Response = Result.Response;
            switch(Result.ResponseText){
                case "DeletedBasketItem":
                    if(remBI){$("#bi-"+Request.BasketItemId).remove();}
                    if(remTR){$("#tr-"+ Request.BasketItemId).remove();}
                    UpdateCart(Response);
                    $(".point-pay-table").trigger("update");
                    ShowInlineMessage();
                    break;
            }
        },
        failure: function() {
            $("#dialog-cart-error").dialog('open');
        }
    });
};
var ToggleChkOut =  function(ChkOut){if (($("input[name='vppcalc']").val() == "1")) {$("#divShoppingCartCheckoutButton").show();}}
 
var UpdateCart = function(Response){
    var rspTotPts = formatCommas(parseInt(Math.ceil(Response.TotalPoints)), true);
    var rspAvlPts = formatCommas(parseInt(Math.ceil(Response.PointsAvailable)), true);
    var rspTotPay = "$" + formatCommas(Math.ceil(Response.TotalPay),true); 
    $("#reward-count").text(Response.TotalQuantity);
    $("#pts-crt").text(rspTotPts);
    $("#pts-tot-sum").text(rspTotPts);
    $("#pts-avl-sum").text(rspAvlPts);
    $("#pay-avl-sum").text(rspTotPay);    
    $("#remaining-points").text(rspAvlPts);
    $("#crt-tot-count").text(formatCommas(Response.TotalQuantity, true));
    $("#crt-tot-pts").text(rspTotPts);
    $("#crt-tot-pay").text(rspTotPay);
    $('#cart li').remove();
    
   if (Response.BasketItems.length == 0)
   {
        $("#pts-crt-box").css("visibility", "hidden");
        $("#cart-box-list-checkout").hide();
        $("#divShoppingCartEmpty").show();
        $("#divShoppingCart").hide(); 
        $("#divShoppingCartCheckoutButton").hide(); 
        $("#empty-cart-msg").show();
        $("#shopping-cart-summary").hide(); 
   }  
   else 
   {
        $("#pts-crt-box").css("visibility", "visible");
        $("#pts-crt-box").css("display", "block");
        $("#cart-box-list-checkout").show();
        $("#shopping-cart-summary").show(); 
        $("#empty-cart-msg").hide();
   } 
    for(i = 0; i < Response.BasketItems.length;i++){
        Item = Response.BasketItems[i].DisplayHtml; 
        $(Item).appendTo('ul#cart');
    }
    AvlPts = GetPtsBal();
}

var DelCart = $(".button-deletecart");
$(DelCart).live(
    "click", 
    function() {DeleteCartItem(this,RemoveItemOnDel,RemoveTROnDel,false);}
);
$(DelCart).click(function(){
    DeleteCartItem(this,RemoveItemOnDel,RemoveTROnDel,false);
});

var UpdateOFR=function(OFRPointsElement, OFRPayElement, PointsAmount, PayAmount)
{
    if($(OFRPointsElement).length && $(OFRPayElement).length){
        $(OFRPointsElement).val(PointsAmount);
        $(OFRPayElement).val(PayAmount);
    }
}
var InitializeCartStyle=function()
{
    if ($.browser.msie)
    {
        $("#cart-box-list").bgiframe(); 
    }
    $("#cart-box-list").hide();
}

$.fn.reverse = [].reverse;
var RemoveCommaRegExp = new RegExp("[^0-9]+","g"); 
function formatCommas(val,add)
{
    val += '';
    val = val.replace(RemoveCommaRegExp,'')
    if(add){
        x = val.split('.');
        x1 = x[0];
        x2 = x.length > 1 ? '.' + x[1] : '';
        var rgx = /(\d+)(\d{3})/;
        while (rgx.test(x1)) {
            x1 = x1.replace(rgx, '$1' + ',' + '$2');
        }
        return x1 + x2;
    }
    return val;
}   
var FormatDollar=function(val, add)
{
    val += '';
    if(add){
        val = "$" + val;
    }else{
        val = val.replace("$","");
    }
    return val;
}

var CloseInline = $(".InlineErrorClose");
$(CloseInline).live(
    "click", 
    function() {
     $("#divCategoryInlineError").hide();
    }
);


function HideInlineErr() {$("#divCategoryInlineError").hide();}

function ShowInlineMessage()
{
    if(AvlPts < LowestMinPts)
    {
        var new_text = $("#divCategoryInlineError");
        if (new_text.html() != null) {
            var min_val = formatCommas(parseInt(LowestMinPts),true);
            new_text.html(new_text.html().replace("#minimum_threshold#", min_val));
            $("#divCategoryInlineError").show();
        } 
    }
    else
    {
        HideInlineErr();
    }
}

function setAvlPts(obj) {
    var ret = parseInt(formatCommas($(obj).text(),false));
    if (isNaN(ret)) {return 1000000;} 
    return ret; 
}

var roundToLowest=function(Value, RoundTo)
{
    if(RoundTo == 1 || Value == 0 || Value%RoundTo == 0)
    {
        return Value;
    }
    else
    {
        return (Value - (Value%RoundTo));
    }
}

function GetPtsBal(retVal) {
    var a = formatCommas($("#pts-avl-sum").text(),false);
    var b = formatCommas($("#points-balance").text(),false);
    if (isNaN(a) || a.length == 0)
    {
        if (isNaN(b) || b.length == 0) { return (retVal)?1000000:0;}  
        return  parseInt(b);
    } 
    return parseInt(a); 
}

function ShwLst(){
    if (jQuery.browser.msie) {
      var rotb = parseInt((($("div[id='rotbanr']").length>0))?1:0);
      var iv = parseInt(jQuery.browser.version);
      if (rotb==1 && (iv==7 || iv==6)) {
        astr = new String($(location).attr('href'));
        if (astr.indexOf("redeem.aspx") > 0 || astr.indexOf("earn.aspx") > 0) {return false;} 
      }
    }
    return true;
}
