Files
2015-08-06 12:39:11 +08:00

387 lines
7.8 KiB
JavaScript

define('lib/LAB', function() {
var o = window;
var K = o.$LAB,
y = "UseLocalXHR",
z = "AlwaysPreserveOrder",
u = "AllowDuplicates",
A = "CacheBust",
B = "BasePath",
C = /^[^?#]*\//.exec(location.href)[0],
D = /^\w+\:\/\/\/?[^\/]+/.exec(C)[0],
i = document.head || document.getElementsByTagName("head"),
L = (o.opera && Object.prototype.toString.call(o.opera) == "[object Opera]") || ("MozAppearance" in document.documentElement.style),
q = document.createElement("script"),
E = typeof q.preload == "boolean",
r = E || (q.readyState && q.readyState == "uninitialized"),
F = !r && q.async === true,
M = !r && !F && !L;
function G(a) {
return Object.prototype.toString.call(a) == "[object Function]"
}
function H(a) {
return Object.prototype.toString.call(a) == "[object Array]"
}
function N(a, c) {
var b = /^\w+\:\/\//;
if (/^\/\/\/?/.test(a)) {
a = location.protocol + a
} else if (!b.test(a) && a.charAt(0) != "/") {
a = (c || "") + a
}
return b.test(a) ? a : ((a.charAt(0) == "/" ? D : C) + a)
}
function s(a, c) {
for (var b in a) {
if (a.hasOwnProperty(b)) {
c[b] = a[b]
}
}
return c
}
function O(a) {
var c = false;
for (var b = 0; b < a.scripts.length; b++) {
if (a.scripts[b].ready && a.scripts[b].exec_trigger) {
c = true;
a.scripts[b].exec_trigger();
a.scripts[b].exec_trigger = null
}
}
return c
}
function t(a, c, b, d) {
a.onload = a.onreadystatechange = function() {
if ((a.readyState && a.readyState != "complete" && a.readyState != "loaded") || c[b]) return;
a.onload = a.onreadystatechange = null;
d()
}
}
function I(a) {
a.ready = a.finished = true;
for (var c = 0; c < a.finished_listeners.length; c++) {
a.finished_listeners[c]()
}
a.ready_listeners = [];
a.finished_listeners = []
}
function P(d, f, e, g, h) {
setTimeout(function() {
var a, c = f.real_src,
b;
if ("item" in i) {
if (!i[0]) {
setTimeout(arguments.callee, 25);
return
}
i = i[0]
}
a = document.createElement("script");
if (f.type) a.type = f.type;
if (f.charset) a.charset = f.charset;
if (h) {
if (r) {
e.elem = a;
if (E) {
a.preload = true;
a.onpreload = g
} else {
a.onreadystatechange = function() {
if (a.readyState == "loaded") g()
}
}
a.src = c
} else if (h && c.indexOf(D) == 0 && d[y]) {
b = new XMLHttpRequest();
b.onreadystatechange = function() {
if (b.readyState == 4) {
b.onreadystatechange = function() {};
e.text = b.responseText + "\n//@ sourceURL=" + c;
g()
}
};
b.open("GET", c);
b.send()
} else {
a.type = "text/cache-script";
t(a, e, "ready", function() {
i.removeChild(a);
g()
});
a.src = c;
i.insertBefore(a, i.firstChild)
}
} else if (F) {
a.async = false;
t(a, e, "finished", g);
a.src = c;
i.insertBefore(a, i.firstChild)
} else {
t(a, e, "finished", g);
a.src = c;
i.insertBefore(a, i.firstChild)
}
}, 0)
}
function J() {
var l = {},
Q = r || M,
n = [],
p = {},
m;
l[y] = true;
l[z] = false;
l[u] = false;
l[A] = false;
l[B] = "";
function R(a, c, b) {
var d;
function f() {
if (d != null) {
d = null;
I(b)
}
}
if (p[c.src].finished) return;
if (!a[u]) p[c.src].finished = true;
d = b.elem || document.createElement("script");
if (c.type) d.type = c.type;
if (c.charset) d.charset = c.charset;
t(d, b, "finished", f);
if (b.elem) {
b.elem = null
} else if (b.text) {
d.onload = d.onreadystatechange = null;
d.text = b.text
} else {
d.src = c.real_src
}
i.insertBefore(d, i.firstChild);
if (b.text) {
f()
}
}
function S(c, b, d, f) {
var e, g, h = function() {
b.ready_cb(b, function() {
R(c, b, e)
})
},
j = function() {
b.finished_cb(b, d)
};
b.src = N(b.src, c[B]);
b.real_src = b.src + (c[A] ? ((/\?.*$/.test(b.src) ? "&_" : "?_") + ~~(Math.random() * 1E9) + "=") : "");
if (!p[b.src]) p[b.src] = {
items: [],
finished: false
};
g = p[b.src].items;
if (c[u] || g.length == 0) {
e = g[g.length] = {
ready: false,
finished: false,
ready_listeners: [h],
finished_listeners: [j]
};
P(c, b, e, ((f) ? function() {
e.ready = true;
for (var a = 0; a < e.ready_listeners.length; a++) {
e.ready_listeners[a]()
}
e.ready_listeners = []
} : function() {
I(e)
}), f)
} else {
e = g[0];
if (e.finished) {
j()
} else {
e.finished_listeners.push(j)
}
}
}
function v() {
var e, g = s(l, {}),
h = [],
j = 0,
w = false,
k;
function T(a, c) {
a.ready = true;
a.exec_trigger = c;
x()
}
function U(a, c) {
a.ready = a.finished = true;
a.exec_trigger = null;
for (var b = 0; b < c.scripts.length; b++) {
if (!c.scripts[b].finished) return
}
c.finished = true;
x()
}
function x() {
while (j < h.length) {
if (G(h[j])) {
try {
h[j++]()
} catch (err) {}
continue
} else if (!h[j].finished) {
if (O(h[j])) continue;
break
}
j++
}
if (j == h.length) {
w = false;
k = false
}
}
function V() {
if (!k || !k.scripts) {
h.push(k = {
scripts: [],
finished: true
})
}
}
e = {
script: function() {
for (var f = 0; f < arguments.length; f++) {
(function(a, c) {
var b;
if (!H(a)) {
c = [a]
}
for (var d = 0; d < c.length; d++) {
V();
a = c[d];
if (G(a)) a = a();
if (!a) continue;
if (H(a)) {
b = [].slice.call(a);
b.unshift(d, 1);
[].splice.apply(c, b);
d--;
continue
}
if (typeof a == "string") a = {
src: a
};
a = s(a, {
ready: false,
ready_cb: T,
finished: false,
finished_cb: U
});
k.finished = false;
k.scripts.push(a);
S(g, a, k, (Q && w));
w = true;
if (g[z]) e.wait()
}
})(arguments[f], arguments[f])
}
return e
},
wait: function() {
if (arguments.length > 0) {
for (var a = 0; a < arguments.length; a++) {
h.push(arguments[a])
}
k = h[h.length - 1]
} else k = false;
x();
return e
}
};
return {
script: e.script,
wait: e.wait,
setOptions: function(a) {
s(a, g);
return e
}
}
}
m = {
setGlobalDefaults: function(a) {
s(a, l);
return m
},
setOptions: function() {
return v().setOptions.apply(null, arguments)
},
script: function() {
return v().script.apply(null, arguments)
},
wait: function() {
return v().wait.apply(null, arguments)
},
queueScript: function() {
n[n.length] = {
type: "script",
args: [].slice.call(arguments)
};
return m
},
queueWait: function() {
n[n.length] = {
type: "wait",
args: [].slice.call(arguments)
};
return m
},
runQueue: function() {
var a = m,
c = n.length,
b = c,
d;
for (; --b >= 0;) {
d = n.shift();
a = a[d.type].apply(null, d.args)
}
return a
},
noConflict: function() {
o.$LAB = K;
return m
},
sandbox: function() {
return J()
}
};
return m
}
o.$LAB = J();
(function(a, c, b) {
if (document.readyState == null && document[a]) {
document.readyState = "loading";
document[a](c, b = function() {
document.removeEventListener(c, b, false);
document.readyState = "complete"
}, false)
}
})("addEventListener", "DOMContentLoaded")
return o.$LAB;
});