var ixfCache = new Array();

function ixfInit()
{
	fadeForward("rImage",2);
	setInterval("ixfInterval()", 20);
}

function ixfInterval()
{
	var fadeFinish = false;
	for (var i in ixfCache)
	{
		if (ixfCache[i].clock)
		{
			if (ixfCache[i].paused)
			{
				ixfCache[i].counter += 1;
				if (ixfCache[i].counter > ixfCache[i].pausedTime)
				{
					ixfCache[i].paused = false;
					ixfCache[i].counter = 0;
				}
			} else {
				fadeFinish = ixfCache[i].crossFade();
				if (fadeFinish)
				{
					ixfCache[i].paused = true;
				}
			}
		}
	}
	return fadeFinish;
}

function fadeForward(imgName, fadeInt)
{
	if (!ixfCache[imgName])
	{
		ixfCache[imgName] = new ixfClass(imgName, fadeInt);
	} else {
		ixfCache[imgName].stopFade();
	}
	ixfCache[imgName].startFade(1);
}

function fadeBack(imgName)
{
	if (ixfCache[imgName])
	{
		ixfCache[imgName].stopFade();
		ixfCache[imgName].startFade(-1);
	}
}
function ixfStopFade()
{
	if (this.clock)
	{
		this.clock = false;
	}
}

function ixfStartFade(dir)
{
	this.dirStep = dir;
	this.clock = true;
}

function ixfCrossFade() {
	var curOpacity = 0;
	var curPrevOpacity = 0;
	var prevImgNum = this.curImg-1;
	if (prevImgNum == -1)
	{
		prevImgNum = this.allImgCnt-1;
	}
	switch(this.type)
	{
		case 'ie' :
			curOpacity = this.imgs[this.curImg].filters.alpha.opacity / 100;
			curPrevOpacity = this.imgs[prevImgNum].filters.alpha.opacity / 100;
			break;
			
		case 'khtml' :
			curOpacity = this.imgs[this.curImg].style.KhtmlOpacity;
			curPrevOpacity = this.imgs[prevImgNum].style.KhtmlOpacity;
			break;
			
		case 'moz' : 
			curOpacity = this.imgs[this.curImg].style.MozOpacity;
			curPrevOpacity = this.imgs[prevImgNum].style.MozOpacity;
			break;
			
		default : 
			curOpacity = this.imgs[this.curImg].style.opacity;
			curPrevOpacity = this.imgs[prevImgNum].style.opacity;
	}

	if (typeof curOpacity == 'undefined')
	{
		curOpacity = 0;
		curPrevOpacity = 1;
	}
	curOpacity = curOpacity*1 + this.dirStep * this.dStep;
	curPrevOpacity = curPrevOpacity*1 + this.dirStep * this.dStep * -1;
	if (curOpacity >= 1)
	{
		curOpacity = 1;
		curPrevOpacity = 0;
	} else if (curOpacity <= 0) {
		curOpacity =0
		curPrevOpacity =1
	}
	
	if(curOpacity==0 || curOpacity==1)
	{
	}
	switch(this.type)
	{
		case 'ie' :
			
			this.imgs[this.curImg].filters.alpha.opacity = curOpacity * 100;
			this.imgs[prevImgNum].filters.alpha.opacity = curPrevOpacity * 100;
			break;
			
		case 'khtml' :
			this.imgs[this.curImg].style.KhtmlOpacity = curOpacity;
			this.imgs[prevImgNum].style.KhtmlOpacity = curPrevOpacity;
			break;
			
		case 'moz' : 
			this.imgs[this.curImg].style.MozOpacity = curOpacity;
			this.imgs[prevImgNum].style.MozOpacity = curPrevOpacity;
			break;
			
		default : 
			this.imgs[this.curImg].style.opacity = curOpacity;
			this.imgs[prevImgNum].style.opacity = curPrevOpacity;
	}
	
	if(curOpacity==0 || curOpacity==1)
	{
		var nextImg = this.curImg + this.dirStep;
		if (nextImg == this.allImgCnt)
		{
			this.curImg = 0;
		} else {
			this.curImg = nextImg;
		}
		return true;
	}
	return false;
}

function ixfRestoreImages()
{
	for (var i=1; i<this.imgs.length-1; i++)
	{
		var imgItem = this.imgs[i];
		switch(this.type)
		{
			case 'ie' :
				imgItem.filters.alpha.opacity = 0;
				break;
				
			case 'khtml' :
				imgItem.style.KhtmlOpacity = 0;
				break;
				
			case 'moz' : 
				imgItem.style.MozOpacity = 0;
				break;
				
			default : 
				imgItem.style.opacity = 0;
		}
	}
}

function ixfClass(imgName, fadeInt)
{
	this.paused = true;
	this.counter = 0;
	this.pausedTime = 200;

	this.imgName = imgName;
	this.curImg = 0;
	this.imgs = new Array();
	
		var tmpImages = document.getElementsByTagName('img');

		// loop through all img tags
		for (var i=0; i<tmpImages.length; i++)
		{
			var tmpImage = tmpImages[i];
			
			var relAttribute = String(tmpImage.getAttribute('rel'));
			
			// use the string.match() method to catch 'rImage' references in the rel attribute
			if ((relAttribute.toLowerCase().match('rimage')))
			{
				this.imgs[this.imgs.length] = tmpImage;
			}
		}
	this.allImgCnt = this.imgs.length;
	this.fImg = this.imgs[0];
	

	if(typeof this.fImg.style.opacity != 'undefined')
	{
		this.type = 'w3c';
	}
	else if(typeof this.fImg.style.MozOpacity != 'undefined')
	{
		this.type = 'moz';
	}
	else if(typeof this.fImg.style.KhtmlOpacity != 'undefined')
	{
		this.type = 'khtml';
	}
	else if(typeof this.fImg.filters == 'object')
	{
		this.type = (this.fImg.filters.length > 0 && typeof this.fImg.filters.alpha == 'object' && typeof this.fImg.filters.alpha.opacity == 'number') ? 'ie' : 'none';
	}
	else
	{
		this.type = 'none';
	}

	for (var i=1; i<this.imgs.length; i++)
	{
		var imgItem = this.imgs[i];

		switch(this.type)
		{
			case 'ie' :
				imgItem.filters.alpha.opacity = 0;
				break;
				
			case 'khtml' :
				imgItem.style.KhtmlOpacity = 0;
				break;
				
			case 'moz' : 
				imgItem.style.MozOpacity = 0;
				break;
				
			default : 
				imgItem.style.opacity = 0;
		}
		
		imgItem.style.left = getRealPosition(this.fImg, 'x') +'px';
		imgItem.style.top = getRealPosition(this.fImg, 'y') + 'px';
		imgItem.style.display = 'block';
	}

	this.stopFade = ixfStopFade;
	this.startFade = ixfStartFade;
	this.crossFade = ixfCrossFade;

	this.dStep = 1/(15*fadeInt);
	this.dirStep = 1;
	this.fadeInt = fadeInt;

	this.restoreImages = ixfRestoreImages;
	this.clock = false;
}
function getRealPosition(oImg, xType)
{
	var pos = (xType == 'x') ? oImg.offsetLeft : oImg.offsetTop;
	var tmp = oImg.offsetParent;
	while(tmp != null)
	{
		pos += (xType == 'x') ? tmp.offsetLeft : tmp.offsetTop;
		tmp = tmp.offsetParent;
	}
	
	return pos;
};
