/* Minification failed. Returning unminified contents.
(3406,19-20): run-time error JS1195: Expected expression: >
(3406,30-31): run-time error JS1004: Expected ';': )
(3416,5-6): run-time error JS1002: Syntax error: }
(3418,68-69): run-time error JS1004: Expected ';': {
(3421,19-20): run-time error JS1195: Expected expression: >
(3421,30-31): run-time error JS1004: Expected ';': )
(3478,21-22): run-time error JS1003: Expected ':': (
(3478,39-40): run-time error JS1100: Expected ',': {
(3486,9-10): run-time error JS1002: Syntax error: }
(3488,42-43): run-time error JS1195: Expected expression: )
(3488,44-45): run-time error JS1004: Expected ';': {
(3492,10-11): run-time error JS1195: Expected expression: ,
(3494,64-65): run-time error JS1004: Expected ';': {
(3503,10-11): run-time error JS1195: Expected expression: ,
(3505,75-76): run-time error JS1004: Expected ';': {
(3515,10-11): run-time error JS1195: Expected expression: ,
(3517,68-69): run-time error JS1004: Expected ';': {
(3544,10-11): run-time error JS1195: Expected expression: ,
(3546,61-62): run-time error JS1004: Expected ';': {
(3555,10-11): run-time error JS1195: Expected expression: ,
(3570,9-10): run-time error JS1002: Syntax error: }
(3595,9-10): run-time error JS1002: Syntax error: }
(3609,9-10): run-time error JS1002: Syntax error: }
(3611,46-47): run-time error JS1197: Too many errors. The file might not be a JavaScript file: ,
(3433,5-13): run-time error JS1018: 'return' statement outside of function: return {
(3430,9-25): run-time error JS1018: 'return' statement outside of function: return propArray
(3415,9-25): run-time error JS1018: 'return' statement outside of function: return propArray
 */
APP.account = (function () {

    function handleHideSection(section) {
        $('body').click(function (e) {
            var target = $(e.target).closest('[' + section + '-section]');
            if (target.length > 0) {
                return true;
            }

            if (section === 'login') {
                $('[login-part]').show();
                $('[forgotpassword-part]').hide();
            }

            $('[' + section + '-box]').hide();
        });
    }


    function initSocialIntegration() {
        $('body').off('click', '[account]');
        $('body').on('click', '[account]', function () {
            switch ($(this).attr('account')) {
                case 'facebook':
                    break;

                case 'twitter':
                    $.post('/twitter/createsession', {}, function (resp) {
                        window.location = resp.url;
                    }, "json");

                    break;
            }
        });
    }

    function login() {
        $('body').on('click', '[send-verification-token]', function () {
            $.post('/user/sendverificationtoken', { uid: $(this).attr('unique-id') }, function (resp) {
                APP.alert.showByResp(resp);
                return false;
            });
        });

        $('body').on('submit', '[login-form]', function (e) {
            e.preventDefault();
            $('.flash-box').html('');
            var $this = $(this);
            var model = $this.serialize();
            $.post('/account/login', model, function (resp) {
                var loginNotificatice = _.template($('#loginNotificationTemplate').html());
                var msg = loginNotificatice({ State: resp.State, UniqueId: resp.UniqueId, VerificationEnabled: resp.VerificationEnabled, Message: resp.Message });
                resp.msg = msg;
                resp.result = resp.State;
                resp.mode = 'target';
                if (!resp.result) {
                    APP.alert.showByResp(resp);
                    return false;
                }
                if (!resp.result) {
                    APP.recaptcha.load();
                    return false;
                }
                window.location = resp.RedirectTo;
                return false;
            });
        });
    }

    function register() {
        $('body').off('submit', '[register-form]');
        $('body').on('submit', '[register-form]', function (e) {
            e.preventDefault();
            $('.flash-box').html('');
            $.post('/account/register', $(this).serialize(), function (resp) {
                if (!resp.result) {
                    resp.mode = 'target';
                    APP.alert.showByResp(resp);
                    APP.errors.show(resp.errors);
                    //clearForm();
                    APP.recaptcha.load();
                    return false;
                }

                APP.ganalytics.register();
                window.location = resp.redirectTo;
            });
        });

        function clearForm() {
            $('[register-form]').find('#Username').val('');
            $('[register-form]').find('#Email').val('');
            $('[register-form]').find('#RegPassword').val('');
            $('[register-form]').find('#RegPasswordConfirmation').val('');
            $('[register-form]').find('#IsRegulationsConfirmed').prop('checked', false);
            $('[register-form]').find('#WantsNewsletter').prop('checked', false);

        }
    }

    function forgotpassword() {
        $('body').on('submit', '[forgot-password-form]', function (e) {
            e.preventDefault();
            $('.flash-box').html('');
            var $this = $(this);
            var model = $this.serialize();
            $.post('/account/forgotpassword', model, function (resp) {
                if (!resp.result) {
                    resp.mode = 'target';
                    APP.alert.showByResp(resp);
                    return false;
                }

                window.location = resp.redirectTo;
                return false;
            });
        });
    }

    return {

        init: function () {
            $('body').on('click', '#open-account-dialog', function () {

                APP.cdialog.open({
                    dataset: {
                        type: 'raw',
                        rawText: $('#account-dialog').html(),
                        width: 600,
                        wrapperAdditionalClass: 'account'
                    },
                    id: 'account-dialog',
                    singleInit: false,
                    staticBackdrop: false
                });

                return false;
            });

            $('body').on('click', '.open-dialog-box', function () {

                var target = $(this).data('target');

                $('.dialog-form-error').html('').hide();
                $('.account-dialog-box').hide();
                $('.' + target).show();
                $('.modal-title').html($(this).data('header-label'));

                if (target === 'account-dialog-main-box') {
                    $('.account-dialog-slim')
                        .removeClass('account-dialog-slim')
                        .addClass('account-dialog');

                    $('.bck-link').hide();
                } else {
                    $('.account-dialog')
                        .removeClass('account-dialog')
                        .addClass('account-dialog-slim');

                    $('.bck-link').show();
                }

                //if (target === 'account-dialog-main-box') {
                //    $('.account-dialog-slim')
                //        .removeClass('account-dialog-slim')
                //        .addClass('account-dialog');

                //    $('.bck-link').hide();
                //} else {
                //    $('.account-dialog')
                //        .removeClass('account-dialog')
                //        .addClass('account-dialog-slim');

                //    $('.bck-link').show();
                //}

                return false;
            });

            login();
            register();
            forgotpassword();
        }
    }

})();;
APP.alert = (function () {
    var stack_bottomright = {
        "dir1": "up",
        "dir2": "left",
        "firstpos1": 25,
        "firstpos2": 25
    };

    function getTitle(r) {

        if (!r) {
            return APP.t('AlertTitleError');
        }

        return '';

    }

    return {

        showByResp: function (resp) {

            if (typeof resp.msg === "undefined" || resp.msg == '') {
                return;
            }

            if (resp.mode == 'target') {
                if (!resp.type) {
                    $('.flash-box').addClass(resp.result ? 'success' : 'error').html(resp.msg).show();
                    return false;
                }

                $('.flash-box-' + resp.type).html(resp.msg).show();
                return false;
            } else if (resp.mode == 'dialog') {
                $('#dialog-alert').find('#message').html(resp.msg);
                //$('#dialog-alert').find('.dialog-title').html(resp.title);
                var html = $('#dialog-alert').html();
                APP.cdialog.open({
                    dataset: {
                        type: 'raw',
                        rawText: html,
						width: 440,
                        wrapperAdditionalClass: 'alert'
						
                    },
                    id: 'alert-dialog',
                    singleInit: false,
                    staticBackdrop: true
                });
            } else {
                new PNotify({
                    title: getTitle(resp.result),
                    text: resp.msg,
                    type: resp.result ? 'success' : 'error',
                    styling: 'brighttheme',
                    stack: stack_bottomright,
                    delay: 12000,
                    insert_brs: false,
                    addclass: 'stack-bottomright'
                });
            }
        },

        show: function (type, msg, title, mode) {
            if (typeof msg === "undefined" || msg == '') {
                return;
            }

            if (mode == 'target') {
                $('.flash-box-' + type).html(msg).show();
                return false;
            } else if (mode == 'dialog') {
                $('#dialog-alert').find('#message').html(msg);
                //$('#dialog-alert').find('.dialog-title').html(title);
                var html = $('#dialog-alert').html();
                APP.cdialog.open({
                    dataset: {
                        type: 'raw',
                        rawText: html,
						width: 440,
                        wrapperAdditionalClass: 'alert'
                    },

                    id: 'alert-dialog',
                    singleInit: false,
                    staticBackdrop: true
                });
            } else {
                new PNotify({
                    title: getTitle(type != 'error'),
                    //title: title,
                    text: msg,
                    type: type,
                    styling: 'brighttheme',
                    stack: stack_bottomright,
                    delay: 4000,
                    insert_brs: false,				
                    addclass: 'stack-bottomright'
                });
            }
        }
    }

})();
;
APP.ganalytics = (function () {

    return {

        productsimpressions: function (products) {

            if (!products || products.length <= 0) {
                return false;
            }

            var list = products[0].list;

            $.each(products, function (i, el) {
                ga("ec:addImpression", {
                    "id": el.Id,
                    "name": el.Name,
                    "price": el.Price,
                    "position": i + 1,
                    "list": el.List
                });
            });

            ga('send', 'pageview');

            $('body').on('click', '[product-item-url]', function () {
                var id = $(this).attr('product-item-url');
                var data = $('[analytics-data=' + id + ']');

                ga("ec:addProduct", {
                    "id": id,
                    "name": data.attr('product-name'),
                    "price": data.attr('price')
                });

                ga('ec:setAction', 'click', {
                    'list': list
                });

                ga('send', 'event', 'E-commerce', 'Product click', 'Product click', {
                    nonInteraction: true
                });
            });

            return false;
        },

        productdetails: function (product) {

            ga("ec:addProduct", {
                "id": product.Id,
                "name": product.Name,
                "price": product.Price
            });

            ga('ec:setAction', 'detail');
            ga('send', 'pageview');
        },

        cart: function (product, action) {
            ga("ec:addProduct", {
                "id": product.Id,
                "name": product.Name,
                "price": product.Price,
                "quantity": 1
            });

            ga('ec:setAction', action);

            var label = action == 'add' ? 'add to cart' : 'remove from cart';

            ga('send', 'event', 'E-commerce', label, label, {
                nonInteraction: true
            });
        },

        checkout: function (step) {

            var json = $('[google-analytics-products]').html();

            if (json.length > 0) {
                var products = $.parseJSON(json);

                $.each(products, function (i, el) {
                    ga("ec:addProduct",
                    {
                        "id": el.Id,
                        "name": el.Name,
                        "price": el.Price,
                        "quantity": 1
                    });
                });
            }

            ga('ec:setAction', 'checkout', {
                'step': step
            });

            ga('send', 'pageview');
        },

        purchase: function (order) {
            $.each(order.Products, function (i, el) {
                ga("ec:addProduct", {
                    "id": el.Id,
                    "name": el.Name,
                    "price": el.Price,
                    "quantity": 1
                });
            });

            ga('ec:setAction', 'purchase', {
                'id': order.OrderNumber,
                'revenue': order.TotalPrice,
                'shipping': order.DeliveryCost
            });

            ga('send', 'pageview');
        },

        register: function () {
            ga('send', 'event', 'User', 'Register', 'Register');
        }
    }
})();;
APP.isMobile = function () {
    return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
}

var $progressBtn = null;
var url = null;

$(document).ajaxSend(function (event, jqxhr, settings) {

    url = settings.url;

    if ($progressBtn == null) {

        $progressBtn = $(event.currentTarget.activeElement);

        if (typeof $progressBtn !== "undefined" && $progressBtn != null) {

            if ($progressBtn.is('a') || $progressBtn.is('input[type="submit"]')) {

                if ($progressBtn.attr('ajax-progress-start') == 'off') {
                    $progressBtn = null;
                    return;
                }

                //var cssClass = $progressBtn.attr('ajax-progress-class');
                //if (typeof cssClass === "undefined" || cssClass == null || cssClass == '') {
                //    cssClass = '';
                //}

                //$progressBtn.hide();
                //$progressBtn.after('<div class="loadingbox ' + cssClass + '">TODO: .loadingbox ' + cssClass + ' </div>');

                $('#loading-progress').show();
            }

        }
    }
});
$(document)
    .ajaxStop(function (event, jqxhr, settings) {

        if ($progressBtn != null) {

            if ($progressBtn.attr('ajax-progress-stop') == 'dont-hide') {
                $progressBtn = null;
                return;
            }

            if (url.indexOf('artworks/buildartworkspath') > 0) {
                $progressBtn = null;
                return false;
            }

            //$progressBtn.parent().find('.loadingbox').remove();
            //$progressBtn.show();

            $('#loading-progress').hide();
            $progressBtn = null;
        }

    });

APP.balloons = (function () {

    return {
        initProductItem: function () {
            if (APP.isMobile()) {
                return;
            }

            function init() {
                //$('.product-item-bookmark').balloon({ contents: APP.t("Balloon.Bookmark"), tipSize: 15, delay: 0, showAnimation: null, minLifetime: 0, showDuration: 0, hideDuration: 0, position: "top", offsetX: 0, offsetY: 60, hideAnimation: null, css: { backgroundColor: '#f00', color: '#fff', opacity: 1, fontSize: '80%' } });
                //$('.product-item-product-bookmark').balloon({ contents: APP.t("Balloon.Bookmark"), tipSize: 15, delay: 0, showAnimation: null, minLifetime: 0, showDuration: 0, hideDuration: 0, position: "top", offsetX: 0, offsetY: 5, hideAnimation: null, css: { backgroundColor: '#f00', color: '#fff', opacity: 1, fontSize: '80%' } });
                //$('.product-item-like').balloon({ contents: APP.t("Balloon.Like"), tipSize: 15, delay: 0, showAnimation: null, minLifetime: 0, showDuration: 0, hideDuration: 0, position: "top", offsetX: 0, offsetY: 60, hideAnimation: null, css: { boxShadow: "2px 2px 4px #000", backgroundColor: '#f00', color: '#fff', opacity: 1, fontSize: '80%' } });
                //$('.product-item-product-like').balloon({ contents: APP.t("Balloon.Like"), tipSize: 15, delay: 0, showAnimation: null, minLifetime: 0, showDuration: 0, hideDuration: 0, position: "top", offsetX: 0, offsetY: 60, hideAnimation: null, css: { boxShadow: "2px 2px 4px #000", backgroundColor: '#f00', color: '#fff', opacity: 1, fontSize: '80%' } });
                //$('.product-item-cart').balloon({ contents: APP.t("Balloon.Cart"), tipSize: 15, delay: 0, showAnimation: null, minLifetime: 0, showDuration: 0, hideDuration: 0, position: "top", offsetX: 0, offsetY: 60, hideAnimation: null, css: { boxShadow: "2px 2px 4px #000", backgroundColor: '#f00', color: '#fff', opacity: 1, fontSize: '80%' } });
                //$('.product-item-product-cart').balloon({ contents: APP.t("Balloon.Cart"), tipSize: 15, delay: 0, showAnimation: null, minLifetime: 0, showDuration: 0, hideDuration: 0, position: "top", offsetX: 0, offsetY: 60, hideAnimation: null, css: { boxShadow: "2px 2px 4px #000", backgroundColor: '#f00', color: '#fff', opacity: 1, fontSize: '80%' } });

                $('.baloon-tip')
                    .each(function () {
                        var $this = $(this);
                        var $i = $this.find('i');

                        $this.balloon({ contents: APP.t('Balloon.' + $i.data('baloon-tip')), tipSize: 15, delay: 0, showAnimation: null, minLifetime: 0, showDuration: 0, hideDuration: 0, position: "top", offsetX: 0, offsetY: $i.data('baloon-offset-y'), hideAnimation: null, css: { backgroundColor: '#f00', color: '#fff', opacity: 1, fontSize: '80%' } });

                    });

            }

            $(document)
                .ajaxStop(function (event, jqxhr, settings) {
                    init();
                });



        }
    }

}());

APP.balloons.initProductItem();

APP.recaptcha = (function () {
    return {
        load: function () {
            $.post('/recaptcha/load', function (html) {
                $('[recaptcha]').html(html);
            });
        }
    }
})();

APP.paging = (function () {
    return {
        refreshCount: function (stats) {
            $('#paging-stats').html('Showing ' + stats.from + ' to ' + stats.to + ' of ' + stats.count + ' entries');
        }
    }
})();

APP.progresswall = (function () {
    return {
        show: function () { $('#loading-progress').show(); },
        hide: function () { $('#loading-progress').hide(); }
    }
})();

APP.dropdowns = (function () {

    return {
        init: function () {
            $('[select2]').select2({
                minimumResultsForSearch: -1,
                placeholder: $(this).data('placeholder')
            }).on('select2:unselecting', function () {
                $(this).data('unselecting', true);
            }).on('select2:opening', function (e) {
                if (APP.isMobile()) {
                    var input = $(this).data('select2').$container.find('input');
                    if (!input.is('disabled')) {
                        input.attr('disabled', 'disabled');
                    }
                }

                if ($(this).data('unselecting')) {
                    $(this).removeData('unselecting');
                    e.preventDefault();
                }
            });

            $('[select2][with-searchbox]').select2({
                placeholder: $(this).data('placeholder'),
                allowClear: true
            });
        }
    }
})();

APP.dropdowns.init();

APP.overload = (function () {

    return {
        init: function (on, target) {

            if (APP.isMobile()) {

                //stad leci mobile

                $('div.overlord').addClass('mobile');

                //$('body').on('mouseover', on, function () {

                //    var t = !target ? $(this) : $(target);

                //    var height = t.children().find('figure').height() / 2;

                //    if (on === '[gallery-item]') {
                //        height = t.height() / 2 * -1;
                //    }

                //    var posY = (height + 20) * -1;

                //    t.find('div.overlord').css('margin-top', posY);
                //});

            } else {

                $('body').on('mouseover', on, function () {

                    var t = !target ? $(this) : $(target);
                    t.find('div.overlord').addClass('mobile');

                    //var height = t.children().find('figure').height() / 2;

                    //if (on === '[gallery-item]') {
                    //    height = t.height() / 2 * -1;
                    //}

                    //var posY = (height + 20) * -1;

                    //t.find('div.overlord').css('margin-top', posY);
                });

                $('body').on('mouseout', on, function () {

                    var t = !target ? $(this) : $(target);
                    t.find('div.overlord').removeClass('mobile');

                    //var height = t.children().find('figure').height() / 2;

                    //if (on === '[gallery-item]') {
                    //    height = t.height() / 2 * -1;
                    //}

                    //var posY = (height + 20) * -1;

                    //t.find('div.overlord').css('margin-top', posY);
                });

            }

            return false;
        }
    }

})();

APP.overload.init('.catalog-browser .item');

APP.submiterror = (function () {
    return {
        show: function (target, errors) {

            $(target + ' .submit-error-tmpl').remove();
            $(target + ' .submit-error').removeClass('submit-error');
            $('[label-for]').removeClass('submit-error');

            if (!errors) {
                return false;
            }

            var template = _.template($('[submit-error-template]').html());

            $.each(errors, function (idx, el) {
                var error = template({ Message: el.Value });

                var t = target + ' [name="' + el.Key + '"]';

                if ($(t).is('[type="checkbox"]')) {
                    $('[label-for="' + el.Key + '"]').addClass('submit-error');
                }

                $(error).insertAfter(t);
                $(t).addClass('submit-error');
            });

            if (errors.length > 0 && $('.submit-error').length > 0) {
                $(window).scrollTop($('.submit-error').first().offset().top - 100);
            }
        }
    }
})();

