var isDOM = document.getElementById?1:0;
var isIE = document.all?1:0;
var isNS4 = (navigator.appName=='Netscape' && !isDOM)?1:0;
var isIE4 = (isIE && !isDOM)?1:0;
var isDyn = (isDOM||isIE4||isNS4);

function getRef(id, par) {
	par = (!par ? document : (par.navigator ? par.document : par));
	return (isIE ? par.all[id] : (isDOM ? (par.getElementById?par:par.ownerDocument).getElementById(id) : par.layers[id]));
}

function getSty(id, par) { return (isNS4 ? getRef(id, par) : getRef(id, par).style) }

if (!window.LayerObj) var LayerObj = new Function('id', 'par', 'this.ref=getRef(id, par); this.sty=getSty(id, par); return this');

function getLyr(id, par) { return new LayerObj(id, par) }

function LyrFn(fn, fc) { LayerObj.prototype[fn] = new Function('var a=arguments,p=a[0]; with (this) { '+fc+' }'); }

LyrFn('x','if (!isNaN(a[0])) sty.left=p; else return parseInt(sty.left)');
LyrFn('y','if (!isNaN(a[0])) sty.top=p; else return parseInt(sty.top)');
LyrFn('vis','sty.visibility=p');
LyrFn('bgColor','if (isNS4) sty.bgColor=(p?p:null); ' + 'else sty.backgroundColor=(p?p:"transparent") ');
LyrFn('bgImage','if (isNS4) sty.background.src=(p?p:null); ' + 'else sty.backgroundImage=(p?"url("+p+")":"") ');
LyrFn('write','if (isNS4) with (ref.document) {write(p);close()} else ref.innerHTML=p');

function setLyr(lVis, docW, par) {
	if (!this.seq) seq = 0;
	if (!docW) docW = 0;
	var obj = (!par ? (isNS4 ? window : document.body) : (!isNS4 && par.navigator ? par.document.body : par));
	var newID = '_js_layer_' + seq++;

	if (isIE) obj.insertAdjacentHTML('beforeEnd', '<div id="' + newID + '" style="position:absolute"></div>');
	else if (isDOM) {
		var newL = document.createElement('div');
		obj.appendChild(newL);
		with (newL) { id = newID; style.position='absolute' }
	}
	else if (isNS4) {
		var newL = new Layer(docW, obj);
		newID = newL.id;
	}
	var lObj = getLyr(newID, par);
	with (lObj) { vis(lVis); x(0); y(0); sty.width=docW }
	return lObj;
}

function popOver(mN, iN) {
	with (this) {
		clearTimeout(hideTimer);
		overM = mN;
		overI = iN;
		var thisI = menu[mN][iN];
		if (iN && this.onmouseover) this.onmouseover();
		litOld = litNow;
		litNow = new Array();
		var litM = mN, litI = iN;
		while (1) {
			litNow[litM] = litI;
			if (litM == 'root') break;
			litI = menu[litM][0].parentItem;
			litM = menu[litM][0].parentMenu;
		}
 		var same = true;
 		for (var z in menu) if (litNow[z] != litOld[z]) same = false;
 		if (same) return;
 		for (thisM in menu) {
	 		if (!menu[thisM][0].lyr) continue;
  			litI = litNow[thisM];
  			oldI = litOld[thisM];
  			if (litI && (litI != oldI)) changeCol(thisM, litI, true);
  			if (oldI && (oldI != litI)) changeCol(thisM, oldI, false);
  			if (isNaN(litI)) { menu[thisM][0].lyr.vis('hidden') }
 		}
		clearTimeout(showTimer);
		nextMenu = '';
		if (thisI.type == 'sm:') {
	 		var targ = thisI.href, lyrM = menu[mN][0].lyr;
  			with (menu[targ][0]) {
	  			if (!lyr) update(targ);
				lyr.x(eval(offX) + (typeof(offX)=='number' ? lyrM.x() + thisI.lyr.x() : 0));
				lyr.y(eval(offY) + (typeof(offY)=='number' ? lyrM.y() + thisI.lyr.y() : 0));
				showStr = myName + '.menu.' + targ + '[0].lyr.vis("visible")';
				nextMenu = targ;
   				if (showDelay) showTimer = setTimeout(showStr, showDelay);
   				else eval(showStr);
  			}
 		}
	}
}

