

(function($){ 
  $.fn.idTabs = function(){ 
    //Defaults 
    var s = { "start":null, 
              "return":false, 
              "click":null }; 
 
    //Loop Arguments matching options 
    for(var i=0; i<arguments.length; ++i) { 
      var n = {}, a=arguments[i]; 
      switch(typeof a){ 
        case "object": $.extend(n,a); break; 
        case "number": 
        case "string": n.start = a; break; 
        case "boolean": n["return"] = a; break; 
        case "function": n.click = a; break; 
      }; $.extend(s,n); 
    } 
     
    //Setup Tabs 
    var self = this; //Save scope 
    var list = $("a[@href^='#']",this).click(function(){ 
      if($("a.selected",self)[0]==this) 
        return s["return"]; //return if already selected 
      var id = "#"+this.href.split('#')[1]; 
      var aList = []; //save tabs 
      var idList = []; //save possible elements 
      $("a",self).each(function(){ 
        if(this.href.match(/#/)) { 
          aList[aList.length]=this; 
          idList[idList.length]="#"+this.href.split('#')[1]; 
        } 
      }); 
      if(s.click && !s.click(id,idList,self)) return s["return"]; 
      //Clear tabs, and hide all 
      for(i in aList) $(aList[i]).removeClass("tabhighlight"); 
      for(i in idList) $(idList[i]).hide(); 
      //Select clicked tab and show content 
      $(this).addClass("tabhighlight"); 
      $(id).show(); 

      return s["return"]; //Option for changing url 
    }); 
 
    //Select default tab 
    var test; 
    if(typeof s.start == "number" && (test=list.filter(":eq("+s.start+")")).length) 
      test.click(); //Select num tab 
    else if(typeof s.start == "string" && (test=list.filter("[@href='#"+s.start+"']")).length) 
      test.click(); //Select tab linking to id 
    else if((test=list.filter(".selected")).length) 
      test.removeClass("selected").click(); //Select tab with class 'selected' 
    else list.filter(":first").click(); //Select first tab 
 
    return this; //Chainable 
  }; 
  $(function(){ $(".idTabs").each(function(){ $(this).idTabs(); }); }); 
})(jQuery)