//Definimos las variables que nos controlar&aacute;n la creaci&oacute;n de los arrays
//Variables que controlan la posici&oacute;n en los arrays de nivel 1, 2, y 3
posicion_nivel_1 = 0;
posicion_nivel_2 = 0;
posicion_nivel_3 = 0;

//Variables que controlan el nivel tratado actualmente y el anterior
nivel_anterior = 0;
nivel_actual = 0;

//Creaci&oacute;n arrays de primer nivel
var a_nivel_1_nombres = new Array();
var a_nivel_1_links_cont = new Array();
var a_nivel_1_hijos = new Array();       
var a_nivel_1_codigos = new Array();

//Variables para el control de la existencia de hijos y links para los niveles 1 y 2 pendientes de confirmar.
nivel_1_tiene_hijos = 0;
nivel_2_tiene_hijos = 0;

nivel_1_tiene_link = 0;
nivel_2_tiene_link = 0;

//Variable que cuenta el n&uacute;mero de elementos del men&uacute;
var elementos_menu_nivel_1 = 0;
var elementos_menu_nivel_2 = 0;
var elementos_menu_nivel_3 = 0;

/**********************************************************************************/
// FUNCI&Oacute;N: ADDMENU - Funci&oacute;n que genera los arrays de elementos visibles
//                    del men&uacute; por parte del usuario
// PARÁMETROS: codigo
//		       elemento: nombre del elemento a pintar
//             link: url del elemento
//             nivel: nivel (1, 2 o 3) del elemento
// RETURN: void
/**********************************************************************************/
function AddMenu(codigo,elemento,link,nivel)
{
	
	//Primero miramos el nivel en el que estamos
	switch (nivel)
	{
		case "1":
			//alert("He entrado en nivel 1");
			nivel_actual = 1;
			
			//TRATAMOS EL SEGUNDO NIVEL
			nombre_array_nivel_2 = "a_nivel_2_" + posicion_nivel_1;
			
			if (nivel_2_tiene_hijos == 1)
			{
				a_nivel_2_hijos_actual = eval(nombre_array_nivel_2 + "_hijos");
				a_nivel_2_hijos_actual[posicion_nivel_2] = 1;
				delete a_nivel_2_hijos_actual;
				
				a_nivel_2_nombres_actual = eval(nombre_array_nivel_2 + "_nombres");
				a_nivel_2_nombres_actual.length+=1;
				delete a_nivel_2_nombres_actual;
					
				a_nivel_2_links_actual = eval(nombre_array_nivel_2 + "_links_cont");
				a_nivel_2_links_actual.length+=1;
				delete a_nivel_2_links_actual;
					
				a_nivel_2_hijos_actual = eval(nombre_array_nivel_2 + "_hijos");
				a_nivel_2_hijos_actual.length+=1;
				delete a_nivel_2_hijos_actual;
					
				a_nivel_2_codigos_actual = eval(nombre_array_nivel_2 + "_codigos");
				a_nivel_2_codigos_actual.length+=1;
				delete a_nivel_2_codigos_actual;
					
				nivel_2_tiene_hijos = 0;
				nivel_2_tiene_link = 0;
			}
			
			if (nivel_1_tiene_hijos == 1)
			{
				a_nivel_1_hijos[posicion_nivel_1] = 1;
			}
			
			if (nivel_1_tiene_link == 1 || nivel_1_tiene_hijos == 1)
			{
				if (nivel_2_tiene_hijos == 0 && nivel_2_tiene_link == 0)
				{
					if (nivel_anterior == 1)
					{
						eval(nombre_array_nivel_2 + "_nombres = new Array()");
						eval(nombre_array_nivel_2 + "_links_cont = new Array()");
						eval(nombre_array_nivel_2 + "_hijos = new Array()");
						eval(nombre_array_nivel_2 + "_codigos = new Array()");
						
						a_nivel_2_nombres_actual = eval(nombre_array_nivel_2 + "_nombres");
						a_nivel_2_nombres_actual.length+=1;
						delete a_nivel_2_nombres_actual;
					
						a_nivel_2_links_actual = eval(nombre_array_nivel_2 + "_links_cont");
						a_nivel_2_links_actual.length+=1;
						delete a_nivel_2_links_actual;
					
						a_nivel_2_hijos_actual = eval(nombre_array_nivel_2 + "_hijos");
						a_nivel_2_hijos_actual.length+=1;
						delete a_nivel_2_hijos_actual;
					
						a_nivel_2_codigos_actual = eval(nombre_array_nivel_2 + "_codigos");
						a_nivel_2_codigos_actual.length+=1;
						delete a_nivel_2_codigos_actual;
					}
					a_nivel_2_nombres_actual = eval(nombre_array_nivel_2 + "_nombres");
					a_nivel_2_nombres_actual.length-=1;
					delete a_nivel_2_nombres_actual;
					
					a_nivel_2_links_actual = eval(nombre_array_nivel_2 + "_links_cont");
					a_nivel_2_links_actual.length-=1;
					delete a_nivel_2_links_actual;
					
					a_nivel_2_hijos_actual = eval(nombre_array_nivel_2 + "_hijos");
					a_nivel_2_hijos_actual.length-=1;
					delete a_nivel_2_hijos_actual;
					
					a_nivel_2_codigos_actual = eval(nombre_array_nivel_2 + "_codigos");
					a_nivel_2_codigos_actual.length-=1;
					delete a_nivel_2_codigos_actual;
				}
				posicion_nivel_1+=1;
			}
			
			a_nivel_1_nombres[posicion_nivel_1] = escape(elemento);
			a_nivel_1_links_cont[posicion_nivel_1] = link;
			nivel_1_tiene_link = 0;
			a_nivel_1_hijos[posicion_nivel_1] = 0;
			nivel_1_tiene_hijos = 0;
			a_nivel_1_codigos[posicion_nivel_1] = codigo;
			
			if (link!="")
			{
				nivel_1_tiene_link = 1;
			}
			
			nivel_anterior = 1;
			elementos_menu_nivel_1 = elementos_menu_nivel_1 + 1;

			break;
			
		case "2":
			//alert("He entrado en nivel 2");
			nivel_actual = 2;
			
			nombre_array_nivel_2 = "a_nivel_2_" + posicion_nivel_1;
			
			if (nivel_2_tiene_hijos == 1)
			{
				a_nivel_2_hijos_actual = eval(nombre_array_nivel_2 + "_hijos");
				a_nivel_2_hijos_actual[posicion_nivel_2] = 1;
				delete a_nivel_2_hijos_actual;
			}
			
			if (nivel_2_tiene_link == 1 || nivel_2_tiene_hijos == 1)
			{
				posicion_nivel_2+=1;
			}
			
			if (nivel_anterior < nivel_actual)
			{
				posicion_nivel_2=0;
				eval(nombre_array_nivel_2 + "_nombres = new Array()");
				eval(nombre_array_nivel_2 + "_links_cont = new Array()");
				eval(nombre_array_nivel_2 + "_hijos = new Array()");
				eval(nombre_array_nivel_2 + "_codigos = new Array()");
			}
			
			a_nivel_2_nombres_actual = eval(nombre_array_nivel_2 + "_nombres");
			a_nivel_2_nombres_actual[posicion_nivel_2] = escape(elemento);
			delete a_nivel_2_nombres;
			
			a_nivel_2_links_actual = eval(nombre_array_nivel_2 + "_links_cont");
			a_nivel_2_links_actual[posicion_nivel_2] = link;
			delete a_nivel_2_links_actual;
			nivel_2_tiene_link = 0;
			
			a_nivel_2_hijos_actual = eval(nombre_array_nivel_2 + "_hijos");
			a_nivel_2_hijos_actual[posicion_nivel_2] = 0;
			delete a_nivel_2_hijos_actual;
			nivel_2_tiene_hijos = 0;
			
			a_nivel_2_codigos_actual = eval(nombre_array_nivel_2 + "_codigos");
			a_nivel_2_codigos_actual[posicion_nivel_2] = codigo;
			delete a_nivel_2_codigos_actual;
			
			if (link!="")
			{
				nivel_1_tiene_hijos = 1;
				nivel_2_tiene_link = 1;
			}
			
			nivel_anterior = 2;
			elementos_menu_nivel_2 = elementos_menu_nivel_2 + 1;
			
			break;
			
		case "3":
			//alert("He entrado en nivel 3");
			nivel_actual = 3;
			
			nombre_array_nivel_3 = "a_nivel_3_" + posicion_nivel_1 + "_" + posicion_nivel_2;
			
			if (nivel_anterior < nivel_actual)
			{
				posicion_nivel_3=0;
				eval(nombre_array_nivel_3 + "_nombres = new Array()");
				eval(nombre_array_nivel_3 + "_links_cont = new Array()");
				eval(nombre_array_nivel_3 + "_codigos = new Array()");
			}
			
			a_nivel_3_nombres_actual = eval(nombre_array_nivel_3 + "_nombres");
			a_nivel_3_nombres_actual[posicion_nivel_3] = escape(elemento);
			delete a_nivel_3_nombres;
			
			a_nivel_3_links_actual = eval(nombre_array_nivel_3 + "_links_cont");
			a_nivel_3_links_actual[posicion_nivel_3] = link;
			delete a_nivel_3_links_actual;
			
			a_nivel_3_codigos_actual = eval(nombre_array_nivel_3 + "_codigos");
			a_nivel_3_codigos_actual[posicion_nivel_3] = codigo;
			delete a_nivel_3_codigos_actual;
			
			nivel_2_tiene_hijos = 1;
			nivel_1_tiene_hijos = 1;
			posicion_nivel_3+=1;

			nivel_anterior = 3;
			elementos_menu_nivel_3 = elementos_menu_nivel_3 + 1;

			break;
		default: 
			alert("Esto es el caso default. Se puede borrar");
	}
}


/**********************************************************************************/
// FUNCI&Oacute;N: TERMINAR_TRADUCCION - Funci&oacute;n encargada de terminar la traducci&oacute;n
// RETURN: void
/**********************************************************************************/
function terminar_traduccion()
{
	//Lo primero es cerrar los arrays que han ido cre&aacute;ndose utilizando el m&eacute;todo AddNew
	//Para tratar el &uacute;ltimo elemento es necesario a&ntilde;adir uno final (es falso)
	AddMenu ("0","Finalizaci&oacute;n","","1");
			
	//Acortamos en 1 la matriz de nivel 1 ya que tiene el elemento final falso.
	a_nivel_1_nombres.length-=1;
	a_nivel_1_links_cont.length-=1;
	a_nivel_1_hijos.length-=1;
	a_nivel_1_codigos.length-=1;
}

