﻿
function AssignCodeToBasket(code, messagecontrol) {
    var codetxt = $('#' + code).val()
    if (codetxt != ''){
        $.ajax({
            type: "POST",
            url: BASE_APP_URL + 'Service/BasketService.asmx/AssignCodeToBasket',
            data: format("{'code': '{0}'}", codetxt),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                if (msg.d.Success) {
                    $('#' + messagecontrol).html('');
                    GetFullCheckoutControl();
                }
                else {
                    $('#' + messagecontrol).html(msg.d.Message);
                }
            }
        });
    }
    else{
        //show required icon
    }
}

function RemoveCodeFromBasket(code) {
        $.ajax({
            type: "POST",
            url: BASE_APP_URL + 'Service/BasketService.asmx/RemoveCodeFromBasket',
            data: format("{'codeId': {0}}", code),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                    GetFullCheckoutControl();
                }
        });
}

function AddToBasket(productId, selection, quantity, purchasePath, categoryType, callback) {
    //    var datastr = "productId={0}&selection={1}&quantity={2}&purchasePath={3}";
    var data;
    var method;
    if (categoryType) {
        var parameters = "{'productId': '{0}', 'selection': '{1}', 'quantity': {2}, 'purchasePath': '{3}', 'categoryType': {4}}";
        data = format(parameters, productId, selection, $("#" + quantity).val(), purchasePath, categoryType);
        method = 'AddToBasketWithType'
    }
    else {
        var parameters2 = "{'productId': '{0}', 'selection': '{1}', 'quantity': {2}, 'purchasePath': '{3}'}";
        data = format(parameters2, productId, selection, $("#" + quantity).val(), purchasePath);
        method = 'AddToBasketWithoutType'
     }
     $.ajax({
         type: "POST",
         url: BASE_APP_URL + 'Service/BasketService.asmx/' + method,
         data: data,
         contentType: "application/json; charset=utf-8",
         dataType: "json",
         success: function (msg) {
             UpdateCartSummary(msg.d.CartSummary);
             if (msg.d.Result == 1) {
                 $(".exceededcartmax").show();
             }
             else {
                 if (callback) {
                     callback();
                 }
             }
             OpenCart(true);
             if (IsBasketPage) {
                 GetFullCheckoutControl();
             }
         },
         error: function (a, b, c) {
             //alert(a.responseText);
         }
     });
}

function UpdateCartSummary(cartSummary) {
    if (cartSummary.CartType == 0) {
        $("#lnkMiniBasketSummary").text("MY BASKET (" + cartSummary.NoOfItemsInCart + ")");
        $("#LblMiniBasketTotal").text("£" + cartSummary.CartTotal);
        if (cartSummary.NoOfItemsInCart == 0) {
            //hide buttons
            $(".mc_buttons").hide()
        }
        else {
            $(".mc_buttons").show()
        }
    }
    else if (cartSummary.CartType == 1) {
        $("#lnkMiniWishlistSummary").text("MY WISHLIST (" + cartSummary.NoOfItemsInCart + ")");
        if (cartSummary.NoOfItemsInCart == 0) {
            $("#miniwishlist").hide();
        }
        else {
            $("#miniwishlist").show();
        }
    }
    else if (cartSummary.CartType == 3) {
        $("#lnkMailOrderSummary").text("MY MAIL ORDER (" + cartSummary.NoOfItemsInCart + ")");
        $("#LblMailOrderTotal").text("£" + cartSummary.CartTotal);
        if (cartSummary.NoOfItemsInCart == 0) {
            //hide buttons
            $(".mm_buttons").hide()
            $(".mm").hide()
        }
        else {
            $(".mm_buttons").show()
            $(".mm").show()
        }
    }
}

function OpenCart(bounce) {
    if ($("#MCOpenClose").attr("class") == 'closed') 
        {
            GetControlNoData('Service/BasketService.asmx/GetBasketPopdown', BindCart, bounce)
        }
    else
    {
        showBasket();
    }
}


function BindCart(control, bounce) {
    $("#minicart").html(control)
    if (bounce) {
        bounceBasket();
    }
    else {
        showBasket();
    }
    
}

function RemoveFromBasket(Id, control) {

    var parameters = "{'cartItemId': {0}}"
    var data = format(parameters, Id);
    $.ajax({
        type: "POST",
        url: BASE_APP_URL + 'Service/BasketService.asmx/RemoveFromBasket',
        data: data,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            UpdateCartSummary(msg.d);
            GetFullCheckoutControlWithArgument(msg.d);
        },
        error: function (a, b, c) {
            alert("error:")
        }
    });
}

