/* idTabs ~ Sean Catchpole - Version 1.0 */ 
 
/* Options (in any order): 
 
 start (number|string) 
	Index number of default tab. ex: idTabs(0) 
	String of id of default tab. ex: idTabs("#tab1") 
	default: class "selected" or index 0 
 
 return (boolean) 
	True - Url will change. ex: idTabs(true) 
	False - Url will not change. ex: idTabs(false) 
	default: false 
 
 click (function) 
	Function will be called when a tab is clicked. ex: idTabs(foo) 
	If the function returns true, idTabs will show/hide content (as usual). 
	If the function returns false, idTabs will not take any action. 
	The function is passed three variables: 
	  The id of the element to be shown 
	  an array of all id's that can be shown 
	  and the element containing the tabs 
*/ 
(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("selected"); 
	  for(i in idList) $(idList[i]).hide(); 
	  //Select clicked tab and show content 
	  $(this).addClass("selected"); 
	  $(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);