var dialog;
var siteurl = 'http://bebox.ru/';
var modalOpened = false;
                
//Profile Controller
$.Addr = function (settings)
{    
    this.s = settings;
    this.nAddrID = 0;
};

$.extend($.Addr.prototype,
{
    editAddr: function (nAddrID)
    {
        this.nAddrID = nAddrID;

        basket.loadModalContent('/?s=users&ev=ajax_edit_addr', 'addr_id=' + nAddrID);
        return false;
    },
    
    save: function(form_id)
    {
        me = this;
        
        $.ajax(
        {
            url: '/?s=users&ev=ajax_saveAddr',
            type: 'POST',  
            dataType: 'json',
            data: $('#modal form[id=' + form_id + ']').serialize() + (me.nAddrID > 0 ? '&addr_id=' + me.nAddrID : ''),
            success: function(data)
            {
                if(data.error)
                {
                    alert(data.msg);
                }
                else
                {
                    if(me.nAddrID)
                    {
                        location.reload();
                        return;
                    }
                    else
                    {
                        location.reload();
                    }
                }
            },
            error: function() {
                me.ajaxError();
            }
        });
        
        return false;
    },
    
    
    del: function(nAddrID, url)
    {
        me = this;
        
        if(confirm('Вы уверены?'))
        $.ajax(
        {
            url: '/?s=users&ev=ajax_del_addr',
            type: 'POST',  
            dataType: 'json',
            data: '&addr_id=' + nAddrID,
            success: function(data)
            {
                if(data.error)
                {
                    alert(data.msg);
                }
                else
                {
                    basket.loadModalContent(url, null);
                }
            },  
            error: function() {
                me.ajaxError();
            }
        });
        return false;
    },
    
    setDefaultAddr: function(nAddrID)
    {
        $.ajax(
        {
            url: '/?s=users&ev=ajax_set_default_addr',
            type: 'POST',  
            dataType: 'json',
            data: '&addr_id=' + nAddrID,
            success: function(data)
            {
                if(data.error)
                {
                    alert(data.msg);
                }
                else
                {
                    location.reload();
                    //basket.loadModalContent('/?s=users&ev=ajax_all_addr', null);
                }
            },
            error: function() {
                me.ajaxError();
            }
        });
        
        return false;
    },
    
    addPhone: function()
    {
        this.nPhoneID = 0; 
        
        $('#dialog').html($('#cabinetAddPhone').html()).dialog('open');
        
        return false;
    },
    
    savePhone: function(form_id)
    {
        if(basket.checkForm(form_id)) {
            $.ajax( {
                url: '/?s=users&ev=ajax_save_phone', type: 'POST', dataType: 'json',
                data: $('#basket-add-phone').serialize(),
                success: function(data)
                {
                    if(data.error)
                    {
                        alert(data.msg);
                    }
                    else
                    {
                        location.reload();
                    }
                },
                error: function() { me.ajaxError(); }
            });
        }        
        return false;
    },
    
    delPhone: function(nPhoneID, url)
    {
        me = this;
        
        $.ajax(
        {
            url: '/?s=users&ev=ajax_del_phone',
            type: 'POST',  
            dataType: 'json',
            data: '&phone_id=' + nPhoneID,
            success: function(data)
            {
                if(data.error)
                {
                    alert(data.msg);
                }
                else
                {
                    basket.loadModalContent(url, null);
                }
            },  
            error: function() {
                me.ajaxError();
            }
        });
        
        return false;
    },
    
    setDefaultPhone: function(nPhoneID)
    {
        $.ajax(
        {
            url: '/?s=users&ev=ajax_set_default_phone',
            type: 'POST',  
            dataType: 'json',
            data: '&phone_id=' + nPhoneID,
            success: function(data)
            {
                if(data.error)
                {
                    alert(data.msg);
                }
                else
                {
                    basket.loadModalContent('/?s=users&ev=ajax_all_phone', null);
                    location.reload();
                }
            },  
            error: function() {
                me.ajaxError();
            }
        });
        
        return false;
    },
    
    ajaxError: function()
    {
        alert('Произошла ошибка при передаче данных');
    }

});

var addrC = new $.Addr(); 


//BASKET Controller
$.basket = function (settings)
{    
    this.s = settings;
    this.brand_id = 0;
    this.add_addr_opened = false;
    this.add_phone_opened = false;
};