APP.jquery = (function () {

    var inner = {};


    function initLoadingProgress() {
        $.fn.extend({
            showLoading: function (options) {

                var defaults = {
                    cssClass: '',
                    type: ''
                };

                var o = $.extend(defaults, options);
                return this.each(function () {

                    var obj = $(this);

                    if (obj.data('type') != null & obj.data('type') != "undefined") {
                        o.type = obj.data('type');
                    }

                    obj.hide();
                    obj.after('<div class="loadingbox ' + o.cssClass + ' ' + o.type + '"></div>');
                });
            },

            hideLoading: function () {

                return this.each(function () {

                    var obj = $(this);

                    obj.parent().find('.loadingbox').remove();
                    obj.show();
                });
            }
        });

    }

    inner.init = function () {
        initLoadingProgress();

        $('body')
            .on('click',
                '[app-submit]',
                function (e) {
                    e.preventDefault();
                    var formSelector = $(this).attr('app-submit');
                    $(formSelector).trigger('submit');
                });

        var globalRequestLock = false;
        $('body')
            .on('submit',
                '[app-form]',
                function (e) {
                    e.preventDefault();

                    if (globalRequestLock) {
                        APP.alert.showByResp({ result: false, msg: 'Proszę zaczekać na odpowiedź serwera' });
                        return;
                    }
                    var $this = $(this);

                    $.post($this.attr('app-form'),
                        $this.serialize(),
                        function (resp) {

                            APP.alert.showByResp(resp);

                            if (!resp.result) {

                                if ($this.attr('recaptcha-form') === 'recaptcha') {
                                    APP.recaptcha.load();
                                }

                                return;
                            }

                            switch ($this.data('callback')) {
                                case 'close-dialog':
                                case 'close':
                                    APP.dialog.hide();
                                    break;
                                case 'refresh':
                                case 'reload':
                                    window.location.reload();
                                    break;
                                case 'redirect':
                                    window.location.href = $this.data('redirect-url');
                                    break;
                                default:
                                    break;
                            }

                        },
                        "json").always(function () {

                            globalRequestLock = false;
                        });



                });
    }

    return inner;

})();
APP.jquery.init();

;
APP.artist = (function () {

    var notice = _.template($('#imageNotificationTemplate').html());
    var lock;

    function dateDiffInDays(date1, date2) {
        return Math.abs(Math.floor((date2 - date1) / 86400000));
    }

    function reloadList() {

        var lp = $('#SelectedLetter').val();
        var cp = $('#Category').val();
        var qs = $('#Search').val();
        var so = $('#OrderBy').val();
        var tp = $('#Theme').val();

        var lang = $('#UserLang').val();
        console.log(lang);

        if (lang == 'pl') {
            window.location.href = '/pl/artysci/lista?lp=' + lp + '&cp=' + cp + '&tp=' + tp + '&qs=' + qs + '&so=' + so;
        } else {
            window.location.href = '/en/artists/list?lp=' + lp + '&cp=' + cp + '&tp=' + tp + '&qs=' + qs + '&so=' + so;
        }
    }

    function callFilter(append, scroll) {

        $('#loading-progress').show();

        var model = $('[artists-filter]').serialize();
        console.log(model);

        $.post('/artist/filter', model, function (html) {
            if (append) {
                $('[artists]').append(html);
            } else {
                $('[artists]').html(html);
            }

            if (scroll && localStorage.scrollPosArtists) {
                $(window).scrollTop(localStorage.scrollPosArtists);
            }

            $('#IsBack').val(false);
            $('#loading-progress').hide();
        });

        //history.pushState(null, document.title, window.location.href.split('?')[0] + '?qs=' + $('#Search').val());

        return false;
    }


    return {
        initProfile: function () {

/*
            setTimeout(function () {
                $('.owl-carousel').owlCarousel({
                    margin: 1,
                    autoWidth: true,
                    responsiveClass: true,
                    nav: true,
                    mergeFit: true,
                    slideBy: 1,
                    loop: true,
                    dots: false,
                    merge: true,
                    autoplay: false,
                    dotsClass: 'slider-owl-dots',
                    navText: ['<i class="fal fa-angle-left"></i>', '<i class="fal fa-angle-right"></i>'],
                    responsive: {
                        0: { items: 1 },
                        540: { items: 2 },
                        770: { items: 2 },
                        1020: { items: 4 },
                        1230: { items: 5 }
                    }
                });

               $('.owl-carousel.artist-artworks').css('overflow', 'initial');
			 
            }, 700);
*/


            $('body').on('click', '#show-more', function () {
                $('.sold-item:hidden').show();
                $('#show-more').hide();

                return false;
            });
        },

        init: function () {
            resetPage();
        },

        callFilter: function () {
            callFilter();
        },

        filter: function (page, savedFilterAllowed) {
            if (savedFilterAllowed) {

                if (window.performance &&
                    window.performance.navigation.type == window.performance.navigation.TYPE_BACK_FORWARD) {

                    $('#IsBack').val(true);
                    $('#Page').val(page);
                    callFilter(false, true);
                }

                $('#IsBack').val(false);
                $('#Page').val(1);
            } else {
                $('#IsBack').val(false);
                $('#Page').val(1);
            }

            var clearTimer = false;
            $('body').on('keyup', '#Search', function (e) {

                var $this = $(this);

                if (clearTimer !== false) {
                    clearTimeout(clearTimer);
                }

                clearTimer = setTimeout(function () {

                    if ($this.val().length < 3) {
                        return false;
                    }

                    if (e.keyCode === 8 && $this.val().length == 0) {
                        $('#IsBack').val(false);
                        $('#Page').val(1);

                        reloadList();
                        return false;
                    }

                    $('#IsBack').val(false);
                    $('#Page').val(1);

                    reloadList();
                    clearTimer = false;

                }, 1000);
            });

            $('body').on('click', '#submit-search', function () {

                $('#IsBack').val(false);
                $('#Page').val(1);

                reloadList();
                return false;
            });

            $('body').on('change', '#Category', function () {

                $('#Page').val(1);
                $('#IsBack').val(false);

                reloadList();

                return false;
            });

            $('body').on('change', '#Theme', function () {

                $('#Page').val(1);
                $('#IsBack').val(false);

                reloadList();

                return false;
            });

            $('body').on('change', '#OrderBy', function () {

                $('#Page').val(1);
                $('#IsBack').val(false);

                reloadList();

                return false;
            });

            $('body').on('click', '[name="Letter"]', function () {
				var $element = $(this);
					if ($element.hasClass('active')) {
						$('#Page').val(1);
						$('#IsBack').val(false);
						$('#SelectedLetter').val('');
						$(this).removeClass('active');
					} else {
						$('#Page').val(1);
						$('#IsBack').val(false);
						$('#SelectedLetter').val($(this).text());
					}
                reloadList();
                return false;
            });

            $('body').on('submit', '[artists-filter]', function () {
                $('#Page').val(1);
                $('#IsBack').val(false);

                reloadList();
                //window.location.href = window.location.href.split('?')[0] + '?qs=' + $('#Search').val();
                return false;
            });
        },















        loadMore: function () {
            //$(window).on("scroll", function () {
            $('body').on('click', '#showMoreArtistsBtn', function () {
                //if (lock) {
                //    return false;
                //}

                //var scrollHeight = $(document).height();
                //var scrollPosition = $(window).height() + $(window).scrollTop();

                //localStorage.setItem("scrollPosArtists", $(window).scrollTop());

                //var ratio = 0.20 - scrollHeight / 100000;

                //if (ratio < 0.05) {
                //    ratio = 0.05;
                //}

                //var r = (scrollHeight - scrollPosition) / scrollHeight;

                //if (r <= ratio) {

                //    lock = true;

                    var page = parseInt($('[artists-page]').val()) + 1;

                    $('[artists-page]').val(page);

                    callFilter(true);

                    //$(document).ajaxSuccess(function (event, xhr, settings) {
                    //    if (settings.url == '/artist/filter') {
                    //        lock = false;
                    //    }
                    //});

                    return false;
               // }

            });
			
			
			
			
            $('body').on('click', '.catalog-filter-nav', function () {
                $('.filter-panel').toggleClass('visible').addClass('advanced');
                $('body').toggleClass('compensate-for-scrollbar');
                return false;
            });

            $('body').click(function (e) {
                var target = $(e.target).closest('.filter-panel');
                if (target.length > 0) {
                    return true;
                }
                $('.filter-panel').removeClass('visible').removeClass('advanced');;
                $('body').removeClass('compensate-for-scrollbar');
            });			
			
            $('.xcloseFilter').click(function (e) {
                var target = $(e.target).closest('.filter-panel');
                if (target.length > 0) {
                    return true;
                }
                $('.filter-panel').removeClass('visible').removeClass('advanced');
                $('body').removeClass('compensate-for-scrollbar');
            });				
			
			
        },



        hideLoadMoreBtn: function () {
            $('#showMoreArtistsBtn').hide();
        },

        changeFollowSign: function () {
            $('body').off('click', '[follow]');
            $('body').on('click', '[follow]',
                function (e) {
                    e.preventDefault();
                    var $this = $(this);
                    var isFollow = $this.attr('follow') == "0";
                    var id = $this.attr('artist-id');

                    $.post('/artist/' + (isFollow ? 'followartist' : 'unfollowartist'),
                        {
                            id: id
                        },
                        function (resp) {
                            if (resp.result) {
                                var $i = $this.find('i');
                                if (isFollow) {
                                    $this.attr('follow', 1);
                                    $i.attr('class', 'fal fa-eye-slash');
                                    //APP.t('ArtistProfileFollower');
                                    //$('[followers]').text('test' + $('[followers]').attr('followers') + $('[followers]').attr('t-string'));

                                } else {
                                    $this.attr('follow', 0);
                                    $i.attr('class', 'fal fa-eye');

                                    if (window.location.pathname === '/user/followed') {
                                        $('[artist="' + id + '"]').remove();
                                    }
                                }

                                var msg = notice({ Image: resp.image, Name: resp.name, Message: resp.text });
                                APP.alert.show('success', msg);
                                return false;
                            }

                            APP.alert.showByResp(resp);
                        },
                        "json");
                });
        },

        description: function () {
            $('body').on('click', '#artist-desc-show', function () {
                $(this).hide();
                $('.product-artist-box')
                    .removeClass('trim')
                    .addClass('full');

                $('.shomore')
                    .removeClass('trim')
                    .addClass('full');

                $('#artist-desc-hide').show();
            });

            $('body').on('click', '#artist-desc-hide', function () {
                $(this).hide();
                $('.product-artist-box')
                    .removeClass('full')
                    .addClass('trim');

                $('.shomore')
                    .removeClass('full')
                    .addClass('trim');

                $('#artist-desc-show').show();

                $(window).scrollTop($('.artist-wrap').offset().top);
            });
        },

        interestdialog: function () {
            $('body').on('click', '#open-form-dialog', function () {
                var model = {
                    productId: $(this).data('product-id'),
                    position: $(this).data('product-position'),
                    artistId: $(this).data('id'),
                    artistName: $(this).data('artist-name')
                }
                var auction = {
                    name: $(this).data('auction-name'),
                    id: $(this).data('auction-id'),
                    date: $(this).data('auction-date'),
                    type: $(this).data('auction-type'),
                }
                var caller;
                if (auction.id > 0) {
                    caller = 'auction';
                } else {
                    caller = 'gallery';
                }
                APP.gdataLayer.pushButtonObserveArtist(model, auction, caller);
                
                APP.cdialog.open({
                    dataset: {
                        type: 'async',
                        url: '/artist/interestformdialog',
                        model: { id: $(this).data('id'), caller: caller },
                        width: 600,
                        wrapperAdditionalClass: 'open-interests-form'
                    },
                    id: 'open-interests-form-dialog',
                    singleInit: false,
                    staticBackdrop: true
                });

                return false;
            });

            $('body').on('click', '#submit-artist-interest-form', function () {
                var model = {
                    author: $('#ArtistName').val(),
                    authorId: $('#ArtistId').val()
                };
                var caller = $('#Caller').val();

                $('#submit-artist-interest-form').hide();
                $.post('/artist/sendinterest', $('#interest-form').serialize(), function (resp) {
                    if (!resp.result) {

                        APP.errors.show(resp.errors);

                        $('#submit-artist-interest-form').show();
                        return false;
                    }

                    $('.modal-body').html(resp.msg);

                    APP.gdataLayer.pushSendObserveArtist(model, caller);

                    return false;
                });
            });
        },

        interestform: function () {
            $('body').on('click', '#show-artist-contact-form', function () {
                $('#artist-contact-form').show();
                return false;
            });

            $('body').on('click', '#close-artist-contact-form', function () {
                $('#artist-contact-form').hide();

                $('input[type="text"]:not([readonly]), input[type="email"], textarea').val('');
                $('input[type="checkbox"]').prop('checked', false);

                return false;
            });

            $('body').on('click', '#submit-artist-interest-form', function () {
                $('input,label').removeClass('error');
                $('#submit-artist-interest-form').hide();
                var model = {
                    author: $('#ArtistFullName').val(),
                    authorId: $('#ArtistId').val()
                };
                $.post('/artist/sendinterest', $('#interest-form').serialize(), function (resp) {
                    if (!resp.result) {
                        $('.validation-errors').show();
                        $.each(resp.errors, function (idx, el) {

                            if ($('[name="' + el.Key + '"]').is(':checkbox')) {
                                el.Key += 'Label';
                            }

                            $('[name="' + el.Key + '"]').addClass('error');
                        });
                        $('#submit-artist-interest-form').show();
                        return false;
                    }

                    $('.validation-errors').hide();

                    $('input[type="text"]:not([readonly]), input[type="email"], textarea').val('');
                    $('input[type="checkbox"]').prop('checked', false);

                    APP.gdataLayer.pushArtistProfileSendObserveArtist(model);

                    APP.alert.show('success', resp.msg, resp.title, 'dialog');

                    $('#submit-artist-interest-form').show();

                    return false;
                });
            });
        },

        setViews: function (artistId) {
            $(function () {
                var resetAfterDays = 1;
                var updateDatabase = false;

                var va = localStorage.getItem("ViewedArtists");

                if (va == null) {
                    localStorage.setItem("ViewedArtists", JSON.stringify([Date.now(), artistId]));
                    updateDatabase = true;
                } else {
                    var viewedArtists = JSON.parse(va);

                    var date = Date.now();

                    if (dateDiffInDays(viewedArtists[0], date) > resetAfterDays) {
                        localStorage.setItem("ViewedArtists", JSON.stringify([date, artistId]));
                        updateDatabase = true;
                    }

                    if (viewedArtists.indexOf(artistId) == -1) {
                        viewedArtists.push(artistId);
                        localStorage.setItem("ViewedArtists", JSON.stringify(viewedArtists));
                        updateDatabase = true;
                    }
                }

                if (updateDatabase) {
                    $.post('/artist/UpdateViews', { id: artistId }, function (resp) {
                        $('#profile-views').html(resp.Views);
                        return false;
                    });
                }
            });
        }
    }
})();;
APP.artworksubmission = (function () {
    var template = _.template($('[submit-error-template]').html());



    function recount() {
        var rowCount = $('#productsDataTable .posnum:visible').length;
        $("#productsDataTable .posnum:visible").html(function (i) { return (i + 1) + "." })
        console.log(rowCount);
        if (rowCount > 4) {
            $('button#addNextBtn').hide();
        } else {
            $('button#addNextBtn').show();
        }
    }


    function error(resp) {

        $('.submit-errors-box').html(resp.msg).show();

        if (resp.errors) {
            $.each(resp.errors, function (idx, el) {
                var error = template({ Message: el.Value });

                if (el.Key === 'RegulationsConfirmed') {
                    $(error).insertAfter('#RegulationsConfirmedLabel');
                    $('#' + el.Key).addClass('submit-error');
                    $('#RegulationsConfirmedLabel').css('color', '#f00');
                    return true;
                }

                if ($('#' + el.Key).hasClass('inputfile')) {

                    $(error).insertAfter('#' + el.Key);
                    $('#' + el.Key).parent().addClass('submit-error');
                    //$(error).insertAfter('label[for="' + el.Key + '"]');
                    //$(('label[for="' + el.Key + '"]')).addClass('submit-error');
                    return true;
                }

                if ($('#' + el.Key).is('[select2]')) {
                    $('#' + el.Key).parent().find('.select2-selection').css('border', '1px solid #f00');
                }

                $(error).insertAfter('#' + el.Key);
                $('#' + el.Key).addClass('submit-error');
            });
        }
        $(document).scrollTop(0);
    }

    return {

        register: function () {

            $('body').on('focusout', 'input, textarea', function () {
                if ($(this).attr('name') != 'Year') {
                    validateInput($(this));
                }
                return false;
            });

            $('body').on('change', '[type="file"]', function () {
                validateFile(this);
                //////  return false;
            });

            $('body').on('change', '[type="checkbox"]', function () {
                validateCheckbox(this);
                return false;
            });

            $('.numericValidation').keypress(function (evt) {
                var charCode = (evt.which) ? evt.which : event.keyCode

                if (charCode > 31 && (charCode < 48 || charCode > 57)) {
                    return false;
                }
            });

            $("#addNextBtn").click(function (e) {
                e.preventDefault();
                $(".productRow:hidden:first").show();
                if ($(".productRow").is(":hidden")) {
                    $(this).prop('disabled', false);
                } else {
                    $(this).prop('disabled', true);
                }
                recount();
                return false;
            });

            $('.deleteSubmissionBtn').click(function (e) {
                e.preventDefault();
                var tr = $(this).closest('.productRow');
                tr.find(':input[type=text]').each(function () {
                    $(this).val('');
                    $(this).removeClass('submit-error');
                    $(this).parent().find('ul').hide();
                });
                tr.hide();
                recount();
                var fileInput = tr.find(':input[type=file]');
                fileInput.val('');
                fileInput.parent().find('ul').hide();

                tr.find('label').each(function () {
                    $(this).removeClass('submit-error');
                });

                $("#addNextBtn").prop('disabled', false);
                return false;
            });

            $('body').on('submit', '#submit-artwork-form', function (e) {

                e.preventDefault();

                var btn = $('#submit-all');
                $('#submit-all').attr('disabled', 'disabled').html('<img src="' + btn.data('loading') + '" />');
                
                $('.submit-errors-box').hide();

                var canContinue = true;

                $.each($('[type="checkbox"]'), function (idx, input) {
                    var result = validateCheckbox(input);
                    if (canContinue && !result) {
                        canContinue = false;
                    }
                });

                $.each($('#ownerDataTable :input'), function (idx, input) {
                    var result = validateInput($(input));
                    if (canContinue && !result) {
                        canContinue = false;
                    }
                });

                $.each($('[type="file"]'), function (idx, input) {
                    var result = validateFile(input);
                    if (canContinue && !result) {
                        canContinue = false;
                    }
                });

                if (!canContinue) {
                    console.log('false');
                    var msg = $('.submit-errors-box').data('error-msg')
                    $('.submit-errors-box').html(msg).show();
                    $('.submit-errors-box').show();
                    $(document).scrollTop(0);

                    $('#submit-all').removeAttr('disabled').html(btn.data('normal'));
                    return false;
                }

                var form = $(this);

                $('input').removeClass('submit-error');
                $('label').removeClass('submit-error');
                $('#RegulationsConfirmedLabel').css('color', '#333');
                $('.submit-error-tmpl').remove();

                var formData = new FormData();
                var data = form.serializeArray();

                $.each(data, function (key, el) {
                    formData.append(el.name, el.value);
                });

                for (var i = 0; i < 5; i++) {
                    if ($('#File-' + i).get(0).files.length > 0 && validateFile($('#File-' + i).get(0))) {
                        formData.append('Submissions[' + i + '].File', $('#File-' + i).get(0).files[0]);
                    }
                    formData.append('Submissions[' + i + '][Technics]', $('#Technics-' + i).val());
                    formData.append('Submissions[' + i + '][Height]', $('#Height-' + i).val());
                    formData.append('Submissions[' + i + '][Width]', $('#Width-' + i).val());
                    formData.append('Submissions[' + i + '][Depth]', $('#Depth-' + i).val());
                    formData.append('Submissions[' + i + '][Title]', $('#Title-' + i).val());
                    formData.append('Submissions[' + i + '][Artist]', $('#Artist-' + i).val());
                    formData.append('Submissions[' + i + '][Year]', $('#Year-' + i).val());
                    formData.append('Submissions[' + i + '][Substrate]', $('#Substrate-' + i).val());
                }

                $.ajax({
                    type: 'POST',
                    url: '/SubmitArtwork/Submit',
                    data: formData,
                    dataType: 'json',
                    enctype: 'multipart/form-data',
                    contentType: false,
                    processData: false,
                    async: false,

                    success: function (resp) {
                        if (resp.result) {
                            window.location.href = resp.msg;
                            //location.reload();
                            //console.log(resp.result);
                            //$('#submit-all').removeAttr('disabled').html(btn.data('normal'));
                            return false;
                        }

                        error(resp);
                        $('#submit-all').removeAttr('disabled').html(btn.data('normal'));
                    }
                });
            });

            function validateInput(input) {

                if (input.val().length > 0) {
                    if (input.is('[type="file"]')) {
                        return false;
                    }

                    input.removeClass('submit-error');
                    input.parent().find('ul').remove();
                    return true;
                } else {
                    var ul = input.parent().find('ul');
                    if (ul.length > 0) {
                        input.addClass('submit-error');
                        ul.show();
                    } else {
                        var error = template({ Message: input.data('error-msg') });
                        $(error).insertAfter('#' + input.attr('id'));
                        $('#' + input.attr('id')).addClass('submit-error');
                    }
                    return false;
                }

            }

            function validateCheckbox(input) {
                var $this = $(input);
                $this.removeClass('submit-error');
                $this.parent().parent().find('ul').remove();
                if (!$this.is(':checked')) {
                    var error = template({ Message: $this.data('error-msg') });
                    $(error).insertAfter('#RegulationsConfirmedLabel');
                    $this.addClass('submit-error');
                    return false;
                }
                return true;
            }

            function validateFile(input) {

                var inp = $(input);
                inp.parent().removeClass('submit-error');
                inp.parent().parent().find('ul').remove();
                if (inp.val().length > 0) {
                    console.log('validate');
                    var val = inp.val().toLowerCase();
                    if (!val.endsWith('.png') && !val.endsWith('.jpg') && !val.endsWith('.jpeg')) {
                        console.log('error');
                        $('<ul class="proposal-submit-error filled"><li class="proposal-submit-error-required">Możesz przesłać tylko pliki .jpg lub .png</li></ul>').insertAfter(inp.parent());
                        inp.parent().addClass('submit-error');
                        return false;
                    }
                    if (input.files[0].size > 5767168) {
                        $('<ul class="proposal-submit-error filled"><li class="proposal-submit-error-required">5 mb to maksymalny rozmiar przesyłanego pliku</li></ul>').insertAfter(inp.parent());
                        inp.parent().addClass('submit-error');
                        return false;
                    }
                    var _URL = window.URL || window.webkitURL;
                    var file, img;
                    if ((file = input.files[0])) {
                        img = new Image();
                        img.onload = function () {
                            if (this.width > 4800 || this.height > 4800) {
                                $('<ul class="proposal-submit-error filled"><li class="proposal-submit-error-required">Maksymalne wymiary grafiki to 4800x4800 px</li></ul>').insertAfter(inp.parent());
                                inp.parent().addClass('submit-error');
                                return false;
                            }
                        };
                        img.src = _URL.createObjectURL(file);
                    }

                    return true;
                }
                //else {
                //    $('label[for="' + inp.attr('id') + '"]').addClass('submit-error');
                //    return false;
                //}
                return true;


            }

        }


    }
})();;

