Team:HNU China/mbTabset.js
From 2014.igem.org
/*
* mbTabset plug in * developed by Matteo Bicocchi on JQuery * ?2002-2009 Open Lab srl, Matteo Bicocchi * www.open-lab.com - info@open-lab.com * version 1.9 * tested on: Explorer, FireFox and Chrome for PC * FireFox and Safari for Mac Os X * FireFox for Linux * MIT (MIT-LICENSE.txt) licenses. */
(function($) {
$.mbTabset={ mbTabsetArray:[], options:{ container:"", item:"a", axis:"x", sortable:true, position:"left", start:function(){}, stop:function(){} }, build: function(opt){ this.each(function(){ $(this).addClass("mbTabset"); var mbTabsetOptions = {}; $.extend (mbTabsetOptions, $.mbTabset.options); var el={el: $(this)}; $.extend (mbTabsetOptions, el); $.extend (mbTabsetOptions, opt); $(this).addClass(mbTabsetOptions.position); var tabsetContainerID=$(this).attr("id")+"_container";$(this).after("");
var tabsetContainer=$("#"+tabsetContainerID); var tabs= $(this).find(mbTabsetOptions.item); this.opt=mbTabsetOptions; this.opt.tabsetContainer=tabsetContainer; this.opt.tabs=tabs; var hasSel= $(tabs).is(".sel"); if (!hasSel) $(this).find(mbTabsetOptions.item+":first").addClass("sel"); if ($.metadata) $.metadata.setType("class"); $(tabs).each(function(){ $(this).setAsMbTab(mbTabsetOptions);
}); if (mbTabsetOptions.sortable){ $(this).setSortableMbTabset(mbTabsetOptions); } }); }, setAsTab:function(opt){ if ($.metadata){ $.metadata.setType("class"); if ($(this).metadata().content) $(this).attr("content",$(this).metadata().content); if ($(this).metadata().ajaxContent) $(this).attr("ajaxContent",$(this).metadata().ajaxContent); if ($(this).metadata().ajaxData) $(this).attr("ajaxData",$(this).metadata().ajaxData); } if ($(this).hasClass("sel")) $(this).mb_drawAjaxContent(opt.tabsetContainer); $(this).addClass("tab"); $(this).addClass("mbTab"); $(this).wrapInner(""); var myContainer=$("#"+$(this).attr("content")); myContainer.addClass("tabContent"); opt.tabsetContainer.append(myContainer); myContainer.hide(); if ($(this).hasClass("sel")) myContainer.fadeIn();
$(this).bind("click",function(){ if ($(this).is(".disabled , .sel")) return; $(this).mb_drawAjaxContent(opt.tabsetContainer); var choosenTab=$(this); var actualCont=""; $(opt.tabs).each(function(){ if ($(this).is(".sel")){ actualCont=$(this).attr("content"); $(this).removeClass("sel"); } }); $("#"+actualCont).fadeOut("fast",function(){ choosenTab.addClass("sel"); $("#"+choosenTab.attr("content")).addClass("tabContent"); $("#"+choosenTab.attr("content")).slideDown("fast"); }); }); }, addTab:function(taboptions){ var opt = $(this)[0].opt; var tabOpt={ id:"tab_"+$(this).find(opt.item).length+1, title:"newTab", ajaxContent:"newAjaxContent", ajaxData:"" }; $.extend (tabOpt, taboptions);
$(this).append("<a id='"+tabOpt.id+"'>"+tabOpt.title+"</a>"); var tab=$(this).find("#"+tabOpt.id); tab.attr("ajaxContent", tabOpt.ajaxContent); tab.attr("content", "cont_"+tabOpt.id); tab.attr("ajaxData", tabOpt.ajaxData); opt.tabs= $(this).find(opt.item); tab.setAsMbTab(opt); if (opt.sortable) $(this).setSortableMbTabset(opt); }, mb_drawAjaxContent:function(tabsetContainer){ if ($(this).attr("ajaxContent")){ if ($("#"+$(this).attr("content")).html()==null) {tabsetContainer.append("
} var where=$("#"+$(this).attr("content")); if (tabsetContainer) where.hide(); $.ajax({ type: "POST", url: $(this).attr("ajaxContent"), async: true, data: (!$(this).attr("ajaxData"))?"":$(this).attr("ajaxData"), success: function(html){ where.html(html); } }); } }, mb_changeContent:function(contentUrl, contentData){ $(this).attr({ajaxContent:contentUrl, ajaxData:contentData}); }, toArray:function(el){ return $(el).sortable("toArray"); }, select: function(){ }, setSortable:function(opt){ if (!opt) opt = $(this)[0].opt; var tabs= $(this).find(opt.item).not(".block"); $(tabs).each(function(){ if($(this).find("i").size()==0){ $(this).find("span").prepend(" ").addClass("sortable"); $(this).find("i").bind("click",function(e){e.preventDefault();return false;}); }; }); $(this).sortable({ item:opt.item, handle:"i", cursor:"move", revert:false, axis:opt.axis, opacity:.7, forcePlaceholderSize:true, start: function(){ $(this).find(".tab").addClass("floatEl"); if (opt.start) opt.start(); }, stop: function(){ $(this).find(".tab").removeClass("floatEl"); $.mbTabset.mbTabsetArray= $.mbTabset.toArray($(this)); if (opt.stop) opt.stop(); } }); }, clearSortable:function(opt){ if (!opt) opt = $(this)[0].opt; var tabs= $(this).find(opt.item); $(tabs).each(function(){ $(this).find("span").removeClass("sortable"); $(this).find("i").remove(); }); $(this).sortable("destroy"); }, selectMbTab:function(){ $(this).click(); } }; $.fn.setAsMbTab = $.mbTabset.setAsTab; $.fn.addMbTab = $.mbTabset.addTab; $.fn.setSortableMbTabset = $.mbTabset.setSortable; $.fn.mb_drawAjaxContent = $.mbTabset.mb_drawAjaxContent; $.fn.mb_changeContent = $.mbTabset.mb_changeContent; $.fn.clearSortableMbTabset = $.mbTabset.clearSortable; $.fn.buildMbTabset = $.mbTabset.build; $.fn.serializeMbTabset = $.mbTabset.serialize; $.fn.selectMbTab = $.mbTabset.selectMbTab;
})(jQuery);