$.extend($.basket.prototype,
{
    _proccess_order: false,
    sendOrder: function(a)
    {
        var me = this;
        if(me._proccess_order) return false;
        a = $(a);
        var txt = a.html(); a.html('подождите...').css('opacity', 0.5);
        me._proccess_order = true;
        $.ajax( {
            url: '/?s=shoppingcart&ev=makeorder',
            type: 'POST',  
            dataType: 'json',
            data: $('#order_form').serialize(),
            success: function(data)
            {
                 if(data.error)
                 {
                     alert(data.msg);
                     me._proccess_order = false;
                     a.html(txt);
                 }
                 else
                 {           
                     $('#modal-content').html(data.html);
                     me.updateCart(0);
                     //outer all in-basket products
                     $('a[rel^="basket-"].in').removeClass('in').
                        attr('onclick', ''). unbind('click').click(function () { 
                            var nProductID = parseInt( $(this).attr('rel').replace('basket-','') );
                            me.add(nProductID); 
                            return false; 
                        } );
                     me._proccess_order = false;
                 }
            },
            error: function(data)
            {
                alert('Произошла ошибка при передаче данных.');
                me._proccess_order = false;
                a.html(txt);
            }
        });
            
        return false;
    },
    
    help_send: function()
    {
        if(!$('#modal input[id=help_fname]').val())
        {
            alert('Укажите имя');
            $('#modal input[id=help_fname]').focus();
            return false;
        }
        
        if(!$('#modal input[id=help_subject]').val())
        {
            alert('Укажите тему вопроса');
            $('#modal input[id=help_subject]').focus();
            return false;
        }
        
        
        if(!this.isEmail($('#modal input[id=help_email]').val()))
        {
            alert('Укажите корректный Email');
            $('#modal input[id=help_email]').focus();
            return false;
        }
        
        if(!$('#modal textarea[id=help_question]').val())
        {
            alert('Укажите вопрос');
            $('#modal textarea[id=help_question]').focus(); 
            return false;
        }
        
        
        var me = this;
        
        $.ajax(
        {
            url: '/?s=tickets&ev=add_ticket',
            type: 'POST',  
            dataType: 'json',
            data: $('#modal form[id=help_form]').serialize(),
            success: function(data)
            {
                if(data.error)
                {
                    alert(data.msg);
                }
                else
                {
                    me.hideModal();
                }
            },
            error: function()
            {
                me.ajaxError();
            }
        });
        
        return false;
    },
    
    sendInvitation: function ()
    {
        var cnt = 0;
        $('#invitation-form :text').each(function ()
        {
             if(basket.isEmail($(this).val()) == true)
                cnt++;
        });
        
        if(cnt == 0)
        {
           $('#invitation-form :text')[0].focus(); 
        }
        else
        {
            var me = this;
            $.post('/?s=catalog&ev=show_inv_dialog', $('#invitation-form').serialize(),
                function(data)
                {
                    if(!data.error)
                        me.hideModal();
                }
            );
        }

        return false;
    },
    
    updateCart: function( count, total )
    {
        $('[rel=cart_cnt]').html(count);
    },
    
    add: function( productID )
    {
        if(this.sending) return;
        this.sending = true;
        var me = this;
       
        productID = this.checkProductID(productID);
        if(!productID) return;
        
        $.getJSON('/basket?ev=ajax_action&action=add_product',
                  'productID=' +  productID + '&quantity=' + this.getQuantity(productID), 
        
                  function(data)
                  {
                      me.updateCart(data.cart.count, data.cart.total); 
                      me.inBasket(data.pid); 
                      me.sending = false;
                  }
        );
        
        return false;
    },
    
    del: function( productID )
    {
        if(this.sending) return;
        this.sending = true;
        var me = this;
        
        productID = this.checkProductID(productID);
        if(!productID) return;
        
        $.ajax(
        {
            url: '/basket?ev=ajax_action&action=delete_product',
            type: 'POST',  
            dataType: 'json',
            data: 'productID=' + productID,
            success: function(data)
            {
                me.sending = false;
                me.redrawTable('table[rel=basket-listing]');
                me.updateCart(data.cart.count, data.cart.total);

                $('#modal-content').html(data.html.html);
                $('#cabinet-basket').html(data.html.cabinet_html);
                
                if(data.cart.count < 1)
                {
                    $('#make-order-lnk').html('Перейти к каталогу').attr('onclick', '').attr('href', '/catalog/?cmain=' + data.cmain_id);
                }
                
                me.outerBasket(data.id);
                
            },
            error: function(data)
            {
                alert('Произошла ошибка при передаче данных.')
            }
        });

        return false;
    },
    
    inBasket: function(nProductID)
    {
        //ссылки везде
        $('a[rel=basket-' + nProductID + ']').addClass('in').
            attr('onclick', '').
            unbind('click').click(function () { basket.show(); return false; });
        
        //ссылка на странице продукта
        $('a[rel=product-basket-' + nProductID + ']').removeClass('link_intobasketbig').
            addClass('link_inbasketbig').
            attr('onclick', '').
            unbind('click').click(function () { basket.show(); return false; });
    },
    
    outerBasket: function(nProductID)
    {
        $('a[rel=basket-' + nProductID + ']').removeClass('in').
            attr('onclick', '').
            unbind('click').click(function () { basket.add(nProductID); return false; } );
        
        //ссылка на странице продукта 
        $('a[rel=product-basket-' + nProductID + ']').removeClass('link_inbasketbig').
            addClass('link_intobasketbig').
            attr('onclick', '').
            unbind('click').click(function () { basket.add(nProductID); return false; });
    },
    
    checkProductID: function(productID)
    {
        productID = parseInt(productID);
        if(productID <= 0 || isNaN(productID)) 
            return 0;
        
        return productID;
    },
    
    getQuantity: function(productID)
    {
        return 1;
    },
    
    show: function()
    {
        this.loadModalContent('/basket?ev=ajax_show_basket');
        return false;
    },
    
    isEmail: function(item)
    {
        var at="@";
        var dot=".";
        var lat=item.indexOf(at);
        var litem=item.length;
        var ldot=item.indexOf(dot);

           var regx= new RegExp ("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[-0-9a-z_^\\.]+\\.[a-z]{2,6}$", 'i');
           if (!regx.test(item)) {
                   return false;
           }
        if (item.indexOf(at)==-1) return false;
        if (item.indexOf(at)==-1 || item.indexOf(at)==0 || item.indexOf(at)==litem) return false;
        if (item.indexOf(dot)==-1 || item.indexOf(dot)==0 || item.indexOf(dot) >= litem - 2) return false;
        if (item.indexOf(at,(lat+1))!=-1) return false;
        if (item.substring(lat-1,lat)==dot || item.substring(lat+1,lat+2)==dot) return false;
        if (item.indexOf(dot,(lat+2))==-1) return false;
        if (item.indexOf(" ")!=-1)  return false;

        return true;
    },
    
    redrawTable: function(selector)
    {
        $(selector + ' tr:gt(0)').each(function (i)
        {
            $(this).removeClass();
            $(this).addClass('r' + (i % 2));
        });
    },
    
    productShort: function(pid)
    {
        this.loadModalContent('/?s=catalog&ev=preview_product', 'p=' + pid + catalog_link);
        return false;
    },
    
    ajaxError: function()
    {
        alert('Произошла ошибка при передаче данных');
    },
    
    loadModalContent: function(url, data, callback)
    {
        var self = this; 

        if( $('#mask').css({'width':$(window).width(),'height':$(document).height()}).is(':hidden') )
            $('#mask, #loader').show();
                        
        $.getJSON(url, data,
            function(data)
                {
                    $('#modal-content').html(data.html);
                    $('#modal-content form.niceform').jForms({'zIndex': 10000});
                    jFormsHideSelects();           
                    
                    if(callback!=null) eval(callback);    
                                        
                    $('#loader').hide();
                    $('#modal-content').show();  
                    
                    self.showModal();  
                    //return;
                    //init close button
                    $('#modal-content a[rel=close]').unbind('click').bind('click', function (e) {
                       e.preventDefault();
                       self.hideModal();
                    });
                    
                    modalOpened = true; 

                }
            );       
        return false;
    },
    
    showModal: function ()
    {
        var dHeight = $(document).height();
        var w = $(window);
        var wWidth = w.width();
        var wHeight = w.height();
        var mask = $('#mask');

//        if(mask.css({'width':wWidth,'height':dHeight}).is(':hidden'))
//            mask.fadeIn('normal');
        
        var modal = $('#modal');
        {  
            var _w = modal.outerWidth();
            if (wWidth < _w) {
                _w = wWidth - 100;
                modal.width(_w);
            }
                              
            var _h = modal.outerHeight();
            //console.log({h:_h, wh: wHeight});
            if((_h+50)>wHeight || $.browser.msie) {  
                modal.css({'top': (wHeight <= (_h+20) ? w.scrollTop() + 30 : (wHeight/2.3-_h/2 + w.scrollTop())),
                     'left': (w.width()/2-_w/2), 
                     'position':"absolute", "margin-left": "auto", "margin-top": "auto"});
                
            } else {                                
                modal.css({"margin-left": - (_w / 2), "top":"50%", "left":"50%", "position":"fixed"});
                if (wHeight < _h) {
                    _h = wHeight - 100;
                    //modal.height(_h);
                }
                modal.css("margin-top", - (_h / 2));
            }

            //css('top',  ( wHeight <= height() ? w.scrollTop() + 10 : w.scrollTop() + 90 ) );
            //css('left', ( wWidth/2 - (width()/2) ) );
            modal.fadeIn('normal'); 
        }
        
        var me = this;
        mask.click(function () {
            me.hideModal();
        });
    },
    
    hideModal: function ()
    {
        $('#modal').fadeOut('fast'); //, #modal-content
        $('#mask, #loader').hide();
        modalOpened = false;    
        jFormsHideSelects(); 
    },
    
    stepBack: function ()
    {
        $('#modal-content').html(this.modalContent);
        return false;
    },
    
    saveModal: function ()
    {
        this.modalContent = $('#modal-content').html();
    },
    
    saveAddr: function(form_id)
    {
        me = this;
        var bError = false;
        
        if(basket.checkForm('#basket-add-addr'))
        {
            $.ajax(
            {
                url: '/?s=users&ev=ajax_saveAddr',
                type: 'POST',  
                dataType: 'json',
                data: $('#modal form[id=' + form_id + ']').serialize(),
                success: function(data)
                {
                    me.add_addr_opened = false;
                    if(data.error)
                    {
                        alert(data.msg);
                    }
                    else
                    {
                        if(data.reload)
                        {
                            location.reload();
                        }
                        else
                        {
                                me.loadModalContent('/?s=shoppingcart&ev=ajax_order_steps', 'step=5');
//                                me.fillAddrInputs(data.zip, data.country, data.city, data.addr);
                        }
//                        $('#modal-content').html(data.html);
                        
                    }
                },
                
                error: function()
                {
                    me.ajaxError()
                }
            });
        }
            
        return false;
    },
    
    saveAddrAnonym: function(step, savephone)
    {
        if(basket.checkForm('#basket-add-addr'))
        {
            if(savephone!=undefined)
                $('#order-field-phone').val( $('#basket-add-addr input[name=phone]').val() );
                
            basket.fillAddrInputs($('#basket-add-addr input[name=zip]').val(), $('#basket-add-addr select[name=country]').val(), $('#basket-add-addr input[name=city]').val(), $('#basket-add-addr input[name=adress]').val(), $('#basket-add-addr input[name=flat]').val(), $('#basket-add-addr input[name=username]').val()); 
            basket.loadModalContent('/?s=shoppingcart&ev=ajax_order_steps', $('#order_form').serialize() + '&step=' + step);
        }
    },
    
    savePhone: function(form_id)
    {
        if(basket.checkForm(form_id))
        {
            $('#order-field-phone').val($('#basket-phone').val());
            
            $.ajax(
            {
                url: '/?s=users&ev=ajax_save_phone',
                type: 'POST',  
                dataType: 'json',
                data: $('#order_form').serialize(),
                success: function(data)
                {
                    if(data.error)
                    {
                        alert(data.msg);
                    }
                    else
                    {
                        if(data.reload)
                        {
                            location.reload();
                        }
                        else
                        {
                            $('#modal-content').html(data.html);                        
                            $('#order-field-phone').val(data.phone);
                        }
                    }
                },
                
                error: function()
                {
                    me.ajaxError()
                }
            });
        }
        
        return false;
    },
    
    fillAddrInputs: function(zip, country, city, addr, flat, name)
    {
        $('#order-field-fname').val(name);
        $('#order-field-zip').val(zip);
        $('#order-field-country').val(country);
        $('#order-field-city').val(city);
        $('#order-field-addr').val(addr);
        $('#order-field-flat').val(flat);
        
        return false;
    },
    
    ajaxReg: function()
    {
        var me = this;
        
        if(this.checkForm('#basket-reg'))
        {
            $.ajax(
            {
                url: '/?s=users&ev=ajax_add_user',
                type: 'POST',  
                dataType: 'json',
                data: $('#basket-reg').serialize(),
                success: function(data)
                {
                     if(data.error)
                     {
                         alert(data.msg);
                     }
                     else
                     {
                         if(data.reload) location = '/cabinet/';
                         else
                         {
                             $('#modal-content').html(data.html); 
                             me.updateHeader();
                         } 
                     }
                },
                error: function(data)
                {
                    alert('Произошла ошибка при передаче данных.')
                }
            });
        }
        return false;
    },
    
    login: function ()
    {
        if(this.checkForm('#basket-login-form'))
        {
            var me = this;
            $.ajax(
            {
                url: '/?s=users&ev=login',
                type: 'POST',  
                dataType: 'json',
                data: $('#basket-login-form').serialize(),
                success: function(data)
                {
                     if(data.error)
                     {
                         $('#basket-login-form td[rel=notempty]').each(function () { $(this).css('color', '#F00') });
                     }
                     else
                     {
                         if(data.reload) location.reload();
                         else
                         {
                             $('#modal-content').html(data.html);
                             me.updateHeader();
                         } 
                     }
                },
                error: function(data)
                {
                    alert('Произошла ошибка при передаче данных.')
                }
            }); 
        }
        
        return false;
    },

    forgot: function ()
    {
        if(this.checkForm('#basket-forgot-form'))
        {
            var me = this;
            $.ajax(
            {
                url: '/?s=users&ev=forgot',
                type: 'POST',  
                dataType: 'json',
                data: $('#basket-forgot-form').serialize(),
                success: function(data)
                {
                     if(data.error)
                     {
                        if(data.msg)    
                            $('#forgot-result').hide().css('color', 'red').html(data.msg).fadeIn('slow');
                     }
                     else
                     {
                        if(data.msg)    
                            $('#forgot-result').hide().css('color', '').html(data.msg).fadeIn('slow');
                        
                        setTimeout(function(){ basket.hideModal(); }, 2000);
                     }
                },
                error: function(data)
                {
                    alert('Произошла ошибка при передаче данных.')
                }
            }); 
        }
        
        return false;
    },
    
    updateHeader: function ()
    {
        $('#topmenu').css('width', '390px');
        $('#login-link').html('выйти').attr('href', '/logout/').attr('onclick', '');
        $('#reg-link').html('кабинет').attr('href', '/cabinet/').attr('onclick', '');
    },
    
    checkForm: function(frm)
    {
        ok = true;
        
        $(frm + ' td[rel=notempty]').each(function () { $(this).css('color', '#999999') });
        me = this;                                                          
        
        $(frm + ' input[rel=notempty]').each(function() {
            if($(this).attr('name') == 'email')
                {
                if(!me.isEmail($(this).val()))
                {
                    $(this).parent().parent().find('td[rel=notempty]').css('color', '#FF0000');      
                    ok = false;
                }
            }
            else if(!$(this).val())
            {
                $(this).parent().parent().find('td[rel=notempty]').css('color', '#FF0000');      
                ok = false;
            }
        });
        
        return ok;
    }
});