APP.cart = (function () {

    var addLock = false;
    var notice = _.template($('#imageNotificationTemplate').html());

    function refreshCount() {
        setTimeout(function () {
            $.post('/cart/getitemscount', function (resp) {
                $.post('/cart/itemscount', { quantity: resp.quantity }, function (html) {
                    $('[cart-items-count]').html(html);
                });
                APP.gdataLayer.pushCartInfoSummary(resp.products, resp.curr);
                return false;
            });
        }, 1200);
    }

    function loadPreview() {
        $.post('/cart/preview', function (html) {
            $('[cart-preview]').html(html);
        });
    }


    function loadDetails(actionsEnabled) {

        var countryId;
        var deliveryMethod;
        var paymentType;
        if (actionsEnabled) {
            countryId = $('#CountryId option:selected').val();
            deliveryMethod = $('[name="DeliveryMethod"]:checked').val();
            paymentType = $('[name="PaymentMethod"]:checked').val();
        } else {
            countryId = $('#CountryId').val();
            deliveryMethod = $('[name="DeliveryMethod"]').val();
            paymentType = $('[name="PaymentMethod"]').val();
        }

        var model = {
            countryId: countryId,
            paymentType: paymentType,
            actionsEnabled: actionsEnabled,
            discount: $('#Discount').val()
        }

        $.post('/cart/details', model, function (html) {
            $('#cart-table').html(html);
            return false;
        });

        if (actionsEnabled) {
            APP.checkout.paymentMethods();
        }
    }

    function shortSummary(actionsEnabled) {

        var countryId;
        var deliveryMethod;
        var paymentType;
        if (actionsEnabled) {
            countryId = $('#CountryId option:selected').val();
            deliveryMethod = $('[name="DeliveryMethod"]:checked').val();
            paymentType = $('[name="PaymentMethod"]:checked').val();
        } else {
            countryId = $('#CountryId').val();
            deliveryMethod = $('[name="DeliveryMethod"]').val();
            paymentType = $('[name="PaymentMethod"]').val();
        }

        var model = {
            countryId: countryId,
            deliveryMethod: deliveryMethod,
            paymentType: paymentType,
            discount: $('#Discount').val(),
            code: $('#PromoCodeValue').val(),
            step: $('#CheckoutStep').val()
        }
        
        $.post('/cart/getshortsummary', model, function (html) {
            $('#short-summary').html(html);
            return false;
        });
    }

    return {

        handleDeliveryAvailability: function (isNull, countries) {

            var selectedCountry = $('#CountryId option:selected').val() || $('#CountryId').val();

            if (isNull == true && selectedCountry == 168) {
                $('#process-checkout').removeClass('disabled');
                $('#payment-methods-box').show();
                $('#delivery-methods').show();
                $('.deliverycompany').hide();
                $('#PersonalPickup').prop('checked', true);

                return false;

            } else if (isNull == true && selectedCountry != 168) {
                $('#process-checkout').addClass('disabled');
                $('#payment-methods-box').hide();
                $('#delivery-methods').hide();
                //$('.dvcost').html(APP.t('DeliveryNotAvailable'));
                return false;
            }

            if (countries.length == 0) {
                $('#process-checkout').removeClass('disabled');
                $('#payment-methods-box').show();
                $('#delivery-methods').show();
                $('.deliverycompany').show();
                return false;
            }

            if (countries.length > 1) {
                $('#process-checkout').addClass('disabled');
                $('#payment-methods-box').hide();
                $('#delivery-methods').hide();
                //$('.dvcost').html(APP.t('DeliveryNotAvailable'));
                return false;
            }

            if (selectedCountry == countries[0]) {
                $('#process-checkout').removeClass('disabled');
                $('#payment-methods-box').show();
                $('#delivery-methods').show();
                $('.deliverycompany').show();
                return false;
            }

            $('#process-checkout').addClass('disabled');
            $('#payment-methods-box').hide();
            $('.deliverycompany').hide();
            //$('.dvcost').html(APP.t('DeliveryNotAvailable'));
        },

        shortSummary: function () {
            shortSummary();
        },

        refreshPreviewCount: function () {
            refreshCount();
        },

        preview: function () {
            $('[cart-preview-link]').click(function () {

                var preview = $('[cart-preview]');

                if (preview.is(':visible')) {
                    preview.hide();
                    return;
                }

                loadPreview();
                preview.show();

                handleHidePreview();

                return false;
            });

            refreshCount();

            function handleHidePreview() {
                $('body').click(function (e) {
                    var target = $(e.target).closest('[cart-preview], [cart-preview-link]');
                    if (target.length > 0) {
                        return true;
                    }

                    $('[cart-preview]').hide();
                });
            }
        },

        reloadItems: function (mode, msg) {
            $.post('/cart/getitems', { withErrorMessage: msg, mode: mode }, function (html) {
                $('.cart-item-row').remove();
                $('.cart-summ').prepend(html);

                return false;
            });
        },

        refreshTotal: function (discountPercent,
            formattedDiscountedTotal,
            formattedTotal,
            rawTotal,
            isPromoCodeActive) {

            if (isPromoCodeActive) {
                $('.discount').html(discountPercent);
                $('.oldprice').html(formattedTotal);
                $('.finalprice').html(formattedDiscountedTotal);
            } else {
                $('.finalprice').html(formattedTotal);
            }

            $('[raw-total]').attr('raw-total', rawTotal);
        },

        add: function () {

            $('body').off('click', '[add-to-cart]');
            $('body').on('click', '[add-to-cart]', function (e) {

                if (addLock) {
                    return false;
                }
                addLock = true;
                e.preventDefault();
                var $this = $(this);
                $(this).hideBalloon();

                var productId = $(this).attr('product-id');
                var isProductDetails = $(this).is('[product-details-btn]');



                $.post('/cart/add', { id: productId }, function (resp, status, xhr) {
                    var ct = xhr.getResponseHeader("content-type") || "";
                    if (ct.indexOf('html') > -1) {
                        APP.cdialog.open({
                            dataset: {
                                type: 'raw',
                                rawText: resp,
                                width: 580,
                                wrapperAdditionalClass: 'add-to-cart'
                            },
                            id: 'add-to-cart-dialog',
                            singleInit: false,
                            staticBackdrop: true
                        });

                        addLock = false;
                    }
                    if (ct.indexOf('json') > -1) {
                        refreshCount();
                        APP.alert.showByResp(resp);
                        addLock = false;
                        return false;
                    }
                    var template;
                    if (isProductDetails) {
                        template = _.template($('[remove-from-cart-product-details-template]').html());
                        $('[details-cart-btn="' + productId + '"]').html(template({ Id: productId, AdditionalAttr: 'product-details-btn' }));
                        var $span = $('[cart-btn="' + productId + '"] span');
                        $span.removeAttr('add-to-cart');
                        $span.removeAttr('remove-cart-item');
                        $span.attr('remove-cart-item', '');
                        $span.attr('cart', 1);
                        $span.html('<i class="material-icons" data-baloon-tip="UnCart" data-baloon-offset-y="5">shopping_cart</i>');
                    } else if ($this.hasClass('cart-btn')) {
                        $('div#tile-cart-btns-' + productId).html('<a href="javascript:;" class="btn cart-btn" remove-cart-item product-id="' + productId + '">' + APP.t('RemoveFromCart') + '</a>');
                    }

                    else {
                        template = _.template($('[remove-from-cart-template]').html());
                        $('[cart-btn="' + productId + '"]').html(template({ Id: productId, AdditionalAttr: '' }));
                    }

                    refreshCount();
                    APP.ganalytics.cart(resp, 'add');
                    addLock = false;
                    return false;
                });
            });
        },

        remove: function () {

            $('body').on('click', '[remove-cart-item]', function (e) {

                e.preventDefault();

                var $this = $(this);

                APP.progresswall.show();

                $(this).hideBalloon();

                var productId = $(this).attr('product-id');
                var isCartDetailsView = $('#short-summary').length > 0;
                var isProductDetails = $(this).is('[product-details-btn]') || ($('input[product-id]').length && $('input[product-id]').val().length > 0);
                var isPreview = $(this).is('[preview]');
                var isExists = $('[cart-btn]').length > 0;

                $.post('/cart/remove', { id: productId }, function (resp, status, xhr) {
                    var ct = xhr.getResponseHeader("content-type") || "";
                    if (ct.indexOf('html') > -1) {
                        APP.cdialog.open({
                            dataset: {
                                type: 'raw',
                                rawText: resp,
                                width: 580,
                                wrapperAdditionalClass: 'remove-from-cart'
                            },
                            id: 'remove-from-cart-dialog',
                            singleInit: false,
                            staticBackdrop: true
                        });
                    }
                    if (ct.indexOf('json') > -1) {
                        refreshCount();
                        APP.alert.showByResp(resp);
                        return false;
                    }

                    var template;
                    var overlordTemplate;

                    if (isProductDetails) {
                        template = _.template($('[add-to-cart-product-details-template]').html());

                        $('[details-cart-btn="' + productId + '"]').html(template({ Id: productId, AdditionalAttr: 'product-details-btn' }));

                        var $span = $('[cart-btn="' + productId + '"] span');
                        $span.attr('cart', 0);
                        $span.removeAttr('add-to-cart');
                        $span.removeAttr('remove-cart-item');
                        $span.attr('add-to-cart', '');

                        $span.html('<i class="material-icons-outlined" data-baloon-tip="Cart" data-baloon-offset-y="5">shopping_cart</i>');

                        $('div#tile-cart-btns-' + productId).html('<a href="javascript:;" class="btn cart-btn" add-to-cart product-id="' + productId + '">' + APP.t('AddToCart') + '</a>');
                    } else if ($this.hasClass('cart-btn')) {
                        $('div#tile-cart-btns-' + productId).html('<a href="javascript:;" class="btn cart-btn" add-to-cart product-id="' + productId + '">' + APP.t('AddToCart') + '</a>');
                    }
                    else {
                        template = _.template($('[add-to-cart-template]').html());
                        $('[cart-btn="' + productId + '"]').html(template({ Id: productId, AdditionalAttr: '' }));
                    }

                    refreshCount();

                    if (isCartDetailsView) {
                        var actionsEnabled = $('#CheckoutStep').val() == '1';
                        loadDetails(actionsEnabled);
                        shortSummary(actionsEnabled);
                    }

                    if (isPreview) {
                        loadPreview();
                    }

                    APP.ganalytics.cart(resp, 'remove');

                    APP.progresswall.hide();

                    return false;
                });
            });
        }
    }

})();;
APP.catalog = (function () {

    var lock;

    function callFilter(append, scroll, callback, reload) {

        appendDataToForm();

        var $filter = $('[catalog-filter]');

        var model = createFilterModel($filter);

        model["Page"] = $filter.find('[name="Page"]').val();
        model["IsBack"] = $filter.find('[name="IsBack"]').val();
        model["AuctionHeaderShowed"] = model["Page"] > 1 ? $('#auction-header').length > 0 : false;
        model["ProductsHeaderShowed"] = model["Page"] > 1 ? $('#products-header').length > 0 : false;

        $('#loading-progress').show();

        $.post('/artworks/buildartworkspath', model, function (resp) {

            if (reload) {
                window.location = resp.userurl;
                return false;
            }

            //history.pushState(null, document.title, resp.userurl);

            $('[hreflang="x-default"]').attr('href', resp.xdefault);
            $.each(resp.hreflangs, function (idx, el) {
                $('[hreflang="' + el.Lang + '"]').attr('href', el.Url);
            });
        });

        if (reload) {
            return false;
        }

        $.post('/artworks/action/filter', model, function (html) {

            if (append) {
                $('[catalog]').append(html);
            } else {
                $('[catalog]').html(html);
            }

            if (scroll && localStorage.scrollPos) {
                $(window).scrollTop(localStorage.scrollPos);
            }

            renderImages();
            $('#IsBack').val(false);

            $('#loading-progress').hide();

            if (!callback) {
                return false;
            }

            callback();
        });

        return false;
    }

    function createFilterModel($filter) {

        var technics = $filter.find('[name="Technics"] option:selected').val();
        var themes = $filter.find('[name="Themes"] option:selected').val();
        var styles = $filter.find('[name="Styles"] option:selected').val();
        var moods = $filter.find('[name="Moods"] option:selected').val();
        var substrates = $filter.find('[name="Substrates"] option:selected').val();

        var colors = $filter.find('[name="Colors"]:checked').map(function () {
            return $(this).val();
        }).get();

        var shapes = $filter.find('[name="Shapes"]:checked').map(function () {
            return $(this).val();
        }).get();

        var orientations = $filter.find('[name="Orientations"]:checked').map(function () {
            return $(this).val();
        }).get();

        var model = {
            Category: $filter.find('[name="Category"]').val(),
            Artist: $filter.find('[name="Artist"]').val(),
            Year: $filter.find('[name="Year"]').val(),
            Technics: technics != null ? technics : "",
            Themes: themes != null ? themes : "",
            Styles: styles != null ? styles : "",
            Moods: moods != null ? moods : "",
            Colors: colors != null ? colors.join(',') : "",
            Shapes: shapes != null ? shapes.join(',') : "",
            Substrates: substrates != null ? substrates : "",
            Orientations: orientations != null ? orientations.join(',') : "",
            Exclusive: $filter.find('[name="Exclusive"]').val(),
            Sale: $filter.find('[name="Sale"]').val(),
            PerfectGift: $filter.find('[name="PerfectGift"]').val(),
            Framing: $filter.find('[name="Framing"]').val(),
            Recommended: $filter.find('[name="Recommended"]').val(),
            FollowedArtist: $filter.find('[name="FollowedArtist"]').val(),
            PriceFrom: $filter.find('[name="PriceFrom"]').val(),
            PriceTo: $filter.find('[name="PriceTo"]').val(),
            InitPriceFrom: $filter.find('[name="PriceFrom"]').attr('init-value'),
            InitPriceTo: $filter.find('[name="PriceTo"]').attr('init-value'),
            WidthFrom: $filter.find('[name="WidthFrom"]').val(),
            WidthTo: $filter.find('[name="WidthTo"]').val(),
            InitWidthFrom: $filter.find('[name="WidthFrom"]').attr('min'),
            InitWidthTo: $filter.find('[name="WidthTo"]').attr('max'),
            HeightFrom: $filter.find('[name="HeightFrom"]').val(),
            HeightTo: $filter.find('[name="HeightTo"]').val(),
            InitHeightFrom: $filter.find('[name="HeightFrom"]').attr('min'),
            InitHeightTo: $filter.find('[name="HeightTo"]').attr('max'),
            IsSmallDimensionsSelected: $('#IsSmallDimensionsSelected').val(),
            IsMediumDimensionsSelected: $('#IsMediumDimensionsSelected').val(),
            IsLargeDimensionsSelected: $('#IsLargeDimensionsSelected').val(),
            IsExtraLargeDimensionsSelected: $('#IsExtraLargeDimensionsSelected').val(),
            SearchTerm: $filter.find('[name="SearchTerm"]').val(),
            Visualisation: $filter.find('[name="Visualisation"]').val(),
            Order: $('[name="OrderBy"] option:selected').val()
        };

        return model;
    }

    function renderImages() {
        //var type = $('[change-images]').attr('set-to');

        //if (type === 'visualisation') {
        //    changeTileImg('data-tile-url');
        //    changeOrientation('data-tile-orient');
        //    APP.overload.init('.catalog-browser .item');
        //    return;
        //}

        //changeTileImg('data-vis-url');
        //changeOrientation('data-vis-orient');
        //APP.overload.init('.catalog-browser .item');
    }

    function appendDataToForm() {
        $('#Order').val($('[catalog-order] option:selected').val());
    }

    function resetPage() {
        $('[catalog-page]').val(1);
    }

    function clearFilterForm() {
        $('[catalog-filter]').trigger('reset');
        $('[catalog-filter] input[type="text"]').val('');
        $('[catalog-filter] input[type="checkbox"]').removeAttr('checked');
        $('label').removeClass('selected');
        $('div').removeClass('selected');
        $('[select2]').not('[catalog-order]').select2('destroy');
        $('option').removeAttr('selected');
        $('[color-checkbox-label]').find('.material-icons').remove();

        APP.dropdowns.init();

        resetRangeSlider('#Width');
        resetRangeSlider('#Height');

        $('[current-category]').html($('#Category option:selected').text());

        callFilter();
    }

    function resetRangeSlider(selector) {
        var slider = $(selector).data('ionRangeSlider');

        slider.update({
            from: slider.result.min,
            to: slider.result.max
        });
    }

    function changeTileImg(to) {
        var imgs = $('[data-product-img]');

        $.each(imgs, function (idx, el) {
            var img = $(el);
            img.attr('src', img.attr(to));
        });
    }

    function changeOrientation(to) {
        var imgs = $('[data-product-img]');
        var tiles = $('[item-product-id]');
        tiles.removeClass('item-vertical').removeClass('item-horizontal');

        $.each(imgs, function (idx, el) {
            var orient = $(el).attr(to);
            var id = $(el).attr('product-id');

            $('[item-product-id="' + id + '"]').addClass(orient);
        });
    }

    function handleCheckboxLabel(name, data) {
        $('[' + name + '-checkbox-label]').click(function () {
            var $this = $(this);
            var selected = $this.data(data);
            var inp = $('[' + name + '-checkbox-filter="' + selected + '"]');

            if (name === 'color') {
                $this.find('span').remove();
            }

            if (inp.is(':checked')) {
                $this.addClass('selected');
                if (name === 'color') {
                    $this.append('<span class="material-icons">done</span>');
                }
            } else {
                $this.removeClass('selected');
                if (name === 'color') {
                    $this.append('<span></span>');
                }
            }
        });
    }

    function updateDimensionsSlider() {
        var widthSlider = $('#Width').data('ionRangeSlider');
        var heightSlider = $('#Height').data('ionRangeSlider');

        if ($('[dimensions].selected').length === 0) {
            resetRangeSlider('#Width');
            resetRangeSlider('#Height');
            return;
        }

        widthSlider.update({
            from: Math.min.apply(null, getSelectedDimensions('min-width')),
            to: Math.max.apply(null, getSelectedDimensions('max-width'))
        });

        heightSlider.update({
            from: Math.min.apply(null, getSelectedDimensions('min-height')),
            to: Math.max.apply(null, getSelectedDimensions('max-height'))
        });
    }

    function updateRangesByTextBox() {
        var widthSlider = $('#Width').data('ionRangeSlider');
        var heightSlider = $('#Height').data('ionRangeSlider');

        $('body').on('keyup', '#MinHeight', function () {
            var val = $(this).val();
            setTimeout(function () {
                heightSlider.update({
                    from: Math.min.apply(null, [val])
                });
            }, 500);

            return false;
        });

        $('body').on('keyup', '#MaxHeight', function () {
            var val = $(this).val();
            setTimeout(function () {
                heightSlider.update({
                    to: Math.max.apply(null, [val])
                });
            }, 500);

            return false;
        });

        $('body').on('keyup', '#MinWidth', function () {
            var val = $(this).val();
            setTimeout(function () {
                widthSlider.update({
                    from: Math.min.apply(null, [val])
                });
            }, 500);

            return false;
        });

        $('body').on('keyup', '#MaxWidth', function () {
            var val = $(this).val();
            setTimeout(function () {
                widthSlider.update({
                    to: Math.max.apply(null, [val])
                });
            }, 500);
            return false;
        });
    }

    function getSelectedDimensions(attribute) {
        return $('[dimensions].selected').map(function () {
            return parseFloat($(this).attr(attribute));
        }).get();
    }

    return {

        callFilter: function () {
            callFilter();
        },

        clearFilterForm: function () {
            clearFilterForm();
        },

        initFilterForm: function () {
            resetPage();

            $('body').on('click', '#advanced-link', function () {
                var $this = $(this);
                var advanced = $('#advanced');
                if (advanced.hasClass('hide')) {
                    advanced.removeClass('hide');
                    $('.filter-panel').addClass('advanced');
                    $('#catalog').addClass('advanced');
                    $this.html('<span class="material-icons">expand_less</span> ' + $this.data('advanced-filters-visible'));
                    setAdvancedFilterCookie('True');
                    return false;
                }

                advanced.addClass('hide');
                $('.filter-panel').removeClass('advanced');
                $('#catalog').removeClass('advanced');
                $this.html('<span class="material-icons">expand_more</span> ' + $this.data('advanced-filters-hidden'));
                setAdvancedFilterCookie('False');
                return false;
            });

            function setAdvancedFilterCookie(value) {
                $.post('/artworks/setadvancedfiltercookie', { value: value }, function () {
                    return false;
                });
            }

            $('[clear-filter-form]').click(function () {
                clearFilterForm();
                $('[catalog-order]').trigger('change');
                $('.filter-wrap.mobile').hide();
            });

            handleCheckboxLabel('color', 'color');
            handleCheckboxLabel('shape', 'value');
            handleCheckboxLabel('orientation', 'value');

            $('[checkbox-label]').click(function () {

                var $this = $(this);
                var selected = $this.attr('type');
                var inp = $('[name="' + selected + '"]');

                if (inp.is(':checked')) {
                    $this.addClass('selected');
                    inp.val('true');

                } else {
                    $this.removeClass('selected');
                    inp.val('false');
                }

                $this.trigger('mouseleave');
            });

            $('#Width').ionRangeSlider({
                type: 'double',
                grid: true,
                decorate_both: true,
                min: $('[name="WidthFrom"]').attr('min'),
                max: $('[name="WidthTo"]').attr('max'),
                from: $('[name="WidthFrom"]').attr('init-value'),
                to: $('[name="WidthTo"]').attr('init-value'),
                onFinish: function (data) {
                    $('[name="WidthFrom"]').val(data.from);
                    $('[name="WidthTo"]').val(data.to);

                    $('[name="MinWidth"]').val(data.from);
                    $('[name="MaxWidth"]').val(data.to);
                },
                onUpdate: function (data) {
                    $('[name="WidthFrom"]').val(data.from);
                    $('[name="WidthTo"]').val(data.to);

                    $('[name="MinWidth"]').val(data.from);
                    $('[name="MaxWidth"]').val(data.to);
                }
            });

            $('#Height').ionRangeSlider({
                type: 'double',
                grid: true,
                decorate_both: true,
                min: $('[name="HeightFrom"]').attr('min'),
                max: $('[name="HeightTo"]').attr('max'),
                from: $('[name="HeightFrom"]').attr('init-value'),
                to: $('[name="HeightTo"]').attr('init-value'),
                onFinish: function (data) {
                    $('[name="HeightFrom"]').val(data.from);
                    $('[name="HeightTo"]').val(data.to);

                    $('[name="MinHeight"]').val(data.from);
                    $('[name="MaxHeight"]').val(data.to);
                },
                onUpdate: function (data) {
                    $('[name="HeightFrom"]').val(data.from);
                    $('[name="HeightTo"]').val(data.to);

                    $('[name="MinHeight"]').val(data.from);
                    $('[name="MaxHeight"]').val(data.to);
                }
            });

            $('[dimensions]').click(function () {
                var $this = $(this);

                if ($this.hasClass('selected')) {
                    $this.removeClass('selected');
                    $('#' + $(this).attr('reference-hidden-input')).val(false);
                } else {
                    $this.addClass('selected');
                    $('#' + $(this).attr('reference-hidden-input')).val(true);
                }

                updateDimensionsSlider();
            });

            updateRangesByTextBox();
            ;






            $('body').on('click', '.catalog-filter-nav', function () {
                $('.filter-panel').toggleClass('visible');
                $('body').toggleClass('compensate-for-scrollbar');
                return false;
            });

            $('body').click(function (e) {
                var target = $(e.target).closest('.filter-panel');
                if (target.length > 0) {
                    return true;
                }

                $('.filter-panel').removeClass('visible');
                $('body').removeClass('compensate-for-scrollbar');
            });
        },

        filter: function (page, savedFilterAllowed, byQuery) {

            if (savedFilterAllowed) {

                if (window.performance && window.performance.navigation.type == window.performance.navigation.TYPE_BACK_FORWARD) {

                    $('#IsBack').val(true);
                    $('#Page').val(page);

                    updateDimensionsSlider();

                    callFilter(false, true);

                } else if (window.location.pathname.indexOf('filtered/artworks') > -1
                    || window.location.pathname.indexOf('artworks/price') > -1
                    || window.location.pathname.indexOf('artworks/minprice') > -1
                    || window.location.pathname.indexOf('artworks/maxprice') > -1) {

                    callFilter(false, true);

                }

                else if (byQuery.toLowerCase() == 'true') {
                    //callFilter(false, false);
                }

                else if (window.location.pathname.match(/prace$/) || window.location.pathname.match(/artworks$/)) {

                    clearFilterForm();

                }

            }

            $('body').on('click', '#submit-filter', function () {
                var $filter = $('[catalog-filter]');

                $filter.find('[name="Page"]').val(1);
                $filter.find('[name="IsBack"]').val('false');

                callFilter();

                $(window).scrollTop(0);

                $('.filter-panel').removeClass('visible');
                $('body').removeClass('compensate-for-scrollbar');

                return false;
            });

            $('body').on('change', '#Category', function () {
                var $filter = $('[catalog-filter]');

                $filter.find('[name="Page"]').val(1);
                $filter.find('[name="IsBack"]').val('false');

                callFilter(null, null, null, true);

                return false;
            });

            $('body').on('change', '#OrderBy', function () {
                callFilter();
                return false;
            });

            //var clearTimer = false;

            //function handleFilter() {
            //    resetPage();
            //    if (clearTimer !== false) {
            //        clearTimeout(clearTimer);
            //    }

            //    clearTimer = setTimeout(function () {

            //        callFilter();
            //        clearTimer = false;

            //    }, 1000);
            //}

            //$('#Category').change(function (e) {
            //    e.preventDefault();

            //    handleFilter();
            //    $('[current-category]').html($('#Category option:selected').text());
            //});

            //$('[catalog-filter] :input').not('[textbox-input]').change(function (e) {
            //    e.preventDefault();
            //    handleFilter();
            //});

            //$('[textbox-input]').keyup(function (e) {
            //    e.preventDefault();
            //    handleFilter();
            //});

            //$('[catalog-order]').change(function (e) {
            //    e.preventDefault();
            //    handleFilter();
            //});
        },

        loadMore: function () {

            $(document).ajaxStop(function () {
                $(window).on("scroll",
                    function () {

                        if (lock) {
                            return false;
                        }

                        var scrollHeight = $(document).height();
                        var scrollPosition = $(window).height() + $(window).scrollTop();

                        localStorage.setItem("scrollPos", $(window).scrollTop());

                        var ratio = 0.20 - scrollHeight / 100000;

                        if (ratio < 0.05) {
                            ratio = 0.05;
                        }

                        var r = (scrollHeight - scrollPosition) / scrollHeight;

                        if (r <= ratio) {

                            lock = true;

                            var page = parseInt($('[catalog-page]').val()) + 1;
                            $('[catalog-page]').val(page);
                            callFilter(true);

                            $(document).ajaxSuccess(function (event, xhr, settings) {
                                if (settings.url == '/artworks/action/filter') {
                                    lock = false;
                                }
                            });

                        }
                    });
            });
        },

        lockScroll: function () {
            lock = true;
        },

        unlockScroll: function () {
            lock = false;
        },

        hideLoadMoreBtn: function () {
            $('[load-more]').hide();
        },

        changeImages: function () {
            $('[change-images]').click(function () {

                $('[catalog-filter]').find('#Page').val(1);

                var $this = $(this);

                var type = $(this).attr('set-to');
                if (type === 'visualisation') {

                    $('[catalog-filter]').find('#Visualisation').val(true);

                    callFilter(false, false, function () {
                        changeTileImg('data-vis-url');
                        changeOrientation('data-vis-orient');
                        $this.text(APP.t('ShowNormal')).attr('set-to', 'tile');
                    });

                    return false;
                }

                $('[catalog-filter]').find('#Visualisation').val(false);

                callFilter(false, false, function () {
                    changeTileImg('data-tile-url');
                    changeOrientation('data-tile-orient');
                    $this.text(APP.t('ShowInRoom')).attr('set-to', 'visualisation');
                });
            });
        }
    }
})();;
APP.cdialog = (function () {

    return {


        close: function (opts) {
            close(opts);
        },

        close: function (opts, btn) {
            close(opts, btn);
        },

        init: function (opts) {

            var trigger = opts.triggerName || 'modal';
            $('body').on('click', '[data-open=' + trigger + ']', function (e) {
                show(opts);
            });

            $('body').on('click', '[action="dialog-close"]', function () {
                close(opts, $(this));
            });

            //$(document).keyup(function (e) {
            //    if (e.keyCode == 27) {
            //        APP.cdialog.close(opts);
            //    }
            //});
        },

        open: function (opts) {
            show(opts);

            $('body').on('click', '[action="dialog-close"]', function () {
                close(opts, $(this));
            });
        }
    }

    function close(opts, btn) {
        if (opts.onClose != null) {
            opts.onClose();
        }

        var node = btn.closest('.dialog-wrapper');

        if (opts.singleInit) {
            node.removeClass('active').hide();
            $('body').removeClass('compensate-for-scrollbar');

        }
        else if (!btn) {
            ('.dialog-wrapper').remove();
            $('body').removeClass('compensate-for-scrollbar');
        }
        else {
            node.remove().removeClass('active');
            $('body').removeClass('compensate-for-scrollbar');
        }

        return false;
    }

    function show(opts) {
        if ($('.dialog-wrapper-' + opts.id).length == 0) {
            var dialogWrapper = '<div class="dialog-wrapper dialog-wrapper-' + opts.id + '"></div>';
            $('body').append(dialogWrapper);
        }

        $('.dialog-wrapper-' + opts.id).addClass('active').addClass(opts.customWrapperClass).show();
        $('body').addClass('compensate-for-scrollbar');
        var dataSet = '';

        if (opts.singleInit && opts.initiated) {
            return false;
        }

        var dialogType = opts.dataset.type || 'inline';
        var dialogWidth = opts.dataset.width || 1000;
        var dialogHeight = opts.dataset.height || 'auto';
        var dialogTitle = opts.dataset.title || '';
        var dialogHOffst = dialogWidth / 2 || 500;
        var dialogVOffst = dialogHeight / 2 || 360;
        var dialogName = opts.dataset.name || 'custom-box';
        var contentId = opts.dataset.contentId || '';
        var marginOffset = 20;
        var contentWidth = dialogWidth - (marginOffset * 2) || 1000 - (marginOffset * 2);
        var contentHeight = dialogHeight - (marginOffset * 2) - 50 || 720 - (marginOffset * 2) - 50;
        var dialogCode = '<div class="dialog-overlay"' +
            (!opts.staticBackdrop ? ' action="dialog-close" ' : '') + '></div><div name="' +
            dialogName +
            '" class="dialog-body" modal-body style="margin-top:-' +
            dialogVOffst +
            'px; margin-left:-' +
            dialogHOffst +
            'px; padding:' +
            marginOffset +
            'px; width:' +
            dialogWidth +
            'px; height:' +
            dialogHeight +
            'px;">' +
            '<div class="dialog-close" action="dialog-close">&#x2715;</div><div class="dialog-content dialog-content-' + opts.id + '"></div><div class="dialog-footer"></div></div>';

        // iframe
        if (dialogType == 'iframe') {
            var dialogData = opts.dataset.data || 'http://epresso.pl/404';
            iframeCnt = '<iframe class="container" src="' +
                dialogData +
                '" frameborder="0" border="0" width="' +
                contentWidth +
                'px" height="' +
                contentHeight +
                'px"></iframe>';
            $('body .dialog-wrapper').empty().append(dialogCode);
            $('body .dialog-body .dialog-content').append(iframeCnt);

            // inline
        } else if (dialogType == 'inline') {
            var dialogData = opts.dataset.data || 'inline';
            var dialogDataCnt = $('[data-dialog-inline="' + dialogData + '"]').html();
            var dialogInlineCnt = '<div class="container" width="' +
                contentWidth +
                'px" height="' +
                contentHeight +
                'px"></div>';
            $('body .dialog-wrapper-' + opts.id).empty().append(dialogCode);
            $('body .dialog-content-' + opts.id).append(dialogInlineCnt).append(dialogDataCnt).attr('id', contentId).addClass(opts.dataset.customContentClass);

            // async
        } else if (dialogType == 'async') {
            var dialogAsyncCnt = '<div class="container" width="' +
                contentWidth +
                'px" height="' +
                contentHeight +
                'px"></div>';

            $.post(opts.dataset.url, opts.dataset.model, function (resp) {
                $('body .dialog-wrapper-' + opts.id).empty().append(dialogCode);
                $('body .dialog-content-' + opts.id).append(dialogAsyncCnt).attr('id', contentId).addClass(opts.dataset.customContentClass);
                $('.dialog-content-' + opts.id + ' .container').html(resp);

            });

        } else if (dialogType == 'raw') {
            var dialogInlineCnt = '<div class="container" width="' +
                contentWidth +
                'px" height="' +
                contentHeight +
                'px"></div>';
            $('body .dialog-wrapper-' + opts.id).empty().append(dialogCode).addClass(opts.dataset.wrapperAdditionalClass);
            $('body .dialog-content-' + opts.id)
                .append(dialogInlineCnt)
                .append(opts.dataset.rawText);

            if (opts.appendCloseBtn) {
                $('body .dialog-content-' + opts.id).append('<a href="javascript:;" action="dialog-close-' + opts.id + '" class="btn submit">' + APP.t("CloseDialog") + '</a>');
            }
        }

        if (typeof opts.afterInit !== 'undefined') {
            opts.afterInit();
        }

        opts.initiated = true;
    }
})();;
APP.checkout = (function () {

    function getPaymentMethods(selected) {
        $.post('/cart/getavailablepaymentmethods', { countryId: $('#CountryId option:selected').val(), deliveryMethod: $('[name="DeliveryMethod"]:checked').val(), paymentType: $('[name="PaymentMethod"]:checked').val() }, function (html) {
            $('#payment-methods').html(html);
            $('#loading-progress').hide();

            if (selected) {
                $('#' + selected).prop('checked', true);
            }

            getCart();
            return false;
        });
    }

    function getCart() {
        var model = {
            countryId: $('#CountryId option:selected').val(),
            deliveryMethod: $('[name="DeliveryMethod"]:checked').val(),
            paymentType: $('[name="PaymentMethod"]:checked').val(),
            discount: $('#Discount').val(),
            code: $('#PromoCodeValue').val(),
            step: $('#CheckoutStep').val()
        }

        $.post('/cart/getshortsummary', model, function (html) {
            $('#short-summary').html(html);
			APP.checkout.sidebar();
            return false;
        });

        $.post('/cart/details', model, function (html) {
            $('#cart-table').html(html);
            return false;
        });
    }

    var orderData = {
        deliveryMethod: '',
        paymentMethod: ''
    }

    var addressData = {
        Email:'',
        Name: '',
        Surname: '',
        PhoneNumber: '',
        Street: '',
        BuildingNumber: '',
        DoorNumber: '',
        ZipCode: '',
        City: '',
        CountryName: '',
        Invoice: '',
        CompanyName: '',
        TIN: '',
        InvoiceStreet: '',
        InvoiceBuildingNumber: '',
        InvoiceDoorNumber: '',
        InvoiceZipCode: '',
        InvoiceCity: '',
        InvoiceCountryId: '',
        AdditionalMessage: '',
        anonRc: '',
        anonMc:''
    }

    return {
        paymentMethods: function () {
            getPaymentMethods();
            return false;
        },

        sidebar: function () {
            var $sticky = $('#short-summary-box');
            var $stop = $('.main-container').height() - 100;

            $(window).scroll(function () {

                var $position = $(window).scrollTop() + $sticky.height();

                if ($position > $stop) {
                    $sticky.css({ position: 'absolute', top: $stop - $sticky.height() + 100 });
                } else {
                    $sticky.css({ position: 'fixed', top: 100 });
                }
            });
        },

        orderData: function () {

            if (sessionStorage.OrderData) {
                orderData = JSON.parse(sessionStorage.getItem("OrderData"));
                if (orderData.deliveryMethod != '' && $('#' + orderData.deliveryMethod).is(':visible')) {
                    $('#' + orderData.deliveryMethod).prop('checked', true);
                }
                
                if (orderData.paymentMethod != '') {
                    $('[name="PaymentMethod"]').filter(function () {
                        return this.value == orderData.paymentMethod;
                    }).prop('checked', true);
                }
            }

            $('body').on('change', '#CountryId', function () {

                $('#loading-progress').show();

                var countryId = $('#CountryId option:selected').val();
                if (countryId == 168) {
                    $('.personalpickup').show();
                } else {
                    $('.personalpickup').hide();
                    $('#PersonalPickup').removeAttr('checked');
                }

                $('[name="DeliveryMethod"]').prop('checked', false);
                $('[name="PaymentMethod"]').prop('checked', false);
                
                getCart();
                getPaymentMethods();
                
                return false;
            });

            $('body').on('change', '[name="DeliveryMethod"]', function () {

                var selectedPayment = $('[name="PaymentMethod"]:checked').attr('id');
                getPaymentMethods(selectedPayment);

                return false;
            });

            $('body').on('change', '[name="PaymentMethod"]', function () {
                getCart();
                return false;
            });

            
        },

        promoCode: function () {

            $('body').on('click', '#use-promo-code', function () {
                $(this).hide();
                $('#promo-code-form').show();
                return false;
            });

            $('body').off('click', '#submit-promo-code');
            $('body').on('click', '#submit-promo-code', function () {

                $.post('/checkout/usepromocode', { code: $('#PromoCode').val(), email: $('#DeliveryEmail').val(), validateUser: $('#CheckoutStep').val() == "3" }, function (json) {

                    if (json.result) {
                        $('#PromoCodeValue').val(json.code);
                        $('#Discount').val(json.discount);
                        $('#PromoCode').prop('readonly', true).hide();
                        $('#submit-promo-code').hide();
                        $('#remove-promo-code').hide();
                        $('.rabatediv').hide();
                    }

                    if (!json.result) {
                        $('#dialog-alert').find('#message').html(json.msg);
                        $('#dialog-alert').find('.dialog-title').html(json.title);

                        APP.cdialog.open({
                            dataset: {
                                type: 'raw',
                                rawText: $('#dialog-alert').html(), 
                                width: 800,
                                wrapperAdditionalClass: 'promo-code'
                            },
                            id: 'promo-code-dialog',
                            singleInit: false,
                            staticBackdrop: true
                        });
                        return false;
                    }

                    $('#dialog-alert').find('#message').html(json.msg);
                    $('#dialog-alert').find('.dialog-title').html(json.title);
                    APP.cdialog.open({
                        dataset: {
                            type: 'raw',
                            rawText: $('#dialog-alert').html(), 
                            width: 800,
                            wrapperAdditionalClass: 'promo-code'
                        },
                        id: 'promo-code-dialog',
                        singleInit: false,
                        staticBackdrop: true
                    });

                    var model = {
                        countryId: $('#CountryId').val(),
                        deliveryMethod: $('[name="DeliveryMethod"]').val(),
                        paymentType: $('[name="PaymentMethod"]').val(),
                        discount: json.Discount,
                        actionsEnabled: $('#CheckoutStep').val() == "1",
                        code: json.Code,
                        step: $('#CheckoutStep').val()
                    }

                    $.post('/checkout/setpromocode', model, function () {
                        $.post('/cart/getshortsummary', model, function (html) {
                            $('#short-summary').html(html);
                            return false;
                        });

                        $.post('/cart/details', model, function (html) {
                            $('#cart-table').html(html);
                            return false;
                        });

                        return false;
                    });
                });
            });

            $('body').off('click', '#remove-promo-code');
            $('body').on('click', '#remove-promo-code', function () {

                $.post('/checkout/removepromocode', function (resp) {

                    $('#PromoCode').prop('readonly', false).val('').show();
                    $('#use-promo-code').show();
                    $('#promo-code-form').hide();

                    var model = {
                        countryId: $('#CountryId').val(),
                        deliveryMethod: $('[name="DeliveryMethod"]').val(),
                        paymentType: $('[name="PaymentMethod"]').val(),
                        actionsEnabled: $('#CheckoutStep').val() == "1",
                        discount: '',
                        code: '',
                        step: $('#CheckoutStep').val()
                    }

                    $.post('/cart/getshortsummary',
                        model,
                        function (html) {
                            $('#short-summary').html(html);
                            return false;
                        });

                    $.post('/cart/details',
                        model,
                        function (html) {
                            $('#cart-table').html(html);
                            return false;
                        });

                });

            });
        },

        fillAddressFromSession: function () {
            if (sessionStorage.AddressData) {
                addressData = JSON.parse(sessionStorage.getItem("AddressData"));
                console.log(addressData);

                $('#DeliveryEmail').val(addressData.Email);
                $('#Name').val(addressData.Name);
                $('#Surname').val(addressData.Surname);
                $('#PhoneNumber').val(addressData.PhoneNumber);
                $('#Street').val(addressData.Street);
                $('#BuildingNumber').val(addressData.BuildingNumber);
                $('#DoorNumber').val(addressData.DoorNumber);
                $('#ZipCode').val(addressData.ZipCode);
                $('#City').val(addressData.City);
                $('#CountryName').val(addressData.CountryName);
                $('#Invoice').prop('checked', addressData.Invoice);
                if (addressData.Invoice) {
                    $('.invoice').show();
                }
                $('#CompanyName').val(addressData.CompanyName);
                $('#TIN').val(addressData.TIN);
                $('#InvoiceStreet').val(addressData.InvoiceStreet);
                $('#InvoiceBuildingNumber').val(addressData.InvoiceBuildingNumber);
                $('#InvoiceDoorNumber').val(addressData.InvoiceDoorNumber);
                $('#InvoiceZipCode').val(addressData.InvoiceZipCode);
                $('#InvoiceCity').val(addressData.InvoiceCity);
                $('#InvoiceCountryId').val(addressData.InvoiceCountryId); 
                $('#AdditionalMessage').val(addressData.AdditionalMessage); 
                $('#anonRc').prop('checked', addressData.anonRc);
                $('#anonMc').prop('checked', addressData.anonMc);
            }
        },

        processCheckout: function () {
            $('body').on('click', '.process-checkout', function () {

                var $this = $(this);
                if ($this.hasClass('disabled')) {
                    return false;
                }

                $('#loading-progress').show();

                var step = $('#CheckoutStep').val();

                switch (step) {
                    case "1":
                        saveBasicData($this.data('action'));
                        return false;
                    case "2":
                        saveAddressData();
                        return false;
                    case "3":
                        proceedToPayment();
                        return false;
                    default:
                        return false;
                }
            });

            function saveBasicData(action) {

                $('.error-msg').hide();

                var payment = $('[name="PaymentMethod"]:checked');
                var model = {
                    CountryId: $('#CountryId option:selected').val(),
                    DeliveryMethod: $('[name="DeliveryMethod"]:checked').val(),
                    DeliveryDate: $('[name="DeliveryDate"]').val(),
                    PaymentType: payment.val(),
                    PaymentSignature: payment.data('signature'),
                    Action: action
                }

                $.post('/checkout/savebasicdata', model, function (resp) {

                    if (!resp.result) {

                        if (resp.redirectTo) {
                            window.location = resp.redirectTo;
                            return false;
                        }

                        if (!resp.hasPaymentType) {
                            $('#payment-method-error-msg').show();
                        }

                        if (!resp.hasDeliveryMethod) {
                            $('#delivery-method-error-msg').show();
                        }

                        $(document).scrollTop($('#delivery-methods').offset().top - 80);

                        return false;
                    }

                    if (sessionStorage.OrderData) {
                        orderData = JSON.parse(sessionStorage.getItem("OrderData"));
                    }
                    orderData.deliveryMethod = $('[name="DeliveryMethod"]:checked').val();
                    orderData.paymentMethod = $('[name="PaymentMethod"]:checked').val();
                    sessionStorage.setItem('OrderData', JSON.stringify(orderData));

                    if (resp.action == 'dialog') {

                        APP.cdialog.open({
                            dataset: {
                                type: 'async',
                                url: '/checkout/modedialog',
                                model: {  },
                                width: 800,
                                wrapperAdditionalClass: 'mode'
                            },
                            id: 'mode-dialog',
                            singleInit: false,
                            staticBackdrop: true,
                            afterInit: function() {
                                $('[name="checkout-mode"]').change(function () {
                                    var mode = $(this).attr('mode');

                                    $('[dialog-form]').hide();

                                    $('[' + mode + ']').show();

                                    $('#loading-progress').hide();
                                });
                            }
                        });

                        return false;
                    }

                    window.location = resp.redirectTo;
                    return false;
                });
            }

            function saveAddressData() {

                $('#loading-progress').show();

                var model = {
                    Country: $('#CountryId option:selected').text()
                };

                $('[address-checkout-form]').serializeArray().map(function (x) {
                    model[x.name] = x.value;
                });

                model['Invoice'] = $('#Invoice').is(':checked');
                model['anonRc'] = $('#anonRc').is(':checked');
                model['anonMc'] = $('#anonMc').is(':checked');
                model['Email'] = $('#DeliveryEmail').val();
                model['EmailConfirmation'] = $('#DeliveryEmailConfirmation').val();

                var checkout = {
                    Email: $('#DeliveryEmail').val(),
                    DeliveryPrice: parseFloat($('#DeliveryPrice').val()),
                    DeliveryMethod: $('[name="DeliveryMethod"]').val(),
                    Pi: $('[name="pi"]').val()
                }

                $.post('/checkout/submitaddress', { model: model, checkout: checkout }, function (resp) {

                    if (!resp.result) {
                        APP.submiterror.show('[address-checkout-form]', resp.errors);

                        if (resp.redirectTo) {
                            window.location = resp.redirectTo;
                        } else {

                            $('#dialog-alert').find('#message').html(resp.msg);
                            $('#dialog-alert').find('.dialog-title').html(resp.title);
                            APP.cdialog.open({
                                dataset: {
                                    type: 'raw',
                                    rawText: $('#dialog-alert').html(), 
                                    width: 800,
                                    wrapperAdditionalClass: 'address-error'
                                },
                                id: 'address-error-dialog',
                                singleInit: false,
                                staticBackdrop: true
                            });

                            $('#loading-progress').hide();
                        }

                        return false;
                    }
                    sessionStorage.setItem('AddressData', JSON.stringify(model));
                    window.location = resp.redirectTo;

                    APP.ganalytics.checkout(3);
                });
            }

            function proceedToPayment() {
                var cmd = {
                    PromoCode: $('#PromoCodeValue').val()
                }
                var checkout = {
                    Email: $('[customer-email]').val(),
                    DeliveryPrice: parseFloat($('#DeliveryPrice').val()),
                    Pi: $('[name="pi"]').val()
                }
                console.log(cmd.PromoCode);
                $.post('/checkout/proceedtopayment', { cmd: cmd, checkout: checkout }, function (resp) {
                    if (resp.result) {
                        window.location = resp.url;
                    } else {
                        APP.alert.showByResp(resp);
                        $('#loading-progress').hide();
                        window.location = resp.url;
                        return false;
                    }
                });
            }
        },

        address: function () {
            $('body').on('change', '#Invoice', function () {
                if ($(this).is(':checked')) {
                    $('.invoice').show();
                    return false;
                }

                $('.invoice').hide();
                return false;
            });

        }
    }

})();;
APP.christmasCatalog = (function () {

    var lock;

    function callFilter(append, scroll) {

        //appendDataToForm();

        var model = {
            Page: $('[name="Page"]').val(),
            IsBack: $('[name="IsBack"]').val()
        };
        
        $('#loading-progress').show();

        $.post('/christmasfair/loadproducts', model, function (html) {

            if (append) {
                $('[christmasCatalog]').append(html);
            } else {
                $('[christmasCatalog]').html(html);
            }

            if (scroll && localStorage.scrollPos) {
                $(window).scrollTop(localStorage.scrollPos);
            }

            $('#IsBack').val(false);

            $('#loading-progress').hide();
            
        });

        return false;
    }

    return {
        init: function (page) {
            if (window.performance && window.performance.navigation.type == window.performance.navigation.TYPE_BACK_FORWARD) {

                $('#IsBack').val(true);
                $('#Page').val(page);

                callFilter(false, true);
            } else {
                $('#Page').val(1);
                callFilter();
            }
        },

        loadMore: function () {

            $(document).ajaxStop(function () {
                $(window).on("scroll",
                    function () {

                        if (lock) {
                            return false;
                        }

                        var scrollHeight = $(document).height();
                        var scrollPosition = $(window).height() + $(window).scrollTop();

                        localStorage.setItem("scrollPos", $(window).scrollTop());

                        var ratio = 0.20 - scrollHeight / 100000;

                        if (ratio < 0.05) {
                            ratio = 0.05;
                        }

                        var r = (scrollHeight - scrollPosition) / scrollHeight;

                        if (r <= ratio) {

                            lock = true;

                            var page = parseInt($('[catalog-page]').val()) + 1;
                            $('[catalog-page]').val(page);
                            callFilter(true);

                            $(document).ajaxSuccess(function (event, xhr, settings) {
                                if (settings.url == '/christmasfair/loadproducts') {
                                    lock = false;
                                }
                            });

                        }
                    });
            });
        },

        lockScroll: function () {
            lock = true;
        },

        unlockScroll: function () {
            lock = false;
        }
    }
})();;
APP.gdataLayer = (function () {

    function createAuctionProductPropertiesArray(properties, type) {
        var values = $.grep(properties, function (el) {
            return el.PropertyType == type;
        }).map(a => a.UrlName);

        var propArray = [];
        $.each(values, function (key, val) {
            var valName = {
                name: val
            };
            propArray.push(valName);
        });
        return propArray;
    }

    function createGalleryProductPropertiesArray(properties, type) {
        var values = $.grep(properties, function (el) {
            return el.Type == type;
        }).map(a => a.UrlName);

        var propArray = [];
        $.each(values, function (key, val) {
            var valName = {
                name: val
            };
            propArray.push(valName);
        });
        return propArray;
    }

    return {
        pushUserStatus: function (user) {
            if (!user.IsAuthenticated) {
                dataLayer.push({
                    'UserStatus': {
                        'userLogged': 'false',
                        'userId': 'NULL'
                    }
                });
            } else {
                dataLayer.push({
                    'UserStatus': {
                        'userLogged': 'true',
                        'userId': user.Id
                    }
                });
            }
        },

        pushCartInfoSummary: function (productsJson, curr) {
            var products = JSON.parse(productsJson);
            if (products == null || products.length == 0) {
                dataLayer.push({
                    'CartInfoSummary': {
                        'CartEmpty': 'true',
                        'CartSummary': '0',
                        'CartCurrency': 'NULL',
                        'CartProducts': 'NULL'
                    }
                });
            } else {
                var total = products.reduce(function (a, b) {
                    return a + b['Price'];
                }, 0);
                dataLayer.push({
                    'CartInfoSummary': {
                        'CartEmpty': 'false',
                        'CartSummary': total,
                        'CartCurrency': curr,
                        'CartProducts': products
                    }
                });
            }
        },

        pushPageInfo(url, lang, type) {
            dataLayer.push({
                'PageInfo': {
                    'PageUrl': url,
                    'PageLanguage': lang,
                    'PageType': type
                }
            });
        },

        pushProceedToCheckout: function () {
            dataLayer.push({
                'event': 'ButtonHeaderProceedCheckout'
            });
        },

        pushDisplayAuctionsList: function (type, auctionsJson) {
            var auctions = JSON.parse(auctionsJson);
            dataLayer.push({
                'event': 'DisplayAuctionsList',
                'AuctionsList': {
                    'AuctionsListType': type,
                    'Auctions': auctions
                }
            });
        },

        pushDisplayAuctionCatalogue: function (auctionJson, productsJson) {
            var auction = JSON.parse(auctionJson);
            var products = JSON.parse(productsJson);
            dataLayer.push({
                'event': 'DisplayAuctionCatalogue',
                'AuctionArtworksList': {
                    'Auction': auction,
                    'AuctionArtworks': products
                }
            });
        },

        pushAuctionArtworkDisplay: function (auctionJson, product) {
            var auction = JSON.parse(auctionJson);

            dataLayer.push({
                'event': 'AuctionArtworkDisplay',
                'AuctionArtworkDetails': {
                    'Auction': auction,
                    'AuctionArtwork': [{
                        'id': product.Id,
                        'number': product.Position,
                        'titlePL': product.TitlePl,
                        'titleEN': product.TitleEn,
                        'author': product.Artist.FullName,
                        'authorid': product.Artist.Id,
                        'askingprice': product.StartingPrice,
                        'currency': 'PLN',
                        'category': product.CategoryName,
                        'technique': createAuctionProductPropertiesArray(product.Properties, 2),
                        'theme': createAuctionProductPropertiesArray(product.Properties, 6),
                        'mood': createAuctionProductPropertiesArray(product.Properties, 7),
                        'substract': createAuctionProductPropertiesArray(product.Properties, 10),
                        'size': product.Height + ' x ' + product.Width + ' cm'
                    }
                    ]

                }
            });
        },

        pushPlaceBidEvent: function (productId, productPos) {
            dataLayer.push({
                'event': 'ButtonPlaceBid',
                'AuctionArtwork': [{
                    'id': productId,
                    'number': productPos
                }]
            });

        },

        pushSendPlaceBidEvent(model) {
            dataLayer.push({
                'event': 'SendPlaceBid',
                'AuctionArtwork': [{
                    'author': model.author,
                    'authorid': model.authorId,
                    'id': model.productId,
                    'number': model.number
                }],
                'BidType': model.bidType,
                'BidAmount': model.bidAmount,
                'BidCurrency': 'PLN'
            });
        },

        pushButtonObserveArtist(model, auction, caller) {
            if (caller == 'auction') {
                dataLayer.push({
                    'event': 'ButtonObserveArtist',
                    'Auction': auction,
                    'AuctionArtwork': [{
                        'author': model.artistName,
                        'authorid': model.artistId,
                        'id': model.productId,
                        'number': model.position
                    }]
                });
            }
            else {
                dataLayer.push({
                    'event': 'ButtonGalleryObserveArtist',
                    'GalleryArtwork': [{
                        'author': model.artistName,
                        'authorid': model.artistId,
                        'id': model.productId
                    }]
                });
            }
        },

        pushSendObserveArtist(model, caller) {
            if (caller == 'auction') {
                dataLayer.push({
                    'event': 'SendObserveArtist',
                    'AuctionArtwork': model
                });
            } else {
                dataLayer.push({
                    'event': 'GallerySendObserveArtist',
                    'GalleryArtwork': model
                });
            }
        },

        pushButtonAuctionArtworkContact(model, auction) {
            dataLayer.push({
                'event': 'ButtonAuctionArtworkContact',
                'Auction': auction,
                'AuctionArtwork': model
            });
        },

        pushSendAuctionArtworkContact(model, auction) {
            dataLayer.push({
                'event': 'SendAuctionArtworkContact',
                'Auction': auction,
                'AuctionArtwork': [{
                    'author': model.artistName,
                    'authorid': model.artistId,
                    'id': model.productId,
                    'number': model.position
                }]
            });
        },

        pushButtonGalleryArtworkContact(productId) {
            dataLayer.push({
                'event': 'ButtonGalleryArtworkContact',
                'GalleryArtwork': [{
                    'id': productId
                }]
            });
        },

        pushSendGalleryArtworkContact(model) {
            dataLayer.push({
                'event': 'SendGalleryArtworkContact',
                'GalleryArtwork': model
            });
        },

        pushGalleryBrowser(model) {
            dataLayer.push({
                'event': 'GalleryBrowser',
                'GalleryBrowserDetails': {
                    'GalleryFilterValues': model.Filter,
                    'GalleryBrowserArtworks': model.Products
                }
            });
        },

        pushGalleryArtworkDisplayDetails(product) {

            dataLayer.push({
                'event': 'GalleryArtworkDisplay',
                'GalleryArtworkDetails': {
                    'GalleryArtwork': [{
                        'id': product.Id,
                        'titlePL': product.TitlePl,
                        'titleEN': product.TitleEn,
                        'author': product.Author,
                        'authorid': product.AuthorId,
                        'saleprice': product.Saleprice,
                        'currency': product.Currency,
                        'category': product.Category,
                        'technique': createGalleryProductPropertiesArray(product.Properties, 2),
                        'theme': createGalleryProductPropertiesArray(product.Properties, 6),
                        'mood': createGalleryProductPropertiesArray(product.Properties, 7),
                        'substract': createGalleryProductPropertiesArray(product.Properties, 10),
                        'size': product.Size
                    }
                    ]

                }
            });
        },

        pushGalleryArtworkDisplayOtherWorks(productsJson) {
            var products = JSON.parse(productsJson);
            dataLayer.push({
                'event': 'GalleryArtworkDisplayOtherArtworks',
                'GalleryOtherArtworks': products
            });
        },

        pushButtonAddToBasket(model) {
            dataLayer.push({
                'event': 'ButtonAddToBasket',
                'GalleryArtwork': [{
                    'id': model.Id,
                    'titlePL': model.TitlePl,
                    'titleEN': model.TitleEn,
                    'author': model.Artist,
                    'authorid': model.ArtistId,
                    'saleprice': model.Price.Value,
                    'currency': model.Curr,
                    'category': model.Category
                }]
            });
        },

        pushButtonBasketDialogBack(id) {
            dataLayer.push({
                'event': 'ButtonBasketDialogBack',
                'GalleryArtwork': [{
                    'id': id
                }]
            });
        },

        pushButtonBasketDialogProceedCheckout(id) {
            dataLayer.push({
                'event': 'ButtonBasketDialogProceedCheckout',
                'GalleryArtwork': [{
                    'id': id
                }]
            });
        },

        pushButtonGalleryArtworkDetailsProceedCheckout(id) {
            dataLayer.push({
                'event': 'ButtonGalleryArtworkDetailsProceedCheckout',
                'GalleryArtwork': [{
                    'id': id
                }]
            });
        },

        pushArtistsBrowser(artistsJson, searchTerm) {
            var artists = JSON.parse(artistsJson);
            dataLayer.push({
                'event': 'ArtistsBrowser',
                'ArtistsBrowserDetails': {
                    'ArtistsFilterValues': [{
                        'searchphrase': searchTerm,
                    }
                    ],
                    'ArtistsBrowserProfiles': artists
                }
            });
        },

        pushArtistProfileDisplay(artistName, artistId, productsJson) {
            var products = JSON.parse(productsJson);
            console.log(products);
            dataLayer.push({
                'event': 'ArtistProfileDisplay',
                'ArtistProfile': {
                    'Artist': [{
                        'author': artistName,
                        'authorid': artistId
                    }],
                    'ArtistArtworks': products
                }
            });
        },

        pushArtistProfileSendObserveArtist(artist) {
            dataLayer.push({
                'event': 'ArtistProfileSendObserveArtist',
                'ArtistProfile': {
                    'Artist': artist
                }
            });
        },

        pushOrderConfirmed(oid) {
            dataLayer.push({
                'event': 'OrderConfirmed',
                'OrderDetails': {
                    'Order': [{
                        'number': oid,
                        'status': 'confirmed'
                    }]
                }
            });
        },

        pushOrderDeclined(oid) {
            dataLayer.push({
                'event': 'OrderDeclined',
                'OrderDetails': {
                    'Order': [{
                        'number': oid,
                        'status': 'declined'
                    }]
                }
            });
        },

        pushOrderSummary(dataJson, currency, price, oid) {
            var data = JSON.parse(dataJson);
            dataLayer.push({
                'event': 'OrderSummary',
                'OrderDetails': {
                    'Number': oid,
                    'TotalPrice': price,
                    'Currency': currency,
                    'Products': data
                }
            });
        }
    }
})();;
APP.errors = (function () {

    return {

        show: function (errors) {

            $('input,label,textarea').removeClass('submit-error');
            $('.submit-error-tmpl').remove();

            if (!errors) {
                return false;
            }

            var template = _.template($('#form-error-template').html());

            $.each(errors, function (idx, el) {
                var error = template({ Message: el.Value });

                if ($('[name="' + el.Key + '"]').is(':checkbox')) {
                    el.Key += 'Label';
                }

                if (el.Value.length > 0) {
                    $(error).insertAfter('[name="' + el.Key + '"]');
                }

                $('[name="' + el.Key + '"]').addClass('submit-error');
            });
        }
    }

})();;
APP.exhibition = (function () {
    return {
        openpdfcatalogdialog: function () {
            $('body').on('click', '#open-pdf-catalog-dialog', function () {
                APP.cdialog.open({
                    dataset: {
                        type: 'async',
                        url: '/exhibitions/pdfcatalogdialog',
                        model: { id: $(this).data('id') },
                        width: 600,
                        wrapperAdditionalClass: 'pdf-catalog'
                    },
                    id: 'pdf-catalog-dialog',
                    singleInit: false,
                    staticBackdrop: true
                });
            });
        },

        submitpdfcatalog: function () {

            $('body').on('click', '#submit-pdf-catalog-form', function () {
                $('.validation-errors').hide();
                $.post('/exhibitions/pdfcatalogsubmit', $('#pdf-catalog-form').serialize(), function (resp) {
                    if (!resp.result) {
                        $('.validation-errors').show();
                        APP.errors.show(resp.errors);
                        return false;
                    }

                    var exhibitionId = $('#ExhibitionId').val();

                    $('.modal-body').html(resp.msg);
                    $('.modal-header .lead').html('');

                    window.location = '/exhibitions/downloadpdfcatalog/' + exhibitionId;

                    //APP.auctionganalytics.downloadPDF();

                    return false;
                });
            });

        }
    }

})();;
APP.home = (function () {

			
			
            $('[sliders-curators]').owlCarousel({
                loop: true,
                autoplay: false,
				nav: true,
				dots: false,
				lazyLoad:true,
				responsive: {
                     0: { items: 1, autoHeight: true, slideBy: 1 },
                    720: { items: 2, slideBy: 1 },
                    1020: { items: 2, slideBy: 1 },
                    1220: { items: 3, slideBy: 1 },
                    1340: { items: 4, slideBy: 2 }
                }
            });			
			
			
			
            $('.promoted-up .owl-news').owlCarousel({
                loop: true,
                autoplay: false,
				nav: true,
				dots: false,
				lazyLoad:true,
				responsive: {
                     0: { items: 1, autoHeight: true, slideBy: 1 },
                    720: { items: 2, slideBy: 1 },
                    1020: { items: 2, slideBy: 1 },
                    1220: { items: 3, slideBy: 1 },
                    1340: { items: 4, slideBy: 2 }
                }
            });



            $('.promoted-down .owl-news').owlCarousel({
                loop: true,
                autoplay: false,
				nav: true,
				dots: false,
				lazyLoad:true,
				responsive: {
                     0: { items: 1, autoHeight: true, slideBy: 1 },
                    720: { items: 2, slideBy: 1 },
                    1020: { items: 2, slideBy: 1 },
                    1220: { items: 3, slideBy: 1 },
                    1340: { items: 4, slideBy: 2 }
                }
            });



    
})();;
APP.interferenceexhibition = (function () {

    var lock;

    function callFilter(append, scroll) {

        //appendDataToForm();

        var model = {
            Page: $('[name="Page"]').val(),
            IsBack: $('[name="IsBack"]').val()
        };

        $('#loading-progress').show();

        $.post('/interferenceexhibition/loadproducts', model, function (html) {

            if (append) {
                $('[interferenceCatalog]').append(html);
            } else {
                $('[interferenceCatalog]').html(html);
            }

            if (scroll && localStorage.scrollPos) {
                $(window).scrollTop(localStorage.scrollPos);
            }

            $('#IsBack').val(false);

            $('#loading-progress').hide();

        });

        return false;
    }

    return {
        init: function (page) {
            if (window.performance && window.performance.navigation.type == window.performance.navigation.TYPE_BACK_FORWARD) {

                $('#IsBack').val(true);
                $('#Page').val(page);

                callFilter(false, true);
            } else {
                $('#Page').val(1);
                callFilter();
            }
        },

        loadMore: function () {

            $(document).ajaxStop(function () {
                $(window).on("scroll",
                    function () {

                        if (lock) {
                            return false;
                        }

                        var scrollHeight = $(document).height();
                        var scrollPosition = $(window).height() + $(window).scrollTop();

                        localStorage.setItem("scrollPos", $(window).scrollTop());

                        var ratio = 0.20 - scrollHeight / 100000;

                        if (ratio < 0.05) {
                            ratio = 0.05;
                        }

                        var r = (scrollHeight - scrollPosition) / scrollHeight;

                        if (r <= ratio) {

                            lock = true;

                            var page = parseInt($('[catalog-page]').val()) + 1;
                            $('[catalog-page]').val(page);
                            callFilter(true);

                            $(document).ajaxSuccess(function (event, xhr, settings) {
                                if (settings.url == '/interferenceexhibition/loadproducts') {
                                    lock = false;
                                }
                            });

                        }
                    });
            });
        },

        lockScroll: function () {
            lock = true;
        },

        unlockScroll: function () {
            lock = false;
        }
    }
})();;
APP.layout = (function () {

    (function (w) {

        w.initExitCorner = function (cb, opt = {}) {
            const EDGE = opt.edge || 500;          // px od prawego-górnego brzegu
            const SPEED = opt.speed || 80;       // min. prędkość pikseli/s w kierunku rogu
            const COOKIE = opt.cookieName;

            if (COOKIE && document.cookie.split('; ')
                .some(c => c.trim().startsWith(COOKIE + '='))) {
                return;
            }

            let last = null, triggered = false, rafId;

            function onMove(e) {
                if (triggered) return;
                last = { x: e.clientX, y: e.clientY, t: performance.now() };
                if (!rafId) rafId = requestAnimationFrame(checkCorner);
            }

            function checkCorner() {
                rafId = null;
                if (!last) return;

                const { innerWidth: W, innerHeight: H } = window;
                const inCorner = last.x > W - EDGE && last.y < EDGE;
                if (!inCorner) return;

                /* kierunek ➜ czy mysz zmierzała w górę-w prawo z sensowną prędkością? */
                const { x, y, t } = last;
                const dx = W - x, dy = y;           // odległość do rogu
                const dt = (performance.now() - t) / 1000;   // s
                const v = Math.sqrt(dx * dx + dy * dy) / dt;      // piksele

                if (v >= SPEED) {
                    triggered = true;
                    if (COOKIE) {                  
                        document.cookie = COOKIE + '=1; path=/; max-age=' + 60 * 60 * 24 * 30;
                    }
                    cb();                             
                }
            }

            window.addEventListener('mousemove', onMove, { passive: true });
        };

    })(window);

    return {
        init: function () {

            initExitCorner(() => {
                console.log('Wygląda na to, że chcesz zamknąć kartę…');
                $.post('/newsletter/shownewsletterpromptonleave', { show: true }, function (resp, status, xhr) {
                    var ct = xhr.getResponseHeader("content-type") || "";
                    if (ct.indexOf('html') > -1) {
                        APP.cdialog.open({
                            dataset: {
                                type: 'raw',
                                rawText: resp,
                                width: 580,
								height: 375,
                                wrapperAdditionalClass: 'newsletter-prompt'
                            },
                            id: 'newsletter-prompt-dialog',
                            singleInit: false,
                            staticBackdrop: true
                        });
                    }
                });
                
            }, {
                edge: 120,       // szer. / wys. strefy (domyślnie 50 px)
                speed: 80,     // min. prędkość (px/s), żeby nie wyzwalać przy zwykłym hoverze
                cookieName: 'nolc'    
            });


            $(function () {

                if (window.location.hash) {

                    var url = window.location;

                    var hash = url.hash.substring(1);
                    if (hash === "open-login") {
                        $('[log-link]').trigger('click');
                    }
                    if (hash === "open-register") {
                        $('[reg-link]').trigger('click');
                    }

                    history.pushState({}, null, url.href.split('#')[0]);
                }

                var opinions = $('.box-reviews');
                if (opinions.find('.review-item').length > 3) {
                    $('.box-reviews').addClass('owl-theme owl-carousel');
                    var opinionCarousel = opinions.owlCarousel({
                        loop: true,
                        dots: true,
                        nav: false,
                        items: 3,
                        responsive: {
                            0: { items: 1 },
                            540: { items: 2 },
                            770: { items: 3 }
                        }
                    });
                }





                $('body').on('click', '[account="facebook"]',
                    function () {
                        FB.login(function (fbresp) {


                            $.post('/facebook/createsession', fbresp.authResponse, function (resp) {


                                if (resp.result) {
                                    window.location.reload();
                                } else {
                                    APP.alert.showByResp(resp);
                                }
                            }, "json");
                        }, { scope: 'email' });
                    });

                $('.curr-change').click(function () {
                    var curr = $(this).data("currency");
                    $.post("/home/SetCurrency", { cc: curr }, function (resp) {
                        if (resp.result) {
                            window.location.reload();
                        }
                    });
                });
            });
        }
    }

})();;
APP.menu = (function () {


    return {
        init: function () {
            //$.post('/dynamicparts/menu', function (html) {
            //    $('[menu]').html(html);
            //});
        }
    }

})();

