/*! idTabs v3.0 ~ Sean Catchpole - Copyright 2010 MIT/GPL */
;(function($){
var idTabs,
undefined,
href = function(e){ return $(e).attr("href"); },
type = function(o){
return o===null && "Null"
|| o===undefined && "Undefined"
|| ({}).toString.call(o).slice(8,-1);};
$.fn.idTabs = function(){
var s = idTabs.args.apply(this,arguments),
action = s.update&&"update" || s.remove&&"remove" || "bind";s.area = this;idTabs[action](s);return this;};
idTabs = $.idTabs = function(tabarea,options,data){
var e, tabs, items, test=$(), meta = $.metadata?$(tabarea).metadata():{},
s = {tab:idTabs.tab,item:idTabs.item};s = $.extend(s,idTabs.settings,meta,options||{});s.tabarea = $(tabarea);s.data = data||"idTabs"+ +new Date;$.each({selected:'.',event:'!',start:'#'},function(n,c){
if(type(s[n])=="String" && s[n].indexOf(c)==0)
s[n] = s[n].substr(1); });if(s.start===null) s.start=-1;items = [];s.tabs = tabs = $("a[href^=#]",tabarea);tabs.each(function(){
test = s.item(href(this));if(test.length) items=items.concat(test.get());});s.items = $(items).hide();e="idTabs."+s.event;data=s.tabarea.data("idTabs")||{};data[e]=s;s.tabarea.data("idTabs",data);tabs.trigger(e).data(s.data,s)
.bind(e,{s:s},function(){
return idTabs.unbind.apply(this,arguments);})
.bind(s.event,{s:s},idTabs.find);type(s.start) == "Number" && (s.start<0 || (test=tabs.eq(s.start)).length)
|| type(s.start) == "String" && (test=tabs.filter("a[href=#"+s.start+"]")).length
|| (test=tabs.filter('.'+s.selected).removeClass(s.selected)).length
|| (s.start===undefined && (test=tabs.eq(0)).length);if(test.length) test.trigger(s.event);return s;};
idTabs.args = function(){
var a,i=0,s={},args=arguments,
str = function(_,a){
if(a.indexOf('.')==0) s.selected = a;else if(a.indexOf('!')==0)
if(/^!(true|false)$/i.test(a)) s.toggle = /^!true$/i.test(a);else s.event = a;
else if(a.indexOf(':')==0) {
a=a.substr(1).toLowerCase();if(a.indexOf('!')==0) s[a.substr(1)]=false;else s[a]=true;} else if(a) s.start = a;};while(i<args.length) {a=args[i++];switch(type(a)){
case "Object": $.extend(s,a); break;case "Boolean": s.change = a;break;case "Number": s.start = a;break;case "Function": s.click = a;break;case "Null": s.start = a;break;case "String": $.each(a.split(/\s+/g),str);default: break;}}
return s;};
idTabs.bind = function(s){
if(!s) return;var data = "idTabs"+ +new Date;if(s.grouped) $.idTabs(s.area,s,data);else s.area.each(function(){ $.idTabs(this,s,data); });};
idTabs.update = function(s){
if(!s) return;s.update=false;var self,data,n,e = s.event;e = (e+"").indexOf('!')==0 && e.substr(1) || e;e = e?"idTabs."+e:"";
return s.area.each(function(){
self = $(this);data = self.data("idTabs");if(!data) return;
if(e) {
n=$.extend({},data[e],s);
idTabs.remove(data[e])
idTabs(n.tabarea,n,n.data);
} else for(e in data) {
if(!Object.hasOwnProperty.call(data, e)) continue;
n=$.extend({},data[e],s);idTabs.remove(data[e]);idTabs(n.tabarea,n,n.data);}});};
idTabs.remove = function(s){
if(!s) return;
var data,tabs,e = s.event;
e = (e+"").indexOf('!')==0 && e.substr(1) || e;
e = "idTabs"+(e?"."+e:"");
return s.area.each(function(){
data=$(this).data("idTabs");delete data["idTabs."+s.event];$(this).data("idTabs",data);tabs = s.tabs || $("a[href^=#]",this);if(!tabs.length && $(this).is("a[href^=#]")) tabs = $(this);tabs.trigger(e);});};
idTabs.find = function(e){
var self=this, ret=false, s=e.data.s;
$("a[href="+href(this)+"]:first",s.area).each(function(){
var t = $(this).data(s.data);if(t) ret=idTabs.showtab.call(t.tabarea==s.tabarea?self:this,t,e)||ret;});return ret;};
idTabs.showtab = function(s,e){
if(!s || !s.toggle && $(this).is('.'+s.selected))
return s&&s.change;var id = href(this);if(s.click && s.click.call(this,id,s,e)==false) return s.change;if(s.toggle && $(this).is('.'+s.selected)) id=null;return idTabs.show.call(this,id,s,e);};
idTabs.show = function(id,s){
s.tabs.removeClass(s.selected);s.tab(id).addClass(s.selected);s.items.hide();s.item(id).show();return s.change;};
idTabs.unbind = function(e){
var s = e.data.s;
$(this).removeData(s.data)
.unbind("idTabs."+s.event);return false;};
idTabs.extend = function(){
var args = arguments;
return function(){
[].push.apply(args,arguments);this.idTabs.apply(this,args);};};
idTabs.tab = function(id){
if(!id) return $([]);return $("a[href="+id+"]",this.tabarea);};
idTabs.item = function(id){
if(!id) return $([]);var item = $(id);return item.length?item:$('.'+id.substr(1));};
idTabs.settings = {
start:undefined,
change:false,
click:null,
selected:".selected",
event:"!click",
toggle:false,
grouped:false};
idTabs.version = "3.0";
$(function(){ $(".idTabs").idTabs();});
})(jQuery);

