// IXF1.0 :: Image cross-fade // *****************************************************// DOM scripting by brothercake -- http://www.brothercake.com///******************************************************//global objectvar ixf = { 'clock' : null, 'count' : 1 }/*******************************************************/***************************************************************************** List the images that need to be cached*****************************************************************************/ixf.imgs = [	'images/homephotos/seals.jpg',	'images/homephotos/crab.jpg',	//'images/homephotos/deckwork.jpg',	'images/homephotos/nets.jpg',	'images/homephotos/studentf.jpg',	'images/homephotos/trinidad.jpg',	'images/homephotos/microscopes.jpg',	'images/homephotos/collection.jpg',	'images/homephotos/sunset.jpg'	];/**********************************************************************************************************************************************************///cache the imagesixf.imgsLen = ixf.imgs.length;ixf.cache = [];for(var i=0; i<ixf.imgsLen; i++){	ixf.cache[i] = new Image;	ixf.cache[i].src = ixf.imgs[i];}//setup for cycling images-- added by ajsvar imgs1 = new Array("images/homephotos/seals.jpg","images/homephotos/crab.jpg","images/homephotos/nets.jpg","images/homephotos/studentf.jpg","images/homephotos/trinidad.jpg","images/homephotos/microscopes.jpg","images/homephotos/collection.jpg","images/homephotos/sunset.jpg")var alts1 = new Array("Seals congregate around a buoy in the ocean.","Female student holds a live crab on the deck of the Coral Sea.","Students conducting experiments on the Research Vessel Coral Sea.","Collecting samples on the Research Vessel Coral Sea.","Female student posing on the deck of the Research Vessel Coral Sea.","Students walking down the hill to the ocean from the HSU Marine Laboratory in Trinidad.","Students inspect samples using microscopes in the lab.","Studentts retrieve samples on the deck of the Coral Sea Research Vessel.","Sunset over Humboldt Bay from the deck of the Coral Sea.")var currentAd1 = 7var imgCt1 = 8//crossfade setup functionfunction crossfade(){	setTimeout("crossfade()",6 * 1000) 	//loop images-- added by ajs	 currentAd1++  if (currentAd1 == imgCt1)   {    currentAd1 = 0  }	    	//if the timer is not already going	if(ixf.clock == null)	{		//copy the image object 		ixf.obj = document.getElementById('test');				//copy the image src argument 		ixf.src = imgs1[currentAd1];				//store the supported form of opacity		if(typeof ixf.obj.style.opacity != 'undefined')		{			ixf.type = 'w3c';		}		else if(typeof ixf.obj.style.MozOpacity != 'undefined')		{			ixf.type = 'moz';		}		else if(typeof ixf.obj.style.KhtmlOpacity != 'undefined')		{			ixf.type = 'khtml';		}		else if(typeof ixf.obj.filters == 'object')		{			//weed out win/ie5.0 by testing the length of the filters collection (where filters is an object with no data)			//then weed out mac/ie5 by testing first the existence of the alpha object (to prevent errors in win/ie5.0)			//then the returned value type, which should be a number, but in mac/ie5 is an empty string			ixf.type = (ixf.obj.filters.length > 0 && typeof ixf.obj.filters.alpha == 'object' && typeof ixf.obj.filters.alpha.opacity == 'number') ? 'ie' : 'none';		}		else		{			ixf.type = 'none';		}				//change the image alt text if defined		if(typeof alts1[currentAd1] != 'undefined' && alts1[currentAd1] != '')		{			ixf.obj.alt = alts1[currentAd1];		}				//if any kind of opacity is supported		if(ixf.type != 'none')		{ 			//create a new image object and append it to body			//detecting support for namespaced element creation, in case we're in the XML DOM			ixf.newimg = document.getElementById('RotatingPhotos').appendChild((typeof document.createElementNS != 'undefined') ? document.createElementNS('http://www.w3.org/1999/xhtml', 'img') : document.createElement('img'));			//set positioning classname			ixf.newimg.className = 'idupe';						//set src to new image src			ixf.newimg.src = ixf.src			//move it to superimpose original image			ixf.newimg.style.left = ixf.getRealPosition(ixf.obj, 'x') + 'px';			ixf.newimg.style.top = ixf.getRealPosition(ixf.obj, 'y') + 'px';						//copy and convert fade duration argument 			ixf.length = parseInt(3, 10) * 1000;						//create fade resolution argument as 20 steps per transition			ixf.resolution = parseInt(3, 10) * 20;						//start the timer			ixf.clock = setInterval('ixf.crossfade()', ixf.length/ixf.resolution);		}				//otherwise if opacity is not supported		else		{			//just do the image swap			ixf.obj.src = ixf.src;		}	}	 };//crossfade timer functionixf.crossfade = function(){	//decrease the counter on a linear scale	ixf.count -= (1 / ixf.resolution);		//if the counter has reached the bottom	if(ixf.count < (1 / ixf.resolution))	{		//clear the timer		clearInterval(ixf.clock);		ixf.clock = null;				//reset the counter		ixf.count = 1;				//set the original image to the src of the new image		ixf.obj.src = ixf.src;	}		//set new opacity value on both elements	//using whatever method is supported	switch(ixf.type)	{		case 'ie' :			ixf.obj.filters.alpha.opacity = ixf.count * 100;			ixf.newimg.filters.alpha.opacity = (1 - ixf.count) * 100;			break;					case 'khtml' :			ixf.obj.style.KhtmlOpacity = ixf.count;			ixf.newimg.style.KhtmlOpacity = (1 - ixf.count);			break;					case 'moz' : 			ixf.obj.style.MozOpacity = ixf.count;			ixf.newimg.style.MozOpacity = (1 - ixf.count);			break;					default : 			ixf.obj.style.opacity = ixf.count;			ixf.newimg.style.opacity = (1 - ixf.count);	}		//now that we've gone through one fade iteration 	//we can show the image that's fading in	ixf.newimg.style.visibility = 'visible';		//keep new image in position with original image	//in case text size changes mid transition or something	ixf.newimg.style.left = ixf.getRealPosition(ixf.obj, 'x') + 'px';	ixf.newimg.style.top = ixf.getRealPosition(ixf.obj, 'y') + 'px';		//if the counter is at the top, which is just after the timer has finished	if(ixf.count == 1)	{		//remove the duplicate image		ixf.newimg.parentNode.removeChild(ixf.newimg);	}};//get real position methodixf.getRealPosition = function(){	this.pos = (arguments[1] == 'x') ? arguments[0].offsetLeft : arguments[0].offsetTop;	this.tmp = arguments[0].offsetParent;	while(this.tmp != null)	{		this.pos += (arguments[1] == 'x') ? this.tmp.offsetLeft : this.tmp.offsetTop;		this.tmp = this.tmp.offsetParent;	}		return this.pos;};