/*
 * Fabtabulous! Simple tabs using Prototype
 * http://tetlaw.id.au/view/blog/fabtabulous-simple-tabs-using-prototype/
 * Andrew Tetlaw
 * version 1.1 2006-05-06
 * http://creativecommons.org/licenses/by-sa/2.5/
 * Modified to include sliding animation by Lucian Teo 2008-03-22
 */
 
var Fabtabs = Class.create();
Fabtabs.prototype = {
   initialize : function(element) {
          this.element = $(element);
                var options = Object.extend({}, arguments[1] || {});
              this.menu = $A(this.element.getElementsByTagName('a'));
          // this.show(this.getInitialTab()); commented out so that initial tab isn't shown until user clicks on it
          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).removeClassName('active-tab');
            new Effect.BlindUp($(this.tabID(elm)));
   	        // $(this.tabID(elm)).removeClassName('active-tab-body'); after activation, using blindup to hide the contents, no need to remove class already
	    },
        show : function(elm) {
        	if ($(elm).hasClassName('active-tab')) {
        		this.hide($(elm));
        	}
        	else {
				$(elm).addClassName('active-tab');
				new Effect.BlindDown($(this.tabID(elm)));
				$(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);
