// LAB.js (LABjs :: Loading And Blocking JavaScript) | v0.9 (c) Kyle Simpson | MIT License
(function(a){var d="undefined",n="string",k="head",i="body",l=!1,o=!l,j=a.document,c=a.setTimeout,g=function(q){return j.getElementsByTagName(q)},f={},b={},h=g("script");f[k]=g(k)[0];f[i]=g(i)[0];function e(q){return(typeof q===n&&q.length)?/^([^#?]*\/)?([^?\/#]*)(\?.*)?(#.*)?$/i.exec(q)[2]:""}function p(r){var s=0,q;while(q=h[s++]){if(typeof q.src===n&&r===e(q.src)){return o}}return l}function m(x,u,B){x=!(!x);u=((typeof u===n)?u:k);var z=l,w=function(){},r=l,A=null,t={},s=[];function v(C){if((this.readyState&&this.readyState!=="complete"&&this.readyState!=="loaded")||C.done){return}this.onload=this.onreadystatechange=null;C.done=o;function D(){for(var E in t){if(t.hasOwnProperty(E)&&!(t[E].done)){return l}}return(z=o)}if(D()){w()}}function q(G){var F=G.src,E=G.type,H=G.charset,C=G.allowDup,D=e(F);if(typeof E!==n){E="text/javascript"}if(typeof H!==n){H=null}C=!(!C);if(!C&&(typeof b[D]!==d||p(D))){return}if(typeof t[D]===d){t[D]={}}t[D].done=l;b[D]=o;r=o;(function(J){c(function I(){if(f[J]===null){c(I,25);return}var K=j.createElement("script");K.setAttribute("type",E);if(typeof H===n){K.setAttribute("charset",H)}K.onload=K.onreadystatechange=function(){v.call(K,t[D])};K.setAttribute("src",F);f[J].appendChild(K)},0)})(u)}function y(C){if(x){s.push(C)}else{C()}}A={script:function(){var C=arguments;y(function D(){for(var E=0;E<C.length;E++){if(Object.prototype.toString.call(C[E])==="[object Array]"){D.apply(null,C[E])}else{if(typeof C[E]==="object"){q(C[E])}else{if(typeof C[E]===n){q({src:C[E]})}}}}});return A},block:function(E){if(typeof E!=="function"){E=function(){}}var F=m(o,u),C=F.trigger,D=function(){try{E()}catch(G){}C()};delete F.trigger;y(function(){if(r&&!z){w=D}else{c(D,0)}});return F},toHEAD:function(){y(function(){u=k});return A},toBODY:function(){y(function(){u=i});return A}};if(x){A.trigger=function(){for(var C=0;C<s.length;C++){s[C]()}}}return A}a.$LAB={script:function(){return m().script.apply(null,arguments)},block:function(){return m().block.apply(null,arguments)},toHEAD:function(){return m().toHEAD()},toBODY:function(){return m().toBODY()}}})(window);