/***********************************************************************************
 *
 *
 * funzioni per la gestione del menu
 *
 * Massimo Viti, 2006-10-12 Firenze, mviti@lamma.rete.toscana.it, IBIMET Firenze Italy
 *
 *
 ***********************************************************************************/
	
// rende true se classname indica che si tratta di un folder
function isFolder(classname)
{
	return (classname.indexOf('folder') != -1);
}

// rende true se classname indica che si tratta di un item disabilitato
function isDisabled(classname)
{
	return (classname.indexOf('disabled') != -1);
}

// passata la stringa con il nome delle classi asserite ad un elemento
// inserisce od elimina la classe 'denied' in base al parametro accountOK e
// rende il nuovo contenuto che della proprieta' <class>
function menuClassAccount(classname, accountOK)
{
	if (!isDisabled(classname))
	{
		if (accountOK) 
		{
			// si elimina l'indicazione alla classe 'denied'
			classname = classname.replace(/^denied/gi, '');
			classname = classname.replace(/ denied/gi, '');
		
			// si elimina l'indicazione alla classe 'fdenied'
			classname = classname.replace(/^fdenied/gi, '');
			classname = classname.replace(/ fdenied/gi, '');		
		}
		else if (classname.indexOf(' denied') == -1)
		{
			classname += " denied"; // si inserisce la classe 'denied'
			
			// nel caso sia un folder si inserisce la classe 'fdenied'
			if (isFolder(classname))
				classname += " fdenied"; 		
		}
	}	
	return classname;
}

// modifica l'icona 'bullet' se indicata
function menuBulletIcon(id_menu, accountOK)
{
	var imgs = id_menu.getElementsByTagName("img");
	if (imgs.length > 0)
	{
		var src = imgs[0].src;
		/*
		if (accountOK)
			src = src.replace(/bullet_gray.png/gi, 'bullet.gif');
		else
			src = src.replace(/bullet.gif/gi, 'bullet_gray.png');
	    */
	    var re_gray = new RegExp(BULLETGRAY_ICON, "gi");
	    var re_norm = new RegExp(BULLET_ICON, "gi");
		
		if (accountOK)
			src = src.replace(re_gray, BULLET_ICON);
		else
			src = src.replace(re_norm, BULLETGRAY_ICON);
		
		imgs[0].src = src;
	}
}

// setta l'account dei menu-folder
function setMenuFolder(id_menu, accountOK)
{
	if (id_menu.nodeType == 1 && id_menu.nodeName.toLowerCase() == "a")
	{
		// si tratta di un tag <a>
		//alert("link: " + id_menu.getAttribute("id") + "  href: " + id_menu.getAttribute("href"));
		setMenuLink(id_menu, accountOK)
	}
	else
	{
		for (var nit = 0; nit < id_menu.childNodes.length; nit++)
		{
			childnode = id_menu.childNodes[nit];
			
			if (childnode.nodeType == 1)
			{
				setMenuFolder(childnode, accountOK);
			}
		}
	}
}

// indica un NON link 
var strDummyHrefLink = "javascript:void(false);"

// rende true se i link e' ipotetico
function isDummyLink(id_anchor)
{
	var href = id_anchor.getAttribute('href');
	return (href == strDummyHrefLink);
}

// tag <a>: sistema il link (href) a seconda se di accountOK
function setMenuLink(id_anchor, accountOK)
{
	if (id_anchor)
	{
		if (!accountOK )
		{
			if (!isDummyLink(id_anchor))
			{
				var shref = id_anchor.getAttribute('href');
				id_anchor.setAttribute('shref', shref);  
				//id_anchor.setAttribute('href', 'javascript:void((false));');
				id_anchor.setAttribute('href', strDummyHrefLink);
			}
		}
		else 
		{
			if (isDummyLink(id_anchor))
			{
				var ahref = id_anchor.getAttribute('href');  
				if (ahref == strDummyHrefLink)
				{
					var shref = id_anchor.getAttribute("shref");  
					if (shref.length)
						id_anchor.setAttribute("href", shref);
				}
			}
		}
	}
}

// elimina o ripristina il contenuto di href del tag <a> in base al valore di accountOK
// idmenu: identificativo dell'elemento da utilizzare
// accountOK: booleano che indica se far utilizzare o meno l'account
function setSHref(idmenu, accountOK)
{
	var id_menu = document.getElementById(idmenu);
	if (id_menu)
	{
		if (!isFolder(id_menu.className))
		{
			// se non e' un folder ma un link rimuove l'indirizzo di link
			var id_anchor = document.getElementById(idmenu + "_anchor");
			setMenuLink(id_anchor, accountOK);
		}
	}		
}

// controlla e setta le impostazine del menu-item
function setMenuItem(idmenu, accountOK)
{
	var id_menu = document.getElementById(idmenu);
	if (id_menu)
		setMenuFolder(id_menu, accountOK);
	/*
	if (id_menu)
	{
		if (isFolder(id_menu.className))
			setMenuFolder(id_menu, accountOK); // e' un folder
		else
			setSHref(idmenu, accountOK);	   // non e' un folder
	}
	*/
}


// imposta la proprieta 'class' dell'elemento 'idmenu'
// in base a quanto indicato dal parametro accountOK
// accountOK = true: l'utente ha il permesso per accedere all'elemento-menu
//             false: l'utente NON ha il permesso per accedere all'elemento-menu
function menuItemAccount(idmenu, accountOK)
{
	var id_menu = document.getElementById(idmenu);
	if (id_menu)
	{		
		menuBulletIcon(id_menu, accountOK);				      
		id_menu.className = menuClassAccount(id_menu.className, accountOK);
		setMenuItem(idmenu, accountOK);
	}
}



// controlla l'accessibilita' dell'utente in corso ai vari elmenti dei menu
function setMenuAccount()
{
	var id_hmenu;
	
	var dbadminOK = chkAccount('dbadmin'); // ricava se l'utente ha account 'dbadmin'
	var adminOK   = chkAccount('admin');   // ricava se l'utente ha account 'admin'
	
	//menuItemAccount('hmenu_database', dbadminOK);
	menuItemAccount('hmenu_dbadmin', dbadminOK);
	
	menuItemAccount('hmenu_admin', adminOK);
}