function RemoveFromMiniBasket(Id, control) {

    var parameters = "{'cartItemId': {0}}"
    var data = format(parameters, Id);
    $.ajax({
        type: "POST",
        url: BASE_APP_URL + 'Service/BasketService.asmx/RemoveFromBasket',
        data: data,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            GetControlNoData('Service/BasketService.asmx/GetBasketPopdown', BindCart, false)
            if (IsBasketPage) {
                GetFullCheckoutControl();
            }
        },
        error: function (a, b, c) {
            alert("error:")
        }
    });
}

var CartUpdateFunction;

function UpdateOptionsInCart(cartItemId, selectedOptions, quantity) {
    var parameters = "{'cartItemId': {0}, 'selectedOptions': '{1}', 'quantity': {2}}"
    var data = format(parameters, cartItemId, selectedOptions, $("#" + quantity).val());
    $.ajax({
        type: "POST",
        url: BASE_APP_URL + 'Service/BasketService.asmx/UpdateBasketOptions',
        data: data,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            //will need to reload the shopping basket
            HideQuickBuy();
            UpdateCartSummary(msg.d);
            GetFullCheckoutControlWithArgument(msg.d);
        },
        error: function (a, b, c) {
            alert("error:")
        }
    });
}

function UpdateQuantity(cartItemId, quantity) {
    var parameters = "{'cartRowId': {0}, 'quantity': {1}}"
    var data = format(parameters, cartItemId, $("#" + quantity).val());
    $.ajax({
        type: "POST",
        cache: false,
        url: BASE_APP_URL + 'Service/BasketService.asmx/UpdateQuantity',
        data: data,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            UpdateCartSummary(msg.d);
            GetFullCheckoutControlWithArgument(msg.d);
        },
        error: function (a, b, c) {
            alert("error:")
        }
    });
}

function UpdateShoppingCart(control) {
    control.parentsUntil("tr").parent().remove()
}

var _isCheckoutPage = false
function GetFullCheckoutControl(countryId) {
    var parameters = "{'CountryId': {0}, 'shippingOption': {1}, 'isCheckoutPage':{2}}"
    var delopt = $('#rDeliveryOptions input:radio:checked').val();
    if (!delopt) {
        delopt = -1;
    }

    var country
    if (_isCheckoutPage) {
        if (!countryId) {
            country = _countryId
        }
        else {
            country = countryId;
        }

        
    }
    else { country = $("#ddlCartCountrys").val(); }

    if (!country) { country = -1; }

    var data = format(parameters, country, delopt, _isCheckoutPage);

    GetControl(data, 'Service/BasketService.asmx/GetFullCheckoutControl', function (control) {
        $("#SBOrderSummary").html(control);
    });

    if (_isCheckoutPage) {
        GetControl(data, 'Service/BasketService.asmx/GetOrderSummary', function (control) {
            $("#paymentsummary").html(control);
        });
    }
}

function GetSummaryControl(container, cartType) {
    var checkbox = $("#" + container + " input:checked");
    var selectedCountryId 
    if (checkbox) {
        selectedCountryId =  checkbox.parent().prev().val();
    }
    if (selectedCountryId) {
        if (!cartType || cartType == 1) {
            GetFullCheckoutControl(selectedCountryId);
        }
        else {
            GetFullMOCheckoutControl(selectedCountryId);
        }
    }
}

function GetSummaryControlFromDropDown(Control, cartType) {
    var control = $("#" + Control);
    var selectedCountryId
    if (control) {
        selectedCountryId = control.val();
    }
    if (selectedCountryId) {
        if (!cartType || cartType == 1) {
            GetFullCheckoutControl(selectedCountryId);
        }
        else {
            GetFullMOCheckoutControl(selectedCountryId);
        }
    }
}

function GetFullCheckoutControlWithArgument(cartSummary) {
    if (cartSummary.CartType == 0) {
        GetFullCheckoutControl();
    }
    else if (cartSummary.CartType == 1) {
        var data = "";
        GetControl(data, 'Service/BasketService.asmx/GetFullWishListControl', function (control) {
            //need to do somthing with the control
            $("#WLOrderSummary").html(control);
        });
    }
    else if (cartSummary.CartType == 3) {
        GetFullMOCheckoutControl();
    }
  
}

/* WishList */
function OpenWishlist() {
    if ($("#MWOpenClose").attr("class") == 'openclose closed') {
        GetControlNoData('Service/BasketService.asmx/GetWishListPopdown', BindWishList)
    }
    else {
        showWishlist();
    }
}

function BindWishList(control) {
    $("#miniwishlist").html(control)
    showWishlist();
}


