var slider = 
{
	autoSlide : true,
	repeat : true,
	opacStart : 100,
	opacEnd : 0,
	firstImgClass :  'slideImageFirst',
	imgClass : 'slideImage',
	divClassName : 'slider',
	slideIds : new Array(),
	slideImages : new Array(),
	currImages : new Array(),
	timeouts : new Array(),
	slidems : 2000,
	stopms : 4500,
	
	init : function(className)
	{
		if(className == null)
			className = this.divClassName;
		this.slideCount = 0;
		this.speed = Math.round(this.slidems / Math.abs(this.opacStart - this.opacEnd));
		divTags = document.getElementsByTagName('div');
		var tmpCounter = 0;
		for(var d in divTags)	//init slider divs
		{
			if(divTags[d].className == className)
			{
				if(divTags[d].id == '')
				{
					while(document.getElementById('slider_'+tmpCounter))
						tmpCounter++;
					divTags[d].id = 'slider_'+tmpCounter;
				}
				this.slideIds[this.slideCount++] = divTags[d].id;
			}
		}
		
		var tmpImage = new Image();
		for(i = 0; i < this.slideCount; i++)	// init slides
		{
			//var tmpMaxHeight = tmpMaxWidth = 0;
			currSlideId = this.slideIds[i];
			this.slideImages[currSlideId] = new Array();
			var imageCounter = tmpCounter = 0;
			this.currImages[currSlideId] = null;
			divObj = document.getElementById(currSlideId);
			for(var c in divObj.childNodes)
			{
				childObj = divObj.childNodes[c];
				
				if(childObj.className != this.firstImgClass && childObj.className != this.imgClass)
					continue;
				/*if(childObj.tagName && childObj.tagName.toString().toUpperCase() == 'IMG')
				{
					tmpImage.src = childObj.src;
					//setTimeout("alert(document.getElementById('"+childObj.id+"').height)", 2000);
					tmpMaxHeight = (tmpMaxHeight < tmpImage.height) ? tmpImage.height : tmpMaxHeight;
					tmpMaxWidth = (tmpMaxWidth < childObj.width) ? childObj.width : tmpMaxWidth;
				}*/
				if(childObj.id == '')
				{
					while(document.getElementById(currSlideId+'_img_'+tmpCounter))
						tmpCounter++;
					childObj.id = currSlideId+'_img_'+tmpCounter;
				}
				if(this.currImages[currSlideId] == null || childObj.className == this.firstImgClass)
					this.currImages[currSlideId] = childObj.id;
					
				this.slideImages[currSlideId][imageCounter++] = childObj.id;
			}
			/*if(tmpMaxHeight > 0)
				document.getElementById(currSlideId).style.height = tmpMaxHeight+'px';
			if(tmpMaxWidth > 0)
				document.getElementById(currSlideId).style.width = tmpMaxWidth+'px';*/
		}
	},
	
	startAll : function()
	{
		for(var s = 0; s < this.slideCount; s++)	// init slides
		{
			this.next(this.slideIds[s]);
		}
	},
	
	next : function(slideId)
	{
		var currId = this.currImages[slideId];
		var currIdIndex = IE6_IndexOf(this.slideImages[slideId], currId);
		
		if(currIdIndex == this.slideImages[slideId].length || document.getElementById(this.slideImages[slideId][currIdIndex+1]) == null)	//last slide
		{
			if(this.repeat)
				nextId = this.slideImages[slideId][0];
			else
				return;
		}
		else
			nextId = this.slideImages[slideId][currIdIndex+1];
		this.slideTo(nextId, slideId);
		if(this.autoSlide)
			this.timeouts[slideId] = setTimeout("slider.next('" + slideId + "')", this.slidems + this.stopms);
	},
	
	slideTo : function(id2, slideId) 
	{
		//speed for each frame
		var timer = 0;
		var id = this.currImages[slideId];
		if(id2 == id)
			return;
		else
			this.currImages[slideId] = id2;
	
		//determine the direction for the blending, if start and end are the same nothing happens
		di = (this.opacStart < this.opacEnd) ? 1 : -1;
		if(this.opacStart != this.opacEnd)	// to avoid infinite loop
		{
			for(i = this.opacStart; i != this.opacEnd + di; i += di) 
			{
				i2 = this.opacStart + this.opacEnd - i;
				setTimeout("changeOpac(" + i2 + ",'" + id2 + "')",(timer * this.speed));
				setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * this.speed));
				timer++;
			}
		} 
	}
}

//change the opacity for different browsers
function changeOpac(opacity, id) 
{
	var object = document.getElementById(id);
	
	if(object)
	{
		object = object.style;
		object.opacity = (opacity / 100);
		object.MozOpacity = (opacity / 100);
		object.KhtmlOpacity = (opacity / 100);
		object.filter = "alpha(opacity=" + opacity + ")";
	}
	else
	{
		return false;
	}
}

function IE6_IndexOf(array, needle)
{
	if(array.indexOf)
		return array.indexOf(needle);

	var arrayLen = array.length;
	for(var i = 0; i < arrayLen; i++)
		if(array[i] == needle)
			return i;
	return -1;
}

windowOnload = window.onload;
window.onload = function()
{ 
	if(windowOnload) 
		windowOnload(); 
	slider.init(); 
	slider.startAll();
}

