var Fabtabs = Class.create();

Fabtabs.prototype = {
	initialize : function(element) {
    	this.element = $(element);
    	if (this.element){
	     	var options = Object.extend({}, arguments[1] || {});
			this.menu = $A(this.element.getElementsByTagName('a'));
			this.show(this.getInitialTab());
			this.menu.each(this.setupTab.bind(this));
    	}
 	},

    setupTab : function(elm) {
    	Event.observe(elm,'click',this.activate.bindAsEventListener(this),false)
  	},

  	activate :  function(ev) {
    	var elm = Event.findElement(ev, "a");
        Event.stop(ev);
        this.show(elm);
        this.menu.without(elm).each(this.hide.bind(this));
   	},

   	hide : function(elm) {
		$((elm).parentNode).removeClassName('active-tab');
   		// $(elm).removeClassName('active-tab');// REDUNDANT //
        $(this.tabID(elm)).removeClassName('active-tab-body');
    },

    show : function(elm) {
    	$((elm).parentNode).addClassName('active-tab');
    	//$(elm).addClassName('active-tab'); // REDUNDANT //
        $(this.tabID(elm)).addClassName('active-tab-body');
  	},

  	tabID : function(elm) {
    	return elm.href.match(/#(\w.+)/)[1];
   	},

   	getInitialTab : function() {
   		if(document.location.href.match(/#(\w.+)/)) {
   			var loc = RegExp.$1;
   			var elm = this.menu.find(function(value) { return value.href.match(/#(\w.+)/)[1] == loc; });
	   		return elm || this.menu.first();
   		} else {
   			return this.menu.first();
        }
 	}
}
Event.observe(window,'load',function(){ new Fabtabs('tabs'); },false);