/**
 * cyTabify v. 0.1.1
 * Tabify creates Tabs from unordered lists. Tabs are more semantic than usual,
 * because headline stay in the right place even if javascript is turned off. 
 * The plugin  has one option named active, which tells which tab is active from
 * the beginning.
 * 
 * Usage: $('.tabbed').tabify({ active: 1 });
 */
 
(function($) { 
  $.fn.extend({  
    cyTabify: function(options) {
      
      /* den ausgewählten aktivieren */
      var actIndex = options.active - 1;
      
      /* alle instanzen durchlaufen und initialisieren */
			return this.each(function() {
        
        /* instanz merken */
        var instance = this;
        
        /* die liste mit den auswaehlern einfuegen */
        $(instance).prepend('<ul class="tabs"></ul>');
        
        /* alle tabs durchlaufen */
        var cnt = 0;
        $(instance).find('li.tab').each(function() {
          
          var active = '';
          if(cnt == actIndex) {
            $(this).show();
            active = ' active';
          } else {
            $(this).hide();
          }
          
          var first = $(this).hasClass('first') ? ' first' : '';
          var head  = ($(this).find('h4.tab').size() > 0) ? $(this).find('h4.tab') : $(this).find('h5.tab');
          var last  = $(this).hasClass('last') ? ' last' : '';
          var tab   = $(this).attr('id');
          $(instance).find('ul.tabs').append('<li class="'+ tab + active + first + last +'"><span>'+ head.text() +'</span></li>');
          head.remove();
          
          $(instance).find('ul.tabs li.'+ tab).click(function() {
            
            /* merken, welcher tab gezeigt werden soll */
            var activate = $(this).attr('class');
            activate = activate.replace(/(first|last|active)/g, '');
            
            /* alle verbergen */
            $(instance).find('ul.tabs li.active').removeClass('active');
            $(instance).find('li.tab').hide();
            
            /* gewuenschten tab anzeigen */
            $(instance).find('ul.tabs li.'+ activate).addClass('active');
            $(instance).find('#'+ activate).show();
          });
          
          /* zaehler */
          cnt++;
        });
      });
    } 
  }); 
})(jQuery);