//APP.menu.init();;
APP.newsletter = (function () {

    return {

        init: function () {
            $('[newsletter-signup]').on('submit', function (e) {
                e.preventDefault();

                var model = $(this).serialize();

                $.post('/newsletter/signup', model, function (resp) {

                    APP.errors.show(resp.errors);

                    if (!resp.result) {
                        return false;
                    }

                    $(':input','[newsletter-signup]')
                        .not(':button, :submit, :reset, :hidden')
                        .val('')
                        .prop('checked', false)
                        .prop('selected', false);

                   
                    window.location.reload();
                    return false;
                });

            });
        }
    }

})();;
APP.payment = (function () {

    return {

        check: function () {

            var oid = Cookies.get('_oid');
            var checkPayment = oid !== undefined;

            if (!checkPayment) {
                return false;
            }
            var orderNumber = $('#orderNumber').val();
            $.post('/checkout/checkpayment', { oid: oid }, function (resp) {
                
                if (resp.hardFail) {
                    return false;
                }

                if (resp.doNothing) {

                    setTimeout(function () {
                        APP.payment.check();
                    }, 5000);

                    return false;
                }

                $('#payment-spinner').hide();

                if (!resp.result) {

                    $('#summary').show();
                    $('#short-summary').show();

                    $('#again-process-checkout').show();

                    $('#dialog-alert').find('#message').html(resp.msg);
                    $('#dialog-alert').find('.dialog-title').html(resp.title);
                    APP.cdialog.open({
                        dataset: {
                            type: 'raw',
                            rawText: $('#dialog-alert').html(), 
                            width: 800,
                            height: 600,
                            wrapperAdditionalClass: 'payment'
                        },
                        id: 'payment-dialog',
                        singleInit: false,
                        staticBackdrop: true
                    });

                    $('#checkout-title').html(APP.t('ThankYou.Title.Summary')).show();

                    $('#payment-result').html(resp.additionalmsg).show();

                    APP.checkout.sidebar();
                    APP.gdataLayer.pushOrderDeclined(orderNumber);

                    return false;
                }

                $('#payment-result').html(resp.msg).show();

                $('#checkout-title').show();

                $('#estimated-delivery-date').show();
                $('#again-process-checkout').remove();
                $('#back-to-shop-url').show();
                $('#map').show();

                var json = $.parseJSON($('[google-analytics-purchase]').html());
                APP.ganalytics.purchase(json);
                APP.gdataLayer.pushOrderConfirmed(orderNumber);
                sessionStorage.removeItem("AddressData"); 
                sessionStorage.removeItem("OrderData"); 
            });
        }
    }


})();

