// Tab - Must target the UL or OL!!
// TODO: needs documentation
(function($){

  $.widget('ui.tab', {    
    options:{},
    
    _init:function(){            
      var widget = this, element = this.element, 
          data = {index:0, tabs:[]};

      $('a', element).each(function(i){
        var current = $(this), 
            model = {
              index: data.tabs.length, //Careful! Shouldn't be i since we aren't saving models for tabs without content!
              node: current,
              target: $(current.attr('href'))
            };

        if (!model.target.length){
          model.node.addClass('ui-disable');
          return;
        }

        if (!i){
          //We're going to keep things simple. If it's the first item, show it.
          current.addClass('ui-active');
          model.target.removeClass('ui-hidden'); 
        }

        data.tabs.push(model);

        current.bind('click', {index:i, widget:widget}, widget.handleClick);
      });

      $('li:last-child', element).addClass('last');
      widget.model = data;
    },
    
    handleClick:function(e){
      var index = e.data.index, data = e.data.widget.model;
      if (data.index !== index){
        var o = data.tabs[data.index];
            o.node.removeClass('ui-active');
            o.target.addClass('ui-hidden');

        var n = data.tabs[index];
            n.node.addClass('ui-active');
            n.target.removeClass('ui-hidden');

        data.index = index;
      }
      e.stopPropagation();
      return false;
    }

  });
  
})(jQuery);
