/******************************************************************
 * Manager para menu con imagenes
 ******************************************************************/

dojo.provide("xng.imageMenuManager");
dojo.require("dojo.widget.Menu2");
dojo.declare ("xng.imageMenuManager", null, {

	section: '',
	language: 'en',
	currentMenu: "menu",
	root_url: '',
	last_over:'',
	last_out:'',

	// Constructor
	initializer: function()
	{
		// Put setters here like: this.name=name;
		this.section = "";
		this.language = "";
		this.currentMenu = "menu" + this.section;
		this.strLastOpenedMenu = null;
		this.timer_clock = 0;
		this.root_url = "";
		this.desplazamiento_x = 0;
		this.last_over = "";
		this.last_out = "";
	},

	setValues: function(root_url, section, language)
	{
		this.section = section;
		this.language = language;
		this.currentMenu = "menu" + this.section;
		this.root_url = root_url;
	},

	setLastOver: function(_last_over)
	{
		this.last_over = _last_over;
	},

	setLastOut: function(_last_out)
	{
		this.last_out = _last_out;
	},

	hideSubMenu: function(strMenu)
	{
		var popUpMenu = dojo.widget.byId(strMenu);
		popUpMenu.closeAll('menu'+strMenu);
	},

	hideAllPopUpMenus: function()
	{
		var popUpMenus = dojo.widget.byType('PopupMenu2');

		for(var i = popUpMenus.length-1; i >= 0; i--){
			if( this.currentMenu != popUpMenus[i].widgetId ){ // Solo cierro los menues no currents
				popUpMenus[i].closeAll();
			}
		}
	},

	// Vuelve a mostrar todos los elementos del menu de la seccion actual
	showLastSubmenu: function()
	{


		var popMenu = dojo.widget.byId('menu'+this.strLastOpenedMenu);
		var btnMenu = dojo.byId('btn'+this.section);
		//alert(this.strLastOpenedMenu +'!='+ _section);
		if(this.strLastOpenedMenu != this.section){

			if(btnMenu != null){
				btnMenu.src = this.root_url+this.language+'/images/btn_'+this.section+'_on.gif';
			}

			if (this.setLastMenuButtonOff() && this.hideLastOpenedPopUpMenu()) {
				returnValue = true;
			}
		}

		var popMenuCurrent = dojo.widget.byId('menu'+this.section);
		if (popMenuCurrent != null && !(typeof(popMenuCurrent)=='undefined')) {
			this.moveMenu(popMenuCurrent, btnMenu, false);
			popMenuCurrent.show();
		}

		//this.showSubMenu(this.strLastOpenedMenu);
	},

	hideLastMenuCompletely: function()
	{
		var returnValue = false;
		if(this.strLastOpenedMenu != this.section){ // Behaviour changed
			if (this.setLastMenuButtonOff() && this.hideLastOpenedPopUpMenu()) {
				returnValue = true;
			}
		}
		this.hideLastOpenedPopUpMenu('menu'+this.section);
	},

	setLastMenuButtonOff: function()
	{
		dojo.debug('Shutting off: '+'btn'+this.strLastOpenedMenu);
		if (this.strLastOpenedMenu != null) {
			var btnMenu = dojo.byId('btn'+this.strLastOpenedMenu);
			if(btnMenu != null){
				btnMenu.src = this.root_url+this.language+'/images/btn_'+this.strLastOpenedMenu+'_off.gif';
				return true;
			} else {
				return false;
			}
		}
		return false;
	},

	hideLastOpenedPopUpMenu: function(menu)
	{
		var menu_name = '';

		if(!menu || menu=='undefined'){
			menu_name = 'menu'+this.strLastOpenedMenu;
		} else {
			menu_name = menu;
		}

		dojo.debug('Closing: ' + menu_name);
		if (this.strLastOpenedMenu != null) {
			var lastPopUpMenu = dojo.widget.byId(menu_name);
			if(lastPopUpMenu != null){
				dojo.debug(lastPopUpMenu);
				if (!(typeof(lastPopUpMenu)=='undefined')) {
					lastPopUpMenu.closeAll();
					return true;
				}
			}
		}
		return false;
	},

	showLastSubMenu: function (strMenu)
	{
		//alert(strMenu);
		//this.desplazamiento = this.desplazamiento - 100;
		this.showSubMenu(strMenu);
		//this.desplazamiento = 10;
	},

	showSubMenu: function (strMenu)
	{
		// If I am on the same menu as the last time do nothing
		this.hideLastMenuCompletely();
		this.hideAllPopUpMenus();
		//dojo.debug('showSubmenu: start...');
		//dojo.debug('showSubmenu: '+strMenu);
		var btnMenu = dojo.byId('btn'+strMenu);
		if(btnMenu != null){
			btnMenu.src = this.root_url+this.language+'/images/btn_'+strMenu+'_on.gif';
			this.strLastOpenedMenu = strMenu;
			var popMenu = dojo.widget.byId('menu'+strMenu);
			if (popMenu != null && !(typeof(popMenu)=='undefined')) {
				this.moveMenu(popMenu, btnMenu, true);
				popMenu.show();
				//alert(strMenu);
				// Le agrego que se oculte al hacer Unhover
				dojo.event.connect(popMenu,'onUnhover',	function(){
						menuManager.timerStart();
					});
				// Se agrega que al hacer over, se desactive el timer
				dojo.event.connect(popMenu,'onHover',
					function(){
						menuManager.timerStop();
					});

				return true;
			}
		}
	},

	// Para hacer tests...
	working: function()
	{
		alert('working...');
	},

	moveMenu: function (popMenu, btnMenu, flag)
	{
		var node = popMenu.domNode;
		//alert("currentMenu:"+this.currentMenu+":\nlastOpen:"+this.strLastOpenedMenu+":\nflag:"+flag+":");
		node.style.position = "absolute";
		node.style.left = this.getXposition(popMenu,btnMenu) + "px";

		if(this.currentMenu == "menuservices"){
			if( (this.strLastOpenedMenu == "resources" && !flag)){
				var x_pos = this.getXposition(popMenu,btnMenu) - 215;
				node.style.left = x_pos + "px";
			} else {
				if(this.strLastOpenedMenu != "resources"){
					var x_pos = this.getXposition(popMenu,btnMenu) - 215;
					node.style.left = x_pos + "px";
				}
			}
		} else {
			if(this.currentMenu == "menuresources"){
				if(this.strLastOpenedMenu== "services" && flag){
					var x_pos = this.getXposition(popMenu,btnMenu) - 215;
					node.style.left = x_pos + "px";
				}
			} else {
				if(this.strLastOpenedMenu== "services"){
					var x_pos = this.getXposition(popMenu,btnMenu) - 215;
					node.style.left = x_pos + "px";
				}
			}
		}

		//node.style.top = this.getYposition(btnMenu) + "px";

		node.style.left = "0px";
		node.style.top = "0px";
		node.style.position = "relative";

		if(this.strLastOpenedMenu == "resources" && flag){
			node.style.left = "555px";
		}
		if(this.currentMenu == "menuresources" && !(this.strLastOpenedMenu == "services" && flag)){
			node.style.left = "555px";
		}

	},
/*
	showSubMenu2: function (strMenu, divId)
	{
		//dojo.debug('showSubmenu2: start...');
		//dojo.debug('strMenu: '+strMenu);
		this.hideAllPopUpMenus();
		var divPos = dojo.byId(divId);
		var pos_x = divPos.offsetLeft;
		var pos_y = divPos.offsetTop+15;
		var popMenu = dojo.widget.byId('menu'+strMenu);
		popMenu.move(pos_x, pos_y);
		popMenu.show();
	},
*/
	getXposition: function(popMenu, btnMenu)
	{
		//alert('posicion x '+dojo.html.getAbsolutePosition(btnMenu).y);
		//return dojo.html.getAbsolutePosition(btnMenu).x + desplazamiento;
		var x_position = dojo.html.getAbsoluteX(btnMenu) - this.desplazamiento_x;
		return x_position;
	},
	getYposition: function(btnMenu)
	{
		//alert('posicion y '+dojo.html.getAbsolutePosition(btnMenu).y);
		//return dojo.html.getScroll().top+dojo.html.getAbsolutePosition(btnMenu).y + btnMenu.height;
		return dojo.html.getScroll().top + dojo.html.getAbsoluteY(btnMenu) + btnMenu.height;
	},

	showTooltip: function(strTooltip, strPadre)
	{
		this.hideAllPopUpMenus();
		var toolTip = dojo.byId('toolTip'+strTooltip);
		var padre = dojo.byId(strPadre);
		toolTip.style.position= "absolute";
		toolTip.style.top = padre.offsetTop+15+"px";
		toolTip.style.left = padre.offsetLeft+"px";
		toolTip.style.display = "block";
	},

	// Funciones para timer de los menues abiertos
	timerStart: function()
	{
		this.timer_clock = 9;
		setTimeout('menuManager.timerSet(-10)', 2500);
	},

	timerStop: function()
	{
		this.timer_clock = 1000;
	},

	timerSet: function(value)
	{
		this.timer_clock = this.timer_clock + value;
		if( this.timer_clock < 0){
			//this.strLastOpenedMenu="";
			this.showLastSubmenu();
		}
	},

	setSelected: function(submenu_id)
	{
		var popMenu = dojo.widget.byId(submenu_id);
		if (popMenu != null && !(typeof(popMenu)=='undefined')) {
			//popMenu.move( this.getXposition(popMenu,btnMenu), this.getYposition(btnMenu) );
			//this.moveMenu(popMenu, btnMenu);
			// Cambio el estilo del menu seleccionado
			popMenu.domNode.className = popMenu.domNode.className+'Selected';
			//popMenu.domNode.className = popMenu.domNode.className+'Hover';
			//alert(popMenu.domNode.className);
			//popMenu.is_hovering =true;
			/*
			dojo.event.connect(popMenu,'onUnhover',	function(){
				alert('sarasa');
			});
			*/
		}
	}


});



