// LAB.js (LABjs :: Loading And Blocking JavaScript) | v1.0rc1 (c) Kyle Simpson | MIT License
(function(d){var L="undefined",j="string",B="object",m="head",u="body",e="function",Q="script",J="readyState",a="xhrpoll",M="preloaddone",C="loadtrigger",G="srcuri",E="preload",i="done",c="which",D=true,y=false,p=d.document,K=p.location,O=d.ActiveXObject,f=d.setTimeout,v=d.setInterval,I=d.clearInterval,P=function(R){return p.getElementsByTagName(R)},s=Object.prototype.toString,t=function(){},w={},z={},b=/^[^?#]*\//.exec(K.href)[0],x=/^\w+\:\/\/[^\/]+/.exec(b)[0],N=P(Q),k=!+"\v1",g=/a/.__proto__=="//",H=/source/.test((/a/.toString+"")),q=/^function \(/.test([].sort),h=/a/[-1]=="a",o={preload:D,cache:k||g||H,order:h||q,xhr:D,dupe:y,preserve:y,base:"",which:m};w[m]=P(m);w[u]=P(u);function A(T,S){if(typeof T!==j){T=""}if(typeof S!==j){S=""}var R=(/^\w+\:\/\//.test(T)?"":S)+T;return((/^\w+\:\/\//.test(R)?"":(R.charAt(0)==="/"?x:b))+R)}function F(R){return(A(R).indexOf(x)===0)}function l(T){var S=0,R;while(R=N[S++]){if(typeof R.src===j&&T===A(R.src)&&R.getAttribute("rel")!==E){return D}}return y}function n(au,aj){au=!(!au);if(typeof aj===L){aj=o}var ai=y,ad=au&&aj.preload,ab=ad&&aj.cache,aq=ad&&aj.order,V=ad&&aj.xhr,ar=aj.preserve,U=aj.which,am=aj.base,W=t,al=y,af,Z=D,aa={},ap=[];function at(aw,av){if((aw[J]&&aw[J]!=="complete"&&aw[J]!=="loaded")||av[i]){return y}aw.onload=aw.onreadystatechange=null;return D}function T(ax,aw,ay){ay=!(!ay);if(!ay&&!(at(ax,aw))){return}aw[i]=D;for(var av in aa){if(aa.hasOwnProperty(av)&&!(aa[av][i])){return}}ai=D;if(ai){W()}}function ae(av){if(typeof av[C]===e){av[C]();av[C]=null}}function ac(aw,av){if(!at(aw,av)){return}av[M]=D;f(function(){w[av[c]][0].removeChild(aw);ae(av)},0)}function R(aw,av){if(aw[J]===0){I(av[a])}if(aw[J]===4){I(av[a]);av[M]=D;f(function(){ae(av)},0)}}function ao(ax,aA,ay,aB,av,az,aw){f(function(){if(w[ax[c]][0]===null){f(arguments.callee,25);return}var aC=p.createElement(Q),aD=function(aE,aF){aC.setAttribute(aE,aF)};aD("type",ay);aD("rel",av);if(typeof aB===j){aD("charset",aB)}if(typeof az===e){aC.onload=aC.onreadystatechange=function(){az(aC,ax)};aD("src",aA)}w[ax[c]][0].appendChild(aC);if(typeof aw===j){aC.text=aw;T(aC,ax,D)}},0)}function ah(av,ax,aw,ay){z[av[G]]=D;ao(av,ax,aw,ay,"",T)}function an(aw,ay,ax,az){var av=arguments;if(Z&&typeof aw[M]===L){aw[M]=y;ao(aw,ay,"text/html",az,E,ac)}else{if(!Z&&!aw[M]){aw[C]=function(){an.apply(null,av)}}else{if(!Z){ah.apply(null,av)}}}}function S(aw,az,ax,aA){var av=arguments,ay;if(Z&&typeof aw[M]===L){aw[M]=y;ay=aw.xhr=(O?new O("Microsoft.XMLHTTP"):new d.XMLHttpRequest());aw[a]=v(function(){R(ay,aw)},13);ay.open("GET",az);ay.send("")}else{if(!Z&&!aw[M]){aw[C]=function(){S.apply(null,av)}}else{if(!Z){z[aw[G]]=D;ao(aw,az,ax,aA,"",null,aw.xhr.responseText);aw.xhr=null}}}}function ag(aB){if(typeof aB.allowDup===L){aB.allowDup=aj.dupe}var aA=aB.src,ay=aB.type,aC=aB.charset,aw=aB.allowDup,av=A(aA,am),ax,az=F(av);if(typeof ay!==j){ay="text/javascript"}if(typeof aC!==j){aC=null}aw=!(!aw);if(!aw&&((typeof z[av]!==L&&z[av]!==null)||(Z&&aa[av])||l(av))){if(typeof aa[av]!==L&&aa[av][M]&&!aa[av][i]&&az){T(null,aa[av],D)}return}if(typeof aa[av]===L){aa[av]={}}ax=aa[av];if(typeof ax[c]===L){ax[c]=U}ax[i]=y;ax[G]=av;al=D;if(ad&&!aq){if(V&&az){S(ax,av,ay,aC)}else{an(ax,av,ay,aC)}}else{ah(ax,av,ay,aC)}}function Y(av){ap.push(av)}function X(av){if(au&&!aq){Y(av)}if(!au||ad){av()}}function ak(aw){var av=[];for(var ax=0;ax<aw.length;ax++){if(s.call(aw[ax])==="[object Array]"){av=av.concat(ak(aw[ax]))}else{av[av.length]=aw[ax]}}return av}af={script:function(){var aw=ak(arguments),av=af;if(ar){for(var ax=0;ax<aw.length;ax++){if(ax===0){X(function(){var ay=(typeof aw[0]===B)?aw[0]:{src:aw[0]};ag(ay)})}else{av=av.script(aw[ax])}av=av.wait()}}else{X(function(){for(var az=0;az<aw.length;az++){var ay=(typeof aw[az]===B)?aw[az]:{src:aw[az]};ag(ay)}})}return av},wait:function(ay){Z=false;if(typeof ay!==e){ay=t}var az=n(D,aj),av=az.trigger,ax=function(){try{ay()}catch(aA){}av()};delete az.trigger;var aw=function(){if(al&&!ai){W=ax}else{f(ax,0)}};if(au&&!al){Y(aw)}else{X(aw)}return az}};af.block=af.wait;if(au){af.trigger=function(){var av=0,aw;while(aw=ap[av++]){aw()}ap=[]}}return af}function r(T){var R,S={},U={UseCachePreload:"cache",UseLocalXHR:"xhr",UsePreloading:"preload",AlwaysPreserveOrder:"preserve",AppendTo:"which",AllowDuplicates:"dupe",BasePath:"base"};S.order=!(!o.order);for(R in U){if(typeof o[U[R]]!==L){S[U[R]]=(typeof T[R]!==L)?T[R]:o[U[R]]}}S.preserve=!(!S.preserve);S.cache=!(!S.cache);S.xhr=!(!S.xhr);S.preload=!(!S.preload);S.dupe=!(!S.dupe);S.base=(typeof S.base===j)?S.base:"";if(!S.preload){S.cache=S.order=S.xhr=y}S.which=(S.which===m||S.which===u)?S.which:m;return S}d.$LAB={setGlobalDefaults:function(R){o=r(R)},setOptions:function(R){return n(y,r(R))},script:function(){return n().script.apply(null,arguments)},wait:function(){return n().wait.apply(null,arguments)}};d.$LAB.block=d.$LAB.wait})(window);