var klMooTabs = new Class({
	Version: '1.0',
	Implements: [Options, Events],
	
	items: null,
	selectedItem: null,
	cookiename: null,
	delaytimer: null,
	
	options: {
		persist: false,
		interval: 5000,
		autorotate: false
	},
	
	initialize: function(tabsid, contentprefix, options) {
		this.setOptions(options);
		this.cookiename = tabsid;
						
		this.items = $$('#' + tabsid + ' li a');
		this.items.each(function(item, index){
			item.store('index', index);
			item.store('content', contentprefix + '_' + (index+1));
			$(item.retrieve('content')).setStyle('opacity',0);
			
			
			if(this.options.autorotate) {
				item.addEvent('click', (function() {
					clearTimeout(this.delaytimer);
					this.options.autorotate = false;
				}).bind(this));
			}		
		
			item.addEvent('click', this.toggleTab.bind(this).pass(item));
			
			if(this.options.persist) {
				var cookie = new Cookie(this.cookiename);
				
				if((cookie.getValue().length == 0 && index == 0) || cookie.getValue() == index) {
					cookie.setValue(index);
					this.toggleTab(item);
				}
			} else {
				if(index == 0) {
					this.toggleTab(item);
				}
			}
			
		}, this);
	},
	
	toggleTab: function(item) {
		if(this.selectedItem != item) {
			if(this.selectedItem != null) {
				this.hideAndShow(item);
			} else {
				this.show(item);
			}
		}

		return false;
	},
	
	hideAndShow: function(item) {
		this.selectedItem.removeClass('selected');
		this.selectedItem.getParent().getParent().setStyles({
			'z-index': null,
			'position': null
		});
		
		/*if(this.selectedItem.get('id') != null && this.selectedItem.get('id').length > 0) {
			this.selectedItem.removeClass('bgc_' + this.selectedItem.get('id'));
			this.selectedItem.getParent().getParent().removeClass('bgc_' + this.selectedItem.get('id'));
		}*/
		
		if(Browser.ie8 || Browser.ie7) {
			$(this.selectedItem.retrieve('content')).getElements('*').each(function(item){
				var fadeout = new Fx.Tween(item,{
					duration: 'normal'
				});
				fadeout.start('opacity', 1, 0);
			});
		}
		
		var fadeout = new Fx.Tween(this.selectedItem.retrieve('content'),{
			duration: 'normal'
		});
		
		fadeout.addEvent('complete', (function(item) {
			$(this.selectedItem.retrieve('content')).setStyle('display','none');
			this.show(item);
		}).bind(this).pass(item));
		
		fadeout.start('opacity', 1, 0);
	},
	
	show: function(item) {
		item.addClass('selected');
		item.getParent().getParent().setStyles({
			'z-index': '2',
			'position': 'relative'
		});
		
		/*if(item.get('id') != null && item.get('id').length > 0) {
			item.addClass('bgc_' + item.get('id'));
			item.getParent().getParent().addClass('bgc_' + item.get('id'));
		}*/
		
		$(item.retrieve('content')).setStyle('display','block');
		
		if(Browser.ie8 || Browser.ie7) {
			$(item.retrieve('content')).getElements('*').each(function(item){
				var fadein = new Fx.Tween(item,{
					duration: 'normal'
				});
				fadein.start('opacity', 0, 1);
			});
		}
		
		var fadein = new Fx.Tween(item.retrieve('content'),{
			duration: 'normal'
		});
		fadein.start('opacity', 0, 1);
		
		this.selectedItem = item;
		
		if(this.options.persist) {
			var cookie = new Cookie(this.cookiename);
			cookie.setValue(item.retrieve('index'));
		}
		
		if(this.options.autorotate) {
			var ritem = item;
			if(this.items.length == (item.retrieve('index') + 1)) {
				ritem = this.items[0];
			} else {
				ritem = this.items[item.retrieve('index') + 1];
			}
			
			this.delaytimer = this.toggleTab.delay(this.options.interval, this, ritem);
		}
	}
});