var basket = new $.basket(); 
var currPage = '#subcontent';

$.cSearch = function()
{    
    this.f = {cmain: '0', type: '0', csub: '0', effect: '0'};
};

$.extend($.cSearch.prototype,
{
    setOption: function(step)
    {
        var val = $('#search-'+step).val();
        switch(step)
        {
            case 'cmain':
            {
                this.f.cmain = val;
                if(this.f.cmain == '0') return;
                
                $('#search-type-block, #search-csub-block, #search-effect-block').hide();
                
                this.data = 'return=type&step=cmain&cmain=' + this.f.cmain;
                    
            } break;            
            case 'type':
            {
                this.f.type = val;
                if(this.f.type == '0') return;
                
                $('#search-csub-block, #search-effect-block').hide();
                
                this.data = 'return=type&step=type&cmain=' + this.f.cmain + '&type=' + this.f.type;
                
            } break;
            case 'csub':
            {
                this.f.csub = val;
                if(this.f.csub == '0') return;
                
                $('#search-effect-block').hide();
                
                this.data = 'return=effect&step=csub&cmain='+this.f.cmain+'&type='+this.f.type+'&csub='+this.f.csub;
                
            } break;
            case 'effect':
            {
                this.f.effect = val;
                return;
            } break;
        }                    
        
        this.loadOptions();
    },
    
    loadOptions: function()
    {
        me = this;
        $.ajax( {
            url: '/get_catalog_ajax',
            type: 'POST',  
            dataType: 'json',
            data: this.data,
            success: function(data)
            {
                if(data.error)
                {
                    alert(data.msg);
                }
                else
                {
                    target = 'search-'+data.type;
                    jFormsUpdateSelectOptions(target, data.options);
                    if(!data.empty) {
                        $('#'+target+'-block').show();
                    } else {
                        $('#'+target+'-block').hide();
                    }
                    //console.log(data);                 
                }
            },
            
            error: function()
            {
                me.ajaxError()
            }
        });
    },
    
    ajaxError: function()
    {
        alert('Произошла ошибка при передаче данных');
    }
});

