/*
 *
 * ROTATING BANNER v1.0
 * author: C2K internet solutions
 * website: http://www.c2k.nl/
 *
 */
 
/* ROTATOR CLASS */

function Rotator()
{
	/* PRIVATES */
	
	var lnCurrentImage  = 0;
	var lnSpeed 		= 5000;
	var lnFadeSpeed 	= 25;
	var laImages  		= new Array();
	
	/* PUBLIC METHODS */
	
	this.init = init;
	
	/*  CONSTRUCTOR */
	
	function init(pstrID, pnSpeed, pnFadeSpeed)
	{
		var loRotator = document.getElementById(pstrID);
		var lnIndex   = 0;
	
		if(pnSpeed > 0) { lnSpeed = pnSpeed; }
		if(lnFadeSpeed > 0) { lnFadeSpeed 	= Math.round(pnFadeSpeed / 20); }
	
		// get images
		for(var i = 0; i < loRotator.childNodes.length; i++)
		{
			var object = loRotator.childNodes[i];
			
			if(object.tagName == 'li' || object.tagName == 'LI') {
				laImages[lnIndex] = object;
				
				lnIndex++;
			}
		}
		
		if(laImages.length > 0)
		{		
			// set first image
			laImages[0].style.opacity = 1.0;
			laImages[0].style.filter = "alpha( opacity=100 )";
			laImages[0].style.display = 'block';
			
			// if more than one image set timeout
			if(laImages.length > 1)
			{	
				setTimeout(rotate, lnSpeed);
			}
		}
	}
	
	/* FUNCTION: ROTATE */

	function rotate()
	{
		var lnNext = 0;
		
		// choose next image
		if((lnCurrentImage + 1) < laImages.length) {
			lnNext = lnCurrentImage + 1;
		}
		
		// fade to next image
		laImages[lnNext].style.opacity = 0.00;

		fade(lnCurrentImage, lnNext);
		
		// set new current image
		lnCurrentImage = lnNext;
		
		// set timeout
		setTimeout(rotate, lnSpeed);
	}

	/* FUNCTION FADE IN/OUT */

	function fade(pnCurrent, pnNext)
	{
		var loCurrent = laImages[pnCurrent];
		var loNext    = laImages[pnNext];
		
		// fade current image out
		loCurrent.style.opacity -= 0.05;
		loCurrent.style.filter = "alpha( opacity=" + Math.round(loCurrent.style.opacity * 100) + " )";
		
		// fade new image in
		loNext.style.opacity = parseFloat(loNext.style.opacity) + 0.05;
		loNext.style.filter = "alpha( opacity=" + Math.round(loNext.style.opacity * 100) + " )";
		
		if(loCurrent.style.opacity <= 0) {
			loCurrent.style.display = 'none';
		}
		
		if(loNext.style.opacity > 0) {
			loNext.style.display = 'block';
		}
		
		// check fading and set timeout
		if(loCurrent.style.opacity > 0 && loNext.style.opacity < 100) {
			//setTimeout(fade, lnFadeSpeed, pnCurrent, pnNext);
			
			setTimeout(function() { fade(pnCurrent, pnNext); }, lnFadeSpeed);
		}
	}
}

/* ROTATOR MENU CLASS */

