// Esta funcion muestra recursivamente todos los ul desde el correspondiente al id hasta el nivel más bajo.
function show_until(id){
	new Ajax.Request('menu.html?rnd=11',
		{
			method:'get',
			onSuccess: function(transport){
			var response = transport.responseText || "no response text";
			var res = response.evalJSON();
			var i = 0;
			while(i < res.length){
			    if(id == res[i].id){
				clicked = document.getElementById('li_'+res[i].id);
				if(res[i].parent_id == "null")
				    clicked.style.background = "#97b4b7";
				
				if(document.getElementById('ul_' + res[i].id) != null){
    				    ul = document.getElementById('ul_' + res[i].id);
				    ul.style.display = 'list-item';
				}
				ul = document.getElementById('ul_' + res[i].parent_id);
				ul.style.display = 'list-item';
				show_until(res[i].parent_id);
			    }
			    i++;
    			}
		}, onFailure: function(){ alert('Something went wrong...') }
	});
}

// Esta funcion oculta todos los elementos que pertenecen a niveles mayores que 0.
function hide_all(){
	new Ajax.Request('menu.html?rnd=11',
	{
		method:'get',
		onSuccess: function(transport){
			var response = transport.responseText || "no response text";
			var res = response.evalJSON();
			var i = 0;
			while(i < res.length){
			    if(res[i].parent_id == "null"){
				root = document.getElementById('li_'+res[i].id);
				root.style.background = "white";
				    

 				if(res[i].has_child == '1'){
					element = document.getElementById('ul_' + res[i].id);
					//alert(res[i].id);
					element.style.display = 'none';	
				}
			    }
			    i++;
			}
		}, onFailure: function(){ alert('Something went wrong...') }
	});
}

// Esta funcion muestra u oculta el menu indicado por id (siendo el id del padre de los submenues).
function show_hide_menu(id){
	hide_all();
	show_until(id);
}

// Genera la lista de opciones del menu.
function generate_menu(){
	new Ajax.Request('menu.html?rnd=11',
	{
		method:'get',
		onSuccess: function(transport){
		var response = transport.responseText || "no response text";
		var buffer = '';
		var res = response.evalJSON();
		var i = 0;
		var level = 0;
		var parent_array = new Array();
		parent_array[0] = "null";
		
		var parent_id = "null";
		buffer = "<ul class=\"level"+level+"\" id=\"nav\">\n";
		
		while(i < res.length){
			if(res[i].parent_id == "null")
				level = 0;

			// Armo el link
			if(res[i].link != "null"){
				//if(res[i].id=="2d"){
					//var open_link = "<a href=\""+res[i].link+"\" class=\"href_level"+level+"\" target='_blank'>";
				//}else{
					var open_link = "<a href=\""+res[i].link+"\" class=\"href_level"+level+"\">";	
				//}	
				
				var close_link = "</a>";
			}else{
				var open_link = '';
				var close_link = '';
			}
			// Si es el seleccionado le doy un class especial
			if(res[i].id == selected){
				var selected_opt = "class=\"selected\"";
			}else{
				var selected_opt = '';
			}
			// Agrego la cantidad de tabs necesarios
			var j = 0;
			var tabs = '';
			while(j < level){
				tabs = tabs + "&nbsp;&nbsp;";
				j++;
			}
			// Esto lo agrego si y solo si el id existe
			var tabs_image = '';
			tabs_image = tabs+"<img src=\"bulletMenu.gif\" alt=\"bullet\" /> ";
			
			// Pongo el mouseover para los root
			
			/*if(res[i].parent_id == "null"){
			    hover = "onMouseOver='javascript:this.style.background=\"#97b4b7\"' onMouseOut='javascript:this.style.background=\"white\"'";
			}else{
			    hover = '';
			}*/
			// Armo el LI con la llamada a la funcion para expandir si tiene hijos
			if(res[i].has_child == '1'){
				buffer = buffer + "\t<li id=\"li_"+res[i].id+"\" onClick=\"javascript:show_hide_menu('"+res[i].id+"');\" " + selected_opt+" class=\"li_class\">"+open_link+tabs_image+res[i].name+close_link+"\n</li>";
				level = level + 1;
				parent_array[level] = res[i].id;
				buffer = buffer +"<ul id=\"ul_"+res[i].id+"\" class=\"level"+level+"\" style=\"display: none\">\n";
			}else{
				buffer = buffer + "\t<li id=\"li_"+res[i].id+"\" "+selected_opt+" class=\"li_class\" >"+open_link+tabs_image+res[i].name+close_link+"</li>\n";
				if(i+1 == res.length){
					buffer = buffer + "</ul>";
				}else{
					var k = level;
					while(parent_array[k] != res[i+1].parent_id && k > 0){
					    //if(i+1 < res.length && res[i+1].parent_id != res[i].parent_id){
					    buffer = buffer + "</ul>\n";
					    //alert(level);
					    //alert("PArray: " + parent_array[level] +" Res+1: " +res[i+1].parent_id);
					    k--;
					    level = k;
					}
				}
			}
			i++;
		}
		$('menu').innerHTML = buffer;
	}, onFailure: function(){ alert('Something went wrong...') }
	});
}
