var application = {
    langMas: {
        ru:{
            search_string: "поиск",
            filter_h1: "в названии",
            filter_description: "по описанию",
            filter_from: "цена от",
            filter_to: "цена до"
        },
    en:{
            search_string: "поиск",
            filter_h1: "в названии",
            filter_description: "по описанию",
            filter_from: "цена от",
            filter_to: "цена до"
        }
    },
    lang:{},
    langFun: function(){
        curLang = $('#lang').text();
        switch(curLang){
            case'ru':
                this.lang = this.langMas.ru;
                break;
            case'en':
                this.lang = this.langMas.en;
                break;
        }
    },
    labels: function(self){
        $.each(self.lang, function(node, message){
            var nodeObj = $('.' + node);
            if (nodeObj.length){
                nodeObj.focus(function(){
                    if ($(this).hasClass('pale-text'))
                        $(this).removeClass('pale-text').val('');
                }).blur(function(){
                    if ($.trim($(this).val()) == '')
                        $(this).addClass('pale-text').val(message);
                });
                if ($.trim(nodeObj.val()) == ''){
                    nodeObj.addClass('pale-text').val(message);
                }
            }
        });
        $('form').submit(function(){
            $(this).find('.pale-text').val('');
        });
    },
    phone:{
        init: function(parent)
        {
            var self = this;
            $('#phone, #phone2').click(function(){
                self.showShade(self,$('#shade'),$('#big-wrapper'));
                return false;
            });
            $('#close').click(function(){
                self.hideShade(self,$('#shade'),$('#big-wrapper'));
                return false;
            });
        },
        showShade: function(self,shade,wrapper)
        {
            var top = (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
            shade.show().css('opacity', 0.75).height($('body').outerHeight());
            wrapper.show().height($('body').outerHeight());
            wrapper.children('.content-block').css('top', (top)+150);
        },
        hideShade: function(self,shade,wrapper)
        {
            shade.hide();
            wrapper.hide();
            return false;
        }
    },
    sendForm:{
        init: function(parent)
        {
            var self = this;
            $('.site-form').submit(function(){
                if(self.sendForm($(this),self,parent)){
                    return true;
                }else{
                    return false;
                }
            });
        },
        sendForm:function(form,self,parent)
        {
            if(($('input:radio:checked', this).val() != 'new') && (form.attr('id') == 'delivery_address')){
                return true;
            }
            var error = false;
            form.find('.success').hide();
            form.find('.error').removeClass('error');
            form.find('.required').each(function(){
                if(!($.trim($(this).val()))){
                    error = true;
                    $(this).parent().addClass('error');
                }
            });
            form.find('.email, .feedback_email').each(function(){
                if (!(/^(?:[a-z0-9]+(?:[-_\.]?[a-z0-9]+)?@[a-z0-9]+(?:\.?[a-z0-9]+)?\.[a-z]{2,5})$/i.test($.trim($(this).val())))) {
                    error = true;
                    $(this).parent().addClass('error');
                }
            });

            if(error){
                return false;
            }else{
                return true;
            }
        }
    },
    gallery:{
        params: {
            target: null,
            slideLeft: null,
            slideRight: null,
            left: 0,
            step: 1,
            speed: 500,
            max: 0,
            min: 0
        },
        n: {
            target: '.slider',
            btnLeft:  '.discounts-slider .arrows-left',
            btnRight: '.discounts-slider .arrows-right'
        },
        o: {
            btn: {
                left: {
                    normal: 'arrows-left',
                    disabled:  'arrow-passive-left'
                },
                right: {
                    normal: 'arrows-right',
                    disabled:  'arrow-passive-right'
                }
            }
        },
        init: function()
        {
            var self = this;
            (function() {
                this.target = $(self.n.target);
                this.step = this.target.children().eq(0).width();
                this.target.css('width', (this.max = this.target.children().length * this.step) + 'px');
                this.max -= 3*this.step;
                this.left = 0;
                this.min -= Math.abs(this.left);
                this.slideLeft = $(self.n.btnLeft).addClass(self.o.btn.left.normal).addClass(self.o.btn.left.disabled);
                this.slideRight = $(self.n.btnRight).addClass(self.o.btn.right.normal);
            }).call(self.params);

            self.params.slideRight.click(function(){
                self.slideRight(self, 1);
                return false;
            });
            self.params.slideLeft.click(function(){
                self.slideLeft(self, 1);
                return false;
            });
            self.customCurrent(self);
        },
        slideLeft: function(self, steps)
        {
            var step = (self.params.step*steps);
            (function() {
                if ((this.left - step) < this.min){
                    return;
                }
                if (this.slideRight.hasClass(self.o.btn.right.disabled)) { this.slideRight.removeClass(self.o.btn.right.disabled); }
                this.left -= step;
                if ((this.left - self.params.step) < this.min)
                    if (!this.slideLeft.hasClass(self.o.btn.left.disabled)) { this.slideLeft.addClass(self.o.btn.left.disabled); }
                this.target.animate({'left': '+=' + step + 'px'}, this.speed);
            }).call(self.params);
        },
        slideRight: function(self, steps)
        {
            var step = (self.params.step*steps);
            (function() {
                if ((this.left + step) >= this.max){
                    return;
                }
                this.left += step;
                if (this.slideLeft.hasClass(self.o.btn.left.disabled)) { this.slideLeft.removeClass(self.o.btn.left.disabled); }
                if ((this.left + self.params.step) >= this.max)
                    if (!this.slideRight.hasClass(self.o.btn.right.disabled)) { this.slideRight.addClass(self.o.btn.right.disabled); }
                this.target.animate({'left':  '-=' + step + 'px'}, this.speed);
            }).call(self.params);
        },
        customCurrent: function(self)
        {
            var hash = document.location.hash;
            if (!hash)
                return;
            self.params.target.children().each(function(key, value){
                if ($(value).attr('rel') == hash) {
                    self.slideRight(self, key);
                    return;
                }
            });
        }
    },
    plusMinus:{
      init: function(parent)
        {
            $('.plus-minus').click(function(){
                link = $(this);
                subMenu = link.parent().parent().children('.menu-sub-sections');
                if (link.hasClass('minus')){
                    link.removeClass('minus');
                    subMenu.hide();
                }else{
                    link.addClass('minus');
                    subMenu.show();
                }
                return false;
            });
        }
    },
    vote : function(form, voteId) {
        var res = false;
        for (var i=0; form.elements.length > i; i++) {
            if (form.elements[i].checked) {
                res = form.elements[i].value;
            }
        }
        if (res) {
            $.ajax({
                url : '/vote/post/' + res + '/?m=' + new Date().getTime(),
                dataType: 'html',
                success: function (data) {
                        eval(data);
                    }
                });
            $.ajax({
                url: '/ajax/vote/results/' + voteId,
                dataType: 'html',
                success: function (data) {
                    $(form.parentNode).html(data);
                }
            });
        }
        else alert('Не выбран ни один вариант');
    },
    sorting:{
      init: function(parent)
        {
            var sort = $('#sort');
            var ord = $('#ord');
            var filter = $('#filter');
            $('.sorting-link').click(function(){
                sort.val($(this).attr('href').replace(/#/g,''));
                if($(this).attr('href').replace(/#/g,'') != "9279"){
                    ord.val('1');
                }
                $('.pale-text').val('');
                filter.submit();
                return false;
            });
        }
    },
    payment:{
        init: function()
        {
            var form = $('#payment-form');
            var id = $('#payment-input');
            $('.pay').click(function(){
                id.val($(this).attr('href').replace(/#/g,''));
                form.submit();
                return false;
            });
            this.transaction();
        },
        transaction: function()
        {
            $('#pay-payment').submit(function(){
                if (confirm('Нажатием кнопки "Ок" Вы подтверждаете транзакцию. Если Вы хотите вернуться к выбору метода оплаты - нажмите "Отмена"'))
                    return true;
                window.location = "/emarket/purchase/payment/choose/";
                return false;
            });
        }
    },
    corner:{
        init: function(parent)
        {
            IE='\v'=='v';

            $('.corner').each(function(){
                $(this).corner('5px');
            });
            $('.corner-5').each(function(){
                $(this).corner('5px keep');
            });
            if(!(IE)){
                $('.corner-input').each(function(){
                    $(this).corner('5px keep');
                });
            }
        }
    },
    formsVals:
    {
        init: function(){
            this.save();
            this.load();
            this.clear();
        },
        save: function() {
            $('form').submit(function(i){
                var list = '';
                $(this).find('input:text, input:hidden, select, textarea').each(function(){
                    if ((key = $(this).attr('id'))) {
                        $.cookie(key, $(this).val());
                        list += '|' + key;
                    }
                });
                if (list != '')
                    $.cookie('form_vals', list.substring(1));
                return true;
            });
        },
        load: function() {
            if (!(fVals = $.cookie('form_vals')))
                return;
            for (i in (list = fVals.split('|'))) {
                $('#'+list[i]).val($.cookie(list[i]));
            }

        },
        clear: function() {
            if (!(fVals = $.cookie('form_vals')))
                return;
            $.cookie('form_vals', null);
            for (i in (list = fVals.split('|')))
               $.cookie(list[i], null);
        }
    }
}
$(document).ready(function(){
    (function() {
        this.langFun();
        this.labels(this);
        this.sendForm.init(this);
        this.gallery.init();
        this.plusMinus.init();
        this.phone.init();
        this.sorting.init();
        this.payment.init();
        this.corner.init();
        this.formsVals.init();
    }).call(application);
    L.create();
});