var oSearch = new $.cSearch();

function initSubtitleHovers()
{
    $('#main_menu span').css('cursor', 'pointer');
    
    $('#main_menu li').mouseover(function ()
    { 
        $(this).find('li,a,label,span').addClass('active'); 
    
    }).mouseout(function ()
    {
        if($(this).attr('class') != 'active')
        {
            $(this).find('li,a,label,span').removeClass('active'); 
        }
    });
    
    $('#main_menu li span').unbind('click').click(function ()
    {
        var a = $(this).prev('label').find('a');
        var patt = /[#]/;

        if(patt.test(a.attr('href'))) {
            a.click();
        }
        else {
            location = a.attr('href');
        }
    });
}

MM_preloadImages([
            '/img/main_menu_item_bg_nactive.gif',
            '/img/na_catalog.gif',
            '/img/na_brands.gif',
            '/img/arrow_2_left.gif',
            '/img/arrow_2_right.gif'
            ]);

menu_collapse_tip_img = '/img/short.png';

$(document).ready( function () {
    simple_tooltip('[rel=tooltip]','tooltip');
    simple_tooltip_menu('[rel=tooltip_menu]','tooltip_menu', menu_collapse_tip_img);
    simple_tooltip('[rel=tooltip_more]','tooltip_more', '/img/more.png');
    
    initSubtitleHovers();
    
    
    
    //menu-collapse: catalog-menu-brand
    
    $('#catalog-menu-brand > div.title > a').live('click', function(){
        var brandsList = $('#brand-list');  
        var lnk = $(this);
        
        $(this).parent().toggleClass('na_title').toggleClass('na_brands');

        brandsList.slideToggle('normal', function ()
        {
            if(lnk.attr('class') == 'mouseover')
            {
                if(brandsList.is(':hidden')) 
                {
                    $('#tooltip_menu').fadeIn();
                }
                else
                {
                    $('#tooltip_menu').fadeOut();
                }
            }
        });
        
        return false;
    }).live('mouseover', function () { $(this).addClass('mouseover'); }).live('mouseout', function () { $(this).removeClass('mouseover'); });
    
    //menu-collapse: catalog-menu-cmain
    var cmainsList = $('#cmains-list');
    $('#catalog-menu-cmain > div.title > a').live('click', function(){
        $(this).parent().toggleClass('na_title').toggleClass('na_catalog');
        var lnk = $(this);
        
        $('#cmains-list').slideToggle('normal', function () 
        {
            if(lnk.attr('class') == 'mouseover')
            {
                if($('#cmains-list').is(':hidden')) 
                {
                    $('#tooltip_menu').fadeIn();
                }
                else
                {
                    $('#tooltip_menu').fadeOut();
                }
            }
        });
        
        $('#catalog-rest').slideToggle();
        return false;
    }).live('mouseover', function () { $(this).addClass('mouseover'); }).live('mouseout', function () { $(this).removeClass('mouseover'); });
    //arrows
      
    //init modal window "close button"
    $('#modal-content a[rel=close]').live('click', function (e) {
       e.preventDefault();
       basket.hideModal();
    });
    
    
    $('a[href=#basket]').click( function (a)
    {
        a.preventDefault();
        basket.show();
    });

});

//Function indexOf for fucking IE!!! 
if (typeof Array.prototype.indexOf == "undefined") {
  Array.prototype.indexOf = function(value) {
    for (var i = 0; i < this.length; i++)
      if (this[i] == value)
        return i;

    return -1;
  }
}
     
//catalog
function lnksController(options){  var me = this; $(document).ready( function(){ me.initialize( options ); } ); }
lnksController.prototype = 
{                         
    inited: false, filter: {}, order: [], options: {},
    initialize: function(opts)
    {
        this.options = $.extend({url: '', view: 'main-catalog', 'url_static': '/get_catalog_static'}, opts);
        this.filter = this.options.filter || {};
        this.order  = ['line', 'brand', 'cmain','type','csub','effect'];
        this.inited = true;
    },
    update: function()
    {
        if(!this.inited) return;
        //update links
        var me = this;

        bff.ajax(this.options.url, this.filter, function(data)
        {        
            if(data.errno == 1) {                              
                 if(data.cmains) {
                     $('#cmains-list').html(data.cmains);
                 }
                 if(data.types) {
                     $('#catalog-menu-type').html(data.types).show(); 
                 }
                 if(data.csubs) {
                     $('#catalog-menu-csub').html(data.csubs).show();
                     bbScrollmenu.start($('#catalog-menu-csub'));  
                 }
                 if(data.effects) {
                     $('#catalog-menu-effect').html(data.effects).show();
                     bbScrollmenu.start($('#catalog-menu-effect'));  
                 }

                 if(me.options.view != 'brands' && data.brands) {
                    //прячем бренды
                    $('#brands li').hide();

                    $.each(data.brands, function(){
                        $('#brands #brand' + this).show();
                    });
                   
                 } else if(me.filter.step=='cmain') {
                    //если изменили применение, вновь показываем все бренды
                    $('#catalog-menu-brand-data a').show();
                 } 
            }
            
            catalog_link = data.filter.link;
            $('#catalog').html(data.products);
            $('#catalog-loading').hide();
            simple_tooltip('[rel=tooltip]','tooltip');
            simple_tooltip_menu('[rel=tooltip_menu]','tooltip_menu', menu_collapse_tip_img);
            initSubtitleHovers();
//            initLineScroll();
            bbScrollmenu.start($('#catalog-menu-brand'));  
            
        });

        document.location.hash = this.obj2query(this.filter);
    },
    
    crab: function()
    {
        $.get(this.options.url_static, this.filter, function(data)
        {    
            if(!data.error) {                       
                
                $('#catalog').html(data.catalog_html);
                $('#catalog-loading').hide();
                $('#main_menu').html(data.menu_html);
                lines = data.lines;
            }
            
            simple_tooltip('[rel=tooltip]','tooltip');
            simple_tooltip_menu('[rel=tooltip_menu]','tooltip_menu', menu_collapse_tip_img);
            initSubtitleHovers();

            //bbScrollmenu.start($('#catalog-menu-brand'));
            bbScrollmenu.start($('#catalog-menu-csub'));  
            bbScrollmenu.start($('#catalog-menu-type'));  
            bbScrollmenu.start($('#catalog-menu-effect'));
            bbScrollmenu.start($('#catalog-menu-cmain'));  
            
            //initLineScroll();
        }, 'json');
    },
    
    set: function(id, type, anchor, title)
    {
        this.filter[type] = id;
        this.filter.step  = type; 

        $('#catalog-menu-' + type + ' a, #catalog-menu-' + type + ' li, #catalog-menu-' + type + ' label, #catalog-menu-' + type + ' span').removeClass('active');
        
        $(anchor).addClass('active').parents('li,label').addClass('active');
        
        //прячем блоки ниже выбранного
        var me = this;

        var blocksHide = this.order.slice(this.order.indexOf(type)+1);
        jQuery.each(blocksHide, function(){ $('#catalog-menu-'+this).hide(); delete me.filter[this]; }); 
        $('#catalog').html(loading_message || '');
        
        this.update();
    },
    obj2query: function(obj)
    {
       var query = [];
       for (var key in obj) {
         if(obj[key] == 0 || obj[key] === undefined || obj[key] === null || typeof(obj[key]) == 'function') continue;
         query.push(encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]));
       }
       return query.join('&');
    }
};

