﻿(function ($) {

    $.fn.shrinkTo = function (top, left, callback) {
        this.each(function () {
            var element = $(this);

            top = top - element.offset().top;
            left = left - element.offset().left;

            var clonedElement = element.clone();
            $("body").append(clonedElement);

            clonedElement.css({
                "position": "absolute",
                "top": element.offset().top,
                "left": element.offset().left
            });

            //clonedElement.animate({ opacity: 0.4 }, 100);
            clonedElement.animate({ opacity: 0.5, marginLeft: left, marginTop: top, width: 0, height: 0 }, 600, function () {
                clonedElement.remove();
                if ($.isFunction(callback)) {
                    callback.call(this);
                }
            });
        });
    };
})(jQuery);

$(function () { 
   
    $('#currencyField').change(function () {
        // prevent first change request
        if (_currencySelectInit) {
            _currencySelectInit = false;
            return;
        }
        var cur = $(this).val();
        $.ajax({
            type: "POST",
            url: "/Services/ShopWebService.asmx/SetWorkingCurrency",
            data: "{'isoCode':'" + cur + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                if (msg.d)
                    location.reload(true);
            }
        });
        return false;
    });
    var _currencySelectInit = true;
    $('#currencyField').change(); //FX page refresh fix ;)
});
function shrinkImageToBasket(i) {
    if (i.length == 0)
        return;
    var element = $("#Items");
    var top = element.offset().top;
    var left = element.offset().left;
    i.shrinkTo(top, left);
} 

jQuery.fn.activateLoader = function (options) {
    if (!options)
        options = {};
    if (!options.src)
        options.src = "/images/assets/ajax-loader2.gif";
    if (!options.className)
        options.className = 'float-right';
    if (!options.width)
        options.width = 23;
    if (!options.height)
        options.height = 23;
    return this.each(function () {
        var me = $(this);
        var loader = $('<img>');
        if (options.className)
            loader.addClass(options.className);
        if (options.src)
            loader.attr('src', options.src);
        if (options.width)
            loader.attr('width', options.width);
        if (options.src)
            loader.attr('height', options.height);
        me.after(loader);
        me.hide();
        return me;
    });
};
function setBasketDetails(data) {
    var basket = $('#Items p');
    if (basket.length < 1)
        return;
    basket.html("<span class=\"strong\">" + data.TotalItems +
                    "</span> items - " + data.FormattedTotal);
}
function refreshBasket() {
    $.ajax({
        type: "GET",
        url: "/Services/ShopWebService.asmx/GetBasketDetail",
        data: "",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            if (typeof msg.d == "object") {
                setBasketDetails(msg.d);
            } else {
                alert(msg.d);
            }
        }
    });
}
var Page_ScrollTo = function (o) {
    if ($(o).length <= 0)
        return;
    $('html,body').animate({ scrollTop: $(o).offset().top }, 'slow');
};
jQuery.fn.showError = function (options) {
    if (!options)
        options = {};
    if (!options.contentClass)
        options.contentClass = ".warning-content";
    if (!options.content)
        options.content = '';
    return this.each(function () {
        var me = $(this);
        var content = me.find(options.contentClass);
        content.html(options.content);
        me.show();
        Page_ScrollTo(me);
        if (options.timeout) {
            setTimeout(function () {
                me.hide();
            }, options.timeout);
        }
        return me;
    });
};