function RotatorMenu()
{
	/* PRIVATES */
	
	var lnCurrentImage  = 0;
	var lnSpeed 		= 5000;
	var lnFadeSpeed 	= 25;
	var laImages  		= new Array();
	var lnTimeoutID		= 0;
	var lbFading		= false;
	
	/* PUBLIC METHODS */
	
	this.init = init;
	
	/*  CONSTRUCTOR */
	
	function init(pstrID, pstrMenuID, pnSpeed, pnFadeSpeed)
	{
		var loRotator = document.getElementById(pstrID);
		var loMenu    = document.getElementById(pstrMenuID);
		var lnIndex   = 0;
	
		if(pnSpeed > 0) { lnSpeed = pnSpeed; }
		if(lnFadeSpeed > 0) { lnFadeSpeed 	= Math.round(pnFadeSpeed / 20); }
	
		// get images
		for(var i = 0; i < loRotator.childNodes.length; i++)
		{
			var object = loRotator.childNodes[i];
			
			if(object.tagName == 'li' || object.tagName == 'LI') 
			{
				laImages[lnIndex] = object;
				
				lnIndex++;
			}
		}
		
		// make menu
		makeMenu(loMenu);
		
		if(laImages.length > 0)
		{		
			// set first image
			laImages[0].style.opacity = 1.0;
			laImages[0].style.filter = "alpha( opacity=100 )";
			laImages[0].style.display = 'block';
			setActiveMenuItem(0);
			
			// if more than one image set timeout
			if(laImages.length > 1)
			{	
				lnTimeoutID = setTimeout(function() { rotate(null); }, lnSpeed);
			}
		}
	}
	
	/* FUNCTION: MAKE MENU */

	function makeMenu(poMenu)
	{
		// make ul
		var loUL = document.createElement('ul');
		
		// loop menu items
		for(var i = 0; i < laImages.length; i++)
		{
			var object = laImages[i];
			
			loUL = addMenuItem(loUL, object, i, poMenu);
		}
		
		// append ul
		poMenu.appendChild(loUL);
	}
	
	/* FUNCTION: ADD MENU ITEM */
	
	function addMenuItem(poUL, poItem, pnItemNumber, poMenu)
	{
		// make li node and a node
		var loLI  	  = document.createElement('li');
		var loAnchor  = document.createElement('a');
		
		// get alt tekst from image
		var loChild   = poItem.childNodes[0];

		if(loChild.tagName == 'A') { 
			var lstrText  = loChild.childNodes[0].getAttribute('alt');	
			var lstrTitle = loChild.childNodes[0].getAttribute('title');	
		}	
		else {
			var lstrText = loChild.getAttribute('alt');	
			var lstrTitle = loChild.getAttribute('title');	
		}
		
		// set a node
		loAnchor.setAttribute('id', 'item_link_' + pnItemNumber);
		loAnchor.setAttribute('title', lstrTitle);
		loAnchor.setAttribute('href', 'javascript:void(0);');
		loAnchor.innerHTML = lstrText;
		
		// onclick function
		loAnchor.onclick = function() 
		{
			if(!lbFading) 
			{
				// clear interval
				clearTimeout(lnTimeoutID);
				
				rotate(pnItemNumber);
			}
		}
		
		// append
		loLI.appendChild(loAnchor);
		poUL.appendChild(loLI);
		
		return poUL;
	}
	
	/* FUNCTION: SET ACTIVE MENU ITEM */
	
	function setActiveMenuItem(pnItemNumber)
	{
		//var item = document.getElementById('item_link_' + pnItemNumber);
		//var offset = item.offsetTop;
		
		//item.parentNode.parentNode.scrollTop = offset;
		
		// set class for css
		if(pnItemNumber != lnCurrentImage)
		{
			document.getElementById('item_link_' + lnCurrentImage).removeAttribute('class');
			document.getElementById('item_link_' + pnItemNumber).setAttribute('class', 'current');
			
			document.getElementById('item_link_' + lnCurrentImage).className = '';
			document.getElementById('item_link_' + pnItemNumber).className = 'current';
		}
		else 
		{
			document.getElementById('item_link_' + pnItemNumber).setAttribute('class', 'current');
			
			document.getElementById('item_link_' + pnItemNumber).className = 'current';
		}
	}
	
	/* FUNCTION: ROTATE */

	function rotate(pnNext)
	{
		lbFading = true;
		lnNext   = 0;
		
		// choose next image
		if(pnNext == null) {
			if((lnCurrentImage + 1) < laImages.length) {
				lnNext = lnCurrentImage + 1;
			}
		}
		else {
			lnNext = pnNext;
		}
		
		setActiveMenuItem(lnNext);
		
		// fade to next image
		if(lnNext != lnCurrentImage) {
			laImages[lnNext].style.opacity = 0.00;

			fade(lnCurrentImage, lnNext);
		
			// set new current image
			lnCurrentImage = lnNext;
		}
		
		lbFading = false;
		
		// set timeout
		lnTimeoutID = setTimeout(function() { rotate(null); }, lnSpeed);
	}

	/* FUNCTION FADE IN/OUT */

	function fade(pnCurrent, pnNext)
	{
		var loCurrent = laImages[pnCurrent];
		var loNext    = laImages[pnNext];
		
		// fade current image out		
		loCurrent.style.opacity -= 0.05;
		loCurrent.style.filter = "alpha( opacity=" + Math.round(loCurrent.style.opacity * 100) + " )";

		// fade new image in
		loNext.style.opacity = parseFloat(loNext.style.opacity) + 0.05;
		loNext.style.filter = "alpha( opacity=" + Math.round(loNext.style.opacity * 100) + " )";

		if(loCurrent.style.opacity <= 0) {
			loCurrent.style.display = 'none';
		}
			
		if(loNext.style.opacity > 0) {
			loNext.style.display = 'block';
		}
		
		// check fading and set timeout
		if(loCurrent.style.opacity > 0 && loNext.style.opacity < 1) {
			//setTimeout(fade, lnFadeSpeed, pnCurrent, pnNext);
			
			setTimeout(function() { fade(pnCurrent, pnNext); }, lnFadeSpeed);
		}
	}
}
