(function($) {
  $.fn.tabNav = function(options) {
    var config = {
        selector : 'h1'
    };
    
    if(options) $.extend(config, options);
    
    this.each(function() {
      var tabs = $(".tab", this);
      if(tabs.length != 0) {
        var tabnav = $('<div></div>').addClass('tabNav clearing');
        var list = $('<ul></ul>');
        var a = $.cookie("activeTab");
        for(i=0;i<tabs.length;i++) {
          var tab   = tabs.get(i)
          var title = $(config.selector, tab);
          var li = $('<li></li>');
          
          if((!a && i == 0) || i == a) {
            li.addClass("location");
            var tabContent = $('<strong>'+title.html()+'</strong>');
          }
          else {
            $(tab).hide();
            var tabContent = $('<a href="#">'+title.html()+'</a>').bind('click', {i:i, obj:this}, function(e){$.fn.tabNav.showTab(e.data.i, e.data.obj); return false;});
          }
          
          list.append(li.append(tabContent));
          title.remove();
        }
        
        tabnav.append(list);
        $(this).prepend(tabnav);
      }
    });
     
    return this;
  };
  
  $.fn.tabNav.showTab = function(active, obj) {
    $.fn.tabNav.updateTabs(active, obj);
    var tabs = $(".tab", obj);
    tabs.hide();
    $(tabs.get(active)).show();
    $.cookie("activeTab", active);
  };
  
  $.fn.tabNav.updateTabs = function(active, obj) {
    var tabs = $("li", obj);
    if(tabs.length != 0) {
      for(i=0;i<tabs.length;i++) {
        var tab   = tabs.get(i);
        var title = $(tab.firstChild).html();
        $(tab).empty();
        if(i == active) {
          $(tab).addClass("location");
          var tabContent = $('<strong>'+title+'</strong>');
        }
        else {
          $(tab).removeClass("location");
          var tabContent = $('<a href="#">'+title+'</a>').bind('click', {i:i, obj:obj}, function(e){$.fn.tabNav.showTab(e.data.i, e.data.obj); return false;});
        }
        $(tab).append(tabContent);
      }
    }
  };
})(jQuery);
