var hrefLink = "/index.aspx" ; 
var LIV;

function buildArray (livello, id, action) {
	zLivello = livello;
	zSelected = id;
//	alert ( zLivello + " <lv [buildArray] id> " + zSelected );
//  PASSO IL LIVELLO DEL MENU CLICCATO E 'ID DELLO STESSO
// 	LA FUNZIONE PERMETTE DI COSTRUIRE DINAMICAMENTE L'ARRAY UTILIZZATO PER VISUALIZZARE IL MENU
	var levelClick = 1+parseInt(livello);
	// alert ((levelClick+1)+" <=> "+view.length );
	if ( levelClick+1 > view.length ) {
		// 	devo aggiungere 1 elemento all'array 
		view.push(id);
	}
	if ( levelClick+1 == view.length ) {
		// non devo ciclare, ma sempliecemente sostituire l'elemento passato
		view[levelClick] = id ;
	}
	if ( levelClick+1 < view.length ) {
		// devo rimuovere gli elementi in eccedenza
		view[levelClick] = id ;
		for (var i=levelClick+1; i < view.length ; i++) {
			view.pop(i);
		}
	}

	//DOVE SONO?
	if(view.length >=1 ){
		LIV=view[view.length-1];	
	}
	//	RICOSTRUISCO IL MENU'
	buildMenu();
	// alert ( action );
	// 	QUESTA FUNZIONE PERMETTE DI COSTRUIRE IL MENU E VISUALIZZARE UN CONTENUTO ANCHE PER IL NODO, NON SOLO PER LA FOGLIA
	//  SOLO SE SCELTO DI INSERIRE UN CONTENUTO
	if ( action == 'doAction') {
		livello = "";
		for (var i=0; i < view.length ; i++) {
			if ( livello != "" ) livello += ":"+view[i] ;
			else livello += view[i] ;		
		}
	//	alert ( livello );
		location.href = hrefLink + "?ID=" + id + "&LV=" + livello;
	}
}

