/*
	Image Cross Fade Redux
	Version 1.0
	Last revision: 02.15.2006
	steve@slayeroffice.com

	Rewrite of old code found here: http://slayeroffice.com/code/imageCrossFade/index.html
*/


var 
   d = document,
	shows = new Array();

   window.addEventListener?window.addEventListener('load',shows_start,false):window.attachEvent('onload',shows_start);

function shows_add (id, width, height, displaySecs, crossSecs, styles)
{
	if ( !d.getElementById || !d.createElement ) return;

   var parms = 
		{
			id : id,
			displaySecs : displaySecs,
			crossSecs : crossSecs,
         styles : styles,
			width: width,
			height: height,

         objs : new Array(), 
			element : null,
			currentStyle : 0,
			style : '',
			current : 0,
			next : 0,
			width : 0,
			height : 0,
			cOpacity : 0,
			nOpacity : 0,
			cWidth : 0,
			nWidth : 0,
			cHeight : 0,
			nHeight : 0
		};
		
	shows[shows.length] = parms;	
}

function shows_start ()
{
   var i, index, parms;
	
	for (index=0; index < shows.length; index++)
	{
	   parms = shows[index]
		parms.element = d.getElementById(parms.id);
		//parms.width = 265; //parms.element.style.width;
		//parms.height = 200; //parms.element.style.height;
	
		parms.objs = parms.element.getElementsByTagName('span');
	
		for (i=1; i < parms.objs.length; i++)
		{
			parms.objs[i].style.display = 'none';
		}
		parms.objs[0].style.display = 'block';
		parms.current = 0;
		
		show_init (index);
	}

}

function show_init ( index )
{
   var direction, parms = shows[index];
	
	parms.style = parms.styles[parms.currentStyle];
	parms.currentStyle = parms.styles[parms.currentStyle+1]?parms.currentStyle+1:0;
	
	parms.next = parms.objs[parms.current+1]?parms.current+1:0;

   if (parms.style == 'fade')
   {
		parms.cOpacity = 1;
		parms.nOpacity = 0;
	   show_fade ( index );
	}
   if ( parms.style == 'x-slide-left' || parms.style == 'x-slide-right' )
   {
		parms.cWidth = parms.width;
		parms.cHeight = parms.height;
		parms.nWidth = 0;
		parms.nHeight = parms.height;
      if (parms.style == 'x-slide-left')
		   direction = 'left';
		else 
		   direction = 'right';

	   show_slide ( index, 'x', direction );
	}
   if ( parms.style == 'y-slide-up' || parms.style == 'y-slide-down')
   {
		parms.cWidth = parms.width;
		parms.cHeight = parms.height;
		parms.nWidth = parms.width;
		parms.nHeight = 0;
      if (parms.style == 'y-slide-up')
		   direction = 'up';
		else 
		   direction = 'down';

	   show_slide ( index, 'y', direction );
	}
   if ( parms.style == 'xy-slide-left-up' )
   {
		parms.cWidth = parms.width;
		parms.cHeight = parms.height;
		parms.nWidth = 0;
		parms.nHeight = 0;
		var img = parms.objs[parms.current].getElementsByTagName('img');
		//alert(img[0].src);
	   parms.element.style.backgroundImage = "url(" + img[0].src + ")";
		setTimeout("show_slide("+index+",'xy','left')", 0); 
		setTimeout("show_slide("+index+",'yx','up')", 0); 
	}
   //if ( parms.style == 'xy-slide-left-up' || parms.style == 'xy-slide-left-down' ||
	//	  parms.style == 'xy-slide-right-up' || parms.style == 'xy-slide-right-down' )
   //{
	//	parms.cWidth = parms.width;
	//	parms.cHeight = parms.height;
	//	parms.nWidth = 0;
	//	parms.nHeight = 0;
	//	var img = parms.objs[parms.current].getElementsByTagName('img');
	// parms.element.style.backgroundImage = "url(" + img[0].src + ")";
   //   if (parms.style == 'xy-slide-left-up' || parms.style == 'xy-slide-right-up')
	//	   direction = 'up';
	//	else 
	//	   direction = 'down';
	//	setTimeout("show_slide("+index+",'yx','"+direction+"')", 0); 
   //  if (parms.style == 'xy-slide-left-up' || parms.style == 'xy-slide-left-down')
	//	   direction = 'left';
	//	else 
	//	   direction = 'right';
	//	setTimeout("show_slide("+index+",'xy','"+direction+"')", 0); 
	//}
}

function show_fade ( index )
{
   var parms = shows[index];

   parms.cOpacity -= .01;
	parms.nOpacity += .01;

	setOpacity(parms.objs[parms.current], parms.cOpacity);
	setOpacity(parms.objs[parms.next], parms.nOpacity);

   parms.objs[parms.next].style.display = 'block';

	if(parms.cOpacity<=0)
	{
		parms.objs[parms.current].style.display = 'none';
		parms.current = parms.next;
	   setTimeout("show_init("+index+")", parms.displaySecs * 1000);
	}
	else
	{
	   setTimeout("show_fade("+index+")", parms.crossSecs * 10);
	}

	function setOpacity( element, opacity)
	{
		if( opacity>.99 )
		{
			return;
		}
		element.style.opacity = opacity
		element.style.MozOpacity = opacity;
	   element.style.KhtmlOpacity = opacity;
		element.style.filter = 'alpha(opacity=' + (opacity*100) + ')';
	}
}

function show_slide( index, axis, direction )
{
   var delay, parms = shows[index];

   if (axis == "y" || axis == "yx")
	{
      delay = (parms.crossSecs * 1000) / parms.height;
   	parms.cHeight -= 1;
   	parms.nHeight += 1;
	}
	else
	{
      delay = (parms.crossSecs * 1000) / parms.width;
		parms.cWidth -= 1;
	   parms.nWidth += 1;
   }
	
	if (direction == 'up' || direction == 'left')
	{
		setClip(parms.objs[parms.current],0,parms.cWidth,parms.cHeight,0);
		setClip(parms.objs[parms.next],
				  parms.height - parms.nHeight,
				  parms.width,
				  parms.height,
				  parms.width - parms.nWidth);
	}
	else
	{
		setClip(parms.objs[parms.next],0,parms.nWidth,parms.nHeight,0);
		setClip(parms.objs[parms.current],
				  parms.height - parms.cHeight,
				  parms.width,
				  parms.height,
				  parms.width - parms.cWidth);
	}
	
	parms.objs[parms.next].style.display = 'block';

   if(( parms.cWidth <= 0 && axis == 'x') || 
		( parms.cHeight <= 0 && axis == 'y') ||
		( ( parms.cHeight <= 0 && parms.cWidth <= 0 ) && axis == 'yx' ) )
	{
		parms.objs[parms.current].style.display = 'none';
	   parms.element.style.backgroundImage = "none";
		parms.current = parms.next;
	   setTimeout("show_init("+index+")", parms.displaySecs * 1000);
	}
	else if ( parms.cWidth > 0 || parms.cHeight > 0 )
	{
		setTimeout("show_slide("+index+",'"+axis+"','"+direction+"')", delay ); 
	}
	
	function setClip ( obj, top, right, bottom, left )
	{
       obj.style.clip = 'rect('+top+'px,'+right+'px,'+bottom+'px,'+left+'px)';
	}
}