function scrollController(options){ this.initialize( options ); }
scrollController.prototype = {

    speed: 500, easing: '', step: 300, scrolling: false,
    initialize: function( options ){
       var t = this;  
       $('div.scrollmenu:visible').each(function(){  
           if($(this).attr('id') != 'catalog-menu-brand') {
                // console.log( $(this) );
                t.start( $(this) );
           }
       });
    },
    
    start: function( dv ) {
        var liWidth = 0;
        var separatorWidth = 12; 
        var li = dv.find('li:visible');
        li.each(function () { liWidth += $(this).width(); });
        
        var scrollContent = dv.find('div.scrollmenu_content');
        liWidth = ((liWidth + (li.size() * separatorWidth)) - separatorWidth) / 1.8; 

        if(liWidth > 920) {
            scrollContent.css('width', liWidth);
            dv.find('.pleft').bind('click', function(){  this.left( scrollContent ); }.bind(this)).show();
            dv.find('.pright').bind('click', function(){ 
                    var maxright = (scrollContent.width() - 920);
                    this.right( scrollContent, maxright ); }.bind(this)).show();
        } else {
            dv.find('.pright, .pleft').unbind('click').hide();
        }
    },
    
    left: function( dv ){
        var pLeft = parseInt(dv.css('left')) + this.step;
        if(pLeft <= 0 && !this.scrolling)
        {
            this.scrolling = true;
            dv.animate({left: pLeft}, this.speed, this.easing, function(){ this.scrolling = false; }.bind(this) );          
        }
        else
        {
            this.scrolling = true;
            dv.animate({left: 0}, this.speed, this.easing, function(){ this.scrolling = false; }.bind(this) );          
        }  
    },
    
    right: function( dv, maxright ){
        var pLeft =  parseInt(dv.css('left')) - this.step;
        
        if(Math.abs(pLeft) > maxright)
        {
//            pLeft = Math.ceil(parseInt(dv.css('left'))) - maxright - parseInt(dv.css('left'));
            pLeft = -(maxright);
            
            dv.animate({left: pLeft}, this.speed, this.easing, function(){ this.scrolling = false; }.bind(this) );
            return;
        }
           
        if( Math.abs(pLeft) <= maxright && !this.scrolling)
        {
            this.scrolling = true;
            dv.animate({left: pLeft}, this.speed, this.easing, function(){ this.scrolling = false; }.bind(this) );
        }
    }
};

