//

// montage.js

//



var monBlock	= null;

var monImg		= null;

var monIdx		= 0;

var monContainer= null;

var monTimeout	= 7000;

var monEffect	= 2;

var monHref;

var monSrc;

var monCaption;



function montage( href, src, caption, width, animate )

{

	if( monBlock )

	{

		return;

	}



	monHref		= href;

	monSrc		= src;

	monCaption	= caption;



	// this is the case for browsers that don't support filters...

	var cycle	= Math.floor( Math.random() * href.length );



	// switch off animation if we're not on broadband

	var m_montage	= ( typeof(animate) != "undefined" ? animate : hasBroadband() );

	

	if( m_montage == false || src.length <= 1 || !( isIE4 || isW3C ) )

	{

		document.writeln( montagePicker( cycle ) );

		return;

	}

	

	// go build all of the nested DIVs out

	monIdx		= cycle;

	

	var nextImage	= (monIdx + 1) % src.length;



	document.writeln( "<div id=\"container\" style=\"width:" + width +"px;height:149px\">" );



	for( i = 0; i < src.length; i++ )

	{

		// set up a placeholder

		document.write( "<div id=\"montage" + i + "\" style=\"display:none\">" );

		

		if( i == nextImage )

		{

			// only prefetch the first image we will display

			document.write( montagePicker( i ) );

		}

		

		document.write( "</div>" );

	}



	document.writeln( "</div>" );



	// pull the images out

	monBlock	= new Array( src.length );

	monImg		= new Array( src.length );



	for( i = 0; i < src.length; i++ )

	{

		monBlock[i]	= document.getElementById( "montage" + i );

		

		if( i == nextImage )

		{

			monImg[i] = document.getElementById( "monimg" + i );

		}

		else

		{

			monImg[i] = null;

		}

	}



	monContainer = document.getElementById("container");

	

	montageEffects();

}



function montageEffects()

{

	var nextImage	= (monIdx + 1) % monImg.length;

	

	// run the transition

	if( readIEVer() >= 4.0 && monEffect > 0 )

	{

		if( monEffect == 1 )

		{

			monContainer.style.filter = "blendTrans(duration=0.6)";

			monContainer.filters(0).apply();

 			montageSelect( nextImage );

			monContainer.filters(0).play();

		}

		else

		{

			monContainer.style.filter = "blendTrans(duration=1.5) revealTrans(duration=1.0,transition=7)";

			monContainer.filters(0).apply();

			monContainer.filters(1).apply();

 			montageSelect( nextImage );

			monContainer.filters(0).play();

			monContainer.filters(1).play();

		}

	}

	else

	{

		montageSelect( nextImage );

	}



	// asked to be called again a little later

	setTimeout( "montagePrep()", monTimeout - 1500 );

	setTimeout( "montageSwap()", monTimeout );

}



function montageSelect( nextImage )

{

	monBlock[monIdx].style.display = "none";

	monIdx = nextImage;

	monBlock[monIdx].style.display = "block";

}		



function montagePrep()

{

	// prefetch the next image if we don't already have it

	var nextImage	= (monIdx + 1) % monImg.length;



	if( !monImg[nextImage] )

	{

		monBlock[nextImage].innerHTML = montagePicker( nextImage );

		monImg[nextImage] = document.getElementById( "monimg" + nextImage );

	}

}



function montageSwap()

{

	if( monImg[monIdx].complete )

	{

		// move the image index along

		montageEffects();

	}

	else

	{

		// check again 3 seconds later

		setTimeout( "montageSwap()", 3000 );

	}

}



function montagePicker( cycle )

{

	var divHtml;



	if( monHref[cycle] != null ) 

	{

		divHtml = "<A href=\"" + monHref[cycle] + "\"><IMG src=\"" + monSrc[cycle] + "\" alt=\"" + monCaption[cycle] + "\" BORDER=\"0\" ID=\"monimg" + cycle + "\"></a>";

	}

	else

	{

		divHtml = "<IMG src=\"" + monSrc[cycle] + "\" ID=\"monimg" + cycle + "\">";

	}

	

	return divHtml;

}



function hasBroadband()

{

	if( readIEVer() < 5.0 )

	{

		return false;

	}

	

	try

	{

		document.body.addBehavior ("#default#clientCaps");

	

		return ( typeof(document.body.connectionType) != "undefined" && document.body.connectionType == "lan" );

	}

	catch( e )

	{

		return false;

	}

}


