/*
	1º parámetro: menu [number]
	el id de menú, si no hay menúes definidos en el sitio, o queremos mostrar todos, se define como -1
	
	2º parámetro: name [string]
	nombre del menú, a través del cual se controlan los estilos, definidos del siguiente modo
	para los botones marcados como seleccionados
	   nombre_del_menu + '_sel_' + nivel del botón + '_out'
	   nombre_del_menu + '_sel_' + nivel del botón + '_over'
	para los botones marcados como no seleccionados
	   nombre_del_menu + '_lev_' + nivel del botón + '_out'
	   nombre_del_menu + '_lev_' + nivel del botón + '_over'
	
	3º parámetro: base [string / number]
	define a partir de qué elemento o nivel se crea el menú<br />
	  para valores numéricos, el menú se crea a partir del nivel indicado (de 0 a ...)
	  si el valor es 'root', se crea a partir del nivel 0
	  si el valor es 'path', muestra la ruta desde el nivel 0 al registro actual (salvo que se limite, ver 5º parámetro)
	  si el valor es 'this_level' se mostrarán los elementos que están al mismo nivel que el registro actual.
	
	4º parámetro: show_child [number]
		
	5º parámetro: limit [number]
	
	6º parámetro: tipo [number]
	
*/	Array.prototype.in_array = function(search_term) {
		var i = this.length;
		if (i > 0) {
			do{
				if (this[i] === search_term) {
					return true;
				}
			} while (i--);
		}
		return false;
	}

	function crear_botonera(cual,name,dde,show_child,limit,tipo){
	myBot = makeBotonera();	
	if(!cual){
		cual=0;
	}else{
		if(cual.length>0){			
			cualType='array';
		}else{
			cualType='number';			
		}
	}
	/*BUSCAR: level_sel - orden_sel*/
	var g=0;
	/*si el registro fue encontrado*/
	var found = 0;
	/*el orden del registro en el listado */
	var orden_sel=0;
	/*variables temporales, no se utilizan despues*/
	var temp_level=0;
	var temp_parent=0;	
	var curr_menu;	
	while( g < myBot.length ){	
		if(found==0){
			if(g>0){
				if(myBot[g][1]>temp_level){				
					temp_parent=myBot[g-1][3];
					temp_level = myBot[g-1][1];					
				}
			}else{
				temp_parent=0;
			}			
			if(myBot[g][3]==id_sel){
				var level_sel=myBot[g][1];
				var orden_sel=g;
				var parent_sel=temp_parent;
				found=1;
			}else{
				var level_sel=-1;		
			}			
		}
		//--------------------------------
		if(myBot[g][7]!=curr_menu && myBot[g][1]==0){
			curr_menu = myBot[g][7];
		}
		myBot[g][7]=curr_menu;
		myBot[g][9]=myBot[g][2];
		g++;
	}
	
	/*FIN BUSCAR: level_sel - orden_sel*/
	
	/*DEFINO INICIO Y FIN DE LOS NIVELES*/
	if(isNaN(dde)){	
		if(dde=='root'){
			level_ini=0;
			level_end=limit;
		}else if(dde=='this'){
			level_ini=level_sel;
			level_end=limit + level_sel;
		}else if(dde=='this_level'){
			level_ini=0;
			level_end=limit + level_sel;
		}else if(dde=='path'){
			level_ini=0;
			level_end=limit;
		}else{
			level_ini=0;
			level_end=limit;
		}
	}else{
		level_ini=dde;	
		level_end=limit + level_ini;	
	}
	/*FIN DE DEFINICION DE INICIO Y FIN DE NIVELES*/
	var lev_collapse = new Array();
	var lev_collapse2 = new Array();
	curr_lev = 0;
	curr_lev2 = 0;	
	if(show_child==1){
		for (i=0;i<=(level_sel+1);i++){
			lev_collapse[i]=0;		
			lev_collapse2[i]=0;		
		}
		curr_lev = level_sel+1;
		curr_lev2 = level_sel+1;
	}else{
		for (i=0;i<=level_sel;i++){
			lev_collapse[i]=0;
			lev_collapse2[i]=0;
		}
		curr_lev = level_sel;
		curr_lev2 = level_sel;
	}		
	/*recorro la botonera hacia abajo...*/
	
	for (i=0; i<myBot.length; i++){			
		if(i > orden_sel){
			if(myBot[i][1]<curr_lev){
				lev_collapse[myBot[i][1]+1]=1;
				curr_lev = myBot[i][1];
				myBot[i][2]=1;	
			}else{
				if(lev_collapse[myBot[i][1]]==0){
					myBot[i][2]=1;
				}
			}
		}
	}
	/*recorro la botonera hacia arriba...*/
	for (i=orden_sel;i>=0;i--){		
		if(myBot[i][1] < curr_lev2){
			lev_collapse2[myBot[i][1]+1]=1;			
			curr_lev2 = myBot[i][1];
			myBot[i][2]=1;
		}else{
			if(lev_collapse2[myBot[i][1]]==0){
				myBot[i][2]=1;
			}					
		}
	}
	
	var i = 0;
	while(i<myBot.length){		
		if(myBot[i][9]==1){
			pre="sel";
		}else{
			pre="lev";			
		}
		/*si está dentro del rango de level_ini - limit*/		
		if(myBot[i][1]>= level_ini && myBot[i][1]<=level_end && ( (cualType=='number' && (cual >=0 && myBot[i][7]==cual) || cual < 0) || (cualType =='array' && cual.in_array(myBot[i][7])) ) ){
			/*si dde no es 'this_level', me fijo si está en la rama seleccionada*/
						/*si está marcado como this_level*/
							if(myBot[i][5]==tipo || tipo==0){
								if(dde == 'this_level'){
									if(myBot[i][2]==1 && (myBot[i][1]>=level_sel) ){
										document.write("<div class='"+name+"_"+pre+"_"+myBot[i][1]+"_out' onMouseOver='this.className=\""+name+"_"+pre+"_"+myBot[i][1]+"_over\";' onMouseOut='this.className=\""+name+"_"+pre+"_"+myBot[i][1]+"_out\";' onclick='document.location.replace(\""+myBot[i][4]+"\");'>");
										document.write(myBot[i][0]);
										document.write("</div> ");
									}
								/*si es root o this o path*/
								}else{				
									if(myBot[i][2]==1){
										if(dde!= 'path' || (  (dde== 'path' && myBot[i][1]< level_sel) ||  (dde== 'path' && myBot[i][1]==level_sel && myBot[i][3]==id_sel) ) ){
											document.write("<div class='"+name+"_"+pre+"_"+myBot[i][1]+"_out' onMouseOver='this.className=\""+name+"_"+pre+"_"+myBot[i][1]+"_over\";' onMouseOut='this.className=\""+name+"_"+pre+"_"+myBot[i][1]+"_out\";' onclick='document.location.replace(\""+myBot[i][4]+"\");'>");
											document.write(myBot[i][0]);
											document.write("</div> ");
										}
									}else{					
										if(dde!='path' && (  (myBot[i][1]==0) || ((cual > 0 || cualType=='array') && myBot[i][1]<level_end) && !isNaN(dde))  ){
											document.write("<div class='"+name+"_"+pre+"_"+myBot[i][1]+"_out' onMouseOver='this.className=\""+name+"_"+pre+"_"+myBot[i][1]+"_over\";' onMouseOut='this.className=\""+name+"_"+pre+"_"+myBot[i][1]+"_out\";' onclick='document.location.replace(\""+myBot[i][4]+"\");'>");
											document.write(myBot[i][0]);
											document.write("</div> ");
										}					
									}							
								}
							}
			}
			i++;
		}
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}