function popChangeCol(mN, iN, isOver) {
	with (this.menu[mN][iN]) {
		var col = isOver ? overCol : outCol;
		if (col.indexOf('.') == -1) lyr.bgColor(col);
		else lyr.bgImage(col);
		if ((overClass == outClass) && (outBorder == overBorder)) return;
		if (isNS4) lyr.write(this.getHTML(mN, iN, isOver));
		else with (lyr.ref) {
			className = (isOver ? overBorder : outBorder);
			var chl = (isDOM ? childNodes : children)
			for (var i = 0; i < chl.length; i++) chl[i].className = (isOver ? overClass : outClass);
		}
	}
}

function popOut(mN, iN) {
	with (this) {
		if ((mN != overM) || (iN != overI)) return;
		if (this.onmouseout) this.onmouseout();
		var thisI = menu[mN][iN];
		if (thisI.href != nextMenu) clearTimeout(showTimer);
		if (hideDelay) {
			var delay = ((mN == 'root') && (thisI.type != 'sm:')) ? 50 : hideDelay;
			hideTimer = setTimeout(myName + '.over("root", 0)', delay);
		}
		overM = 'root';
		overI = 0;
	}
}

function popClick(evt) {
	with (this) {
		if (overI) {
			if (this.onclick) this.onclick();
			var thisI = menu[overM][overI];
			with (thisI)
				switch (type) {
					case 'sm:': return;
					case 'js:': { eval(href); break }
					case '': type = 'window';
					default: if (href) eval(type + '.location.href = "' + href + '"');
				}
		}
		over('root', 0);
	}
}

function popClearLyr(wN) { with (this) { for (mN in menu) with (menu[mN][0]) if (par == wN) lyr = null; }}

function addProps(obj, data, names, addNull) { for (var i = 0; i < names.length; i++) if(i < data.length || addNull) obj[names[i]] = data[i]; }

function ItemStyle() {
	var names = ['len', 'spacing', 'popInd', 'popPos', 'pad', 'outCol', 'overCol', 'outClass', 'overClass', 'outBorder', 'overBorder'];
	addProps(this, arguments, names, true);
}

function popStartMenu(mName) {
	with (this) {
		if (!menu[mName]) { menu[mName] = new Array(); menu[mName][0] = new Object(); }
		actMenu = mName;
		menu[mName].length = 1;
		nextItem = 1;
		var aM = menu[mName][0];
		var names = ['isVert', 'isVert', 'offX','offY', 'width', 'itemSty', 'par', 'parentMenu', 'parentItem'];
		addProps(aM, arguments, names, true);
		if (!aM.lyr) aM.lyr = null;
	}
}

function popAddItem() {
	with (this) {
		var aI = menu[actMenu][nextItem++] = new Object();
		var names = ['text', 'href', 'type', 'itemSty', 'len', 'spacing', 'popInd', 'popPos', 'iW', 'iH', 'lyr'];
		addProps(aI, arguments, names, true);
		var iSty = (arguments[3] ? arguments[3] : menu[actMenu][0].itemSty);
		for (prop in iSty) if (aI[prop] == window.UnDeFiNeD) aI[prop] = iSty[prop];
		if (isNS4 && aI.outBorder) aI.pad++;
	}
}

// MENU 
function popGetHTML(mN, iN, isOver) {
	with (this) {
		var itemStr = '';
		with (menu[mN][iN]) {
			var textClass = (isOver ? overClass : outClass);
			if ((type == 'sm:') && popInd) {
				if (isNS4) itemStr += '<layer class="' + textClass + '" left="'+ ((popPos+iW) % iW) + '" top="' + pad + '">' + popInd + '</layer>';
				else itemStr += '<div class="' + textClass + '" style="position: absolute; left: ' + ((popPos+iW) % iW) + '; top: ' + pad + '">' + popInd + '</div>';
			}
			if (isNS4) itemStr += (outBorder ? '<span class="' + (isOver ? overBorder : outBorder) + '"><spacer type="block" width="' + (iW - 8) + '" height="' + (iH - 8) + '"></span>' : '') + '<layer left="' + pad + '" top="' + pad + '" width="' + (iW - (2 * pad)) + '" height="' + (iH - (2 * pad)) + '"><a class="' + textClass + '" href="#" ' + 'onClick="return false" onMouseOver="status=\'\'; ' + myName + '.over(\'' + mN + '\',' + iN + '); return true">' + text + '</a></layer>';
			else itemStr += '<div class="' + textClass + '" style="position: absolute; left: ' + pad + '; top: ' + pad + '; width: ' + (iW - (2 * pad)) + '; height: ' + (iH - (2 * pad)) + '">' + text + '</div>';
		}
 		return itemStr;
	}
}

