Team:ETH Zurich/js/jquery.dropotron.min.js

From 2014.igem.org

Revision as of 12:21, 2 June 2014 by Danger (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

/* jquery.dropotron.js v1.4 | (c) n33 | n33.co | MIT licensed */ (function(e){e.fn.disableSelection_dropotron=function(){return e(this).css("user-select","none").css("-khtml-user-select","none").css("-moz-user-select","none").css("-o-user-select","none").css("-webkit-user-select","none")};e.fn.dropotron=function(l){if(1<this.length)for(var a=0;a<this.length;a++)e(this[a]).dropotron(l);return e.dropotron(e.extend({selectorParent:e(this)},l))};e.dropotron=function(l){var a=e.extend({selectorParent:null,baseZIndex:1E3,menuClass:"dropotron",expandMode:"hover",hoverDelay:150, hideDelay:250,openerClass:"opener",openerActiveClass:"active",submenuClassPrefix:"level-",mode:"fade",speed:"fast",easing:"swing",alignment:"left",offsetX:0,offsetY:0,globalOffsetY:0,IEOffsetX:0,IEOffsetY:0,noOpenerFade:!0,detach:!0,cloneOnDetach:!0},l),f=a.selectorParent,p=f.find("ul"),q=e("html"),g=!1,t=null,r=null;f.on("doCollapseAll",function(){p.trigger("doCollapse")});p.each(function(){var b=e(this),c=b.parent();if(0<a.hideDelay)b.add(c).on("mouseleave",function(d){window.clearTimeout(r);r= window.setTimeout(function(){b.trigger("doCollapse")},a.hideDelay)});b.disableSelection_dropotron().hide().addClass(a.menuClass).css("position","absolute").on("mouseenter",function(a){window.clearTimeout(r)}).on("doExpand",function(){if(b.is(":visible"))return!1;window.clearTimeout(r);p.each(function(){var a=e(this);e.contains(a.get(0),c.get(0))||a.trigger("doCollapse")});var d=c.offset(),s=c.position();c.parent().position();var h=c.outerWidth(),f=b.outerWidth(),l=b.css("z-index")==a.baseZIndex,k, m,n;if(l){k=a.detach?d:s;n=k.top+c.outerHeight()+a.globalOffsetY;m=a.alignment;b.removeClass("left").removeClass("right").removeClass("center");switch(a.alignment){case "right":d=k.left-f+h;0>d&&(d=k.left,m="left");break;case "center":d=k.left-Math.floor((f-h)/2);0>d?(d=k.left,m="left"):d+f>q.width()&&(d=k.left-f+h,m="right");break;default:d=k.left,d+f>q.width()&&(d=k.left-f+h,m="right")}b.addClass(m)}else switch("relative"==c.css("position")||"absolute"==c.css("position")?(n=a.offsetY,d=-1*s.left): (n=s.top+a.offsetY,d=0),a.alignment){case "right":d+=-1*c.parent().outerWidth()+a.offsetX;break;default:d+=c.parent().outerWidth()+a.offsetX}navigator.userAgent.match(/MSIE ([0-9]+)\./)&&8>RegExp.$1&&(d+=a.IEOffsetX,n+=a.IEOffsetY);b.css("left",d+"px").css("top",n+"px");b.css("opacity","0.01").show();h=!1;d="relative"==c.css("position")||"absolute"==c.css("position")?-1*s.left:0;0>b.offset().left?(d+=c.parent().outerWidth()-a.offsetX,h=!0):b.offset().left+f>q.width()&&(d+=-1*c.parent().outerWidth()- a.offsetX,h=!0);h&&b.css("left",d+"px");b.hide().css("opacity","1");switch(a.mode){case "zoom":g=!0;c.addClass(a.openerActiveClass);b.animate({width:"toggle",height:"toggle"},a.speed,a.easing,function(){g=!1});break;case "slide":g=!0;c.addClass(a.openerActiveClass);b.animate({height:"toggle"},a.speed,a.easing,function(){g=!1});break;case "fade":g=!0;l&&!a.noOpenerFade?(h="slow"==a.speed?80:"fast"==a.speed?40:Math.floor(a.speed/2),c.fadeTo(h,0.01,function(){c.addClass(a.openerActiveClass);c.fadeTo(a.speed, 1);b.fadeIn(a.speed,function(){g=!1})})):(c.addClass(a.openerActiveClass),c.fadeTo(a.speed,1),b.fadeIn(a.speed,function(){g=!1}));break;default:c.addClass(a.openerActiveClass),b.show()}return!1}).on("doCollapse",function(){if(!b.is(":visible"))return!1;b.hide();c.removeClass(a.openerActiveClass);b.find("."+a.openerActiveClass).removeClass(a.openerActiveClass);b.find("ul").hide();return!1}).on("doToggle",function(a){b.is(":visible")?b.trigger("doCollapse"):b.trigger("doExpand");return!1});c.disableSelection_dropotron().addClass("opener").css("cursor", "pointer").on("click",function(a){g||(a.preventDefault(),a.stopPropagation(),b.trigger("doToggle"))});"hover"==a.expandMode&&c.hover(function(c){g||(t=window.setTimeout(function(){b.trigger("doExpand")},a.hoverDelay))},function(a){window.clearTimeout(t)})});p.find("a").css("display","block").on("click",function(a){g||(f.trigger("doCollapseAll"),a.stopPropagation(),1>e(this).attr("href").length&&a.preventDefault())});f.find("li").css("white-space","nowrap").each(function(){var a=e(this),c=a.children("a"), d=a.children("ul");c.on("click",function(a){1>e(this).attr("href").length?a.preventDefault():a.stopPropagation()});if(0<c.length&&0==d.length)a.on("click",function(a){g||(f.trigger("doCollapseAll"),a.stopPropagation())})});f.children("li").each(function(){var b=e(this).children("ul"),c;if(0<b.length){a.detach&&(a.cloneOnDetach&&(c=b.clone(),c.attr("class","").hide().appendTo(b.parent())),b.detach().appendTo("body"));c=a.baseZIndex;for(var d=1;0 li > ul")}});q.on("click",function(){g||f.trigger("doCollapseAll")}).on("keypress",function(a){g||27!=a.keyCode||(a.preventDefault(),f.trigger("doCollapseAll"))})}})(jQuery);