APP.payment.check();;
APP.product = (function () {

    var notice = _.template($('#imageNotificationTemplate').html());

    function dateDiffInDays(date1, date2) {
        return Math.abs(Math.floor((date2 - date1) / 86400000));
    }

    return {
        init: function () {
            //$('[gallery-item]').each(function () {
            //    $(this).append('<img src="' + $(this).attr('data-image') + '" gallery-item-image title="' + $(this).attr('data-title') + '" alt="' + $(this).attr('data-alt') + '" />')
            //        .children('[gallery-item-image]');
            //});

            var gallery = $('.product-gallery');
            if (gallery.find('.item').length > 1) {
            setTimeout(function () {
					$('[gallery]').owlCarousel({
						loop: false,
						dotClass: 'owl-dot',
						dotsClass: 'owl-dots',
						dots: true,
						items: 1,
						autoHeight: true
					});
				}, 1000);
			} else {
				$('.product-gallery .owl-carousel').show();
			}

            $('body').on('click', '#open-contact-form', function () {
		 
				

				
                APP.cdialog.open({
                    dataset: {
                        type: 'async',
                        url: '/product/contactformdialog',
                        model: { id: $(this).data('id') },
                        width: 600,
                        wrapperAdditionalClass: 'contact-form'
                    },
                    id: 'contact-form-dialog',
                    singleInit: false,
                    staticBackdrop: true
                });

                return false;
            });

            $('body').on('click', '#submit-product-contact-form', function () {
                $('.validation-errors').hide();
                $('#submit-product-contact-form').hide();

                $.post('/contact/send', $('#contact-form').serialize(), function (resp) {
                    if (!resp.result) {
                        $('.validation-errors').show();
                        APP.errors.show(resp.errors);
                        $('#submit-product-contact-form').show();
                        return false;
                    }

                    $('input[type="text"]:not([readonly]), input[type="email"], textarea').val('');
                    $('input[type="checkbox"]').prop('checked', false);

                    $('#contact-form-success').html(resp.msg).show();
                    $('.close-dialog').show();
                    $('.dialog-content').remove();

                    return false;
                });
            });
        },

        changeLikeSign: function () {
            $('body').off('click', '[like]');
            $('body').on('click', '[like]',
                function (e) {
                    e.preventDefault();
                    var $this = $(this);
                    var isLike = $this.attr('like') == "0";

                    $.post('/product/' + (isLike ? 'like' : 'unlike'),
                        {
                            id: $this.attr('product-id')
                        },
                        function (resp) {
                            if (resp.result) {
                                var $i = $this.find('i');
                                if (isLike) {
                                    $this.attr('like', 1);
                                    $this.html('<i class="material-icons" data-baloon-tip="UnLike" data-baloon-offset-y="5">favorite</i>');
                                } else {
                                    $this.attr('like', 0);
                                    $this.hideBalloon();
                                    $this.html('<i class="material-icons" data-baloon-tip="Like" data-baloon-offset-y="5">favorite_border</i>');

                                    if (window.location.pathname === '/user/likedproducts') {
                                        $('[item-product-id="' + $this.attr('product-id') + '"]').remove();
                                    }
                                }

                                var msg = notice({ Image: resp.image, Name: resp.name, Message: resp.text });
                                APP.alert.show('success', msg);
                                return false;
                            }

                            resp.mode = 'dialog';
                            APP.alert.showByResp(resp);
                        },
                        "json");
                });
        },

        changeBookmarkSign: function () {
            $('body').off('click', '[bookmark]');
            $('body').on('click', '[bookmark]',
                function (e) {
                    e.preventDefault();
                    var $this = $(this);
                    var bookmark = $this.attr('bookmark') == "0";
                    var id = $this.attr('product-id');

                    var isProductDetails = $(this).is('[product-details-btn]');

                    $.post('/product/' + (bookmark ? 'addbookmark' : 'removebookmark'),
                        {
                            id: id
                        },
                        function (resp) {
                            if (resp.result) {

                                var template;

                                if (bookmark) {

                                    if (isProductDetails) {

                                        template = _.template($('[remove-bookmark-product-details-template]').html());

                                        $('[details-bookmark-btn="' + id + '"]').html(template({ Id: id, AdditionalAttr: 'product-details-btn' }));


                                        var $span = $('[bookmark-btn="' + id + '"] span');
                                        $span.attr('bookmark', 1);
                                        $span.find('i').attr('class', 'fas fa-bookmark').attr('data-baloon-tip', 'UnBookmark');


                                    } else {


                                        var $span = $('[bookmark-btn="' + id + '"] span');
                                        $span.attr('bookmark', 1);
                                        $span.find('i').attr('class', 'fas fa-bookmark').attr('data-baloon-tip', 'UnBookmark');
                                    }

                                } else {


                                    if (isProductDetails) {

                                        template = _.template($('[add-bookmark-product-details-template]').html());

                                        $('[details-bookmark-btn="' + id + '"]').html(template({ Id: id, AdditionalAttr: 'product-details-btn' }));


                                        var $span = $('[bookmark-btn="' + id + '"] span');
                                        $span.attr('bookmark', 0);
                                        $span.find('i').attr('class', 'fal fa-bookmark').attr('data-baloon-tip', 'Bookmark');

                                    } else {
                                        var $span = $('[bookmark-btn="' + id + '"] span');
                                        $span.hideBalloon();
                                        $span.attr('bookmark', 0);
                                        $span.find('i').attr('class', 'fal fa-bookmark').attr('data-baloon-tip', 'Bookmark');

                                    }



                                    if (window.location.pathname === '/user/wishlist') {
                                        $('[item-product-id="' + id + '"]').remove();
                                    }
                                }

                                var msg = notice({ Image: resp.image, Name: resp.name, Message: resp.text });
                                APP.alert.show('success', msg);
                            //    APP.user.wishlistPreview();
                                return false;
                            }

                            APP.alert.showByResp(resp);
                        },
                        "json");
                });
        },

        setProductViews: function (productId) {
            $(function () {
                var resetAfterDays = 1;
                var updateDatabase = false;

                var vp = localStorage.getItem("ViewedProducts");

                if (vp == null) {
                    localStorage.setItem("ViewedProducts", JSON.stringify([Date.now(), productId]));
                    updateDatabase = true;
                } else {
                    var viewedProducts = JSON.parse(vp);

                    var date = Date.now();

                    if (dateDiffInDays(viewedProducts[0], date) > resetAfterDays) {
                        localStorage.setItem("ViewedProducts", JSON.stringify([date, productId]));
                        updateDatabase = true;
                    }

                    if (viewedProducts.indexOf(productId) == -1) {
                        viewedProducts.push(productId);
                        localStorage.setItem("ViewedProducts", JSON.stringify(viewedProducts));
                        updateDatabase = true;
                    }
                }

                if (updateDatabase) {
                    $.post('/product/UpdateProductViews', { id: productId });
                }
            });
        }
    }
})();;
APP.sacroexpo = (function () {

    var lock;

    function callFilter(append, scroll) {

        //appendDataToForm();

        var model = {
            Page: $('[name="Page"]').val(),
            IsBack: $('[name="IsBack"]').val()
        };

        $('#loading-progress').show();

        $.post('/sacroexpo/loadproducts', model, function (html) {

            if (append) {
                $('[sacroexpoCatalog]').append(html);
            } else {
                $('[sacroexpoCatalog]').html(html);
            }

            if (scroll && localStorage.scrollPos) {
                $(window).scrollTop(localStorage.scrollPos);
            }

            $('#IsBack').val(false);

            $('#loading-progress').hide();

        });

        return false;
    }

    return {
        init: function (page) {
            if (window.performance && window.performance.navigation.type == window.performance.navigation.TYPE_BACK_FORWARD) {

                $('#IsBack').val(true);
                $('#Page').val(page);

                callFilter(false, true);
            } else {
                $('#Page').val(1);
                callFilter();
            }
        },

        loadMore: function () {

            $(document).ajaxStop(function () {
                $(window).on("scroll",
                    function () {

                        if (lock) {
                            return false;
                        }

                        var scrollHeight = $(document).height();
                        var scrollPosition = $(window).height() + $(window).scrollTop();

                        localStorage.setItem("scrollPos", $(window).scrollTop());

                        var ratio = 0.20 - scrollHeight / 100000;

                        if (ratio < 0.05) {
                            ratio = 0.05;
                        }

                        var r = (scrollHeight - scrollPosition) / scrollHeight;

                        if (r <= ratio) {

                            lock = true;

                            var page = parseInt($('[catalog-page]').val()) + 1;
                            $('[catalog-page]').val(page);
                            callFilter(true);

                            $(document).ajaxSuccess(function (event, xhr, settings) {
                                if (settings.url == '/sacroexpo/loadproducts') {
                                    lock = false;
                                }
                            });

                        }
                    });
            });
        },

        lockScroll: function () {
            lock = true;
        },

        unlockScroll: function () {
            lock = false;
        }
    }
})();;
APP.search = (function () {

    return {
        init: function () {

            var clearTimer = false;
            $('body').on('keyup', '[name="search-input"]', function (e) {

                var $this = $(this);
                console.log('keyup');
                if (e.keyCode === 13) {
                    console.log('serch');
                    window.location.href = '/' + User.Lang + '/artysci/lista?lp=&cp=&tp=&qs=' + $this.val() +'&so=0';
                    return false;
                }

                if (clearTimer !== false) {
                    clearTimeout(clearTimer);
                }

                clearTimer = setTimeout(function () {

                    var value = $this.val();
                    if (value.length < 2) {
                        $('#search-results').html('').hide();
                        return false;
                    }

                    $('#search-results').html('<img class="loading" alt="loading" src="/content/images/loading.svg" />').show();

                    $.post('/search/getsearchresults', { queryString: value }, function (html) {

                        if (html.length <= 0) {
                            $('#search-results').html('').hide();
                            return false;
                        }

                        $('#search-results').html(html);
                        return false;
                    });

                    clearTimer = false;

                }, 500);
            });

            $('body').on('click', '#search-icon', function () {
                var val = $('[name="search-input"]').val();
                if (val.length < 1) {
                    $('.srcx').addClass('visible').focus();
					$('.search-box').addClass('activ8');
                    return false;
                }

                window.location.href = '/' + User.Lang + '/artysci/lista?lp=&cp=&tp=&qs=' + val +'&so=0';
                return false;
            });

            $('body').on('click', '.toggleSearchClose', function () {

				$('.srcx').val('');
				$('.srcx').removeClass('visible').focus();
				$('.search-box').removeClass('activ8');
            });
			
			
			
            $('body').on('click', '.url-result', function () {
                var url = $(this).data('url');
                window.location = url;
                return false;
            });

            $('body').click(function (e) {
                var target = $(e.target).closest('#search-results, [name="search-input"]');

                if (target.length > 0) {
                    return true;
                }

                $('#search-results').html('').hide();
                if ($(e.target).closest('#search-icon').length > 0) {
                    $('[name="search-input"]').val('').toggleClass('visible').focus();
                    return false;
                }

                return true;
            });
        }
    }
})();;
APP.sliders = (function () {

    return {
        init: function () {
            $('.owl-one').owlCarousel({
                loop: true,
                items: 1,
                autoplay: true,
				nav: true,
				lazyLoad:true,
				dots: true
            });
			
		
        }
    }
})();;
APP.ukraineCatalog = (function () {

    var lock;

    function callFilter(append, scroll) {

        //appendDataToForm();

        var model = {
            Page: $('[name="Page"]').val(),
            IsBack: $('[name="IsBack"]').val()
        };

        $('#loading-progress').show();

        $.post('/ukrainefair/loadproducts', model, function (html) {

            if (append) {
                $('[ukraineCatalog]').append(html);
            } else {
                $('[ukraineCatalog]').html(html);
            }

            if (scroll && localStorage.scrollPos) {
                $(window).scrollTop(localStorage.scrollPos);
            }

            $('#IsBack').val(false);

            $('#loading-progress').hide();

        });

        return false;
    }

    return {
        init: function (page) {
            if (window.performance && window.performance.navigation.type == window.performance.navigation.TYPE_BACK_FORWARD) {

                $('#IsBack').val(true);
                $('#Page').val(page);

                callFilter(false, true);
            } else {
                $('#Page').val(1);
                callFilter();
            }
        },

        loadMore: function () {

            $(document).ajaxStop(function () {
                $(window).on("scroll",
                    function () {

                        if (lock) {
                            return false;
                        }

                        var scrollHeight = $(document).height();
                        var scrollPosition = $(window).height() + $(window).scrollTop();

                        localStorage.setItem("scrollPos", $(window).scrollTop());

                        var ratio = 0.20 - scrollHeight / 100000;

                        if (ratio < 0.05) {
                            ratio = 0.05;
                        }

                        var r = (scrollHeight - scrollPosition) / scrollHeight;

                        if (r <= ratio) {

                            lock = true;

                            var page = parseInt($('[catalog-page]').val()) + 1;
                            $('[catalog-page]').val(page);
                            callFilter(true);

                            $(document).ajaxSuccess(function (event, xhr, settings) {
                                if (settings.url == '/ukrainefair/loadproducts') {
                                    lock = false;
                                }
                            });

                        }
                    });
            });
        },

        lockScroll: function () {
            lock = true;
        },

        unlockScroll: function () {
            lock = false;
        }
    }
})();;
APP.user = (function () {

    function loadMoreItems(append, url) {

        $('[load-more]').show();

        var model = $('[products-filter]').serialize();

        $.post(url, model, function (html) {
            if (append) {
                $('[products]').append(html);
            } else {
                $('[products]').html(html);
            }
        });

        return false;
    }

    function loadMoreTransactionsItems(append) {

        $('[load-more]').show();

        var model = $('[transactions-filter]').serialize();

        $.post('/user/loadtransactionsitems', model, function (html) {
            if (append) {
                $('#transactions-list').append(html);
            } else {
                $('#transactions-list').html(html);
            }
        });

        return false;
    }

    function getTransactionDetails(orderId) {
        $.post('/user/loadtransactiondetails', 'OrderId=' + orderId, function (html) {
            $(html).insertAfter('[transaction-header][order-id=' + orderId + ']');
        });
    }

    function changeEmailFormState(state) {
        if (state === 'disable') {
            $('#Email').attr('readonly', 'readonly').val($('[current-email]').val());
            $('[change-email-btns]').hide();
            $('[change-email="enable"]').show();

            return false;
        }

        $('[change-email="enable"]').hide();
        $('#Email').removeAttr('readonly');
        $('[change-email-btns]').show();
    }

    function reloadAddresses() {
        $.post('/user/loaddeliverydata', function (html) {
            $('#addresses').html(html);
            return false;
        });
    }

    function loadMoreFollowedArtistsItems(append) {

        $('[load-more]').show();

        var model = $('[artists-filter]').serialize();

        $.post('/user/loadfollowedartists', model, function (html) {
            if (append) {
                $('[artists]').append(html);
            } else {
                $('[artists]').html(html);
            }
        });

        return false;
    }

    return {

        menu: function (active) {
            $('.profile-menu').find('li a').removeClass('current');
            $('[menu-' + active + ']').addClass('current');
        },

        loadMore: function (url) {
            $('body').off('click', '[load-more]');
            $('body').on('click', '[load-more]', function (e) {
                e.preventDefault();

                var page = parseInt($('[products-page]').val()) + 1;

                $('[products-page]').val(page);

                loadMoreItems(true, url);
            });
        },

        hideLoadMoreBtn: function () {
            //alert($('[load-more]').attr('href'));
            //$('[load-more]').css('display', 'none');
            $('[load-more]').hide();
        },

        changeEmail: function () {
            $('body').on('click', '[change-email]', function () {
                changeEmailFormState($(this).attr('change-email'));
            });

            $('body').on('submit', '[change-email-form]', function (e) {
                e.preventDefault();

                $.post('/user/changeemail', $('[change-email-form]').serialize(), function (resp) {
                    resp.mode = 'dialog';
                    APP.alert.showByResp(resp);
                    changeEmailFormState('disable');
                });
            });
        },

        changeNewsletterState: function () {
            $('body').on('change', '#WantsNewsletter', function () {
                var $this = $(this);
                var checked = $(this).is(':checked');
                $.post('/user/checkifcanchangenewsletterstate', function (resp) {
                    if (resp.result) {
                        $.post('/user/changenewsletterstate', { state: checked }, function (resp, status, xhr) {
                            var ct = xhr.getResponseHeader("content-type") || "";
                            if (ct.indexOf('html') > -1) {
                                APP.cdialog.open({
                                    dataset: {
                                        type: 'raw',
                                        rawText: resp,
                                        width: 440,
                                        wrapperAdditionalClass: 'change-newsletter-state'
                                    },
                                    id: 'change-newsletter-state-dialog',
                                    singleInit: false,
                                    staticBackdrop: true
                                });
                            }
                            return false;
                        });
                    }
                    else {
                        $.post('/user/GetTimeToWaitForNewsletterStateChange', function (resp, status, xhr) {
                            var ct = xhr.getResponseHeader("content-type") || "";
                            if (ct.indexOf('html') > -1) {
                                APP.cdialog.open({
                                    dataset: {
                                        type: 'raw',
                                        rawText: resp,
                                        width: 440,
                                        wrapperAdditionalClass: 'change-newsletter-state'
                                    },
                                    id: 'change-newsletter-state-dialog',
                                    singleInit: false,
                                    staticBackdrop: true,
                                    onClose: function () {
                                        console.log('ww');
                                        window.location.reload();
                                    }
                                });
                            }
                            return false;
                        });
                    }
                });
            });
        },

        changePassword: function () {

            $('.flash-box').html('');

            $('body').on('submit', '[change-password-form]', function (e) {
                e.preventDefault();

                var $this = $(this);

                $.post('/user/changepassword', $this.serialize(), function (resp) {
                    APP.errors.show(resp.errors);

                    resp.mode = 'target';
                    resp.type = 'change-password';

                    APP.alert.showByResp(resp);

                    if (resp.result) {
                        $this.find('input[type="password"]').val('');
                    }

                    return false;
                });
            });
        },

        deliveryData: function () {
            $('body').on('submit', '#delivery-data-form', function (e) {
                e.preventDefault();

                $.post('/user/savedeliverydata', $(this).serialize(), function (resp) {

                    APP.submiterror.show('#delivery-data-form', resp.errors);

                    if (!resp.result) {
                        return false;
                    }

                    resp.mode = 'dialog';
                    APP.alert.showByResp(resp);
                    return false;
                });
            });

            $('body').on('submit', '#invoice-data-form', function (e) {
                e.preventDefault();

                $.post('/user/savedeliverydata', $(this).serialize(), function (resp) {

                    APP.submiterror.show('#invoice-data-form', resp.errors);

                    if (!resp.result) {
                        return false;
                    }

                    resp.mode = 'dialog';
                    APP.alert.showByResp(resp);
                    return false;
                });
            });
        },

        loadMoreTransactions: function () {
            $('body').off('click', '[load-more]');
            $('body').on('click', '[load-more]', function (e) {
                e.preventDefault();

                var page = parseInt($('[transactions-page]').val()) + 1;

                $('[transactions-page]').val(page);

                loadMoreTransactionsItems(true);
            });
        },

        showTransactionDetails: function () {
            $('body').on('click', '[transaction-details-link]', function (e) {
                e.preventDefault();

                var orderId = $(this).attr('order-id');
                var hide = $(this).attr('transaction-details-link') == 0;

                if (hide) {
                    $('table.table tr.hilite').removeClass('hilite');
                    $(this).attr('transaction-details-link', 1);
                    $(this).html('<i class="material-icons">arrow_circle_down</i>');
                    $('[transaction-details][order-id=' + orderId + ']').remove();
                    //$(detailRow).hide();
                    return;
                } else {
                    $(this).parent('td').parent('tr').addClass('hilite');
                    $(this).attr('transaction-details-link', 0);
                    $(this).html('<i class="material-icons">arrow_circle_up</i>');
                    getTransactionDetails(orderId);
                    //$(detailRow).show();
                }
            });
        },

        makeDeliveryDataDefault: function () {
            $('body').on('click', '[make-default]', function () {
                $.post('/user/deliverydata/makedefault', { uniqueId: $(this).attr('unique-id') }, function (resp) {
                    APP.alert.showByResp(resp);

                    if (!resp.result) {
                        return false;
                    }

                    reloadAddresses();
                });
            });
        },

        loadMoreFollowedArtists: function () {
            $('body').off('click', '[load-more]');
            $('body').on('click', '[load-more]', function (e) {
                e.preventDefault();

                var page = parseInt($('[artists-page]').val()) + 1;

                $('[artists-page]').val(page);

                loadMoreFollowedArtistsItems(true);
            });
        },

        cancelAccount: function () {
            $('body').on('click', '[cancel-account-open-dialog]', function () {
                $.post('/user/cancelaccount', function (html) {
                    APP.cdialog.open({
                        dataset: {
                            type: 'raw',
                            rawText: html,
                            wrapperAdditionalClass: 'cancel-account'
                        },
                        id: 'cancel-account-dialog',
                        singleInit: false,
                        staticBackdrop: true
                    });

                    return false;
                });
            });



            $('body').on('submit', '[confirm-cancel-account]', function (e) {

                e.preventDefault();

                var model = $(this).serialize();
                $.post('/user/confirmcancelaccount', model, function (resp) {
                    if (!resp.result) {
                        APP.errors.show(resp.errors);

                        resp.mode = 'target';
                        resp.type = 'change-password';

                        APP.alert.showByResp(resp);

                        return false;
                    }

                    $('[cancel-account-step-1]').hide();
                    $('[cancel-account-step-2]').show();
                });
            });

            $('body').on('click', '[do-cancel-account]', function () {

                $.post('/user/docancelaccount', function (resp) {
                    if (!resp.result) {
                        APP.alert.showByResp(resp);
                        return false;
                    }

                    window.location = '/';
                });
            });
        },

   //     wishlistPreview: function () {
   //         $.post('/user/wishlistcount', function (html) {
   //             $('[wishlist-count]').html(html);
   //        });
   //     }
    }
})();;
APP.contactform = (function () {

    return {

        send: function () {

            $('body').on('submit', '#contact-form', function (e) {
                e.preventDefault();
                $('.validation-errors').hide();
                var model = {
                    productId: $('#AuctionItemId').val(),
                    position: $('#AuctionItemPosition').val(),
                    artistId: $('#ArtistId').val(),
                    artistName: $('#ArtistName').val()
                }
                $.post('/auctionscontact/send', $('#contact-form').serialize(), function (resp) {
                    if (!resp.result) {
                        APP.erros.show(resp.errors);
                        return false;
                    }

                    $('.modal-body').html(resp.msg).show();
                    APP.auctionganalytics.productContactForm();
                    
                    APP.gdataLayer.pushSendAuctionArtworkContact(model);

                    return false;
                });

                return false;
            });

            $('body').on('click', '#submit-product-contact-form', function () {
                //$('.validation-errors').hide();
                //$('.email-validation-errors').hide();

                ////if ($('#ClientEmail').val().indexOf('@') <= 0) {
                ////    $('.email-validation-errors').show();
                ////    return false;
                ////}
                var model = {
                    productId: $('#AuctionItemId').val(),
                    position: $('#AuctionItemPosition').val(),
                    artistId: $('#ArtistId').val(),
                    artistName: $('#ArtistName').val()
                }

                var auction = {
                    name: $('#AuctionName').val(),
                    id: $('#AuctionId').val(),
                    date: $('#AuctionDate').val(),
                    type: $('#AuctionType').val()
                }

                $.post('/auctionscontact/send', $('#contact-form').serialize(), function (resp) {
                    if (!resp.result) {
                        APP.errors.show(resp.errors);
                        return false;
                    }

                    $('.modal-body').html(resp.msg).show();
                    APP.auctionganalytics.productContactForm();
                    
                    APP.gdataLayer.pushSendAuctionArtworkContact(model, auction);

                    return false;
                });
            });
        },

        openProductDialog: function () {
            $('body').on('click', '#ask-about-product', function () {
                APP.cdialog.open({
                    dataset: {
                        type: 'async',
                        url: '/auctionscontact/productcontactform',
                        model: { id: $(this).data('id') },
                        width: 600,
                        wrapperAdditionalClass: 'ask-about-prod'
                    },
                    id: 'ask-about-product-dialog',
                    singleInit: false,
                    staticBackdrop: true
                });
                
                var model = {
                    id: $(this).data('id'),
                    number: $(this).data('position')
                }
                var auction = {
                    name: $(this).data('auction-name'),
                    id: $(this).data('auction-id'),
                    date: $(this).data('auction-date'),
                    type: $(this).data('auction-type'),
                }
                APP.gdataLayer.pushButtonAuctionArtworkContact(model, auction);

                return false;
            });
        }
    }

})();;
APP.dialog = (function () {
    var isShowed = false;

    return {
        isShowed: function () {
            return isShowed;
        },
        show: function (html) {

            $('[modal-dialog]').html('')
            $('[modal-dialog]').html(html);
            $('[modal-dialog]').modal('show');

            isShowed = true;
        },
        showWithStaticBackdrop: function (html, $selector) {
        
            if (typeof $selector === "undefined" || $selector === null) {
                $selector = $('[modal-dialog]');
            }

            $selector.html('')
            $selector.html(html);
       
            $selector.modal({
                 backdrop: 'static'
            });

            $selector.modal('show');

            isShowed = true;
        },
        hide: function () {

            $('[modal-dialog]').modal('hide');
            $('.modal-backdrop').remove();

            isShowed = false;

        },
        init: function () {
            $('[modal-dialog]').on('hidden.bs.modal', function () {
                $('[modal-dialog]').html('')
                $('.modal-backdrop').remove();
                isShowed = false;
            });
        }
    }
})();;
APP.auctionganalytics = (function() {

    return{
        downloadPDF: function() {
            ga('send', 'event', 'Katalog-PDF', 'Pobranie-Potwierdzenie', 'Pobranie-Potwierdzenie', {
                nonInteraction: true
            });
        },

        productContactForm: function () {
            ga('send', 'event', 'Aukcja', 'Zapytaj-O-Prace-Potwierdzenie', 'Zapytaj-O-Prace-Potwierdzenie', {
                nonInteraction: true
            });
        },

        offerSubmit: function () {
            ga('send', 'event', 'Aukcja', 'Zlozenie-Oferty-Potwierdzenie', 'Zlozenie-Oferty-Potwierdzenie', {
                nonInteraction: true
            });
        }
    }

})();;
APP.homepage = (function() {

    return {

        sliders: function() {
			
            $('.hp-slider').owlCarousel({
				autoplay:true,
				autoplayTimeout:5000,
				autoplayHoverPause:true,
				loop:true,
				nav:true,
				navigation:true,
                dots: false,
				navigation:true,
				navigationText: ['', ''],												
                responsive: {
                    0: {
                        items: 1
                    },
                    600: {
                        items: 1
                    },
                    1000: {
                        items: 1
                    }
                }
            });
        }

    }
	
})();;
APP.offer = (function () {

    var dialogOpts = {
        id: 'make-an-offer-dialog',
        singleInit: false,
        staticBackdrop: true
    };

    return {

        opendialog: function () {

            function dialog($this) {

                var productId = $this.data('product-id');

                var model = {
                    auctionId: $this.data('auction-id'),
                    productId: productId
                }

                APP.cdialog.open({
                    dataset: {
                        type: 'async',
                        url: '/auctionoffer/opendialog',
                        model: model,
                        width: 600,
                        wrapperAdditionalClass: 'make-an-offer'
                    },
                    id: 'make-an-offer-dialog',
                    singleInit: false,
                    staticBackdrop: true
                });

                var productPos = $this.data('product-position');


            }

            $('body').off('click', '#make-an-offer')
            $('body').on('click', '#make-an-offer', function () {
                dialog($(this));
                var productId = $(this).data('product-id');
                var productPos = $(this).data('product-position');
                APP.gdataLayer.pushPlaceBidEvent(productId, productPos);
                return false;
            });

            $('body').on('click', '.open-make-offer-dialog', function () {
                dialog($(this));
                var productId = $(this).data('product-id');
                var productPos = $(this).data('product-position');
                APP.gdataLayer.pushPlaceBidEvent(productId, productPos);
                return false;

            });

            $('body').on('change', '[name="Type"]', function () {
                var val = $('[name="Type"]:checked').val();
                if (val.toLowerCase() === "limited") {
                    $('#offer-price-box').show();
                    return false;
                }

                $('#offer-price-box').hide();
                return false;
            });
        },

        submit: function () {

            $('body').on('keyup', '#OfferPrice', function () {
                var val = $(this).val();

                if (val == '') {
                    return false;
                }

                $(this).val(APP.decimal.parse(val, 0));
                return false;
            });

            $('body').off('click', '#submit-offer-form');
            $('body').on('click', '#submit-offer-form', function () {
                $('#submit-offer-form').hide();
                $('.validation-errors').hide();

                //var model = $('#offer-form').serialize();
                var bidModel = {
                    author: $('#ArtistName').val(),
                    authorId: $('#ArtistId').val(),
                    productId: $('#AuctionItemId').val(),
                    number: $('#ItemPosition').val(),
                    bidType: $('#Type:checked').val(),
                    bidAmount: $('#OfferPrice').val()
                };

                //var email = $('#ClientEmail').val();

                $.post('/auctionoffer/submit', $('#offer-form').serialize(), function (resp) {
                    if (!resp.result) {
                        if (resp.msg == 'BlackList') {
                            console.log('BlackList');
                            APP.cdialog.close(dialogOpts, $('#submit-offer-form'));
                            return false;
                        }
                        //if (resp.msg == 'emailused') {
                        //    $('#make-offer-form-emailused-error').show();
                        //    return false;
                        //}
                        $('#make-offer-form-error').show();
                        $('#submit-offer-form').show();
                        APP.errors.show(resp.errors);
                        return false;
                    }

                    if (resp.msg == "redirect") {
                        APP.cdialog.close(dialogOpts, $('#submit-offer-form'));
                        APP.cdialog.open({
                            dataset: {
                                type: 'async',
                                url: resp.href,
                                model: bidModel,
                                width: 600,
                                wrapperAdditionalClass: 'make-an-offer'
                            },
                            id: 'make-an-offer-dialog',
                            singleInit: false,
                            staticBackdrop: true
                        });
                        return false;
                    }

                    $('#offer-form').remove();
                    $('.offer-form-btn').remove();
                    $('.modal-body').html(resp.msg);

                    APP.auctionganalytics.offerSubmit();

                    APP.gdataLayer.pushSendPlaceBidEvent(bidModel);

                    return false;
                });
            });

            $('body').off('click', '#submit-address-data-btn');
            $('body').on('click', '#submit-address-data-btn', function () {
                $('#submit-address-data-btn').hide();
                $('.validation-errors').hide();

                var bidModel = {
                    author: $('#ArtistName').val(),
                    authorId: $('#ArtistId').val(),
                    productId: $('#AuctionItemId').val(),
                    number: $('#ItemPosition').val(),
                    bidType: $('#Type:checked').val(),
                    bidAmount: $('#OfferPrice').val()
                };

                $.post('/auctionoffer/SubmitAddressData', $('#offer-address-data-form').serialize(), function (resp) {
                    if (!resp.result) {
                        $('#offer-address-data-form-error').show();
                        $('#submit-address-data-btn').show();
                        APP.errors.show(resp.errors);
                        return false;
                    }

                    if (resp.msg == 'redirect') {
                        APP.cdialog.close(dialogOpts, $('#submit-address-data-btn'));
                        APP.cdialog.open({
                            dataset: {
                                type: 'async',
                                url: resp.href,
                                model: null,
                                width: 600,
                                wrapperAdditionalClass: 'make-an-offer'
                            },
                            id: 'make-an-offer-dialog',
                            singleInit: false,
                            staticBackdrop: true
                        });
                        return false;
                    }

                    $('#offer-form').remove();
                    $('.offer-form-btn').remove();
                    $('.modal-body').html(resp.msg);

                    APP.auctionganalytics.offerSubmit();

                    APP.gdataLayer.pushSendPlaceBidEvent(bidModel);

                    return false;
                });
            });

            $('body').off('click', '#try-again-btn');
            $('body').on('click', '#try-again-btn', function () {
                APP.cdialog.close(dialogOpts, $('#try-again-btn'));
                $('#loading-progress').show();
                APP.cdialog.open({
                    dataset: {
                        type: 'async',
                        url: '/auctionoffer/OpenSmsConfirmDialog',
                        model: null,
                        width: 600,
                        wrapperAdditionalClass: 'make-an-offer'
                    },
                    id: 'make-an-offer-dialog',
                    singleInit: false,
                    staticBackdrop: true
                });
                //$('#loading-progress').hide();
                return false;
            });

            $('body').off('click', '#offer-edit-number-btn');
            $('body').on('click', '#offer-edit-number-btn', function () {
                
                APP.cdialog.close(dialogOpts, $('#offer-edit-number-btn'));
                $('#loading-progress').show();
                APP.cdialog.open({
                    dataset: {
                        type: 'async',
                        url: '/auctionoffer/OpenEditPhoneNoDialog',
                        model: null,
                        width: 600,
                        wrapperAdditionalClass: 'make-an-offer'
                    },
                    id: 'make-an-offer-dialog',
                    singleInit: false,
                    staticBackdrop: true
                });
                //$('#loading-progress').hide();
                return false;
            });

            $('body').off('click', '#offer-submit-edit-number-btn');
            $('body').on('click', '#offer-submit-edit-number-btn', function () {
                $('#offer-submit-edit-number-btn').hide();
                $('.validation-errors').hide();

                $.post('/auctionoffer/SubmitPhoneNo', $('#offer-edit-number-form').serialize(), function (resp) {
                    if (!resp.result) {
                        $('#offer-edit-number-error').show();
                        $('#offer-submit-edit-number-btn').show();
                        APP.errors.show(resp.errors);
                        return false;
                    }

                    APP.cdialog.close(dialogOpts, $('#offer-submit-edit-number-btn'));
                    APP.cdialog.open({
                        dataset: {
                            type: 'async',
                            url: '/auctionoffer/OpenSmsConfirmDialog',
                            model: null,
                            width: 600,
                            wrapperAdditionalClass: 'make-an-offer'
                        },
                        id: 'make-an-offer-dialog',
                        singleInit: false,
                        staticBackdrop: true
                    });
                });
                return false;
            });

            $('body').off('click', '#offer-sms-confirm-btn');
            $('body').on('click', '#offer-sms-confirm-btn', function () {
                $('#offer-sms-confirm-btn').hide();
                $('#try-again-btn').hide();
                $('.validation-errors').hide();

                var bidModel = {
                    author: $('#Author').val(),
                    authorId: $('#AuthorId').val(),
                    productId: $('#ProductId').val(),
                    number: $('#Number').val(),
                    bidType: $('#BidType').val(),
                    bidAmount: $('#BidAmount').val()
                };

                $.post('/auctionoffer/confirmsms', $('#offer-sms-confirm-form').serialize(), function (resp) {
                    if (!resp.result) {
                        $('#offer-sms-confirm-wrong-code-error').show();
                        $('#offer-sms-confirm-btn').show();
                        $('#try-again-btn').show();
                        return false;
                    }

                    if (resp.msg == 'redirect') {
                        APP.cdialog.close(dialogOpts, $('#submit-address-data-btn'));
                        APP.cdialog.open({
                            dataset: {
                                type: 'async',
                                url: resp.href,
                                model: null,
                                width: 600,
                                wrapperAdditionalClass: 'make-an-offer'
                            },
                            id: 'make-an-offer-dialog',
                            singleInit: false,
                            staticBackdrop: true
                        });
                        return false;
                    }

                    $('#offer-sms-confirm-form').remove();
                    $('.offer-form-btn').remove();
                    $('.modal-body').html(resp.msg);

                    APP.auctionganalytics.offerSubmit();

                    APP.gdataLayer.pushSendPlaceBidEvent(bidModel);

                    console.log('success!');

                    return false;
                });
            });

            $('body').off('click', '.offer-submit-newsletter-btn');
            $('body').on('click', '.offer-submit-newsletter-btn', function () {
                $('.offer-submit-newsletter-btn').hide();
                $('.validation-errors').hide();

                var bidModel = {
                    author: $('#Author').val(),
                    authorId: $('#AuthorId').val(),
                    productId: $('#ProductId').val(),
                    number: $('#Number').val(),
                    bidType: $('#BidType').val(),
                    bidAmount: $('#BidAmount').val()
                };

                var model = {
                    wantsNewsletter: $(this).data('wants-newsletter')
                };
                $.post('/auctionoffer/confirm', model, function (resp) {
                    if (!resp.result) {
                        $('#offer-newsletter-form-error').show();
                        $('.offer-submit-newsletter-btn').show();
                        return false;
                    }

                    $('#offer-newsletter-form').remove();
                    $('.offer-form-btn').remove();
                    $('.modal-header').remove();
                    $('.modal-newsletter-confirm').html(resp.msg);

                    APP.auctionganalytics.offerSubmit();

                    APP.gdataLayer.pushSendPlaceBidEvent(bidModel);

                    console.log('success!');

                    return false;
                });
            });
        }

    }

})();;
APP.papercatalog = (function () {

    return {

        opendialog: function () {
            $('body').on('click', '#open-paper-catalog-dialog', function () {

                APP.cdialog.open({
                    dataset: {
                        type: 'async',
                        url: '/auctions/papercatalogdialog',
                        model: { id: $(this).data('id') },
                        width: 600,
                        wrapperAdditionalClass: 'paper-catalog'
                    },
                    id: 'paper-catalog-dialog',
                    singleInit: false,
                    staticBackdrop: true
                });
            });
        },

        submit: function () {

            $('body').on('click', '#submit-paper-catalog-form', function () {
                $('.validation-errors').hide();

                $.post('/auctions/papercatalogsubmit', $('#paper-catalog-form').serialize(), function (resp) {
                    if (!resp.result) {
                        $('.validation-errors').show();
                        APP.errors.show(resp.errors);
                        return false;
                    }

                    $('.modal-body').html(resp.msg);
                    return false;
                });
            });

        }

    }

})();;
APP.pdfcatalog = (function () {

    return {

        opendialog: function () {
            $('body').on('click', '#open-pdf-catalog-dialog', function () {
                APP.cdialog.open({
                    dataset: {
                        type: 'async',
                        url: '/auctions/pdfcatalogdialog',
                        model: { id: $(this).data('id') },
                        width: 600,
                        wrapperAdditionalClass: 'pdf-catalog'
                    },
                    id: 'pdf-catalog-dialog',
                    singleInit: false,
                    staticBackdrop: true
                });
            });
        },

        submit: function() {

            $('body').on('click', '#submit-pdf-catalog-form', function () {
                $('.validation-errors').hide();
                $.post('/auctions/pdfcatalogsubmit', $('#pdf-catalog-form').serialize(), function (resp) {
                    if (!resp.result) {
                        $('.validation-errors').show();
                        APP.errors.show(resp.errors);
                        return false;
                    }

                    var auctionId = $('#AuctionId').val();

                    $('.modal-body').html(resp.msg);
                    $('.modal-header .lead').html('');

                    window.location = '/auctions/downloadpdfcatalog/' + auctionId;

                    APP.auctionganalytics.downloadPDF();

                    return false;
                });
            });

        }

    }

})();;
APP.products = (function() {

    return {
        artistinterestdialog: function() {
            $('body').on('click', '#open-form-dialog', function () {
				
 
				
                APP.cdialog.open({
                    dataset: {
                        type: 'async',
                        url: '/artist/interestformdialog',
                        model: { id: $(this).data('id') },
                        width: 600,
                        wrapperAdditionalClass: 'open-interests-form'
                    },
                    id: 'open-interests-form-dialog',
                    singleInit: false,
                    staticBackdrop: true
                });
            });

            $('body').on('click', '#submit-artist-interest-form', function () {
                $('.validation-errors').hide();
                $('#submit-artist-interest-form').hide();
                $.post('/artist/sendinterest', $('#interest-form').serialize(), function (resp) {
                    if (!resp.result) {
                        $('.validation-errors').show();
                        APP.errors.show(resp.errors);
                        $('#submit-artist-interest-form').show();
                        return false;
                    }

                    $('input[type="text"]:not([readonly]), input[type="email"], textarea').val('');
                    $('input[type="checkbox"]').prop('checked', false);

                    $('#contact-form-success').html(resp.msg).show();

                    $('.close-dialog').show();
                    $('.dialog-content').remove();

                    return false;
                });
            });
        }
    }

})();;
APP.decimal = new (function () {

    return {

        parse: function (val, round) {

            function toDecimal(val, round) {
                if (!round || isNaN(round)) {
                    round = 23;
                }

                var str = val.toString();
                return parseFloat(str.replace(',', '.')).toFixed(round) || 0;
            }

            if (!val) {
                return 0;
            }

            var value = toDecimal(val, round);

            if (isNaN(value)) {
                return 0;
            }

            return parseFloat(value);
        }

    }
})();;