function popUpdate(upMN) {
	with (this) {
		if (!isDyn) return;
		for (mN in menu) with (menu[mN][0]) {
			if (upMN && (upMN != mN)) continue;
			var eP = eval(par);
			if (eP && eP.navigator && (eP.document.readyState != 'complete')) continue;
			var str = '', iX = 0, iY = 0;
			for (var iN = 1; iN < menu[mN].length; iN++) with (menu[mN][iN]) {
				var itemID = myName + '_' + mN + '_' + iN;
				if (type == 'sm:') { menu[href][0].parentMenu = mN; menu[href][0].parentItem = iN; }
				var shrink = (outBorder && isDOM && !isIE ? 2 : 0);
				iW = (isVert ? width : len) - shrink;
				iH = (isVert ? len : width) - shrink;
				var isImg = (outCol.indexOf('.') != -1) ? true : false;
				if (isDOM || isIE4) str += '<div id="' + itemID + '" ' + (outBorder ? 'class="' + outBorder + '" ' : '') + 'style="position: absolute; left: ' + iX + '; top: ' + iY + '; width: ' + iW + '; height: ' + iH + '; ' + (outCol ? 'background: ' + (isImg ? 'url('+ outCol+')' : outCol) : '') + '" ';
				if (isNS4) str += '<layer id="' + itemID + '" left="' + iX + '" top="' + iY + '" width="' + iW + '" height="' + iH + '" ' + (outCol ? (isImg ? 'background="' : 'bgcolor="') + outCol + '" ' : '');
				str += 'onMouseOver="' + myName + '.over(\'' + mN + '\',' + iN + ')" ' + 'onMouseOut="' + myName + '.out(\'' + mN + '\',' + iN + ')">' +
				getHTML(mN, iN, false) + (isNS4 ? '</layer>' : '</div>');
				var spc = (outBorder ? 1 : 0);
				if (isVert) iY += len + spacing - spc;
				else iX += len + spacing - spc;
			}
			if (!lyr) lyr = setLyr('hidden', 3, eval(par));
			else if (isIE4) setTimeout(myName + '.menu.' + mN + '[0].lyr.sty.width=9', 50);
			with (lyr) { sty.zIndex = 1000; write(str); sty.cursor = (isIE ? 'hand' : 'pointer') }
			for (var i = 1; i < menu[mN].length; i++) menu[mN][i].lyr = getLyr(myName + '_' + mN + '_' + i, lyr.ref);
		}
 		position();
 		menu.root[0].lyr.vis('visible');
	}
}

function popPosition(wN) {
	with (this) {
		for (mN in menu)
			if (!wN || menu[mN][0].par == wN) with (menu[mN][0]) {
				if (!lyr) return;
				if (typeof(offX)!='number' || mN=='root') lyr.x(eval(offX));
				if (typeof(offY)!='number' || mN=='root') lyr.y(eval(offY));
			}
	}
}

//MENU MAIN CONSTRUCTOR ***
function PopupMenu(myName) {
	this.myName = myName;
	this.showTimer = 0;
	this.hideTimer = 0;
	this.showDelay = 0;
	this.hideDelay = 500;
	this.showMenu = '';
	this.menu =  new Array();
	this.litNow = new Array();
	this.litOld = new Array();
	this.overM = 'root';
	this.overI = 0;
	this.actMenu = '';
	this.nextItem = 1;
	this.over = popOver;
	this.changeCol = popChangeCol;
	this.out = popOut;
	this.click = popClick;
	this.clearLyr = popClearLyr;
	this.startMenu = popStartMenu;
	this.addItem = popAddItem;
	this.getHTML = popGetHTML;
	this.update = popUpdate;
	this.position = popPosition;
}

//var hBar = new ItemStyle(80, 1, '', 0, 3, '#5b87be', '#BFCEDB', 'itemText', 'crazyText', '', '');
//var subM = new ItemStyle(22, 1, '&gt;', 0, 3, '#5b87be', '#BFCEDB', 'itemText', 'crazyText', '', '');
//var crazy = new ItemStyle(22, 1, '&gt;', -15, 3, '#5b87be', '#BFCEDB', 'crazyText', 'crazyHover','crazyBorder', 'crazyBorderOver');
var hBar = new ItemStyle(80, 1, '', 0, 3, '#dbdbdb', '#edecec', 'itemText', 'crazyText', '', '');
var subM = new ItemStyle(22, 1, '&gt;', 0, 3, '#5b87be', '#edecec', 'itemText', 'crazyText', '', '');

