<!-- begin hide here for non-Javascript-enabled browsers
function UB_showHideObject() { //v2.0
var i,p,v,obj,args=UB_showHideObject.arguments;
for (i=0; i<(args.length-1); i+=2) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+1];
if (obj.style) { obj=obj.style; v=(v=='off')?'none':(v=='on')?'block':v; }
obj.display=v; }
}
function UB_showHideNode() { //v1.1
var i,v,obj,args=UB_showHideNode.arguments;
for (i=0; i<(args.length-1); i+=2) {obj=args[i];v=args[i+1];
if (obj.style) { obj=obj.style; v=(v=='off')?'none':(v=='on')?'block':v;}
obj.display=v;	}
}
function UB_changeClass() { //v1.0
	var i,myObj,myClass,args=UB_changeClass.arguments;
	for (i=0; i<(args.length-1); i+=2) {
		myObj=MM_findObj(args[i]);
		myObj.className=args[i+1];
	}
}
//aggiunge una classe a quelle gia presenti
function addClass() { 
	var i,myObj,myClass,args=addClass.arguments;
	for (i=0; i<(args.length-1); i+=2) {
		myObj=MM_findObj(args[i]);
		myObj.className+=myObj.className?' '+args[i+1]:args[i+1];
	}
}
// rimuove la classe passata come argomento
function rmClass(id,stile) {
	stili = new Array(); 
	stili = document.getElementById(id).className.split(" ");
	n=stili.length;
	for(i=0;i<n;i++){
		if(stile==stili[i]){
			stili[i]="";
		}
	}
	document.getElementById(id).className="";
	for(i=0;i<n;i++){
		document.getElementById(id).className += " "+stili[i];
	}	
}
// rimuove l'ultima classe associata ad un oggetto 
//<div id="000" class="class1 class2 class3"> -->viene rimossa class3
function rmLastClass(id){
	var myStyle = document.getElementById(id).className;
	n=myStyle.length;
	while(myStyle.substring(n-1, n)!=' ')
	{
		n--;
	}
    stile = myStyle.substring(0, n);
    document.getElementById(id).className = stile;
}
function UB_genericPop(myUrl,myWinName,myWidth,myHeight,myPars) { //v1.1
	var winLeft=(screen.availWidth-myWidth)/2;
	var winTop=(screen.availHeight-myHeight)/2;
	parameters=myPars+'';
	if(parameters=='') {parameters=',toolbar=0,location=0,status=0,menubar=0,scrollbars=0,resizable=0'};
	newPop=window.open(myUrl,myWinName,'width='+ myWidth +',height='+ myHeight +',left='+ winLeft +',top='+ winTop + parameters);
	newPop.focus();
}
// end hide -->
var activeMNU,subTimeoutID;
function UB_subMNUoff(myMNU) {
//	UB_changeClass('TAB'+myMNU,'TAB'+myMNU+'Off');
	if(subTimeoutID)clearTimeout(subTimeoutID);
	UB_showHideObject(myMNU,'off');
	subTimeoutID='';
	activeMNU='';
}
function UB_timeout(myMNU) {subTimeoutID=setTimeout("UB_subMNUoff('"+ myMNU +"')",2345);}
function UB_subMNUon(myMNU) {
	if(myMNU==activeMNU) {
		if(subTimeoutID)clearTimeout(subTimeoutID);
		subTimeoutID='';
		return;
	}
	if(activeMNU)UB_subMNUoff(activeMNU);
	activeMNU=myMNU;
//	UB_changeClass('TAB'+myMNU,'TAB'+myMNU+'On')
	UB_showHideObject(myMNU,'on');
	UB_timeout(myMNU);
}

function getElementsByClassName(className, tag, elm){
	var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}

//pulisce gli spazi vuoti del sorgente
function cleanWhitespace(node) {
	var notWhitespace = /\S/;
	for (var x = 0; x < node.childNodes.length; x++) {
		var childNode = node.childNodes[x]
		if ((childNode.nodeType == 3)&&(!notWhitespace.test(childNode.nodeValue))) {
		// that is, if it's a whitespace text node
			  node.removeChild(node.childNodes[x])
			  x--
		}
		if (childNode.nodeType == 1) {
		// elements can have text child nodes of their own
			  cleanWhitespace(childNode)
		}
	}
}