var myTabs = new Class({
	Implements: [Options, Chain],
 
	version: '1.0',
 
	options: {
		mouseOverClass: 	'over',
		activateOnLoad: 	'first',
		useAjax: 			false,
		ajaxUrl: 			'',
		ajaxOptions: 		{method: 'get'},
		ajaxLoadingText: 	'Loading...',
		ajaxLang:			'english'
	},
 
	initialize: function(element, options) {
		
		this.setOptions(options);
		this.el = $(element);
		this.elid = element;
		
		this.titles = $$('#' + this.elid + ' ul.myTabs_title li');
		this.panels = $$('#' + this.elid + ' .myTabs_panel');
		
		this.titles.each(function(item) {
			item.addEvent('click', function(){
					item.removeClass(this.options.mouseOverClass);
					this.activate(item);
				}.bind(this)
			);
			
			item.addEvent('mouseover', function() {
				if(item != this.activeTitle)
				{
					item.addClass(this.options.mouseOverClass);
				}
			}.bind(this));
			
			item.addEvent('mouseout', function() {
				if(item != this.activeTitle)
				{
					item.removeClass(this.options.mouseOverClass);
				}
			}.bind(this));
		}.bind(this));
		
		
		if(this.options.activateOnLoad != 'none')
		{
			if(this.options.activateOnLoad == 'first')
			{
				this.activate(this.titles[0], true);
			}
			else
			{
				this.activate(this.options.activateOnLoad, true);	
			}
		}
	},
 
	activate: function(tab) {
		
		if($type(tab) == 'string') {
			myTab = $$('#' + this.elid + ' ul li').filter('[title=' + tab + ']')[0];
			tab = myTab;
		}
		
		if($type(tab) == 'element')
		{
			var newTab = tab.getProperty('title');
			this.panels.removeClass('active');
			
			this.activePanel = this.panels.filter(function(item, index){
				return item.getProperty('id') == newTab;
			})[0];

			this.activePanel.addClass('active');
			
			this.titles.removeClass('active');
			
			tab.addClass('active');
			
			this.activeTitle = tab;
			
			if(this.options.useAjax)
			{
				this._getContent();
			}
		}
	},
 
	_getContent: function() {
		
		this.activePanel.set('html', this.options.ajaxLoadingText);

		var newOptions = { 
			url: this.options.ajaxUrl + '?tab=' + this.activeTitle.get('title') + '&lang=' + this.options.ajaxLang, 
			update: this.activePanel.get('id') 
		};

		this.options.ajaxOptions = $extend(this.options.ajaxOptions, newOptions);

		var req = new Request.HTML(
                        this.options.ajaxOptions
                ).send();
	}
});