
//Esta funcion lleva el control de la cookie que controla el menu. Para cambiar la forma de cookie o la del menu 
function controlCookie(nombre){
	if (getCookie(nombre) == null){
		//La cookie del menu no esta declarada, la creamos y cargamos el array	
		create_cookie(nombre, menu_3);
	}
	cookie_to_array(nombre, menu_3);
}

function updateCookie(id, valor_actual, menu){
	var key = "";
	var valor = "";
	var cookie = "";
	for (var i = 0; i < menu_options_1; i++){
		key = menu[i][0];
		valor = menu[i][1];
		if (menu[i][0] == id){
			menu[i][1] = valor_actual + "";
			valor = valor_actual;
		}
		cookie += key + "#" + valor + ";";
	}
	setCookie("menu_3", cookie, null);
}

//Función para recuperar una cookie guardada en el archivo cliente
function setCookie(nombre, valor, caducidad){
	caducidad = new Date();
	caducidad.setDate(caducidad.getDate() -10);   //hacemos que la cookie caduque
  document.cookie = nombre + "=" + escape(valor) + "; expires=" + caducidad.toGMTString() + "; path=/";
  
	caducidad.setDate(caducidad.getDate() +365);   //hacemos que la cookie caduque
  document.cookie = nombre + "=" + escape(valor) + "; expires=" + caducidad.toGMTString() + "; path=/";
  
} 

function create_cookie(nombre, menu){
	//creamos la cookie con la configuracion por defecto
	var key = "";
	var valor = "";
	var cookie = "";
	for (var i = 0; i < menu_options_1; i++){
		key = menu[i][0];
		valor = menu[i][1];
		cookie += key + "#" + valor + ";";
	}
	setCookie(nombre, cookie, null);
}

function cookie_to_array(nombre, menu){
	if (getCookie(nombre) != null){
		var cookie = getCookie(nombre);
		copyCookie(cookie, menu);		
	}
}

function copyCookie(cookie, menu){
	var options_ = cookie.split(";");
	for (var i = 0; i < options_.length - 1; i++){
		//menu[i][0] = options_[i].split("-")[0];
		menu[i][1] = options_[i].split("#")[1];
	}
}

function getCookie(nombre){
	var buscamos = nombre + "=";
	if (document.cookie.length > 0){
		i = document.cookie.indexOf(buscamos);
		if (i != -1){
			i += buscamos.length;
			j = document.cookie.indexOf(";", i);
			if (j == -1){
				j = document.cookie.length;
				return unescape(document.cookie.substring(i,j));
			} else {
				return null;	
			}
		} else {
			return null;	
		}
	} else {
		return null;	
	}
} 


//Function para recuperar un objeto html mediante su id
function _$(id){
	return document.getElementById(id);
}

//Function para recuperar un objeto LISTA html
function $_(id_){
	return document.getElementById("ul_" + id_);	
}

//Function para recuperar un objeto ELEMENTO DE LISTA html
function $__(id_){
	return document.getElementById("li_" + id_);	
}

function slide_menu(id, src_img){
	if (_$("plegar").className == "plegar"){
		_$(id).className = "novisible";
		_$("plegar_img").src = src_img + "/desplegar.gif";
                _$("doscol-a2").className="completo";
		_$("plegar").className = "desplegar";
		controlMenu("0", menu_3);
	} else {
		_$(id).className = "visible";
		_$("plegar_img").src = src_img + "/plegar.gif";
		_$("doscol-a2").className="margen";
		_$("plegar").className = "plegar";
		controlMenu("1", menu_3);
	}
}

function controlMenu(valor_actual, menu){
	var key = "";
	var valor = "";
	var cookie = "estados-" + valor_actual + ";";
	for (var i = 1; i < menu_options_1 - 1; i++){
		key = menu[i][0];
		valor = menu[i][1];
		cookie += key + "#" + valor + ";";
	}
	setCookie("menu_3", cookie, null);
}

//Controla las opciones principales (categorias)
function slide_option(id_){
		for (i=0;i<menu_options_1;i++) {
			if (menu_3[i][0] == id_)
				cierra_todos();  //cerramos todas las opciones si es una opcion del menu desplegable.
		}
		if ($_(id_)){
			if ($_(id_).style.visibility != "hidden"){
				//recogido - 0
				updateCookie(id_, 0, menu_3);
				$__(id_).className = "recogido";
				$_(id_).style.visibility="hidden";
				$_(id_).style.display = "none";
			} else {
				//extendido - 1
				updateCookie(id_, 1, menu_3);
				$__(id_).className = "extendido";
				$_(id_).style.visibility="visible";
				$_(id_).style.display = "block";
			}
		}
}

//Cierra todas las opciones del menu
function cierra_todos() {
	for (i=0; i<menu_options_1;i++) {
		if ($_(menu_3[i][0])) {
			updateCookie(menu_3[i][0], 0, menu_3);
			$__(menu_3[i][0]).className = "recogido";
			$_(menu_3[i][0]).style.visibility="hidden";
			$_(menu_3[i][0]).style.display = "none";
		}
	}
}

//Controla el menu de la pagina mediante el vector de configuracion implementado un poco mas arriba
function control_menu(menu){
	for (var i=0; i <= menu.length-1;i++){
		if ($_(menu[i][0]) != null){
			if (menu[i][1] == "1"){
				if ($__(menu[i][0]) != null){
					$__(menu[i][0]).className = "extendido";
					if ($_(menu[i][0]) != null){
						$_(menu[i][0]).style.visibility="visible";
						$_(menu[i][0]).style.display = "block";
					}
				}
			} else {
				if ($__(menu[i][0]) != null){
					$__(menu[i][0]).className = "recogido";
					if ($_(menu[i][0]) != null){
						$_(menu[i][0]).style.visibility="hidden";
						$_(menu[i][0]).style.display = "none";
					}
				}
			}
		}
	} 
        //alert("Mensaje de depuración: " + menu[0][1]);
}	

//En esta funcion hay que incluir los menues declarados en la aplicacion para cargarlos
function new_menu(tipo, rp){
	if (tipo == "1"){
            root_ = rp.value;
            control_menu(menu_3);	
	} 
}

function limpiarCookie(menu){
	var key = "";
	var valor = "";
	var cookie = "";
	for (var i = 0; i < menu_options_1; i++){
		menu[i][1]="0";
		cookie += menu[i][0] + "#" + menu[i][1] + ";";
	}
	setCookie("menu_3", cookie, null);
}
