// Fade: Initialize the fade functionvar fadeActive = new Array();var fadeQueue  = new Array();var fadeTimer  = new Array();var fadeClose  = new Array();function fadeElementSetup(theID, fdStart, fdEnd, fdSteps, fdClose) {	if (fadeActive[theID] == true) {		// Already animating, queue up this command		fadeQueue[theID] = new Array(theID, fdStart, fdEnd, fdSteps);	} else {		fadeSteps = fdSteps;		fadeCurrent = 0;		fadeAmount = (fdStart - fdEnd) / fadeSteps;		fadeTimer[theID] = setInterval("fadeElement('"+theID+"', '"+fadeCurrent+"', '"+fadeAmount+"', '"+fadeSteps+"')", 15);		fadeActive[theID] = true;		if (fdClose == 1) {			fadeClose[theID] = true;		} else {			fadeClose[theID] = false;		}	}}// Fade: Do the fade. This function will call itself, modifying the parameters, so// many instances can run concurrently.function fadeElement(theID, fadeCurrent, fadeAmount, fadeSteps) {  	if (fadeCurrent == fadeSteps) {	    // We're done, so clear.	    clearInterval(fadeTimer[theID]);	    fadeActive[theID] = false;	    	    // Should we close it?	    	    if (fadeClose[theID] == true) {	    	document.getElementById(theID).style.visibility = "hidden";	    }	    	    // Hang on.. did a command queue while we were working? If so, make it happen now	    	    if (fadeQueue[theID] && fadeQueue[theID] != false) {	    	fadeElementSetup(fadeQueue[theID][0], fadeQueue[theID][1], fadeQueue[theID][2], fadeQueue[theID][3]);	    	fadeQueue[theID] = false;	    }    	} else {  		fadeCurrent++;				// Set the opacity depending on if we're adding or subtracting (pos or neg)		if (fadeAmount < 0) {			setOpacity(Math.abs(fadeCurrent * fadeAmount), theID);		} else {			setOpacity(100 - (fadeCurrent * fadeAmount), theID);		}				// Keep going, and send myself the updated variables		clearInterval(fadeTimer[theID]);		fadeTimer[theID] = setInterval("fadeElement('"+theID+"', '"+fadeCurrent+"', '"+fadeAmount+"', '"+fadeSteps+"')", 15);	}}// Utility: Set the opacity, compatible with a number of browsers. Value from 0 to 100.function setOpacity(opacity, theID) {	var object = document.getElementById(theID).style;	// If it's 100, set it to 99 for Firefox.	if (navigator.userAgent.indexOf("Firefox") != -1) {		if (opacity == 100) { opacity = 99.9999; } // This is majorly retarded	}	// Multi-browser opacity setting	object.filter = "alpha(opacity=" + opacity + ")"; // IE/Win	//object.KhtmlOpacity = (opacity / 100);            // Safari 1.1 or lower, Konqueror	//object.MozOpacity = (opacity / 100);              // Older Mozilla+Firefox	object.opacity = (opacity / 100);                 // Safari 1.2, Firefox+Mozilla}// Utility: Math functions for animation calucations - From http://www.robertpenner.com/easing/function cubicOut(t, b, c, d) {	return c*((t=t/d-1)*t*t + 1) + b;}//fumetti menuvar oldmenu="";var lastmenu="";function showDownloadPopup(obj_fumetto, left, top) {	oldmenu=lastmenu;	if(oldmenu && oldmenu!=obj_fumetto){hideDownloadPopup(oldmenu);}	lastmenu=obj_fumetto;	var popDownload = document.getElementById(obj_fumetto);	if (moveanim.timer != null) {		clearInterval(moveanim.timer);		moveanim.timer = null;	}	popDownload.style.top = top +"px";	popDownload.style.left = left +"px";	setOpacity(0, obj_fumetto);	popDownload.style.visibility = 'visible';	moveStart(popDownload, parseInt(popDownload.style.left), parseInt(popDownload.style.left), parseInt(popDownload.style.top) - 10, parseInt(popDownload.style.top), 10);	fadeElementSetup(obj_fumetto, 0, 100, 13);}function hideDownloadPopup(obj_fumetto) {	var popDownload = document.getElementById(obj_fumetto);	moveStart(popDownload, parseInt(popDownload.style.left), parseInt(popDownload.style.left), parseInt(popDownload.style.top), parseInt(popDownload.style.top) +10, 10);			fadeElementSetup(obj_fumetto, 100, 0, 13, 1);	lastmenu="";}// MOVE: Animate the move of an element.var moveanim = {time:0, beginX:0, changeX:0.0, beginY:0, changeY:0, duration:0.0, element:null, timer:null};function moveStart(elem, startX, endX, startY, endY, duration){	if (moveanim.timer != null) {		clearInterval(moveanim.timer);		moveanim.timer = null;	}	moveanim.time = 0;	moveanim.beginX = startX;	moveanim.changeX = endX - startX;	moveanim.beginY = startY;	moveanim.changeY = endY - startY;	moveanim.duration = duration;	moveanim.element = elem;	moveanim.timer = setInterval("moveAnimDo();", 15);}function moveAnimDo(){	if (moveanim.time > moveanim.duration) {		clearInterval(moveanim.timer);		moveanim.timer = null;	}	else {		moveX = cubicOut(moveanim.time, moveanim.beginX, moveanim.changeX, moveanim.duration);		moveY = cubicOut(moveanim.time, moveanim.beginY, moveanim.changeY, moveanim.duration);		moveanim.element.style.left = moveX + "px";		moveanim.element.style.top = moveY + "px";		moveanim.time++;	}}