Skip to content

Instantly share code, notes, and snippets.

@SlexAxton
Created February 7, 2012 20:42
Show Gist options
  • Save SlexAxton/1761809 to your computer and use it in GitHub Desktop.
Save SlexAxton/1761809 to your computer and use it in GitHub Desktop.
Closure compiled advanced yepnope
(function(k,h,L){function r(a){return w.call(a)=="[object Function]"}function s(a){return typeof a=="string"}function t(){}function A(a){return!a||a=="loaded"||a=="complete"||a=="uninitialized"}function m(){var a=u.shift();v=1;a?a.d?o(function(){(a.d=="c"?i.t:i.u)(a.j,0,a.e,a.x,a.f,1)},0):(a(),m()):v=0}function M(a,b,x,f,l,g,e){function p(c){if(!B&&A(d.readyState)&&(C.z=B=1,!v&&m(),d.onload=d.onreadystatechange=null,c)){a!="img"&&o(function(){D.removeChild(d)},50);for(var p in j[b])if(j[b].hasOwnProperty(p))j[b][p].onload()}}
var e=e||i.a,d={},B=0,y=0,C={d:x,j:b,f:l,e:g,x:e};j[b]===1&&(y=1,j[b]=[],d=h.createElement(a));a=="object"?d.data=b:(d.src=b,d.type=a);d.width=d.height="0";d.onerror=d.onload=d.onreadystatechange=function(){p.call(this,y)};u.splice(f,0,C);a!="img"&&(y||j[b]===2?(D.insertBefore(d,E?null:n),o(p,e)):j[b].push(d))}function N(a,b,x,f,h){v=0;b=b||"j";s(a)?M(b=="c"?O:F,a,b,this.b++,x,f,h):(u.splice(this.b++,0,a),u.length==1&&m());return this}function G(){var a=i;a.h={load:N,b:0};return a}var q=h.documentElement,
o=k.setTimeout,n=h.getElementsByTagName("script")[0],w={}.toString,u=[],v=0,H="MozAppearance"in q.style,E=H&&!!h.createRange().compareNode,D=E?q:n.parentNode;k.opera&&w.call(k.opera);var q=!!h.attachEvent,F=H?"object":q?"script":"img",O=q?"script":F,I=Array.isArray||function(a){return w.call(a)=="[object Array]"},z=[],j={},J={timeout:function(a,b){if(b.length)a.timeout=b[0];return a}},K,i;i=function(a){function b(a){var a=a.split("!"),d=z.length,b=a.pop(),e=a.length,b={url:b,c:b,w:a},h,c,f;for(c=
0;c<e;c++)f=a[c].split("="),(h=J[f.shift()])&&(b=h(b,f));for(c=0;c<d;c++)b=z[c](b);return b}function h(a,d,e,f,g){var c=b(a),i=c.n;c.url.split(".").pop().split("?").shift();if(!c.p)d&&(d=r(d)?d:d[a]||d[f]||d[a.split("/").pop().split("?")[0]]||m),c.g?c.g(a,d,e,f,g):(j[c.url]?c.i=!0:j[c.url]=1,e.load(c.url,c.r||!c.s&&"css"==c.url.split(".").pop().split("?").shift()?"c":L,c.i,c.m,c.timeout),(r(d)||r(i))&&e.load(function(){G();d&&d(c.c,g,f);i&&i(c.c,g,f);j[c.url]=2}))}function f(a,b){function e(a,g){if(a)if(s(a))g||
(c=function(){var a=[].slice.call(arguments);i.apply(this,a);l()}),h(a,c,b,0,f);else{if(Object(a)===a)for(k in j=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(k)&&(!g&&!--j&&(r(c)?c=function(){var a=[].slice.call(arguments);i.apply(this,a);l()}:c[k]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b);l()}}(i[k])),h(a[k],c,b,k,f))}else!g&&l()}var f=!!a.test,g=a.load||a.o,c=a.q||t,i=c,l=a.complete||t,j,k;e(f?a.A:a.v,!!g);g&&e(g)}
var l,g,e=this.B.h;if(s(a))h(a,0,e,0);else if(I(a))for(l=0;l<a.length;l++)g=a[l],s(g)?h(g,0,e,0):I(g)?i(g):Object(g)===g&&f(g,e);else Object(a)===a&&f(a,e)};i.l=function(a,b){J[a]=b};i.k=function(a){z.push(a)};i.a=1E4;if(h.readyState==null&&h.addEventListener)h.readyState="loading",h.addEventListener("DOMContentLoaded",K=function(){h.removeEventListener("DOMContentLoaded",K,0);h.readyState="complete"},0);k.yepnope=G();k.yepnope.executeStack=m;k.yepnope.injectJs=function(a,b,k,f,l,g){var e=h.createElement("script"),
j,d,f=f||i.a;e.src=a;for(d in k)e.setAttribute(d,k[d]);b=g?m:b||t;e.onreadystatechange=e.onload=function(){if(!j&&A(e.readyState))j=1,b(),e.onload=e.onreadystatechange=null};o(function(){j||(j=1,b(1))},f);l?e.onload():n.parentNode.insertBefore(e,n)};k.yepnope.injectCss=function(a,b,i,f,j,g){var f=h.createElement("link"),e,b=g?m:b||t;f.href=a;f.rel="stylesheet";f.type="text/css";for(e in i)f.setAttribute(e,i[e]);j||(n.parentNode.insertBefore(f,n),o(b,0))}})(window,document);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment