﻿
var Mint = window.Mint || {};
Mint.proxy = null;


(function ($) {
    $(function () {
        Mint.proxy = new serviceProxy("/data/OrderService/BasketService.asmx/");        
        
        $('#aAddCart').click(function () {
            if(!$(this).hasClass('busy')) Mint.addToBasket($(this));
            return false;
        }); 
        $('#aZoomImg').click(function () {
            var src = $(this).attr("href");
            $("#dzoom").slideDown();
            
            if(!$("#dzoom").hasClass('loaded')){
                var img = new Image();
                $(img).load(function () {
                    $("#dzoom").addClass('loaded').find("div")
                        .append(this).fadeIn(750);
                }).error(function () {
                    $("#dzoom").hide();
                }).attr('src', src);
            }
            
            $(document).bind('click.unzoom', function () {
                $(document).unbind('click.unzoom');
                $("#dzoom").slideUp();
            });
            return false;
        });   
        $('#aZoomClose').click(function () {
            $(document).unbind('click.unzoom');
            $("#dzoom").slideUp();
            return false;
        });         

        if($("#tblCart").length > 0){
            $('a.aRemoveLine').click(function(){
                $(this).parents('tr').find('input.bag-quantity').val(0);
                document.forms[0].submit();
                return false;
            });
        }  

        if($("#contentGallery").length > 0){
            Mint.contentGallery();
        }
        //for < ie 7
        //DD_belatedPNG.fix("");
    });

    $(window).bind("load", function () {
    });

})(jQuery);

Mint.addToBasket = function(activator){
    activator.addClass('busy');
    Mint.proxy.invoke('AddProduct',
        { 'qty': $('#iquantityInput').val(), weight: $('#iwigShip').val(),
            'fui': $('#ifuiShip').val(), 'sku': $('#isku').val(), 
            'variantSku': $('#ivariantSku').val(), 'catalog': $('#icatalog').val() },
        function(r) {       
            activator.removeClass('busy');              
            if (r.Success) {
                $('#quickcartval').empty().text('Updating...');
                $('#quickcartval').load('/shop/mini-cart.aspx?rnd=' + Math.round(new Date().getTime() / 1000));
                $('#dAdded').empty().html('<span><a href="/shop/checkout/cart.aspx">Item added. Checkout Now?</a></span>').fadeIn(250).delay(4000).fadeOut(500);
            }
            else { 
                $('#dAdded').empty().html('<span class="error">' + r.Messages + '</span>').fadeIn(250).delay(4000).fadeOut(500);
            }
        },
        function(err) {
            activator.removeClass('busy');
            $('#dAdded').empty().html('<span class="error">A server error occurred: ' + err.Message + '</span>').fadeIn(250).delay(4000).fadeOut(500);
        }
    );
}

Mint.formatError = function (msg) {
    var ret = $("<div/>");
    ret.addClass("error-msg").html(msg);
    return ret;
}
Mint.showInvoice = function (a) { window.open(a, "preview", "height=600,width=750,resizable=yes,scrollbars=yes,menubar=yes,toolbar=yes"); return false; }

Mint.contentGallery = function(){
    //$("#contentGallery") #thumbPicker
    $("#thumbPicker a").click(function(){
        var cid = $("#thumbPicker a.on").attr("rel");
        var ca = $(this);
        var nid = $(this).attr("rel");

        if(cid != nid){
            $("#thumbPicker a.on").removeClass("on");
            ca.addClass("on");
            $('#' + cid).fadeOut(500);
            $('#' + nid).fadeIn(750);
        }
                
        return false;
    });
}

function serviceProxy (serviceUrl) {
    var proxy = this;
    this.serviceUrl = serviceUrl;

    this.invoke = function(method, data, callback, error) {
        // Convert input data into JSON - depends on Json2.js
        var json = JSON.stringify(data);

        // *** The service endpoint
        var url = proxy.serviceUrl + method;

        $.ajax({
            url: url,
            cache: false,
            type: "POST",
            contentType: "application/json; charset=utf-8",
            data: json,
            processData: false,
            timeout: 30000,
            dataFilter: function(data) {
                var msg;
                if (typeof (JSON) !== 'undefined' && typeof (JSON.parse) === 'function')
                    msg = JSON.parse(data);
                else
                    msg = eval('(' + data + ')');

                if (msg.hasOwnProperty('d'))
                    return msg.d;
                else
                    return msg;
            },
            success: function(result) {
                if (!callback) return;
                callback(result);
                return;
            },
            error: function(xhr, textStatus) {
                if (!error) return;
                switch (textStatus) {
                    case "timeout":
                        error({ Message: "A timeout occurred while communicating with the server.", ExceptionType: "Timeout" })
                        break;
                    case "parsererror":
                        error({ Message: "An error occurred parsing the response from the server.", ExceptionType: "ParserError" })
                        break;
                    default:
                        if (xhr.responseText) {
                            var err = JSON.parse(xhr.responseText);
                            if (err)
                                error(err);
                            else
                                error({ Message: "Unknown server error.", ExceptionType: "Unknown" })
                        }
                }
                return;
            }
        });
    }
};
