window.jsDefer||window.jQuery&&jQuery.defer||function(d,r){var a,b=d.document,t=b.createElement("a"),k,c,n,i,g,f={},o=[],j,m="then done fail isResolved isRejected promise".split(" "),u=Array.prototype.slice;if(d.jQuery){a=jQuery;a(function(){g.resolveWith(b,[a])})}else{d.jsDefer=d.$=a=function(a){return g.done(a)};a.extend=function(c,b){if(b===r){b=c;c=a}for(var d in b)c[d]=b[d];return c};a.extend({readyWait:1,ready:function(c){if(c===true)a.readyWait--;(!a.readyWait||c!==true&&!a.isReady)&&g.resolveWith(b,[a])},isFunction:function(a){return typeof a==="function"},_Deferred:function(){var d=[],b,e,f,c={done:function(){if(!f){var j=arguments,h,i,e,k,g;if(b){g=b;b=0}for(h=0,i=j.length;h<i;h++){e=j[h];if(e instanceof Array)c.done.apply(c,e);else a.isFunction(e)&&d.push(e)}g&&c.resolveWith(g[0],g[1])}return this},resolveWith:function(a,c){if(!f&&!b&&!e){e=1;while(d[0])d.shift().apply(a,c);b=[a,c];e=0}return this},resolve:function(){c.resolveWith(a.isFunction(this.promise)?this.promise():this,arguments);return this},isResolved:function(){return!!(e||b)},cancel:function(){f=1;d=[];return this}};return c},Deferred:function(e){var b=a._Deferred(),c=a._Deferred(),d;a.extend(b,{then:function(a,c){b.done(a).fail(c);return this},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,promise:function(a,c){if(a==null){if(d)return d;d=a={}}c=m.length;while(c--)a[m[c]]=b[m[c]];return a}});b.then(c.cancel,b.cancel);delete b.cancel;e&&e.call(b,b);return b},when:function(d){var e,h=arguments,c=h.length,b=c<=1&&d&&a.isFunction(d.promise)?d:a.Deferred(),g=b.promise(),f;if(c>1){f=new Array(c);for(e=0;e<c;e++)a.when(h[e]).then(function(a){f[e]=arguments.length>1?u.call(arguments,0):a;!--c&&b.resolveWith(g,f)},b.reject)}else b!==d&&b.resolve(d);return g}});function v(f){var e=a.Deferred(),d=b.getElementsByTagName("head")[0]||b.documentElement,c=b.createElement("script");c.src=f.url;c.onload=c.onreadystatechange=function(){if(!c.readyState||/loaded|complete/.test(c.readyState)){c.onload=c.onreadystatechange=null;d&&c.parentNode&&d.removeChild(c);c=r;e.resolve()}};d.insertBefore(c,d.firstChild);return e}function s(){if(!b.body)return setTimeout(function(){s()},1);a.isReady=true;i(true)}s()}function h(b,a){if(a.indexOf("//")===-1)a=b+a;t.href=a;return t.href}function p(a){return a.slice(0,a.lastIndexOf("/")+1)}function l(a){return typeof a==="string"?[a]:a}function q(a,e){if(!a)return 0;a=l(a);var b,d=a.length;while(d--){b=a[d];if(!c[b])a[d]=h(e,b)}return a}function e(d,a){var b=c[d];if(b)return b;a=h(p(a||""),d);return f[a]||(f[a]={url:a})}a.extend({defer:function(L,f,M){f=f||{};var A,F,h,m,x,H=0,C=f.delayDomReady||k.delayDomReady,O=f.min||k.min,b=e(L,M),s=b.url,N=O&&b.minUrl||b.url,t=a.extend(b,f),u=t.bare,g=t.contains,I=t.loaded,q=t.depends,G=t.multiple,w=b.prntPrms,p=b.promise,J,P,y,D;function K(){var c,d=J||b.runCb;if(!H--){if(!h.isRejected()){if(w)h.resolve(m||(b.result=m=d.call(p,a,f)));else if(g){j=[];d.call(p,a,f);c=g.length;while(c--)e(g[c],s).runCb=j[c].run;j=0;y.resolve();r(g,[],function(){c=g.length;m=[];while(c--)m.push(e(g[c],s).result);h.resolve(m)})}else h.resolve(m||(b.result=m=u?"bare":d.call(p,a,f)));m=G?0:m}C&&i(true)}}function z(){h.reject("fail",s)}function r(d,b,g){b=b||[];var e=d&&d.length;while(e--)b.push(c(d[e],f,s));a.when.apply(a,b).fail(z).done(g||K)}function E(){return(a.ajax||v)({url:N,dataType:"script",timeout:f.timeout,cache:!f.noCache,crossDomain:true}).fail(z).done(function(){var e=u?0:o.shift();if(!e){!u&&z();if(d.jQuery&&a!==jQuery)a=jQuery.extend({defer:c,deferSettings:k,deferDef:n});K();return}J=b.runCb=e.run;e.def&&n(e.def,s);q=l(e.depends)||[];B(!g&&e.contains);if(q.length){H++;r(q)}})}function B(b){if(b){y=a.Deferred();D=[y.promise()];g=l(b);A=g.length;while(A--)e(g[A],s).prntPrms=D}}if(G||!p){h=a.Deferred();if(I&&eval(I))return h.resolve().promise();if(C)a.readyWait++;x=p;h=a.Deferred();p=b.promise=h.promise();if(u)r(q,0,E);else if(x)r(q,[x]);else if(w)r(q,w);else{B(g);r(q,[E().promise()])}}if(F=f.readyName||b.name)i[F]=p;return p},deferDef:function(d,m){var i,g,j,k=b.getElementsByTagName("script");function l(e,b){if(typeof b==="string")b={url:b};var j=b.minUrl,i=h(g,b.url),d=f[i]||function(){var b=u.call(arguments,0);b.unshift(e);return c.apply(a,b)};b.url=i;if(j)b.minUrl=h(g,j);a.extend(d,b);f[i]=c[e]=d;d.name=e}k=k[k.length-1];g=p(m||k.src);if(typeof d==="string")return c[d]||f[h(g,d)];for(i in d)l(i,d[i]);for(i in d){j=e(i);j.depends=q(j.depends,g);j.contains=q(j.contains,g)}},deferSettings:{delayDomReady:false,min:true}});d.$deferRun=function(b,a){a=l(a);a=a&&a.length?{depends:a}:a||{};a.run=b;(j||o).push(a)};k=a.deferSettings;c=a.defer;n=a.deferDef;i=a.ready;g=a.Deferred();g.promise(i)}(window);
