var _fadetimeouts = [];
var _fadeEls = [];
var _iefix = false;

var FadeSlideShow = Fx.Elements.extend({

	options: {
		wait: true,
		_current: 0
	},

	initialize: function(){
		var options, elements;
		$each(arguments, function(argument, i){
			switch($type(argument)){
				case 'object': options = argument; break;
				default:
					var temp = $$(argument);
					elements = temp;
			}
		});
		this.elements = elements || [];
		this.setOptions(options);
		this._timeoutInterval = false;
		this.effects = {};
		this.effects.opacity = 'fullOpacity';
				
		if(this.elements[0])
		{
			this.elements[0].parentNode.style.visibility = 'visible';
		}
		
		this.elements.each(function(el, i){
			this.elements[i].fullOpacity = 0.8;
			if(i != this.options._current)
			{
				for (var fx in this.effects) el.setStyle(fx, 0);
			}
			else
			{
				for (var fx in this.effects) el.setStyle(fx, el[this.effects[fx]]);				
			}

		}, this);
	},

	fadeIn: function(index){
		index = ($type(index) == 'element') ? this.elements.indexOf(index) : index;
		var obj = {};
		obj[index] = {};
		for (var fx in this.effects) obj[index][fx] = this.elements[index][this.effects[fx]];
		return this.start(obj);
	},

	fadeOut: function(index){
		index = ($type(index) == 'element') ? this.elements.indexOf(index) : index;
		var obj = {};
		obj[index] = {};
		for (var fx in this.effects) obj[index][fx] = 0;
		return this.start(obj);
	},

	getNext: function(direction){

		var _next = parseInt(this.options._current) + parseInt(direction);
		if(_next < 0)		
		{
			_next = this.elements.length - 1;
		}
		if(_next >= this.elements.length)		
		{
			_next = 0;
		}
		return _next;

	},

	slide: function(direction){
		var _next = this.getNext(direction);
		this.options._prev = this.options._current;
		var obj = {};
		obj[_next] = {};
		for (var fx in this.effects) obj[_next][fx] = this.elements[_next][this.effects[fx]];
		obj[this.options._current] = {};
		for (var fx in this.effects) obj[this.options._current][fx] = 0;		
		this.options._current = _next;		
		return this.start(obj);
	}
	
});

var slideshows = ['#tab0 div.rotation','#tab1 div.rotation','#tab2 div.rotation','#tab3 div.rotation','#tab4 div.rotation','#tab9 div.rotation','#tab5 div.rotation','#tab6 div.rotation','#tab7 div.rotation'];
var _fades = [];
var delay = 3000;
var _loader = false;


function initFadeSlideShow()
{		
	for(var i=0; i < slideshows.length; i++)
	{
		_fadeEls[i] = $$("" + slideshows[i]);
		if(_fadeEls[i].length > 1)
		{
			_fades[i] = new FadeSlideShow("" + slideshows[i],{duration:1000});
		}	
	}
	_fadetimeouts[0] = setTimeout('_switch(0)',delay);
	_loader = document.getElementById('loader');
}

function _switch(_i)
{
	if(_fades[_i])
	{
		var _next = _fades[_i].getNext(1);
		if(_fadeEls[_i][_next])
		{
			var _imgs = _fadeEls[_i][_next].getElementsByTagName('img');
			if(_imgs[0])
			{
				__switch(_i);
			}
			else
			{
				var _img = new Image;
				var ___src = _fadeEls[_i][_next].innerHTML;
				_img.src = ___src;
				_fadeEls[_i][_next].innerHTML = "";	
				_img._i = _i;
				if(_img.complete)
				{
					_fadeEls[_i][_next].appendChild(_img);
					__switch(_i);
				}
				else
				{
					__imgg = _fadeEls[_i][_next].appendChild(_img);
					_loader.style.display = "block";
					__imgg.shows = false;
					__imgg.onload = function()
					{
						if(_iefix)
						{
							clearTimeout(_iefix);
						}
						_loader.style.display = "none";	
						if(!this._shows)
						{
							__switch(this._i);
							this._shows = true;
						}
					}

					if (window.attachEvent)					
						_iefix = setTimeout('_fixie()',3000);
					
				}
			}
		}
	}
}

function _fixie()
{
	__imgg.onload();
}

function __switch(_i)
{
	_loader.style.display = "none";	
	_fades[_i].slide(1);
	_fadetimeouts[_i] = setTimeout('_switch('+ _i+')',delay);
}


if (window.addEventListener)
	window.addEventListener("load", initFadeSlideShow, false);
else if (window.attachEvent)
	window.attachEvent("onload", initFadeSlideShow);