function navigateCMS ( id ) {
//	LA FUNZIONE NAVIGA LA STRUTTURA CMS CREATA
	var TABELLA = "";
//	colore = "home" ;

	// QUESTA FUNZIONE DA ERRORE IN CASO DI CARTELLA VUOTA
	eval("var CMS = CMS" + id );
		
	var items = CMS.length ;
	// navigo l'array costruito
			for (var i=0; i < items; i++) {
				livello = CMS[i][1];
				if (view[livello]==CMS[i][0]) {
					// VISUALIZZO IL CONTENUTO - // alert ( CMS[i][0] + " - - " );
					var nodo = "nodo";
					if ( CMS[i][5] == 'True' ) { nodo = "foglia" ; }
				//  0 = myRow["dipendenza"] 
				//	1 = myRow["livello"] 
				//  2 = myRow["ordine"] 
				//	3 = myRow["nome"] 
				//	4 = myRow["IDStruttura"] 
				//	5 = myRow["cartella"] 
				//	6 = myRow["nascosto"] 
				//	7 = myRow["linkContenuto"] 
				//	if (!(view[1] > 0) && CMS[i][0] ) { view[1] = "home" ; }
					if ( view.length == 1 ) { // ACCEDNO HOME IL LIVELLO ZERO
						view[1] = 0; 
					}
					// alert ( nodo + " liv:" + CMS[i][1] + " id:" + CMS[i][4] + " selectd:" + view[1] + " / " + CMS[i][0] );
				//	alert ( nodo + " liv:" + CMS[i][1] + " id:" + CMS[i][4] + " class:" + CMS[i][8] );
					
					if ( CMS[i][5] == 'True' ) { 
						//  SE HO UN NODO, ALLORA... LO COSTRUIRCO
						//	TABELLA += buildIMG(buildNodeImg (CMS[i][1], CMS[i][4], CMS[i][3]), 'blu');
							TABELLA += buildTR(buildNode (CMS[i][1], CMS[i][4], CMS[i][3], view[1], CMS[i][7], CMS[i][8] ), CMS[i][0]);
						try {
							TABELLA += navigateCMS( CMS[i][4] );
							// alert ( "VIEW CARTELLA:"+ CMS[i][4] );
							// alert ( "LIVELLO " + livello + " " + view[livello]);
						} catch  (e) {
							// INTERCETTO L'ERRORE GENERATO DALLA PRESENZA DI UNA CARTELLA VUOTA
							// alert(CMS[i][3] + " Cartella vuota!!");
							// alert ("LA CARTELLA " + CMS[i][4] + " E' VUOTA : " + e );						
						}
					} else {
						// COSTRUISCO LA FOGLIA CONTENUTO
						TABELLA += buildTR(buildLeaf (CMS[i][1], CMS[i][4], CMS[i][3], CMS[i][0], view[1], CMS[i][7], CMS[i][8]), CMS[i][0]);
						// alert ( "foglia : "+ CMS[i][4] + " " + CMS[i][3] );
					}

				} //
			}
	return TABELLA;
}
// -------------------------------------------
// FUNZIONE PER COSTRUIRE IL MENU
//
function buildSelected (  ) {

//	alert ( zLivello + " <lv # id> " + zSelected );
	if ( zLivello == 0 && zSelected == 0  ) {
		eval("CMS0[0][8] = 'selected0' ");
		return ;
	}
//	alert ( zLivello + " <lv # id> " + zSelected );
//	ANALIZZO IL LIVELLO PASSATO
	var cmdId = view[zLivello] ;

	var nextId;
	try {
	//	SE HO UN SOTTOLIVELLO ALLORA LA SCELTA è NEL SOTTOLIVELLO
		//if ( isNaN(view[zLivello + 1]) ) alert ( "NaN");
		if ( view[zLivello + 1] == null ) {
			nextId = zSelected;
			// alert ( "null" );
		} else if ( view[zLivello + 1] != '' ) {
			nextId = view[zLivello + 1] ;
		} else {
			nextId = zSelected ;
		}
	} catch  (e) {
		// ALTRIMENTI E' NEL LIVELLO ATTUALE
		// alert ( "catch : " + zSelected );
		nextId = zSelected ;
	}
//	alert ( "next : " + nextId );
//	CARICO L'ARRAY DA ANALIZZARE
	eval("var CXS = CMS" + cmdId );

	// 	SCORRO TUTTO L'ARRAY E TROVO LA CORRISPONDENZA
	for (var y=0 ; y < CXS.length; y++) {
		eval ("var iid = CMS"+ cmdId + "[" + y + "][4]");
		//alert ( " iid : " + iid + " == " + nextId );
		if ( iid == nextId ) {
			CXS[y][8] = "selected" + zLivello;			
			if ((nextId != zSelected)) {
				zLivello++;
				buildSelected();
			}
		} else {
			CXS[y][8] = "";			
		}

	} 
	/*for ( var x=0; x < view.length; x++) {
		alert ( view[x] );
	}*/
	return;
}
function buildMenu() {
//	facio un loop su l'Array view in modo da andare a segnare nella stryuttura di arrai dei manu gli elementi selezionati
	if ( zSelected == '' ) {
		zLivello = 0;
		zSelected = 0;	
	} 
	
	buildSelected ();	//	E'la funzione che aggiunge l'informazioni al menu sul class da assegnare per la visualizzazione
		
	var MENU = navigateCMS(view[0]);
//	alert ( MENU ) ;
//	alert (" LIV: "+LIV );
	document.getElementById('menuCms').innerHTML = "<table border='0' cellspacing='0' cellpadding='0' width=\"180\">"+MENU+"</table>";
	
}
// -------------------------------------------
// COSTRUISCO UNA SERIE DI OGGETTI PER LA COSTRUZIONE DEGLI OGGETTI DEL MENU
function buildLeaf (livello, id, content, CSMLIV, selected, hrefNode, classe) {
	//	AGGIUNGO AL LINK LA POSIZIONE DEM MENU DI NAVIGAZIONE IN MODO DA RIPRISTINARLA ALL'APERTURA
	//alert ( "leaf: " + livello + ", " + id + ", " + colore + ", " + CSMLIV );
	var LV = "";

	for (var i=0; i < view.length ; i++) 
	{
		if ( LV != "" ) LV += ":"+view[i] ;
		else 			LV += view[i] ;
	}
	if(CSMLIV==0)
	{
		LV="0:";
	}
	//var onClick = "buildArray('"+livello+"','"+id+"');"
	var href = hrefLink + "?ID="+id+"&LV="+LV;
	return "<a href=\""+href+"\" id=\"livello"+livello+"\" class=\"" + classe + "\">"+content+"</a>";
}
// -------------------------------------------
//  ANCORA PER LE FOLDER
function buildNode (livello, id, content, selected, hrefNode, classe) {
	// alert ( "node: " + livello + ", " + id + ", " + colore + ", " + selected);
	// alert ( "X " + menuAttivato ) ;

	if ( hrefNode == 'True' ) {
		var onClick = "buildArray('"+livello+"','"+id+"', 'doAction');"
	} else {
		var onClick = "buildArray('"+livello+"','"+id+"', '');"
	}

	return "<a href=\"#\" onClick=\""+onClick+"\" id=\"livello"+livello+"\" class=\"" + classe + "\" >"+content+"</a>";
}
//  TR PER LE LINEE
function buildTR (content, classe, livello) {
	
	//if ( livello == 0 ) image = "<td width=21 bgcolor=white align=center><img src=\"/Images/FRECCINA.gif\" width=8 height=8 border=0 hspace=0/></td>" ;
	//else image = "<td width=21 bgcolor=white>&nbsp;</td>" ;
	td = "<td>" + content + "</td>" ;
	tr = "<tr>" + td + "</tr>";
	return tr;
}
/* function buildNodeImg (livello, id, content) {
	immagine = "<img src=\"/images/spacer.gif\" width=\"210\" height=\"28\">" ;
	var onClick = "buildArray('"+livello+"','"+id+"');"
	return "<a href=\"#\" onClick=\""+onClick+"\" id=\"livello"+livello+"\">"+immagine+"</a>";
} */
/* function buildIMG(content, classe) {
	ancora = "<a href=\"#\">" + content + "</a>"+"\n";
	td = "<td class=\""+classe+"\">" + ancora + "</td>" ;
	tr = "<tr>" + td + "</tr>";
	return tr;
} */

// IDStruttura	Livello	Ordine	Nome	cartella	dipendenza	nascosto
//	ArrayMenu(i,0) = RSMenu("livello")
//	ArrayMenu(i,1) = RSMenu("dipendenza")
//	ArrayMenu(i,2) = RSMenu("ordine")
//	ArrayMenu(i,3) = RSMenu("nome")
//	ArrayMenu(i,4) = RSMenu("IDStruttura")
//	ArrayMenu(i,5) = RSMenu("cartella")
//	ArrayMenu(i,6) = RSMenu("Nascosto")
