
var menu = new function(){
    var _this = this;
    this.init = function(){
        _this.prepare();
        _this.setDefaultBackground.call(_this);
    };
    this.flatApps = {};
    
    this.prepare = function(){
        $('#mainmenu > li').click(this.onMenuItemClick);
        $('.submenu li').mouseover(this.onSubMenuItemOver);
        $('.submenu li').mouseout(this.onSubMenuItemOut);
        $('.submenu li').click(this.onSubMenuItemClick);
        $('.info').click(this.onInfoClick);
        $('.info').mouseover(this.onInfoOver);
        $('.info').mouseout(this.onInfoOut);
        
        // przypisujemy dane do li
        var menuItems = $('#mainmenu > li');
        var i = 0;
        for (cid in siteData.categories)
        {
            $(menuItems[i]).data('category_id', siteData.categories[cid].id);
            
            var j = 0;
            var subMenuItems = $('li', menuItems[i]);
            for (aid in siteData.categories[cid].applications)
            {
		if ( siteData.categories[cid].applications[aid].in_menu == "1" ){
                	$(subMenuItems[j]).data('application_id', siteData.categories[cid].applications[aid].id);
                	j++;
		}
                _this.flatApps[aid] = siteData.categories[cid].applications[aid];
            }
            i++;
        }
        //$('#mainmenu > li > a').click(this.onMenuItemClick);
    };
    this.defaultCategory = null;
    this.setDefaultBackground = function(){
        if (_this.defaultCategory == null)
            _this.defaultCategory = _this.getCategoryByName('default');
            
        _this.changeBackground(_this.defaultCategory);
        _this.changeShadow(_this.defaultCategory);
    };
    
    this.disableTopMenuItems = function(){
        $('#mainmenu > li').removeClass('active');
    };
    
    this.enableTopMenuItem = function(liElement){
        $(liElement).addClass('active');
        $('.submenu', liElement).css('display', '');//unhide
    };
    
    this.hideTopMenuItem = function(liElement){
        $('.submenu', liElement).hide();
    };
    
    this.lastMenuItem = null;
    this.onMenuItemClick = function(){
        var li = $(this);
        promo.promoHide();
        _this.disableTopMenuItems();
        _this.enableTopMenuItem(li);
        
        akcesoria.removeApplication();
        
        
        if ( $(li).data('category_id') == _this.lastMenuItem){
            if (siteData.categories['_'+li.data('category_id')].one_app == "1")
            {
                $('li', li).click();
            }            
            return false;
        }
        _this.lastMenuItem = $(li).data('category_id');
        
        if (siteData.categories['_'+li.data('category_id')].one_app == "1")
        {
            $('li', li).click();
        }
            
        sound.load(siteData.categories['_'+li.data('category_id')].sound);
               
        var fade_disable = li.data('fade_disable');
        li.data('fade_disable', false);

        _this.changeBackground(siteData.categories['_'+li.data('category_id')], fade_disable);
        _this.changeShadow(siteData.categories['_'+li.data('category_id')].shadow, fade_disable);
        
        return false;  
    };
    
    this.lastSubMenuItem = null;
    this.onSubMenuItemOver = function(){
        //console.log('this.onSubMenuItemOver');
        
        if (_this.infoWindowHideTimeout){
            clearTimeout(_this.infoWindowHideTimeout);
            _this.infoWindowHideTimeout = null;
        }        
        
        var li = $(this);
        var application_id = li.data('application_id');
        if (_this.lastSubMenuItem  == application_id)
            return false;
        _this.lastSubMenuItem = application_id;
        var category_id = _this.lastMenuItem;
        
        _this.showInfoWindow(application_id, category_id, li.parent().parent())
        
        return false;
    };
    
    this.onInfoOver = function(){
        if (_this.infoWindowHideTimeout){
            clearTimeout(_this.infoWindowHideTimeout);
            _this.infoWindowHideTimeout = null;
        }   
    };
    
    
    this.changeBackground = function(category,fade_disable){
        //if (!category.background){
        //    category = this.defaultCategory;
        //}        
        var url = category.background;

        if (document.body.clientWidth <= 1024)
        {
            url = category.background_smaller;
        }else if (document.body.clientWidth <= 1440){
            url = category.background_small;
        }
		$('#sitebg').stop(true,true).fadeOut(1000, function(){$('#sitebg').css('background-image','url('+url+')').fadeIn(500);});  
    };
    this.changeShadow = function(url){
        $('#lowerbg').stop(true,true).fadeOut(1000, function(){$('#lowerbg').css('background-image','url('+url+')').fadeIn(500);});
    };
    
    this.infoWindowHideTimeout = null;
    this.infoElement = null;
    this.showInfoWindow = function(application_id, category_id, domElement){
        _this.infoElement = $($('.info', domElement));
        var applicationData = siteData.categories['_'+category_id].applications['_'+application_id];
        
        $('img', _this.infoElement).attr('src', applicationData.thumbnail);
        $('.description', _this.infoElement).html(applicationData.description);
        
        _this.infoElement.fadeIn();
    };
    
    this.onSubMenuItemOut = function(){
        //console.log('this.onSubMenuItemOut');
        var li = $(this);
        _this.infoWindowHideTimeout = setTimeout(_this.hideInfoWindow, 1000);
        return false;
    };
    
    this.onInfoOut = function(){
        _this.infoWindowHideTimeout = setTimeout(_this.hideInfoWindow, 1000);
        return false;
    };
    
    this.hideInfoWindow = function(){
        //console.log('this.hideInfoWindow');
        clearTimeout(_this.infoWindowHideTimeout);
        _this.infoWindowHideTimeout = null;
        _this.lastSubMenuItem = null; // musumy to wyczyscic
        _this.infoElement.fadeOut();
    };
    
    this.lastClickedSubMenuItem = null;
    this.onSubMenuItemClick = function(){
        var li = $(this);
        var application_id = li.data('application_id');
        _this.lastClickedSubMenuItem = application_id;
        var category_id = _this.lastMenuItem;
        var applicationData = siteData.categories['_'+category_id].applications['_'+application_id];
        
        _this.hideTopMenuItem(li.parent().parent().parent());
        //_this.lastMenuItem = null;
        
        akcesoria.showApplication(applicationData);
        
        return false;
    };
    this.onInfoClick = function(){
        if (! _this.lastSubMenuItem)
            return false;
        
        var application_id = _this.lastSubMenuItem;
        var li = null;
        $('ul.sub li').each(function(){
            if ($(this).data('application_id') == application_id)
                li = $(this);
        });
        
        if (li)
            li.click();
        return false;
    }
    
    this.getAppByPermalink = function(permalink){
        for(i in this.flatApps)
        {
            if (this.flatApps[i].permalink == permalink)
            {
                return this.flatApps[i];
                break;
            }
        }
        return null;
    };
    
    this.getAppById = function(appId){
        if (this.flatApps['_'+appId])
            return this.flatApps['_'+appId];
        return null;
    };
    
    this.getCategoryByName = function(name){
        for(i in siteData.categories)
        {
            if (siteData.categories[i].name == name)
            {
                return siteData.categories[i];
                break;
            }
        }
        return null;
    };    
}

$(menu.init)