function fruitsController(current){ this.initialize( current ); }
fruitsController.prototype = {
    first: 1, last:38, prev:0, current:0, ext: '.jpg', path: '/img/fruits/', movers: 0, order: [], preloadLimit: 4,
    initialize: function( current ){

        for(var i= this.first; i<=this.last; i++)
            this.order.push(i);
        this.order = this.shuffle(this.order); 
          
        var me = this;
        //preload images
        $(window).bind('load', function (){
            me.preloadNext(0,1);
        });

        //листалка фруктов в шапке
        $(document).ready(function(){       
            $('#fruit').mouseover( function () { 
                me.movers++;   
                if(me.movers < 7)
                {
                   me.current = me.order[me.prev++];
                   if(me.movers == 1 && me.current == current)
                        me.current = me.order[me.prev++];
                   
                   $(this).attr('src', me.path + me.current + me.ext);     
                   me.preloadNext(me.movers, 1500);
                } else {
                    me.current = Math.floor(Math.random() * me.last);
                    while(me.current == me.prev || !me.current)
                        me.current = Math.floor(Math.random() * me.last);
                    $(this).attr('src', me.path + me.current + me.ext);
                    me.prev = me.current;                        
                }                   
            }); 
        });
    },
    
    preloadNext: function(pos, timeout){
        setTimeout(function(){
            var preload = [], start = pos * this.preloadLimit;
            var finish = start + this.preloadLimit;
            if(finish > this.last) finish = this.last;
            for(var i=start; i<finish; i++)
                preload.push(this.path + this.order[i] + this.ext);
            MM_preloadImages(preload); 
        }.bind(this), timeout);       
    },
    
    shuffle: function( arr, b ) {
        var i = arr.length, j, t;
        while( i ) {
        j = Math.floor( ( i-- ) * Math.random() );
        t = arr[i];
        arr[i] = arr[j];
        arr[j] = t;
        }
        return arr;
    }
};

