/*
*	inc_menu_principal.js
*	author Ok!nteractif
*/

var menuPrincipal = {
	placeholder		: 'smenu_empty',
	menuPrefix		: 'smenu_',
	menuPrinc		: 'menu_principal',
	
	currentBtn		: null,
	currentMenuBtn	: null,
	currentMenu		: null,
	currentHeader	: null,
	baseHeaderId	: null,
	
	isOnButton		: false,
	isOnMenu		: false,
	isOnHeader		: false,
	hideMenuTimer	: null,

//	Menu show/hide management	///////////////////////////////////////////////////////////////////////////////
	showMenu		: function(idSection)
	{
		this.isOnButton = true;
		if(this.currentMenu) this.forceHideMenu();
		
		this.setCurrentMenu(idSection);
		if(!this.currentMenu) return;
		
		this.highlightCurrentBtn(idSection, '_menu');
		this.attachCurrentMenuEvents();
		
		this.hidePlaceholder();
		this.showCurrentMenu();	
	},
	
	hideMenu		: function()
	{
		if(this.isOnButton) this.isOnButton = false;
		this.hideMenuTimer = setTimeout('menuPrincipal.hideMenuDelayed()', 500);
	},
	
	hideMenuDelayed	: function()
	{
		if(this.isOnMenu || this.isOnButton) return;
		this.forceHideMenu();
	},
	
	forceHideMenu	: function()
	{
		if(this.hideMenuTimer!='undefined') clearTimeout(this.hideMenuTimer);
		if(!this.currentMenu) return;
		
		this.setBtnOut();
		this.hideCurrentMenu();
		this.showPlaceholder();
		
		this.currentMenu = null;
		this.currentBtn = null;
	},
	
	showPlaceholder	: function()
	{
		if(!$(this.placeholder)) return;
		$(this.placeholder).style.display = 'block';
	},
	
	hidePlaceholder	: function()
	{
		if(!$(this.placeholder)) return;
		$(this.placeholder).style.display = 'none';
	},
	
	hideCurrentMenu	: function()
	{
		this.currentMenu.style.display = 'none';		
	},
	
	showCurrentMenu	: function()
	{
		this.currentMenu.style.display = 'block';
	},
	
	setCurrentMenu	: function(idSection)
	{
		this.currentMenu = $(this.menuPrefix+idSection);
	},
	
//	Menu events/states management	///////////////////////////////////////////////////////////////////////////
	attachCurrentMenuEvents	: function()
	{
		if(this.currentMenu.addEventListener)
		{
			this.currentMenu.addEventListener('mouseover', this.menuMouseOver, false);
			this.currentMenu.addEventListener('mouseout', this.menuMouseOut, false);
		}
		else if(this.currentMenu.attachEvent)
		{
			this.currentMenu.attachEvent('onmouseover', this.menuMouseOver);
			this.currentMenu.attachEvent('onmouseout', this.menuMouseOut);
		}
	},
	
	menuMouseOver	: function(e)
	{
		menuPrincipal.isOnMenu = true;
	},
	
	menuMouseOut	: function(e)
	{
		menuPrincipal.isOnMenu = false;
		menuPrincipal.hideMenu();
	},
	
	setBtnOver		: function(a, type)
	{		
		this.currentBtn = 	a.getFirst();
		
		var currentSrc = 	this.currentBtn.getProperty('src');
		var newSrc = 		currentSrc.replace(/_up/, type);
		
		this.currentBtn.setProperty('src', newSrc);
		
	},
	
	setBtnOut		: function()
	{
		var currentSrc = 	this.currentBtn.getProperty('src');
		var newSrc = 		currentSrc.replace(/_menu|_over/, '_up');

		this.currentBtn.setProperty('src', newSrc);
	},
	
	setMenuBtnOver	: function(a)
	{
		a.setProperty('href','javascript:void(0)');
		
		this.currentMenuBtn = 	a.firstChild;
		this.currentMenuBtn.setProperty('class','');
		
		var currentSrc = 		this.currentMenuBtn.getProperty('src');
		var newSrc = 			currentSrc.replace(/_up/, '_over');
		
		this.currentMenuBtn.setProperty('src', newSrc);
	},
	
	highlightCurrentBtn	: function(idSection, type)
	{
		var s;
		var reg = new RegExp(idSection);
		var menuPrinc = $(this.menuPrinc);
		var children = menuPrinc.getChildren();
		
		for(var i = 0; i < children.length; i += 1){
			s = children[i];
			if(s.getChildren().length == 1)
				if(reg.test(s.getFirst().getProperty('src')))
					this.setBtnOver(s, type);
		}
	},
	
	highlightCurrentMenuBtn	: function(idPage)
	{
		var s;
		var reg = new RegExp(idPage);
		var children = this.currentMenu.getChildren();
		
		for(var i = 0; i < children.length; i += 1){
			s = children[i];
			if(s.getChildren().length == 1) 
				if(reg.test(s.getProperty('href')))
					this.setMenuBtnOver(s);
		}
	},

//	Header management	///////////////////////////////////////////////////////////////////////////////////////
	initHeader		: function(idSection, idPage)
	{
		this.baseHeaderId = idSection;
		this.setCurrentMenu(idSection);
		if(!this.currentMenu) return;
		
		this.showCurrentMenu();
		this.highlightCurrentBtn(idSection, '_over');
		this.highlightCurrentMenuBtn(idPage);
	},
	
	changeHeader	: function(idSection)
	{
		this.isOnButton = true;
		this.hideCurrentMenu();
		this.setBtnOut();
		
		this.currentHeader = $('entete');
		
		this.setHeaderTopImg(idSection);
		this.setHeaderImg(idSection);
		
		this.setCurrentMenu(idSection);
		if(!this.currentMenu) return;
		
		this.showCurrentMenu();
		this.highlightCurrentBtn(idSection, '_over');
		
		this.attachCurrentHeaderEvents();
	},
	
	resetHeader		: function()
	{
		if(this.isOnButton) this.isOnButton = false;
		this.hideMenuTimer = setTimeout('menuPrincipal.reserHeaderDelayed()', 500);
	},
	
	reserHeaderDelayed		: function()
	{
		if(this.isOnMenu || this.isOnButton || this.isOnHeader) return;
		this.changeHeader(this.baseHeaderId);
	},
	
	attachCurrentHeaderEvents	: function()
	{
		if(this.currentMenu.addEventListener)
		{
			this.currentMenu.addEventListener('mouseover', this.headerMouseOver, false);
			this.currentMenu.addEventListener('mouseout', this.headerMouseOut, false);
			
			this.currentHeader.addEventListener('mouseover', this.headerMouseOver, false);
			this.currentHeader.addEventListener('mouseout', this.headerMouseOut, false);
		}
		else if(this.currentMenu.attachEvent)
		{
			this.currentMenu.attachEvent('onmouseover', this.headerMouseOver);
			this.currentMenu.attachEvent('onmouseout', this.headerMouseOut);
			
			this.currentHeader.attachEvent('onmouseover', this.headerMouseOver);
			this.currentHeader.attachEvent('onmouseout', this.headerMouseOut);
		}
	},
	
	headerMouseOver	: function(e)
	{
		menuPrincipal.isOnHeader = true;
	},
	
	headerMouseOut	: function(e)
	{
		menuPrincipal.isOnHeader = false;
		menuPrincipal.resetHeader();
	},
	
	setHeaderTopImg	: function(idSection)
	{
		var img = $('entete_top');
		if(!img) return;
		
		var currentSrc = 		img.getProperty('src');
		var newSrc = 			currentSrc.replace(/entete_[a-z]+_top/,'entete_'+idSection+'_top');

		img.setProperty('src', newSrc);
	},
	
	setHeaderImg	: function(idSection)
	{
		var img = this.currentHeader.getFirst();
		if(!img) return;
		
		var currentSrc = 		img.getProperty('src');
		
		if (langue == "fr"){
			var newSrc = 	currentSrc.replace(/entete_[a-z]+_fr/,'entete_'+idSection+'_fr');
		}else{
			var newSrc = 	currentSrc.replace(/entete_[a-z]+_en/,'entete_'+idSection+'_en');
		}

		img.setProperty('src', newSrc);
	},
	
//	Images management	///////////////////////////////////////////////////////////////////////////////////////

	preloadImages	: function(aImages)
	{
		//alert('start preloading images');
		var images = new Asset.images(aImages,{
			onProgress: function(counter,index){
				//alert('loading: '+counter+' of '+aImages.length);
			},
			onComplete: function(){
			}
		});
	}
};
