﻿
App.Minibasket = function () {

    /* Private */

    /* Properties */

    var cmp = {};



    /* Defaults */


    /* Methods */

    var init = function () {

        // BASKET DROPDOWN
        $('.basketDropdownActivate').live('click', function () {
            return false;
        });


        // Show/hide

        $('.basketDropdownActivate').live('mouseenter', function () {
            // show
            $('.basketDropdown').slideDown(300, 'easeInOutCirc');
            return false;
        });
        $('.basketDropdown').live('mouseleave', function () {
            $('.basketDropdown').slideUp(300, 'easeInOutCirc');
        });


        // Delete from basket
        TVI.event('.basketDropdown .deleteButton', 'click', function (e) {


            var basketItem = $(this).closest('.basketItem');
            var basketLoading = $(this).nextAll('.basketLoading');
            basketLoading.show();

            data = {};

            // Build the data
            data['basketItemIndex'] = basketItem.attr('data-basketitemindex');

            var that = $(this);

            TVI.ajax({

                url: '/handlers/app.products.aspx/deleteBasketItem',
                data: data,
                success: function (d) {
                    basketItem.slideUp('fast', function () {
                        // We get the basket back
                        $('.basket').html(d.miniBasket);
                        $('.basketDropdownActivate').addClass('selected');
                        $('.basketDropdown').show();
                        TVI.Components.initialize();
                    });

                }, failure: function (d) {
                    for (var i = 0; i < d.errors.length; i++) {
                        $(this).closest('li').find('.errors').text(d.errors[i].message + "<br />").show();
                        basketLoading.hide();
                    }
                }

            });

        });

        //Update basket item
        TVI.event('.basketDropdown .refreshButton', 'click', function (e) {
            var basketLoading = $(this).nextAll('.basketLoading');
            basketLoading.show();

            data = {};

            // Build the data
            data['basketItemIndex'] = $(this).closest('.basketItem').attr('data-basketItemIndex');
            data['quantity'] = $(this).closest('.basketItem').find('input').val();

            if (isNaN(data['quantity'])) {
                $(this).closest('.basketItem').find('.error').text("Invalid Quantity").show();
                basketLoading.hide();

                return false;
            }


            TVI.ajax({

                url: '/handlers/App.products.aspx/updateBasketItem',
                data: data,
                success: function (d) {
                    // We get the basket back
                    $('.basket').html(d.miniBasket);
                    $('.basketDropdownActivate').addClass('selected');
                    $('.basketDropdown').show();
                    TVI.Components.initialize();
                    basketLoading.hide();


                }, failure: function (d) {
                    for (var i = 0; i < d.errors.length; i++) {
                        $(this).closest('.basketItem').find('.error').text(d.errors[i].message + "<br />").show();
                    }
                    basketLoading.hide();

                }

            });

        });


    };





    /* Public */

    TVI.apply(cmp, {

    });


    TVI.ready(init);


    return cmp;


} ();