$.cUser = function (settings)
{    
    this.s = settings;
};

$.extend($.cUser.prototype,
{
    register: function(url)
    {
        var bError = false;

        if(basket.checkForm('#reg-form'))
        {
            var me = this;
            $.ajax(
            {
                url: url,
                type: 'POST',  
                dataType: 'json',
                data: $('#reg-form').serialize(),
                success: function(data)
                {
                     if(data.error)
                     {
                         alert(data.msg);
                     }
                     else
                     {
                         location = '/cabinet/';
                     }
                },
                error: function(data)
                {
                    me.ajaxError();
                }
            });
        }
        
        return false;
    },
    
    ajaxError: function(data)
    {
        alert('Произошла ошибка при передаче данных.')
    }
});

var cUser = new $.cUser();  

function toggleOffers(show, hide, anchor)
{
    $('#' + hide + '-items-block .additions .item a').removeClass('active');
    $(anchor).addClass('active');
    
    $('div[rel=' + hide + ']').hide();
    $(show).show();
    
    return false;
}

//not in use
function toggleMenu(link, cls, list)
{
    return false;
}

BSUploadPhotos = 
{
    createUploadIframe: function(id, params, uri)
    {
        var frameId = 'ifr_'+id;
        if(window.ActiveXObject) 
        {
            tagName = '<iframe name="' + frameId + '">';
            io = document.createElement(tagName);
            
            io.id = frameId;
            io.name = frameId;

            if(typeof uri== 'boolean'){
                io.setAttribute('src', 'javascript:;'); 
            }
            else if(typeof uri== 'string'){
                io.src = uri;
            }
        }
        else
        {
            var io = document.createElement('iframe');
            io.id = frameId;
            io.name = frameId;
        }

        if ( (!!(window.attachEvent && navigator.userAgent.indexOf('Opera') === -1)) ||  //is IE
             navigator.userAgent.indexOf('Opera') > -1) //is OPERA
             io.src = 'javascript:false;document.write("");';
        
        io.style.position = 'absolute';
        io.style.top = '-1000px';
        io.style.left = '-1000px';

        document.body.appendChild(io);
        
        if (params && typeof(params.onComplete) == 'function') {
            io.onComplete = params.onComplete;
        }

        return io;
    },
    
    doUpload: function(form, params)
    {
        if(!$('input[type=file]').val()) return;
        
        if (params && typeof(params.onStart) == 'function') {
            params.onStart();
        }

        var id = Math.floor(Math.random() * 99999);
        var io = BSUploadPhotos.createUploadIframe(id, params, false);

        //save prev form attributes
        try { 
            var prev_action   = form.action;
            var prev_method   = form.method;
            var prev_target   = form.target;
            var prev_encoding = (form.encoding ? form.encoding : form.enctype );   //enctype="multipart/form-data"
        } 
        catch(e) {
          BSUploadPhotos.showErrorInfo(e);
        }
            
        form.action = params.url;
        form.method = 'POST';
        form.target = io.id;
        
        if(form.encoding)
            form.encoding = 'multipart/form-data';
        else
            form.enctype = 'multipart/form-data';
            
        var uploadCallback = function()
        {
            io.detachEvent ? io.detachEvent('onload', uploadCallback) : io.removeEventListener('load', uploadCallback, false);

            var operaHack = 0;          
            try {
                var doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;
                                
                if ( doc.body == null && !operaHack && navigator.userAgent.indexOf('Opera') > -1 ) 
                {
                    // In Opera 9.2.x the iframe DOM is not always traversable when
                    // the onload callback fires so we give Opera 150ms to right itself
                    operaHack = 1; 
                    setTimeout(uploadCallback, 150);
                    return;
                }

                if (typeof(io.onComplete) == 'function')
                {   
                    var responseText = doc.body ? doc.body.innerHTML : null;
                    io.onComplete( responseText );  
                }
                
                // clean up
                setTimeout(function() { document.body.removeChild(io); }, 100);
                
                //return prev form attributes
                form.action = prev_action;
                form.method = prev_method;
                form.target = prev_target;
                if(form.encoding)
                    form.encoding = prev_encoding;
                else
                    form.enctype  = prev_encoding;            
            }
            catch(e)
            {
              BSUploadPhotos.showErrorInfo(e);
            }
            
        }
                
        //attach onload event
        io.attachEvent ? io.attachEvent('onload', uploadCallback) : io.addEventListener('load', uploadCallback, false);

        form.submit();
    }
}