function AddToWishList(productId, selection, quantity, purchasePath, categoryType) {
    //    var datastr = "productId={0}&selection={1}&quantity={2}&purchasePath={3}";
    var data;
    var method;
    if (categoryType) {
        var parameters = "{'productId': '{0}', 'selection': '{1}', 'quantity': {2}, 'purchasePath': '{3}', 'categoryType': {4}}";
        data = format(parameters, productId, selection, quantity, purchasePath, categoryType);
        method = 'AddToWishListWithType'
    }
    else {
        var parameters2 = "{'productId': '{0}', 'selection': '{1}', 'quantity': {2}, 'purchasePath': '{3}'}";
        data = format(parameters2, productId, selection, quantity, purchasePath);
        method = 'AddToWishListWithoutType'
    }
    $.ajax({
        type: "POST",
        url: BASE_APP_URL + 'Service/BasketService.asmx/' + method,
        data: data,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            //TODO - write these functions when dropdown control in place
            UpdateCartSummary(msg.d.CartSummary);
            OpenWishlist();
        },
        error: function (a, b, c) {
            alert("error:")
        }
    });
}

/* Mail Order */
function OpenMailOrder() {
    if ($("#MMOpenClose").attr("class") == 'closed') {
        GetControlNoData('Service/BasketService.asmx/GetMailOrderPopdown', BindMailOrder)
    }
    else {
        showMailOrder();
    }
}

function BindMailOrder(control) {
    $("#minimailorder").replaceWith(control)
    showMailOrder();
}

function AddToMailOrder(productId, selection, quantity, purchasePath, categoryType) {
    //    var datastr = "productId={0}&selection={1}&quantity={2}&purchasePath={3}";
    var data;
    var method;
    if (categoryType) {
        var parameters = "{'productId': '{0}', 'selection': '{1}', 'quantity': {2}, 'purchasePath': '{3}', 'categoryType': {4}}";
        data = format(parameters, productId, selection, $("#" + quantity).val(), purchasePath, categoryType);
        method = 'AddToMailOrderWithType'
    }
    else {
        var parameters2 = "{'productId': '{0}', 'selection': '{1}', 'quantity': {2}, 'purchasePath': '{3}'}";
        data = format(parameters2, productId, selection, $("#" + quantity).val(), purchasePath);
        method = 'AddToMailOrderWithoutType'
    }
    $.ajax({
        type: "POST",
        url: BASE_APP_URL + 'Service/BasketService.asmx/' + method,
        data: data,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            //TODO - write these functions when dropdown control in place
            UpdateCartSummary(msg.d.CartSummary);
            OpenMailOrder();
            if (IsBasketPage) {
                GetFullMOCheckoutControl();
            }
        },
        error: function (a, b, c) {
            alert("error:")
        }
    });
}

function RemoveFromMailOrder(Id, control) {

    var parameters = "{'cartItemId': {0}}"
    var data = format(parameters, Id);
    $.ajax({
        type: "POST",
        url: BASE_APP_URL + 'Service/BasketService.asmx/RemoveFromBasket',
        data: data,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            UpdateCartSummary(msg.d);
            GetFullCheckoutControlWithArgument(msg.d);
        },
        error: function (a, b, c) {
            alert("error:")
        }
    });
}

function RemoveFromMiniMailOrder(Id, control) {

    var parameters = "{'cartItemId': {0}}"
    var data = format(parameters, Id);
    $.ajax({
        type: "POST",
        url: BASE_APP_URL + 'Service/BasketService.asmx/RemoveFromBasket',
        data: data,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            GetControlNoData('Service/BasketService.asmx/GetMailOrderPopdown', BindMailOrder, false)
        },
        error: function (a, b, c) {
            alert("error:")
        }
    });
}

function GetFullMOCheckoutControl(countryId) {
    var parameters = "{'CountryId': {0}, 'shippingOption': {1}, 'isCheckoutPage':{2}}"
    var delopt = $('#rDeliveryOptions input:radio:checked').val();
    if (!delopt) {
        delopt = -1;
    }

    var country
    if (_isCheckoutPage) {
        if (!countryId) {
            country = _countryId
        }
        else {
            country = countryId;
        }


    }
    else {
        country = $("#ddlCartCountrys").val();
    }

    var data = format(parameters, country, delopt, _isCheckoutPage);

    GetControl(data, 'Service/BasketService.asmx/GetFullMOCheckoutControl', function (control) {
        //need to do somthing with the control
        $("#SBOrderSummary").html(control);
    });

    if (_isCheckoutPage) {
        //GetOrderSummary
        GetControl(data, 'Service/BasketService.asmx/GetMailOrderSummary', function (control) {
            //need to do somthing with the control
            $("#paymentsummary").html(control);
        });
    }
}

