function ImageRotation() {
	var myImages = new Array();
	var myTooltips = new Array();
	var myLinks = new Array();
	var myIndex = 1;
	var myContainer, myImage;
	
	this.add = function(inImage, inTooltip) {
		myImages[myImages.length] = inImage;
		myTooltips[myTooltips.length] = inTooltip;
		myLinks[myLinks.length] = ""; 
	}

	this.add = function(inImage, inTooltip, inLink) {
		myImages[myImages.length] = inImage;
		myTooltips[myTooltips.length] = inTooltip;
		myLinks[myLinks.length] = inLink; 
	}
	
	this.rotate = function(inElementID) {
		myContainer = document.getElementById(inElementID);
		for(var i=0; i<myContainer.childNodes.length; i++) {
			if(myContainer.childNodes[i].nodeName.toLowerCase() == "img")
				myImage = myContainer.childNodes[i];
		}
		
		switch(myImages.length) {
			case 0:
				break;
			
			case 1:
				if(myLinks[0] != null && myLinks[0].length > 0)
					myContainer.parentNode.href = myLinks[0];
				myImage.src = myImages[0];
				myImage.alt = myTooltips[0];
				myImage.title = myTooltips[0];
				break;
			
			default:
				if(myLinks[0] != null && myLinks[0].length > 0)
					myContainer.parentNode.href = myLinks[0];
				myImage.src = myImages[0];
				myImage.alt = myTooltips[0];
				myImage.title = myTooltips[0];
				myContainer.style.backgroundRepeat = "no-repeat";
				myContainer.style.backgroundImage = "url('" + myImages[1] + "')";
				Timer.startTimer(6000, null, null, fade, myImage);
				break;
		}
	}
	
	var onFadeFinished = function() {
		if(myLinks[myIndex] != null && myLinks[myIndex].length > 0)
			myContainer.parentNode.setAttribute("href", myLinks[myIndex]);
		else
			myContainer.removeAttribute("href");
		myImage.src = myImages[myIndex];
		myImage.alt = myTooltips[myIndex];
		myImage.title = myTooltips[myIndex];
		setOpacity(myImage, 100);
		
		myIndex = myIndex == myImages.length-1 ? 0 : myIndex+1;
		myContainer.style.backgroundImage = "url('" + myImages[myIndex] + "')";
	}
	
	
	
	var setOpacity = function(inNode, inOpacity) {
		inNode.style.opacity = inOpacity/100;
		inNode.style.MozOpacity = inOpacity/100;
		inNode.style.filter = "alpha(opacity: " + inOpacity + ")";
	}
	
	var onFadeInternal = function(inNode, inStep) {
		var myOpacity = parseFloat(inNode.style.opacity) + inStep;
		if(myOpacity > 1) myOpacity = 1;
		if(myOpacity < 0) myOpacity = 0;
		
		setOpacity(inNode, myOpacity * 100);
	}
	
	var fade = function(inComponent, inOpacity, inSteps, inTime) {
		// determine DOM node that should be faded
		inComponent = inComponent.getComponent ? inComponent.getComponent() : inComponent;
		// initialize DOM node opacity
		if(!inComponent.style.opacity) inComponent.style.opacity = 1;
		
		// initialize settings
		inOpacity = inOpacity == null ? 0 : inOpacity;
		inTime = inTime == null ? 1000 : inTime;
		inSteps = inSteps == null ? 20 : inSteps;
		var myIncrement = (inOpacity/100 - parseFloat(inComponent.style.opacity)) / inSteps;
		
		Timer.startTimer((inTime / inSteps), inSteps, onFadeFinished, onFadeInternal, inComponent, myIncrement);
	}
}