function simple_tooltip(target_items, name, imgsrc)
{
    imgsrc = imgsrc || '/img/short.png';
    $('body').append('<div class="tooltip" id="' + name + '" style="display: none;"><img src="'+imgsrc+'" alt="" /></div>');
    
    var my_tooltip = $('#' + name);
   
    $(target_items).mouseover(function()
     {
         if(my_tooltip.is(':animated')) my_tooltip.stop();
         my_tooltip.css({opacity:1}).fadeIn('fast'); 
     }).mousemove(function(kmouse)
     {
        my_tooltip.css({left:kmouse.pageX+15, top:kmouse.pageY+15});
     }).mouseout(function()
     {
        my_tooltip.fadeOut('fast');
     });
}

function simple_tooltip_menu(target_items, name, imgsrc)
{
    imgsrc = imgsrc || '/img/short.png';
    
    $('#main_menu').append('<div class="notice_open" id="' + name + '" style="display: none;"><a href="#">раскрыть</a></div>');

    var my_tooltip = $('#' + name);
   
    $(target_items).live('mouseover', function()
     {  
         if($(this).parent().next().is(':hidden'))
         {
             if(my_tooltip.is(':animated')) my_tooltip.stop();
             my_tooltip.css({opacity:1}).fadeIn('fast'); 
         }
     }).mousemove(function(kmouse)
     {
        my_tooltip.css({left:kmouse.pageX+15, top:kmouse.pageY+15});
     }).mouseout(function()
     {
        my_tooltip.fadeOut('fast');
     });
}

function MM_preloadImages(arr) {
    var d = document, w = window;
    
    if(!d.MM_p) d.MM_p=new Array();
    var i,j = d.MM_p.length, a = arr;

    for(i=0; i<a.length; i++)
    {
       d.MM_p[j]= ( w.Image ? (new Image()) : document.createElement('img') ); d.MM_p[j++].src=a[i];  
    }
}

function setCookie(c_name, value, expiredays)
{
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + expiredays);
    document.cookie = c_name + "=" + escape(value) +
    ((expiredays == null) ? "" : ";expires="+exdate.toGMTString());
}
   
function getCookie(c_name)
{
   if (document.cookie.length>0)
   {
       c_start = document.cookie.indexOf(c_name + "=");
       
       if (c_start!=-1)
       {
           c_start = c_start + c_name.length+1;
           c_end = document.cookie.indexOf(";",c_start);
           
           if (c_end == -1) c_end = document.cookie.length;
           
           return unescape(document.cookie.substring(c_start, c_end));
       }
   }
   return;
}

function onQtyChange(inp, pid, popup)
{
    var qty = parseInt(inp.value);
    if(qty <= 0 || isNaN(qty) ) {
        inp.value = qty = 1;
    }
    
    pid = parseInt(pid);
    if(pid<=0 || isNaN(pid)) 
        return;
    
    if(popup == 1) {
        $.getJSON('/basket?ev=ajax_action&action=add_product', 'productID='+ pid+'&quantity='+ qty, 
              function(data)
              {
                  basket.updateCart(data.cart.count, data.cart.total); 
                  basket.sending = false;
                  basket.loadModalContent('/basket?ev=ajax_show_basket');
              }
        );
    } else {
        $.getJSON('/basket?ev=ajax_action&action=add_product_cabinet', 'productID='+ pid+'&quantity='+ qty, 
              function(data)
              {
                  basket.updateCart(data.cart.count, data.cart.total); 
                  basket.sending = false;
                  $('#cabinet-basket').html( data.items );
              }
        );
    }
}