var pMenu = new PopupMenu('pMenu');
with (pMenu) {
	startMenu('root', true, 1,120, 148, hBar);
	var i,j;
	var lungItem=20;
	var MenuP=0;
	var MenuP2=0;
	var figli=0;
	var Partiti = ',M0';
	var Livello = 0;
	var pos_att = 0;
	var link = '';
	var Target = 0;
	var Metodo = 0;
	var oper = '';

	for (Livello=0;Livello<=jsProg;Livello++) {
		for (MenuP=1;MenuP<=jsProg;MenuP++) {
			if (jsElencoVoci[MenuP][2] == 'M'+Livello) {
				
				pos_att = Partiti.indexOf(','+jsElencoVoci[MenuP][2]);
				if (pos_att == -1) {
					Partiti = Partiti + ',' + jsElencoVoci[MenuP][2]
					startMenu(jsElencoVoci[MenuP][2], true, 151, 0, 148, subM);
				}
							
				figli = 0;
				for (MenuP2=1;(MenuP2<=jsProg && figli==0);MenuP2++) {
					if ((MenuP2 != MenuP) && (jsElencoVoci[MenuP2][2] == jsElencoVoci[MenuP][1])) figli = 1;
				}
				
				//----------- Controlla a capo;
				Descr_Visua = jsElencoVoci[MenuP][3];
				altezza_cella = lungItem;
				if (Descr_Visua.indexOf('@Capo@') != -1)
				{
					Descr_Visua = Descr_Visua.replace(/\@Capo@/g,'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');
					altezza_cella = altezza_cella + 20;
				}
				//----------- Controlla a capo;
				if (figli == 1) {
					addItem('&nbsp; ' + '<img src="/images/arrowsmall.gif" alt='+jsElencoVoci[MenuP][3]+'> '+ Descr_Visua, jsElencoVoci[MenuP][1], 'sm:',hBar, altezza_cella);
				}
				else {
					if (jsElencoVoci[MenuP][4] != '') {
						//Posizione = link.indexOf('www.');
						Posizione = jsElencoVoci[MenuP][4].indexOf('www.');
						if (Posizione != -1) link = jsElencoVoci[MenuP][4];
						else link = 'http://'+svname+jsElencoVoci[MenuP][4];
					}
					else link= '';
					Target = link.indexOf('@Nuovo@');
					oper = '';
					if (Target != -1) {
						link = "javascript: window.open('"+link+"','Win','height=500,width=700,status=yes,toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=yes');";
						link = link.replace(/\@Nuovo@/g,'');
						oper = 'js:';
					}
					Metodo = link.indexOf('@https@');
					if (Metodo != -1) {
						link = link.replace(/\@https@/g,'');
						link = link.replace(/\http:/g,'https:');
					}
					addItem('&nbsp; ' + '<img src="/images/squaresmall.gif" alt='+jsElencoVoci[MenuP][3]+'> '+ Descr_Visua, link, oper, hBar, altezza_cella);
				}
			}
		}
	}
}

var popOldOL = window.onload;
window.onload = new Function('if (popOldOL) popOldOL(); updateVars(); pMenu.update()');
window.onresize = new Function('ns4BugCheck(); updateVars(); pMenu.position()');
window.onscroll = new Function('updateVars(); pMenu.position()');
if (isNS4) document.captureEvents(Event.CLICK);
document.onclick = new Function('evt', 'pMenu.click(); ' +'if (isNS4) return document.routeEvent(evt)');

var winWidth, winHeight, scrollYpos, scrollXpos;
function updateVars() {
	winWidth = (isIE ? document.body.clientWidth : window.innerWidth);
	winHeight = (isIE ? document.body.clientHeight : window.innerHeight);
	scrollYpos = (isIE ? document.body.scrollTop : window.pageYOffset);
	scrollXpos = (isIE ? document.body.scrollLeft : window.pageXOffset);
}

var origWinWidth = window.innerWidth;
function ns4BugCheck() { if (isNS4 && origWinWidth != window.innerWidth) location.reload() }
if (!isIE) setInterval('if (scrollYpos!=pageYOffset || scrollXpos!=pageYOffset) ' + 'window.onscroll()', 50);
