/**
 * Homepage Offers tabs
 * @author Frukt Kuubis
 * @copyright Frukt Kuubis OÜ 2009
 * @version 1.1
 */

var Offers = (function(target){
	if(!target || target.length < 1){ return false; }
	var _events = [];
	var _index = [];
	var _options = {
		'target': target,
		'first': 0,
		'current': 0,
		'interval': 5
	};
	var _interval = null;
	
	// check for element
	if($$(_options.target).length < 1){ return false; }
	
	// get first image height
	var _dimensions = $($$(_options.target + ' td[rowspan] img')[0]).getDimensions();
	var _itemCount = $$(_options.target + ' td.switch').length;
	var _height = parseInt(_dimensions.height/_itemCount);
	
	// bind events to target switches
	$$(_options.target + ' td.switch').each(function(element, key){
		var event = Event.observe(element, 'mouseover', function(){
			_show(key);
			return false;
		});
		
		// add click event
		Event.observe(element, 'click', function(){
			// get switch index image parent link
			if(_index[key].image === null){ return false; }
			
			// get parent
			var link = $(_index[key].image).up(0);
			if(!link){ return false; }
			
			// get href
			var href = $(link).readAttribute('href');
			if(!href || href.length < 1){ return false; }
			
			// redirect to href
			location.href = href;
			
			return false;
		});
		
		// set element height
		$(element).setStyle({'height': _height + 'px'});
		
		// cache event
		_events[_events.length] = event;
		
		// index switches
		if(!_index[key]){ 
			_index[key] = {'tab':null, 'image':null};
		}
		_index[key].tab = element;
	});
	
	// bind target mouseenter event
	Event.observe($$(_options.target)[0], 'mouseover', function(){
		clearInterval(_interval);
	});
	
	// bind target mouseleave event
	Event.observe($$(_options.target)[0], 'mouseout', function(){
		_interval = setInterval(_rotate, _options.interval*1000);
	});
	
	// index images
	$$(_options.target + ' td[rowspan] img').each(function(element, key){		
		if(!_index[key]){
			_index[key] = {'tab':null, 'image':null};
		}
		_index[key].image = element;
		
		// set first index
		if($(element).hasClassName('first')){
			_options.first = _options.current = key;
		}
	});
	
	// show first image
	_show(_options.first);
	
	// start banner rotation
	_interval = setInterval(_rotate, _options.interval*1000);
	
	// add unload event
	Event.observe(window, 'unload', function(){
		// kill all events
		for(var i in _events){
			Event.stop(_events[i]);
		}
	});
	
	/**
	 * rotate images with automatic interval
	 */
	function _rotate(){
		var next = _getNextIndex();
		_show(next);
	}
	
	/**
	 * show tab
	 * @param {Number} index
	 */
	function _show(index){
		var _element = _index[index];
		if(_element.image == null || _element.tab == null){ return false; }
		
		// show image
		$$(_options.target + ' td[rowspan] img').each(function(a){
			$(a).setStyle({'display': 'none'});
		});
		$(_element.image).setStyle({'display':'block'});
		
		// set selected switch
		$$(_options.target + ' td.switch').each(function(a){
			$(a).removeClassName('selected');
		});
		$(_element.tab).addClassName('selected');
		
		// set current index
		_options.current = index;
	}
	
	/**
	 * get next index
	 */
	function _getNextIndex(){
		var current = _options.current;
		var max = parseInt(_index.length);
		return (current+1 < max) ? current+1 : 0;
	}
});

// add window load event
Event.observe(window, 'load', function(){
	new Offers('table.home-offers');
});
