﻿//##############################################################################
//####         _ I N C L U D E  /  H T M L  P L U S _ M E N U . J S         ####
//##############################################################################
//		%Application:	
//		%Module:		_Include
//		%Customer:		
//		%Attributes:	
//	08/04/2010	ver. 1.1.1.1	- [40] Modificato nome variabile: poteva essere ambiguo e creare errori in futuro.
//	07/04/2010	ver. 1.1.1		- [40] Corretto qualche problema conseguente alla modifica precedente, e aggiunto funzionalità di timeout su
//				evento onMouseOut, che però per ora non funziona per cui è stato disattivato.
//	07/04/2010	ver. 1.1.0		- [40] Ora non setta più gli attributi degli oggetti ma aggiunge o rimuove un className dall'elemento LI.
//	21/04/2009	ver. 1.0.1.1	- [40] Commentato codice per creare la freccia del menù, perchè non serve.
//	12/12/2008	ver. 1.0.1		- [40] Aggiunto settaggio attributo di stile DISPLAY per risolvere un problema di scrollbar della pagina
//	01/12/2008	ver. 1.0.0		- [56] Primo versione.


function HtmlPlus_Menu(IdUlMenu, CssSubMenuOffset, optMouseOutTimer) {
	var ulRoot = document.getElementById(IdUlMenu);
	var ulTags = ulRoot.getElementsByTagName('ul');
	var ul, li, strMouseOver, strMouseOut;
	ulRoot._HtmlPlus_Menu__mouseInfo = {obj:null, tmr:null, fncOut:null};
	eval('ulRoot._HtmlPlus_Menu__mouseInfo.fncOut = function(optAbortLI){' +
				'var info = document.getElementById(\'' + CStrJS(ulRoot.id) + '\')._HtmlPlus_Menu__mouseInfo;' +
				'if (info.tmr) window.clearTimeout(info.tmr);' +
				'if (optAbortLI !== info.obj) RemoveClassName(info.obj, \'aMouHv\');' +
				'info.tmr = null;' +
			'}');
	optMouseOutTimer = 0;	//Per ora il meccanismo di timeout non funziona, quindi lo tengo disattivato.
	strMouseOver = 'li.onmouseover = function() {' +
			'var info = findParentObj(this, \'UL\', \'id\')._HtmlPlus_Menu__mouseInfo;' +
			'if (info.tmr) info.fncOut(this);' +
			'AddClassName(this, \'aMouHv\');' +
		'}';
	if (optMouseOutTimer) {
		strMouseOut = 'li.onmouseout = function() {' +
				'var info = findParentObj(this, \'UL\', \'id\')._HtmlPlus_Menu__mouseInfo;' +
				'info.obj = this;' +
				'info.tmr = window.setTimeout(\'document.getElementById(\\\'' + CStrJS(ulRoot.id) + '\\\')._HtmlPlus_Menu__mouseInfo.fncOut();\', ' + optMouseOutTimer.toString() + ');' +
			'}';
	} else {
		strMouseOut = 'li.onmouseout = function() {' +
				'var info = findParentObj(this, \'UL\', \'id\')._HtmlPlus_Menu__mouseInfo;' +
				'info.obj = this;' +
				'info.fncOut();' +
			'}';
	}
	for (var t=0; t<ulTags.length; t++) {
		ul = ulTags[t];
		li = ul.parentNode;
		//ul.style.top = (li.offsetHeight + CssSubMenuOffset).toString() + 'px';
		//var spanRef = document.createElement('span');
		//spanRef.className = 'ArrS';
		//spanRef.innerHTML = '&nbsp;&nbsp;&nbsp;&nbsp;';
		//li.getElementsByTagName('a')[0].appendChild(spanRef);
		eval(strMouseOver);
		eval(strMouseOut);
	}
}

