    var fadeColor 		= StringToColor("#FF8000");      
    var fadeId 			= new Array();
    var sObj 			= new Array();
	var SubMenu 		= new Array();
	var nObj 			= 0;    
    var macCompat 		= false;      
	var isNS 			= false;
	var isIE 			= false;	
	var flagOver 		= false;
	var flag 			= false;
	var flagWhichLayerActive = 0;
	var t = 0;
	var menuCount = 4;
	var flagNSStopShowingMenus = false;
	    
    fadeId[0] = null;
    
    	    
    document.onmouseover = domouseover;
    document.onmouseout = domouseout;
       
	if (parseInt(navigator.appVersion) >= 4) {
		if (navigator.appName == "Netscape") 
			isNS = true;
		else if(navigator.appName == "Microsoft Internet Explorer")	
			isIE = true;
	}	
	if(isNS) 
		window.onresize = stopShowingMenus;

	function showLogo(){
		if(navigator.javaEnabled())
			document.write('<applet	archive="SoftBits.jar" codebase = "http://www.softbits.altervista.org" code = "SoftBits.class" width = "480" height = "90" hspace = "0" vspace = "0" align = "middle"></applet>');
		else
			document.write("<img src='http://www.softbits.altervista.org/img/logodx.jpg' width='480' height='90' alt='' border='0' align='left'>");
	}
	
	function overLink(){
		flag = true;
	}

	function TopMenuOver(MenuID,e){
   		if(flagNSStopShowingMenus) 
   			return
   		flagWhichLayerActive = MenuID;
   		flagOver = true;
   		clearTimeout(t);
   		if(isNS){
      		for(i=0;i < menuCount; i++){
         		if(MenuID == i) 
         			show(SubMenu[i]);
         		else 
         			hide(SubMenu[i]);
      		}
   		}
   		else if(isIE){
      		for(i=0;i < menuCount; i++){
         		if(MenuID == i) {
            		if(SubMenu[i].style.pixelLeft > -500 || SubMenu[i].style.pixelLeft < -500 ) 
            			return;
            		show(SubMenu[i]);
         		}
           		else 
           			hide(SubMenu[i]);
      		}
   		}
	}

	function TopMenuOut(MenuID1,e){
   		flagOver = false;
   		clearTimeout(t)
   		if(isNS) 
   			t = setTimeout("SubMenu[" + MenuID1 + "].style.visibility = 'hidden'",200);
   		else if(isIE) 
   			t = setTimeout("hide(SubMenu[" + MenuID1 + "])",200);
	}

	function hide(MenuObject){
		if(isNS)
			MenuObject.style.left = -500+"px";
		else
   			MenuObject.style.pixelLeft = -500;
	}

	function show(MenuObject){
   		if(isNS)
   			MenuObject.style.left = MenuObject.origLeft+"px";
   		else
   			MenuObject.style.pixelLeft = MenuObject.origLeft;
   		MenuObject.style.visibility = 'visible';
	}

	function submenuOver(e){
   		clearTimeout(t);
   		if(isNS){
   			SubMenu[flagWhichLayerActive].style.visibility = 'visible';
   			routeEvent(e);
   		}
   		else if(isIE) 
   			SubMenu[flagWhichLayerActive].style.visibility = 'visible';
   		
	}

	function submenuOut(e){
   		if(isNS){
   			if(flag){
   				flag=false;
   				return;
   			}
   			else if(flagOver){
   				flagOver = false;
   				return;
   			}
      		SubMenu[flagWhichLayerActive].style.visibility = 'hidden';
      		routeEvent(e);
   		}
   		else if(isIE){
      		if(SubMenu[flagWhichLayerActive].contains(event.toElement)) 
      			return;
      		if(event.toElement == document.all.nav0) 
      			return;
      		hide(SubMenu[flagWhichLayerActive]);
   		}
	}


	function stopShowingMenus(){ 
		flagNSStopShowingMenus = true;
	}

    function ShowBanner(){
        document.write("<script type='text/javascript' src='http://www.softbits.it/php/showBanner.php?idSito=" + escape(document.referrer) + "'></script>");
    }   
	
	function ShowStatistics(){
		document.write("&nbsp;");
	}
    
    function StringToColor(Color){
        var colorArr = new Array(3);
        var c;       

        Color = Color.toLowerCase();
        for (i1=0,i=1;i< 7;i += 2,i1++){
            for(j=0;j<2;j++){
                c = Color.charCodeAt(i+j);
                if(c > 47 && c < 58)
                    c -= 47;    
                else if(c > 96 && c < 103)
                    c -= 87;
                if(!j)
                    colorArr[i1] = c << 4; 
                else
                    colorArr[i1] += c;
            }
        }               
        return ((colorArr[0] << 16) | (colorArr[1] << 8) | colorArr[2]);
    }
    
    function domouseover() {
        if(!document.all)
            return;
        var srcElement = event.srcElement;
        if (srcElement.tagName != "A" || !srcElement.href)
            return;
        if (!srcElement.startColor)
            srcElement.startColor = (srcElement.style.color) ? srcElement.style.color : srcElement.currentStyle.color;
        var link = (macCompat ? srcElement.name : srcElement.uniqueID);
        if(!link || link == fadeId[0]) 
            return;        
        var s = StringToColor(srcElement.startColor);
        for(var i = 0; i <= 20; i++)
            fadeId[i+1] = setTimeout("setColor("+ s + ","+ fadeColor + "," + link + "," + i + "," + 20 + ");",i*20);
        fadeId[0] = link;
    }
    
    function domouseout() {
        if(!document.all)
            return;
        var srcElement = event.srcElement;
        if (srcElement.tagName != "A" || !srcElement.href)
            return;
        var link = (macCompat ? srcElement.name : srcElement.uniqueID);
        if (!link || fadeId[0] == null || !eval(fadeId[0])) 
            return;
        var orig = eval(fadeId[0]);         
        for(var i=1;i < fadeId.length;i++)
            clearTimeout(fadeId[i]);
        setColor(StringToColor(orig.startColor),StringToColor(orig.startColor),orig,0,20);
        fadeId[0] = null;
    }
    
    function NumberToString(i){
        i += 48;
        if(i > 57)
            i += 7;
        if(i > 70)
            return "F";
        return String.fromCharCode(i);
    }

    function ColorToString(r,g,b){
        var res,i1;

        res = "#";
        if(r < 0)
            res += "00";
        else if(r > 255)
            res += "FF";
        else{
            i1 = (r >> 4); 
            r -= (i1 << 4);
            res = NumberToString(i1);
            res += NumberToString(r);
        }
        if(g < 0)
            res += "00";
        else if(g > 255)
            res += "FF";
        else{
            i1 = (g >> 4); 
            g -= (i1 << 4);
            res += NumberToString(i1);
            res += NumberToString(g);
        }
        if(b < 0)
            res += "00";
        else if(b > 255)
            res += "FF";
        else{
            i1 = (b >> 4); 
            b -= (i1 << 4);
            res += NumberToString(i1);
            res += NumberToString(b);
        }
        return res;
    }

    function setColor(s,e, element,i,step) {
        var r,g,b,i1;

        r = Math.ceil(((e >> 16) & 0xFF) * i / step);
        g = Math.ceil(((e >> 8) & 0xFF) * i / step);
        b = Math.ceil((e & 0xFF) * i / step);
        
        i1 = (step-i);
        r += Math.ceil(((s >> 16) & 0xFF) * i1 / step);
        g += Math.ceil(((s >> 8) & 0xFF) * i1 / step);
        b += Math.ceil((s & 0xFF) * i1 / step);

        element.style.color = ColorToString(r,g,b);
    }
       
    function getElement(id){
        if(document.all)
            return document.all[id];
        else if(document.getElementById)
            return document.getElementById(id);
        return null;
    }
      
    function InitEffetto(id){
        var lettera,r,g,b,col,index;
        var obj;
    
        srcElement = getElement(id);
        index = nObj;        
        obj = new Object();
        sObj[nObj++] = obj;
        obj.id = id;
        obj.innerHTML = srcElement.innerHTML;
        obj.lettera = srcElement.innerHTML.split('');
        obj.col = new Array();
        obj.col[0] = (srcElement.style.color) ? srcElement.style.color : srcElement.currentStyle.color;
        obj.dc = 1;
        obj.c = 1;              
        obj.pause = true;
        obj.timer = null;
    
        col = StringToColor(obj.col[0]);
        r = ((col >> 16) & 0xFF);
        g = ((col >> 8) & 0xFF);
        b = (col & 0xFF);
        sr = (255 - r) >> 2;
        sg = (255 - g) >> 2;
        sb = (255 - g) >> 2;
        for(i=1;i<5;i++){
            r += sr;
            g += sg;
            b += sb;
            obj.col[i] = ColorToString(r,g,b);
        }
        return index;
    }    
    
    function StartScript(id){
        var index;

        index = -1;   
        for(i=0;i<nObj;i++){
            if(sObj[i].id == id){
                if(sObj[i].pause == false)
                    return;
                index = i;
                break;
            }
        }
        if(index == -1)
            index = InitEffetto(id);
        sObj[index].timer = setTimeout('effetto('+index+')',135);
    }                                   

    function cambia(id,p,col){  
        var obj, frase, lettera, j, srcElement, codice;
        
        obj = sObj[id];
        frase = obj.innerHTML;
        lettera = obj.lettera;    
        if(p < lettera.length)
            lettera[p] = '<FONT size="1" COLOR="' + col + '">' + frase.charAt(p) + '</FONT>';
        codice = "";
        for (j=0;j<lettera.length;j++) 
            codice += lettera[j];    
        srcElement = getElement(obj.id);
        if(srcElement != null)
            srcElement.innerHTML = codice;
    }

    function effetto(id) {
        var c,n;
    
        c = sObj[id].c;
        n = sObj[id].lettera.length - 1;
        if(sObj[id].dc == 1){
            if(c-4>=0) 
                cambia(id,c-4,sObj[id].col[0]);
            if(c-3>=0) 
                cambia(id,c-3,sObj[id].col[1]);
            if(c-2>=0) 
                cambia(id,c-2,sObj[id].col[2]);
            if(c-1>=0) 
                cambia(id,c-1,sObj[id].col[3]);
        }
        cambia(id,c,sObj[id].col[4]);
        if(sObj[id].dc == -1){
            if (c+4<=n) 
                cambia(id,c+4,sObj[id].col[0]);
            if (c+3<=n) 
                cambia(id,c+3,sObj[id].col[1]);
            if (c+2<=n) 
                cambia(id,c+2,sObj[id].col[2]);
            if (c+1<=n) 
                cambia(id,c+1,sObj[id].col[3]);
        }
        if(sObj[id].c == n)
            sObj[id].dc = -1;
        else if(sObj[id].c == 0)
            sObj[id].dc = 1;
        sObj[id].c += sObj[id].dc;
        if(sObj[id].timer != null)
            clearInterval(sObj[id].timer);
        sObj[id].timer = setTimeout('effetto('+id+')',135);
    }