var menuHandler = {
	
	menuUrls				: [],
	isToggeHomeAnimating	: false,
	
	init : function(){
		
		$("body").bind("url_changed", function(e){
			menuHandler.onUrlChange(e.url);
		});
		$("body").bind("url_loaded", function(e){
			menuHandler.onUrlChange(e.url);
		});
		
		$('ul#mainMenu li').each(function(i, elt){
			menuHandler.menuUrls[$(elt).attr('rel')] = $(elt);
		});
		
		$('ul#mainMenu li').click(function(){
			urlHandler.load($(this).attr('rel'), true);
		});
		
		$('#splashBanner img').click(function(){
			$('#splashBanner').fadeOut(200, function(){
				$('#splashBanner').remove();
			});
		});
		
	},
	
	load : function(){
		var loadFirst = urlHandler.hash;
		if(loadFirst == ''){
			$firstItem = $('ul#mainMenu li:first-child');
			loadFirst = $firstItem.attr('rel');
		} else {
			loadFirst = loadFirst.substring(1)
		}
		urlHandler.load(loadFirst);
		/*
		$selItem = $('ul#mainMenu li.selected');
		if($selItem.get(0)){
			appUtils.log('loading ' + $selItem.attr('rel'));
			urlHandler.load($selItem.attr('rel'), true);
		}*/
	},
	
	onUrlChange : function(url){
		appUtils.log('menuHandler.onUrlChange: ' + url);
		if(menuHandler.menuUrls[url]){
			
			var bFromHome = ($('#mainMenu li.home').hasClass('selected'));
			
			menuHandler.resetSelectedState();
			menuHandler.menuUrls[url].addClass('selected');
			
			var bToHome = ($('#mainMenu li.home').hasClass('selected'));
			
			appUtils.log("===> bFromHome = "+bFromHome);
			appUtils.log("===> bToHome = "+bToHome);
			
			switch (true) {
				case (bFromHome &&	bToHome):
					menuHandler.toggleHomeAnimation("ishome");
				break;
				case (bFromHome && !bToHome):
					menuHandler.toggleHomeAnimation("home2page");
				break;
				case (bToHome && !bFromHome):
					menuHandler.toggleHomeAnimation("page2home");
				break;
				default:
					menuHandler.toggleHomeAnimation("ispage");
				break;
			}
 
		}
	},
	
	toggleHomeAnimation : function (target_screen) {

		var doAnimation	= false;

		/* Only execute toggle if viewport height is enough */
		if ($(window).height()>850) {
			
			switch (target_screen) {
				case "ishome":
					appUtils.log('Affirm home screen');
					$('#mainMenuContainer').addClass("home");
					$('#pageScroller').addClass("home");
					$('#housesBar').addClass("home");
					resizeHandler.onResize();
				break;
				case "ispage":
					appUtils.log('Affirm page screen');
					$('#mainMenuContainer').removeClass("home");
					$('#pageScroller').removeClass("home");
					$('#housesBar').removeClass("home");
					resizeHandler.onResize();
				break;
				case "page2home":
					appUtils.log('Animate to home screen');
					if (doAnimation) {
						$('#mainMenuContainer').animate({"top":"+=340px"}, "slow", function(){
							$('#mainMenuContainer').addClass("home");
							$('#pageScroller').addClass("home");
							$('#housesBar').addClass("home");
							resizeHandler.onResize();
						});
					} else {
						$('#mainMenuContainer').addClass("home");
						$('#pageScroller').addClass("home");
						$('#housesBar').addClass("home");
						resizeHandler.onResize();
					}
				break;
				case "home2page":
					appUtils.log('Animate to page screen');
					if (doAnimation) {
						$('#mainMenuContainer').animate({"top":"-=340px"}, "slow", function(){
							$('#mainMenuContainer').removeClass("home");
							$('#pageScroller').removeClass("home");
							$('#housesBar').removeClass("home");
							resizeHandler.onResize();
						});
					} else {
						$('#mainMenuContainer').removeClass("home");
						$('#pageScroller').removeClass("home");
						$('#housesBar').removeClass("home");
						resizeHandler.onResize();
					}
				break;
			}
		} else {
			resizeHandler.isHomeView	= false;
			menuHandler.toggleSplashBanner(true, {"top":20});
		}
		
	},
	
	toggleSplashBanner	:	function (status, pos) {
		
		var offset		= $('#pageScroller').offset();
		offset.left		= parseInt(offset.left + 610 - 248);
		
		if (isset(pos)) {
			pos.left	= (isset(pos.left))	?	pos.left	:	offset.left;
		} else {
			pos			= {"left":offset.left};
		}
		
		if (status) {
        	/* Show splash banner */
			try {
	        	$('#splashBanner').css({"background-image":"url('/media/static/images/home-splash-banner-" + appGlobals.LANG + ".png')", "left":pos.left+"px"});
	        	if (isset(pos.top)) {
		        	$('#splashBanner').css({"top":pos.top+"px"});
	        	}
	        	$('#splashBanner').fadeIn();
			} catch(e){}
		} else {
			$('#splashBanner').fadeOut(0);
		}
	},
	
	toggleSubMenu : function(rel, items){
		
		$('ul#mainMenu li.menuItem .subMenu').html('');
		
		$elt = appUtils.findByAttr($('ul#mainMenu li'), 'rel', rel);
		if($elt){
			$('ul#mainMenu li .subMenu .subMenuItem').remove();
			$('ul#mainMenu li .subMenu').remove();
			$elt.append('<div class="subMenu"></div>');
			appUtils.log('menuHandler.toggleSubmenu');
			if (isset(items)) {
				$.each(items, function(i, item){
					$('.subMenu', $elt).append('<div class="subMenuItem" id="subMenuItem_'+ item.id + '" rel="'+ item.slug + '"><div>' + item.title + '</div></div>');	
				});
			}
			
			$('.subMenuItem', $elt).click(menuHandler.onSubmenuClick);
		}
	},
	
	resetSelectedState : function(){
		$('ul#mainMenu li').toggleClass('selected', false);
		$('ul#mainMenu li .subMenuItem').toggleClass('selected', false);
	},
	
	onSubmenuClick : function(e){
		//try {
			
			e.stopPropagation();

			var $elt		= $(this);
			menuHandler.resetSelectedState();
			$elt.addClass('selected');
			
			/*
				//happens every load (see handler.webpage.js line 13 & 26)
				
				var id			= $elt.attr('id').substr('subMenuItem_'.length);
				
				var position	= $('#pageContent_' + id).position();
				
				//ReFade content
				appUtils.reFade($('#pageContent_' + id));
				
				//Try to update scrollbar
				resizeHandler.updateScrollbar(position.top);
			*/
			
			urlHandler.load($elt.parent().parent().attr('rel') + $elt.attr('rel'), true);
		
		//} catch (e) {}
				
		return false;
	}
		
};

