var layoutManager = function() {
	
	var mask;
	var common;
	var librairie;
	var papeterie;
	
	var layoutCurrentPos;
	var layoutCommonOpen = false;
	var stateBeforeCommon;
	
	// Menu animation
	var oMenu = new YAHOO.widget.Menu('pde-menu-ctn', {
    	position: 'static',
    	visible: false
    	});
	var showMenu = new YAHOO.util.Anim('pde-menu-ctn', {
		opacity: {to: 0.8}
		});
	var hideMenu = new YAHOO.util.Anim('pde-menu-ctn', {
		opacity: {to: 0.8}});
	
	// Animations layout
	var animLeft = new YAHOO.util.Anim('pde-lft-ctn', {
	    marginLeft: {to: -675}},
		5,
		YAHOO.util.Easing.easeOutStrong);
	var animRight = new YAHOO.util.Anim('pde-rgt-ctn', {
	    marginRight: {to: -25}},
		5,
		YAHOO.util.Easing.easeOutStrong);
	
	var animLeft2 = new YAHOO.util.Anim('pde-lft-ctn', {
	    marginLeft: {to: -25}},
		5,
		YAHOO.util.Easing.easeOutStrong);
	var animRight2 = new YAHOO.util.Anim('pde-rgt-ctn', {
	    marginRight: {to: -675}},
		5,
		YAHOO.util.Easing.easeOutStrong);
		
	var animCenterPap = new YAHOO.util.Anim('pde-lft-ctn', {
		marginLeft: {to: -350}},
		3,
		YAHOO.util.Easing.easeOutStrong);
	var animCenterLib = new YAHOO.util.Anim('pde-rgt-ctn', {
		marginRight: {to: -350}},
		3,
		YAHOO.util.Easing.easeOutStrong);
	
	
	// Common and mask anim
	var animLiftHide = new YAHOO.util.Anim('pde-lift', {
		marginTop: {to: 480}
		},
		0.8,
		YAHOO.util.Easing.easeOutStrong);
	var animLiftShow = new YAHOO.util.Anim('pde-lift', {
	    marginTop: {to: 0}
		},
		3,
		YAHOO.util.Easing.easeOutStrong);
			
	var animMaskShow = new YAHOO.util.Anim('pde-mask', {
		opacity: {to: 0.5}
		},
		1);
	var animMaskHide = new YAHOO.util.Anim('pde-mask', {
		opacity: {to: 0}
		},
		0.5);
	
	return {
		init : function () {
			
			// Menu init
			oMenu.render();
			hideMenu.animate();
			
			YAHOO.util.Event.addListener('pde-menu-btn', 'mouseover', function () {
	        	showMenu.animate();
	        }, null, oMenu);
	        oMenu.subscribe('blur', function () {
	        	hideMenu.animate();
	        });
			
			mask = document.getElementById('pde-mask');
			common = document.getElementById('pde-common');
			
			YAHOO.util.Event.on('pde-pap-bod', 'click', function() {
			    //oMenu.cfg.setProperty('submenualignment', ['tr', 'tl']);
			    //oMenu.render();
			    YAHOO.util.History.navigate("front", "papeterie");			    
			});
			YAHOO.util.Event.on('pde-lib-bod', 'click', function() {
				//oMenu.cfg.setProperty('submenualignment', ['tl', 'tr']);
				//oMenu.render();
				YAHOO.util.History.navigate("front", "librairie");
			});
			
			animMaskHide.onComplete.subscribe(this.hideMask);
			animLiftHide.onComplete.subscribe(this.hideCommon);
		},
		hideMask : function () {			
			mask.style.display = 'none'; 
		},
		hideCommon : function () {
			common.style.visibility = 'hidden'; 
		},
		openCommon : function () {
			
			common.style.visibility = 'visible';
			mask.style.display = 'block';
			
			animLiftShow.animate();
			animMaskShow.animate();
			
			layoutCommonOpen = true;
		},
		closeCommon : function () {
			animLiftHide.animate();
			animMaskHide.animate();
			
			layoutCommonOpen = false;
			
			if (stateBeforeCommon != '')
				YAHOO.util.History.navigate("front", stateBeforeCommon);
			else
				YAHOO.util.History.navigate("front", 'accueil');
		},
		showCenter : function () {
			animCenterPap.animate();
			animCenterLib.animate();
		},
		showLibrairie : function () {
			animLeft.animate();
			animRight.animate();
			//location.hash = 'librairie';
		},
		showPapeterie : function () {
			animLeft2.animate();
			animRight2.animate();
			//location.hash = 'papeterie';
		},
		showLayout : function(layout) {
			if ((layoutManager.getCurrentPos() != layout) || (layout == 'common' && !layoutCommonOpen)) {
				if (layoutCommonOpen && layout != 'common') {
					layoutManager.closeCommon();
				}
				switch (layout) {
					case 'librairie' :
						layoutManager.showLibrairie();
						break;
					case 'papeterie' :
						layoutManager.showPapeterie();
						break;
					case 'common' :
						layoutManager.openCommon();
						break;
					case 'center' :
						layoutManager.showCenter();					
						break;
					default :
						layout = 'center';
						alert('Erreur code layout inconnu');
						break;
				}
				layoutCurrentPos = layout;
			}
		},
		getCurrentPos : function () {
			return layoutCurrentPos;
		},
		setStateBeforeCommon : function (value) {
			if (value.substring(0, 4) == 'http') {
				value = '';
			}
			stateBeforeCommon = value;
		}
	};
}();

