// 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/homepage/img5.jpg',	'images/homepage/img2.jpg',	'images/homepage/img7.jpg',	'images/homepage/img4.jpg',	'images/homepage/img6.jpg',	'images/homepage/img3.jpg',	'images/homepage/img10.jpg',	'images/homepage/img1.jpg',	'images/homepage/img9.jpg',	'images/homepage/img8.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/homepage/img5.jpg","images/homepage/img2.jpg","images/homepage/img7.jpg","images/homepage/img4.jpg","images/homepage/img6.jpg","images/homepage/img3.jpg","images/homepage/img10.jpg","images/homepage/img1.jpg", "images/homepage/img9.jpg","images/homepage/img8.jpg");	var alts1 = new Array("Award-Winning Model United Nations Students","Intern in Congressman Mike Thompson’s Office","Students with Daniel Faulk","Students in Al Harris's Class","Panetta Intern Michelle Woo in Washington DC","Students in Al Harris's Class","Alum Ben Wocken encounters Mike Huckabeewhile working in DC","Students in Al Harris's Class","Political Advocacy Students in State Capitol", "Students in Al Harris's Class");	var currentAd1 = 9	var imgCt1 = 10//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('feature_img').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;};