var pressCorner = {};

(function($) {
    var W = window, $W = box.dom(W), D = W.document, $D = box.dom(D),
        $userPanel;
    
    var menus = function() {
        
        pressCorner.logged = false;
        if ($('body').hasClass('logged')) {
            pressCorner.logged = true;
        }
        
        var navig = (function() {
            var $toggler = box.dom('nav.main').find('li').eq(0),
                $navig = box.dom('nav.main').find('li ul'),
                height = $navig.getHeight('padding-box');
            
            $navig.css({'height': 0, 'left': 0});
            
            var open = function() {
                $toggler.addClass('opened');
                $navig.stop().animate({'height': height}, 400);   
            };
            
            var close = function() {
                $navig.stop().animate({'height': 0}, 400, function() {
                    $toggler.removeClass('opened');
                });
            };
            
            $toggler.mouseenter(function() {
                open();
            }).mouseleave(function() {
                close();
            }).click(function(e) {
                if (e.target.nodeName.toLowerCase() !== 'a') {
                    e.preventDefault();
                    if ($(this).hasClass('opened')) {
                        close();
                    } else {
                        open();
                    }
                }                
            });
        })();
        
        pressCorner.userPanel = {};
        var userMenu = (function() {
            var $userMenu = box.dom('#userMenu');
            
            $userPanel = $userMenu.find('#userPanel');

            var $userNav = $userMenu.find('nav'),
                $openBtn = $userNav.find('.open'),
                $btns = $userNav.find('a:not(.logOut)'),
                $closeBtn = $userPanel.find('.close'),
                $btnsLogOut = $userNav.find('a.logOut');
                
    
            $userPanel.css({'top' : 0});
            
            var start = 0, end;
            /*if (pressCorner.logged) {
                start = $userNav.height();
            }*/
            
            var close = function() {
                $openBtn.removeClass('close').addClass('open');
                $userPanel.stop().animate({'top' : end}, 400, function() {
                    $(this).removeClass('on');
                    $userMenu.removeClass('on');
                });
                box.get('ui:loader.generic').hide().remove();
            };
            pressCorner.userPanel.close = close;
            
            var open = function() {
                if (pressCorner.logged) {
                    pressCorner.closeAddItemToBasket();
                }
                
                $userPanel = $userMenu.find('#userPanel');
                $closeBtn = $userPanel.find('.close');
                
                $openBtn.removeClass('open').addClass('close');
                $userMenu.addClass('on');
                end = 0 - $userPanel.getHeight('padding-box');
                
                box.get('ui:loader.generic').hide().remove();
                $userPanel.css({top: end}).addClass('on').stop().animate({'top' : start}, 400);
                
                $closeBtn.click(function(e) {
                    e.preventDefault();
                    close();
                });
            };
            pressCorner.userPanel.open = open;
            
            var updateUserPanel = function($element) {
                var url = $element.attr('href');

                $.ajax({
                    cache : false,
                    dataType : 'html',
                    url : url,
                    success : function(data) {
                        box.publish({
                            type: 'success',
                            label : 'userPanel',
                            data : data
                        });
                    },
                    error : function(xhr) {
                        box.publish({
                            type: 'error',
                            label : 'userPanel',
                            data : xhr
                        });
                    }
                });  
            };
            pressCorner.userPanel.update = updateUserPanel;
    
            $btns.click(function(e) {
                e.preventDefault();
                box.get('ui:loader.generic').show();
                
                if (!$userPanel.hasClass('on')) {
                    if (pressCorner.logged) {
                        updateUserPanel($(this));
                    } else {
                        open();
                    }
                } else {
                    close();
                }
            });
            
            $btnsLogOut.click(function(e){
            	e.preventDefault();
            	
            	$.ajax({
            		  url: $(this).attr('href'),
            		  success: function(){
            		    window.location.reload();
            		  }
            		});
            });
            
            if (pressCorner.logged) {
                var $alertDefault = $('#alertDefault'),
                    $alertHelp = $alertDefault.find('#alertHelp');
                
                $alertDefault.find('.questions').click(function(e) {
                    $alertHelp.addClass('on');
                });
                $alertHelp.find('a.close').click(function(e) {
                    $alertHelp.removeClass('on');
                });
            }
            
            box.subscribe({
                name : 'ready>userPanel',
                handler : function(e) {
                 
                    $userPanel.remove();
                    
                    $userMenu.append(e.data);
                    
                    /*if (box.get('ui:scroll.basketItems') !== null) {
                        box.get('ui:scroll.basketItems').boxDestroy();
                    }
                    box.get('ui').create('scroll.basketItems', {
                        rootElm : '#basketItems',
                        buttons : false
                    });*/
                    $('#basketItems').find('.scrollbar').addClass('dynBgColor2').find('.bar').addClass('dynBgColor1');
                    
                    open();
                }
            }, {
                name : 'beforeopen>ui:popin',
                handler : function() {
                    if (pressCorner.logged) {
                        pressCorner.closeAddItemToBasket();
                    }
                }
            }, {
                name : 'beforeclose>ui:popin',
                handler : function() {
                    if (pressCorner.logged) {
                        pressCorner.closeAddItemToBasket();
                    }
                }
            }, {
                name : 'beforeopen>ui:popin.generic.more',
                handler : function(e) {
                    var itemId = e.source.datas.opener.closest('.item').data('item-id');
                    e.source.datas.method = 'POST';
                    e.source.datas.params = {
                        'itemId' : itemId
                    };
                }
            });
        })();
    };
    
    $D.ready(function() {
        
        box.get('ui').create('mask.generic', {
            html: '<div id="popinMask"></div>',
            insertStyles: {opacity: 0, width: 'viewport:content-box', height: 'document:content-box'},
            insertAnimDuration: 200,
            removeAnimDuration: 150,
            resizeStyles: {width: 'viewport:content-box', height: 'document:content-box'}
        });
        
        box.get('ui').create('loader.generic', {
            html: '<div id="popinLoader"></div>',
            insertStyles: {opacity: 1, top: 'viewport:middle', left: 'viewport:middle'}
        });
        
        box.get('ui').create('popin.generic', {
            loader: 'generic',
            mask: 'generic',
            
            insertStyles: {top: 'viewport:before', left: 'viewport:middle', 'min-left': 0},
            insertAnimStyles: {top: 'viewport:middle', 'min-top': 0},
            insertAnimDuration: 600,
            removeAnimStyles: {top: 'viewport:before'},
            removeAnimDuration: 500
        });
        
        box.get('util:delegate-click').add({
            id : 'itemActions.addItemToBasket',
            root : 'body',
            deepness : 3,
            test : function(element) {
                return (element.className.indexOf('addToBasket') > -1);
            },

            handler : function(eObj, element) {
                eObj.preventDefault();
                if (pressCorner.logged) {
                    // see basket.js
                    box.publish({
                        type : 'request',
                        label : 'addItemToBasket',
                        source : $(element)
                    })
                } else {
                    return false;
                }
            }
        });
        
        menus();
    });

    $W.load(function() {
        var imgSrc = $('#content').data('background');
        if (imgSrc) {
            $('#page').after('<div id="bgImage" />');
            var $bgImage = $('#bgImage');
            $bgImage.css({'opacity' : 0});
            $bgImage.append('<img src="' + imgSrc + '" alt="">').animate({'opacity' : 1}, 300);
        }
    });
})(jQuery);

