Created
June 2, 2012 22:39
-
-
Save voidfiles/2860318 to your computer and use it in GitHub Desktop.
Clipboard.com's Bookmarklet
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Bookmarklet | |
javascript: (function(a) { | |
var b = a.document; | |
try { | |
a.CLIPBOARD.client.Clipper.instances["_d09a13b8af38e2f71b4f1626c07e1c42"].activate(); | |
return | |
} catch(e) {} | |
var c = b.createElement("script"), | |
d = b.getElementsByTagName("head")[0], | |
a = a.location.protocol; | |
d || (d = b.createElement("head"), b.documentElement.insertBefore(d, b.body)); | |
c.type = "text/javascript"; | |
c.async = !0; | |
c.src = a + "//clipboard.com/js/bookmarklet_boot.js?t=5&random=" + Math.round(99999999 * Math.random()) + "&id=_d09a13b8af38e2f71b4f1626c07e1c42&origin=bookmarklet"; | |
d.appendChild(c) | |
})(window); | |
// Postloaded JS | |
(function(b, f) { | |
var h = f.getElementsByTagName("head")[0]; | |
h || (h = f.createElement("head"), f.documentElement.insertBefore(h, f.body)); | |
var d = { | |
"staticBaseUrl": "//d3r3jj4tch5va8.cloudfront.net", | |
"baseUrl": "clipboard.com", | |
"defer": false | |
}, | |
i = d.instanceId || "_", | |
g = d.origin, | |
j = d.defer; | |
try { | |
b.CLIPBOARD.client.Clipper.instances[g][i].activate(); | |
return | |
} catch(k) {} | |
if (! ("function" === typeof b.clipboardClipperInit && !1 === b.clipboardClipperInit())) { | |
var l, | |
a = b.CLIPBOARD = b.CLIPBOARD || {}; | |
a.client = a.client || {}; | |
a.client.origins = a.client.origins || {}; | |
a.client.origins[i] = g; | |
a.config = a.config || | |
{}; | |
a.config.staticBaseUrl = d.staticBaseUrl; | |
a.config.baseUrl = d.baseUrl; (function(a, e) { | |
var c = f.createElement("script"), | |
d = !1; | |
c.type = "text/javascript"; | |
c.async = !0; | |
c.src = a; | |
h.appendChild(c); | |
c.onload = c.onreadystatechange = function() { | |
var a = !this.readyState || "loaded" === this.readyState || "complete" === this.readyState; | |
if (!d && a) d = !0, | |
e(), | |
c.onload = c.onreadystatechange = null, | |
c.parentNode.removeChild(c) | |
} | |
})(a.config.staticBaseUrl + "/js/1.0.17/" + ("embed" === g ? "clipper_embed.js": "clipper.js"), | |
function() { | |
var b = a.client, | |
e = { | |
bookmarkletVersion: d.bookmarkletVersion, | |
instanceId: i, | |
origin: g | |
}; | |
b.debug = e.debug = !1; | |
if (!j) { | |
if ("embed" === g) e.populateSelectorsThunk = function(a) { | |
return { | |
identity: new b.selectors.IdentitySelector(a) | |
} | |
}, | |
e.createUiThunk = function(a) { | |
return new b.ui.EmbedUiController(a) | |
}, | |
e.allowedMetrics = { | |
extract: 1, | |
login: 1, | |
reviewCancel: 1, | |
sendFail: 1, | |
sendSuccess: 1, | |
sandbox: 1 | |
}; (new b.Clipper(null, e)).activate() | |
} | |
}) | |
} | |
})(window, document); | |
// Post-Post-Loaded JS | |
(function(d) { | |
var a; | |
a = d.CLIPBOARD = d.CLIPBOARD || {}, | |
d = a; | |
d.JSON = d.JSON || {}; | |
d.client = d.client || {}; | |
d.client.origins = d.client.origins || {}; | |
d.client.util = {}; | |
d.client.ui = {}; | |
d.client.selectors = {}; | |
d.client.extractors = {}; | |
d.client.popups = {} | |
})(window); | |
(function(d, i) { | |
var g; | |
d.CLIPBOARD.client.util = { | |
idSuffix: "_clipboard_314159265", | |
rewriteClass: "node_clipboard_314159265", | |
doNotClipAttributeName: "ignore_clipboard_314159265", | |
doNotClipAllAttributeName: "ignoreAll_clipboard_314159265", | |
maxArea: Infinity, | |
clipContainerClass: "clipping_314159265", | |
addSuffix: function(b) { | |
return b + this.idSuffix | |
}, | |
shouldClip: function(b) { | |
return ! b.attr(this.doNotClipAttributeName) && !b.attr(this.doNotClipAllAttributeName) | |
}, | |
cullNodeAttributeFlag: "cullNode_clipboard_314159265", | |
rgbToHex: function() { | |
function b(b) { | |
b = | |
b.toString(16); | |
return 1 == b.length ? "0" + b: b | |
} | |
return function(a, h) { | |
return "#" + (h && 1 !== h ? b(Math.floor(255 * h)) : "") + b(a[0]) + b(a[1]) + b(a[2]) | |
} | |
} (), | |
rectColors: { | |
blue: { | |
startColor: [138, 194, 224], | |
stopColor: [108, 150, 173] | |
}, | |
green: { | |
startColor: [156, 209, 142], | |
stopColor: [57, 130, 53] | |
}, | |
orange: { | |
startColor: [246, 230, 18], | |
stopColor: [237, 144, 23] | |
}, | |
red: { | |
startColor: [235, 179, 172], | |
stopColor: [204, 85, 85] | |
}, | |
gray: { | |
startColor: [210, 210, 210], | |
stopColor: [139, 139, 139] | |
}, | |
purple: { | |
startColor: [227, 157, 226], | |
stopColor: [153, 72, 153] | |
}, | |
teal: { | |
startColor: [173, | |
255, 254], | |
stopColor: [50, 170, 168] | |
} | |
}, | |
applyGradient: function(b, a, h) { | |
var a = this.rectColors[a] || this.rectColors.blue, | |
n = d.navigator.userAgent, | |
h = h || 0.25, | |
g = "rgba(" + a.startColor.join(",") + ", " + h + ")", | |
i = "rgba(" + a.stopColor.join(",") + ", " + h + ")", | |
h = 'progid:DXImageTransform.Microsoft.gradient(startColorstr="' + this.rgbToHex(a.startColor, h) + '", endColorstr="' + this.rgbToHex(a.stopColor, h) + '", GradientType=0)', | |
g = "linear-gradient(top, " + g + " 0%, " + i + " 100%)"; | |
/Firefox/i.test(n) ? b.cssImportant("background-image", "-moz-" + | |
g) : /Webkit/i.test(n) ? b.cssImportant("background-image", "-webkit-" + g) : /Opera/i.test(n) ? b.cssImportant("background-image", "-o-" + g) : /MSIE 10/i.test(n) ? b.cssImportant("background-image", "-ms-" + g) : /MSIE [89]/i.test(n) && b.cssImportant("filter", h); | |
/MSIE 8/i.test(n) ? a = "rgb(" + a.stopColor.join(",") + ")": (a = this.rgbToHsl.apply(null, a.startColor), a[0] *= 360, a[1] = 100 * Math.min(1, Math.max(0, a[1] + 0.1)) + "%", a[2] = 100 * a[2] + "%", a = "hsla(" + a.join(",") + ", 0.5)"); | |
b.cssImportant("border-color", a) | |
}, | |
rgbToHsl: function(b, a, h) { | |
var b = | |
b / 255, | |
a = a / 255, | |
h = h / 255, | |
n = Math.max(b, a, h), | |
d = Math.min(b, a, h), | |
g, | |
i = (n + d) / 2; | |
if (n == d) g = d = 0; | |
else { | |
var v = n - d, | |
d = 0.5 < i ? v / (2 - n - d) : v / (n + d); | |
switch (n) { | |
case b: | |
g = (a - h) / v + (a < h ? 6: 0); | |
break; | |
case a: | |
g = (h - b) / v + 2; | |
break; | |
case h: | |
g = (b - a) / v + 4 | |
} | |
g /= 6 | |
} | |
return [g, d, i] | |
}, | |
forEach: function(b, a) { | |
for (var h in b) b.hasOwnProperty(h) && a.call(null, b[h], h) | |
}, | |
getRangeData: function() { | |
return d.getSelection ? | |
function(b) { | |
var a, | |
h = { | |
top: null, | |
left: null | |
}; | |
if (0 < d.getSelection().rangeCount) try { | |
a = d.getSelection().getRangeAt(0); | |
var n = a.getBoundingClientRect(); | |
h.top = | |
n.top; | |
h.left = n.left | |
} catch(g) { | |
a = null | |
} | |
return { | |
fragment: a && a.cloneContents() || b.createDocumentFragment(), | |
text: a ? a.toString() : "", | |
offset: a ? h: { | |
top: 0, | |
left: 0 | |
} | |
} | |
}: function(b) { | |
var a = b.selection.createRange(), | |
h = b.createElement("div"), | |
n = { | |
top: a.boundingTop, | |
left: a.boundingLeft | |
}; | |
h.innerHTML = a.htmlText; | |
for (var b = b.createDocumentFragment(), d = 0, g = h.childNodes.length; d < g; d++) b.appendChild(h.childNodes[d].cloneNode(!0)); | |
return { | |
fragment: b, | |
text: a.text, | |
offset: n | |
} | |
} | |
} (), | |
trim: function(b, a) { | |
var h, | |
d, | |
g, | |
b = b + ""; | |
h = a ? (a + "").replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^:])/g, | |
"$1") : " \n\r\t\u000c\u000b\u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000"; | |
for (g = 0, d = b.length; g < d; g++) if ( - 1 === h.indexOf(b.charAt(g))) { | |
b = b.substring(g); | |
break | |
} | |
for (g = b.length - 1; 0 <= g; g--) if ( - 1 === h.indexOf(b.charAt(g))) { | |
b = b.substring(0, g + 1); | |
break | |
} | |
return - 1 === h.indexOf(b.charAt(0)) ? b: "" | |
}, | |
safeClone: function(b) { | |
var a = b.constructor, | |
b = b[0].cloneNode(!1), | |
h = [], | |
n, | |
g, | |
i, | |
u; | |
g = d.CLIPBOARD.common.blobSanitization.unsafeAttributes; | |
for (n in g) g.hasOwnProperty(n) && h.push(n); | |
for (; n = h.pop();) b.removeAttribute(n); | |
this.removeOurAttributes(a(b)); | |
g = b.attributes; | |
i = g.length; | |
for (u = 0; u < i; u++) n = g[u], | |
/^on/.test(n.name) && h.push(n.name); | |
for (; n = h.pop();) b.removeAttribute(n); | |
return a(b) | |
}, | |
merge: function(b, a) { | |
var b = b || {}, | |
h; | |
for (h in a) a.hasOwnProperty(h) && a[h] !== i && (b[h] = a[h]); | |
return b | |
}, | |
inherit: function(b) { | |
for (var a = Array.prototype.slice.call(arguments), b = a.shift(), h = 0; h < a.length; h++) for (var d in a[h]) b.prototype[d] = a[h][d] | |
}, | |
computeOverlap: function(b, a) { | |
var h = { | |
left: Math.max(a.left, b.left), | |
right: Math.min(a.right, b.right), | |
top: Math.max(a.top, b.top), | |
bottom: Math.min(a.bottom, b.bottom) | |
}; | |
h.width = Math.max(h.right - h.left, 0); | |
h.height = Math.max(h.bottom - h.top, 0); | |
h.area = h.width * h.height; | |
return h | |
}, | |
dirname: function(b) { - 1 !== b.indexOf("#") && (b = b.replace(/#.*$/, "")); | |
return /\/$/.test(b) ? b.replace(/\/*$/, "") : b.replace(/\\/g, "/").replace(/\/[^\/]*\/?$/, "") | |
}, | |
normalizeUri: function(b, a) { | |
b = this.trim(b); | |
if ("" === b) b = a.uri; | |
if ("#" === b.charAt(0)) return a.uri + b; | |
if (/^(?:file|javascript):/i.test(b)) return "#"; | |
if (/^[A-Za-z][\w+-\.]*:/.test(b)) return b; | |
if ("/" !== b.charAt(0)) return a.relativeDir + "/" + b; | |
return "/" === b.charAt(1) ? (b = b.replace(/^\/+/, ""), a.protocol + "//" + b) : a.protocol + "//" + a.domainAndPort + b | |
}, | |
assureFixedPositioning: function(b) { | |
var a = b.constructor, | |
h = { | |
$element: b, | |
scrollLeft: 0, | |
scrollTop: 0, | |
originalPosition: b.css("position"), | |
fixed: !1, | |
scrollTo: function(b, a) { | |
if (!this.fixed) { | |
var h = b - this.scrollLeft, | |
d = a - this.scrollTop; | |
this.scrollLeft = b; | |
this.scrollTop = a; | |
var g = {}; | |
g.top = parseInt(this.$element.css("top")) + d; | |
d = parseInt(this.$element.css("left")) + h; | |
if (!isNaN(d)) g.left = | |
d; | |
h = parseInt(this.$element.css("right")) - h; | |
if (!isNaN(h)) g.right = h; | |
this.$element.cssImportant(g) | |
} | |
} | |
}; | |
b.cssImportant("position", "fixed"); | |
h.fixed = "fixed" === b.css("position"); | |
h.fixed || (b.cssImportant("position", "absolute"), h.scrollTo(a(d).scrollLeft(), a(d).scrollTop())); | |
g ? g.push(h) : (g = [h], a(d).bind("scroll." + this.eventNamespace.global, | |
function() { | |
for (var b = a(d).scrollLeft(), h = a(d).scrollTop(), i = 0; i < g.length; i++) g[i].scrollTo(b, h) | |
})) | |
}, | |
retireFixedPositioning: function(b) { | |
if (g) for (var a = 0; a < g.length; a++) if (g[a].$element === | |
b) { | |
b.cssImportant("position", g[a].originalPosition); | |
g.splice(a, 1); | |
break | |
} | |
}, | |
disableAllFixies: function() { | |
g = null | |
}, | |
eventNamespace: { | |
global: "CLIPBOARD", | |
review: "CLIBPOARD_REVIEW" | |
}, | |
flagAsUnclippable: function(b) { | |
b.attr(this.doNotClipAllAttributeName, !0) | |
}, | |
getDimensions: function(b) { | |
var a = b.trueOffset(); | |
a.width = b.outerWidth(); | |
a.height = b.outerHeight(); | |
a.right = a.left + a.width; | |
a.bottom = a.top + a.height; | |
a.area = a.width * a.height; | |
return a | |
}, | |
getOuterDimensions: function(b) { | |
var a = b.trueOffset(), | |
a = { | |
left: a.left, | |
top: a.top | |
}, | |
h = | |
parseFloat(b.css("margin-left")), | |
d = parseFloat(b.css("margin-top")); | |
0 < h && (a.left -= h); | |
0 < d && (a.top -= d); | |
a.width = b.outerWidth(!0); | |
a.height = b.outerHeight(!0); | |
a.right = a.left + a.width; | |
a.bottom = a.top + a.height; | |
a.area = a.height * a.width; | |
return a | |
}, | |
getBoundingDimensions: function(b, a) { | |
var h = this.getOuterDimensions, | |
d = h(b); | |
if (!a || !a.length || b[0] === a[0]) return d; | |
h = h(a); | |
d = { | |
top: Math.min(d.top, h.top), | |
left: Math.min(d.left, h.left), | |
bottom: Math.max(d.bottom, h.bottom), | |
right: Math.max(d.right, h.right) | |
}; | |
d.width = d.right - d.left; | |
d.height = d.bottom - d.top; | |
d.area = d.width * d.height; | |
return d | |
}, | |
adjustOffsetForMargins: function(b, a) { | |
var h = parseFloat(b.css("font-size")), | |
d = this.convertUnitsOrPercentageToPixels(parseFloat(b.css("margin-left")), h, b.parent().width()), | |
h = this.convertUnitsOrPercentageToPixels(parseFloat(b.css("margin-top")), h, b.parent().height()); | |
0 < d && (a.left -= d); | |
0 < h && (a.top -= h) | |
}, | |
convertUnitsToPixels: function(b, a, h) { | |
var d; | |
if (d = /^(?:-?[\d\.]+(px|em|cm|pt|in)?|0%?)$/.exec(b)) { | |
d[1] || (d[1] = "px"); | |
if (d[1]) switch (b = parseFloat(b), | |
d[1]) { | |
case "px": | |
return b; | |
case "em": | |
return b * a; | |
case "cm": | |
return b * h / 2.54; | |
case "in": | |
return b * h; | |
case "pt": | |
return b * h / 72 | |
} | |
return 0 | |
} | |
return ! 1 | |
}, | |
convertUnitsOrPercentageToPixels: function(b, a, d, g) { | |
a = this.convertUnitsToPixels(b, a, d); | |
return ! 1 !== a ? a: parseFloat(b) / 100 * g | |
}, | |
removeOurAttributes: function(b) { | |
b.removeAttr(this.cullNodeAttributeFlag).removeTrueCoordinates() | |
}, | |
strings: { | |
error_unknown: "(\u256f\u00b0\u25a1\u00b0\uff09\u256f\ufe35 \u253b\u2501\u253b", | |
zoom_nowhereToZoom: "Nowhere to zoom :(", | |
zoom_tooLarge: "Too large to clip :(", | |
drag_tooLarge: "Too large to clip :(", | |
send_clipSaveTimedOut: "Error :|", | |
send_emptyResponseFromPromise: "Error :(", | |
send_xdmPromiseFail: "Error :(", | |
send_invalidResponseSavingClip: "Error :\\", | |
send_promiseRetryCount: "Error :|", | |
send_saveClipFail: "Error :/", | |
send_promiseUnavailable: "Error :{", | |
save_tutorial: "Saved", | |
save_default: "Saved" | |
}, | |
cloneableTags: { | |
embed: 1, | |
object: 1, | |
param: 1, | |
video: 1, | |
table: 1, | |
tbody: 1, | |
thead: 1, | |
th: 1, | |
tr: 1, | |
td: 1 | |
}, | |
semanticBlockTagNames: { | |
article: 1, | |
aside: 1, | |
details: 1, | |
figcaption: 1, | |
figure: 1, | |
footer: 1, | |
header: 1, | |
hgroup: 1, | |
menu: 1, | |
nav: 1, | |
section: 1 | |
}, | |
tagsToConvertToDiv: { | |
body: 1, | |
center: 1, | |
iframe: 1, | |
html: 1, | |
form: 1 | |
}, | |
isHiddenByAncestry: function() { | |
return function(b) { | |
if (b.is("object,param,embed")) return ! 1; | |
for (var a = this.getDimensions(b), d = b.parents(), b = b.constructor, g = 0, i = d.length; g < i; g++) { | |
var s = b(d[g]), | |
u; | |
if (! (u = "hidden" == s.css("visibility") || 0 === s.css("opacity") || s.attr(this.doNotClipAllAttributeName))) if (u = "hidden" === s.css("overflow")) s = this.getDimensions(s), | |
u = a.right + 10 < s.left || a.left + 10 > s.right || a.bottom + 10 < s.top || a.top + | |
10 > s.bottom; | |
if (u) return ! 0 | |
} | |
return ! 1 | |
} | |
} (), | |
shouldInclude: function(b, a) { | |
var d = b[0].tagName.toLowerCase(); | |
if (d in { | |
head: 1, | |
script: 1, | |
style: 1, | |
noscript: 1, | |
noembed: 1 | |
}) return a.reason = "skipped tag", | |
!1; | |
if ("br" === d) return ! 0; | |
if (!this.shouldClip(b)) return a.reason = "should not clip", | |
!1; | |
if ("fixed" === b.css("position")) return a.reason = "fixed position", | |
!1; | |
if (b.outerWidth() * b.outerHeight() > this.maxArea) return a.reason = "area too big", | |
!1; | |
return this.isHiddenByAncestry(b) ? (a.reason = "hidden by ancestry", !1) : !0 | |
}, | |
disableAutoplayForUrl: function(b, | |
a) { | |
var d = b.attr(a); | |
b.attr(a, d.replace(/(^|&|\?)(autoplay|autostart|isautoplay|config_settings_autoplay)=(?:true|1)($|&)/i, "$1$2=false$3")); | |
return d !== b.attr(a) | |
}, | |
copyAttributeIfExists: function(b, a, d, g, K) { | |
b = b.attr(d); | |
if (b === i) return ! 1; | |
a.attr(d, g ? this.normalizeUri(b, K) : b); | |
return ! 0 | |
}, | |
copyAttributeAndNormalize: function(b, a, d, g) { | |
return this.copyAttributeIfExists(b, a, d, !0, g) | |
}, | |
compactCss: function(b) { | |
function a(a, d) { | |
var h; | |
for (h = 0; h < a.length; h++) if (! (a[h] in b)) return; | |
var g = []; | |
for (h = 0; h < a.length; h++) g.push(b[a[h]]); | |
b[d] = g.join(" "); | |
for (h = 0; h < a.length; h++) delete b[a[h]] | |
} | |
function d(a, h) { | |
var g; | |
for (g = 0; g < a.length; g++) if (! (a[g] in b)) return; | |
var i = b[a[0]]; | |
for (g = 1; g < a.length; g++) if (b[a[g]] != i) return; | |
b[h] = i; | |
for (g = 0; g < a.length; g++) delete b[a[g]] | |
} | |
d(["margin-top", "margin-right", "margin-bottom", "margin-left"], "margin"); | |
a(["margin-top", "margin-right", "margin-bottom", "margin-left"], "margin"); | |
d(["padding-top", "padding-right", "padding-bottom", "padding-left"], "padding"); | |
a(["padding-top", "padding-right", "padding-bottom", "padding-left"], | |
"padding"); | |
var g = ["top", "right", "bottom", "left"], | |
i, | |
s; | |
for (i = 0; i < g.length; i++) s = g[i], | |
a(["border-" + s + "-width", "border-" + s + "-style", "border-" + s + "-color"], "border-" + s); | |
g = ["width", "style", "color"]; | |
for (i = 0; i < g.length; i++) s = g[i], | |
d(["border-top-" + s, "border-right-" + s, "border-bottom-" + s, "border-left-" + s], "border-" + s); | |
d(["border-top", "border-right", "border-bottom", "border-left"], "border"); | |
if ("background-position-x" in b || "background-position-y" in b) b["background-position"] = (b["background-position-x"] || "0") + " " + | |
(b["background-position-y"] || "0"), | |
delete b["background-position-x"], | |
delete b["background-position-y"]; | |
g = ["background-color", "background-image", "background-repeat", "background-attachment", "background-position"]; (function() { | |
if ("background-repeat" in b && -1 !== b["background-repeat"].indexOf(" ")) { | |
var a = b["background-repeat"].split(" "); | |
b["background-repeat"] = "repeat" === a[0] ? "repeat" === a[1] ? "repeat": "repeat-x": "repeat" === a[1] ? "repeat-y": "no-repeat" | |
} | |
})(); | |
for (i = 0; i < g.length; i++)"initial" == b[g[i]] && delete b[g[i]]; | |
a(["background-color", "background-image", "background-repeat", "background-attachment", "background-position"], "background"); | |
a(["font-style", "font-weight", "font-size", "line-height", "font-family"], "font"); | |
if ("font" in b) s = b.font.split(" "), | |
b.font = s.slice(0, 3).join(" ") + "/" + s.slice(3).join(" "); | |
a(["list-style-type", "list-style-position", "list-style-image"], "list-style"); | |
a(["outline-width", "outline-style", "outline-color"], "outline"); | |
g = ["", "-webkit-", "-moz-"]; | |
for (i = 0; i < g.length; i++) d([g[i] + "border-top-right-radius", | |
g[i] + "border-top-left-radius", g[i] + "border-bottom-right-radius", g[i] + "border-bottom-left-radius"], g[i] + "border-radius"); | |
for (s in b) b.hasOwnProperty(s) && "auto" === b[s] && delete b[s] | |
}, | |
compactHtml: function(b) { | |
for (var a = /(<[^<>]*)(style=")([^"]*)(")/gi, d = a.exec(b), g = 0, i = []; d;) { | |
i.push(b.substring(g, d.index)); | |
i.push(d[1]); | |
i.push(d[2]); | |
for (var g = {}, | |
s = /\s*(.+?)\s*:\s*(.+?)\s*(?:;(?!base64,)|$)/g, u = s.exec(d[3]); u;) g[u[1].toLowerCase()] = u[2], | |
u = s.exec(d[3]); | |
this.compactCss(g); | |
for (var v in g) g.hasOwnProperty(v) && | |
i.push(v + ":" + g[v] + ";"); | |
i.push(d[4]); | |
g = a.lastIndex; | |
d = a.exec(b) | |
} | |
i.push(b.substring(g)); | |
return i = i.join("") | |
}, | |
getElementFromPoint: function() { | |
return ! d.document.elementFromPoint ? | |
function() { | |
return null | |
}: function(b, a, d, g) { | |
var i = g.elementFromPoint(b, a); | |
if (!i) return null; | |
var s = d(i), | |
u = s.offset(), | |
u = { | |
left: u.left, | |
top: u.top | |
}; | |
this.adjustOffsetForMargins(d(i), u); | |
if ("iframe" === i.nodeName.toLowerCase()) { | |
b -= u.left - d(g).scrollLeft(); | |
a -= u.top - d(g).scrollTop(); | |
try { | |
var v = this.getElementFromPoint(b, a, d, s.contents()[0]); | |
if (v) { | |
var i = | |
v, | |
r = s.trueCoordinates(); | |
u.left += r.left; | |
u.top += r.top | |
} | |
} catch(F) {} | |
} | |
this.shouldInclude(s, {}) || (i = null); | |
i && s.trueCoordinates(u); | |
return i | |
} | |
} (), | |
rewritePageHtml: function(b, a, d) { | |
function g(a) { | |
if (!a.hasClass(s)) { | |
var r = a[0].childNodes, | |
F, | |
E, | |
u, | |
y; | |
if (! (a[0].tagName.toLowerCase() in { | |
head: 1, | |
style: 1, | |
link: 1, | |
meta: 1, | |
title: 1, | |
base: 1, | |
basefont: 1, | |
isindex: 1, | |
textarea: 1, | |
button: 1, | |
script: 1 | |
}) && b(r).is(function() { | |
return 3 === this.nodeType | |
})) for (F = 0; F < r.length; F++) if (y = r[F], 3 === y.nodeType && (E = y.nodeValue, !(3 >= E.replace(/\s*/, "").length))) { | |
var J = | |
r[F + 1]; | |
b(y).remove(); | |
if (d.regexSplit) y = E.split(/([\r\n]{2,})/); | |
else for (y = []; E;) { | |
u = /^(.+?)([\r\n]{2,})/.exec(E); | |
if (!u) { | |
y.push(E); | |
break | |
} | |
y.push(u[1], u[2]); | |
E = E.substring(u[0].length) | |
} | |
for (E = 0; E < y.length; E++) u = b("<" + i + "/>").addClass(s).text(y[E] + (y[++E] || "")), | |
J ? u.insertBefore(J) : u.appendTo(a) | |
} | |
for (F = 0; F < r.length; F++) 1 === r[F].nodeType && g(b(r[F])) | |
} | |
} | |
if (!b.htmlRewritten) { | |
var i = "node", | |
s = this.rewriteClass; | |
if (b.browser.msie && (!b.support.boxModel || "8.0" === b.browser.version)) i = "span"; | |
var u = a.relativeDir; | |
b("object").each(function() { | |
var a, | |
d, | |
g; | |
a = b(this); | |
d = a.attr("classid"); | |
g = a.attr("type"); | |
"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" === d && (a.attr("type") || a.attr("type", "application/x-shockwave-flash"), d = b("param[name=movie]", a), d.length && (d = d.attr("value"), a.attr("data") || a.attr("data_clipboard3141592654", d))); | |
if (("clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" === g || "application/x-shockwave-flash" === g) && b.support.htmlSerialize) g = b('param[name="wmode"][value="transparent"]', a), | |
0 === g.length && a.prepend('<param name="wmode" value="transparent">'), | |
b('param[name="base"]', a).remove(), | |
a.prepend('<param name="base" value="' + u + '">') | |
}); | |
b("embed").each(function() { | |
var a; | |
b(this).attr("base", u); | |
a = b(this).attr("wmode"); | |
if (!a || "transparent" !== a) b(this).attr("wmode", "transparent"), | |
b(this).replaceWith(b(this).clone()) | |
}); | |
b("br").wrap(b("<" + i + "/>").addClass(s)); | |
g(b("body")); | |
b("iframe").each(function() { | |
try { | |
g(b(this).contents().find("body")) | |
} catch(a) {} | |
}); | |
b.htmlRewritten = !0 | |
} | |
}, | |
createSandbox: function(b, a) { | |
var a = a || "body", | |
d, | |
g = { | |
display: "block", | |
left: "-10000px", | |
top: "-10000px", | |
visibility: "hidden", | |
border: "none", | |
position: "absolute", | |
opacity: 0, | |
overflow: "hidden", | |
padding: 0 | |
}, | |
i = !1, | |
s = b("<style/>").attr("id", this.addSuffix("reset")).attr("type", "text/css"); | |
try { | |
s.text('.clipping_314159265 { font-family: times, serif; font-size: 16px; font-weight: normal; font-style: normal; color: black; line-height: normal; margin: 0; padding: 0;}.clipping_314159265 td { font-size: 16px;}.clipping_314159265 * { color: black; font: inherit; border: 0;}.clipping_314159265 a { text-decoration: none;}.clipping_314159265 html,.clipping_314159265 address,.clipping_314159265 blockquote,.clipping_314159265 body,.clipping_314159265 dd,.clipping_314159265 div,.clipping_314159265 dl,.clipping_314159265 dt,.clipping_314159265 fieldset,.clipping_314159265 form,.clipping_314159265 frame,.clipping_314159265 frameset,.clipping_314159265 h1,.clipping_314159265 h2,.clipping_314159265 h3,.clipping_314159265 h4,.clipping_314159265 h5,.clipping_314159265 h6,.clipping_314159265 noframes,.clipping_314159265 ol,.clipping_314159265 p,.clipping_314159265 ul,.clipping_314159265 center,.clipping_314159265 dir,.clipping_314159265 hr,.clipping_314159265 menu,.clipping_314159265 pre { display: block;}.clipping_314159265 div { text-align: left;}.clipping_314159265 li { display: list-item; list-style: none; list-style-type: none;}.clipping_314159265 head { display: none;}.clipping_314159265 table { display: table; table-layout: fixed;}.clipping_314159265 tr { display: table-row;}.clipping_314159265 thead { display: table-header-group;}.clipping_314159265 tbody { display: table-row-group;}.clipping_314159265 tfoot { display: table-footer-group;}.clipping_314159265 col { display: table-column;}.clipping_314159265 colgroup { display: table-column-group;}.clipping_314159265 td, .clipping_314159265 th { display: table-cell;}.clipping_314159265 caption { display: table-caption;}.clipping_314159265 th { font-weight: bolder; text-align: center;}.clipping_314159265 caption { text-align: center;}.clipping_314159265 h1 { font-size: 2em; margin: .67em 0;}.clipping_314159265 h2 { font-size: 1.5em; margin: .75em 0;}.clipping_314159265 h3 { font-size: 1.17em; margin: .83em 0;}.clipping_314159265 h4,.clipping_314159265 p,.clipping_314159265 blockquote,.clipping_314159265 ul,.clipping_314159265 fieldset,.clipping_314159265 form,.clipping_314159265 ol,.clipping_314159265 dl,.clipping_314159265 dir,.clipping_314159265 menu { margin: 1.12em 0;}.clipping_314159265 h5 { font-size: .83em; margin: 1.5em 0;}.clipping_314159265 h6 { font-size: .75em; margin: 1.67em 0;}.clipping_314159265 h1,.clipping_314159265 h2,.clipping_314159265 h3,.clipping_314159265 h4,.clipping_314159265 h5,.clipping_314159265 h6,.clipping_314159265 b,.clipping_314159265 strong { font-weight: bolder;}.clipping_314159265 blockquote { margin-left: 40px; margin-right: 40px;}.clipping_314159265 i,.clipping_314159265 cite,.clipping_314159265 em,.clipping_314159265 var,.clipping_314159265 address { font-style: italic; font-weight: normal;}.clipping_314159265 pre,.clipping_314159265 tt,.clipping_314159265 code,.clipping_314159265 kbd,.clipping_314159265 samp { font-family: monospace;}.clipping_314159265 pre { white-space: pre; background-color: transparent; margin: 0; padding: 0;}.clipping_314159265 button,.clipping_314159265 textarea,.clipping_314159265 input,.clipping_314159265 select { display: inline-block; padding: 0; margin: 0;}.clipping_314159265 big { font-size: 1.17em;}.clipping_314159265 small, .clipping_314159265 sub, .clipping_314159265 sup { font-size: .83em;}.clipping_314159265 sub { vertical-align: sub;}.clipping_314159265 sup { vertical-align: super;}.clipping_314159265 table { border-spacing: 2px;}.clipping_314159265 thead, .clipping_314159265 tbody, .clipping_314159265 tfoot { vertical-align: middle;}.clipping_314159265 td, .clipping_314159265 th, .clipping_314159265 tr { vertical-align: inherit;}.clipping_314159265 s, .clipping_314159265 strike, .clipping_314159265 del { text-decoration: line-through;}.clipping_314159265 hr { border: none;}.clipping_314159265 ol,.clipping_314159265 ul,.clipping_314159265 dir,.clipping_314159265 menu,.clipping_314159265 dd { margin-left: 40px;}.clipping_314159265 ol { list-style-type: decimal;}.clipping_314159265 ul, .clipping_314159265 ol { margin: 0; padding: 0;}.clipping_314159265 u, .clipping_314159265 ins { text-decoration: underline;}.clipping_314159265 br:before { content: "A"; white-space: pre-line;}.clipping_314159265 center { text-align: center;}.clipping_314159265 img { border: 0;}') | |
} catch(u) { | |
s[0].text = | |
'.clipping_314159265 { font-family: times, serif; font-size: 16px; font-weight: normal; font-style: normal; color: black; line-height: normal; margin: 0; padding: 0;}.clipping_314159265 td { font-size: 16px;}.clipping_314159265 * { color: black; font: inherit; border: 0;}.clipping_314159265 a { text-decoration: none;}.clipping_314159265 html,.clipping_314159265 address,.clipping_314159265 blockquote,.clipping_314159265 body,.clipping_314159265 dd,.clipping_314159265 div,.clipping_314159265 dl,.clipping_314159265 dt,.clipping_314159265 fieldset,.clipping_314159265 form,.clipping_314159265 frame,.clipping_314159265 frameset,.clipping_314159265 h1,.clipping_314159265 h2,.clipping_314159265 h3,.clipping_314159265 h4,.clipping_314159265 h5,.clipping_314159265 h6,.clipping_314159265 noframes,.clipping_314159265 ol,.clipping_314159265 p,.clipping_314159265 ul,.clipping_314159265 center,.clipping_314159265 dir,.clipping_314159265 hr,.clipping_314159265 menu,.clipping_314159265 pre { display: block;}.clipping_314159265 div { text-align: left;}.clipping_314159265 li { display: list-item; list-style: none; list-style-type: none;}.clipping_314159265 head { display: none;}.clipping_314159265 table { display: table; table-layout: fixed;}.clipping_314159265 tr { display: table-row;}.clipping_314159265 thead { display: table-header-group;}.clipping_314159265 tbody { display: table-row-group;}.clipping_314159265 tfoot { display: table-footer-group;}.clipping_314159265 col { display: table-column;}.clipping_314159265 colgroup { display: table-column-group;}.clipping_314159265 td, .clipping_314159265 th { display: table-cell;}.clipping_314159265 caption { display: table-caption;}.clipping_314159265 th { font-weight: bolder; text-align: center;}.clipping_314159265 caption { text-align: center;}.clipping_314159265 h1 { font-size: 2em; margin: .67em 0;}.clipping_314159265 h2 { font-size: 1.5em; margin: .75em 0;}.clipping_314159265 h3 { font-size: 1.17em; margin: .83em 0;}.clipping_314159265 h4,.clipping_314159265 p,.clipping_314159265 blockquote,.clipping_314159265 ul,.clipping_314159265 fieldset,.clipping_314159265 form,.clipping_314159265 ol,.clipping_314159265 dl,.clipping_314159265 dir,.clipping_314159265 menu { margin: 1.12em 0;}.clipping_314159265 h5 { font-size: .83em; margin: 1.5em 0;}.clipping_314159265 h6 { font-size: .75em; margin: 1.67em 0;}.clipping_314159265 h1,.clipping_314159265 h2,.clipping_314159265 h3,.clipping_314159265 h4,.clipping_314159265 h5,.clipping_314159265 h6,.clipping_314159265 b,.clipping_314159265 strong { font-weight: bolder;}.clipping_314159265 blockquote { margin-left: 40px; margin-right: 40px;}.clipping_314159265 i,.clipping_314159265 cite,.clipping_314159265 em,.clipping_314159265 var,.clipping_314159265 address { font-style: italic; font-weight: normal;}.clipping_314159265 pre,.clipping_314159265 tt,.clipping_314159265 code,.clipping_314159265 kbd,.clipping_314159265 samp { font-family: monospace;}.clipping_314159265 pre { white-space: pre; background-color: transparent; margin: 0; padding: 0;}.clipping_314159265 button,.clipping_314159265 textarea,.clipping_314159265 input,.clipping_314159265 select { display: inline-block; padding: 0; margin: 0;}.clipping_314159265 big { font-size: 1.17em;}.clipping_314159265 small, .clipping_314159265 sub, .clipping_314159265 sup { font-size: .83em;}.clipping_314159265 sub { vertical-align: sub;}.clipping_314159265 sup { vertical-align: super;}.clipping_314159265 table { border-spacing: 2px;}.clipping_314159265 thead, .clipping_314159265 tbody, .clipping_314159265 tfoot { vertical-align: middle;}.clipping_314159265 td, .clipping_314159265 th, .clipping_314159265 tr { vertical-align: inherit;}.clipping_314159265 s, .clipping_314159265 strike, .clipping_314159265 del { text-decoration: line-through;}.clipping_314159265 hr { border: none;}.clipping_314159265 ol,.clipping_314159265 ul,.clipping_314159265 dir,.clipping_314159265 menu,.clipping_314159265 dd { margin-left: 40px;}.clipping_314159265 ol { list-style-type: decimal;}.clipping_314159265 ul, .clipping_314159265 ol { margin: 0; padding: 0;}.clipping_314159265 u, .clipping_314159265 ins { text-decoration: underline;}.clipping_314159265 br:before { content: "A"; white-space: pre-line;}.clipping_314159265 center { text-align: center;}.clipping_314159265 img { border: 0;}' | |
} | |
try { | |
d = | |
b("<iframe/>").cssImportant(g).attr({ | |
scrolling: "no", | |
frameborder: 0 | |
}).appendTo(a); | |
var v = d.contents()[0]; | |
v.open(); | |
v.write("<!doctype html>"); | |
v.close(); | |
d.contents().find("head").append(s).end().find("body").css({ | |
margin: 0 | |
}); | |
i = !0 | |
} catch(r) { | |
g.display = "block", | |
d = b("<div/>").cssImportant(g).appendTo(a), | |
b("#" + this.addSuffix("reset")).length || s.appendTo("head") | |
} | |
this.flagAsUnclippable(d); | |
var F = this; | |
return { | |
addSandboxCss: function(a) { | |
var d = F.addSuffix("clipText"), | |
a = b("<link/>").attr({ | |
id: d, | |
rel: "stylesheet", | |
type: "text/css", | |
href: a + "/css/1.0.17/clipper_sandbox.css" | |
}); | |
i ? this.$element.contents().find("head").append(a) : b("#" + d).length || a.appendTo("head") | |
}, | |
$body: i ? d.contents().find("body") : d, | |
getDimensions: function() { | |
return { | |
width: this.$body.outerWidth(!0), | |
height: this.$body.outerHeight(!0) | |
} | |
}, | |
append: function() { | |
this.$body.append.apply(this.$body, arguments) | |
}, | |
html: function(b) { | |
this.$body.html(b) | |
}, | |
empty: function() { | |
this.$body.empty() | |
}, | |
$element: d, | |
destroy: function() { | |
this.$element.remove() | |
} | |
} | |
} | |
} | |
})(window); | |
(function(d) { | |
function i() { | |
this.events = {} | |
} | |
i.prototype = { | |
on: function(d, b) { | |
for (var d = d.split(" "), a = 0, h; a < d.length; a++) h = d[a], | |
this.events[h] || (this.events[h] = []), | |
this.events[h].push(b); | |
return this | |
}, | |
trigger: function(d, b) { | |
var a = this.events[d] || []; | |
if (a.length) { | |
for (var h = { | |
name: d | |
}, | |
i = 0; i < a.length && !(!1 === a[i].call(this, b, h)); i++); | |
return this | |
} | |
}, | |
bubble: function(d) { | |
var b = this; | |
return { | |
to: function(a, h) { | |
b.on(d, | |
function(b) { | |
a.trigger(h || d, b) | |
}); | |
return b | |
} | |
} | |
}, | |
clear: function(d) { | |
d ? this.events[d] = [] : this.events = {} | |
} | |
}; | |
d.CLIPBOARD.client.EventEmitter = | |
i | |
})(window); | |
(function(d) { | |
function i() { | |
this.controls = [] | |
} | |
i.prototype = { | |
activate: function() { | |
this.trigger("activating"); | |
this.doActivate(); | |
for (var d = 0; d < this.controls.length; d++) this.controls[d].activate(); | |
this.trigger("activated") | |
}, | |
doActivate: function() {}, | |
deactivate: function() { | |
this.trigger("deactivating"); | |
for (var d = 0; d < this.controls.length; d++) this.controls[d].deactivate(); | |
this.doDeactivate(); | |
this.trigger("deactivated") | |
}, | |
doDeactivate: function() {}, | |
removeControl: function(d) { | |
if (d) for (var b = 0; b < this.controls.length; b++) if (this.controls[b] === d) { | |
this.controls.splice(b, | |
1); | |
break | |
} | |
}, | |
setLoginState: function() {}, | |
getResources: function() {} | |
}; | |
d.CLIPBOARD.client.ActivatableControl = i | |
})(window); | |
(function(d) { | |
var i; | |
function g(b) { | |
var a = b.getElementsByClassName; | |
if (d.Prototype && d.Prototype.Version) { | |
var g = d.Prototype.Version.replace(/_.*$/g, "").split("."), | |
Q = parseInt(g[0]), | |
g = parseInt(g[1]); | |
if (1 >= Q && 5 >= g) return b.getElementsByClassName = function(b) { | |
return $$("." + b) | |
}, | |
Array.prototype.shift = function() { | |
for (var b = this[0], a = 0; a < this.length - 1; a++) this[a] = this[a + 1]; | |
this.length = Math.max(0, this.length - 1); | |
return b | |
}, | |
{ | |
getElementsByClassName: a, | |
stupidFuckingPrototype: !0 | |
} | |
} | |
return { | |
stupidFuckingPrototype: !1 | |
} | |
} | |
function b(b, | |
a, d) { | |
if (this.shouldLogMetric(b)) a = a || {}, | |
a.origin = this.origin, | |
this.dao.logMetric((d || "bookmarklet") + "_" + b, a, this.user) | |
} | |
function a(b, a) { | |
b = b || $; | |
a && b === $ ? this.setActiveSelectorByContext() : this.setActiveSelector(b); | |
this.ui.enableClipping(this.activeSelector.type); | |
this.activeSelector.activate() | |
} | |
function h() { | |
this.trigger("clippingCanceled"); | |
this.activeSelector && (this.ui.disableClipping(this.activeSelector.type), this.activeSelector.deactivate()) | |
} | |
function n(b) { | |
var a = M.util.strings, | |
d = M.DataAccess.sendFailureStatus; | |
switch (b) { | |
case d.crossDomainPostFailed: | |
return a.send_xdmPromiseFail; | |
case d.emptyResponse: | |
return a.send_emptyResponseFromPromise; | |
case d.retryCount: | |
return a.send_promiseRetryCount; | |
case d.serverSideSave: | |
return a.send_saveClipFail; | |
case d.promiseUnavailable: | |
return a.send_promiseUnavailable; | |
case d.timeout: | |
return a.send_clipSaveTimedOut; | |
case d.malformedResponse: | |
case d.invalidResponse: | |
case d.expiredRequest: | |
case d.expiredSession: | |
case d.unauthorized: | |
case d.badRequest: | |
case d.emptyResult: | |
return a.send_invalidResponseSavingClip; | |
default: | |
return a.error_unknown | |
} | |
} | |
function K(b) { | |
var a = M.util.strings, | |
d = M.Selector.failureStatus; | |
switch (b) { | |
case d.nowhereToZoom: | |
return a.zoom_nowhereToZoom; | |
case d.maxSizeExceededViaZoom: | |
return a.zoom_tooLarge; | |
case d.maxSizeExceededViaDrag: | |
return a.drag_tooLarge; | |
default: | |
return a.error_unknown | |
} | |
} | |
function s() { | |
var d = this; | |
this.ui.on("preferencesUpdated", | |
function(a) { | |
d.dao.updatePreferences(a.preferences); | |
u.call(d, a.preferences); | |
b.call(d, "updatePreferences", a.preferences) | |
}).on("autocompleteTriggered", | |
function(a) { | |
b.call(d, | |
"autocompleteTrigger", { | |
source: a.source, | |
type: a.type | |
}) | |
}).on("embedButtonClicked", | |
function(b) { | |
d.selectors.identity && (d.setActiveSelector("identity"), d.activeSelector.setSelection(b.startElement, b.endElement, b.clipData), d.activeSelector.select()) | |
}).on("selectorSwitched", | |
function(g) { | |
b.call(d, "selectorSwitch", { | |
selectorType: g.type | |
}); | |
h.call(d); | |
a.call(d, g.type) | |
}).on("navigated", | |
function(a) { | |
b.call(d, "navigate", { | |
source: a.source | |
}); | |
switch (a.source) { | |
case "close": | |
d.deactivate() | |
} | |
}).on("navigated", | |
function(b) { | |
"initiate" === | |
b.source && ("disabled" === b.status ? h.call(d) : a.call(d, b.type)) | |
}).on("reviewConfirmed", | |
function(a) { | |
var g = a.reviewData.annotation || ""; | |
b.call(d, "reviewSubmit", { | |
method: a.method, | |
published: a.reviewData.published, | |
annotated: !!g, | |
annotationLength: g.length, | |
postToFacebook: a.reviewData.postToFacebook, | |
tweet: a.reviewData.tweet | |
}) | |
}).on("clipConfirmed", | |
function(b) { | |
d.ui.showLoadingMessage(); | |
d.dao.sendClip(b.clip); | |
d.activeSelector.deactivate(); | |
d.ui.disableClipping(d.activeSelector.type) | |
}).on("reviewOpening", | |
function() { | |
d.activeSelector.disableGlobalEvents() | |
}).on("reviewClosed", | |
function() { | |
d.activeSelector.enableGlobalEvents() | |
}).on("reviewCanceled", | |
function(a) { | |
b.call(d, "reviewCancel", { | |
method: a.method | |
}) | |
}).on("userDataRequested", | |
function() { | |
d.dao.fetchUserData() | |
}) | |
} | |
function u(b) { | |
M.util.merge(this.preferences, b); | |
this.ui.setPreferences(this.preferences); | |
var a = this; | |
M.util.forEach(this.selectors, | |
function(b) { | |
b.setPreferences(a.preferences) | |
}) | |
} | |
function v(b) { | |
for (var a = 0; a < this.controls.length; a++) this.controls[a].setLoginState(b) | |
} | |
function r(g) { | |
var h = !1, | |
i = 0; | |
return function(Q) { | |
if (Q.error) b.call(g, | |
"fetchUserDataFail", { | |
error: Q.error | |
}); | |
else if (i++, o.checkedLoginStatus || b.call(g, "launch", { | |
status: Q.loggedIn ? "loggedIn": "loggedOut", | |
version: g.bookmarkletVersion | |
}), o.checkedLoginStatus = !0, Q.thirdPartyCookiesEnabled) { | |
if (Q.config) d.CLIPBOARD.config = Q.config; | |
v.call(g, Q.loggedIn); | |
Q.loggedIn ? (h && 0 < i && b.call(g, "login"), g.user.guid = Q.userGuid, g.user.sessionId = Q.sessionId, g.dao.fetchAutocompleteData(), u.call(g, Q.preferences), a.call(g, g.preferences.defaultSelectorType || $, !0)) : h = !0 | |
} else J.call(g), | |
b.call(g, "info", | |
{ | |
data: "3rdPartyCookiesDisabled" | |
}) | |
} | |
} | |
function F() { | |
var a = this; | |
this.dao.on("autocompleteDataFailed", | |
function(d) { | |
b.call(a, "autocompleteFail", { | |
error: d.error | |
}) | |
}).on("autocompleteDataReceived", | |
function(a) { | |
d.CLIPBOARD.autocomplete.setData(a.dict) | |
}).on("sendFailed", | |
function(d) { | |
b.call(a, "sendFail", { | |
reason: d.reason | |
}); | |
"expiredSession" === d.reason ? (h.call(a), a.dao.fetchUserData()) : a.ui.showErrorNotification(n(d.reason)) | |
}).on("sendSucceeded", | |
function(d) { | |
b.call(a, "sendSuccess", { | |
saveDuration: d.duration, | |
attempts: d.retryAttempts | |
}); | |
a.ui.showNotification(M.util.strings.save_default) | |
}).on("userDataReceived", r(this)) | |
} | |
function E(a) { | |
var d = this; | |
a.on("canceled", | |
function(a) { | |
d.ui.hideNotification(); | |
b.call(d, "cancelClipMode", { | |
source: a.source | |
}); | |
h.call(d) | |
}).on("scrolled", | |
function(a) { | |
b.call(d, "scrollDuringExtract", { | |
source: a.source | |
}) | |
}).on("selectionEnded", | |
function(a) { | |
switch (a.selectionType) { | |
case "bookmark": | |
d.activeExtractor = d.extractors.bookmark; | |
break; | |
case "text": | |
d.activeExtractor = d.extractors.text; | |
break; | |
case "rectangle": | |
d.activeExtractor = | |
d.extractors.rectangle; | |
break; | |
case "identity": | |
d.activeExtractor = d.extractors.identity; | |
break; | |
default: | |
b.call(this, "info", { | |
data: "invalidSelectionType" | |
}); | |
return | |
} | |
d.activeExtractor.extract(a.selectionData, a.extractionContext) | |
}).on("selectionFailed", | |
function(a) { | |
b.call(d, "selectionFail", { | |
reason: a.reason | |
}); | |
d.ui.showErrorNotification(K(a.reason)) | |
}).on("bookmarkPage", | |
function() { | |
d.ui.showNotification("Bookmark page", -1) | |
}).on("notBookmarkPage", | |
function() { | |
d.ui.hideNotification() | |
}) | |
} | |
function O(a) { | |
var g = this; | |
a.on("autoplayDisabled", | |
function(a) { | |
b.call(g, "autoplayDisable", { | |
source: a.source | |
}) | |
}).on("sandboxBuilt", | |
function(a) { | |
"iframe" !== a.nodeName && b.call(g, "sandbox", { | |
type: a.nodeName, | |
host: d.location.hostname | |
}) | |
}).on("extracted", | |
function(d) { | |
var Q = g.createClip(M.util.merge(d.clipData, { | |
width: d.dimensions.width, | |
height: d.dimensions.height, | |
html: d.html, | |
type: a.type, | |
text: d.text, | |
top: d.top, | |
left: d.left, | |
blobSchemaVersion: "0.2" | |
})); | |
b.call(g, "extract", { | |
elapsedTime: d.elapsedTime, | |
type: d.extractionType, | |
rectangleColor: g.preferences.rectangleColor, | |
reviewClip: g.preferences.reviewClip, | |
publishByDefault: g.preferences.publishByDefault, | |
connectedToTimeline: g.preferences.connectedToTimeline, | |
connectedToFbStream: g.preferences.connectedToFbStream, | |
connectedToTwitter: g.preferences.connectedToTwitter, | |
compatMode: g.document.compatMode | |
}); | |
g.ui.handleExtraction({ | |
clip: Q, | |
rawHtml: d.html | |
}); | |
"identity" === g.activeSelector.type && g.activeSelector.deactivate() | |
}) | |
} | |
function y() { | |
s.call(this); | |
F.call(this); | |
for (var a in this.selectors) this.selectors.hasOwnProperty(a) && E.call(this, this.selectors[a]); | |
for (a in this.extractors) this.extractors.hasOwnProperty(a) && | |
O.call(this, this.extractors[a]); | |
this.on("activated", | |
function() { | |
o.cookiesDisabled && J.call(this) | |
}) | |
} | |
function J() { | |
o.cookiesDisabled = !0; | |
this.deactivate(); | |
this.ui.show3rdPartyCookiesErrorMessage() | |
} | |
function T(a) { | |
if (L.indexOf) return L.indexOf(a); | |
for (var d = 0; d < L.length; d++) if (L[d] === a) return d; | |
return - 1 | |
} | |
function S(a) { | |
var a = a("<div/>").css({ | |
position: "absolute", | |
top: 0, | |
left: 0, | |
width: 1, | |
height: 1, | |
"margin-top": 0, | |
"margin-bottom": 0, | |
"margin-left": 0, | |
"margin-right": 0, | |
"background-color": "transparent" | |
}).appendTo("body"), | |
d = | |
a.offset(); | |
a.remove(); | |
return d | |
} | |
function t(a) { | |
var a = a("<div>").css({ | |
width: 0, | |
height: 0, | |
display: "none", | |
"background-color": "rgba(64, 128, 256, 0.25)" | |
}).appendTo("body"), | |
d = a.css("background-color"); | |
a.remove(); | |
return /^rgba/.test(d) | |
} | |
function z(a) { | |
var a = a("<div/>").css({ | |
width: "1in", | |
visibility: "hidden", | |
position: "absolute", | |
left: "-10000px", | |
"padding-top": 0, | |
"padding-bottom": 0, | |
"padding-left": 0, | |
"padding-right": 0 | |
}).appendTo("body"), | |
d = a.width(); | |
a.remove(); | |
return d | |
} | |
function p(a) { | |
a = a("head base:first").attr("href"); | |
if (!a) a = d.location.href, | |
a = a.replace(/#.*$/, ""); | |
var b = document.createElement("a"); | |
b.href = a; | |
a = { | |
uri: a, | |
protocol: b.protocol, | |
host: b.hostname, | |
port: b.port, | |
query: b.search, | |
domainAndPort: /tps?:\/\/([^\/]+)/.exec(b.href)[1], | |
path: b.pathname.replace(/^([^\/])/, "/$1"), | |
relative: (b.href.match(/tps?:\/\/[^\/]+(.+)/) || [, ""])[1] | |
}; | |
a.relativeDir = a.protocol + "//" + a.domainAndPort + M.util.dirname(a.relative); | |
return a | |
} | |
function N() { | |
var a = H[this.documentId]; | |
if (a.$) return this.$ = a.$, | |
this.bodyOffset = a.bodyOffset, | |
this.baseData = a.baseData, | |
this.xdm = a.xdm, | |
!1; (function() { (function(a, d) { | |
function b(c) { | |
var e = K[c] = {}, | |
f, | |
x, | |
c = c.split(/\s+/); | |
for (f = 0, x = c.length; f < x; f++) e[c[f]] = !0; | |
return e | |
} | |
function g(c, e, k) { | |
if (k === d && 1 === c.nodeType) if (k = "data-" + e.replace(O, "-$1").toLowerCase(), k = c.getAttribute(k), "string" === typeof k) { | |
try { | |
k = "true" === k ? !0: "false" === k ? !1: "null" === k ? null: f.isNumeric(k) ? parseFloat(k) : y.test(k) ? f.parseJSON(k) : k | |
} catch(x) {} | |
f.data(c, e, k) | |
} else k = d; | |
return k | |
} | |
function q(c) { | |
for (var e in c) if (! ("data" === e && f.isEmptyObject(c[e])) && "toJSON" !== | |
e) return ! 1; | |
return ! 0 | |
} | |
function h(c, e, k) { | |
var x = e + "defer", | |
d = e + "queue", | |
a = e + "mark", | |
b = f._data(c, x); | |
b && ("queue" === k || !f._data(c, d)) && ("mark" === k || !f._data(c, a)) && setTimeout(function() { ! f._data(c, d) && !f._data(c, a) && (f.removeData(c, x, !0), b.fire()) | |
}, | |
0) | |
} | |
function i() { | |
return ! 1 | |
} | |
function p() { | |
return ! 0 | |
} | |
function o(c, e, k) { | |
e = e || 0; | |
if (f.isFunction(e)) return f.grep(c, | |
function(c, f) { | |
return !! e.call(c, f, c) === k | |
}); | |
if (e.nodeType) return f.grep(c, | |
function(c) { | |
return c === e === k | |
}); | |
if ("string" === typeof e) { | |
var x = f.grep(c, | |
function(c) { | |
return 1 === | |
c.nodeType | |
}); | |
if (Aa.test(e)) return f.filter(e, x, !k); | |
e = f.filter(e, x) | |
} | |
return f.grep(c, | |
function(c) { | |
return 0 <= f.inArray(c, e) === k | |
}) | |
} | |
function r(c) { | |
var e = Ia.split("|"), | |
c = c.createDocumentFragment(); | |
if (c.createElement) for (; e.length;) c.createElement(e.pop()); | |
return c | |
} | |
function w(c, e) { | |
if (1 === e.nodeType && f.hasData(c)) { | |
var k, | |
x, | |
d; | |
x = f._data(c); | |
var a = f._data(e, x), | |
b = x.events; | |
if (b) for (k in delete a.handle, a.events = {}, | |
b) for (x = 0, d = b[k].length; x < d; x++) f.event.add(e, k + (b[k][x].namespace ? ".": "") + b[k][x].namespace, b[k][x], | |
b[k][x].data); | |
if (a.data) a.data = f.extend({}, | |
a.data) | |
} | |
} | |
function t(c, e) { | |
var k; | |
if (1 === e.nodeType) { | |
e.clearAttributes && e.clearAttributes(); | |
e.mergeAttributes && e.mergeAttributes(c); | |
k = e.nodeName.toLowerCase(); | |
if ("object" === k) e.outerHTML = c.outerHTML; | |
else if ("input" === k && ("checkbox" === c.type || "radio" === c.type)) { | |
if (c.checked) e.defaultChecked = e.checked = c.checked; | |
if (e.value !== c.value) e.value = c.value | |
} else if ("option" === k) e.selected = c.defaultSelected; | |
else if ("input" === k || "textarea" === k) e.defaultValue = c.defaultValue; | |
e.removeAttribute(f.expando) | |
} | |
} | |
function n(c) { | |
return "undefined" !== typeof c.getElementsByTagName ? c.getElementsByTagName("*") : "undefined" !== typeof c.querySelectorAll ? c.querySelectorAll("*") : [] | |
} | |
function H(c) { | |
if ("checkbox" === c.type || "radio" === c.type) c.defaultChecked = c.checked | |
} | |
function s(c) { | |
var e = (c.nodeName || "").toLowerCase(); | |
"input" === e ? H(c) : "script" !== e && "undefined" !== typeof c.getElementsByTagName && f.grep(c.getElementsByTagName("input"), H) | |
} | |
function z(c, e) { | |
e.src ? f.ajax({ | |
url: e.src, | |
async: !1, | |
dataType: "script" | |
}) : | |
f.globalEval((e.text || e.textContent || e.innerHTML || "").replace(gb, "/*$0*/")); | |
e.parentNode && e.parentNode.removeChild(e) | |
} | |
function F(c, e, k) { | |
var x = "width" === e ? c.offsetWidth: c.offsetHeight, | |
d = "width" === e ? hb: ib, | |
a = 0, | |
b = d.length; | |
if (0 < x) { | |
if ("border" !== k) for (; a < b; a++) k || (x -= parseFloat(f.css(c, "padding" + d[a])) || 0), | |
x = "margin" === k ? x + (parseFloat(f.css(c, k + d[a])) || 0) : x - (parseFloat(f.css(c, "border" + d[a] + "Width")) || 0); | |
return x + "px" | |
} | |
x = la(c, e, e); | |
if (0 > x || null == x) x = c.style[e] || 0; | |
x = parseFloat(x) || 0; | |
if (k) for (; a < b; a++) x += parseFloat(f.css(c, | |
"padding" + d[a])) || 0, | |
"padding" !== k && (x += parseFloat(f.css(c, "border" + d[a] + "Width")) || 0), | |
"margin" === k && (x += parseFloat(f.css(c, k + d[a])) || 0); | |
return x + "px" | |
} | |
function C(c) { | |
return function(e, k) { | |
var B; | |
"string" !== typeof e && (k = e, e = "*"); | |
if (f.isFunction(k)) for (var x = e.toLowerCase().split(Ja), d = 0, a = x.length, b, j; d < a; d++) b = x[d], | |
(j = /^\+/.test(b)) && (b = b.substr(1) || "*"), | |
B = c[b] = c[b] || [], | |
b = B, | |
b[j ? "unshift": "push"](k) | |
} | |
} | |
function G(c, e, f, x, a, b) { | |
a = a || e.dataTypes[0]; | |
b = b || {}; | |
b[a] = !0; | |
for (var a = c[a], j = 0, g = a ? a.length: 0, l = c === Ca, | |
m; j < g && (l || !m); j++) m = a[j](e, f, x), | |
"string" === typeof m && (!l || b[m] ? m = d: (e.dataTypes.unshift(m), m = G(c, e, f, x, m, b))); | |
if ((l || !m) && !b["*"]) m = G(c, e, f, x, "*", b); | |
return m | |
} | |
function N(c, e) { | |
var k, | |
x, | |
a = f.ajaxSettings.flatOptions || {}; | |
for (k in e) e[k] !== d && ((a[k] ? c: x || (x = {}))[k] = e[k]); | |
x && f.extend(!0, c, x) | |
} | |
function L(c, e, k, x) { | |
if (f.isArray(e)) f.each(e, | |
function(e, a) { | |
k || jb.test(c) ? x(c, a) : L(c + "[" + ("object" === typeof a || f.isArray(a) ? e: "") + "]", a, k, x) | |
}); | |
else if (!k && null != e && "object" === typeof e) for (var a in e) L(c + "[" + a + "]", e[a], | |
k, x); | |
else x(c, e) | |
} | |
function v() { | |
try { | |
return new a.XMLHttpRequest | |
} catch(c) {} | |
} | |
function u() { | |
setTimeout(P, 0); | |
return sa = f.now() | |
} | |
function P() { | |
sa = d | |
} | |
function m(c, e) { | |
var k = {}; | |
f.each(Ka.concat.apply([], Ka.slice(0, e)), | |
function() { | |
k[this] = c | |
}); | |
return k | |
} | |
function U(c) { | |
if (!Da[c]) { | |
var e = A.body, | |
k = f("<" + c + ">").appendTo(e), | |
a = k.css("display"); | |
k.remove(); | |
if ("none" === a || "" === a) { | |
if (!fa) fa = A.createElement("iframe"), | |
fa.frameBorder = fa.width = fa.height = 0; | |
e.appendChild(fa); | |
if (!ma || !fa.createElement) ma = (fa.contentWindow || fa.contentDocument).document, | |
ma.write(("CSS1Compat" === A.compatMode ? "<!doctype html>": "") + "<html><body>"), | |
ma.close(); | |
k = ma.createElement(c); | |
ma.body.appendChild(k); | |
a = f.css(k, "display"); | |
e.removeChild(fa) | |
} | |
Da[c] = a | |
} | |
return Da[c] | |
} | |
function W(c) { | |
return f.isWindow(c) ? c: 9 === c.nodeType ? c.defaultView || c.parentWindow: !1 | |
} | |
var A = a.document, | |
E = a.navigator, | |
M = a.location, | |
f = function() { | |
function c() { | |
if (!e.isReady) { | |
try { | |
A.documentElement.doScroll("left") | |
} catch(f) { | |
setTimeout(c, 1); | |
return | |
} | |
e.ready() | |
} | |
} | |
var e = function(c, f) { | |
return new e.fn.init(c, f, b) | |
}, | |
f = a.jQuery, | |
x = a.$, | |
b, | |
j = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, | |
g = /\S/, | |
l = /^\s+/, | |
m = /\s+$/, | |
D = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, | |
q = /^[\],:{}\s]*$/, | |
P = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, | |
h = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, | |
B = /(?:^|:|,)(?:\s*\[)+/g, | |
i = /(webkit)[ \/]([\w.]+)/, | |
p = /(opera)(?:.*version)?[ \/]([\w.]+)/, | |
U = /(msie) ([\w.]+)/, | |
w = /(mozilla)(?:.*? rv:([\w.]+))?/, | |
C = /-([a-z]|[0-9])/ig, | |
o = /^-ms-/, | |
V = function(c, e) { | |
return (e + "").toUpperCase() | |
}, | |
X = E.userAgent, | |
ha, | |
na, | |
kb = Object.prototype.toString, | |
W = Object.prototype.hasOwnProperty, | |
r = Array.prototype.push, | |
t = Array.prototype.slice, | |
G = String.prototype.trim, | |
n = Array.prototype.indexOf, | |
H = {}; | |
e.fn = e.prototype = { | |
constructor: e, | |
init: function(c, f, k) { | |
var a; | |
if (!c) return this; | |
if (c.nodeType) return this.context = this[0] = c, | |
this.length = 1, | |
this; | |
if ("body" === c && !f && A.body) return this.context = A, | |
this[0] = A.body, | |
this.selector = c, | |
this.length = 1, | |
this; | |
if ("string" === typeof c) { | |
if ((a = "<" === c.charAt(0) && ">" === c.charAt(c.length - 1) && 3 <= c.length ? [null, c, null] : j.exec(c)) && (a[1] || !f)) { | |
if (a[1]) return k = | |
(f = f instanceof e ? f[0] : f) ? f.ownerDocument || f: A, | |
(c = D.exec(c)) ? e.isPlainObject(f) ? (c = [A.createElement(c[1])], e.fn.attr.call(c, f, !0)) : c = [k.createElement(c[1])] : (c = e.buildFragment([a[1]], [k]), c = (c.cacheable ? e.clone(c.fragment) : c.fragment).childNodes), | |
e.merge(this, c); | |
if ((f = A.getElementById(a[2])) && f.parentNode) { | |
if (f.id !== a[2]) return k.find(c); | |
this.length = 1; | |
this[0] = f | |
} | |
this.context = A; | |
this.selector = c; | |
return this | |
} | |
return ! f || f.jquery ? (f || k).find(c) : this.constructor(f).find(c) | |
} | |
if (e.isFunction(c)) return k.ready(c); | |
if (c.selector !== d) this.selector = c.selector, | |
this.context = c.context; | |
return e.makeArray(c, this) | |
}, | |
selector: "", | |
jquery: "1.7.1", | |
length: 0, | |
size: function() { | |
return this.length | |
}, | |
toArray: function() { | |
return t.call(this, 0) | |
}, | |
get: function(c) { | |
return null == c ? this.toArray() : 0 > c ? this[this.length + c] : this[c] | |
}, | |
pushStack: function(c, f, k) { | |
var a = this.constructor(); | |
e.isArray(c) ? r.apply(a, c) : e.merge(a, c); | |
a.prevObject = this; | |
a.context = this.context; | |
if ("find" === f) a.selector = this.selector + (this.selector ? " ": "") + k; | |
else if (f) a.selector = | |
this.selector + "." + f + "(" + k + ")"; | |
return a | |
}, | |
each: function(c, f) { | |
return e.each(this, c, f) | |
}, | |
ready: function(c) { | |
e.bindReady(); | |
ha.add(c); | |
return this | |
}, | |
eq: function(c) { | |
c = +c; | |
return - 1 === c ? this.slice(c) : this.slice(c, c + 1) | |
}, | |
first: function() { | |
return this.eq(0) | |
}, | |
last: function() { | |
return this.eq( - 1) | |
}, | |
slice: function() { | |
return this.pushStack(t.apply(this, arguments), "slice", t.call(arguments).join(",")) | |
}, | |
map: function(c) { | |
return this.pushStack(e.map(this, | |
function(e, f) { | |
return c.call(e, f, e) | |
})) | |
}, | |
end: function() { | |
return this.prevObject || | |
this.constructor(null) | |
}, | |
push: r, | |
sort: [].sort, | |
splice: [].splice | |
}; | |
e.fn.init.prototype = e.fn; | |
e.extend = e.fn.extend = function() { | |
var c, | |
f, | |
k, | |
a, | |
x, | |
b = arguments[0] || {}, | |
R = 1, | |
j = arguments.length, | |
ha = !1; | |
"boolean" === typeof b && (ha = b, b = arguments[1] || {}, | |
R = 2); | |
"object" !== typeof b && !e.isFunction(b) && (b = {}); | |
j === R && (b = this, --R); | |
for (; R < j; R++) if (null != (c = arguments[R])) for (f in c) W.call(c, f) && (k = b[f], a = c[f], b !== a && (ha && a && (e.isPlainObject(a) || (x = e.isArray(a))) ? (x ? (x = !1, k = k && e.isArray(k) ? k: []) : k = k && e.isPlainObject(k) ? k: {}, | |
b[f] = e.extend(ha, | |
k, a)) : a !== d && (b[f] = a))); | |
return b | |
}; | |
e.extend({ | |
noConflict: function(c) { | |
if (a.$ === e) a.$ = x; | |
if (c && a.jQuery === e) a.jQuery = f; | |
return e | |
}, | |
isReady: !1, | |
readyWait: 1, | |
holdReady: function(c) { | |
c ? e.readyWait++:e.ready(!0) | |
}, | |
ready: function(c) { | |
if (!0 === c && !--e.readyWait || !0 !== c && !e.isReady) { | |
if (!A.body) return setTimeout(e.ready, 1); | |
e.isReady = !0; ! 0 !== c && 0 < --e.readyWait || (ha.fireWith(A, [e]), e.fn.trigger && e(A).trigger("ready").off("ready")) | |
} | |
}, | |
bindReady: function() { | |
if (!ha) { | |
ha = e.Callbacks("once memory"); | |
if ("complete" === A.readyState) return setTimeout(e.ready, | |
1); | |
if (A.addEventListener) A.addEventListener("DOMContentLoaded", na, !1), | |
a.addEventListener("load", e.ready, !1); | |
else if (A.attachEvent) { | |
A.attachEvent("onreadystatechange", na); | |
a.attachEvent("onload", e.ready); | |
var f = !1; | |
try { | |
f = null == a.frameElement | |
} catch(k) {} | |
A.documentElement.doScroll && f && c() | |
} | |
} | |
}, | |
isFunction: function(c) { | |
return "function" === e.type(c) | |
}, | |
isArray: Array.isArray || | |
function(c) { | |
return "array" === e.type(c) | |
}, | |
isWindow: function(c) { | |
return c && "object" === typeof c && "setInterval" in c | |
}, | |
isNumeric: function(c) { | |
return ! isNaN(parseFloat(c)) && | |
isFinite(c) | |
}, | |
type: function(c) { | |
return null == c ? "" + c: H[kb.call(c)] || "object" | |
}, | |
isPlainObject: function(c) { | |
if (!c || "object" !== e.type(c) || c.nodeType || e.isWindow(c)) return ! 1; | |
try { | |
if (c.constructor && !W.call(c, "constructor") && !W.call(c.constructor.prototype, "isPrototypeOf")) return ! 1 | |
} catch(f) { | |
return ! 1 | |
} | |
for (var k in c); | |
return k === d || W.call(c, k) | |
}, | |
isEmptyObject: function(c) { | |
for (var e in c) return ! 1; | |
return ! 0 | |
}, | |
error: function(c) { | |
throw Error(c); | |
}, | |
parseJSON: function(c) { | |
if ("string" !== typeof c || !c) return null; | |
c = e.trim(c); | |
if (a.JSON && | |
a.JSON.parse) return a.JSON.parse(c); | |
if (q.test(c.replace(P, "@").replace(h, "]").replace(B, ""))) return (new Function("return " + c))(); | |
e.error("Invalid JSON: " + c) | |
}, | |
parseXML: function(c) { | |
var f, | |
k; | |
try { | |
a.DOMParser ? (k = new DOMParser, f = k.parseFromString(c, "text/xml")) : (f = new ActiveXObject("Microsoft.XMLDOM"), f.async = "false", f.loadXML(c)) | |
} catch(x) { | |
f = d | |
} (!f || !f.documentElement || f.getElementsByTagName("parsererror").length) && e.error("Invalid XML: " + c); | |
return f | |
}, | |
noop: function() {}, | |
globalEval: function(c) { | |
c && g.test(c) && | |
(a.execScript || | |
function(c) { | |
a.eval.call(a, c) | |
})(c) | |
}, | |
camelCase: function(c) { | |
return c.replace(o, "ms-").replace(C, V) | |
}, | |
nodeName: function(c, e) { | |
return c.nodeName && c.nodeName.toUpperCase() === e.toUpperCase() | |
}, | |
each: function(c, f, k) { | |
var a, | |
x = 0, | |
b = c.length, | |
R = b === d || e.isFunction(c); | |
if (k) if (R) for (a in c) { | |
if (W.call(c, a) && !1 === f.apply(c[a], k)) break | |
} else for (; x < b && !(!1 === f.apply(c[x++], k));); | |
else if (R) for (a in c) { | |
if (W.call(c, a) && !1 === f.call(c[a], a, c[a])) break | |
} else for (; x < b && !(!1 === f.call(c[x], x, c[x++]));); | |
return c | |
}, | |
trim: G ? | |
function(c) { | |
return null == c ? "": G.call(c) | |
}: function(c) { | |
return null == c ? "": c.toString().replace(l, "").replace(m, "") | |
}, | |
makeArray: function(c, f) { | |
var k = f || []; | |
if (null != c) { | |
var a = e.type(c); | |
null == c.length || "string" === a || "function" === a || "regexp" === a || e.isWindow(c) ? r.call(k, c) : e.merge(k, c) | |
} | |
return k | |
}, | |
inArray: function(c, e, f) { | |
var k; | |
if (e) { | |
if (n) return n.call(e, c, f); | |
k = e.length; | |
for (f = f ? 0 > f ? Math.max(0, k + f) : f: 0; f < k; f++) if (f in e && e[f] === c) return f | |
} | |
return - 1 | |
}, | |
merge: function(c, e) { | |
var f = c.length, | |
k = 0; | |
if ("number" === typeof e.length) for (var a = | |
e.length; k < a; k++) c[f++] = e[k]; | |
else for (; e[k] !== d;) c[f++] = e[k++]; | |
c.length = f; | |
return c | |
}, | |
grep: function(c, e, f) { | |
for (var k = [], a, f = !!f, x = 0, d = c.length; x < d; x++) a = !!e(c[x], x), | |
f !== a && k.push(c[x]); | |
return k | |
}, | |
map: function(c, f, k) { | |
var a, | |
x, | |
b = [], | |
R = 0, | |
j = c.length; | |
if (c instanceof e || j !== d && "number" === typeof j && (0 < j && c[0] && c[j - 1] || 0 === j || e.isArray(c))) for (; R < j; R++) a = f(c[R], R, k), | |
null != a && (b[b.length] = a); | |
else for (x in c) a = f(c[x], x, k), | |
null != a && (b[b.length] = a); | |
return b.concat.apply([], b) | |
}, | |
guid: 1, | |
proxy: function(c, f) { | |
if ("string" === | |
typeof f) var k = c[f], | |
f = c, | |
c = k; | |
if (!e.isFunction(c)) return d; | |
var a = t.call(arguments, 2), | |
k = function() { | |
return c.apply(f, a.concat(t.call(arguments))) | |
}; | |
k.guid = c.guid = c.guid || k.guid || e.guid++; | |
return k | |
}, | |
access: function(c, f, k, a, x, b) { | |
var R = c.length; | |
if ("object" === typeof f) { | |
for (var j in f) e.access(c, j, f[j], a, x, k); | |
return c | |
} | |
if (k !== d) { | |
a = !b && a && e.isFunction(k); | |
for (j = 0; j < R; j++) x(c[j], f, a ? k.call(c[j], j, x(c[j], f)) : k, b); | |
return c | |
} | |
return R ? x(c[0], f) : d | |
}, | |
now: function() { | |
return (new Date).getTime() | |
}, | |
uaMatch: function(c) { | |
c = c.toLowerCase(); | |
c = i.exec(c) || p.exec(c) || U.exec(c) || 0 > c.indexOf("compatible") && w.exec(c) || []; | |
return { | |
browser: c[1] || "", | |
version: c[2] || "0" | |
} | |
}, | |
sub: function() { | |
function c(e, f) { | |
return new c.fn.init(e, f) | |
} | |
e.extend(!0, c, this); | |
c.superclass = this; | |
c.fn = c.prototype = this(); | |
c.fn.constructor = c; | |
c.sub = this.sub; | |
c.fn.init = function(k, a) { | |
a && a instanceof e && !(a instanceof c) && (a = c(a)); | |
return e.fn.init.call(this, k, a, f) | |
}; | |
c.fn.init.prototype = c.fn; | |
var f = c(A); | |
return c | |
}, | |
browser: {} | |
}); | |
e.each("Boolean Number String Function Array Date RegExp Object".split(" "), | |
function(c, e) { | |
H["[object " + e + "]"] = e.toLowerCase() | |
}); | |
X = e.uaMatch(X); | |
if (X.browser) e.browser[X.browser] = !0, | |
e.browser.version = X.version; | |
if (e.browser.webkit) e.browser.safari = !0; | |
g.test("\u00a0") && (l = /^[\s\xA0]+/, m = /[\s\xA0]+$/); | |
b = e(A); | |
A.addEventListener ? na = function() { | |
A.removeEventListener("DOMContentLoaded", na, !1); | |
e.ready() | |
}: A.attachEvent && (na = function() { | |
"complete" === A.readyState && (A.detachEvent("onreadystatechange", na), e.ready()) | |
}); | |
return e | |
} (), | |
K = {}; | |
f.Callbacks = function(c) { | |
var c = c ? K[c] || b(c) : {}, | |
e = [], | |
k = | |
[], | |
a, | |
R, | |
za, | |
g, | |
l, | |
m = function(k) { | |
var a, | |
x, | |
d, | |
b; | |
for (a = 0, x = k.length; a < x; a++) d = k[a], | |
b = f.type(d), | |
"array" === b ? m(d) : "function" === b && (!c.unique || !q.has(d)) && e.push(d) | |
}, | |
D = function(f, d) { | |
d = d || []; | |
a = !c.memory || [f, d]; | |
R = !0; | |
l = za || 0; | |
za = 0; | |
for (g = e.length; e && l < g; l++) if (!1 === e[l].apply(f, d) && c.stopOnFalse) { | |
a = !0; | |
break | |
} | |
R = !1; | |
e && (c.once ? !0 === a ? q.disable() : e = [] : k && k.length && (a = k.shift(), q.fireWith(a[0], a[1]))) | |
}, | |
q = { | |
add: function() { | |
if (e) { | |
var c = e.length; | |
m(arguments); | |
R ? g = e.length: a && !0 !== a && (za = c, D(a[0], a[1])) | |
} | |
return this | |
}, | |
remove: function() { | |
if (e) for (var f = | |
arguments, k = 0, a = f.length; k < a; k++) for (var x = 0; x < e.length && !(f[k] === e[x] && (R && x <= g && (g--, x <= l && l--), e.splice(x--, 1), c.unique)); x++); | |
return this | |
}, | |
has: function(c) { | |
if (e) for (var f = 0, k = e.length; f < k; f++) if (c === e[f]) return ! 0; | |
return ! 1 | |
}, | |
empty: function() { | |
e = []; | |
return this | |
}, | |
disable: function() { | |
e = k = a = d; | |
return this | |
}, | |
disabled: function() { | |
return ! e | |
}, | |
lock: function() { | |
k = d; (!a || !0 === a) && q.disable(); | |
return this | |
}, | |
locked: function() { | |
return ! k | |
}, | |
fireWith: function(e, f) { | |
k && (R ? c.once || k.push([e, f]) : (!c.once || !a) && D(e, f)); | |
return this | |
}, | |
fire: function() { | |
q.fireWith(this, arguments); | |
return this | |
}, | |
fired: function() { | |
return !! a | |
} | |
}; | |
return q | |
}; | |
var $ = [].slice; | |
f.extend({ | |
Deferred: function(c) { | |
var e = f.Callbacks("once memory"), | |
k = f.Callbacks("once memory"), | |
a = f.Callbacks("memory"), | |
d = "pending", | |
b = { | |
resolve: e, | |
reject: k, | |
notify: a | |
}, | |
j = { | |
done: e.add, | |
fail: k.add, | |
progress: a.add, | |
state: function() { | |
return d | |
}, | |
isResolved: e.fired, | |
isRejected: k.fired, | |
then: function(c, e, f) { | |
g.done(c).fail(e).progress(f); | |
return this | |
}, | |
always: function() { | |
g.done.apply(g, arguments).fail.apply(g, arguments); | |
return this | |
}, | |
pipe: function(c, e, k) { | |
return f.Deferred(function(a) { | |
f.each({ | |
done: [c, "resolve"], | |
fail: [e, "reject"], | |
progress: [k, "notify"] | |
}, | |
function(c, e) { | |
var k = e[0], | |
x = e[1], | |
d; | |
if (f.isFunction(k)) g[c](function() { | |
if ((d = k.apply(this, arguments)) && f.isFunction(d.promise)) d.promise().then(a.resolve, a.reject, a.notify); | |
else a[x + "With"](this === g ? a: this, [d]) | |
}); | |
else g[c](a[x]) | |
}) | |
}).promise() | |
}, | |
promise: function(c) { | |
if (null == c) c = j; | |
else for (var e in j) c[e] = j[e]; | |
return c | |
} | |
}, | |
g = j.promise({}), | |
l; | |
for (l in b) g[l] = b[l].fire, | |
g[l + "With"] = | |
b[l].fireWith; | |
g.done(function() { | |
d = "resolved" | |
}, | |
k.disable, a.lock).fail(function() { | |
d = "rejected" | |
}, | |
e.disable, a.lock); | |
c && c.call(g, g); | |
return g | |
}, | |
when: function(c) { | |
function e(c) { | |
return function(e) { | |
a[c] = 1 < arguments.length ? $.call(arguments, 0) : e; --g || l.resolveWith(l, a) | |
} | |
} | |
function k(c) { | |
return function(e) { | |
j[c] = 1 < arguments.length ? $.call(arguments, 0) : e; | |
l.notifyWith(m, j) | |
} | |
} | |
var a = $.call(arguments, 0), | |
d = 0, | |
b = a.length, | |
j = Array(b), | |
g = b, | |
l = 1 >= b && c && f.isFunction(c.promise) ? c: f.Deferred(), | |
m = l.promise(); | |
if (1 < b) { | |
for (; d < b; d++) a[d] && | |
a[d].promise && f.isFunction(a[d].promise) ? a[d].promise().then(e(d), l.reject, k(d)) : --g; | |
g || l.resolveWith(l, a) | |
} else l !== c && l.resolveWith(l, b ? [c] : []); | |
return m | |
} | |
}); | |
f.support = function() { | |
var c, | |
e, | |
k, | |
d, | |
b, | |
j, | |
g, | |
l, | |
m = A.createElement("div"); | |
m.setAttribute("className", "t"); | |
m.innerHTML = " <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>"; | |
e = m.getElementsByTagName("*"); | |
k = m.getElementsByTagName("a")[0]; | |
if (!e || !e.length || !k) return {}; | |
d = A.createElement("select"); | |
b = d.appendChild(A.createElement("option")); | |
e = m.getElementsByTagName("input")[0]; | |
c = { | |
leadingWhitespace: 3 === m.firstChild.nodeType, | |
tbody: !m.getElementsByTagName("tbody").length, | |
htmlSerialize: !!m.getElementsByTagName("link").length, | |
style: /top/.test(k.getAttribute("style")), | |
hrefNormalized: "/a" === k.getAttribute("href"), | |
opacity: /^0.55/.test(k.style.opacity), | |
cssFloat: !!k.style.cssFloat, | |
checkOn: "on" === e.value, | |
optSelected: b.selected, | |
getSetAttribute: "t" !== m.className, | |
enctype: !!A.createElement("form").enctype, | |
html5Clone: "<:nav></:nav>" !== A.createElement("nav").cloneNode(!0).outerHTML, | |
submitBubbles: !0, | |
changeBubbles: !0, | |
focusinBubbles: !1, | |
deleteExpando: !0, | |
noCloneEvent: !0, | |
inlineBlockNeedsLayout: !1, | |
shrinkWrapBlocks: !1, | |
reliableMarginRight: !0 | |
}; | |
e.checked = !0; | |
c.noCloneChecked = e.cloneNode(!0).checked; | |
d.disabled = !0; | |
c.optDisabled = !b.disabled; | |
try { | |
delete m.test | |
} catch(D) { | |
c.deleteExpando = !1 | |
} ! m.addEventListener && m.attachEvent && m.fireEvent && (m.attachEvent("onclick", | |
function() { | |
c.noCloneEvent = !1 | |
}), m.cloneNode(!0).fireEvent("onclick")); | |
e = A.createElement("input"); | |
e.value = "t"; | |
e.setAttribute("type", "radio"); | |
c.radioValue = "t" === e.value; | |
e.setAttribute("checked", "checked"); | |
m.appendChild(e); | |
k = A.createDocumentFragment(); | |
k.appendChild(m.lastChild); | |
c.checkClone = k.cloneNode(!0).cloneNode(!0).lastChild.checked; | |
c.appendChecked = e.checked; | |
k.removeChild(e); | |
k.appendChild(m); | |
m.innerHTML = ""; | |
if (a.getComputedStyle) e = A.createElement("div"), | |
e.style.width = "0", | |
e.style.marginRight = "0", | |
m.style.width = "2px", | |
m.appendChild(e), | |
c.reliableMarginRight = 0 === (parseInt((a.getComputedStyle(e, null) || { | |
marginRight: 0 | |
}).marginRight, 10) || 0); | |
if (m.attachEvent) for (g in { | |
submit: 1, | |
change: 1, | |
focusin: 1 | |
}) e = "on" + g, | |
l = e in m, | |
l || (m.setAttribute(e, "return;"), l = "function" === typeof m[e]), | |
c[g + "Bubbles"] = l; | |
k.removeChild(m); | |
k = d = b = e = m = e = null; | |
f(function() { | |
var e, | |
k, | |
a, | |
d, | |
x = A.getElementsByTagName("body")[0]; | |
if (x) { | |
e = A.createElement("div"); | |
e.style.cssText = "visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px"; | |
x.insertBefore(e, x.firstChild); | |
m = A.createElement("div"); | |
e.appendChild(m); | |
m.innerHTML = "<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>"; | |
j = m.getElementsByTagName("td"); | |
l = 0 === j[0].offsetHeight; | |
j[0].style.display = ""; | |
j[1].style.display = "none"; | |
c.reliableHiddenOffsets = l && 0 === j[0].offsetHeight; | |
m.innerHTML = ""; | |
m.style.width = m.style.paddingLeft = "1px"; | |
f.boxModel = c.boxModel = 2 === m.offsetWidth; | |
if ("undefined" !== typeof m.style.zoom) m.style.display = "inline", | |
m.style.zoom = 1, | |
c.inlineBlockNeedsLayout = 2 === m.offsetWidth, | |
m.style.display = "", | |
m.innerHTML = "<div style='width:4px;'></div>", | |
c.shrinkWrapBlocks = 2 !== m.offsetWidth; | |
m.style.cssText = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;visibility:hidden;border:0;"; | |
m.innerHTML = "<div style='position:absolute;top:0;left:0;width:1px;height:1px;margin:0;border:5px solid #000;padding:0;'><div></div></div><table style='position:absolute;top:0;left:0;width:1px;height:1px;margin:0;border:5px solid #000;padding:0;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>"; | |
k = m.firstChild; | |
a = k.firstChild; | |
d = { | |
doesNotAddBorder: 5 !== a.offsetTop, | |
doesAddBorderForTableAndCells: 5 === k.nextSibling.firstChild.firstChild.offsetTop | |
}; | |
a.style.position = "fixed"; | |
a.style.top = "20px"; | |
d.fixedPosition = | |
20 === a.offsetTop || 15 === a.offsetTop; | |
a.style.position = a.style.top = ""; | |
k.style.overflow = "hidden"; | |
k.style.position = "relative"; | |
d.subtractsBorderForOverflowNotVisible = -5 === a.offsetTop; | |
d.doesNotIncludeMarginInBodyOffset = 1 !== x.offsetTop; | |
x.removeChild(e); | |
m = null; | |
f.extend(c, d) | |
} | |
}); | |
return c | |
} (); | |
var y = /^(?:\{.*\}|\[.*\])$/, | |
O = /([A-Z])/g; | |
f.extend({ | |
cache: {}, | |
uuid: 0, | |
expando: "jQuery" + (f.fn.jquery + Math.random()).replace(/\D/g, ""), | |
noData: { | |
embed: !0, | |
object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", | |
applet: !0 | |
}, | |
hasData: function(c) { | |
c = | |
c.nodeType ? f.cache[c[f.expando]] : c[f.expando]; | |
return !! c && !q(c) | |
}, | |
data: function(c, e, k, a) { | |
if (f.acceptData(c)) { | |
var b; | |
b = f.expando; | |
var j = "string" === typeof e, | |
m = c.nodeType, | |
g = m ? f.cache: c, | |
l = m ? c[b] : c[b] && b, | |
D = "events" === e; | |
if (l && g[l] && (D || a || g[l].data) || !(j && k === d)) { | |
l || (m ? c[b] = l = ++f.uuid: l = b); | |
if (!g[l] && (g[l] = {}, | |
!m)) g[l].toJSON = f.noop; | |
if ("object" === typeof e || "function" === typeof e) a ? g[l] = f.extend(g[l], e) : g[l].data = f.extend(g[l].data, e); | |
b = c = g[l]; | |
if (!a) { | |
if (!c.data) c.data = {}; | |
c = c.data | |
} | |
k !== d && (c[f.camelCase(e)] = k); | |
if (D && | |
!c[e]) return b.events; | |
j ? (k = c[e], null == k && (k = c[f.camelCase(e)])) : k = c; | |
return k | |
} | |
} | |
}, | |
removeData: function(c, e, k) { | |
if (f.acceptData(c)) { | |
var a, | |
d, | |
b, | |
j = f.expando, | |
m = c.nodeType, | |
g = m ? f.cache: c, | |
l = m ? c[j] : j; | |
if (g[l]) { | |
if (e && (a = k ? g[l] : g[l].data)) { | |
f.isArray(e) || (e in a ? e = [e] : (e = f.camelCase(e), e = e in a ? [e] : e.split(" "))); | |
for (d = 0, b = e.length; d < b; d++) delete a[e[d]]; | |
if (! (k ? q: f.isEmptyObject)(a)) return | |
} | |
if (!k && (delete g[l].data, !q(g[l]))) return; | |
f.support.deleteExpando || !g.setInterval ? delete g[l] : g[l] = null; | |
m && (f.support.deleteExpando ? | |
delete c[j] : c.removeAttribute ? c.removeAttribute(j) : c[j] = null) | |
} | |
} | |
}, | |
_data: function(c, e, k) { | |
return f.data(c, e, k, !0) | |
}, | |
acceptData: function(c) { | |
if (c.nodeName) { | |
var e = f.noData[c.nodeName.toLowerCase()]; | |
if (e) return ! (!0 === e || c.getAttribute("classid") !== e) | |
} | |
return ! 0 | |
} | |
}); | |
f.fn.extend({ | |
data: function(c, e) { | |
var k, | |
a, | |
b, | |
j = null; | |
if ("undefined" === typeof c) { | |
if (this.length && (j = f.data(this[0]), 1 === this[0].nodeType && !f._data(this[0], "parsedAttrs"))) { | |
a = this[0].attributes; | |
for (var l = 0, m = a.length; l < m; l++) b = a[l].name, | |
0 === b.indexOf("data-") && | |
(b = f.camelCase(b.substring(5)), g(this[0], b, j[b])); | |
f._data(this[0], "parsedAttrs", !0) | |
} | |
return j | |
} | |
if ("object" === typeof c) return this.each(function() { | |
f.data(this, c) | |
}); | |
k = c.split("."); | |
k[1] = k[1] ? "." + k[1] : ""; | |
return e === d ? (j = this.triggerHandler("getData" + k[1] + "!", [k[0]]), j === d && this.length && (j = f.data(this[0], c), j = g(this[0], c, j)), j === d && k[1] ? this.data(k[0]) : j) : this.each(function() { | |
var a = f(this), | |
d = [k[0], e]; | |
a.triggerHandler("setData" + k[1] + "!", d); | |
f.data(this, c, e); | |
a.triggerHandler("changeData" + k[1] + "!", d) | |
}) | |
}, | |
removeData: function(c) { | |
return this.each(function() { | |
f.removeData(this, | |
c) | |
}) | |
} | |
}); | |
f.extend({ | |
_mark: function(c, e) { | |
c && (e = (e || "fx") + "mark", f._data(c, e, (f._data(c, e) || 0) + 1)) | |
}, | |
_unmark: function(c, e, k) { ! 0 !== c && (k = e, e = c, c = !1); | |
if (e) { | |
var k = k || "fx", | |
a = k + "mark"; (c = c ? 0: (f._data(e, a) || 1) - 1) ? f._data(e, a, c) : (f.removeData(e, a, !0), h(e, k, "mark")) | |
} | |
}, | |
queue: function(c, e, k) { | |
var a; | |
if (c) return e = (e || "fx") + "queue", | |
a = f._data(c, e), | |
k && (!a || f.isArray(k) ? a = f._data(c, e, f.makeArray(k)) : a.push(k)), | |
a || [] | |
}, | |
dequeue: function(c, e) { | |
var e = e || "fx", | |
k = f.queue(c, e), | |
a = k.shift(), | |
d = {}; | |
"inprogress" === a && (a = k.shift()); | |
a && | |
("fx" === e && k.unshift("inprogress"), f._data(c, e + ".run", d), a.call(c, | |
function() { | |
f.dequeue(c, e) | |
}, | |
d)); | |
k.length || (f.removeData(c, e + "queue " + e + ".run", !0), h(c, e, "queue")) | |
} | |
}); | |
f.fn.extend({ | |
queue: function(c, e) { | |
"string" !== typeof c && (e = c, c = "fx"); | |
return e === d ? f.queue(this[0], c) : this.each(function() { | |
var a = f.queue(this, c, e); | |
"fx" === c && "inprogress" !== a[0] && f.dequeue(this, c) | |
}) | |
}, | |
dequeue: function(c) { | |
return this.each(function() { | |
f.dequeue(this, c) | |
}) | |
}, | |
delay: function(c, e) { | |
c = f.fx ? f.fx.speeds[c] || c: c; | |
return this.queue(e || "fx", | |
function(e, f) { | |
var a = setTimeout(e, c); | |
f.stop = function() { | |
clearTimeout(a) | |
} | |
}) | |
}, | |
clearQueue: function(c) { | |
return this.queue(c || "fx", []) | |
}, | |
promise: function(c) { | |
function e() {--l || a.resolveWith(b, [b]) | |
} | |
"string" !== typeof c && (c = d); | |
for (var c = c || "fx", a = f.Deferred(), b = this, j = b.length, l = 1, g = c + "defer", m = c + "queue", c = c + "mark", D; j--;) if (D = f.data(b[j], g, d, !0) || (f.data(b[j], m, d, !0) || f.data(b[j], c, d, !0)) && f.data(b[j], g, f.Callbacks("once memory"), !0)) l++, | |
D.add(e); | |
e(); | |
return a.promise() | |
} | |
}); | |
var ca = /[\n\t\r]/g, | |
aa = /\s+/, | |
J = /\r/g, | |
Z = /^(?:button|input)$/i, | |
T = /^(?:button|input|object|select|textarea)$/i, | |
S = /^a(?:rea)?$/i, | |
ba = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, | |
oa = f.support.getSetAttribute, | |
l, | |
V, | |
va; | |
f.fn.extend({ | |
attr: function(c, e) { | |
return f.access(this, c, e, !0, f.attr) | |
}, | |
removeAttr: function(c) { | |
return this.each(function() { | |
f.removeAttr(this, c) | |
}) | |
}, | |
prop: function(c, e) { | |
return f.access(this, c, e, !0, f.prop) | |
}, | |
removeProp: function(c) { | |
c = f.propFix[c] || c; | |
return this.each(function() { | |
try { | |
this[c] = | |
d, | |
delete this[c] | |
} catch(e) {} | |
}) | |
}, | |
addClass: function(c) { | |
var e, | |
a, | |
d, | |
b, | |
j, | |
l, | |
g; | |
if (f.isFunction(c)) return this.each(function(e) { | |
f(this).addClass(c.call(this, e, this.className)) | |
}); | |
if (c && "string" === typeof c) { | |
e = c.split(aa); | |
for (a = 0, d = this.length; a < d; a++) if (b = this[a], 1 === b.nodeType) if (!b.className && 1 === e.length) b.className = c; | |
else { | |
j = " " + b.className + " "; | |
for (l = 0, g = e.length; l < g; l++)~j.indexOf(" " + e[l] + " ") || (j += e[l] + " "); | |
b.className = f.trim(j) | |
} | |
} | |
return this | |
}, | |
removeClass: function(c) { | |
var e, | |
a, | |
b, | |
j, | |
l, | |
g, | |
m; | |
if (f.isFunction(c)) return this.each(function(e) { | |
f(this).removeClass(c.call(this, | |
e, this.className)) | |
}); | |
if (c && "string" === typeof c || c === d) { | |
e = (c || "").split(aa); | |
for (a = 0, b = this.length; a < b; a++) if (j = this[a], 1 === j.nodeType && j.className) if (c) { | |
l = (" " + j.className + " ").replace(ca, " "); | |
for (g = 0, m = e.length; g < m; g++) l = l.replace(" " + e[g] + " ", " "); | |
j.className = f.trim(l) | |
} else j.className = "" | |
} | |
return this | |
}, | |
toggleClass: function(c, e) { | |
var a = typeof c, | |
d = "boolean" === typeof e; | |
return f.isFunction(c) ? this.each(function(a) { | |
f(this).toggleClass(c.call(this, a, this.className, e), e) | |
}) : this.each(function() { | |
if ("string" === | |
a) for (var b, j = 0, l = f(this), g = e, m = c.split(aa); b = m[j++];) g = d ? g: !l.hasClass(b), | |
l[g ? "addClass": "removeClass"](b); | |
else if ("undefined" === a || "boolean" === a) this.className && f._data(this, "__className__", this.className), | |
this.className = this.className || !1 === c ? "": f._data(this, "__className__") || "" | |
}) | |
}, | |
hasClass: function(c) { | |
for (var c = " " + c + " ", e = 0, f = this.length; e < f; e++) if (1 === this[e].nodeType && -1 < (" " + this[e].className + " ").replace(ca, " ").indexOf(c)) return ! 0; | |
return ! 1 | |
}, | |
val: function(c) { | |
var e, | |
a, | |
b, | |
j = this[0]; | |
if (arguments.length) return b = | |
f.isFunction(c), | |
this.each(function(a) { | |
var k = f(this); | |
if (1 === this.nodeType && (a = b ? c.call(this, a, k.val()) : c, null == a ? a = "": "number" === typeof a ? a += "": f.isArray(a) && (a = f.map(a, | |
function(c) { | |
return null == c ? "": c + "" | |
})), e = f.valHooks[this.nodeName.toLowerCase()] || f.valHooks[this.type], !e || !("set" in e) || e.set(this, a, "value") === d)) this.value = a | |
}); | |
if (j) { | |
if ((e = f.valHooks[j.nodeName.toLowerCase()] || f.valHooks[j.type]) && "get" in e && (a = e.get(j, "value")) !== d) return a; | |
a = j.value; | |
return "string" === typeof a ? a.replace(J, "") : null == | |
a ? "": a | |
} | |
} | |
}); | |
f.extend({ | |
valHooks: { | |
option: { | |
get: function(c) { | |
var e = c.attributes.value; | |
return ! e || e.specified ? c.value: c.text | |
} | |
}, | |
select: { | |
get: function(c) { | |
var e, | |
a, | |
d = c.selectedIndex, | |
b = [], | |
j = c.options, | |
l = "select-one" === c.type; | |
if (0 > d) return null; | |
c = l ? d: 0; | |
for (a = l ? d + 1: j.length; c < a; c++) if (e = j[c], e.selected && (f.support.optDisabled ? !e.disabled: null === e.getAttribute("disabled")) && (!e.parentNode.disabled || !f.nodeName(e.parentNode, "optgroup"))) { | |
e = f(e).val(); | |
if (l) return e; | |
b.push(e) | |
} | |
return l && !b.length && j.length ? f(j[d]).val() : | |
b | |
}, | |
set: function(c, e) { | |
var a = f.makeArray(e); | |
f(c).find("option").each(function() { | |
this.selected = 0 <= f.inArray(f(this).val(), a) | |
}); | |
if (!a.length) c.selectedIndex = -1; | |
return a | |
} | |
} | |
}, | |
attrFn: { | |
val: !0, | |
css: !0, | |
html: !0, | |
text: !0, | |
data: !0, | |
width: !0, | |
height: !0, | |
offset: !0 | |
}, | |
attr: function(c, e, a, b) { | |
var j, | |
g, | |
m = c.nodeType; | |
if (c && !(3 === m || 8 === m || 2 === m)) { | |
if (b && e in f.attrFn) return f(c)[e](a); | |
if ("undefined" === typeof c.getAttribute) return f.prop(c, e, a); | |
if (b = 1 !== m || !f.isXMLDoc(c)) e = e.toLowerCase(), | |
g = f.attrHooks[e] || (ba.test(e) ? V: l); | |
if (a !== | |
d) if (null === a) f.removeAttr(c, e); | |
else { | |
if (g && "set" in g && b && (j = g.set(c, a, e)) !== d) return j; | |
c.setAttribute(e, "" + a); | |
return a | |
} else { | |
if (g && "get" in g && b && null !== (j = g.get(c, e))) return j; | |
j = c.getAttribute(e); | |
return null === j ? d: j | |
} | |
} | |
}, | |
removeAttr: function(c, e) { | |
var a, | |
d, | |
b, | |
j, | |
l = 0; | |
if (e && 1 === c.nodeType) { | |
d = e.toLowerCase().split(aa); | |
for (j = d.length; l < j; l++) if (b = d[l]) a = f.propFix[b] || b, | |
f.attr(c, b, ""), | |
c.removeAttribute(oa ? b: a), | |
ba.test(b) && a in c && (c[a] = !1) | |
} | |
}, | |
attrHooks: { | |
type: { | |
set: function(c, e) { | |
if (Z.test(c.nodeName) && c.parentNode) f.error("type property can't be changed"); | |
else if (!f.support.radioValue && "radio" === e && f.nodeName(c, "input")) { | |
var a = c.value; | |
c.setAttribute("type", e); | |
if (a) c.value = a; | |
return e | |
} | |
} | |
}, | |
value: { | |
get: function(c, e) { | |
return l && f.nodeName(c, "button") ? l.get(c, e) : e in c ? c.value: null | |
}, | |
set: function(c, e, a) { | |
if (l && f.nodeName(c, "button")) return l.set(c, e, a); | |
c.value = e | |
} | |
} | |
}, | |
propFix: { | |
tabindex: "tabIndex", | |
readonly: "readOnly", | |
"for": "htmlFor", | |
"class": "className", | |
maxlength: "maxLength", | |
cellspacing: "cellSpacing", | |
cellpadding: "cellPadding", | |
rowspan: "rowSpan", | |
colspan: "colSpan", | |
usemap: "useMap", | |
frameborder: "frameBorder", | |
contenteditable: "contentEditable" | |
}, | |
prop: function(c, e, a) { | |
var b, | |
j, | |
l = c.nodeType; | |
if (c && !(3 === l || 8 === l || 2 === l)) { | |
if (1 !== l || !f.isXMLDoc(c)) e = f.propFix[e] || e, | |
j = f.propHooks[e]; | |
return a !== d ? j && "set" in j && (b = j.set(c, a, e)) !== d ? b: c[e] = a: j && "get" in j && null !== (b = j.get(c, e)) ? b: c[e] | |
} | |
}, | |
propHooks: { | |
tabIndex: { | |
get: function(c) { | |
var e = c.getAttributeNode("tabindex"); | |
return e && e.specified ? parseInt(e.value, 10) : T.test(c.nodeName) || S.test(c.nodeName) && c.href ? 0: d | |
} | |
} | |
} | |
}); | |
f.attrHooks.tabindex = f.propHooks.tabIndex; | |
V = { | |
get: function(c, e) { | |
var a, | |
b = f.prop(c, e); | |
return ! 0 === b || "boolean" !== typeof b && (a = c.getAttributeNode(e)) && !1 !== a.nodeValue ? e.toLowerCase() : d | |
}, | |
set: function(c, e, a) { ! 1 === e ? f.removeAttr(c, a) : (e = f.propFix[a] || a, e in c && (c[e] = !0), c.setAttribute(a, a.toLowerCase())); | |
return a | |
} | |
}; | |
if (!oa) va = { | |
name: !0, | |
id: !0 | |
}, | |
l = f.valHooks.button = { | |
get: function(c, e) { | |
var f; | |
return (f = c.getAttributeNode(e)) && (va[e] ? "" !== f.nodeValue: f.specified) ? f.nodeValue: d | |
}, | |
set: function(c, e, f) { | |
var a = c.getAttributeNode(f); | |
a || (a = A.createAttribute(f), c.setAttributeNode(a)); | |
return a.nodeValue = e + "" | |
} | |
}, | |
f.attrHooks.tabindex.set = l.set, | |
f.each(["width", "height"], | |
function(c, e) { | |
f.attrHooks[e] = f.extend(f.attrHooks[e], { | |
set: function(c, f) { | |
if ("" === f) return c.setAttribute(e, "auto"), | |
f | |
} | |
}) | |
}), | |
f.attrHooks.contenteditable = { | |
get: l.get, | |
set: function(c, e, f) { | |
"" === e && (e = "false"); | |
l.set(c, e, f) | |
} | |
}; | |
f.support.hrefNormalized || f.each(["href", "src", "width", "height"], | |
function(c, e) { | |
f.attrHooks[e] = f.extend(f.attrHooks[e], { | |
get: function(c) { | |
c = c.getAttribute(e, 2); | |
return null === c ? d: c | |
} | |
}) | |
}); | |
if (!f.support.style) f.attrHooks.style = | |
{ | |
get: function(c) { | |
return c.style.cssText.toLowerCase() || d | |
}, | |
set: function(c, e) { | |
return c.style.cssText = "" + e | |
} | |
}; | |
if (!f.support.optSelected) f.propHooks.selected = f.extend(f.propHooks.selected, { | |
get: function() { | |
return null | |
} | |
}); | |
if (!f.support.enctype) f.propFix.enctype = "encoding"; | |
f.support.checkOn || f.each(["radio", "checkbox"], | |
function() { | |
f.valHooks[this] = { | |
get: function(c) { | |
return null === c.getAttribute("value") ? "on": c.value | |
} | |
} | |
}); | |
f.each(["radio", "checkbox"], | |
function() { | |
f.valHooks[this] = f.extend(f.valHooks[this], { | |
set: function(c, | |
e) { | |
if (f.isArray(e)) return c.checked = 0 <= f.inArray(f(c).val(), e) | |
} | |
}) | |
}); | |
var qa = /^(?:textarea|input|select)$/i, | |
Ma = /^([^\.]*)?(?:\.(.+))?$/, | |
lb = /\bhover(\.\S+)?\b/, | |
mb = /^key/, | |
nb = /^(?:mouse|contextmenu)|click/, | |
Na = /^(?:focusinfocus|focusoutblur)$/, | |
ob = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/, | |
pb = function(c) { | |
if (c = ob.exec(c)) c[1] = (c[1] || "").toLowerCase(), | |
c[3] = c[3] && RegExp("(?:^|\\s)" + c[3] + "(?:\\s|$)"); | |
return c | |
}, | |
Oa = function(c) { | |
return f.event.special.hover ? c: c.replace(lb, "mouseenter$1 mouseleave$1") | |
}; | |
f.event = { | |
add: function(c, | |
e, a, b, j) { | |
var l, | |
g, | |
m, | |
D, | |
q, | |
P, | |
h, | |
B, | |
i; | |
if (! (3 === c.nodeType || 8 === c.nodeType || !e || !a || !(l = f._data(c)))) { | |
if (a.handler) h = a, | |
a = h.handler; | |
if (!a.guid) a.guid = f.guid++; | |
m = l.events; | |
if (!m) l.events = m = {}; | |
g = l.handle; | |
if (!g) l.handle = g = function(c) { | |
return "undefined" !== typeof f && (!c || f.event.triggered !== c.type) ? f.event.dispatch.apply(g.elem, arguments) : d | |
}, | |
g.elem = c; | |
e = f.trim(Oa(e)).split(" "); | |
for (l = 0; l < e.length; l++) { | |
D = Ma.exec(e[l]) || []; | |
q = D[1]; | |
P = (D[2] || "").split(".").sort(); | |
i = f.event.special[q] || {}; | |
q = (j ? i.delegateType: i.bindType) || | |
q; | |
i = f.event.special[q] || {}; | |
D = f.extend({ | |
type: q, | |
origType: D[1], | |
data: b, | |
handler: a, | |
guid: a.guid, | |
selector: j, | |
quick: pb(j), | |
namespace: P.join(".") | |
}, | |
h); | |
B = m[q]; | |
if (!B && (B = m[q] = [], B.delegateCount = 0, !i.setup || !1 === i.setup.call(c, b, P, g))) c.addEventListener ? c.addEventListener(q, g, !1) : c.attachEvent && c.attachEvent("on" + q, g); | |
if (i.add && (i.add.call(c, D), !D.handler.guid)) D.handler.guid = a.guid; | |
j ? B.splice(B.delegateCount++, 0, D) : B.push(D); | |
f.event.global[q] = !0 | |
} | |
c = null | |
} | |
}, | |
global: {}, | |
remove: function(c, e, a, d, b) { | |
var j = f.hasData(c) && | |
f._data(c), | |
l, | |
g, | |
m, | |
D, | |
q, | |
P, | |
h, | |
B, | |
i, | |
Q; | |
if (j && (h = j.events)) { | |
e = f.trim(Oa(e || "")).split(" "); | |
for (l = 0; l < e.length; l++) if (g = Ma.exec(e[l]) || [], m = D = g[1], g = g[2], m) { | |
B = f.event.special[m] || {}; | |
m = (d ? B.delegateType: B.bindType) || m; | |
i = h[m] || []; | |
q = i.length; | |
g = g ? RegExp("(^|\\.)" + g.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null; | |
for (P = 0; P < i.length; P++) if (Q = i[P], (b || D === Q.origType) && (!a || a.guid === Q.guid) && (!g || g.test(Q.namespace)) && (!d || d === Q.selector || "**" === d && Q.selector)) i.splice(P--, 1), | |
Q.selector && i.delegateCount--, | |
B.remove && B.remove.call(c, Q); | |
0 === i.length && q !== i.length && ((!B.teardown || !1 === B.teardown.call(c, g)) && f.removeEvent(c, m, j.handle), delete h[m]) | |
} else for (m in h) h.hasOwnProperty(m) && f.event.remove(c, m + e[l], a, d, !0); | |
if (f.isEmptyObject(h)) { | |
if (e = j.handle) e.elem = null; | |
f.removeData(c, ["events", "handle"], !0) | |
} | |
} | |
}, | |
customEvent: { | |
getData: !0, | |
setData: !0, | |
changeData: !0 | |
}, | |
trigger: function(c, e, k, b) { | |
if (!k || !(3 === k.nodeType || 8 === k.nodeType)) { | |
var j = c.type || c, | |
l = [], | |
g, | |
m, | |
D, | |
q, | |
P; | |
if (!Na.test(j + f.event.triggered) && (0 <= j.indexOf("!") && | |
(j = j.slice(0, -1), g = !0), 0 <= j.indexOf(".") && (l = j.split("."), j = l.shift(), l.sort()), k && !f.event.customEvent[j] || f.event.global[j])) if (c = "object" === typeof c ? c[f.expando] ? c: new f.Event(j, c) : new f.Event(j), c.type = j, c.isTrigger = !0, c.exclusive = g, c.namespace = l.join("."), c.namespace_re = c.namespace ? RegExp("(^|\\.)" + l.join("\\.(?:.*\\.)?") + "(\\.|$)") : null, g = 0 > j.indexOf(":") ? "on" + j: "", k) { | |
c.result = d; | |
if (!c.target) c.target = k; | |
e = null != e ? f.makeArray(e) : []; | |
e.unshift(c); | |
D = f.event.special[j] || {}; | |
if (! (D.trigger && !1 === D.trigger.apply(k, | |
e))) { | |
P = [[k, D.bindType || j]]; | |
if (!b && !D.noBubble && !f.isWindow(k)) { | |
q = D.delegateType || j; | |
l = Na.test(q + j) ? k: k.parentNode; | |
for (m = null; l; l = l.parentNode) P.push([l, q]), | |
m = l; | |
m && m === k.ownerDocument && P.push([m.defaultView || m.parentWindow || a, q]) | |
} | |
for (m = 0; m < P.length && !c.isPropagationStopped(); m++) l = P[m][0], | |
c.type = P[m][1], | |
(q = (f._data(l, "events") || {})[c.type] && f._data(l, "handle")) && q.apply(l, e), | |
(q = g && l[g]) && f.acceptData(l) && !1 === q.apply(l, e) && c.preventDefault(); | |
c.type = j; | |
if (!b && !c.isDefaultPrevented() && (!D._default || !1 === | |
D._default.apply(k.ownerDocument, e)) && !("click" === j && f.nodeName(k, "a")) && f.acceptData(k)) if (g && k[j] && ("focus" !== j && "blur" !== j || 0 !== c.target.offsetWidth) && !f.isWindow(k))(m = k[g]) && (k[g] = null), | |
f.event.triggered = j, | |
k[j](), | |
f.event.triggered = d, | |
m && (k[g] = m); | |
return c.result | |
} | |
} else for (m in k = f.cache, k) k[m].events && k[m].events[j] && f.event.trigger(c, e, k[m].handle.elem, !0) | |
} | |
}, | |
dispatch: function(c) { | |
var c = f.event.fix(c || a.event), | |
e = (f._data(this, "events") || {})[c.type] || [], | |
k = e.delegateCount, | |
b = [].slice.call(arguments, | |
0), | |
j = !c.exclusive && !c.namespace, | |
l = [], | |
g, | |
m, | |
D, | |
q, | |
P, | |
h, | |
B; | |
b[0] = c; | |
c.delegateTarget = this; | |
if (k && !c.target.disabled && !(c.button && "click" === c.type)) { | |
D = f(this); | |
D.context = this.ownerDocument || this; | |
for (m = c.target; m != this; m = m.parentNode || this) { | |
P = {}; | |
h = []; | |
D[0] = m; | |
for (g = 0; g < k; g++) { | |
q = e[g]; | |
B = q.selector; | |
if (P[B] === d) { | |
var i = P, | |
p = B, | |
U; | |
if (q.quick) { | |
U = q.quick; | |
var A = m.attributes || {}; | |
U = (!U[1] || m.nodeName.toLowerCase() === U[1]) && (!U[2] || (A.id || {}).value === U[2]) && (!U[3] || U[3].test((A["class"] || {}).value)) | |
} else U = D.is(B); | |
i[p] = U | |
} | |
P[B] && | |
h.push(q) | |
} | |
h.length && l.push({ | |
elem: m, | |
matches: h | |
}) | |
} | |
} | |
e.length > k && l.push({ | |
elem: this, | |
matches: e.slice(k) | |
}); | |
for (g = 0; g < l.length && !c.isPropagationStopped(); g++) { | |
k = l[g]; | |
c.currentTarget = k.elem; | |
for (e = 0; e < k.matches.length && !c.isImmediatePropagationStopped(); e++) if (q = k.matches[e], j || !c.namespace && !q.namespace || c.namespace_re && c.namespace_re.test(q.namespace)) if (c.data = q.data, c.handleObj = q, q = ((f.event.special[q.origType] || {}).handle || q.handler).apply(k.elem, b), q !== d) c.result = q, | |
!1 === q && (c.preventDefault(), c.stopPropagation()) | |
} | |
return c.result | |
}, | |
props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), | |
fixHooks: {}, | |
keyHooks: { | |
props: "char charCode key keyCode".split(" "), | |
filter: function(c, e) { | |
if (null == c.which) c.which = null != e.charCode ? e.charCode: e.keyCode; | |
return c | |
} | |
}, | |
mouseHooks: { | |
props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), | |
filter: function(c, e) { | |
var f, | |
a, | |
b = | |
e.button, | |
j = e.fromElement; | |
if (null == c.pageX && null != e.clientX) f = c.target.ownerDocument || A, | |
a = f.documentElement, | |
f = f.body, | |
c.pageX = e.clientX + (a && a.scrollLeft || f && f.scrollLeft || 0) - (a && a.clientLeft || f && f.clientLeft || 0), | |
c.pageY = e.clientY + (a && a.scrollTop || f && f.scrollTop || 0) - (a && a.clientTop || f && f.clientTop || 0); | |
if (!c.relatedTarget && j) c.relatedTarget = j === c.target ? e.toElement: j; | |
if (!c.which && b !== d) c.which = b & 1 ? 1: b & 2 ? 3: b & 4 ? 2: 0; | |
return c | |
} | |
}, | |
fix: function(c) { | |
if (c[f.expando]) return c; | |
var e, | |
a, | |
b = c, | |
j = f.event.fixHooks[c.type] || | |
{}, | |
l = j.props ? this.props.concat(j.props) : this.props, | |
c = f.Event(b); | |
for (e = l.length; e;) a = l[--e], | |
c[a] = b[a]; | |
if (!c.target) c.target = b.srcElement || A; | |
if (3 === c.target.nodeType) c.target = c.target.parentNode; | |
if (c.metaKey === d) c.metaKey = c.ctrlKey; | |
return j.filter ? j.filter(c, b) : c | |
}, | |
special: { | |
ready: { | |
setup: f.bindReady | |
}, | |
load: { | |
noBubble: !0 | |
}, | |
focus: { | |
delegateType: "focusin" | |
}, | |
blur: { | |
delegateType: "focusout" | |
}, | |
beforeunload: { | |
setup: function(c, e, a) { | |
if (f.isWindow(this)) this.onbeforeunload = a | |
}, | |
teardown: function(c, e) { | |
if (this.onbeforeunload === | |
e) this.onbeforeunload = null | |
} | |
} | |
}, | |
simulate: function(c, e, a, d) { | |
c = f.extend(new f.Event, a, { | |
type: c, | |
isSimulated: !0, | |
originalEvent: {} | |
}); | |
d ? f.event.trigger(c, null, e) : f.event.dispatch.call(e, c); | |
c.isDefaultPrevented() && a.preventDefault() | |
} | |
}; | |
f.event.handle = f.event.dispatch; | |
f.removeEvent = A.removeEventListener ? | |
function(c, e, f) { | |
c.removeEventListener && c.removeEventListener(e, f, !1) | |
}: function(c, e, f) { | |
c.detachEvent && c.detachEvent("on" + e, f) | |
}; | |
f.Event = function(c, e) { | |
if (! (this instanceof f.Event)) return new f.Event(c, e); | |
c && c.type ? | |
(this.originalEvent = c, this.type = c.type, this.isDefaultPrevented = c.defaultPrevented || !1 === c.returnValue || c.getPreventDefault && c.getPreventDefault() ? p: i) : this.type = c; | |
e && f.extend(this, e); | |
this.timeStamp = c && c.timeStamp || f.now(); | |
this[f.expando] = !0 | |
}; | |
f.Event.prototype = { | |
preventDefault: function() { | |
this.isDefaultPrevented = p; | |
var c = this.originalEvent; | |
if (c) c.preventDefault ? c.preventDefault() : c.returnValue = !1 | |
}, | |
stopPropagation: function() { | |
this.isPropagationStopped = p; | |
var c = this.originalEvent; | |
if (c) c.stopPropagation && | |
c.stopPropagation(), | |
c.cancelBubble = !0 | |
}, | |
stopImmediatePropagation: function() { | |
this.isImmediatePropagationStopped = p; | |
this.stopPropagation() | |
}, | |
isDefaultPrevented: i, | |
isPropagationStopped: i, | |
isImmediatePropagationStopped: i | |
}; | |
f.each({ | |
mouseenter: "mouseover", | |
mouseleave: "mouseout" | |
}, | |
function(c, e) { | |
f.event.special[c] = { | |
delegateType: e, | |
bindType: e, | |
handle: function(c) { | |
var a = c.relatedTarget, | |
d = c.handleObj, | |
b; | |
if (!a || a !== this && !f.contains(this, a)) c.type = d.origType, | |
b = d.handler.apply(this, arguments), | |
c.type = e; | |
return b | |
} | |
} | |
}); | |
if (!f.support.submitBubbles) f.event.special.submit = | |
{ | |
setup: function() { | |
if (f.nodeName(this, "form")) return ! 1; | |
f.event.add(this, "click._submit keypress._submit", | |
function(c) { | |
c = c.target; | |
if ((c = f.nodeName(c, "input") || f.nodeName(c, "button") ? c.form: d) && !c._submit_attached) f.event.add(c, "submit._submit", | |
function(c) { | |
this.parentNode && !c.isTrigger && f.event.simulate("submit", this.parentNode, c, !0) | |
}), | |
c._submit_attached = !0 | |
}) | |
}, | |
teardown: function() { | |
if (f.nodeName(this, "form")) return ! 1; | |
f.event.remove(this, "._submit") | |
} | |
}; | |
if (!f.support.changeBubbles) f.event.special.change = { | |
setup: function() { | |
if (qa.test(this.nodeName)) { | |
if ("checkbox" === | |
this.type || "radio" === this.type) f.event.add(this, "propertychange._change", | |
function(c) { | |
if ("checked" === c.originalEvent.propertyName) this._just_changed = !0 | |
}), | |
f.event.add(this, "click._change", | |
function(c) { | |
if (this._just_changed && !c.isTrigger) this._just_changed = !1, | |
f.event.simulate("change", this, c, !0) | |
}); | |
return ! 1 | |
} | |
f.event.add(this, "beforeactivate._change", | |
function(c) { | |
c = c.target; | |
if (qa.test(c.nodeName) && !c._change_attached) f.event.add(c, "change._change", | |
function(c) { | |
this.parentNode && !c.isSimulated && !c.isTrigger && | |
f.event.simulate("change", this.parentNode, c, !0) | |
}), | |
c._change_attached = !0 | |
}) | |
}, | |
handle: function(c) { | |
var e = c.target; | |
if (this !== e || c.isSimulated || c.isTrigger || "radio" !== e.type && "checkbox" !== e.type) return c.handleObj.handler.apply(this, arguments) | |
}, | |
teardown: function() { | |
f.event.remove(this, "._change"); | |
return qa.test(this.nodeName) | |
} | |
}; | |
f.support.focusinBubbles || f.each({ | |
focus: "focusin", | |
blur: "focusout" | |
}, | |
function(c, e) { | |
var a = 0, | |
d = function(c) { | |
f.event.simulate(e, c.target, f.event.fix(c), !0) | |
}; | |
f.event.special[e] = { | |
setup: function() { | |
0 === | |
a++&&A.addEventListener(c, d, !0) | |
}, | |
teardown: function() { | |
0 === --a && A.removeEventListener(c, d, !0) | |
} | |
} | |
}); | |
f.fn.extend({ | |
on: function(c, e, a, b, j) { | |
var l, | |
g; | |
if ("object" === typeof c) { | |
"string" !== typeof e && (a = e, e = d); | |
for (g in c) this.on(g, e, a, c[g], j); | |
return this | |
} | |
null == a && null == b ? (b = e, a = e = d) : null == b && ("string" === typeof e ? (b = a, a = d) : (b = a, a = e, e = d)); | |
if (!1 === b) b = i; | |
else if (!b) return this; | |
if (1 === j) l = b, | |
b = function(c) { | |
f().off(c); | |
return l.apply(this, arguments) | |
}, | |
b.guid = l.guid || (l.guid = f.guid++); | |
return this.each(function() { | |
f.event.add(this, | |
c, b, a, e) | |
}) | |
}, | |
one: function(c, e, f, a) { | |
return this.on.call(this, c, e, f, a, 1) | |
}, | |
off: function(c, e, a) { | |
if (c && c.preventDefault && c.handleObj) { | |
var b = c.handleObj; | |
f(c.delegateTarget).off(b.namespace ? b.type + "." + b.namespace: b.type, b.selector, b.handler); | |
return this | |
} | |
if ("object" === typeof c) { | |
for (b in c) this.off(b, e, c[b]); | |
return this | |
} | |
if (!1 === e || "function" === typeof e) a = e, | |
e = d; ! 1 === a && (a = i); | |
return this.each(function() { | |
f.event.remove(this, c, a, e) | |
}) | |
}, | |
bind: function(c, e, f) { | |
return this.on(c, null, e, f) | |
}, | |
unbind: function(c, e) { | |
return this.off(c, | |
null, e) | |
}, | |
live: function(c, e, a) { | |
f(this.context).on(c, this.selector, e, a); | |
return this | |
}, | |
die: function(c, e) { | |
f(this.context).off(c, this.selector || "**", e); | |
return this | |
}, | |
delegate: function(c, e, f, a) { | |
return this.on(e, c, f, a) | |
}, | |
undelegate: function(c, e, f) { | |
return 1 == arguments.length ? this.off(c, "**") : this.off(e, c, f) | |
}, | |
trigger: function(c, e) { | |
return this.each(function() { | |
f.event.trigger(c, e, this) | |
}) | |
}, | |
triggerHandler: function(c, e) { | |
if (this[0]) return f.event.trigger(c, e, this[0], !0) | |
}, | |
toggle: function(c) { | |
var e = arguments, | |
a = c.guid || | |
f.guid++, | |
b = 0, | |
d = function(a) { | |
var d = (f._data(this, "lastToggle" + c.guid) || 0) % b; | |
f._data(this, "lastToggle" + c.guid, d + 1); | |
a.preventDefault(); | |
return e[d].apply(this, arguments) || !1 | |
}; | |
for (d.guid = a; b < e.length;) e[b++].guid = a; | |
return this.click(d) | |
}, | |
hover: function(c, e) { | |
return this.mouseenter(c).mouseleave(e || c) | |
} | |
}); | |
f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), | |
function(c, e) { | |
f.fn[e] = function(c, f) { | |
null == f && (f = c, c = null); | |
return 0 < arguments.length ? this.on(e, null, c, f) : this.trigger(e) | |
}; | |
f.attrFn && (f.attrFn[e] = !0); | |
if (mb.test(e)) f.event.fixHooks[e] = f.event.keyHooks; | |
if (nb.test(e)) f.event.fixHooks[e] = f.event.mouseHooks | |
}); (function() { | |
function c(c, e, f, a, d, k) { | |
for (var d = 0, j = a.length; d < j; d++) { | |
var l = a[d]; | |
if (l) { | |
for (var g = !1, l = l[c]; l;) { | |
if (l[b] === f) { | |
g = a[l.sizset]; | |
break | |
} | |
if (1 === l.nodeType && !k) l[b] = f, | |
l.sizset = d; | |
if (l.nodeName.toLowerCase() === e) { | |
g = l; | |
break | |
} | |
l = l[c] | |
} | |
a[d] = g | |
} | |
} | |
} | |
function e(c, | |
e, f, a, d, k) { | |
for (var d = 0, j = a.length; d < j; d++) { | |
var l = a[d]; | |
if (l) { | |
for (var g = !1, l = l[c]; l;) { | |
if (l[b] === f) { | |
g = a[l.sizset]; | |
break | |
} | |
if (1 === l.nodeType) { | |
if (!k) l[b] = f, | |
l.sizset = d; | |
if ("string" !== typeof e) { | |
if (l === e) { | |
g = !0; | |
break | |
} | |
} else if (0 < h.filter(e, [l]).length) { | |
g = l; | |
break | |
} | |
} | |
l = l[c] | |
} | |
a[d] = g | |
} | |
} | |
} | |
var a = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, | |
b = "sizcache" + (Math.random() + "").replace(".", ""), | |
j = 0, | |
l = Object.prototype.toString, | |
g = !1, | |
m = !0, | |
q = /\\/g, | |
D = /\r\n/g, | |
P = /\W/; [0, 0].sort(function() { | |
m = !1; | |
return 0 | |
}); | |
var h = function(c, e, f, b) { | |
var f = f || [], | |
d = e = e || A; | |
if (1 !== e.nodeType && 9 !== e.nodeType) return []; | |
if (!c || "string" !== typeof c) return f; | |
var j, | |
g, | |
m, | |
x, | |
q, | |
D = !0, | |
P = h.isXML(e), | |
B = [], | |
R = c; | |
do | |
if (a.exec(""), j = a.exec(R)) if (R = j[3], B.push(j[1]), j[2]) { | |
x = j[3]; | |
break | |
} | |
while (j); | |
if (1 < B.length && p.exec(c)) if (2 === B.length && i.relative[B[0]]) g = W(B[0] + B[1], e, b); | |
else for (g = i.relative[B[0]] ? [e] : h(B.shift(), e); B.length;) c = B.shift(), | |
i.relative[c] && (c += B.shift()), | |
g = W(c, g, b); | |
else if (!b && 1 < | |
B.length && 9 === e.nodeType && !P && i.match.ID.test(B[0]) && !i.match.ID.test(B[B.length - 1]) && (j = h.find(B.shift(), e, P), e = j.expr ? h.filter(j.expr, j.set)[0] : j.set[0]), e) { | |
j = b ? { | |
expr: B.pop(), | |
set: C(b) | |
}: h.find(B.pop(), 1 === B.length && ("~" === B[0] || "+" === B[0]) && e.parentNode ? e.parentNode: e, P); | |
g = j.expr ? h.filter(j.expr, j.set) : j.set; | |
for (0 < B.length ? m = C(g) : D = !1; B.length;) j = q = B.pop(), | |
i.relative[q] ? j = B.pop() : q = "", | |
null == j && (j = e), | |
i.relative[q](m, j, P) | |
} else m = []; | |
m || (m = g); | |
m || h.error(q || c); | |
if ("[object Array]" === l.call(m)) if (D) if (e && | |
1 === e.nodeType) for (c = 0; null != m[c]; c++) m[c] && (!0 === m[c] || 1 === m[c].nodeType && h.contains(e, m[c])) && f.push(g[c]); | |
else for (c = 0; null != m[c]; c++) m[c] && 1 === m[c].nodeType && f.push(g[c]); | |
else f.push.apply(f, m); | |
else C(m, f); | |
x && (h(x, d, f, b), h.uniqueSort(f)); | |
return f | |
}; | |
h.uniqueSort = function(c) { | |
if (V && (g = m, c.sort(V), g)) for (var e = 1; e < c.length; e++) c[e] === c[e - 1] && c.splice(e--, 1); | |
return c | |
}; | |
h.matches = function(c, e) { | |
return h(c, null, null, e) | |
}; | |
h.matchesSelector = function(c, e) { | |
return 0 < h(e, null, null, [c]).length | |
}; | |
h.find = function(c, | |
e, f) { | |
var a, | |
b, | |
d, | |
k, | |
j, | |
l; | |
if (!c) return []; | |
for (b = 0, d = i.order.length; b < d; b++) if (j = i.order[b], k = i.leftMatch[j].exec(c)) if (l = k[1], k.splice(1, 1), "\\" !== l.substr(l.length - 1) && (k[1] = (k[1] || "").replace(q, ""), a = i.find[j](k, e, f), null != a)) { | |
c = c.replace(i.match[j], ""); | |
break | |
} | |
a || (a = "undefined" !== typeof e.getElementsByTagName ? e.getElementsByTagName("*") : []); | |
return { | |
set: a, | |
expr: c | |
} | |
}; | |
h.filter = function(c, e, f, a) { | |
for (var b, k, j, l, g, m, x, q, D = c, B = [], P = e, R = e && e[0] && h.isXML(e[0]); c && e.length;) { | |
for (j in i.filter) if (null != (b = i.leftMatch[j].exec(c)) && | |
b[2]) if (m = i.filter[j], g = b[1], k = !1, b.splice(1, 1), "\\" !== g.substr(g.length - 1)) { | |
P === B && (B = []); | |
if (i.preFilter[j]) if (b = i.preFilter[j](b, P, f, B, a, R)) { | |
if (!0 === b) continue | |
} else k = l = !0; | |
if (b) for (x = 0; null != (g = P[x]); x++) g && (l = m(g, b, x, P), q = a ^ l, f && null != l ? q ? k = !0: P[x] = !1: q && (B.push(g), k = !0)); | |
if (l !== d) { | |
f || (P = B); | |
c = c.replace(i.match[j], ""); | |
if (!k) return []; | |
break | |
} | |
} | |
if (c === D) if (null == k) h.error(c); | |
else break; | |
D = c | |
} | |
return P | |
}; | |
h.error = function(c) { | |
throw Error("Syntax error, unrecognized expression: " + c); | |
}; | |
var B = h.getText = function(c) { | |
var e, | |
f; | |
e = c.nodeType; | |
var a = ""; | |
if (e) if (1 === e || 9 === e) { | |
if ("string" === typeof c.textContent) return c.textContent; | |
if ("string" === typeof c.innerText) return c.innerText.replace(D, ""); | |
for (c = c.firstChild; c; c = c.nextSibling) a += B(c) | |
} else { | |
if (3 === e || 4 === e) return c.nodeValue | |
} else for (e = 0; f = c[e]; e++) 8 !== f.nodeType && (a += B(f)); | |
return a | |
}, | |
i = h.selectors = { | |
order: ["ID", "NAME", "TAG"], | |
match: { | |
ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, | |
CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, | |
NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, | |
ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, | |
TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, | |
CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, | |
POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, | |
PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ | |
}, | |
leftMatch: {}, | |
attrMap: { | |
"class": "className", | |
"for": "htmlFor" | |
}, | |
attrHandle: { | |
href: function(c) { | |
return c.getAttribute("href") | |
}, | |
type: function(c) { | |
return c.getAttribute("type") | |
} | |
}, | |
relative: { | |
"+": function(c, e) { | |
var f = | |
"string" === typeof e, | |
a = f && !P.test(e), | |
f = f && !a; | |
a && (e = e.toLowerCase()); | |
for (var a = 0, b = c.length, d; a < b; a++) if (d = c[a]) { | |
for (; (d = d.previousSibling) && 1 !== d.nodeType;); | |
c[a] = f || d && d.nodeName.toLowerCase() === e ? d || !1: d === e | |
} | |
f && h.filter(e, c, !0) | |
}, | |
">": function(c, e) { | |
var f, | |
a = "string" === typeof e, | |
b = 0, | |
d = c.length; | |
if (a && !P.test(e)) for (e = e.toLowerCase(); b < d; b++) { | |
if (f = c[b]) f = f.parentNode, | |
c[b] = f.nodeName.toLowerCase() === e ? f: !1 | |
} else { | |
for (; b < d; b++)(f = c[b]) && (c[b] = a ? f.parentNode: f.parentNode === e); | |
a && h.filter(e, c, !0) | |
} | |
}, | |
"": function(f, | |
a, b) { | |
var d, | |
k = j++, | |
l = e; | |
"string" === typeof a && !P.test(a) && (d = a = a.toLowerCase(), l = c); | |
l("parentNode", a, k, f, d, b) | |
}, | |
"~": function(f, a, b) { | |
var d, | |
k = j++, | |
l = e; | |
"string" === typeof a && !P.test(a) && (d = a = a.toLowerCase(), l = c); | |
l("previousSibling", a, k, f, d, b) | |
} | |
}, | |
find: { | |
ID: function(c, e, f) { | |
if ("undefined" !== typeof e.getElementById && !f) return (c = e.getElementById(c[1])) && c.parentNode ? [c] : [] | |
}, | |
NAME: function(c, e) { | |
if ("undefined" !== typeof e.getElementsByName) { | |
for (var f = [], a = e.getElementsByName(c[1]), b = 0, d = a.length; b < d; b++) a[b].getAttribute("name") === | |
c[1] && f.push(a[b]); | |
return 0 === f.length ? null: f | |
} | |
}, | |
TAG: function(c, e) { | |
if ("undefined" !== typeof e.getElementsByTagName) return e.getElementsByTagName(c[1]) | |
} | |
}, | |
preFilter: { | |
CLASS: function(c, e, f, a, b, d) { | |
c = " " + c[1].replace(q, "") + " "; | |
if (d) return c; | |
for (var d = 0, k; null != (k = e[d]); d++) k && (b ^ (k.className && 0 <= (" " + k.className + " ").replace(/[\t\n\r]/g, " ").indexOf(c)) ? f || a.push(k) : f && (e[d] = !1)); | |
return ! 1 | |
}, | |
ID: function(c) { | |
return c[1].replace(q, "") | |
}, | |
TAG: function(c) { | |
return c[1].replace(q, "").toLowerCase() | |
}, | |
CHILD: function(c) { | |
if ("nth" === | |
c[1]) { | |
c[2] || h.error(c[0]); | |
c[2] = c[2].replace(/^\+|\s*/g, ""); | |
var e = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec("even" === c[2] && "2n" || "odd" === c[2] && "2n+1" || !/\D/.test(c[2]) && "0n+" + c[2] || c[2]); | |
c[2] = e[1] + (e[2] || 1) - 0; | |
c[3] = e[3] - 0 | |
} else c[2] && h.error(c[0]); | |
c[0] = j++; | |
return c | |
}, | |
ATTR: function(c, e, f, a, b, d) { | |
e = c[1] = c[1].replace(q, ""); ! d && i.attrMap[e] && (c[1] = i.attrMap[e]); | |
c[4] = (c[4] || c[5] || "").replace(q, ""); | |
"~=" === c[2] && (c[4] = " " + c[4] + " "); | |
return c | |
}, | |
PSEUDO: function(c, e, f, b, d) { | |
if ("not" === c[1]) if (1 < (a.exec(c[3]) || "").length || | |
/^\w/.test(c[3])) c[3] = h(c[3], null, null, e); | |
else return c = h.filter(c[3], e, f, 1 ^ d), | |
f || b.push.apply(b, c), | |
!1; | |
else if (i.match.POS.test(c[0]) || i.match.CHILD.test(c[0])) return ! 0; | |
return c | |
}, | |
POS: function(c) { | |
c.unshift(!0); | |
return c | |
} | |
}, | |
filters: { | |
enabled: function(c) { | |
return ! 1 === c.disabled && "hidden" !== c.type | |
}, | |
disabled: function(c) { | |
return ! 0 === c.disabled | |
}, | |
checked: function(c) { | |
return ! 0 === c.checked | |
}, | |
selected: function(c) { | |
return ! 0 === c.selected | |
}, | |
parent: function(c) { | |
return !! c.firstChild | |
}, | |
empty: function(c) { | |
return ! c.firstChild | |
}, | |
has: function(c, e, f) { | |
return !! h(f[3], c).length | |
}, | |
header: function(c) { | |
return /h\d/i.test(c.nodeName) | |
}, | |
text: function(c) { | |
var e = c.getAttribute("type"), | |
f = c.type; | |
return "input" === c.nodeName.toLowerCase() && "text" === f && (e === f || null === e) | |
}, | |
radio: function(c) { | |
return "input" === c.nodeName.toLowerCase() && "radio" === c.type | |
}, | |
checkbox: function(c) { | |
return "input" === c.nodeName.toLowerCase() && "checkbox" === c.type | |
}, | |
file: function(c) { | |
return "input" === c.nodeName.toLowerCase() && "file" === c.type | |
}, | |
password: function(c) { | |
return "input" === c.nodeName.toLowerCase() && | |
"password" === c.type | |
}, | |
submit: function(c) { | |
var e = c.nodeName.toLowerCase(); | |
return ("input" === e || "button" === e) && "submit" === c.type | |
}, | |
image: function(c) { | |
return "input" === c.nodeName.toLowerCase() && "image" === c.type | |
}, | |
reset: function(c) { | |
var e = c.nodeName.toLowerCase(); | |
return ("input" === e || "button" === e) && "reset" === c.type | |
}, | |
button: function(c) { | |
var e = c.nodeName.toLowerCase(); | |
return "input" === e && "button" === c.type || "button" === e | |
}, | |
input: function(c) { | |
return /input|select|textarea|button/i.test(c.nodeName) | |
}, | |
focus: function(c) { | |
return c === | |
c.ownerDocument.activeElement | |
} | |
}, | |
setFilters: { | |
first: function(c, e) { | |
return 0 === e | |
}, | |
last: function(c, e, f, a) { | |
return e === a.length - 1 | |
}, | |
even: function(c, e) { | |
return 0 === e % 2 | |
}, | |
odd: function(c, e) { | |
return 1 === e % 2 | |
}, | |
lt: function(c, e, f) { | |
return e < f[3] - 0 | |
}, | |
gt: function(c, e, f) { | |
return e > f[3] - 0 | |
}, | |
nth: function(c, e, f) { | |
return f[3] - 0 === e | |
}, | |
eq: function(c, e, f) { | |
return f[3] - 0 === e | |
} | |
}, | |
filter: { | |
PSEUDO: function(c, e, f, a) { | |
var b = e[1], | |
d = i.filters[b]; | |
if (d) return d(c, f, e, a); | |
if ("contains" === b) return 0 <= (c.textContent || c.innerText || B([c]) || "").indexOf(e[3]); | |
if ("not" === b) { | |
e = e[3]; | |
f = 0; | |
for (a = e.length; f < a; f++) if (e[f] === c) return ! 1; | |
return ! 0 | |
} | |
h.error(b) | |
}, | |
CHILD: function(c, e) { | |
var f, | |
a, | |
d, | |
k, | |
j, | |
l; | |
f = e[1]; | |
l = c; | |
switch (f) { | |
case "only": | |
case "first": | |
for (; l = l.previousSibling;) if (1 === l.nodeType) return ! 1; | |
if ("first" === f) return ! 0; | |
l = c; | |
case "last": | |
for (; l = l.nextSibling;) if (1 === l.nodeType) return ! 1; | |
return ! 0; | |
case "nth": | |
f = e[2]; | |
a = e[3]; | |
if (1 === f && 0 === a) return ! 0; | |
d = e[0]; | |
if ((k = c.parentNode) && (k[b] !== d || !c.nodeIndex)) { | |
j = 0; | |
for (l = k.firstChild; l; l = l.nextSibling) if (1 === l.nodeType) l.nodeIndex = ++j; | |
k[b] = d | |
} | |
l = c.nodeIndex - a; | |
return 0 === f ? 0 === l: 0 === l % f && 0 <= l / f | |
} | |
}, | |
ID: function(c, e) { | |
return 1 === c.nodeType && c.getAttribute("id") === e | |
}, | |
TAG: function(c, e) { | |
return "*" === e && 1 === c.nodeType || !!c.nodeName && c.nodeName.toLowerCase() === e | |
}, | |
CLASS: function(c, e) { | |
return - 1 < (" " + (c.className || c.getAttribute("class")) + " ").indexOf(e) | |
}, | |
ATTR: function(c, e) { | |
var f = e[1], | |
f = h.attr ? h.attr(c, f) : i.attrHandle[f] ? i.attrHandle[f](c) : null != c[f] ? c[f] : c.getAttribute(f), | |
a = f + "", | |
b = e[2], | |
d = e[4]; | |
return null == f ? "!=" === b: !b && h.attr ? null != f: "=" === b ? | |
a === d: "*=" === b ? 0 <= a.indexOf(d) : "~=" === b ? 0 <= (" " + a + " ").indexOf(d) : !d ? a && !1 !== f: "!=" === b ? a !== d: "^=" === b ? 0 === a.indexOf(d) : "$=" === b ? a.substr(a.length - d.length) === d: "|=" === b ? a === d || a.substr(0, d.length + 1) === d + "-": !1 | |
}, | |
POS: function(c, e, f, a) { | |
var b = i.setFilters[e[2]]; | |
if (b) return b(c, f, e, a) | |
} | |
} | |
}, | |
p = i.match.POS, | |
U = function(c, e) { | |
return "\\" + (e - 0 + 1) | |
}, | |
w; | |
for (w in i.match) i.match[w] = RegExp(i.match[w].source + /(?![^\[]*\])(?![^\(]*\))/.source), | |
i.leftMatch[w] = RegExp(/(^(?:.|\r|\n)*?)/.source + i.match[w].source.replace(/\\(\d+)/g, | |
U)); | |
var C = function(c, e) { | |
c = Array.prototype.slice.call(c, 0); | |
return e ? (e.push.apply(e, c), e) : c | |
}; | |
try { | |
Array.prototype.slice.call(A.documentElement.childNodes, 0) | |
} catch(o) { | |
C = function(c, e) { | |
var f = 0, | |
a = e || []; | |
if ("[object Array]" === l.call(c)) Array.prototype.push.apply(a, c); | |
else if ("number" === typeof c.length) for (var b = c.length; f < b; f++) a.push(c[f]); | |
else for (; c[f]; f++) a.push(c[f]); | |
return a | |
} | |
} | |
var V, | |
X; | |
A.documentElement.compareDocumentPosition ? V = function(c, e) { | |
return c === e ? (g = !0, 0) : !c.compareDocumentPosition || !e.compareDocumentPosition ? | |
c.compareDocumentPosition ? -1: 1: c.compareDocumentPosition(e) & 4 ? -1: 1 | |
}: (V = function(c, e) { | |
if (c === e) return g = !0, | |
0; | |
if (c.sourceIndex && e.sourceIndex) return c.sourceIndex - e.sourceIndex; | |
var f, | |
a, | |
b = [], | |
d = []; | |
f = c.parentNode; | |
a = e.parentNode; | |
var k = f; | |
if (f === a) return X(c, e); | |
if (f) { | |
if (!a) return 1 | |
} else return - 1; | |
for (; k;) b.unshift(k), | |
k = k.parentNode; | |
for (k = a; k;) d.unshift(k), | |
k = k.parentNode; | |
f = b.length; | |
a = d.length; | |
for (k = 0; k < f && k < a; k++) if (b[k] !== d[k]) return X(b[k], d[k]); | |
return k === f ? X(c, d[k], -1) : X(b[k], e, 1) | |
}, | |
X = function(c, e, f) { | |
if (c === | |
e) return f; | |
for (c = c.nextSibling; c;) { | |
if (c === e) return - 1; | |
c = c.nextSibling | |
} | |
return 1 | |
}); (function() { | |
var c = A.createElement("div"), | |
e = "script" + (new Date).getTime(), | |
f = A.documentElement; | |
c.innerHTML = "<a name='" + e + "'/>"; | |
f.insertBefore(c, f.firstChild); | |
if (A.getElementById(e)) i.find.ID = function(c, e, f) { | |
if ("undefined" !== typeof e.getElementById && !f) return (e = e.getElementById(c[1])) ? e.id === c[1] || "undefined" !== typeof e.getAttributeNode && e.getAttributeNode("id").nodeValue === c[1] ? [e] : d: [] | |
}, | |
i.filter.ID = function(c, e) { | |
var f = | |
"undefined" !== typeof c.getAttributeNode && c.getAttributeNode("id"); | |
return 1 === c.nodeType && f && f.nodeValue === e | |
}; | |
f.removeChild(c); | |
f = c = null | |
})(); (function() { | |
var c = A.createElement("div"); | |
c.appendChild(A.createComment("")); | |
if (0 < c.getElementsByTagName("*").length) i.find.TAG = function(c, e) { | |
var f = e.getElementsByTagName(c[1]); | |
if ("*" === c[1]) { | |
for (var a = [], b = 0; f[b]; b++) 1 === f[b].nodeType && a.push(f[b]); | |
f = a | |
} | |
return f | |
}; | |
c.innerHTML = "<a href='#'></a>"; | |
if (c.firstChild && "undefined" !== typeof c.firstChild.getAttribute && "#" !== | |
c.firstChild.getAttribute("href")) i.attrHandle.href = function(c) { | |
return c.getAttribute("href", 2) | |
}; | |
c = null | |
})(); | |
A.querySelectorAll && | |
function() { | |
var c = h, | |
e = A.createElement("div"); | |
e.innerHTML = "<p class='TEST'></p>"; | |
if (! (e.querySelectorAll && 0 === e.querySelectorAll(".TEST").length)) { | |
h = function(e, f, a, b) { | |
f = f || A; | |
if (!b && !h.isXML(f)) { | |
var d = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(e); | |
if (d && (1 === f.nodeType || 9 === f.nodeType)) { | |
if (d[1]) return C(f.getElementsByTagName(e), a); | |
if (d[2] && i.find.CLASS && f.getElementsByClassName) return C(f.getElementsByClassName(d[2]), | |
a) | |
} | |
if (9 === f.nodeType) { | |
if ("body" === e && f.body) return C([f.body], a); | |
if (d && d[3]) { | |
var k = f.getElementById(d[3]); | |
if (k && k.parentNode) { | |
if (k.id === d[3]) return C([k], a) | |
} else return C([], a) | |
} | |
try { | |
return C(f.querySelectorAll(e), a) | |
} catch(j) {} | |
} else if (1 === f.nodeType && "object" !== f.nodeName.toLowerCase()) { | |
var d = f, | |
l = (k = f.getAttribute("id")) || "__sizzle__", | |
g = f.parentNode, | |
m = /^\s*[+~]/.test(e); | |
k ? l = l.replace(/'/g, "\\$&") : f.setAttribute("id", l); | |
if (m && g) f = f.parentNode; | |
try { | |
if (!m || g) return C(f.querySelectorAll("[id='" + l + "'] " + | |
e), a) | |
} catch(x) {} finally { | |
k || d.removeAttribute("id") | |
} | |
} | |
} | |
return c(e, f, a, b) | |
}; | |
for (var f in c) h[f] = c[f]; | |
e = null | |
} | |
} (); (function() { | |
var c = A.documentElement, | |
e = c.matchesSelector || c.mozMatchesSelector || c.webkitMatchesSelector || c.msMatchesSelector; | |
if (e) { | |
var f = !e.call(A.createElement("div"), "div"), | |
a = !1; | |
try { | |
e.call(A.documentElement, "[test!='']:sizzle") | |
} catch(b) { | |
a = !0 | |
} | |
h.matchesSelector = function(c, b) { | |
b = b.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); | |
if (!h.isXML(c)) try { | |
if (a || !i.match.PSEUDO.test(b) && !/!=/.test(b)) { | |
var d = e.call(c, | |
b); | |
if (d || !f || c.document && 11 !== c.document.nodeType) return d | |
} | |
} catch(k) {} | |
return 0 < h(b, null, null, [c]).length | |
} | |
} | |
})(); (function() { | |
var c = A.createElement("div"); | |
c.innerHTML = "<div class='test e'></div><div class='test'></div>"; | |
if (c.getElementsByClassName && 0 !== c.getElementsByClassName("e").length && (c.lastChild.className = "e", 1 !== c.getElementsByClassName("e").length)) i.order.splice(1, 0, "CLASS"), | |
i.find.CLASS = function(c, e, f) { | |
if ("undefined" !== typeof e.getElementsByClassName && !f) return e.getElementsByClassName(c[1]) | |
}, | |
c = null | |
})(); | |
h.contains = A.documentElement.contains ? | |
function(c, e) { | |
return c !== e && (c.contains ? c.contains(e) : !0) | |
}: A.documentElement.compareDocumentPosition ? | |
function(c, e) { | |
return !! (c.compareDocumentPosition(e) & 16) | |
}: function() { | |
return ! 1 | |
}; | |
h.isXML = function(c) { | |
return (c = (c ? c.ownerDocument || c: 0).documentElement) ? "HTML" !== c.nodeName: !1 | |
}; | |
var W = function(c, e, f) { | |
for (var a, b = [], d = "", e = e.nodeType ? [e] : e; a = i.match.PSEUDO.exec(c);) d += a[0], | |
c = c.replace(i.match.PSEUDO, ""); | |
c = i.relative[c] ? c + "*": c; | |
a = 0; | |
for (var k = e.length; a < k; a++) h(c, | |
e[a], b, f); | |
return h.filter(d, b) | |
}; | |
h.attr = f.attr; | |
h.selectors.attrMap = {}; | |
f.find = h; | |
f.expr = h.selectors; | |
f.expr[":"] = f.expr.filters; | |
f.unique = h.uniqueSort; | |
f.text = h.getText; | |
f.isXMLDoc = h.isXML; | |
f.contains = h.contains | |
})(); | |
var qb = /Until$/, | |
rb = /^(?:parents|prevUntil|prevAll)/, | |
Ea = /,/, | |
Aa = /^.[^:#\[\.,]*$/, | |
sb = Array.prototype.slice, | |
wa = f.expr.match.POS, | |
tb = { | |
children: !0, | |
contents: !0, | |
next: !0, | |
prev: !0 | |
}; | |
f.fn.extend({ | |
find: function(c) { | |
var e = this, | |
a, | |
b; | |
if ("string" !== typeof c) return f(c).filter(function() { | |
for (a = 0, b = e.length; a < b; a++) if (f.contains(e[a], | |
this)) return ! 0 | |
}); | |
var d = this.pushStack("", "find", c), | |
j, | |
l, | |
g; | |
for (a = 0, b = this.length; a < b; a++) if (j = d.length, f.find(c, this[a], d), 0 < a) for (l = j; l < d.length; l++) for (g = 0; g < j; g++) if (d[g] === d[l]) { | |
d.splice(l--, 1); | |
break | |
} | |
return d | |
}, | |
has: function(c) { | |
var e = f(c); | |
return this.filter(function() { | |
for (var c = 0, a = e.length; c < a; c++) if (f.contains(this, e[c])) return ! 0 | |
}) | |
}, | |
not: function(c) { | |
return this.pushStack(o(this, c, !1), "not", c) | |
}, | |
filter: function(c) { | |
return this.pushStack(o(this, c, !0), "filter", c) | |
}, | |
is: function(c) { | |
return !! c && ("string" === | |
typeof c ? wa.test(c) ? 0 <= f(c, this.context).index(this[0]) : 0 < f.filter(c, this).length: 0 < this.filter(c).length) | |
}, | |
closest: function(c, e) { | |
var a = [], | |
b, | |
d, | |
j = this[0]; | |
if (f.isArray(c)) { | |
for (d = 1; j && j.ownerDocument && j !== e;) { | |
for (b = 0; b < c.length; b++) f(j).is(c[b]) && a.push({ | |
selector: c[b], | |
elem: j, | |
level: d | |
}); | |
j = j.parentNode; | |
d++ | |
} | |
return a | |
} | |
var l = wa.test(c) || "string" !== typeof c ? f(c, e || this.context) : 0; | |
for (b = 0, d = this.length; b < d; b++) for (j = this[b]; j;) if (l ? -1 < l.index(j) : f.find.matchesSelector(j, c)) { | |
a.push(j); | |
break | |
} else if (j = j.parentNode, | |
!j || !j.ownerDocument || j === e || 11 === j.nodeType) break; | |
a = 1 < a.length ? f.unique(a) : a; | |
return this.pushStack(a, "closest", c) | |
}, | |
index: function(c) { | |
return ! c ? this[0] && this[0].parentNode ? this.prevAll().length: -1: "string" === typeof c ? f.inArray(this[0], f(c)) : f.inArray(c.jquery ? c[0] : c, this) | |
}, | |
add: function(c, e) { | |
var a = "string" === typeof c ? f(c, e) : f.makeArray(c && c.nodeType ? [c] : c), | |
b = f.merge(this.get(), a); | |
return this.pushStack(!a[0] || !a[0].parentNode || 11 === a[0].parentNode.nodeType || !b[0] || !b[0].parentNode || 11 === b[0].parentNode.nodeType ? | |
b: f.unique(b)) | |
}, | |
andSelf: function() { | |
return this.add(this.prevObject) | |
} | |
}); | |
f.each({ | |
parent: function(c) { | |
return (c = c.parentNode) && 11 !== c.nodeType ? c: null | |
}, | |
parents: function(c) { | |
return f.dir(c, "parentNode") | |
}, | |
parentsUntil: function(c, e, a) { | |
return f.dir(c, "parentNode", a) | |
}, | |
next: function(c) { | |
return f.nth(c, 2, "nextSibling") | |
}, | |
prev: function(c) { | |
return f.nth(c, 2, "previousSibling") | |
}, | |
nextAll: function(c) { | |
return f.dir(c, "nextSibling") | |
}, | |
prevAll: function(c) { | |
return f.dir(c, "previousSibling") | |
}, | |
nextUntil: function(c, e, a) { | |
return f.dir(c, | |
"nextSibling", a) | |
}, | |
prevUntil: function(c, e, a) { | |
return f.dir(c, "previousSibling", a) | |
}, | |
siblings: function(c) { | |
return f.sibling(c.parentNode.firstChild, c) | |
}, | |
children: function(c) { | |
return f.sibling(c.firstChild) | |
}, | |
contents: function(c) { | |
return f.nodeName(c, "iframe") ? c.contentDocument || c.contentWindow.document: f.makeArray(c.childNodes) | |
} | |
}, | |
function(c, e) { | |
f.fn[c] = function(a, b) { | |
var d = f.map(this, e, a); | |
qb.test(c) || (b = a); | |
b && "string" === typeof b && (d = f.filter(b, d)); | |
d = 1 < this.length && !tb[c] ? f.unique(d) : d; | |
if ((1 < this.length || Ea.test(b)) && | |
rb.test(c)) d = d.reverse(); | |
return this.pushStack(d, c, sb.call(arguments).join(",")) | |
} | |
}); | |
f.extend({ | |
filter: function(c, e, a) { | |
a && (c = ":not(" + c + ")"); | |
return 1 === e.length ? f.find.matchesSelector(e[0], c) ? [e[0]] : [] : f.find.matches(c, e) | |
}, | |
dir: function(c, e, a) { | |
for (var b = [], c = c[e]; c && 9 !== c.nodeType && (a === d || 1 !== c.nodeType || !f(c).is(a));) 1 === c.nodeType && b.push(c), | |
c = c[e]; | |
return b | |
}, | |
nth: function(c, e, f) { | |
for (var e = e || 1, a = 0; c && !(1 === c.nodeType && ++a === e); c = c[f]); | |
return c | |
}, | |
sibling: function(c, e) { | |
for (var f = []; c; c = c.nextSibling) 1 === | |
c.nodeType && c !== e && f.push(c); | |
return f | |
} | |
}); | |
var Ia = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", | |
ub = / jQuery\d+="(?:\d+|null)"/g, | |
Fa = /^\s+/, | |
Pa = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, | |
Qa = /<([\w:]+)/, | |
vb = /<tbody/i, | |
wb = /<|&#?\w+;/, | |
xb = /<(?:script|style)/i, | |
yb = /<(?:script|object|embed|option|style)/i, | |
Ra = RegExp("<(?:" + Ia + ")", "i"), | |
Sa = /checked\s*(?:[^=]|=\s*.checked.)/i, | |
zb = /\/(java|ecma)script/i, | |
gb = /^\s*<!(?:\[CDATA\[|\-\-)/, | |
da = { | |
option: [1, "<select multiple='multiple'>", "</select>"], | |
legend: [1, "<fieldset>", "</fieldset>"], | |
thead: [1, "<table>", "</table>"], | |
tr: [2, "<table><tbody>", "</tbody></table>"], | |
td: [3, "<table><tbody><tr>", "</tr></tbody></table>"], | |
col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"], | |
area: [1, "<map>", "</map>"], | |
_default: [0, "", ""] | |
}, | |
Ta = r(A); | |
da.optgroup = da.option; | |
da.tbody = da.tfoot = da.colgroup = da.caption = da.thead; | |
da.th = da.td; | |
if (!f.support.htmlSerialize) da._default = [1, "div<div>", | |
"</div>"]; | |
f.fn.extend({ | |
text: function(c) { | |
return f.isFunction(c) ? this.each(function(e) { | |
var a = f(this); | |
a.text(c.call(this, e, a.text())) | |
}) : "object" !== typeof c && c !== d ? this.empty().append((this[0] && this[0].ownerDocument || A).createTextNode(c)) : f.text(this) | |
}, | |
wrapAll: function(c) { | |
if (f.isFunction(c)) return this.each(function(e) { | |
f(this).wrapAll(c.call(this, e)) | |
}); | |
if (this[0]) { | |
var e = f(c, this[0].ownerDocument).eq(0).clone(!0); | |
this[0].parentNode && e.insertBefore(this[0]); | |
e.map(function() { | |
for (var c = this; c.firstChild && | |
1 === c.firstChild.nodeType;) c = c.firstChild; | |
return c | |
}).append(this) | |
} | |
return this | |
}, | |
wrapInner: function(c) { | |
return f.isFunction(c) ? this.each(function(e) { | |
f(this).wrapInner(c.call(this, e)) | |
}) : this.each(function() { | |
var e = f(this), | |
a = e.contents(); | |
a.length ? a.wrapAll(c) : e.append(c) | |
}) | |
}, | |
wrap: function(c) { | |
var e = f.isFunction(c); | |
return this.each(function(a) { | |
f(this).wrapAll(e ? c.call(this, a) : c) | |
}) | |
}, | |
unwrap: function() { | |
return this.parent().each(function() { | |
f.nodeName(this, "body") || f(this).replaceWith(this.childNodes) | |
}).end() | |
}, | |
append: function() { | |
return this.domManip(arguments, !0, | |
function(c) { | |
1 === this.nodeType && this.appendChild(c) | |
}) | |
}, | |
prepend: function() { | |
return this.domManip(arguments, !0, | |
function(c) { | |
1 === this.nodeType && this.insertBefore(c, this.firstChild) | |
}) | |
}, | |
before: function() { | |
if (this[0] && this[0].parentNode) return this.domManip(arguments, !1, | |
function(c) { | |
this.parentNode.insertBefore(c, this) | |
}); | |
if (arguments.length) { | |
var c = f.clean(arguments); | |
c.push.apply(c, this.toArray()); | |
return this.pushStack(c, "before", arguments) | |
} | |
}, | |
after: function() { | |
if (this[0] && | |
this[0].parentNode) return this.domManip(arguments, !1, | |
function(c) { | |
this.parentNode.insertBefore(c, this.nextSibling) | |
}); | |
if (arguments.length) { | |
var c = this.pushStack(this, "after", arguments); | |
c.push.apply(c, f.clean(arguments)); | |
return c | |
} | |
}, | |
remove: function(c, e) { | |
for (var a = 0, b; null != (b = this[a]); a++) if (!c || f.filter(c, [b]).length) ! e && 1 === b.nodeType && (f.cleanData(b.getElementsByTagName("*")), f.cleanData([b])), | |
b.parentNode && b.parentNode.removeChild(b); | |
return this | |
}, | |
empty: function() { | |
for (var c = 0, e; null != (e = this[c]); c++) for (1 === | |
e.nodeType && f.cleanData(e.getElementsByTagName("*")); e.firstChild;) e.removeChild(e.firstChild); | |
return this | |
}, | |
clone: function(c, e) { | |
c = null == c ? !1: c; | |
e = null == e ? c: e; | |
return this.map(function() { | |
return f.clone(this, c, e) | |
}) | |
}, | |
html: function(c) { | |
if (c === d) return this[0] && 1 === this[0].nodeType ? this[0].innerHTML.replace(ub, "") : null; | |
if ("string" === typeof c && !xb.test(c) && (f.support.leadingWhitespace || !Fa.test(c)) && !da[(Qa.exec(c) || ["", ""])[1].toLowerCase()]) { | |
c = c.replace(Pa, "<$1></$2>"); | |
try { | |
for (var e = 0, a = this.length; e < a; e++) if (1 === | |
this[e].nodeType) f.cleanData(this[e].getElementsByTagName("*")), | |
this[e].innerHTML = c | |
} catch(b) { | |
this.empty().append(c) | |
} | |
} else f.isFunction(c) ? this.each(function(e) { | |
var a = f(this); | |
a.html(c.call(this, e, a.html())) | |
}) : this.empty().append(c); | |
return this | |
}, | |
replaceWith: function(c) { | |
if (this[0] && this[0].parentNode) { | |
if (f.isFunction(c)) return this.each(function(e) { | |
var a = f(this), | |
b = a.html(); | |
a.replaceWith(c.call(this, e, b)) | |
}); | |
"string" !== typeof c && (c = f(c).detach()); | |
return this.each(function() { | |
var e = this.nextSibling, | |
a = this.parentNode; | |
f(this).remove(); | |
e ? f(e).before(c) : f(a).append(c) | |
}) | |
} | |
return this.length ? this.pushStack(f(f.isFunction(c) ? c() : c), "replaceWith", c) : this | |
}, | |
detach: function(c) { | |
return this.remove(c, !0) | |
}, | |
domManip: function(c, e, a) { | |
var b, | |
j, | |
l, | |
g = c[0], | |
m = []; | |
if (!f.support.checkClone && 3 === arguments.length && "string" === typeof g && Sa.test(g)) return this.each(function() { | |
f(this).domManip(c, e, a, !0) | |
}); | |
if (f.isFunction(g)) return this.each(function(b) { | |
var j = f(this); | |
c[0] = g.call(this, b, e ? j.html() : d); | |
j.domManip(c, e, a) | |
}); | |
if (this[0]) { | |
b = g && g.parentNode; | |
b = f.support.parentNode && b && 11 === b.nodeType && b.childNodes.length === this.length ? { | |
fragment: b | |
}: f.buildFragment(c, this, m); | |
l = b.fragment; | |
if (j = 1 === l.childNodes.length ? l = l.firstChild: l.firstChild) { | |
e = e && f.nodeName(j, "tr"); | |
j = 0; | |
for (var q = this.length, h = q - 1; j < q; j++) a.call(e ? f.nodeName(this[j], "table") ? this[j].getElementsByTagName("tbody")[0] || this[j].appendChild(this[j].ownerDocument.createElement("tbody")) : this[j] : this[j], b.cacheable || 1 < q && j < h ? f.clone(l, !0, !0) : l) | |
} | |
m.length && f.each(m, z) | |
} | |
return this | |
} | |
}); | |
f.buildFragment = | |
function(c, e, a) { | |
var b, | |
d, | |
j, | |
l, | |
g = c[0]; | |
e && e[0] && (l = e[0].ownerDocument || e[0]); | |
l.createDocumentFragment || (l = A); | |
if (1 === c.length && "string" === typeof g && 512 > g.length && l === A && "<" === g.charAt(0) && !yb.test(g) && (f.support.checkClone || !Sa.test(g)) && (f.support.html5Clone || !Ra.test(g))) d = !0, | |
(j = f.fragments[g]) && 1 !== j && (b = j); | |
b || (b = l.createDocumentFragment(), f.clean(c, l, b, a)); | |
d && (f.fragments[g] = j ? b: 1); | |
return { | |
fragment: b, | |
cacheable: d | |
} | |
}; | |
f.fragments = {}; | |
f.each({ | |
appendTo: "append", | |
prependTo: "prepend", | |
insertBefore: "before", | |
insertAfter: "after", | |
replaceAll: "replaceWith" | |
}, | |
function(c, e) { | |
f.fn[c] = function(a) { | |
var b = [], | |
a = f(a), | |
d = 1 === this.length && this[0].parentNode; | |
if (d && 11 === d.nodeType && 1 === d.childNodes.length && 1 === a.length) return a[e](this[0]), | |
this; | |
for (var d = 0, j = a.length; d < j; d++) { | |
var l = (0 < d ? this.clone(!0) : this).get(); | |
f(a[d])[e](l); | |
b = b.concat(l) | |
} | |
return this.pushStack(b, c, a.selector) | |
} | |
}); | |
f.extend({ | |
clone: function(c, e, a) { | |
var b, | |
d, | |
j; | |
f.support.html5Clone || !Ra.test("<" + c.nodeName) ? b = c.cloneNode(!0) : (b = A.createElement("div"), Ta.appendChild(b), b.innerHTML = | |
c.outerHTML, b = b.firstChild); | |
var l = b; | |
if ((!f.support.noCloneEvent || !f.support.noCloneChecked) && (1 === c.nodeType || 11 === c.nodeType) && !f.isXMLDoc(c)) { | |
t(c, l); | |
b = n(c); | |
d = n(l); | |
for (j = 0; b[j]; ++j) d[j] && t(b[j], d[j]) | |
} | |
if (e && (w(c, l), a)) { | |
b = n(c); | |
d = n(l); | |
for (j = 0; b[j]; ++j) w(b[j], d[j]) | |
} | |
return l | |
}, | |
clean: function(c, e, a, b) { | |
e = e || A; | |
"undefined" === typeof e.createElement && (e = e.ownerDocument || e[0] && e[0].ownerDocument || A); | |
for (var d = [], j, l = 0, g; null != (g = c[l]); l++) if ("number" === typeof g && (g += ""), g) { | |
if ("string" === typeof g) if (wb.test(g)) { | |
g = | |
g.replace(Pa, "<$1></$2>"); | |
j = (Qa.exec(g) || ["", ""])[1].toLowerCase(); | |
var m = da[j] || da._default, | |
q = m[0], | |
h = e.createElement("div"); | |
e === A ? Ta.appendChild(h) : r(e).appendChild(h); | |
for (h.innerHTML = m[1] + g + m[2]; q--;) h = h.lastChild; | |
if (!f.support.tbody) { | |
q = vb.test(g); | |
m = "table" === j && !q ? h.firstChild && h.firstChild.childNodes: "<table>" === m[1] && !q ? h.childNodes: []; | |
for (j = m.length - 1; 0 <= j; --j) f.nodeName(m[j], "tbody") && !m[j].childNodes.length && m[j].parentNode.removeChild(m[j]) | |
} ! f.support.leadingWhitespace && Fa.test(g) && h.insertBefore(e.createTextNode(Fa.exec(g)[0]), | |
h.firstChild); | |
g = h.childNodes | |
} else g = e.createTextNode(g); | |
var D; | |
if (!f.support.appendChecked) if (g[0] && "number" === typeof(D = g.length)) for (j = 0; j < D; j++) s(g[j]); | |
else s(g); | |
g.nodeType ? d.push(g) : d = f.merge(d, g) | |
} | |
if (a) { | |
c = function(c) { | |
return ! c.type || zb.test(c.type) | |
}; | |
for (l = 0; d[l]; l++) b && f.nodeName(d[l], "script") && (!d[l].type || "text/javascript" === d[l].type.toLowerCase()) ? b.push(d[l].parentNode ? d[l].parentNode.removeChild(d[l]) : d[l]) : (1 === d[l].nodeType && (e = f.grep(d[l].getElementsByTagName("script"), c), d.splice.apply(d, | |
[l + 1, 0].concat(e))), a.appendChild(d[l])) | |
} | |
return d | |
}, | |
cleanData: function(c) { | |
for (var e, a, b = f.cache, d = f.event.special, j = f.support.deleteExpando, l = 0, g; null != (g = c[l]); l++) if (!g.nodeName || !f.noData[g.nodeName.toLowerCase()]) if (a = g[f.expando]) { | |
if ((e = b[a]) && e.events) { | |
for (var m in e.events) e.events.hasOwnProperty(m) && (d[m] ? f.event.remove(g, m) : f.removeEvent(g, m, e.handle)); | |
if (e.handle) e.handle.elem = null | |
} | |
j ? delete g[f.expando] : g.removeAttribute && g.removeAttribute(f.expando); | |
delete b[a] | |
} | |
} | |
}); | |
var Ga = /alpha\([^)]*\)/i, | |
Ab = /opacity=([^)]*)/, | |
Bb = /([A-Z]|^ms)/g, | |
Ua = /^-?\d+(?:px)?$/i, | |
Cb = /^-?\d/, | |
Db = /^([\-+])=([\-+.\de]+)/, | |
Eb = { | |
position: "absolute", | |
visibility: "hidden", | |
display: "block" | |
}, | |
hb = ["Left", "Right"], | |
ib = ["Top", "Bottom"], | |
la, | |
Va, | |
Wa; | |
f.fn.css = function(c, e, a) { | |
if (2 === arguments.length && e === d) return this; | |
"object" === typeof c && 2 === arguments.length && (a = !!e); | |
return f.access(this, c, e, !0, | |
function(c, e, b) { | |
return b !== d ? f.style(c, e, b, { | |
notImportant: !a | |
}) : f.css(c, e) | |
}) | |
}; | |
f.extend({ | |
cssHooks: { | |
opacity: { | |
get: function(c, e) { | |
if (e) { | |
var a = la(c, "opacity", | |
"opacity"); | |
return "" === a ? "1": a | |
} | |
return c.style.opacity | |
} | |
} | |
}, | |
cssNumber: { | |
fillOpacity: !0, | |
fontWeight: !0, | |
lineHeight: !0, | |
opacity: !0, | |
orphans: !0, | |
widows: !0, | |
zIndex: !0, | |
zoom: !0 | |
}, | |
cssProps: { | |
"float": f.support.cssFloat ? "cssFloat": "styleFloat" | |
}, | |
style: function(c, e, a, b) { | |
if (c && !(3 === c.nodeType || 8 === c.nodeType || !c.style)) { | |
var j = e, | |
l, | |
g, | |
m = f.camelCase(e), | |
q = c.style, | |
h = f.cssHooks[m], | |
e = f.cssProps[m] || m; | |
if (a !== d) { | |
g = typeof a; | |
if ("string" === g && (l = Db.exec(a))) a = +(l[1] + 1) * +l[2] + parseFloat(f.css(c, e)), | |
g = "number"; | |
if (! (null == a || "number" === | |
g && isNaN(a))) if ("number" === g && !f.cssNumber[m] && (a += "px"), "number" === g && "opacity" === m && (a += ""), !h || !("set" in h) || (a = h.set(c, a)) !== d) try { | |
if (b && b.notImportant) q[e] = a; | |
else if (q.setProperty) q.setProperty(j, a, "important"); | |
else { | |
"display" === j && !a && (a = U(c.nodeName)); | |
var D = RegExp("((?:^|;)\\s*" + j + ")\\s*:\\s*.+?(?:\\s*!important)?(?:;|$)", "gi"); | |
q.cssText = D.test(q.cssText) ? q.cssText.replace(D, "$1: " + a + " !important;") : q.cssText + (";" + j + ": " + a + " !important;") | |
} | |
} catch(B) {} | |
} else return h && "get" in h && (l = h.get(c, !1, | |
b)) !== d ? l: q[e] | |
} | |
}, | |
css: function(c, e, a) { | |
var b, | |
j, | |
e = f.camelCase(e); | |
j = f.cssHooks[e]; | |
e = f.cssProps[e] || e; | |
"cssFloat" === e && (e = "float"); | |
if (j && "get" in j && (b = j.get(c, !0, a)) !== d) return b; | |
if (la) return la(c, e) | |
}, | |
swap: function(c, e, a) { | |
var f = {}, | |
b; | |
for (b in e) f[b] = c.style[b], | |
c.style[b] = e[b]; | |
a.call(c); | |
for (b in e) c.style[b] = f[b] | |
} | |
}); | |
f.curCSS = f.css; | |
f.each(["height", "width"], | |
function(c, e) { | |
f.cssHooks[e] = { | |
get: function(c, a, b) { | |
var d; | |
if (a) { | |
if (0 !== c.offsetWidth) return F(c, e, b); | |
f.swap(c, Eb, | |
function() { | |
d = F(c, e, b) | |
}); | |
return d | |
} | |
}, | |
set: function(c, | |
e) { | |
if (Ua.test(e)) { | |
if (e = parseFloat(e), 0 <= e) return e + "px" | |
} else return e | |
} | |
} | |
}); | |
if (!f.support.opacity) f.cssHooks.opacity = { | |
get: function(c, e) { | |
return Ab.test((e && c.currentStyle ? c.currentStyle.filter: c.style.filter) || "") ? parseFloat(RegExp.$1) / 100 + "": e ? "1": "" | |
}, | |
set: function(c, e) { | |
var a = c.style, | |
b = c.currentStyle, | |
d = f.isNumeric(e) ? "alpha(opacity=" + 100 * e + ")": "", | |
j = b && b.filter || a.filter || ""; | |
a.zoom = 1; | |
if (1 <= e && "" === f.trim(j.replace(Ga, "")) && (a.removeAttribute("filter"), b && !b.filter)) return; | |
f.style(c, "filter", Ga.test(j) ? | |
j.replace(Ga, d) : j + " " + d) | |
} | |
}; | |
f(function() { | |
if (!f.support.reliableMarginRight) f.cssHooks.marginRight = { | |
get: function(c, e) { | |
var a; | |
f.swap(c, { | |
display: "inline-block" | |
}, | |
function() { | |
a = e ? la(c, "margin-right", "marginRight") : c.style.marginRight | |
}); | |
return a | |
} | |
} | |
}); | |
A.defaultView && A.defaultView.getComputedStyle && (Va = function(c, e) { | |
if ("string" === typeof e) { | |
var a, | |
b, | |
d, | |
e = e.replace(Bb, "-$1").toLowerCase(); | |
if ((b = c.ownerDocument.defaultView) && (d = b.getComputedStyle(c, null))) a = d.getPropertyValue(e), | |
"" === a && !f.contains(c.ownerDocument.documentElement, | |
c) && (a = f.style(c, e)); | |
return a | |
} | |
}); | |
A.documentElement.currentStyle && (Wa = function(c, e) { | |
var a, | |
f, | |
b = c.currentStyle && c.currentStyle[e], | |
d = c.style; | |
if (null === b && d && (a = d[e])) b = a; | |
if (!Ua.test(b) && Cb.test(b)) { | |
a = d.left; | |
if (f = c.runtimeStyle && c.runtimeStyle.left) c.runtimeStyle.left = c.currentStyle.left; | |
d.left = "fontSize" === e ? "1em": b || 0; | |
b = d.pixelLeft + "px"; | |
d.left = a; | |
if (f) c.runtimeStyle.left = f | |
} | |
return "" === b ? "auto": b | |
}); | |
la = Va || Wa; | |
if (f.expr && f.expr.filters) f.expr.filters.hidden = function(c) { | |
var e = c.offsetHeight; | |
return 0 === c.offsetWidth && | |
0 === e || !f.support.reliableHiddenOffsets && "none" === (c.style && c.style.display || f.css(c, "display")) | |
}, | |
f.expr.filters.visible = function(c) { | |
return ! f.expr.filters.hidden(c) | |
}; | |
var Fb = /%20/g, | |
jb = /\[\]$/, | |
Xa = /\r?\n/g, | |
Gb = /#.*$/, | |
Hb = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, | |
Ib = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, | |
Jb = /^(?:GET|HEAD)$/, | |
Kb = /^\/\//, | |
Ya = /\?/, | |
Lb = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, | |
Mb = /^(?:select|textarea)/i, | |
Ja = /\s+/, | |
Nb = | |
/([?&])_=[^&]*/, | |
Za = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/, | |
$a = f.fn.load, | |
Ca = {}, | |
ab = {}, | |
ia, | |
ja, | |
bb = ["*/"] + ["*"]; | |
try { | |
ia = M.href | |
} catch(Tb) { | |
ia = A.createElement("a"), | |
ia.href = "", | |
ia = ia.href | |
} | |
ja = Za.exec(ia.toLowerCase()) || []; | |
f.fn.extend({ | |
load: function(c, e, a) { | |
if ("string" !== typeof c && $a) return $a.apply(this, arguments); | |
if (!this.length) return this; | |
var b = c.indexOf(" "); | |
if (0 <= b) var j = c.slice(b, c.length), | |
c = c.slice(0, b); | |
b = "GET"; | |
e && (f.isFunction(e) ? (a = e, e = d) : "object" === typeof e && (e = f.param(e, f.ajaxSettings.traditional), | |
b = "POST")); | |
var l = this; | |
f.ajax({ | |
url: c, | |
type: b, | |
dataType: "html", | |
data: e, | |
complete: function(c, e, b) { | |
b = c.responseText; | |
c.isResolved() && (c.done(function(c) { | |
b = c | |
}), l.html(j ? f("<div>").append(b.replace(Lb, "")).find(j) : b)); | |
a && l.each(a, [b, e, c]) | |
} | |
}); | |
return this | |
}, | |
serialize: function() { | |
return f.param(this.serializeArray()) | |
}, | |
serializeArray: function() { | |
return this.map(function() { | |
return this.elements ? f.makeArray(this.elements) : this | |
}).filter(function() { | |
return this.name && !this.disabled && (this.checked || Mb.test(this.nodeName) || | |
Ib.test(this.type)) | |
}).map(function(c, e) { | |
var a = f(this).val(); | |
return null == a ? null: f.isArray(a) ? f.map(a, | |
function(c) { | |
return { | |
name: e.name, | |
value: c.replace(Xa, "\r\n") | |
} | |
}) : { | |
name: e.name, | |
value: a.replace(Xa, "\r\n") | |
} | |
}).get() | |
} | |
}); | |
f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), | |
function(c, e) { | |
f.fn[e] = function(c) { | |
return this.on(e, c) | |
} | |
}); | |
f.each(["get", "post"], | |
function(c, e) { | |
f[e] = function(c, a, b, j) { | |
f.isFunction(a) && (j = j || b, b = a, a = d); | |
return f.ajax({ | |
type: e, | |
url: c, | |
data: a, | |
success: b, | |
dataType: j | |
}) | |
} | |
}); | |
f.extend({ | |
getScript: function(c, e) { | |
return f.get(c, d, e, "script") | |
}, | |
getJSON: function(c, e, a) { | |
return f.get(c, e, a, "json") | |
}, | |
ajaxSetup: function(c, e) { | |
e ? N(c, f.ajaxSettings) : (e = c, c = f.ajaxSettings); | |
N(c, e); | |
return c | |
}, | |
ajaxSettings: { | |
url: ia, | |
isLocal: /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/.test(ja[1]), | |
global: !0, | |
type: "GET", | |
contentType: "application/x-www-form-urlencoded", | |
processData: !0, | |
async: !0, | |
accepts: { | |
xml: "application/xml, text/xml", | |
html: "text/html", | |
text: "text/plain", | |
json: "application/json, text/javascript", | |
"*": bb | |
}, | |
contents: { | |
xml: /xml/, | |
html: /html/, | |
json: /json/ | |
}, | |
responseFields: { | |
xml: "responseXML", | |
text: "responseText" | |
}, | |
converters: { | |
"* text": a.String, | |
"text html": !0, | |
"text json": f.parseJSON, | |
"text xml": f.parseXML | |
}, | |
flatOptions: { | |
context: !0, | |
url: !0 | |
} | |
}, | |
ajaxPrefilter: C(Ca), | |
ajaxTransport: C(ab), | |
ajax: function(c, e) { | |
function a(c, e, k, D) { | |
if (2 !== w) { | |
w = 2; | |
U && clearTimeout(U); | |
p = d; | |
P = D || ""; | |
o.readyState = 0 < c ? 4: 0; | |
var B, | |
i, | |
C, | |
D = e; | |
if (k) { | |
var V = b, | |
X = o, | |
W = V.contents, | |
r = V.dataTypes, | |
t = V.responseFields, | |
G, | |
n, | |
H, | |
s; | |
for (n in t) n in k && (X[t[n]] = k[n]); | |
for (; | |
"*" === | |
r[0];) r.shift(), | |
G === d && (G = V.mimeType || X.getResponseHeader("content-type")); | |
if (G) for (n in W) if (W[n] && W[n].test(G)) { | |
r.unshift(n); | |
break | |
} | |
if (r[0] in k) H = r[0]; | |
else { | |
for (n in k) { | |
if (!r[0] || V.converters[n + " " + r[0]]) { | |
H = n; | |
break | |
} | |
s || (s = n) | |
} | |
H = H || s | |
} | |
H ? (H !== r[0] && r.unshift(H), k = k[H]) : k = void 0 | |
} else k = d; | |
if (200 <= c && 300 > c || 304 === c) { | |
if (b.ifModified) { | |
if (G = o.getResponseHeader("Last-Modified")) f.lastModified[h] = G; | |
if (G = o.getResponseHeader("Etag")) f.etag[h] = G | |
} | |
if (304 === c) D = "notmodified", | |
B = !0; | |
else try { | |
G = b; | |
G.dataFilter && (k = G.dataFilter(k, | |
G.dataType)); | |
var F = G.dataTypes; | |
n = {}; | |
var z, | |
N, | |
va = F.length, | |
L, | |
I = F[0], | |
v, | |
u, | |
Y, | |
ea, | |
E; | |
for (z = 1; z < va; z++) { | |
if (1 === z) for (N in G.converters)"string" === typeof N && (n[N.toLowerCase()] = G.converters[N]); | |
v = I; | |
I = F[z]; | |
if ("*" === I) I = v; | |
else if ("*" !== v && v !== I) { | |
u = v + " " + I; | |
Y = n[u] || n["* " + I]; | |
if (!Y) for (ea in E = d, n) if (L = ea.split(" "), L[0] === v || "*" === L[0]) if (E = n[L[1] + " " + I]) { | |
ea = n[ea]; ! 0 === ea ? Y = E: !0 === E && (Y = ea); | |
break | |
} ! Y && !E && f.error("No conversion from " + u.replace(" ", " to ")); ! 0 !== Y && (k = Y ? Y(k) : E(ea(k))) | |
} | |
} | |
i = k; | |
D = "success"; | |
B = !0 | |
} catch(qa) { | |
D = | |
"parsererror", | |
C = qa | |
} | |
} else if (C = D, !D || c) D = "error", | |
0 > c && (c = 0); | |
o.status = c; | |
o.statusText = "" + (e || D); | |
B ? g.resolveWith(j, [i, D, o]) : g.rejectWith(j, [o, D, C]); | |
o.statusCode(q); | |
q = d; | |
A && l.trigger("ajax" + (B ? "Success": "Error"), [o, b, B ? i: C]); | |
m.fireWith(j, [o, D]); | |
A && (l.trigger("ajaxComplete", [o, b]), --f.active || f.event.trigger("ajaxStop")) | |
} | |
} | |
"object" === typeof c && (e = c, c = d); | |
var e = e || {}, | |
b = f.ajaxSetup({}, | |
e), | |
j = b.context || b, | |
l = j !== b && (j.nodeType || j instanceof f) ? f(j) : f.event, | |
g = f.Deferred(), | |
m = f.Callbacks("once memory"), | |
q = b.statusCode || | |
{}, | |
h, | |
D = {}, | |
B = {}, | |
P, | |
i, | |
p, | |
U, | |
C, | |
w = 0, | |
A, | |
V, | |
o = { | |
readyState: 0, | |
setRequestHeader: function(c, e) { | |
if (!w) { | |
var a = c.toLowerCase(), | |
c = B[a] = B[a] || c; | |
D[c] = e | |
} | |
return this | |
}, | |
getAllResponseHeaders: function() { | |
return 2 === w ? P: null | |
}, | |
getResponseHeader: function(c) { | |
var e; | |
if (2 === w) { | |
if (!i) for (i = {}; e = Hb.exec(P);) i[e[1].toLowerCase()] = e[2]; | |
e = i[c.toLowerCase()] | |
} | |
return e === d ? null: e | |
}, | |
overrideMimeType: function(c) { | |
if (!w) b.mimeType = c; | |
return this | |
}, | |
abort: function(c) { | |
c = c || "abort"; | |
p && p.abort(c); | |
a(0, c); | |
return this | |
} | |
}; | |
g.promise(o); | |
o.success = o.done; | |
o.error = | |
o.fail; | |
o.complete = m.add; | |
o.statusCode = function(c) { | |
if (c) { | |
var e; | |
if (2 > w) for (e in c) q[e] = [q[e], c[e]]; | |
else e = c[o.status], | |
o.then(e, e) | |
} | |
return this | |
}; | |
b.url = ((c || b.url) + "").replace(Gb, "").replace(Kb, ja[1] + "//"); | |
b.dataTypes = f.trim(b.dataType || "*").toLowerCase().split(Ja); | |
if (null == b.crossDomain) C = Za.exec(b.url.toLowerCase()), | |
b.crossDomain = !(!C || !(C[1] != ja[1] || C[2] != ja[2] || (C[3] || ("http:" === C[1] ? 80: 443)) != (ja[3] || ("http:" === ja[1] ? 80: 443)))); | |
if (b.data && b.processData && "string" !== typeof b.data) b.data = f.param(b.data, | |
b.traditional); | |
G(Ca, b, e, o); | |
if (2 === w) return ! 1; | |
A = b.global; | |
b.type = b.type.toUpperCase(); | |
b.hasContent = !Jb.test(b.type); | |
A && 0 === f.active++&&f.event.trigger("ajaxStart"); | |
if (!b.hasContent && (b.data && (b.url += (Ya.test(b.url) ? "&": "?") + b.data, delete b.data), h = b.url, !1 === b.cache)) { | |
C = f.now(); | |
var X = b.url.replace(Nb, "$1_=" + C); | |
b.url = X + (X === b.url ? (Ya.test(b.url) ? "&": "?") + "_=" + C: "") | |
} (b.data && b.hasContent && !1 !== b.contentType || e.contentType) && o.setRequestHeader("Content-Type", b.contentType); | |
b.ifModified && (h = h || b.url, f.lastModified[h] && | |
o.setRequestHeader("If-Modified-Since", f.lastModified[h]), f.etag[h] && o.setRequestHeader("If-None-Match", f.etag[h])); | |
o.setRequestHeader("Accept", b.dataTypes[0] && b.accepts[b.dataTypes[0]] ? b.accepts[b.dataTypes[0]] + ("*" !== b.dataTypes[0] ? ", " + bb + "; q=0.01": "") : b.accepts["*"]); | |
for (V in b.headers) o.setRequestHeader(V, b.headers[V]); | |
if (b.beforeSend && (!1 === b.beforeSend.call(j, o, b) || 2 === w)) return o.abort(), | |
!1; | |
for (V in { | |
success: 1, | |
error: 1, | |
complete: 1 | |
}) o[V](b[V]); | |
if (p = G(ab, b, e, o)) { | |
o.readyState = 1; | |
A && l.trigger("ajaxSend", | |
[o, b]); | |
b.async && 0 < b.timeout && (U = setTimeout(function() { | |
o.abort("timeout") | |
}, | |
b.timeout)); | |
try { | |
w = 1, | |
p.send(D, a) | |
} catch(W) { | |
if (2 > w) a( - 1, W); | |
else throw W; | |
} | |
} else a( - 1, "No Transport"); | |
return o | |
}, | |
param: function(c, e) { | |
var a = [], | |
b = function(c, e) { | |
e = f.isFunction(e) ? e() : e; | |
a[a.length] = encodeURIComponent(c) + "=" + encodeURIComponent(e) | |
}; | |
if (e === d) e = f.ajaxSettings.traditional; | |
if (f.isArray(c) || c.jquery && !f.isPlainObject(c)) f.each(c, | |
function() { | |
b(this.name, this.value) | |
}); | |
else for (var j in c) L(j, c[j], e, b); | |
return a.join("&").replace(Fb, | |
"+") | |
} | |
}); | |
f.extend({ | |
active: 0, | |
lastModified: {}, | |
etag: {} | |
}); | |
var Ob = f.now(), | |
xa = /(\=)\?(&|$)|\?\?/i; | |
f.ajaxSetup({ | |
jsonp: "callback", | |
jsonpCallback: function() { | |
return f.expando + "_" + Ob++ | |
} | |
}); | |
f.ajaxPrefilter("json jsonp", | |
function(c, e, b) { | |
e = "application/x-www-form-urlencoded" === c.contentType && "string" === typeof c.data; | |
if ("jsonp" === c.dataTypes[0] || !1 !== c.jsonp && (xa.test(c.url) || e && xa.test(c.data))) { | |
var d, | |
j = c.jsonpCallback = f.isFunction(c.jsonpCallback) ? c.jsonpCallback() : c.jsonpCallback, | |
l = a[j], | |
g = c.url, | |
m = c.data, | |
q = "$1" + j + | |
"$2"; ! 1 !== c.jsonp && (g = g.replace(xa, q), c.url === g && (e && (m = m.replace(xa, q)), c.data === m && (g += (/\?/.test(g) ? "&": "?") + c.jsonp + "=" + j))); | |
c.url = g; | |
c.data = m; | |
a[j] = function(c) { | |
d = [c] | |
}; | |
b.always(function() { | |
a[j] = l; | |
if (d && f.isFunction(l)) a[j](d[0]) | |
}); | |
c.converters["script json"] = function() { | |
d || f.error(j + " was not called"); | |
return d[0] | |
}; | |
c.dataTypes[0] = "json"; | |
return "script" | |
} | |
}); | |
f.ajaxSetup({ | |
accepts: { | |
script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" | |
}, | |
contents: { | |
script: /javascript|ecmascript/ | |
}, | |
converters: { | |
"text script": function(c) { | |
f.globalEval(c); | |
return c | |
} | |
} | |
}); | |
f.ajaxPrefilter("script", | |
function(c) { | |
if (c.cache === d) c.cache = !1; | |
if (c.crossDomain) c.type = "GET", | |
c.global = !1 | |
}); | |
f.ajaxTransport("script", | |
function(c) { | |
if (c.crossDomain) { | |
var e, | |
a = A.head || A.getElementsByTagName("head")[0] || A.documentElement; | |
return { | |
send: function(f, b) { | |
e = A.createElement("script"); | |
e.async = "async"; | |
if (c.scriptCharset) e.charset = c.scriptCharset; | |
e.src = c.url; | |
e.onload = e.onreadystatechange = function(c, f) { | |
if (f || !e.readyState || /loaded|complete/.test(e.readyState)) e.onload = | |
e.onreadystatechange = null, | |
a && e.parentNode && a.removeChild(e), | |
e = d, | |
f || b(200, "success") | |
}; | |
a.insertBefore(e, a.firstChild) | |
}, | |
abort: function() { | |
if (e) e.onload(0, 1) | |
} | |
} | |
} | |
}); | |
var Ha = a.ActiveXObject ? | |
function() { | |
for (var c in pa) pa[c](0, 1) | |
}: !1, | |
Pb = 0, | |
pa; | |
f.ajaxSettings.xhr = a.ActiveXObject ? | |
function() { | |
var c; | |
if (! (c = !this.isLocal && v())) a: { | |
try { | |
c = new a.ActiveXObject("Microsoft.XMLHTTP"); | |
break a | |
} catch(e) {} | |
c = void 0 | |
} | |
return c | |
}: v; (function(c) { | |
f.extend(f.support, { | |
ajax: !!c, | |
cors: !!c && "withCredentials" in c | |
}) | |
})(f.ajaxSettings.xhr()); | |
f.support.ajax && | |
f.ajaxTransport(function(c) { | |
if (!c.crossDomain || f.support.cors) { | |
var e; | |
return { | |
send: function(b, j) { | |
var l = c.xhr(), | |
g, | |
m; | |
c.username ? l.open(c.type, c.url, c.async, c.username, c.password) : l.open(c.type, c.url, c.async); | |
if (c.xhrFields) for (m in c.xhrFields) l[m] = c.xhrFields[m]; | |
c.mimeType && l.overrideMimeType && l.overrideMimeType(c.mimeType); ! c.crossDomain && !b["X-Requested-With"] && (b["X-Requested-With"] = "XMLHttpRequest"); | |
try { | |
for (m in b) l.setRequestHeader(m, b[m]) | |
} catch(q) {} | |
l.send(c.hasContent && c.data || null); | |
e = function(a, | |
b) { | |
var m, | |
k, | |
q, | |
h, | |
D; | |
try { | |
if (e && (b || 4 === l.readyState)) { | |
e = d; | |
if (g) l.onreadystatechange = f.noop, | |
Ha && delete pa[g]; | |
if (b) 4 !== l.readyState && l.abort(); | |
else { | |
m = l.status; | |
q = l.getAllResponseHeaders(); | |
h = {}; | |
if ((D = l.responseXML) && D.documentElement) h.xml = D; | |
h.text = l.responseText; | |
try { | |
k = l.statusText | |
} catch(B) { | |
k = "" | |
} ! m && c.isLocal && !c.crossDomain ? m = h.text ? 200: 404: 1223 === m && (m = 204) | |
} | |
} | |
} catch(i) { | |
b || j( - 1, i) | |
} | |
h && j(m, k, h, q) | |
}; ! c.async || 4 === l.readyState ? e() : (g = ++Pb, Ha && (pa || (pa = {}, | |
f(a).unload(Ha)), pa[g] = e), l.onreadystatechange = e) | |
}, | |
abort: function() { | |
e && | |
e(0, 1) | |
} | |
} | |
} | |
}); | |
var Da = {}, | |
fa, | |
ma, | |
Qb = /^(?:toggle|show|hide)$/, | |
Rb = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i, | |
ya, | |
Ka = [["height", "marginTop", "marginBottom", "paddingTop", "paddingBottom"], ["width", "marginLeft", "marginRight", "paddingLeft", "paddingRight"], ["opacity"]], | |
sa; | |
f.fn.extend({ | |
show: function(c, e, a) { | |
if (c || 0 === c) return this.animate(m("show", 3), c, e, a); | |
for (var a = 0, b = this.length; a < b; a++) c = this[a], | |
c.style && (e = f.css(c, "display"), !f._data(c, "olddisplay") && "none" === e && (f.style(c, "display", ""), e = ""), "" === e && "none" === f.css(c, | |
"display") && f._data(c, "olddisplay", U(c.nodeName))); | |
for (a = 0; a < b; a++) if (c = this[a], c.style && (e = f.css(c, "display"), "" === e || "none" === e)) f.style(c, "display", f._data(c, "olddisplay") || ""); | |
return this | |
}, | |
hide: function(c, e, a) { | |
if (c || 0 === c) return this.animate(m("hide", 3), c, e, a); | |
for (var a = 0, b = this.length; a < b; a++) c = this[a], | |
c.style && (e = f.css(c, "display"), "none" !== e && !f._data(c, "olddisplay") && f._data(c, "olddisplay", e)); | |
for (a = 0; a < b; a++) this[a].style && f.style(this[a], "display", "none"); | |
return this | |
}, | |
_toggle: f.fn.toggle, | |
toggle: function(c, e, a) { | |
var b = "boolean" === typeof c; | |
f.isFunction(c) && f.isFunction(e) ? this._toggle.apply(this, arguments) : null == c || b ? this.each(function() { | |
var e = b ? c: f(this).is(":hidden"); | |
f(this)[e ? "show": "hide"]() | |
}) : this.animate(m("toggle", 3), c, e, a); | |
return this | |
}, | |
fadeTo: function(c, e, a, f) { | |
return this.filter(":hidden").css("opacity", 0).show().end().animate({ | |
opacity: e | |
}, | |
c, a, f) | |
}, | |
animate: function(c, e, a, b) { | |
function d() { | |
var x; ! 1 === j.queue && f._mark(this); | |
var e = f.extend({}, | |
j), | |
a = 1 === this.nodeType, | |
b = a && f(this).is(":hidden"), | |
l, | |
g, | |
m, | |
k, | |
q; | |
e.animatedProperties = {}; | |
for (m in c) { | |
l = f.camelCase(m); | |
m !== l && (c[l] = c[m], delete c[m]); | |
g = c[l]; | |
f.isArray(g) ? (e.animatedProperties[l] = g[1], x = c[l] = g[0], g = x) : e.animatedProperties[l] = e.specialEasing && e.specialEasing[l] || e.easing || "swing"; | |
if ("hide" === g && b || "show" === g && !b) return e.complete.call(this); | |
if (a && ("height" === l || "width" === l)) e.overflow = [this.style.overflow, this.style.overflowX, this.style.overflowY], | |
"inline" === f.css(this, "display") && "none" === f.css(this, "float") && (!f.support.inlineBlockNeedsLayout || | |
"inline" === U(this.nodeName) ? f.style(this, "display", "inline-block") : f.style(this, "zoom", 1)) | |
} | |
null != e.overflow && f.style(this, "overflow", "hidden"); | |
for (m in c) if (a = new f.fx(this, e, m), g = c[m], Qb.test(g)) if (l = f._data(this, "toggle" + m) || ("toggle" === g ? b ? "show": "hide": 0)) f._data(this, "toggle" + m, "show" === l ? "hide": "show"), | |
a[l](); | |
else a[g](); | |
else l = Rb.exec(g), | |
k = a.cur(), | |
l ? (g = parseFloat(l[2]), q = l[3] || (f.cssNumber[m] ? "": "px"), "px" !== q && (f.style(this, m, (g || 1) + q), k *= (g || 1) / a.cur(), f.style(this, m, k + q)), l[1] && (g = ("-=" === | |
l[1] ? -1: 1) * g + k), a.custom(k, g, q)) : a.custom(k, g, ""); | |
return ! 0 | |
} | |
var j = f.speed(e, a, b); | |
if (f.isEmptyObject(c)) return this.each(j.complete, [!1]); | |
c = f.extend({}, | |
c); | |
return ! 1 === j.queue ? this.each(d) : this.queue(j.queue, d) | |
}, | |
stop: function(c, e, a) { | |
"string" !== typeof c && (a = e, e = c, c = d); | |
e && !1 !== c && this.queue(c || "fx", []); | |
return this.each(function() { | |
var e, | |
b = !1, | |
d = f.timers, | |
j = f._data(this); | |
a || f._unmark(!0, this); | |
if (null == c) for (e in j) { | |
if (j[e] && j[e].stop && e.indexOf(".run") === e.length - 4) { | |
var l = j[e]; | |
f.removeData(this, e, !0); | |
l.stop(a) | |
} | |
} else if (j[e = | |
c + ".run"] && j[e].stop) j = j[e], | |
f.removeData(this, e, !0), | |
j.stop(a); | |
for (e = d.length; e--;) if (d[e].elem === this && (null == c || d[e].queue === c)) { | |
if (a) d[e](!0); | |
else d[e].saveState(); | |
b = !0; | |
d.splice(e, 1) | |
} (!a || !b) && f.dequeue(this, c) | |
}) | |
} | |
}); | |
f.each({ | |
slideDown: m("show", 1), | |
slideUp: m("hide", 1), | |
slideToggle: m("toggle", 1), | |
fadeIn: { | |
opacity: "show" | |
}, | |
fadeOut: { | |
opacity: "hide" | |
}, | |
fadeToggle: { | |
opacity: "toggle" | |
} | |
}, | |
function(c, e) { | |
f.fn[c] = function(c, a, f) { | |
return this.animate(e, c, a, f) | |
} | |
}); | |
f.extend({ | |
speed: function(c, e, a) { | |
var b = c && "object" === typeof c ? | |
f.extend({}, | |
c) : { | |
complete: a || !a && e || f.isFunction(c) && c, | |
duration: c, | |
easing: a && e || e && !f.isFunction(e) && e | |
}; | |
b.duration = f.fx.off ? 0: "number" === typeof b.duration ? b.duration: b.duration in f.fx.speeds ? f.fx.speeds[b.duration] : f.fx.speeds._default; | |
if (null == b.queue || !0 === b.queue) b.queue = "fx"; | |
b.old = b.complete; | |
b.complete = function(c) { | |
f.isFunction(b.old) && b.old.call(this); | |
b.queue ? f.dequeue(this, b.queue) : !1 !== c && f._unmark(this) | |
}; | |
return b | |
}, | |
easing: { | |
linear: function(c, e, a, f) { | |
return a + f * c | |
}, | |
swing: function(c, e, a, f) { | |
return ( - Math.cos(c * | |
Math.PI) / 2 + 0.5) * f + a | |
} | |
}, | |
timers: [], | |
fx: function(c, e, a) { | |
this.options = e; | |
this.elem = c; | |
this.prop = a; | |
e.orig = e.orig || {} | |
} | |
}); | |
f.fx.prototype = { | |
update: function() { | |
this.options.step && this.options.step.call(this.elem, this.now, this); (f.fx.step[this.prop] || f.fx.step._default)(this) | |
}, | |
cur: function() { | |
if (null != this.elem[this.prop] && (!this.elem.style || null == this.elem.style[this.prop])) return this.elem[this.prop]; | |
var c, | |
e = f.css(this.elem, this.prop); | |
return isNaN(c = parseFloat(e)) ? !e || "auto" === e ? 0: e: c | |
}, | |
custom: function(c, e, a) { | |
function b(c) { | |
return j.step(c) | |
} | |
var j = this, | |
l = f.fx; | |
this.startTime = sa || u(); | |
this.end = e; | |
this.now = this.start = c; | |
this.pos = this.state = 0; | |
this.unit = a || this.unit || (f.cssNumber[this.prop] ? "": "px"); | |
b.queue = this.options.queue; | |
b.elem = this.elem; | |
b.saveState = function() { | |
j.options.hide && f._data(j.elem, "fxshow" + j.prop) === d && f._data(j.elem, "fxshow" + j.prop, j.start) | |
}; | |
b() && f.timers.push(b) && !ya && (ya = setInterval(l.tick, l.interval)) | |
}, | |
show: function() { | |
var c = f._data(this.elem, "fxshow" + this.prop); | |
this.options.orig[this.prop] = c || f.style(this.elem, this.prop); | |
this.options.show = | |
!0; | |
c !== d ? this.custom(this.cur(), c) : this.custom("width" === this.prop || "height" === this.prop ? 1: 0, this.cur()); | |
f(this.elem).show() | |
}, | |
hide: function() { | |
this.options.orig[this.prop] = f._data(this.elem, "fxshow" + this.prop) || f.style(this.elem, this.prop); | |
this.options.hide = !0; | |
this.custom(this.cur(), 0) | |
}, | |
step: function(c) { | |
var e, | |
a = sa || u(), | |
b = !0, | |
d = this.elem, | |
j = this.options; | |
if (c || a >= j.duration + this.startTime) { | |
this.now = this.end; | |
this.pos = this.state = 1; | |
this.update(); | |
j.animatedProperties[this.prop] = !0; | |
for (e in j.animatedProperties) ! 0 !== | |
j.animatedProperties[e] && (b = !1); | |
if (b) { | |
null != j.overflow && !f.support.shrinkWrapBlocks && f.each(["", "X", "Y"], | |
function(c, e) { | |
f.style(d, "overflow" + e, j.overflow[c]) | |
}); | |
j.hide && f(d).hide(); | |
if (j.hide || j.show) for (e in j.animatedProperties) f.style(d, e, j.orig[e]), | |
f.removeData(d, "fxshow" + e, !0), | |
f.removeData(d, "toggle" + e, !0); | |
if (c = j.complete) j.complete = !1, | |
c.call(d) | |
} | |
return ! 1 | |
} | |
Infinity == j.duration ? this.now = a: (c = a - this.startTime, this.state = c / j.duration, this.pos = f.easing[j.animatedProperties[this.prop]](this.state, c, 0, | |
1, j.duration), this.now = this.start + (this.end - this.start) * this.pos); | |
this.update(); | |
return ! 0 | |
} | |
}; | |
f.extend(f.fx, { | |
tick: function() { | |
for (var c, e = f.timers, a = 0; a < e.length; a++) c = e[a], | |
!c() && e[a] === c && e.splice(a--, 1); | |
e.length || f.fx.stop() | |
}, | |
interval: 13, | |
stop: function() { | |
clearInterval(ya); | |
ya = null | |
}, | |
speeds: { | |
slow: 600, | |
fast: 200, | |
_default: 400 | |
}, | |
step: { | |
opacity: function(c) { | |
f.style(c.elem, "opacity", c.now) | |
}, | |
_default: function(c) { | |
c.elem.style && null != f.css(c.elem, c.prop) ? f.style(c.elem, c.prop, c.now + c.unit) : c.elem[c.prop] = c.now | |
} | |
} | |
}); | |
f.each(["width", "height"], | |
function(c, e) { | |
f.fx.step[e] = function(c) { | |
f.style(c.elem, e, Math.max(0, c.now) + c.unit) | |
} | |
}); | |
if (f.expr && f.expr.filters) f.expr.filters.animated = function(c) { | |
return f.grep(f.timers, | |
function(e) { | |
return c === e.elem | |
}).length | |
}; | |
var Sb = /^t(?:able|d|h)$/i, | |
cb = /^(?:body|html)$/i; | |
f.fn.offset = "getBoundingClientRect" in A.documentElement ? | |
function(c) { | |
var e = this[0], | |
a; | |
if (c) return this.each(function(e) { | |
f.offset.setOffset(this, c, e) | |
}); | |
if (!e || !e.ownerDocument) return null; | |
if (e === e.ownerDocument.body) return f.offset.bodyOffset(e); | |
try { | |
a = e.getBoundingClientRect() | |
} catch(b) {} | |
var d = e.ownerDocument, | |
j = d.documentElement; | |
if (!a || !f.contains(j, e)) return a ? { | |
top: a.top, | |
left: a.left | |
}: { | |
top: 0, | |
left: 0 | |
}; | |
e = d.body; | |
d = W(d); | |
return { | |
top: a.top + (d.pageYOffset || f.support.boxModel && j.scrollTop || e.scrollTop) - (j.clientTop || e.clientTop || 0), | |
left: a.left + (d.pageXOffset || f.support.boxModel && j.scrollLeft || e.scrollLeft) - (j.clientLeft || e.clientLeft || 0) | |
} | |
}: function(c) { | |
var e = this[0]; | |
if (c) return this.each(function(e) { | |
f.offset.setOffset(this, c, e) | |
}); | |
if (!e || !e.ownerDocument) return null; | |
if (e === e.ownerDocument.body) return f.offset.bodyOffset(e); | |
var a, | |
b = e.offsetParent, | |
d = e.ownerDocument, | |
j = d.documentElement, | |
l = d.body; | |
a = (d = d.defaultView) ? d.getComputedStyle(e, null) : e.currentStyle; | |
for (var g = e.offsetTop, m = e.offsetLeft; (e = e.parentNode) && e !== l && e !== j && !(f.support.fixedPosition && "fixed" === a.position);) { | |
a = d ? d.getComputedStyle(e, null) : e.currentStyle; | |
g -= e.scrollTop; | |
m -= e.scrollLeft; | |
if (e === b) { | |
g += e.offsetTop; | |
m += e.offsetLeft; | |
if (f.support.doesNotAddBorder && (!f.support.doesAddBorderForTableAndCells || | |
!Sb.test(e.nodeName))) g += parseFloat(a.borderTopWidth) || 0, | |
m += parseFloat(a.borderLeftWidth) || 0; | |
b = e.offsetParent | |
} | |
f.support.subtractsBorderForOverflowNotVisible && "visible" !== a.overflow && (g += parseFloat(a.borderTopWidth) || 0, m += parseFloat(a.borderLeftWidth) || 0) | |
} | |
if ("relative" === a.position || "static" === a.position) g += l.offsetTop, | |
m += l.offsetLeft; | |
f.support.fixedPosition && "fixed" === a.position && (g += Math.max(j.scrollTop, l.scrollTop), m += Math.max(j.scrollLeft, l.scrollLeft)); | |
return { | |
top: g, | |
left: m | |
} | |
}; | |
f.offset = { | |
bodyOffset: function(c) { | |
var e = | |
c.offsetTop, | |
a = c.offsetLeft; | |
f.support.doesNotIncludeMarginInBodyOffset && (e += parseFloat(f.css(c, "marginTop")) || 0, a += parseFloat(f.css(c, "marginLeft")) || 0); | |
return { | |
top: e, | |
left: a | |
} | |
}, | |
setOffset: function(c, e, a) { | |
var b = f.css(c, "position"); | |
if ("static" === b) c.style.position = "relative"; | |
var d = f(c), | |
j = d.offset(), | |
l = f.css(c, "top"), | |
g = f.css(c, "left"), | |
m = {}, | |
q = {}; ("absolute" === b || "fixed" === b) && -1 < f.inArray("auto", [l, g]) ? (q = d.position(), b = q.top, g = q.left) : (b = parseFloat(l) || 0, g = parseFloat(g) || 0); | |
f.isFunction(e) && (e = e.call(c, a, | |
j)); | |
if (null != e.top) m.top = e.top - j.top + b; | |
if (null != e.left) m.left = e.left - j.left + g; | |
"using" in e ? e.using.call(c, m) : d.css(m) | |
} | |
}; | |
f.fn.extend({ | |
position: function() { | |
if (!this[0]) return null; | |
var c = this[0], | |
e = this.offsetParent(), | |
a = this.offset(), | |
b = cb.test(e[0].nodeName) ? { | |
top: 0, | |
left: 0 | |
}: e.offset(); | |
a.top -= parseFloat(f.css(c, "marginTop")) || 0; | |
a.left -= parseFloat(f.css(c, "marginLeft")) || 0; | |
b.top += parseFloat(f.css(e[0], "borderTopWidth")) || 0; | |
b.left += parseFloat(f.css(e[0], "borderLeftWidth")) || 0; | |
return { | |
top: a.top - b.top, | |
left: a.left - | |
b.left | |
} | |
}, | |
offsetParent: function() { | |
return this.map(function() { | |
for (var c = this.offsetParent || A.body; c && !cb.test(c.nodeName) && "static" === f.css(c, "position");) c = c.offsetParent; | |
return c | |
}) | |
} | |
}); | |
f.each(["Left", "Top"], | |
function(c, a) { | |
var b = "scroll" + a; | |
f.fn[b] = function(a) { | |
var e, | |
j; | |
if (a === d) { | |
e = this[0]; | |
return ! e ? null: (j = W(e)) ? "pageXOffset" in j ? j[c ? "pageYOffset": "pageXOffset"] : f.support.boxModel && j.document.documentElement[b] || j.document.body[b] : e[b] | |
} | |
return this.each(function() { (j = W(this)) ? j.scrollTo(!c ? a: f(j).scrollLeft(), | |
c ? a: f(j).scrollTop()) : this[b] = a | |
}) | |
} | |
}); | |
f.each(["Height", "Width"], | |
function(c, a) { | |
var b = a.toLowerCase(); | |
f.fn["inner" + a] = function() { | |
var c = this[0]; | |
return c ? c.style ? parseFloat(f.css(c, b, "padding")) : this[b]() : null | |
}; | |
f.fn["outer" + a] = function(c) { | |
var a = this[0]; | |
return a ? a.style ? parseFloat(f.css(a, b, c ? "margin": "border")) : this[b]() : null | |
}; | |
f.fn[b] = function(c) { | |
var j = this[0]; | |
if (!j) return null == c ? null: this; | |
if (f.isFunction(c)) return this.each(function(a) { | |
var e = f(this); | |
e[b](c.call(this, a, e[b]())) | |
}); | |
if (f.isWindow(j)) { | |
var l = | |
j.document.documentElement["client" + a], | |
g = j.document.body; | |
return "CSS1Compat" === j.document.compatMode && l || g && g["client" + a] || l | |
} | |
if (9 === j.nodeType) return Math.max(j.documentElement["client" + a], j.body["scroll" + a], j.documentElement["scroll" + a], j.body["offset" + a], j.documentElement["offset" + a]); | |
return c === d ? (j = f.css(j, b), l = parseFloat(j), f.isNumeric(l) ? l: j) : this.css(b, "string" === typeof c ? c: c + "px", !0) | |
} | |
}); | |
a.jQuery = a.$ = f; | |
"function" === typeof define && define.amd && define.amd.jQuery && define("jquery", [], | |
function() { | |
return f | |
}) | |
})(d) | |
})(); | |
if (this.env.iHatePrototype.stupidFuckingPrototype) this.document.getElementsByClassName = this.env.iHatePrototype.getElementsByClassName; | |
var b = this.$ = a.$ = d.jQuery.noConflict(!0); | |
this.baseData = a.baseData = p(this.$); | |
this.bodyOffset = a.bodyOffset = S(this.$); (function() { | |
function a(b) { | |
var d = function(a, b) { | |
return a << b | a >>> 32 - b | |
}, | |
g = function(a) { | |
var b = "", | |
d, | |
j; | |
for (d = 7; 0 <= d; d--) j = a >>> 4 * d & 15, | |
b += j.toString(16); | |
return b | |
}, | |
q, | |
h, | |
i = Array(80), | |
p = 1732584193, | |
o = 4023233417, | |
n = 2562383102, | |
w = 271733878, | |
r = 3285377520, | |
t, | |
H, | |
s, | |
z, | |
N, | |
b = this.utf8_encode(b); | |
t = b.length; | |
var C = []; | |
for (q = 0; q < t - 3; q += 4) h = b.charCodeAt(q) << 24 | b.charCodeAt(q + 1) << 16 | b.charCodeAt(q + 2) << 8 | b.charCodeAt(q + 3), | |
C.push(h); | |
switch (t % 4) { | |
case 0: | |
q = 2147483648; | |
break; | |
case 1: | |
q = b.charCodeAt(t - 1) << 24 | 8388608; | |
break; | |
case 2: | |
q = b.charCodeAt(t - 2) << 24 | b.charCodeAt(t - 1) << 16 | 32768; | |
break; | |
case 3: | |
q = b.charCodeAt(t - 3) << 24 | b.charCodeAt(t - 2) << 16 | b.charCodeAt(t - 1) << 8 | 128 | |
} | |
for (C.push(q); 14 != C.length % 16;) C.push(0); | |
C.push(t >>> 29); | |
C.push(t << 3 & 4294967295); | |
for (b = 0; b < C.length; b += 16) { | |
for (q = 0; 16 > q; q++) i[q] = C[b + q]; | |
for (q = 16; 79 >= | |
q; q++) i[q] = d(i[q - 3] ^ i[q - 8] ^ i[q - 14] ^ i[q - 16], 1); | |
h = p; | |
t = o; | |
H = n; | |
s = w; | |
z = r; | |
for (q = 0; 19 >= q; q++) N = d(h, 5) + (t & H | ~t & s) + z + i[q] + 1518500249 & 4294967295, | |
z = s, | |
s = H, | |
H = d(t, 30), | |
t = h, | |
h = N; | |
for (q = 20; 39 >= q; q++) N = d(h, 5) + (t ^ H ^ s) + z + i[q] + 1859775393 & 4294967295, | |
z = s, | |
s = H, | |
H = d(t, 30), | |
t = h, | |
h = N; | |
for (q = 40; 59 >= q; q++) N = d(h, 5) + (t & H | t & s | H & s) + z + i[q] + 2400959708 & 4294967295, | |
z = s, | |
s = H, | |
H = d(t, 30), | |
t = h, | |
h = N; | |
for (q = 60; 79 >= q; q++) N = d(h, 5) + (t ^ H ^ s) + z + i[q] + 3395469782 & 4294967295, | |
z = s, | |
s = H, | |
H = d(t, 30), | |
t = h, | |
h = N; | |
p = p + h & 4294967295; | |
o = o + t & 4294967295; | |
n = n + H & 4294967295; | |
w = w + s & 4294967295; | |
r = r + z & 4294967295 | |
} | |
N = g(p) + g(o) + g(n) + g(w) + g(r); | |
return N.toLowerCase() | |
} (function(a) { | |
var b; | |
if (!a) b = d.CLIPBOARD = d.CLIPBOARD || {}, | |
a = b.common = b.common || {}; | |
a.pad = function(a, b, d) { | |
if (!a.length || !b) return a; | |
for (var d = d - a.length, j = "", g = 0; g < d; ++g) j += b; | |
return j + a | |
}; | |
a.guid = function(a) { | |
function b() { | |
return (65536 * (1 + Math.random()) | 0).toString(16).substring(1) | |
} | |
var d = b() + b() + "-" + b() + "-" + b() + "-" + b() + "-" + b() + b() + b(); | |
a && (d = d.replace(/-/g, "")); | |
return d | |
}; | |
a.randInt = function(a, b) { | |
return Math.floor(Math.random() * (b - a) + a) | |
}; | |
a.caseInsensitiveCompare = | |
function(a, b) { | |
var d = a.toLowerCase(), | |
j = b.toLowerCase(); | |
return d < j ? -1: d > j ? 1: 0 | |
}; | |
a.isValidUsername = function(b) { | |
return b && b.match(/^[A-Za-z]\w{1,19}$/) && !(b.toLowerCase() in a.loginBlacklist) | |
}; | |
a.isValidEmail = function(a) { | |
return ! a || 100 < a.length ? !1: a.match(/^[a-z0-9.\-_+%]+@[a-z0-9-_+%]+\.[a-z0-9.\-_+%]+$/i) | |
}; | |
a.loginBlacklist = { | |
about: 1, | |
account: 1, | |
activate: 1, | |
add: 1, | |
addons: 1, | |
admin: 1, | |
administrator: 1, | |
all: 1, | |
api: 1, | |
app: 1, | |
apps: 1, | |
archive: 1, | |
archives: 1, | |
avatar: 1, | |
avatarupload: 1, | |
auth: 1, | |
better: 1, | |
blob: 1, | |
blobloader: 1, | |
block: 1, | |
blog: 1, | |
cache: 1, | |
cancel: 1, | |
careers: 1, | |
cart: 1, | |
cat: 1, | |
cats: 1, | |
category: 1, | |
categories: 1, | |
changelog: 1, | |
checkout: 1, | |
chrome: 1, | |
chromeapp: 1, | |
chromeextversion: 1, | |
codereview: 1, | |
clip: 1, | |
clipper: 1, | |
clips: 1, | |
common: 1, | |
compare: 1, | |
config: 1, | |
configuration: 1, | |
connect: 1, | |
contact: 1, | |
create: 1, | |
css: 1, | |
"delete": 1, | |
direct_messages: 1, | |
documentation: 1, | |
download: 1, | |
downloads: 1, | |
edit: 1, | |
editor: 1, | |
email: 1, | |
emailverify: 1, | |
embed: 1, | |
employment: 1, | |
enterprise: 1, | |
error: 1, | |
extension: 1, | |
extensions: 1, | |
facebook: 1, | |
faq: 1, | |
favorites: 1, | |
feed: 1, | |
feedback: 1, | |
feeds: 1, | |
fleet: 1, | |
fleets: 1, | |
follow: 1, | |
followers: 1, | |
following: 1, | |
friend: 1, | |
friends: 1, | |
gist: 1, | |
group: 1, | |
groups: 1, | |
help: 1, | |
home: 1, | |
hosting: 1, | |
hostmaster: 1, | |
idea: 1, | |
ideas: 1, | |
index: 1, | |
info: 1, | |
invitations: 1, | |
invite: 1, | |
is: 1, | |
it: 1, | |
job: 1, | |
jobs: 1, | |
js: 1, | |
json: 1, | |
lib: 1, | |
lists: 1, | |
login: 1, | |
logout: 1, | |
logoutRedirect: 1, | |
log: 1, | |
logs: 1, | |
mail: 1, | |
manage: 1, | |
map: 1, | |
maps: 1, | |
mine: 1, | |
mis: 1, | |
news: 1, | |
notification: 1, | |
notifications: 1, | |
oauth: 1, | |
oauth_clients: 1, | |
offers: 1, | |
openid: 1, | |
order: 1, | |
orders: 1, | |
organizations: 1, | |
pass: 1, | |
people: 1, | |
plans: 1, | |
popular: 1, | |
post: 1, | |
privacy: 1, | |
profile: 1, | |
projects: 1, | |
put: 1, | |
recruitment: 1, | |
redeem: 1, | |
register: 1, | |
remove: 1, | |
replies: 1, | |
root: 1, | |
rss: 1, | |
sales: 1, | |
save: 1, | |
search: 1, | |
security: 1, | |
session: 1, | |
sessions: 1, | |
settings: 1, | |
shared: 1, | |
site: 1, | |
sites: 1, | |
shop: 1, | |
signup: 1, | |
sitemap: 1, | |
socialClipper: 1, | |
ssl: 1, | |
ssladmin: 1, | |
ssladministrator: 1, | |
sslwebmaster: 1, | |
start: 1, | |
"static": 1, | |
status: 1, | |
stories: 1, | |
styleguide: 1, | |
subscribe: 1, | |
subscriptions: 1, | |
support: 1, | |
sysadmin: 1, | |
sysadministrator: 1, | |
tag: 1, | |
tags: 1, | |
terms: 1, | |
token: 1, | |
tools: 1, | |
tour: 1, | |
translations: 1, | |
trends: 1, | |
twitter: 1, | |
twittr: 1, | |
unfollow: 1, | |
unsubscribe: 1, | |
update: 1, | |
url: 1, | |
user: 1, | |
users: 1, | |
utils: 1, | |
verifyemail: 1, | |
w3c: 1, | |
weather: 1, | |
welcome: 1, | |
widget: 1, | |
widgets: 1, | |
wiki: 1, | |
ww: 1, | |
www: 1, | |
wwww: 1, | |
xfn: 1, | |
xml: 1, | |
xmpp: 1, | |
yaml: 1, | |
yml: 1 | |
}; | |
a.merge = function(a, b, d) { | |
for (var j in b) if (b.hasOwnProperty(j) && (d || !a.hasOwnProperty(j))) a[j] = b[j]; | |
return a | |
}; | |
a.createAvatarUrl = function(a, b, d) { | |
return d ? a.cdnUser + d + "_" + b: a.staticBaseUrl + "/images/missing-avatar.jpg" | |
}; | |
a.getBestThumbnailPath = function(b, d, j, g, h) { | |
if ("help" === b.type) return a.getThumbnailPathForLevel(b, 8); | |
h = Math.max(g, h); | |
g = Math.ceil(a.logBase(h, 2)); | |
d = Math.max(d, j); | |
j = Math.ceil(a.logBase(d, | |
2)); | |
h /= Math.pow(2, g - j); | |
j = Math.max(8, j); | |
1.15 < d / h && (j = Math.min(j + 1, g)); | |
return a.getThumbnailPathForLevel(b, j) | |
}; | |
a.getThumbnailPathForLevel = function(a, b) { | |
return a.thumbnailId ? a.thumbnailId + "_" + b: a.blobId + "_" + b | |
}; | |
a.logBase = function(a, b) { | |
return Math.log(a) / Math.log(b) | |
}; | |
a.inviteTypes = { | |
Facebook: "Facebook", | |
Twitter: "Twitter", | |
Linkedin: "Linkedin", | |
Email: "Email" | |
}; | |
a.arrayRemove = function(a, b, d) { | |
d = a.slice((d || b) + 1 || a.length); | |
a.length = 0 > b ? a.length + b: b; | |
a.push.apply(a, d) | |
}; | |
a.arrayRemoveByVal = function(a) { | |
for (var b = 1; b < | |
arguments.length; ++b) for (var d; 0 <= (d = a.indexOf(arguments[b]));) a.splice(d, 1) | |
}; | |
a.arrayInsertIfUnique = function(a) { | |
for (var b = 1; b < arguments.length; ++b) 0 > a.indexOf(arguments[b]) && a.push(arguments[b]) | |
} | |
})("undefined" === typeof process || !process.versions ? null: exports); (function(a) { | |
var c; | |
if (!a) a = d.CLIPBOARD = d.CLIPBOARD || {}, | |
c = a.common = a.common || {}, | |
a = c; | |
a.crc32 = function() { | |
return function(a, b) { | |
var d = 0, | |
g = d = 0, | |
h = a.length; | |
void 0 === b && (b = 0); | |
for (b ^= -1; g < h; g++) d = (b ^ a.charCodeAt(g)) & 255, | |
d = "0x" + "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D".substr(9 * | |
d, 8), | |
b = b >>> 8 ^ d; | |
g = b ^ -1; | |
0 > g && (g = 4294967295 + g + 1); | |
g = g.toString(16).toLowerCase(); | |
for (h = 0; h < 8 - g.length; h++) g = "0" + g; | |
return g | |
} | |
} () | |
})("undefined" === typeof process || !process.versions ? null: exports); (function(a) { | |
if (!a) a = d.CLIPBOARD = d.CLIPBOARD || {}, | |
a.common = a.common || {}, | |
a = a.common.blobSanitization = {}; | |
var b = a.tagCloseType = { | |
normal: 1, | |
selfClosing: 2 | |
}; | |
a.unsafeTags = { | |
base: b.selfClosing, | |
basefont: b.selfClosing, | |
body: b.normal, | |
form: b.normal, | |
frame: b.normal, | |
frameset: b.normal, | |
head: b.normal, | |
html: b.normal, | |
isindex: b.normal, | |
link: b.selfClosing, | |
meta: b.selfClosing, | |
script: b.normal, | |
title: b.normal | |
}; | |
a.unsafeAttributes = { | |
"class": 1, | |
id: 1, | |
width: 1, | |
height: 1, | |
style: 1, | |
hidden: 1, | |
name: 1 | |
} | |
})("undefined" === typeof process || !process.versions ? null: exports); (function(b, d, g, h) { | |
function i() { | |
H || (USTORE.init(), H = !0) | |
} | |
function p() { | |
if (null != s) return s; | |
var a = CLIPBOARD.time, | |
b = (new Date).getTime(); | |
return s = parseInt(a) - b | |
} | |
function o(a) { | |
var b = []; | |
g.each(a, | |
function(a, d) { | |
b.push(encodeURIComponent(a) + "=" + encodeURIComponent(d)) | |
}); | |
return b.sort().join("&") | |
} | |
function t(a, b) { | |
var d = a.sign || | |
!1, | |
j = a.verb || null, | |
h = a.path || null, | |
q = a.cache || !1, | |
i = a.raw || null, | |
f = a.jsonp || !1, | |
B = a.jsonpCallbackName || null; | |
if (j && h && !(f && "GET" != j)) { | |
var o = "", | |
o = /^\/\//.test(h) ? h: r + h, | |
C = (new Date).getTime() + p(), | |
Q = function(a) { | |
b && b(a.error, a.result, a.requestBody) | |
}, | |
G = function(a) { | |
b && (500 <= a.status ? b({ | |
noConnection: !0, | |
statusCode: a.status | |
}, | |
null) : b({ | |
unknown: !0, | |
statusCode: a.status | |
}, | |
null)) | |
}, | |
z = "GET" === j; | |
n.log && n.log.net(h); | |
if (z) if (d && (d = w.guid(), h = w.secret(), i = w.signMessage(o, null, C, d, h), o = -1 === o.indexOf("?") ? o + ("?" + i.msg) : o + ("&" + | |
i.msg)), f) { | |
j = { | |
type: j, | |
dataType: "jsonp", | |
url: o, | |
cache: q, | |
async: !0, | |
success: Q, | |
error: G | |
}; | |
if (B) j.jsonp = !1, | |
j.jsonpCallback = B; | |
g.ajax(j) | |
} else g.ajax({ | |
type: j, | |
url: o, | |
cache: q, | |
async: !0, | |
success: Q, | |
error: G | |
}); | |
else { | |
B = i; | |
if (d) d = w.guid(), | |
h = w.secret(), | |
i = w.signMessage(o, i, C, d, h), | |
B = i.msg; | |
g.ajax({ | |
type: j, | |
url: o, | |
data: B, | |
cache: q, | |
async: !0, | |
success: Q, | |
error: G | |
}) | |
} | |
} | |
} | |
var n = b.CLIPBOARD = b.CLIPBOARD || {}, | |
w = n.data = n.data || {}, | |
b = b.location, | |
r = b.protocol + "//" + b.host; | |
n.tracker = n.tracker || {}; | |
var H = !1, | |
s = null; | |
w.signMessage = function(b, d, j, h, i) { | |
b = o(g.extend({ | |
hmac_url: encodeURIComponent(b), | |
hmac_time: encodeURIComponent(j), | |
hmac_guid: encodeURIComponent(h), | |
hmac_nonce: a(b + (new Date).getTime() + i) | |
}, | |
d)); | |
i = a(b + i); | |
return { | |
msg: b + "&hmac_sig=" + i, | |
sig: i | |
} | |
}; | |
var z = w.localSignPost = function(a, b, d) { | |
t({ | |
sign: !0, | |
verb: "POST", | |
path: a, | |
raw: b | |
}, | |
d) | |
}, | |
N = w.localPost = function(a, b, d) { | |
t({ | |
verb: "POST", | |
path: a, | |
raw: b | |
}, | |
d) | |
}, | |
F = w.localSignPut = function(a, b, d) { | |
t({ | |
sign: !0, | |
verb: "PUT", | |
path: a, | |
raw: b | |
}, | |
d) | |
}, | |
C = w.localSignGet = function(a, b) { | |
t({ | |
sign: !0, | |
verb: "GET", | |
path: a | |
}, | |
b) | |
}, | |
G = w.localGet = function(a, b, d) { | |
t({ | |
verb: "GET", | |
path: a, | |
cache: b | |
}, | |
d) | |
}, | |
L = w.localSignDelete = | |
function(a, b, d) { | |
t({ | |
sign: !0, | |
verb: "DELETE", | |
path: a, | |
raw: b | |
}, | |
d) | |
}, | |
v = function(a, b, d, j) { | |
t({ | |
verb: "GET", | |
path: a, | |
cache: b, | |
jsonp: !0, | |
jsonpCallbackName: d | |
}, | |
j) | |
}, | |
u = w.getData = function(a) { | |
i(); | |
a = USTORE.getValue(a); | |
return null == a || "" == a || "null" == a ? null: a | |
}; | |
w.setData = function(a, b) { | |
i(); | |
USTORE.setValue(a, b) | |
}; | |
w.deleteValue = function(a) { | |
i(); | |
USTORE.deleteValue(a) | |
}; | |
w.secret = function() { | |
return u("secret") | |
}; | |
w.login = function() { | |
return u("login") | |
}; | |
w.guid = function() { | |
return u("guid") | |
}; | |
w.searchPrivate = function(a, b, d, j, g) { | |
a = { | |
scope: JSON.stringify(a) | |
}; | |
if (b) a.query = b; | |
if (d) a.beforeTime = d; | |
if (j) a.rows = j; | |
z("/api/v1/searchPrivate", a, | |
function(a, b) { | |
g.apply(this, arguments) | |
}) | |
}; | |
w.searchPublic = function(a, b, d, j, g) { | |
a = { | |
scope: JSON.stringify(a) | |
}; | |
if (b) a.query = b; | |
if (d) a.beforeTime = d; | |
if (j) a.rows = j; | |
N("/api/v1/searchPublic", a, g) | |
}; | |
w.searchUsers = function(a, b, d, j) { | |
C("/api/v1/users/search?q=" + a + "&start=" + b + "&rows=" + d, j) | |
}; | |
w.getPopularUsers = function(a) { | |
C("/api/v1/users/popular", a) | |
}; | |
w.getClip = function(a, b) { | |
G("/api/v1/clips/" + a, !1, | |
function(a, d) { | |
b(a, d) | |
}) | |
}; | |
w.getTop = function(a, | |
b, d) { | |
G("/api/v1/top/" + a + "/" + b, !1, d) | |
}; | |
w.getRecommendedTags = function(a) { | |
G("/api/v1/recommendedTags", !0, a) | |
}; | |
var E = {}; | |
w.getBlob = function(a, b) { | |
var d, | |
j; | |
d = "/api/v2/blobs/" + a; | |
n.config.staticBaseUrl ? (j = "getBlobJsonPCallback_" + a, E[j] ? E[j].push(b) : (E[j] = [b], d = n.config.staticBaseUrl + d + "/" + j, v(d, !0, j, | |
function(a, b) { | |
var d, | |
f; | |
f = E[j]; | |
for (d = 0; d < f.length; ++d) f[d](a, b); | |
delete E[j] | |
}))) : G(d, !0, | |
function(a, d) { | |
b(a, d) | |
}) | |
}; | |
w.setClipAsPublic = function(a, b, d) { | |
F("/api/v1/clips/" + a, { | |
isPrivate: !b | |
}, | |
function(a) { | |
d(a) | |
}) | |
}; | |
w.setClipAnnotation = | |
function(a, b, d) { | |
F("/api/v1/clips/" + a, { | |
annote: b | |
}, | |
function(a) { | |
d(a) | |
}) | |
}; | |
w.setClipTitle = function(a, b, d) { | |
F("/api/v1/clips/" + a, { | |
title: b | |
}, | |
function(a) { | |
d(a) | |
}) | |
}; | |
w.reclip = function(a, b) { | |
z("/api/v1/clips/" + a, { | |
reclip: !0 | |
}, | |
function(a) { | |
b(a) | |
}) | |
}; | |
w.getLikes = function(a) { | |
C("/api/v1/likes/", a) | |
}; | |
w.getLikedClips = function(a, b, d, j) { ! j && "function" == typeof d && (j = d, d = null); | |
d ? G("/api/v1/likes/clips?start=" + a + "&rows=" + b + "&user=" + d, !1, j) : C("/api/v1/likes/clips?start=" + a + "&rows=" + b, j) | |
}; | |
w.like = function(a, b, d) { | |
F("/api/v1/likes/" + a, { | |
addOrRemove: b | |
}, | |
function(a) { | |
d(a) | |
}) | |
}; | |
w.addOpenAction = function(a, b) { | |
N("/api/v1/actions/open/" + a, b) | |
}; | |
w.getActions = function(a, b) { | |
if (!a || 0 >= a.length) b("need at least one clip id to fetch actions for"); | |
else { | |
var d = ""; | |
"string" == typeof a ? d = a: a.join && (d = a.join(",")); | |
G("/api/v1/actions/" + d, !1, | |
function(a, d) { | |
b && b(a, d) | |
}) | |
} | |
}; | |
w.getHotClips = function(a, b, d, j) { | |
C("/api/v1/hot?start=" + a + "&rows=" + b + "&type=" + d, j) | |
}; | |
w.getComments = function(a, b) { | |
if (!a || 0 >= a.length) b("need at least one clip id to fetch comments for"); | |
else { | |
var d = ""; | |
"string" == | |
typeof a ? d = a: a.join && (d = a.join(",")); | |
G("/api/v1/comments/" + d, !1, | |
function(a, d) { | |
b(a, d) | |
}) | |
} | |
}; | |
w.addComment = function(a, b, d) { | |
F("/api/v1/comments/" + a, { | |
text: b | |
}, | |
function(a, b) { | |
d(a, b) | |
}) | |
}; | |
w.deleteComment = function(a, b, d) { | |
L("/api/v1/comments/" + a, { | |
clipId: b | |
}, | |
function(a, b) { | |
d(a, b) | |
}) | |
}; | |
w.getCounts = function(a, b) { | |
C("/api/v1/users/" + a + "/counts", | |
function(a, d) { | |
b(a, d) | |
}) | |
}; | |
w.getMessage = function(a) { | |
G("/api/v1/message", !1, | |
function(b, d) { | |
a(b, d) | |
}) | |
}; | |
w.updateUserProfile = function(a, b) { | |
F("/api/v1/users/", a, b) | |
}; | |
w.emailClip = function(a, | |
b, d) { | |
z("/api/v1/share/emailClip", { | |
clipId: a, | |
toEmail: b | |
}, | |
d) | |
}; | |
w.getFacebookFriendList = function(a) { | |
C("/api/v1/secure/fb/friendsList", a) | |
}; | |
w.getEmailContacts = function(a) { | |
C("/api/v1/secure/emailContacts", a) | |
}; | |
w.connectFacebookAccount = function(a, b, d, j) { | |
z("/api/v1/secure/fb/connect/", { | |
fbId: a, | |
fbAccessToken: b, | |
fetchAvatar: d | |
}, | |
j) | |
}; | |
w.disconnectFacebookAccount = function(a) { | |
L("/api/v1/secure/fb/connect/", {}, | |
a) | |
}; | |
w.disconnectFbTimeline = function(a) { | |
L("/api/v1/fb/timeline/", {}, | |
a) | |
}; | |
w.disconnectFbStream = function(a) { | |
L("/api/v1/fb/stream/", | |
{}, | |
a) | |
}; | |
w.connectGoogleAccount = function(a, b) { | |
z("/api/v1/secure/google/connect", { | |
code: a | |
}, | |
b) | |
}; | |
w.connectYahooAccount = function(a, b, d, j) { | |
z("/api/v1/secure/yahoo/connect", { | |
token: a, | |
tokenSecret: b, | |
verifier: d | |
}, | |
j) | |
}; | |
w.connectTwitterAccount = function(a, b, d, j) { | |
z("/api/v1/secure/twitter/connect", { | |
token: a, | |
tokenSecret: b, | |
verifier: d | |
}, | |
j) | |
}; | |
w.disconnectTwitterAccount = function(a) { | |
L("/api/v1/secure/twitter/connect/", {}, | |
a) | |
}; | |
w.getTwitterFriends = function(a) { | |
C("/api/v1/secure/twitter/friends", a) | |
}; | |
w.getTwitterIds = function(a, b) { | |
z("/api/v1/secure/twitter/ids", | |
{ | |
method: a | |
}, | |
b) | |
}; | |
w.getTwitterData = function(a, b) { | |
z("/api/v1/secure/twitter/data", { | |
ids: a | |
}, | |
b) | |
}; | |
w.postTweet = function(a, b) { | |
z("/api/v1/secure/twitter/tweet", { | |
tweet: a | |
}, | |
b) | |
}; | |
w.connectLinkedinAccount = function(a, b, d, j) { | |
z("/api/v1/secure/linkedin/connect", { | |
token: a, | |
tokenSecret: b, | |
verifier: d | |
}, | |
j) | |
}; | |
w.disconnectLinkedinAccount = function(a) { | |
L("/api/v1/secure/linkedin/connect", {}, | |
a) | |
}; | |
w.getLinkedinContacts = function(a) { | |
C("/api/v1/secure/linkedin/contacts", a) | |
}; | |
w.sendLinkedinMessage = function(a, b, d, j) { | |
z("/api/v1/secure/linkedin/sendmessage", | |
{ | |
msgSubject: a, | |
msgBody: b, | |
personUrl: d | |
}, | |
j) | |
}; | |
w.lookupUser = function(a, b) { | |
G("/api/v1/users/lookup?" + o(a), !1, b) | |
}; | |
w.getConnections = function(a, b) { | |
"function" === typeof a && !b && (b = a, a = h); | |
C("/api/v1/connections" + (a ? "?refreshIfOlderThan=" + a: ""), b) | |
}; | |
w.getAutocompleteDict = function(a) { | |
w.localSignGet("/api/v1/autocomplete", | |
function(b, d) { | |
a && a(b, d) | |
}) | |
}; | |
w.getNotifications = function(a) { | |
C("/api/v1/notifications?markRead=1", a) | |
}; | |
w.getUnreadNotificationCount = function(a) { | |
C("/api/v1/notifications/unreadCount", a) | |
}; | |
w.sendInvite = | |
function(a, b) { | |
z("/api/v1/invites/sendInvite", { | |
email: a | |
}, | |
b) | |
}; | |
w.trackInvite = function(a, b, d) { | |
a = { | |
type: a, | |
to: b | |
}; | |
if (d) a.fbRequestId = d; | |
z("/api/v1/invites/trackInvite", a) | |
}; | |
w.sendFeedback = function(a, b) { | |
z("/api/v1/feedback", { | |
message: a | |
}, | |
function(a) { | |
b(a) | |
}) | |
}; | |
w.addFollow = function(a, b) { | |
z("/api/v1/follow", { | |
item: a | |
}, | |
function(a) { | |
b(a) | |
}) | |
}; | |
w.deleteFollow = function(a, b) { | |
L("/api/v1/follow/" + encodeURIComponent(encodeURIComponent(a)), {}, | |
function(a) { | |
b(a) | |
}) | |
}; | |
w.testFollow = function(a, b) { | |
C("/api/v1/follows/" + a.join(","), | |
function(a, | |
d) { | |
b(a, d) | |
}) | |
}; | |
w.getFollowers = function(a, b) { | |
G("/api/v1/followers/" + a, !0, | |
function(a, d) { | |
b(a, d) | |
}) | |
}; | |
w.getFollowing = function(a, b) { | |
G("/api/v1/following/" + a, !0, | |
function(a, d) { | |
b(a, d) | |
}) | |
}; | |
w.updateUserTag = function(a, b, d, j) { | |
F("/api/v1/users/" + a + "/tags/" + encodeURIComponent(encodeURIComponent(b)), { | |
description: d | |
}, | |
function(a) { | |
j(a) | |
}) | |
}; | |
w.getUserTag = function(a, b, d) { | |
C("/api/v1/users/" + a + "/tags/" + encodeURIComponent(encodeURIComponent(b)), | |
function(a, b) { | |
d(a, b) | |
}) | |
}; | |
w.getSession = function(a) { | |
C("/api/v1/sessions", | |
function(b, d) { | |
a(b, | |
d) | |
}) | |
}; | |
w.setAsFrozen = function(a, b, d) { | |
F("/api/v1/clips/" + a, { | |
frozen: b | |
}, | |
function(a) { | |
d(a) | |
}) | |
}; | |
w.requestEmailVerification = function(a, b) { | |
var d = "/api/v1/validateemail"; | |
b && (d += "/" + b); | |
z(d, {}, | |
function(b, d) { | |
a(b, d) | |
}) | |
}; | |
w.getEmailVerification = function(a) { | |
C("/api/v1/validateemail", | |
function(b, d) { | |
a(b, d) | |
}) | |
}; | |
w.uploadAvatar = function(a, b) { | |
z("/api/v1/secure/users/avatar", { | |
facebookId: a | |
}, | |
b) | |
}; (function(a) { | |
function b(a, d, j) { | |
F("/api/v1/clips/" + a, { | |
broken: d ? !0: !1 | |
}, | |
function(a, b) { | |
j(a, b) | |
}) | |
} | |
a.flagAsBroken = function(a, d) { | |
b(a, !0, d) | |
}; | |
a.flagAsNotBroken = function(a, d) { | |
b(a, !1, d) | |
} | |
})(w); | |
w.flagAsInappropriate = function(a, b, d) { | |
F("/api/v1/clips/" + a, { | |
_cb_action: "flagInappropriate", | |
reason: b || "[none]" | |
}, | |
d) | |
}; | |
w.linkAmplify = function(a, b, d, j) { | |
N("/api/v1/amplify", { | |
source: d, | |
clipboardLogin: b, | |
amplifyLogin: a | |
}, | |
j) | |
} | |
})(d, document, b); (function(a, b, d) { | |
function g(a, b) { | |
var j = d("<" + a + "/>"); | |
j.applyBlockStyles && ("block" === b ? j.applyBlockStyles() : j.applyInlineStyles()); | |
return j | |
} | |
var h = a.CLIPBOARD, | |
i = h.common = h.common || {}; | |
h.autocomplete = {}; | |
var p = null, | |
o = "autocomplete-me-value"; | |
h.autocomplete.setData = function(a) { | |
function b(a) { | |
return g("li", "block").data(o, a).text(a) | |
} | |
function d(a) { | |
var b = i.createAvatarUrl(h.config, "s", a.login); | |
return function() { | |
return g("li", "block").addClass("autocomplete_user_314159265").data(o, "@" + a.login).append(g("img", "inline").attr({ | |
src: b | |
}).showPlaceholderOnError()).append(g("div", "block").append("@" + a.login, g("span", "inline").addClass("autocomplete_userRealName_314159265").text(a.name || ""))) | |
} | |
} | |
p = { | |
items: [] | |
}; | |
for (var j in a.tags) a.tags.hasOwnProperty(j) && | |
p.items.push({ | |
name: "#" + a.tags[j], | |
render: b | |
}); | |
for (var D in a.users) a.users.hasOwnProperty(D) && (j = a.users[D], p.items.push({ | |
name: "@" + ((j.login || "") + (j.name ? " " + j.name: "")), | |
render: d(j) | |
})) | |
}; | |
h.autocomplete.getData = function() { | |
return p | |
}; | |
d.fn.autocompletify = function(a) { | |
a = d.extend({}, | |
{ | |
trigger: "[#@\\w]", | |
maxResults: 8 | |
}, | |
a); | |
return this.autocompleteMe(function() { | |
return p | |
}, | |
a) | |
} | |
})(d, document, b); (function(a, b, d) { | |
function g() { | |
function a() { | |
return (65536 * (1 + Math.random()) | 0).toString(16).substring(1) | |
} | |
return a() + a() + "-" + a() + | |
"-" + a() + "-" + a() + "-" + a() + a() + a() | |
} | |
function h(a, b) { | |
var j = b.createElement, | |
j = j("div").addClass(u + "wrapper" + b.classSuffix).append(j("ul")).hide().appendTo("body").on("mouseover", "li", | |
function() { | |
d(this).addClass(u + "selected").siblings().removeClass(u + "selected") | |
}).on("click", "li", | |
function() { | |
r(a) | |
}); | |
b.setCss(j, "position", b.fixed ? "fixed": "absolute"); | |
return j | |
} | |
function i(a, b) { | |
return F[a.attr("id")][b] | |
} | |
function p(a, b, d) { | |
F[a.attr("id")][b] = d | |
} | |
function o(a) { | |
var b = a.val().substring(0, a.caret().end), | |
d = i(a, "options").trigger, | |
a = i(a, "options").matcher; | |
return (RegExp(d + a + "*$").exec(b) || [])[0] || "" | |
} | |
function t(b, j, C) { | |
function A(a) { | |
for (var b in G) if (G.hasOwnProperty(b) && a === G[b]) return ! 0; | |
return ! 1 | |
} | |
var L = b.attr("id") || b.attr("name"); | |
L || (L = u + g(), b.attr("id", L)); | |
F[L] = { | |
options: C, | |
list: h(b, C), | |
data: j, | |
attach: C.attach || b, | |
query: "", | |
shouldHide: !0, | |
timeoutId: null | |
}; | |
b.on("keyup." + v, | |
function(a) { | |
if (a.ctrlKey || a.altKey || !a.shiftKey) { | |
var f = a.which; | |
if (A(f)) { | |
if (!i(b, "list").is(":visible")) return; | |
a.preventDefault(); | |
a.stopImmediatePropagation(); | |
if (f === | |
G.ESC) { | |
s(b); | |
return | |
} | |
if (f === G.ENTER || f === G.TAB) { | |
r(b); | |
s(b); | |
return | |
} | |
if (f === G.UP || f === G.DOWN) return | |
} | |
a.stopPropagation(); (a = o(b)) ? H(b, a) : s(b) | |
} | |
}); | |
b.on("keydown." + v, | |
function(a) { | |
var f = a.keyCode; | |
if (f === G.UP || f === G.DOWN) { | |
var d = w(b), | |
a = n(b).length; | |
null === d ? z(b, f === G.UP ? a - 1: 0) : (f = d + (f === G.UP ? -1: 1), z(b, (f + a) % a)) | |
} | |
}); | |
b.on("keydown." + v + " keypress." + v, | |
function(a) { | |
if (i(b, "list").is(":visible") && (a.ctrlKey || a.altKey || !a.shiftKey) && A(a.which || a.keyCode)) a.preventDefault(), | |
a.stopImmediatePropagation() | |
}); | |
b.on("blur." + v, | |
function() { | |
p(b, | |
"shouldHide", !0); | |
var d = a.setTimeout(function() { | |
i(b, "shouldHide") && s(b); | |
p(b, "shouldHide", !0) | |
}, | |
250); | |
p(b, "timeoutId", d) | |
}); | |
b.on("focus." + v, | |
function() { | |
i(b, "shouldHide") && p(b, "shouldHide", !1); | |
var a = o(b); | |
a && H(b, a) | |
}); | |
d(a).on("resize." + v + L, | |
function() { | |
i(b, "list").is(":visible") && N(b) | |
}) | |
} | |
function w(a) { | |
var b = i(a, "options").classSuffix, | |
j = null; | |
n(a).each(function(a, g) { | |
if (d(g).hasClass(u + "selected" + b)) return j = a, | |
!1 | |
}); | |
return j | |
} | |
function n(a) { | |
return i(a, "list").find("li") | |
} | |
function r(a) { | |
var b = i(a, "list"), | |
d, | |
j = i(a, "options").classSuffix, | |
j = n(a).filter("li." + u + "selected" + j); | |
d = !j.length ? i(a, "list").hasClass(u + "inverted") ? n(a).last() : n(a).first() : j; | |
if (b.is(":visible")) { | |
var g = i(a, "query"), | |
b = a.val(), | |
j = a.caret(); | |
d = d.data(u + "value"); | |
g = j.start - g.length; | |
b = b.substring(0, g) + d + " " + b.substring(j.start); | |
a.val(b); | |
b = g + d.length + 1; | |
a.caret(b, b); | |
s(a) | |
} | |
} | |
function z(a, b) { | |
var d = i(a, "list"), | |
j = n(a); | |
if (d.is(":visible") && !(0 >= j.length || b >= j.length)) d = i(a, "options").classSuffix, | |
j.removeClass(u + "selected" + d), | |
j.eq(b).addClass(u + "selected" + d) | |
} | |
function H(g, h, q) { | |
if (!q) q = | |
i(g, "options").maxResults; | |
var B = i(g, "data"); | |
"function" === typeof B && (B = B(), p(g, "data", B)); | |
if (B) if (B.filter || C(B), q = B.filter(h, q), q.length) { | |
var o = i(g, "list"), | |
B = o.find("ul"), | |
t = i(g, "attach"), | |
f = t.offset(), | |
t = f.top - d(b).scrollTop() + t.outerHeight() + L; | |
o.is(":visible") || (t >= d(a).height() ? !o.hasClass(E) && f.top - d(b).scrollTop() > L && o.addClass(E) : o.removeClass(E)); | |
B.empty(); | |
o = o.hasClass(E); | |
for (f = 0; f < q.length; f++) t = o ? q.length - 1 - f: f, | |
B.append(q[t].render(q[t].name)); | |
p(g, "query", h); | |
N(g); | |
z(g, o ? q.length - 1: 0) | |
} else s(g) | |
} | |
function s(a) { | |
i(a, "list").hide() | |
} | |
function N(a) { | |
if (0 !== n(a).length) { | |
var g = i(a, "list"), | |
h = i(a, "attach"), | |
a = i(a, "options"), | |
q = h.offset(); | |
a.fixed && (q.top -= d(b).scrollTop(), q.left -= d(b).scrollLeft()); | |
var B; | |
g.is(":visible") ? B = g.outerHeight() : (g.css("visibility", "hidden").show(), B = g.outerHeight(), g.hide().css("visibility", "visible")); | |
a.setCss(g, "left", q.left); | |
a.setCss(g, "top", q.top + (!g.hasClass(E) ? h.outerHeight() : -B)); | |
a.setCss(g, "width", h.outerWidth() - 2); | |
g.show() | |
} | |
} | |
function C(a) { | |
a.filter = function(b, d) { | |
for (var j = | |
"^" + b.split("").join("[\\w\\s]*?"), g = [], h, j = RegExp(j, "i"), f = 0, i; f < a.items.length; f++) i = a.items[f], | |
(h = j.exec(i.name)) && g.push({ | |
name: i.name, | |
render: i.render, | |
length: h[0].length, | |
index: h.index | |
}); | |
g.sort(function(a, b) { | |
return a.index === b.index ? a.length === b.length ? a.name === b.name ? 0: a.name < b.name ? -1: 1: a.length < b.length ? -1: 1: a.index < b.index ? -1: 1 | |
}); | |
return g.slice(0, d) | |
} | |
} | |
var G = { | |
TAB: 9, | |
ENTER: 13, | |
ESC: 27, | |
UP: 38, | |
DOWN: 40 | |
}, | |
F = {}, | |
L = 360, | |
v = "autocomplete-me", | |
u = v + "-", | |
E = u + "inverted"; | |
d.fn.autocompleteMe = function() { | |
var b = { | |
classSuffix: "", | |
maxResults: 10, | |
attach: null, | |
trigger: "\\w", | |
matcher: "\\w", | |
fixed: !1, | |
setCss: function(a, b, d) { | |
a.css(b, d) | |
}, | |
createElement: function(a) { | |
return d("<" + a + "/>") | |
} | |
}; | |
return function(j, g) { | |
if ("string" === typeof j) { | |
var h = this.attr("id"), | |
i = F[h]; | |
if (!i) return this; | |
switch (j) { | |
case "destroy": | |
var q = i.timeoutId; | |
q && a.clearTimeout(q); | |
i.list.remove(); | |
F[h] = null; | |
this.off("." + v); | |
d(a).off("." + v + h) | |
} | |
return this | |
} | |
g = d.extend(!0, {}, | |
b, g); | |
this.filter("input,textarea").each(function() { | |
t(d(this), j, g) | |
}); | |
return this | |
} | |
} () | |
})(d, document, b); (function(a, | |
b) { | |
b.fn.showPlaceholderOnError = function(d) { | |
var g = a.CLIPBOARD, | |
h = g.common.createAvatarUrl(g.config, d); | |
b(this).error(function() { | |
b(this).attr("src") !== h && b(this).attr("src", h) | |
}); | |
return this | |
} | |
})(d, b); (function(a, b) { | |
b.fn.placeholder = function(a, d) { | |
this.each(function() { | |
var g = b(this), | |
h = g.attr("placeholder"); | |
if (h) { | |
g.removeAttr("placeholder"); | |
var i = g.attr("id") || g.attr("name"); | |
i || (i = "input_" + Math.round(1E5 * Math.random()), g.attr("id", i)); | |
var p = g.position(), | |
o = a ? "cssImportant": "css", | |
t = b("<label/>"); | |
a && t.applyInlineStyles(); | |
t[o](b.extend({ | |
position: "absolute", | |
left: p.left + parseInt(g.css("padding-left")) + 4, | |
top: p.top + parseInt(g.css("padding-top")) + 1, | |
"font-size": g.css("font-size"), | |
"font-family": g.css("font-family"), | |
"line-height": g.css("line-height"), | |
color: g.css("color") | |
}, | |
d || {})).attr({ | |
"for": i, | |
tabindex: -1 | |
}).text(h); | |
if (b.support.opacity) t[o]("opacity", 0.5); | |
else t[o]("color", "#999999"); | |
g.val() && t.hide(); | |
t.insertAfter(g); | |
g.keydown(function(a) { (46 <= a.which && 90 >= a.which || 96 <= a.which && 111 >= a.which || 186 <= a.which && 222 >= a.which) && | |
t.hide() | |
}).keyup(function() { | |
t["" === g.val() ? "show": "hide"]() | |
}).focus(function() { | |
"" !== g.val() && t.hide() | |
}) | |
} | |
}); | |
return this | |
} | |
})(d, b); | |
b.easing.jswing = b.easing.swing; | |
b.extend(b.easing, { | |
def: "easeOutQuad", | |
swing: function(a, d, g, h, i) { | |
return b.easing[b.easing.def](a, d, g, h, i) | |
}, | |
easeInQuad: function(a, b, d, g, h) { | |
return g * (b /= h) * b + d | |
}, | |
easeOutQuad: function(a, b, d, g, h) { | |
return - g * (b /= h) * (b - 2) + d | |
}, | |
easeInOutQuad: function(a, b, d, g, h) { | |
return 1 > (b /= h / 2) ? g / 2 * b * b + d: -g / 2 * (--b * (b - 2) - 1) + d | |
}, | |
easeInCubic: function(a, b, d, g, h) { | |
return g * (b /= | |
h) * b * b + d | |
}, | |
easeOutCubic: function(a, b, d, g, h) { | |
return g * ((b = b / h - 1) * b * b + 1) + d | |
}, | |
easeInOutCubic: function(a, b, d, g, h) { | |
return 1 > (b /= h / 2) ? g / 2 * b * b * b + d: g / 2 * ((b -= 2) * b * b + 2) + d | |
}, | |
easeInQuart: function(a, b, d, g, h) { | |
return g * (b /= h) * b * b * b + d | |
}, | |
easeOutQuart: function(a, b, d, g, h) { | |
return - g * ((b = b / h - 1) * b * b * b - 1) + d | |
}, | |
easeInOutQuart: function(a, b, d, g, h) { | |
return 1 > (b /= h / 2) ? g / 2 * b * b * b * b + d: -g / 2 * ((b -= 2) * b * b * b - 2) + d | |
}, | |
easeInQuint: function(a, b, d, g, h) { | |
return g * (b /= h) * b * b * b * b + d | |
}, | |
easeOutQuint: function(a, b, d, g, h) { | |
return g * ((b = b / h - 1) * b * b * b * b + 1) + d | |
}, | |
easeInOutQuint: function(a, | |
b, d, g, h) { | |
return 1 > (b /= h / 2) ? g / 2 * b * b * b * b * b + d: g / 2 * ((b -= 2) * b * b * b * b + 2) + d | |
}, | |
easeInSine: function(a, b, d, g, h) { | |
return - g * Math.cos(b / h * (Math.PI / 2)) + g + d | |
}, | |
easeOutSine: function(a, b, d, g, h) { | |
return g * Math.sin(b / h * (Math.PI / 2)) + d | |
}, | |
easeInOutSine: function(a, b, d, g, h) { | |
return - g / 2 * (Math.cos(Math.PI * b / h) - 1) + d | |
}, | |
easeInExpo: function(a, b, d, g, h) { | |
return 0 == b ? d: g * Math.pow(2, 10 * (b / h - 1)) + d | |
}, | |
easeOutExpo: function(a, b, d, g, h) { | |
return b == h ? d + g: g * ( - Math.pow(2, -10 * b / h) + 1) + d | |
}, | |
easeInOutExpo: function(a, b, d, g, h) { | |
return 0 == b ? d: b == h ? d + g: 1 > (b /= h / 2) ? | |
g / 2 * Math.pow(2, 10 * (b - 1)) + d: g / 2 * ( - Math.pow(2, -10 * --b) + 2) + d | |
}, | |
easeInCirc: function(a, b, d, g, h) { | |
return - g * (Math.sqrt(1 - (b /= h) * b) - 1) + d | |
}, | |
easeOutCirc: function(a, b, d, g, h) { | |
return g * Math.sqrt(1 - (b = b / h - 1) * b) + d | |
}, | |
easeInOutCirc: function(a, b, d, g, h) { | |
return 1 > (b /= h / 2) ? -g / 2 * (Math.sqrt(1 - b * b) - 1) + d: g / 2 * (Math.sqrt(1 - (b -= 2) * b) + 1) + d | |
}, | |
easeInElastic: function(a, b, d, g, h) { | |
var a = 1.70158, | |
i = 0, | |
p = g; | |
if (0 == b) return d; | |
if (1 == (b /= h)) return d + g; | |
i || (i = 0.3 * h); | |
p < Math.abs(g) ? (p = g, a = i / 4) : a = i / (2 * Math.PI) * Math.asin(g / p); | |
return - (p * Math.pow(2, 10 * | |
(b -= 1)) * Math.sin((b * h - a) * 2 * Math.PI / i)) + d | |
}, | |
easeOutElastic: function(a, b, d, g, h) { | |
var a = 1.70158, | |
i = 0, | |
p = g; | |
if (0 == b) return d; | |
if (1 == (b /= h)) return d + g; | |
i || (i = 0.3 * h); | |
p < Math.abs(g) ? (p = g, a = i / 4) : a = i / (2 * Math.PI) * Math.asin(g / p); | |
return p * Math.pow(2, -10 * b) * Math.sin((b * h - a) * 2 * Math.PI / i) + g + d | |
}, | |
easeInOutElastic: function(a, b, d, g, h) { | |
var a = 1.70158, | |
i = 0, | |
p = g; | |
if (0 == b) return d; | |
if (2 == (b /= h / 2)) return d + g; | |
i || (i = h * 0.3 * 1.5); | |
p < Math.abs(g) ? (p = g, a = i / 4) : a = i / (2 * Math.PI) * Math.asin(g / p); | |
return 1 > b ? -0.5 * p * Math.pow(2, 10 * (b -= 1)) * Math.sin((b * h - | |
a) * 2 * Math.PI / i) + d: 0.5 * p * Math.pow(2, -10 * (b -= 1)) * Math.sin((b * h - a) * 2 * Math.PI / i) + g + d | |
}, | |
easeInBack: function(a, b, d, g, h, i) { | |
void 0 == i && (i = 1.70158); | |
return g * (b /= h) * b * ((i + 1) * b - i) + d | |
}, | |
easeOutBack: function(a, b, d, g, h, i) { | |
void 0 == i && (i = 1.70158); | |
return g * ((b = b / h - 1) * b * ((i + 1) * b + i) + 1) + d | |
}, | |
easeInOutBack: function(a, b, d, g, h, i) { | |
void 0 == i && (i = 1.70158); | |
return 1 > (b /= h / 2) ? g / 2 * b * b * (((i *= 1.525) + 1) * b - i) + d: g / 2 * ((b -= 2) * b * (((i *= 1.525) + 1) * b + i) + 2) + d | |
}, | |
easeInBounce: function(a, d, g, h, i) { | |
return h - b.easing.easeOutBounce(a, i - d, 0, h, i) + g | |
}, | |
easeOutBounce: function(a, | |
b, d, g, h) { | |
return (b /= h) < 1 / 2.75 ? g * 7.5625 * b * b + d: b < 2 / 2.75 ? g * (7.5625 * (b -= 1.5 / 2.75) * b + 0.75) + d: b < 2.5 / 2.75 ? g * (7.5625 * (b -= 2.25 / 2.75) * b + 0.9375) + d: g * (7.5625 * (b -= 2.625 / 2.75) * b + 0.984375) + d | |
}, | |
easeInOutBounce: function(a, d, g, h, i) { | |
return d < i / 2 ? 0.5 * b.easing.easeInBounce(a, 2 * d, 0, h, i) + g: 0.5 * b.easing.easeOutBounce(a, 2 * d - i, 0, h, i) + 0.5 * h + g | |
} | |
}); (function(a) { | |
function b(g) { | |
var j = g || d.event, | |
h = [].slice.call(arguments, 1), | |
i = 0, | |
p = 0, | |
o = 0, | |
g = a.event.fix(j); | |
g.type = "mousewheel"; | |
j.wheelDelta && (i = j.wheelDelta / 120); | |
j.detail && (i = -j.detail / 3); | |
o = i; | |
void 0 !== j.axis && j.axis === j.HORIZONTAL_AXIS && (o = 0, p = -1 * i); | |
void 0 !== j.wheelDeltaY && (o = j.wheelDeltaY / 120); | |
void 0 !== j.wheelDeltaX && (p = -1 * j.wheelDeltaX / 120); | |
h.unshift(g, i, p, o); | |
return (a.event.dispatch || a.event.handle).apply(this, h) | |
} | |
var g = ["DOMMouseScroll", "mousewheel"]; | |
if (a.event.fixHooks) for (var h = g.length; h;) a.event.fixHooks[g[--h]] = a.event.mouseHooks; | |
a.event.special.mousewheel = { | |
setup: function() { | |
if (this.addEventListener) for (var a = g.length; a;) this.addEventListener(g[--a], b, !1); | |
else this.onmousewheel = | |
b | |
}, | |
teardown: function() { | |
if (this.removeEventListener) for (var a = g.length; a;) this.removeEventListener(g[--a], b, !1); | |
else this.onmousewheel = null | |
} | |
}; | |
a.fn.extend({ | |
mousewheel: function(a) { | |
return a ? this.bind("mousewheel", a) : this.trigger("mousewheel") | |
}, | |
unmousewheel: function(a) { | |
return this.unbind("mousewheel", a) | |
} | |
}) | |
})(b); (function(a, b, d, g, h, i) { | |
function p(a, b) { | |
var d = typeof a[b]; | |
return "function" == d || !!("object" == d && a[b]) || "unknown" == d | |
} | |
function o() { | |
try { | |
var a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); | |
J = Array.prototype.slice.call(a.GetVariable("$version").match(/(\d+),(\d+),(\d+),(\d+)/), | |
1); | |
ga = 9 < parseInt(J[0], 10) && 0 < parseInt(J[1], 10); | |
return ! 0 | |
} catch(b) { | |
return ! 1 | |
} | |
} | |
function t() { | |
if (!S) { | |
S = !0; | |
for (var a = 0; a < ta.length; a++) ta[a](); | |
ta.length = 0 | |
} | |
} | |
function n(a, b) { | |
S ? a.call(b) : ta.push(function() { | |
a.call(b) | |
}) | |
} | |
function r() { | |
var a = parent; | |
if ("" !== A) for (var b = 0, d = A.split("."); b < d.length; b++) a = a[d[b]]; | |
return a.easyXDM | |
} | |
function z(a) { | |
var b = a.toLowerCase().match(m), | |
a = b[2], | |
d = b[3], | |
b = b[4] || ""; | |
if ("http:" == a && ":80" == b || "https:" == a && ":443" == b) b = ""; | |
return a + "//" + d + b | |
} | |
function H(a) { | |
a = a.replace($, "$1/"); | |
if (!a.match(/^(http||https):\/\//)) { | |
var b = | |
"/" === a.substring(0, 1) ? "": d.pathname; | |
"/" !== b.substring(b.length - 1) && (b = b.substring(0, b.lastIndexOf("/") + 1)); | |
a = d.protocol + "//" + d.host + b + a | |
} | |
for (; K.test(a);) a = a.replace(K, ""); | |
return a | |
} | |
function s(a, b) { | |
var d = "", | |
f = a.indexOf("#"); - 1 !== f && (d = a.substring(f), a = a.substring(0, f)); | |
var f = [], | |
g; | |
for (g in b) b.hasOwnProperty(g) && f.push(g + "=" + i(b[g])); | |
return a + (aa ? "#": -1 == a.indexOf("?") ? "?": "&") + f.join("&") + d | |
} | |
function N(a) { | |
return "undefined" === typeof a | |
} | |
function F(a, b, d) { | |
var f, | |
g; | |
for (g in b) b.hasOwnProperty(g) && (g in a ? | |
(f = b[g], "object" === typeof f ? F(a[g], f, d) : d || (a[g] = b[g])) : a[g] = b[g]); | |
return a | |
} | |
function C(a) { | |
if (N(ca)) { | |
var d = b.body.appendChild(b.createElement("form")), | |
g = d.appendChild(b.createElement("input")); | |
g.name = f + "TEST" + E; | |
ca = g !== d.elements[g.name]; | |
b.body.removeChild(d) | |
} | |
ca ? d = b.createElement('<iframe name="' + a.props.name + '"/>') : (d = b.createElement("IFRAME"), d.name = a.props.name); | |
d.id = d.name = a.props.name; | |
delete a.props.name; | |
a.onLoad && Z(d, "load", a.onLoad); | |
if ("string" == typeof a.container) a.container = b.getElementById(a.container); | |
if (!a.container) F(d.style, { | |
position: "absolute", | |
top: "-2000px" | |
}), | |
a.container = b.body; | |
g = a.props.src; | |
delete a.props.src; | |
F(d, a.props); | |
d.border = d.frameBorder = 0; | |
d.allowTransparency = !0; | |
a.container.appendChild(d); | |
d.src = g; | |
a.props.src = g; | |
return d | |
} | |
function G(f) { | |
var g = f.protocol, | |
h; | |
f.isHost = f.isHost || N(ba.xdm_p); | |
aa = f.hash || !1; | |
if (!f.props) f.props = {}; | |
if (f.isHost) { | |
if (f.remote = H(f.remote), f.channel = f.channel || "default" + E++, f.secret = Math.random().toString(16).substring(2), N(g)) z(d.href) == z(f.remote) ? g = "4": p(a, "postMessage") || | |
p(b, "postMessage") ? g = "1": f.swf && p(a, "ActiveXObject") && o() ? g = "6": "Gecko" === navigator.product && "frameElement" in a && -1 == navigator.userAgent.indexOf("WebKit") ? g = "5": f.remoteHelper ? (f.remoteHelper = H(f.remoteHelper), g = "2") : g = "0" | |
} else { | |
f.channel = ba.xdm_c; | |
f.secret = ba.xdm_s; | |
f.remote = ba.xdm_e; | |
var g = ba.xdm_p, | |
i; | |
if (i = f.acl) { | |
a: { | |
i = f.acl; | |
var m = f.remote; | |
"string" == typeof i && (i = [i]); | |
for (var q, t = i.length; t--;) if (q = i[t], q = RegExp("^" == q.substr(0, 1) ? q: "^" + q.replace(/(\*)/g, ".$1").replace(/\?/g, ".") + "$"), q.test(m)) { | |
i = !0; | |
break a | |
} | |
i = !1 | |
} | |
i = !i | |
} | |
if (i) throw Error("Access denied for " + f.remote); | |
} | |
f.protocol = g; | |
switch (g) { | |
case "0": | |
F(f, { | |
interval: 100, | |
delay: 2E3, | |
useResize: !0, | |
useParent: !1, | |
usePolling: !1 | |
}, | |
!0); | |
if (f.isHost) { | |
if (!f.local) { | |
g = d.protocol + "//" + d.host; | |
h = b.body.getElementsByTagName("img"); | |
for (m = h.length; m--;) if (i = h[m], i.src.substring(0, g.length) === g) { | |
f.local = i.src; | |
break | |
} | |
if (!f.local) f.local = a | |
} | |
g = { | |
xdm_c: f.channel, | |
xdm_p: 0 | |
}; | |
f.local === a ? (f.usePolling = !0, f.useParent = !0, f.local = d.protocol + "//" + d.host + d.pathname + d.search, g.xdm_e = f.local, | |
g.xdm_pa = 1) : g.xdm_e = H(f.local); | |
if (f.container) f.useResize = !1, | |
g.xdm_po = 1; | |
f.remote = s(f.remote, g) | |
} else F(f, { | |
channel: ba.xdm_c, | |
remote: ba.xdm_e, | |
useParent: !N(ba.xdm_pa), | |
usePolling: !N(ba.xdm_po), | |
useResize: f.useParent ? !1: f.useResize | |
}); | |
h = [new y.stack.HashTransport(f), new y.stack.ReliableBehavior({}), new y.stack.QueueBehavior({ | |
encode: !0, | |
maxLength: 4E3 - f.remote.length | |
}), new y.stack.VerifyBehavior({ | |
initiate: f.isHost | |
})]; | |
break; | |
case "1": | |
h = [new y.stack.PostMessageTransport(f)]; | |
break; | |
case "2": | |
h = [new y.stack.NameTransport(f), | |
new y.stack.QueueBehavior, new y.stack.VerifyBehavior({ | |
initiate: f.isHost | |
})]; | |
break; | |
case "3": | |
h = [new y.stack.NixTransport(f)]; | |
break; | |
case "4": | |
h = [new y.stack.SameOriginTransport(f)]; | |
break; | |
case "5": | |
h = [new y.stack.FrameElementTransport(f)]; | |
break; | |
case "6": | |
J || o(), | |
h = [new y.stack.FlashTransport(f)] | |
} | |
h.push(new y.stack.QueueBehavior({ | |
lazy: f.lazy, | |
remove: !0 | |
})); | |
return h | |
} | |
function L(a) { | |
for (var b, d = { | |
incoming: function(a, b) { | |
this.up.incoming(a, b) | |
}, | |
outgoing: function(a, b) { | |
this.down.outgoing(a, b) | |
}, | |
callback: function(a) { | |
this.up.callback(a) | |
}, | |
init: function() { | |
this.down.init() | |
}, | |
destroy: function() { | |
this.down.destroy() | |
} | |
}, | |
f = 0, g = a.length; f < g; f++) { | |
b = a[f]; | |
F(b, d, !0); | |
if (0 !== f) b.down = a[f - 1]; | |
if (f !== g - 1) b.up = a[f + 1] | |
} | |
return b | |
} | |
function v(a) { | |
a.up.down = a.down; | |
a.down.up = a.up; | |
a.up = a.down = null | |
} | |
var u = this, | |
E = Math.floor(1E4 * Math.random()), | |
M = Function.prototype, | |
m = /^((http.?:)\/\/([^:\/\s]+)(:\d+)*)/, | |
K = /[\-\w]+\/\.\.\//, | |
$ = /([^:])\/\//g, | |
A = "", | |
y = {}, | |
O = a.easyXDM, | |
f = "easyXDM_", | |
ca, | |
aa = !1, | |
J, | |
ga, | |
Z, | |
T; | |
if (p(a, "addEventListener")) Z = function(a, b, d) { | |
a.addEventListener(b, d, !1) | |
}, | |
T = | |
function(a, b, d) { | |
a.removeEventListener(b, d, !1) | |
}; | |
else if (p(a, "attachEvent")) Z = function(a, b, d) { | |
a.attachEvent("on" + b, d) | |
}, | |
T = function(a, b, d) { | |
a.detachEvent("on" + b, d) | |
}; | |
else throw Error("Browser not supported"); | |
var S = !1, | |
ta = [], | |
ua; | |
"readyState" in b ? (ua = b.readyState, S = "complete" == ua || ~navigator.userAgent.indexOf("AppleWebKit/") && ("loaded" == ua || "interactive" == ua)) : S = !!b.body; | |
if (!S) { | |
if (p(a, "addEventListener")) Z(b, "DOMContentLoaded", t); | |
else if (Z(b, "readystatechange", | |
function() { | |
"complete" == b.readyState && t() | |
}), b.documentElement.doScroll && | |
a === top) { | |
var La = function() { | |
if (!S) { | |
try { | |
b.documentElement.doScroll("left") | |
} catch(a) { | |
g(La, 1); | |
return | |
} | |
t() | |
} | |
}; | |
La() | |
} | |
Z(a, "load", t) | |
} | |
var ba = function(a) { | |
for (var a = a.substring(1).split("&"), b = {}, | |
d, f = a.length; f--;) d = a[f].split("="), | |
b[d[0]] = h(d[1]); | |
return b | |
} (/xdm_e=/.test(d.search) ? d.search: d.hash), | |
oa = function() { | |
var a = {}, | |
b = { | |
a: [1, 2, 3] | |
}; | |
if ("undefined" != typeof JSON && "function" === typeof JSON.stringify && '{"a":[1,2,3]}' === JSON.stringify(b).replace(/\s/g, "")) return JSON; | |
if (Object.toJSON && '{"a":[1,2,3]}' === Object.toJSON(b).replace(/\s/g, | |
"")) a.stringify = Object.toJSON; | |
if ("function" === typeof String.prototype.evalJSON && (b = '{"a":[1,2,3]}'.evalJSON(), b.a && 3 === b.a.length && 3 === b.a[2])) a.parse = function(a) { | |
return a.evalJSON() | |
}; | |
return a.stringify && a.parse ? (oa = function() { | |
return a | |
}, | |
a) : null | |
}; | |
F(y, { | |
version: "2.4.15.118", | |
query: ba, | |
stack: {}, | |
apply: F, | |
getJSONObject: oa, | |
whenReady: n, | |
noConflict: function(b) { | |
a.easyXDM = O; (A = b) && (f = "easyXDM_" + A.replace(".", "_") + "_"); | |
return y | |
} | |
}); | |
y.DomHelper = { | |
on: Z, | |
un: T, | |
requiresJSON: function(d) { | |
"object" == typeof a.JSON && a.JSON || b.write('<script type="text/javascript" src="' + | |
d + '"><\/script>') | |
} | |
}; (function() { | |
var a = {}; | |
y.Fn = { | |
set: function(b, d) { | |
a[b] = d | |
}, | |
get: function(b, d) { | |
var f = a[b]; | |
d && delete a[b]; | |
return f | |
} | |
} | |
})(); | |
y.Socket = function(a) { | |
var b = L(G(a).concat([{ | |
incoming: function(b, d) { | |
a.onMessage(b, d) | |
}, | |
callback: function(b) { | |
if (a.onReady) a.onReady(b) | |
} | |
}])), | |
d = z(a.remote); | |
this.origin = z(a.remote); | |
this.destroy = function() { | |
b.destroy() | |
}; | |
this.postMessage = function(a) { | |
b.outgoing(a, d) | |
}; | |
b.init() | |
}; | |
y.Rpc = function(a, b) { | |
if (b.local) for (var d in b.local) if (b.local.hasOwnProperty(d)) { | |
var f = b.local[d]; | |
"function" === | |
typeof f && (b.local[d] = { | |
method: f | |
}) | |
} | |
var g = L(G(a).concat([new y.stack.RpcBehavior(this, b), { | |
callback: function(b) { | |
if (a.onReady) a.onReady(b) | |
} | |
}])); | |
this.origin = z(a.remote); | |
this.destroy = function() { | |
g.destroy() | |
}; | |
g.init() | |
}; | |
y.stack.SameOriginTransport = function(a) { | |
var b, | |
j, | |
h, | |
i; | |
return b = { | |
outgoing: function(a, b, d) { | |
h(a); | |
d && d() | |
}, | |
destroy: function() { | |
j && (j.parentNode.removeChild(j), j = null) | |
}, | |
onDOMReady: function() { | |
i = z(a.remote); | |
a.isHost ? (F(a.props, { | |
src: s(a.remote, { | |
xdm_e: d.protocol + "//" + d.host + d.pathname, | |
xdm_c: a.channel, | |
xdm_p: 4 | |
}), | |
name: f + a.channel + "_provider" | |
}), j = C(a), y.Fn.set(a.channel, | |
function(a) { | |
h = a; | |
g(function() { | |
b.up.callback(!0) | |
}, | |
0); | |
return function(a) { | |
b.up.incoming(a, i) | |
} | |
})) : (h = r().Fn.get(a.channel, !0)(function(a) { | |
b.up.incoming(a, i) | |
}), g(function() { | |
b.up.callback(!0) | |
}, | |
0)) | |
}, | |
init: function() { | |
n(b.onDOMReady, b) | |
} | |
} | |
}; | |
y.stack.FlashTransport = function(a) { | |
function h(a) { | |
g(function() { | |
p.up.incoming(a, t) | |
}, | |
0) | |
} | |
function i(d) { | |
var f = a.swf + "?host=" + a.isHost, | |
g = "easyXDM_swf_" + Math.floor(1E4 * Math.random()); | |
y.Fn.set("flash_loaded" + d.replace(/[\-.]/g, | |
"_"), | |
function() { | |
y.stack.FlashTransport[d].swf = r = G.firstChild; | |
for (var a = y.stack.FlashTransport[d].queue, b = 0; b < a.length; b++) a[b](); | |
a.length = 0 | |
}); | |
a.swfContainer ? G = "string" == typeof a.swfContainer ? b.getElementById(a.swfContainer) : a.swfContainer: (G = b.createElement("div"), F(G.style, ga && a.swfNoThrottle ? { | |
height: "20px", | |
width: "20px", | |
position: "fixed", | |
right: 0, | |
top: 0 | |
}: { | |
height: "1px", | |
width: "1px", | |
position: "absolute", | |
overflow: "hidden", | |
right: 0, | |
top: 0 | |
}), b.body.appendChild(G)); | |
var h = "callback=flash_loaded" + d.replace(/[\-.]/g, | |
"_") + "&proto=" + u.location.protocol + "&domain=" + u.location.href.match(m)[3] + "&port=" + (u.location.href.match(m)[4] || "") + "&ns=" + A; | |
G.innerHTML = "<object height='20' width='20' type='application/x-shockwave-flash' id='" + g + "' data='" + f + "'><param name='allowScriptAccess' value='always'></param><param name='wmode' value='transparent'><param name='movie' value='" + f + "'></param><param name='flashvars' value='" + h + "'></param><embed type='application/x-shockwave-flash' FlashVars='" + h + "' allowScriptAccess='always' wmode='transparent' src='" + | |
f + "' height='1' width='1'></embed></object>" | |
} | |
var p, | |
o, | |
t, | |
r, | |
G; | |
return p = { | |
outgoing: function(b, d, f) { | |
r.postMessage(a.channel, b.toString()); | |
f && f() | |
}, | |
destroy: function() { | |
try { | |
r.destroyChannel(a.channel) | |
} catch(b) {} | |
r = null; | |
o && (o.parentNode.removeChild(o), o = null) | |
}, | |
onDOMReady: function() { | |
t = a.remote; | |
y.Fn.set("flash_" + a.channel + "_init", | |
function() { | |
g(function() { | |
p.up.callback(!0) | |
}) | |
}); | |
y.Fn.set("flash_" + a.channel + "_onMessage", h); | |
a.swf = H(a.swf); | |
var b = a.swf.match(m)[3], | |
j = function() { | |
y.stack.FlashTransport[b].init = !0; | |
r = y.stack.FlashTransport[b].swf; | |
r.createChannel(a.channel, a.secret, z(a.remote), a.isHost); | |
a.isHost && (ga && a.swfNoThrottle && F(a.props, { | |
position: "fixed", | |
right: 0, | |
top: 0, | |
height: "20px", | |
width: "20px" | |
}), F(a.props, { | |
src: s(a.remote, { | |
xdm_e: z(d.href), | |
xdm_c: a.channel, | |
xdm_p: 6, | |
xdm_s: a.secret | |
}), | |
name: f + a.channel + "_provider" | |
}), o = C(a)) | |
}; | |
y.stack.FlashTransport[b] && y.stack.FlashTransport[b].init ? j() : y.stack.FlashTransport[b] ? y.stack.FlashTransport[b].queue.push(j) : (y.stack.FlashTransport[b] = { | |
queue: [j] | |
}, | |
i(b)) | |
}, | |
init: function() { | |
n(p.onDOMReady, p) | |
} | |
} | |
}; | |
y.stack.PostMessageTransport = | |
function(b) { | |
function j(a) { | |
var f; | |
if (a.origin) f = z(a.origin); | |
else if (a.uri) f = z(a.uri); | |
else if (a.domain) f = d.protocol + "//" + a.domain; | |
else throw "Unable to retrieve the origin of the event"; | |
f == p && a.data.substring(0, b.channel.length + 1) == b.channel + " " && h.up.incoming(a.data.substring(b.channel.length + 1), f) | |
} | |
var h, | |
i, | |
m, | |
p; | |
return h = { | |
outgoing: function(a, d, f) { | |
m.postMessage(b.channel + " " + a, d || p); | |
f && f() | |
}, | |
destroy: function() { | |
T(a, "message", j); | |
i && (m = null, i.parentNode.removeChild(i), i = null) | |
}, | |
onDOMReady: function() { | |
p = z(b.remote); | |
if (b.isHost) { | |
var o = function(d) { | |
d.data == b.channel + "-ready" && (m = "postMessage" in i.contentWindow ? i.contentWindow: i.contentWindow.document, T(a, "message", o), Z(a, "message", j), g(function() { | |
h.up.callback(!0) | |
}, | |
0)) | |
}; | |
Z(a, "message", o); | |
F(b.props, { | |
src: s(b.remote, { | |
xdm_e: z(d.href), | |
xdm_c: b.channel, | |
xdm_p: 1 | |
}), | |
name: f + b.channel + "_provider" | |
}); | |
i = C(b) | |
} else Z(a, "message", j), | |
m = "postMessage" in a.parent ? a.parent: a.parent.document, | |
m.postMessage(b.channel + "-ready", p), | |
g(function() { | |
h.up.callback(!0) | |
}, | |
0) | |
}, | |
init: function() { | |
n(h.onDOMReady, | |
h) | |
} | |
} | |
}; | |
y.stack.FrameElementTransport = function(h) { | |
var i, | |
m, | |
p, | |
o; | |
return i = { | |
outgoing: function(a, b, d) { | |
p.call(this, a); | |
d && d() | |
}, | |
destroy: function() { | |
m && (m.parentNode.removeChild(m), m = null) | |
}, | |
onDOMReady: function() { | |
o = z(h.remote); | |
if (h.isHost) F(h.props, { | |
src: s(h.remote, { | |
xdm_e: z(d.href), | |
xdm_c: h.channel, | |
xdm_p: 5 | |
}), | |
name: f + h.channel + "_provider" | |
}), | |
m = C(h), | |
m.fn = function(a) { | |
delete m.fn; | |
p = a; | |
g(function() { | |
i.up.callback(!0) | |
}, | |
0); | |
return function(a) { | |
i.up.incoming(a, o) | |
} | |
}; | |
else { | |
if (b.referrer && z(b.referrer) != ba.xdm_e) a.top.location = ba.xdm_e; | |
p = a.frameElement.fn(function(a) { | |
i.up.incoming(a, o) | |
}); | |
i.up.callback(!0) | |
} | |
}, | |
init: function() { | |
n(i.onDOMReady, i) | |
} | |
} | |
}; | |
y.stack.NameTransport = function(a) { | |
function b(d) { | |
p.contentWindow.sendMessage(d, a.remoteHelper + (m ? "#_3": "#_2") + a.channel) | |
} | |
function d() { | |
m ? (2 === ++t || !m) && i.up.callback(!0) : (b("ready"), i.up.callback(!0)) | |
} | |
function j(a) { | |
i.up.incoming(a, G) | |
} | |
function h() { | |
r && g(function() { | |
r(!0) | |
}, | |
0) | |
} | |
var i, | |
m, | |
p, | |
o, | |
t, | |
r, | |
G, | |
N; | |
return i = { | |
outgoing: function(a, d, f) { | |
r = f; | |
b(a) | |
}, | |
destroy: function() { | |
p.parentNode.removeChild(p); | |
p = null; | |
m && | |
(o.parentNode.removeChild(o), o = null) | |
}, | |
onDOMReady: function() { | |
m = a.isHost; | |
t = 0; | |
G = z(a.remote); | |
a.local = H(a.local); | |
m ? (y.Fn.set(a.channel, | |
function(b) { | |
m && "ready" === b && (y.Fn.set(a.channel, j), d()) | |
}), N = s(a.remote, { | |
xdm_e: a.local, | |
xdm_c: a.channel, | |
xdm_p: 2 | |
}), F(a.props, { | |
src: N + "#" + a.channel, | |
name: f + a.channel + "_provider" | |
}), o = C(a)) : (a.remoteHelper = a.remote, y.Fn.set(a.channel, j)); | |
p = C({ | |
props: { | |
src: a.local + "#_4" + a.channel | |
}, | |
onLoad: function Ea() { | |
var b = p || this; | |
T(b, "load", Ea); | |
y.Fn.set(a.channel + "_load", h); (function wa() { | |
"function" == | |
typeof b.contentWindow.sendMessage ? d() : g(wa, 50) | |
})() | |
} | |
}) | |
}, | |
init: function() { | |
n(i.onDOMReady, i) | |
} | |
} | |
}; | |
y.stack.HashTransport = function(b) { | |
function d() { | |
if (t) { | |
var a = t.location.href, | |
b = "", | |
f = a.indexOf("#"); - 1 != f && (b = a.substring(f)); | |
b && b != p && (p = b, j.up.incoming(p.substring(p.indexOf("_") + 1), H)) | |
} | |
} | |
var j, | |
h, | |
i, | |
m, | |
p, | |
o, | |
t, | |
r, | |
G, | |
H; | |
return j = { | |
outgoing: function(a) { | |
if (r) a = b.remote + "#" + o+++"_" + a, | |
(h || !G ? r.contentWindow: r).location = a | |
}, | |
destroy: function() { | |
a.clearInterval(i); (h || !G) && r.parentNode.removeChild(r); | |
r = null | |
}, | |
onDOMReady: function() { | |
h = | |
b.isHost; | |
m = b.interval; | |
p = "#" + b.channel; | |
o = 0; | |
G = b.useParent; | |
H = z(b.remote); | |
if (h) { | |
b.props = { | |
src: b.remote, | |
name: f + b.channel + "_provider" | |
}; | |
if (G) b.onLoad = function() { | |
t = a; | |
i = setInterval(d, m); | |
j.up.callback(!0) | |
}; | |
else { | |
var n = 0, | |
w = b.delay / 50; (function Aa() { | |
if (++n > w) throw Error("Unable to reference listenerwindow"); | |
try { | |
t = r.contentWindow.frames[f + b.channel + "_consumer"] | |
} catch(a) {} | |
t ? (i = setInterval(d, m), j.up.callback(!0)) : g(Aa, 50) | |
})() | |
} | |
r = C(b) | |
} else t = a, | |
i = setInterval(d, m), | |
G ? (r = parent, j.up.callback(!0)) : (F(b, { | |
props: { | |
src: b.remote + | |
"#" + b.channel + new Date, | |
name: f + b.channel + "_consumer" | |
}, | |
onLoad: function() { | |
j.up.callback(!0) | |
} | |
}), r = C(b)) | |
}, | |
init: function() { | |
n(j.onDOMReady, j) | |
} | |
} | |
}; | |
y.stack.ReliableBehavior = function() { | |
var a, | |
b, | |
d = 0, | |
f = 0, | |
g = ""; | |
return a = { | |
incoming: function(j, h) { | |
var i = j.indexOf("_"), | |
m = j.substring(0, i).split(","), | |
j = j.substring(i + 1); | |
m[0] == d && (g = "", b && b(!0)); | |
0 < j.length && (a.down.outgoing(m[1] + "," + d + "_" + g, h), f != m[1] && (f = m[1], a.up.incoming(j, h))) | |
}, | |
outgoing: function(j, h, i) { | |
g = j; | |
b = i; | |
a.down.outgoing(f + "," + ++d + "_" + j, h) | |
} | |
} | |
}; | |
y.stack.QueueBehavior = | |
function(a) { | |
function b() { | |
if (a.remove && 0 === f.length) v(d); | |
else if (!j && !(0 === f.length || p)) { | |
j = !0; | |
var h = f.shift(); | |
d.down.outgoing(h.data, h.origin, | |
function(a) { | |
j = !1; | |
h.callback && g(function() { | |
h.callback(a) | |
}, | |
0); | |
b() | |
}) | |
} | |
} | |
var d, | |
f = [], | |
j = !0, | |
m = "", | |
p, | |
o = 0, | |
t = !1, | |
C = !1; | |
return d = { | |
init: function() { | |
N(a) && (a = {}); | |
if (a.maxLength) o = a.maxLength, | |
C = !0; | |
a.lazy ? t = !0: d.down.init() | |
}, | |
callback: function(a) { | |
j = !1; | |
var f = d.up; | |
b(); | |
f.callback(a) | |
}, | |
incoming: function(b, f) { | |
if (C) { | |
var g = b.indexOf("_"), | |
j = parseInt(b.substring(0, g), 10); | |
m += b.substring(g + 1); | |
0 === j && (a.encode && (m = h(m)), d.up.incoming(m, f), m = "") | |
} else d.up.incoming(b, f) | |
}, | |
outgoing: function(g, j, h) { | |
a.encode && (g = i(g)); | |
var m = [], | |
p; | |
if (C) { | |
for (; 0 !== g.length;) p = g.substring(0, o), | |
g = g.substring(p.length), | |
m.push(p); | |
for (; p = m.shift();) f.push({ | |
data: m.length + "_" + p, | |
origin: j, | |
callback: 0 === m.length ? h: null | |
}) | |
} else f.push({ | |
data: g, | |
origin: j, | |
callback: h | |
}); | |
t ? d.down.init() : b() | |
}, | |
destroy: function() { | |
p = !0; | |
d.down.destroy() | |
} | |
} | |
}; | |
y.stack.VerifyBehavior = function(a) { | |
function b() { | |
f = Math.random().toString(16).substring(2); | |
d.down.outgoing(f) | |
} | |
var d, | |
f, | |
g; | |
return d = { | |
incoming: function(j, h) { | |
var i = j.indexOf("_"); - 1 === i ? j === f ? d.up.callback(!0) : g || (g = j, a.initiate || b(), d.down.outgoing(j)) : j.substring(0, i) === g && d.up.incoming(j.substring(i + 1), h) | |
}, | |
outgoing: function(a, b, g) { | |
d.down.outgoing(f + "_" + a, b, g) | |
}, | |
callback: function() { | |
a.initiate && b() | |
} | |
} | |
}; | |
y.stack.RpcBehavior = function(a, b) { | |
function d(a) { | |
a.jsonrpc = "2.0"; | |
j.down.outgoing(h.stringify(a)) | |
} | |
function f(a, b) { | |
var g = Array.prototype.slice; | |
return function() { | |
var f = arguments.length, | |
j, | |
h = { | |
method: b | |
}; | |
0 < f && "function" === | |
typeof arguments[f - 1] ? (1 < f && "function" === typeof arguments[f - 2] ? (j = { | |
success: arguments[f - 2], | |
error: arguments[f - 1] | |
}, | |
h.params = g.call(arguments, 0, f - 2)) : (j = { | |
success: arguments[f - 1] | |
}, | |
h.params = g.call(arguments, 0, f - 1)), m["" + ++i] = j, h.id = i) : h.params = g.call(arguments, 0); | |
if (a.namedParams && 1 === h.params.length) h.params = h.params[0]; | |
d(h) | |
} | |
} | |
function g(a, b, f, j) { | |
if (f) { | |
var h, | |
i; | |
b ? (h = function(a) { | |
h = M; | |
d({ | |
id: b, | |
result: a | |
}) | |
}, | |
i = function(a, f) { | |
i = M; | |
var g = { | |
id: b, | |
error: { | |
code: -32099, | |
message: a | |
} | |
}; | |
if (f) g.error.data = f; | |
d(g) | |
}) : h = i = M; | |
"[object Array]" === | |
Object.prototype.toString.call(j) || (j = [j]); | |
try { | |
var l = f.method.apply(f.scope, j.concat([h, i])); | |
N(l) || h(l) | |
} catch(m) { | |
i(m.message) | |
} | |
} else b && d({ | |
id: b, | |
error: { | |
code: -32601, | |
message: "Procedure not found." | |
} | |
}) | |
} | |
var j, | |
h = b.serializer || oa(), | |
i = 0, | |
m = {}; | |
return j = { | |
incoming: function(a) { | |
a = h.parse(a); | |
if (a.method) b.handle ? b.handle(a, d) : g(a.method, a.id, b.local[a.method], a.params); | |
else { | |
var f = m[a.id]; | |
a.error ? f.error && f.error(a.error) : f.success && f.success(a.result); | |
delete m[a.id] | |
} | |
}, | |
init: function() { | |
if (b.remote) for (var d in b.remote) b.remote.hasOwnProperty(d) && | |
(a[d] = f(b.remote[d], d)); | |
j.down.init() | |
}, | |
destroy: function() { | |
for (var d in b.remote) b.remote.hasOwnProperty(d) && a.hasOwnProperty(d) && delete a[d]; | |
j.down.destroy() | |
} | |
} | |
}; | |
u.easyXDM = y | |
})(d, document, location, d.setTimeout, decodeURIComponent, encodeURIComponent); (function(a, b, d, g) { | |
a.fn.caret = function(h, i) { | |
var p, | |
o, | |
t = this[0], | |
n = a.browser.msie; | |
if ("object" === typeof h && "number" === typeof h.start && "number" === typeof h.end) p = h.start, | |
o = h.end; | |
else if ("number" === typeof h && "number" === typeof i) p = h, | |
o = i; | |
else if ("string" === typeof h) - 1 < | |
(p = t.value.indexOf(h)) ? o = p + h[b] : p = null; | |
else if ("[object RegExp]" === Object.prototype.toString.call(h)) { | |
var r = h.exec(t.value); | |
if (null != r) p = r.index, | |
o = p + r[0][b] | |
} | |
if ("undefined" != typeof p) return n ? (n = this[0].createTextRange(), n.collapse(!0), n.moveStart("character", p), n.moveEnd("character", o - p), n.select()) : (this[0].selectionStart = p, this[0].selectionEnd = o), | |
this[0].focus(), | |
this; | |
if (n) { | |
o = document.selection; | |
var z, | |
H; | |
"textarea" != this[0].tagName.toLowerCase() ? (n = this.val(), p = o[d]()[g](), p.moveEnd("character", n[b]), | |
z = "" == p.text ? n[b] : n.lastIndexOf(p.text), p = o[d]()[g](), p.moveStart("character", -n[b]), H = p.text[b]) : (p = o[d](), o = p[g](), o.moveToElementText(this[0]), o.setEndPoint("EndToEnd", p), z = o.text[b] - p.text[b], H = z + p.text[b]) | |
} else z = t.selectionStart, | |
H = t.selectionEnd; | |
p = t.value.substring(z, H); | |
return { | |
start: z, | |
end: H, | |
text: p, | |
replace: function(a) { | |
return t.value.substring(0, z) + a + t.value.substring(H, t.value[b]) | |
} | |
} | |
} | |
})(b, "length", "createRange", "duplicate"); (function(a, b) { | |
a.fn.allParents = function() { | |
if (!this.length) return a([]); | |
for (var d = a(this[0]), g = d.parents(), d = d[0].ownerDocument; d !== b;) d = (d.parentWindow || d.defaultView).frameElement, | |
g.push(d), | |
Array.prototype.push.apply(g, a(d).parents().toArray()), | |
d = d.ownerDocument; | |
return g | |
} | |
})(b, document); (function(a, b) { | |
a.fn.bgPosition = function() { | |
return b.defaultView && b.defaultView.getComputedStyle ? this.css("background-position") : !this[0] || !this[0].currentStyle ? "0 0": this[0].currentStyle.backgroundPositionX + " " + this[0].currentStyle.backgroundPositionY | |
} | |
})(b, document); (function(a, b) { | |
function d(a, | |
b, g) { | |
for (var j = a.constructor, g = { | |
notImportant: !g | |
}, | |
h = 0; h < a.length; h++) for (var i in b) b.hasOwnProperty(i) && j.style(a[h], i, b[i], g) | |
} | |
b.reset = { | |
shared: { | |
"background-image": "none", | |
"background-origin": "padding-box", | |
"background-size": "auto", | |
"border-spacing": "0", | |
border: "0 solid black", | |
"border-image": "none", | |
bottom: "auto", | |
clear: "none", | |
color: "#CFCFCF", | |
content: "normal", | |
crop: "auto", | |
cursor: "auto", | |
direction: "ltr", | |
"float": "none", | |
"font-family": '"Lucida Grande", Arial, sans-serif', | |
"font-size": "13px", | |
"font-size-adjust": "none", | |
"font-stretch": "normal", | |
"font-style": "normal", | |
"font-variant": "normal", | |
"font-weight": "normal", | |
height: "auto", | |
left: "auto", | |
"letter-spacing": "normal", | |
"line-break": "auto", | |
"line-height": "normal", | |
"margin-bottom": "0", | |
"margin-left": "0", | |
"margin-right": "0", | |
"margin-top": "0", | |
"max-height": "none", | |
"max-width": "none", | |
"min-height": "none", | |
"min-width": "none", | |
"outline-color": "invert", | |
"outline-style": "none", | |
"outline-width": "medium", | |
"overflow-wrap": "normal", | |
"padding-bottom": "0", | |
"padding-left": "0", | |
"padding-right": "0", | |
"padding-top": "0", | |
position: "static", | |
quotes: "none", | |
right: "auto", | |
"text-autospace": "none", | |
"text-decoration": "none", | |
"text-outline": "none", | |
"text-overflow": "clip", | |
"text-shadow": "none", | |
"text-transform": "none", | |
"text-wrap": "none", | |
top: "auto", | |
"unicode-bidi": "normal", | |
visibility: "visible", | |
"white-space": "normal", | |
width: "auto", | |
"word-break": "normal", | |
"word-spacing": "normal", | |
"z-index": "auto" | |
}, | |
block: { | |
display: "block", | |
overflow: "visible", | |
"overflow-clip": "auto", | |
"overflow-style": "auto", | |
"overflow-x": "visible", | |
"overflow-y": "visible", | |
"text-align": "left", | |
"text-indent": "0", | |
widows: "2" | |
}, | |
inline: { | |
display: "inline", | |
"vertical-align": "baseline" | |
}, | |
table: { | |
"border-collapse": "separate", | |
"table-layout": "auto", | |
display: "table" | |
}, | |
tableCell: { | |
"empty-cells": "show", | |
"vertical-align": "baseline", | |
display: "table-cell" | |
}, | |
tableRow: { | |
display: "table-row" | |
}, | |
list: { | |
"list-style-image": "none", | |
"list-style-position": "outside", | |
"list-style-type": "disc" | |
}, | |
link: { | |
cursor: "pointer" | |
}, | |
listItem: { | |
display: "list-item" | |
}, | |
textInput: { | |
cursor: "text" | |
} | |
}; | |
var g = ["moz", "webkit", "o", "ms"], | |
h = { | |
"border-top-left-radius": 0, | |
"border-top-right-radius": 0, | |
"border-bottom-left-radius": 0, | |
"border-bottom-right-radius": 0, | |
"box-shadow": "none" | |
}, | |
i; | |
for (i in h) { | |
b.reset[i] = h[i]; | |
for (var p = 0; p < g.length; p++) h.hasOwnProperty(i) && (b.reset["-" + g[p] + "-" + i] = h[i]) | |
} | |
if (b.support.opacity) b.reset.opacity = "1", | |
b.reset["background-color"] = "transparent", | |
b.reset["background-attachment"] = "scroll", | |
b.reset["background-position"] = "0 0", | |
b.reset["background-image"] = "none", | |
b.reset["background-repeat"] = "repeat"; | |
b.fn.applyBlockStyles = function() { | |
var a = b.extend({}, | |
b.reset.shared, b.reset.block); | |
d(this, a, !1); | |
return this | |
}; | |
b.fn.applyInlineStyles = function() { | |
var a = b.extend({}, | |
b.reset.shared, b.reset.inline); | |
d(this, a, !1); | |
return this | |
}; | |
b.fn.applyTableStyles = function() { | |
this.applyBlockStyles(); | |
d(this, b.reset.table, !1); | |
return this | |
}; | |
b.fn.applyTableCellStyles = function() { | |
this.applyBlockStyles(); | |
d(this, b.reset.tableCell, !1); | |
return this | |
}; | |
b.fn.applyTableRowStyles = function() { | |
this.applyBlockStyles(); | |
d(this, b.reset.tableRow, !1); | |
return this | |
}; | |
b.fn.applyListStyles = function() { | |
this.applyBlockStyles(); | |
d(this, b.reset.list, !1); | |
return this | |
}; | |
b.fn.applyLinkStyles = function() { | |
this.applyInlineStyles(); | |
d(this, b.reset.link, !1); | |
return this | |
}; | |
b.fn.applyListItemStyles = function() { | |
this.applyBlockStyles(); | |
d(this, b.reset.listItem, !1); | |
return this | |
}; | |
b.fn.applyTextInputStyles = function() { | |
this.applyInlineStyles(); | |
d(this, b.reset.textInput, !1); | |
return this | |
}; | |
b.fn.cssImportant = function(a, b) { | |
return this.css(a, b, !0) | |
} | |
})(d, b); (function(a, b) { | |
b.htmlEncode = function(a) { | |
return b("<div/>").text(a || "").html() | |
}; | |
b.htmlDecode = function(a) { | |
return b("<div/>").html(a || | |
"").text() | |
} | |
})(d, b); (function(a) { | |
a.fn.trueCoordinates = function(a) { | |
if (!a) return { | |
left: parseFloat(this.attr("clipboard_left")), | |
top: parseFloat(this.attr("clipboard_top")) | |
}; | |
this.attr("clipboard_left", a.left).attr("clipboard_top", a.top); | |
return this | |
}; | |
a.fn.removeTrueCoordinates = function() { | |
return this.removeAttr("clipboard_left").removeAttr("clipboard_top") | |
} | |
})(b); (function(a, b) { | |
a.fn.trueOffset = function() { | |
for (var d = this.offset(), g = this[0].ownerDocument; g !== b;) { | |
var g = (g.parentWindow || g.defaultView).frameElement, | |
h = a(g).offset(); | |
d.left += h.left; | |
d.top += h.top; | |
g = g.ownerDocument | |
} | |
return d | |
} | |
})(b, document); (function() { | |
function a(b) { | |
return 10 > b ? "0" + b: b | |
} | |
function b(a) { | |
i.lastIndex = 0; | |
return i.test(a) ? '"' + a.replace(i, | |
function(a) { | |
var b = t[a]; | |
return "string" === typeof b ? b: "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice( - 4) | |
}) + '"': '"' + a + '"' | |
} | |
function g(a, d) { | |
var h, | |
i, | |
t, | |
q, | |
r = p, | |
C, | |
z = d[a]; | |
z && "object" === typeof z && "function" === typeof z.toJSON && (z = z.toJSON(a)); | |
"function" === typeof n && (z = n.call(d, a, z)); | |
switch (typeof z) { | |
case "string": | |
return b(z); | |
case "number": | |
return isFinite(z) ? "" + z: "null"; | |
case "boolean": | |
case "null": | |
return "" + z; | |
case "object": | |
if (!z) return "null"; | |
p += o; | |
C = []; | |
if ("[object Array]" === Object.prototype.toString.apply(z)) { | |
q = z.length; | |
for (h = 0; h < q; h += 1) C[h] = g(h, z) || "null"; | |
t = 0 === C.length ? "[]": p ? "[\n" + p + C.join(",\n" + p) + "\n" + r + "]": "[" + C.join(",") + "]"; | |
p = r; | |
return t | |
} | |
if (n && "object" === typeof n) { | |
q = n.length; | |
for (h = 0; h < q; h += 1) i = n[h], | |
"string" === typeof i && (t = g(i, z)) && C.push(b(i) + (p ? ": ": ":") + t) | |
} else for (i in z) Object.hasOwnProperty.call(z, i) && (t = g(i, | |
z)) && C.push(b(i) + (p ? ": ": ":") + t); | |
t = 0 === C.length ? "{}": p ? "{\n" + p + C.join(",\n" + p) + "\n" + r + "}": "{" + C.join(",") + "}"; | |
p = r; | |
return t | |
} | |
} | |
if ("function" !== typeof Date.prototype.toJSON) Date.prototype.toJSON = function() { | |
return isFinite(this.valueOf()) ? this.getUTCFullYear() + "-" + a(this.getUTCMonth() + 1) + "-" + a(this.getUTCDate()) + "T" + a(this.getUTCHours()) + ":" + a(this.getUTCMinutes()) + ":" + a(this.getUTCSeconds()) + "Z": null | |
}, | |
String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function() { | |
return this.valueOf() | |
}; | |
var h = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, | |
i = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, | |
p, | |
o, | |
t = { | |
"\u0008": "\\b", | |
"\t": "\\t", | |
"\n": "\\n", | |
"\u000c": "\\f", | |
"\r": "\\r", | |
'"': '\\"', | |
"\\": "\\\\" | |
}, | |
n; | |
if ("function" !== typeof d.CLIPBOARD.JSON.stringify) d.CLIPBOARD.JSON.stringify = function(a, b, d) { | |
var j; | |
o = p = ""; | |
if ("number" === typeof d) for (j = 0; j < d; j += 1) o += " "; | |
else "string" === | |
typeof d && (o = d); | |
if ((n = b) && "function" !== typeof b && ("object" !== typeof b || "number" !== typeof b.length)) throw Error("JSON.stringify"); | |
return g("", { | |
"": a | |
}) | |
}; | |
if ("function" !== typeof d.CLIPBOARD.JSON.parse) d.CLIPBOARD.JSON.parse = function(a, b) { | |
function d(a, g) { | |
var j, | |
h, | |
i = a[g]; | |
if (i && "object" === typeof i) for (j in i) Object.hasOwnProperty.call(i, j) && (h = d(i, j), void 0 !== h ? i[j] = h: delete i[j]); | |
return b.call(a, g, i) | |
} | |
var g, | |
a = "" + a; | |
h.lastIndex = 0; | |
h.test(a) && (a = a.replace(h, | |
function(a) { | |
return "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice( - 4) | |
})); | |
if (/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) return g = eval("(" + a + ")"), | |
"function" === typeof b ? d({ | |
"": g | |
}, | |
"") : g; | |
throw new SyntaxError("JSON.parse"); | |
} | |
})() | |
})(); | |
this.xdm = a.xdm = d.easyXDM; | |
if (this.domain !== d.location.host) this.xdm = this.xdm.noConflict(M.util.idSuffix); | |
this.$("head").append(this.$("<link/>").attr({ | |
type: "text/css", | |
rel: "stylesheet", | |
href: this.staticBaseUrl + | |
"/css/1.0.17/clipper.css" | |
})); | |
this.trigger("initialized"); | |
return ! 0 | |
} | |
function o(h, p) { | |
p = M.util.merge(M.util.merge({}, | |
ca), p); | |
this.scope = h || d.document.documentElement; | |
this.document = this.scope.ownerDocument; | |
this.documentId = T(this.document); | |
this.preferences = {}; | |
this.allowedMetrics = p.allowedMetrics; | |
this.baseUri = d.location.protocol + "//" + d.CLIPBOARD.config.baseUrl + "/"; | |
this.staticBaseUrl = d.CLIPBOARD.config.staticBaseUrl; | |
this.domain = d.CLIPBOARD.config.baseUrl; | |
this.instanceId = p.instanceId; | |
this.origin = p.origin || | |
"default"; | |
this.bookmarkletVersion = p.bookmarkletVersion; | |
if (0 > this.documentId) L.push(this.document), | |
this.documentId = L.length - 1; | |
this.user = { | |
guid: "", | |
sessionId: "" | |
}; | |
var n; | |
if (n = /^(https?):\/\/www\.clipboard\.com\//.exec(this.baseUri)) this.baseUri = n[1] + "://clipboard.com/"; | |
if (!/^http/.test(this.staticBaseUrl)) this.staticBaseUrl = d.location.protocol + this.staticBaseUrl; | |
H[this.documentId] || (H[this.documentId] = { | |
env: { | |
iHatePrototype: g(this.document) | |
}, | |
baseData: {}, | |
$: null, | |
bodyOffset: {} | |
}); | |
this.$ = H[this.documentId].$; | |
this.env = H[this.documentId].env; | |
this.baseData = H[this.documentId].baseData; | |
this.support = i; | |
this.defaultTitle = M.util.trim(this.document.title) || this.document.location.href; | |
N.call(this); | |
if (!this.support) this.support = i = { | |
rgba: t(this.$), | |
dpi: z(this.$), | |
regexSplit: 3 === "x y".split(/(\s)/).length | |
}; | |
n = { | |
$: this.$, | |
xdm: this.xdm, | |
document: this.document, | |
baseUri: this.baseUri, | |
baseData: this.baseData, | |
bodyOffset: this.bodyOffset, | |
support: this.support, | |
preferences: this.preferences, | |
staticBaseUrl: this.staticBaseUrl, | |
domain: this.domain | |
}; | |
this.ui = p.createUiThunk(n); | |
this.dao = new M.DataAccess(this.baseUri, this.$.ajax, this.xdm); | |
this.controls = [this.ui]; | |
this.selectors = p.populateSelectorsThunk(n); | |
this.extractors = {}; | |
for (var r in this.selectors) this.selectors.hasOwnProperty(r) && (this.extractors[r] = this.selectors[r].getExtractor()); | |
if (M.extractors.BookmarkExtractor) this.extractors.bookmark = new M.extractors.BookmarkExtractor(n); | |
y.call(this); | |
this.on("activated", | |
function() { | |
this.activeSelector ? a.call(this, this.activeSelector.type, !0) : this.dao.fetchUserData() | |
}); | |
this.env.iHatePrototype.stupidFuckingPrototype && b.call(this, "info", { | |
data: "badPrototypeVersion" | |
}); | |
o.instances[this.origin] || (o.instances[this.origin] = {}); | |
o.instances[this.origin][this.instanceId] = this; | |
"function" === typeof p.debug && p.debug(this) | |
} | |
i = void 0; | |
var H = {}, | |
L = [], | |
M = d.CLIPBOARD.client, | |
$ = "rectangle", | |
ca = { | |
populateSelectorsThunk: function(a) { | |
return { | |
text: new M.selectors.TextSelector(a), | |
rectangle: new M.selectors.RectangleSelector(a) | |
} | |
}, | |
createUiThunk: function(a) { | |
return new M.ui.WidgetUiController(a) | |
}, | |
allowedMetrics: null | |
}; | |
o.instances = {}; | |
o.checkedLoginStatus = !1; | |
M.util.inherit(o, new M.ActivatableControl, new M.EventEmitter); | |
o.prototype.constructor = o; | |
o.prototype.createClip = function() { | |
var a = { | |
source: d.location.href, | |
date: (new Date).toString(), | |
type: "clip", | |
version: "0.1", | |
title: "", | |
html: "", | |
text: "", | |
annotation: "", | |
width: 0, | |
height: 0, | |
top: null, | |
left: null, | |
"private": !0 | |
}; | |
return function(b) { | |
return M.util.merge(M.util.merge({}, | |
M.util.merge(a, { | |
title: this.defaultTitle | |
})), b) | |
} | |
} (); | |
o.prototype.shouldLogMetric = function(a) { | |
return ! this.allowedMetrics || | |
this.allowedMetrics[a] | |
}; | |
o.prototype.setActiveSelectorByContext = function() { | |
for (var a in this.selectors) if (this.selectors.hasOwnProperty(a) && this.selectors[a].shouldUseAsDefault()) { | |
this.setActiveSelector(a); | |
break | |
} | |
}; | |
o.prototype.setActiveSelector = function(a) { | |
if (this.selectors[a] && this.activeSelector !== this.selectors[a]) this.activeSelector && (this.activeSelector.deactivate(), this.removeControl(this.activeSelector)), | |
this.activeSelector = this.selectors[a], | |
this.controls.push(this.activeSelector) | |
}; | |
o.prototype.doActivate = | |
function() { | |
var a = !0; | |
return function() { | |
a ? a = !1: this.trigger("reloaded") | |
} | |
} (); | |
M.Clipper = o | |
})(window); (function(d) { | |
function i() {} | |
i.prototype = { | |
extract: function() { | |
return "" | |
} | |
}; | |
d.CLIPBOARD.client.Extractor = i | |
})(window); | |
(function(d) { | |
function i() {} | |
i.prototype = { | |
select: function() {}, | |
getSelection: function() { | |
return { | |
startElement: null, | |
endElement: null | |
} | |
}, | |
disableGlobalEvents: function() {}, | |
enableGlobalEvents: function() {}, | |
shouldUseAsDefault: function() { | |
return ! 1 | |
}, | |
getExtractor: function() { | |
return null | |
}, | |
setPreferences: function() {} | |
}; | |
i.failureStatus = { | |
nowhereToZoom: "nowhereToZoom", | |
maxSizeExceededViaZoom: "maxSizeExceededViaZoom", | |
maxSizeExceededViaDrag: "maxSizeExceededViaDrag" | |
}; | |
d.CLIPBOARD.client.Selector = i | |
})(window); | |
(function(d) { | |
function i(a) { | |
a.props = {}; | |
a.props[b.util.doNotClipAllAttributeName] = !0; | |
return new this.xdm.Socket(a) | |
} | |
function g(a, b, d) { | |
this.baseUri = a; | |
this.sendAjaxRequest = b; | |
this.promises = []; | |
this.xdm = d | |
} | |
var b = d.CLIPBOARD.client, | |
a = { | |
crossDomainPostFailed: "crossDomainPostFailedForPromise", | |
emptyResponse: "emptyResponseFromPromise", | |
retryCount: "maxedOutPromiseRetryCount", | |
serverSideSave: "failedToSaveClipOrBlob", | |
promiseUnavailable: "promiseUnavailable", | |
timeout: "savingClipTimedOut", | |
malformedResponse: "malformedJsonInClipSaveResponse", | |
invalidResponse: "invalidResponseSavingClip", | |
expiredRequest: "expiredRequest", | |
expiredSession: "expiredSession", | |
unauthorized: "unauthorized", | |
badRequest: "badRequest", | |
emptyResult: "emptyResultSavingClip", | |
unknown: "unknown" | |
}; | |
g.promiseResult = { | |
processing: 0, | |
succeeded: 1, | |
failedToSave: -1, | |
unavailable: -2 | |
}; | |
g.sendFailureStatus = a; | |
b.util.inherit(g, new b.EventEmitter); | |
g.prototype.constructor = g; | |
b.util.merge(g.prototype, { | |
addPromiseCheck: function(b, d) { | |
var i = this, | |
d = d || (new Date).getTime(); | |
i.promises.push(b); | |
if (!i.promises.timeoutId) i.promises.timeoutId = | |
setTimeout(function() { | |
i.promises.timeoutId = null; | |
if (0 !== i.promises.length) { | |
var b = i.promises.shift(); | |
i.sendAjaxRequest({ | |
dataType: "jsonp", | |
url: i.baseUri + "api/v1/promises/" + encodeURIComponent(b.key), | |
error: function() { | |
i.trigger("sendFailed", { | |
reason: a.crossDomainPostFailed | |
}) | |
}, | |
success: function(h) { | |
if (h) switch (h.status) { | |
case g.promiseResult.processing: | |
if (10 < b.tryCount) { | |
i.trigger("sendFailed", { | |
reason: a.retryCount | |
}); | |
break | |
} | |
b.tryCount++; | |
i.addPromiseCheck(b, d); | |
break; | |
case g.promiseResult.succeeded: | |
i.trigger("sendSucceeded", | |
{ | |
retryAttempts: b.tryCount, | |
duration: (new Date).getTime() - d | |
}); | |
break; | |
case g.promiseResult.failedToSave: | |
i.trigger("sendFailed", { | |
reason: a.serverSideSave | |
}); | |
break; | |
case g.promiseResult.unavailable: | |
i.trigger("sendFailed", { | |
reason: a.promiseUnavailable | |
}) | |
} else i.trigger("sendFailed", { | |
reason: a.emptyResponse | |
}) | |
} | |
}) | |
} | |
}, | |
500) | |
}, | |
updatePreferences: function(a) { | |
var g = {}; | |
b.util.forEach(a, | |
function(a, b) { | |
g[b] = "object" === typeof a ? d.CLIPBOARD.JSON.stringify(a) : a | |
}); | |
var K = i.call(this, { | |
remote: this.baseUri + "utils/xdm", | |
onReady: function() { | |
var a = | |
d.CLIPBOARD.JSON.stringify({ | |
APIpath: "/api/v1/users", | |
method: "PUT", | |
data: g | |
}); | |
K.postMessage(a) | |
}, | |
onMessage: function() { | |
K.destroy() | |
} | |
}) | |
}, | |
sendClip: function(b) { | |
this.trigger("sendingClip"); | |
var g = this, | |
K = setTimeout(function() { | |
g.trigger("sendFailed", { | |
reason: a.timeout | |
}) | |
}, | |
3E4), | |
s = i.call(this, { | |
remote: g.baseUri + "utils/xdm", | |
onReady: function() { | |
clearTimeout(K); | |
s.postMessage(d.CLIPBOARD.JSON.stringify({ | |
APIpath: "/api/v1/clips", | |
method: "POST", | |
data: b | |
})) | |
}, | |
onMessage: function(b) { | |
var h; | |
if (b && 0 < b.length) try { | |
if (b = d.CLIPBOARD.JSON.parse(b), | |
b.error) { | |
var i = b.error; | |
h = i.expiredSession ? a.expiredSession: i.expiredRequest ? a.expiredRequest: i.badRequest ? a.badRequest: i.unauthorized ? a.unauthorized: a.unknown | |
} else b.result ? g.addPromiseCheck({ | |
key: b.result.promiseKey, | |
tryCount: 0 | |
}) : h = a.emptyResult | |
} catch(F) { | |
h = a.malformedResponse | |
} else h = a.invalidResponse; | |
h && g.trigger("sendFailed", { | |
reason: h | |
}); | |
s.destroy() | |
} | |
}) | |
}, | |
logMetric: function(a, b, d) { | |
var g = this; | |
setTimeout(function() { | |
g.sendAjaxRequest(g.baseUri + "api/v1/metrics/" + (d.guid || ""), { | |
type: "GET", | |
data: { | |
eventName: a, | |
sessionId: d.sessionId, | |
data: b || {} | |
}, | |
dataType: "jsonp" | |
}) | |
}, | |
20) | |
}, | |
fetchAutocompleteData: function() { | |
var a = this, | |
b = i.call(this, { | |
remote: a.baseUri + "utils/xdm", | |
onReady: function() { | |
var a = d.CLIPBOARD.JSON.stringify({ | |
action: "fetchAutocompleteData" | |
}); | |
b.postMessage(a) | |
}, | |
onMessage: function(g) { | |
if (g && g.length) { | |
var i = null; | |
try { | |
i = d.CLIPBOARD.JSON.parse(g).result, | |
a.trigger("autocompleteDataReceived", { | |
dict: i | |
}) | |
} catch(u) { | |
a.trigger("autocompleteDataFailed", { | |
error: "invalidJson" | |
}) | |
} | |
} else a.trigger("autocompleteDataFailed", { | |
error: "xdmFailed" | |
}); | |
b.destroy() | |
} | |
}) | |
}, | |
fetchUserData: function() { | |
var a = this, | |
b = i.call(a, { | |
remote: this.baseUri + "utils/xdm", | |
onReady: function() { | |
b.postMessage(d.CLIPBOARD.JSON.stringify({ | |
action: "fetchUserData" | |
})) | |
}, | |
onMessage: function(g) { | |
var i; | |
if (!g || !g.length) i = { | |
error: !0, | |
message: "Empty response" | |
}; | |
else try { | |
i = d.CLIPBOARD.JSON.parse(g) | |
} catch(u) { | |
i = { | |
error: !0, | |
message: "Invalid json" | |
} | |
} | |
a.trigger("userDataReceived", { | |
error: i.error ? i.message: null, | |
config: i.config, | |
loggedIn: i.loggedIn, | |
preferences: i.preferences, | |
userGuid: i.guid, | |
sessionId: i.sid, | |
thirdPartyCookiesEnabled: i.thirdPartyCookiesEnabled | |
}); | |
b.destroy() | |
} | |
}) | |
} | |
}); | |
b.DataAccess = g | |
})(window); (function(d) { | |
function i() {} | |
i.prototype = { | |
showLoadingMessage: function() {}, | |
show3rdPartyCookiesErrorMessage: function() {}, | |
hideNotification: function() {}, | |
showErrorNotification: function() {}, | |
enableClipping: function() {}, | |
disableClipping: function() {}, | |
showNotification: function() {}, | |
handleExtraction: function() {}, | |
setPreferences: function() {}, | |
setLoginState: function() {} | |
}; | |
d.CLIPBOARD.client.UiController = i | |
})(window); | |
(function(d) { | |
function i() {} | |
d = d.CLIPBOARD.client; | |
d.util.inherit(i, new d.UiController, new d.ActivatableControl, new d.EventEmitter); | |
i.prototype.constructor = i; | |
d.ui.NoOpUiController = i | |
})(window); | |
(function(d) { | |
function i(a) { | |
var b = [], | |
d; | |
for (d in a) a.hasOwnProperty(d) && b.push(d + "=" + a[d]); | |
return b.join(",") | |
} | |
function g(a, b, g) { | |
var h = this.$, | |
i, | |
r; | |
void 0 === d.screenLeft ? (i = d.screenX, r = d.screenY) : (i = d.screenLeft, r = d.screenTop); | |
r += 100; | |
g ? (h = g.offset(), i += h.left + g.outerWidth() / 2, r += h.top + g.outerHeight() / 2) : (i += h(d).width() / 2, h(d).height()); | |
a = Math.max(0, i - a / 2); | |
b = Math.max(0, r - b / 2); | |
return { | |
left: a, | |
top: b | |
} | |
} | |
function b() { | |
var a = this, | |
b = d.setInterval(function() { | |
if (a.window.closed) a.alreadyClosed || a.trigger("closed", | |
{ | |
source: "manual" | |
}), | |
d.clearInterval(b), | |
a.alreadyClosed = !1 | |
}, | |
100) | |
} | |
function a(a, b, d) { | |
h.EventEmitter.call(this); | |
h.ActivatableControl.call(this); | |
d = d || {}; | |
this.$ = a.$; | |
this.xdm = a.xdm; | |
this.domain = a.domain; | |
this.url = b; | |
this.name = d.name || "popup_" + Math.round(1E6 * Math.random()); | |
this.width = d.width || 640; | |
this.height = d.height || 480 | |
} | |
var h = d.CLIPBOARD.client; | |
h.util.inherit(a, new h.ActivatableControl, new h.EventEmitter); | |
h.util.merge(a.prototype, { | |
constructor: a, | |
name: "", | |
window: null, | |
params: { | |
location: "yes", | |
resizable: "yes", | |
alwaysRaised: "yes" | |
}, | |
open: function(a) { | |
if (this.isOpen()) return this.window.focus(), | |
this.window; | |
this.window && this.destroy(); | |
h.popups[this.name] = { | |
done: !1 | |
}; | |
var K = this.$, | |
a = K.extend({ | |
width: this.width, | |
height: this.height | |
}, | |
this.params, g.call(this, this.width, this.height, a)), | |
s = K('iframe[name="' + this.name + '"]'); | |
s.length || (s = K("<iframe/>").attr("src", "https://" + this.domain + "/utils/clipper-connect-iframe").attr("name", this.name).css({ | |
top: -1E4, | |
left: -1E4, | |
display: "none", | |
position: "absolute" | |
}).appendTo("body")); | |
this.window = d.open(this.url, | |
this.name + Math.round(1E5 * Math.random()), i(a)); | |
b.call(this); | |
var u = this; | |
K(d).on("message.clipboard_review", | |
function(a) { | |
a = a.originalEvent; ! a || a.origin !== "https://" + u.domain || 0 !== a.data.indexOf("clipboard:") || (u.trigger("externalWorkCompleted", { | |
status: a.data.substring(10) | |
}), s.remove(), s = null) | |
}); | |
this.trigger("opened", { | |
window: this.window | |
}); | |
return this.window | |
}, | |
close: function(a, b) { | |
if (this.isOpen()) { | |
if ("manual" !== a) this.alreadyClosed = !0; | |
this.window.close(); | |
this.$(d).off("message.clipboard_review"); | |
this.trigger("closed", | |
{ | |
source: a || "programmatic", | |
status: b | |
}) | |
} | |
}, | |
destroy: function() { | |
this.close(); | |
this.window = null; | |
this.trigger("destroyed") | |
}, | |
isOpen: function() { | |
return this.window ? !this.window.closed: !1 | |
}, | |
doDeactivate: function() { | |
this.destroy() | |
} | |
}); | |
a.getOrigin = function() { | |
return d.location.href | |
}; | |
a.factory = function(b, d) { | |
switch (b) { | |
case "login": | |
return new a(d, d.baseUri + "login?display=popup", { | |
name: "clipboardLogin", | |
width: 640, | |
height: 380 | |
}); | |
default: | |
throw Error("Unsupported popup window type"); | |
} | |
}; | |
h.ui.PopupWindow = a | |
})(window); | |
(function(d) { | |
function i(a) { | |
return "review_" + v.util.addSuffix(a) | |
} | |
function g(a, d, g) { | |
a.trigger("confirmed", { | |
method: g, | |
clip: d.clip, | |
reviewData: b.call(a) | |
}) | |
} | |
function b() { | |
var a = this.$, | |
b = v.util.trim(a("#" + r.annotationInput).val()); | |
b === a("#" + r.annotationInput).attr("placeholder") && (b = ""); | |
return { | |
title: v.util.trim(a("#" + r.titleInput).val()), | |
tweet: this.clipAction.postToTwitter, | |
postToFacebook: this.clipAction.postToFacebook, | |
published: this.clipAction.publish, | |
annotation: b | |
} | |
} | |
function a(a, b) { | |
a.trigger("canceled", { | |
method: b | |
}) | |
} | |
function h(a) { | |
var b = this.$, | |
d = b("<div/>").attr("id", r.bookmarkTitle).text(a.clip.title), | |
a = b("<div/>").attr("id", r.bookmarkSubtitle).text(a.clip.source), | |
g = b("<img/>").attr("id", r.bookmarkImage).attr("src", this.staticBaseUrl + "/images/1.0.17/bookmarkMed.png"), | |
d = b("<div/>").attr("id", r.bookmarkWrapper).append(g, d, a); | |
return b("<div/>").append(d).html() | |
} | |
function n(a) { | |
var b = "Publish" === a ? "publish": "postTo" + a; | |
this.clipAction[b] = !this.clipAction[b]; | |
this.$("#" + r["actionMenuItem" + a]).toggleClass(r.actionMenuActive) | |
} | |
function K(a, b) { | |
return function(d) { | |
"success" === d.status && (n.call(a, b), a.preferences["connectedTo" + b] || a.trigger("socialNetworkConnected", { | |
network: b | |
}), a[b.toLowerCase() + "Window"].close({ | |
source: "external" | |
})) | |
} | |
} | |
function s(a, b) { | |
return function() { | |
a.$("#" + r["actionMenuItem" + b]).removeClass(r.spinner) | |
} | |
} | |
function u(a) { | |
this.baseUri = a.baseUri; | |
this.staticBaseUrl = a.staticBaseUrl; | |
this.$ = a.$; | |
this.domain = a.domain; | |
this.document = a.document; | |
this.$dialog = this.$overlay = null; | |
this.preferences = {}; | |
this.sandbox = null; | |
this.clipAction = | |
{ | |
publish: !1, | |
postToFacebook: !1, | |
postToTwitter: !1 | |
}; | |
this.facebookWindow = new v.ui.PopupWindow(a, "about:blank", { | |
name: "facebookStream" + v.util.idSuffix, | |
width: 650, | |
height: 310 | |
}); | |
var b = "twitter" + v.util.idSuffix, | |
g = "https://" + this.domain + "/oauth/twitter/?source=clipper&origin=" + d.encodeURIComponent(v.ui.PopupWindow.getOrigin()) + "&proxy=" + b; | |
this.twitterWindow = new v.ui.PopupWindow(a, g, { | |
name: b, | |
width: 550, | |
height: 550 | |
}); | |
this.twitterWindow.on("externalWorkCompleted", K(this, "Twitter")).on("closed", s(this, "Twitter")); | |
this.facebookWindow.on("externalWorkCompleted", | |
K(this, "Facebook")).on("closed", s(this, "Facebook")); | |
this.controls = [this.facebookWindow, this.twitterWindow] | |
} | |
var v = d.CLIPBOARD.client, | |
r = { | |
overlay: i("overlay"), | |
fancyButton: i("button"), | |
bookmarkTitle: i("bookmarkTitle"), | |
bookmarkSubtitle: i("bookmarkSubtitle"), | |
bookmarkImage: i("bookmarkImage"), | |
bookmarkWrapper: i("bookmarkWrapper"), | |
activeControl: i("activeControl"), | |
publishControl: i("publishControl"), | |
publishWrapper: i("publishWrapper"), | |
publishText: i("publishText"), | |
annotationInput: i("annotate"), | |
autocompleteTrigger: i("autocompleteTrigger"), | |
dialog: i("dialog"), | |
header: i("header"), | |
titleInput: i("title"), | |
contents: i("contents"), | |
clipContents: i("clipContents"), | |
controls: i("controls"), | |
control: i("control"), | |
footer: i("footer"), | |
inputContainer: i("inputContainer"), | |
buttonWrapper: i("buttonWrapper"), | |
save: i("save"), | |
cancel: i("cancel"), | |
actionMenu: i("actionMenu"), | |
actionMenuItem: i("actionMenuItem"), | |
actionMenuItemFacebook: i("actionMenuItemFacebook"), | |
actionMenuItemTwitter: i("actionMenuItemTwitter"), | |
actionMenuItemPublish: i("actionMenuItemPublish"), | |
actionMenuIcon: i("actionMenuIcon"), | |
actionMenuIcon_publish: i("actionMenuIcon_publish"), | |
actionMenuIcon_facebook: i("actionMenuIcon_facebook"), | |
actionMenuIcon_twitter: i("actionMenuIcon_twitter"), | |
actionMenuLabel: i("actionMenuLabel"), | |
actionMenuActive: i("actionMenuActive"), | |
spinner: i("spinner"), | |
wrapper: i("wrapper") | |
}; | |
v.util.inherit(u, new v.ActivatableControl, new v.EventEmitter); | |
u.prototype.close = function() { | |
if (this.isOpen()) { | |
this.trigger("closing"); | |
this.$("#" + r.annotationInput).autocompleteMe("destroy"); | |
if (this.sandbox) this.sandbox.destroy(), | |
this.sandbox = null; | |
var a = this, | |
b = this.$; | |
this.$overlay.fadeOut(200, | |
function() { | |
a.$overlay.remove(); | |
a.$overlay = null | |
}); | |
this.$dialog.fadeOut(200, | |
function() { | |
a.$dialog.remove(); | |
a.$dialog = null | |
}); | |
this.clipAction = { | |
publish: this.preferences.publishByDefault, | |
postToFacebook: !1, | |
postToTwitter: !1 | |
}; | |
b(this.document).off("." + v.util.eventNamespace.review); | |
this.trigger("closed") | |
} | |
}; | |
u.prototype.open = function(b) { | |
function s(a) { | |
return function() { | |
var b = aa.caret(), | |
d = aa.val(); | |
aa.val(d.substring(0, b.start) + a + d.substring(b.start)).caret(b.start + | |
1, b.start + 1); | |
J.trigger("autocompleteTriggered", { | |
source: "clickTrigger", | |
type: "#" === a ? "tag": "user" | |
}) | |
} | |
} | |
function u(a) { | |
var b = "autocompleteTrigger" + ("#" === a ? "Tag": "User"), | |
d = "#" === a ? "tags": "connections"; | |
return y("<span/>").applyInlineStyles().attr("id", i(b)).attr("title", "Show " + d).text(a).click(s(a)) | |
} | |
var y = this.$, | |
J = this; | |
J.trigger("opening"); | |
var K = y(d).width(), | |
S = y(d).height(), | |
t = b.clip.height + 2 + 30 + 158, | |
z, | |
p = b.clip.width, | |
N = b.clip.height, | |
o = b.rawHtml; | |
"bookmark" === b.clip.type ? (o = h.call(this, b), z = p = 640, N = 120, t = Math.min(S - | |
100, N + 2 + 30 + 158)) : (z = Math.min(Math.max(600, b.clip.width + 50), K - 100), t = Math.min(t, S - 100)); | |
this.$dialog = y("<div/>").applyBlockStyles().attr("id", r.dialog); | |
var H = y("<div/>").applyBlockStyles().attr("id", r.header); | |
y("<input/>").applyTextInputStyles().attr({ | |
type: "text", | |
id: r.titleInput, | |
tabindex: 1, | |
placeholder: "Enter a title for your clip", | |
value: v.util.trim(b.clip.title) || this.document.title | |
}).appendTo(H); | |
var L = y("<div/>").applyBlockStyles().attr("id", r.contents).cssImportant("height", t - 158 + "px"); | |
y("<div/>").applyBlockStyles().attr("id", | |
r.clipContents).cssImportant({ | |
height: N | |
}).appendTo(L); | |
var M = y("<div/>").applyBlockStyles().attr("id", r.footer), | |
$ = y("<div/>").applyBlockStyles().attr("id", r.inputContainer).appendTo(M), | |
ca = v.util.trim(b.clip.annote || ""), | |
aa = y("<input/>").applyTextInputStyles().attr({ | |
tabindex: 2, | |
id: r.annotationInput, | |
placeholder: "Enter annotation, #tags and @mentions", | |
title: "Enter annotation, #tags and @mentions", | |
spellcheck: "true", | |
type: "text", | |
value: ca ? ca + " ": "" | |
}).on("keypress keydown keyup", | |
function(a) { | |
27 === a.keyCode || 13 === | |
a.keyCode || a.stopPropagation() | |
}).autocompletify({ | |
fixed: !0, | |
setCss: function(a, b, d) { | |
a.cssImportant(b, d) | |
}, | |
createElement: function(a) { | |
a = y("<" + a + "/>"); | |
return "block" === a.css("display") ? a.applyBlockStyles() : a.applyInlineStyles() | |
} | |
}).appendTo($); | |
y("<div/>").applyBlockStyles().attr("id", r.autocompleteTrigger).append(u("#")).append(u("@")).appendTo($); (function() { | |
function a(b, d) { | |
var g = r.actionMenuItem, | |
h = b.toLowerCase(), | |
i = !1; | |
d && (g += " " + r.actionMenuActive); | |
if ("facebook" === h || "twitter" === h) i = !J.isLoggedIn; | |
g = y("<div/>").applyBlockStyles().addClass(g).attr("id", | |
r["actionMenuItem" + b]).append(y("<span/>").applyInlineStyles().attr("id", r["actionMenuIcon_" + h]).addClass(r.actionMenuIcon)).append(y("<span/>").applyInlineStyles().addClass(r.actionMenuLabel).text(b)).click(function() { | |
"publish" === h ? n.call(J, b) : J.clipAction[h] ? J[h + "Window"].close() : J.preferences["Twitter" === b ? "connectedToTwitter": "connectedToFbStream"] ? n.call(J, b) : (y(this).addClass(r.spinner), J[h + "Window"].open(y(this))) | |
}); | |
i && g.hide(); | |
return g | |
} | |
var b = y("<div/>").applyBlockStyles().attr("id", r.actionMenu).append(a("Publish", | |
J.preferences.publishByDefault)); | |
J.preferences.connectedToTimeline || b.append(a("Facebook")); | |
return b.append(a("Twitter")) | |
})().appendTo(M); | |
var Z = y("<span/>").applyInlineStyles().attr({ | |
id: r.cancel | |
}).text("Cancel").click(function() { | |
a(J, "cancelButton") | |
}), | |
$ = y("<button/>").applyInlineStyles().attr({ | |
id: r.save, | |
tabindex: 3 | |
}).addClass(r.fancyButton).text("Save").click(function() { | |
g(J, b, "saveButton") | |
}); | |
y("<div/>").applyBlockStyles().attr("id", r.buttonWrapper).append(Z, $).appendTo(M); | |
y("<div/>").applyBlockStyles().attr("id", | |
r.wrapper).append(H, L, M).appendTo(this.$dialog); | |
this.$dialog.appendTo("body").find('input[type="text"]').placeholder(!0); | |
this.sandbox = v.util.createSandbox(y, y("#" + r.clipContents)); | |
this.sandbox.$element.cssImportant({ | |
visibility: "visible", | |
left: "auto", | |
top: "auto", | |
position: "static", | |
width: p, | |
height: N, | |
opacity: 1 | |
}); | |
this.sandbox.addSandboxCss(this.staticBaseUrl); | |
this.sandbox.html('<div class="' + v.util.clipContainerClass + '">' + o + "</div>"); | |
v.util.assureFixedPositioning(this.$dialog); | |
N = p = 0; ! y.support.boxModel && | |
y.browser.msie && "8.0" === y.browser.version && (p = y(d).scrollTop(), N = y(d).scrollLeft()); | |
this.$overlay = y("<div>").applyBlockStyles().attr("id", r.overlay).cssImportant({ | |
top: 0, | |
left: 0, | |
position: "fixed" | |
}).appendTo("body"); | |
v.util.assureFixedPositioning(this.$overlay); | |
this.$overlay.animate({ | |
opacity: 0.8 | |
}, | |
500); | |
this.$dialog.cssImportant({ | |
left: b.clip.left - y(d).scrollLeft() - 15, | |
top: b.clip.top - y(d).scrollTop() - 81, | |
width: z, | |
height: t | |
}).css("opacity", 0).animate({ | |
opacity: 0.9 | |
}, | |
500); | |
this.$dialog.animate({ | |
left: 0.5 * (K - z) + N, | |
top: 0.5 * | |
(S - t) + p, | |
opacity: 1 | |
}, | |
700, "easeOutExpo", | |
function() { | |
var a = y(this).find("#" + r.annotationInput), | |
b = a.val().length; | |
a.focus().caret(b, b) | |
}); | |
y(this.document).on("keydown." + v.util.eventNamespace.review, | |
function(d) { | |
27 === d.keyCode ? a(J, "escapeKey") : 13 === d.keyCode && (d.target === Z[0] ? a(J, "cancelButton") : g(J, b, "enterKey")) | |
}); (function() { | |
if (y.browser.webkit && "wolframalpha.com" === document.domain) { | |
var a = []; | |
L.find("img").attr("src", | |
function() { | |
a.push(y(this).attr("src")); | |
y(this).css("opacity", "1"); | |
return "foo" | |
}); | |
var b = 0; | |
d.setTimeout(function() { | |
L.find("img").attr("src", | |
function() { | |
return a[b++] | |
}) | |
}, | |
1E3) | |
} | |
})(); | |
this.trigger("opened") | |
}; | |
u.prototype.constructor = u; | |
u.prototype.isOpen = function() { | |
return !! this.$overlay && !!this.$dialog | |
}; | |
u.prototype.doDeactivate = function() { | |
if (this.isOpen() && (this.close(), this.sandbox)) this.sandbox.destroy(), | |
this.sandbox = null | |
}; | |
u.prototype.setPreferences = function(a) { | |
this.preferences = a; | |
this.clipAction.publish = !!this.preferences.publishByDefault | |
}; | |
u.prototype.setLoginState = function(a) { | |
if (this.isLoggedIn = | |
a) a = "https://" + this.domain + "/utils/clipper-connect?origin=" + v.ui.PopupWindow.getOrigin() + "&proxy=" + this.facebookWindow.name, | |
this.facebookWindow.url = "http://www.facebook.com/dialog/oauth/?scope=email,publish_stream&client_id=" + d.CLIPBOARD.config.facebookAppId + "&redirect_uri=" + d.encodeURIComponent(a) + "&display=popup&response_type=token"; | |
this.isOpen() && (a = this.isLoggedIn ? "fadeIn": "fadeOut", this.$("#" + r.actionMenuIcon_facebook).parent()[a]("slow"), this.$("#" + r.actionMenuIcon_twitter).parent()[a]("slow")) | |
}; | |
v.ui.Review = u | |
})(window); | |
(function(d, i) { | |
function g(a) { | |
return "widget_" + M.util.addSuffix(a) | |
} | |
function b(a, b) { | |
for (var d = b.split(" "), g = 0; g < d.length; g++) if (/Active_clipboard_314159265$/.test(d[g])) return d[g]; | |
return "" | |
} | |
function a(a) { | |
return function() { | |
return g(a + "Active") | |
} | |
} | |
function h(a) { | |
return function() { | |
var b; | |
b = /Active_clipboard_314159265\b/.test(a.$("#" + I.selectorType)[0].className); | |
a.trigger("navigated", { | |
source: "initiate", | |
type: a.currentSelectorType, | |
status: b ? "disabled": "enabled" | |
}) | |
} | |
} | |
function n(a) { | |
this.trigger("selectorSwitched", { | |
type: a | |
}) | |
} | |
function K() { | |
var a = this.$("#" + I.flyout).cssImportant("background-color", "#57443f"); | |
this.$.browser.webkit && a.show(); | |
a.slideDown(250); | |
this.$("#" + I.menuContainer).addClass(Q) | |
} | |
function s(a) { | |
var b = this.$, | |
d = this; | |
b("#" + I.flyout).slideUp(250, | |
function() { | |
b(this).empty(); | |
d.activeTab = null; | |
b(this).cssImportant("background-color", "transparent"); | |
b("#" + I.menuContainer).removeClass(Q); | |
a && a() | |
}) | |
} | |
function u(a, b) { | |
var d = a.$; | |
return function() { | |
var g = d(this), | |
h = {}; | |
h[b] = g.is('input[type="checkbox"]') ? g.is(":checked") : g.val(); | |
v.call(a, h) | |
} | |
} | |
function v(a) { | |
this.trigger("preferencesUpdated", { | |
preferences: a | |
}) | |
} | |
function r() { | |
var d = this.$, | |
h = this, | |
i = d("#" + I.clipContainer).find("." + ea).andSelf(); | |
if (this.activeTab === Y.selectors) s.call(this, | |
function() { | |
T(i, !1) | |
}); | |
else { | |
T(i, !0); | |
var p = []; | |
M.util.forEach(fb, | |
function(i, o) { | |
var t = o.toLowerCase(), | |
m = d("<div/>").addClass(j).applyBlockStyles(), | |
z = d("<div/>").applyBlockStyles().attr("id", g(t + "Dark")).addClass(ga).appendTo(m); | |
t === h.currentSelectorType && z.addClass(a(t + "Dark")); | |
d("<h4/>").addClass(g("selectorHeader")).mouseover(function() { | |
t !== | |
h.currentSelectorType && z.addClass(a(t + "Dark")) | |
}).mouseout(function() { | |
t !== h.currentSelectorType && z.removeClass(b) | |
}).mousedown(function(a) { | |
a.stopPropagation(); | |
n.call(h, t); | |
var g = d(this).find("." + ga)[0]; | |
d("#" + I.flyout).find("." + ga).filter(function() { | |
return this !== g | |
}).removeClass(b) | |
}).append(z).append(d("<span/>").applyInlineStyles().text(o)).appendTo(m); | |
d("<div/>").html(i).applyBlockStyles().appendTo(m); | |
p.push(m[0]) | |
}); | |
E.call(this, d(p)); | |
K.call(this) | |
} | |
} | |
function F() { | |
var b = this.$, | |
d = b("#" + I.help); | |
if (this.activeTab === | |
Y.help) s.call(this, | |
function() { | |
J(d, !1); | |
T(d, !1) | |
}); | |
else { | |
J(d, !0); | |
T(d, !0); | |
var h = []; | |
M.util.forEach(eb, | |
function(d, j) { | |
var i = g(j), | |
p = b("<div/>").addClass(B).applyBlockStyles(); | |
b("<div/>").applyBlockStyles().addClass(i + " " + ga).addClass(a(j)).appendTo(p); | |
b("<div/>").applyBlockStyles().addClass(X).html(d).find("p").applyBlockStyles().end().appendTo(p); | |
h.push(p[0]) | |
}); | |
for (var j = 0; j < h.length - 1; j++) b("<div/>").applyBlockStyles().addClass(g("divider")).appendTo(h[j]); | |
E.call(this, b(h)); | |
K.call(this) | |
} | |
} | |
function E(a) { | |
function b() { | |
function j() { | |
if ("auto" !== | |
h) { | |
g.height("auto"); | |
var a = g.height(); | |
g.height(h); | |
g.animate({ | |
height: a | |
}, | |
200, "linear", | |
function() { | |
g.height("auto"); | |
g.cssImportant("overflow", "auto") | |
}) | |
} | |
} | |
g.empty().append(a.hide()); | |
d.support.opacity ? a.fadeIn(250).promise().done(j) : (a.show(), j()) | |
} | |
var d = this.$, | |
g = d("#" + I.flyout), | |
h = g.height(), | |
h = h || "auto", | |
j = g.height(h).cssImportant("overflow", "hidden").contents(); | |
d.support.opacity ? j.fadeOut(250).promise().done(b) : (j.remove(), b()) | |
} | |
function O() { | |
var a = this.$, | |
b = this, | |
d = a("#" + I.preferences); | |
if (this.activeTab === Y.preferences) s.call(this, | |
function() { | |
J(d, !1); | |
T(d, !1) | |
}); | |
else { | |
J(d, !0); | |
T(d, !0); | |
var h = a("<div/>").applyBlockStyles().addClass(j); | |
a("<h4/>").applyBlockStyles().text("Clip settings").appendTo(h); | |
var i = a("<table/>").applyTableStyles(), | |
p = []; | |
a("<tr/>").applyTableRowStyles().append(a("<td/>").applyTableCellStyles().append(a("<input/>").applyInlineStyles().attr({ | |
type: "checkbox", | |
id: g("preferencesReview"), | |
checked: this.preferences.reviewClip | |
}).change(u(this, "reviewClip"))), a("<td/>").applyTableCellStyles().append(a("<label/>").applyInlineStyles().attr({ | |
"for": g("preferencesReview") | |
}).text("Review clip before saving"))).appendTo(i); | |
a("<tr/>").applyTableRowStyles().append(a("<td/>").applyTableCellStyles().append(a("<input/>").applyInlineStyles().attr({ | |
type: "checkbox", | |
id: g("preferencesPublish"), | |
checked: this.preferences.publishByDefault | |
}).change(u(this, "publishByDefault"))), a("<td/>").applyTableCellStyles().append(a("<label/>").applyInlineStyles().attr({ | |
"for": g("preferencesPublish") | |
}).text("Publish clips by default"))).appendTo(i); | |
i.appendTo(h); | |
p.push(h[0]); | |
var h = a("<div/>").applyBlockStyles().addClass(j), | |
o = a("<ul/>").applyListStyles().attr("id", | |
I.colorRadioList); | |
a("<h4/>").applyBlockStyles().text("Rectangle color").appendTo(h); | |
M.util.forEach(M.util.rectColors, | |
function(d, g) { | |
var h = b.rgbaSupport ? "rgba(" + d.startColor.join(",") + ", 0.25)": "rgb(" + d.startColor.join(",") + ")"; | |
a("<li/>").applyListItemStyles().cssImportant("background-color", h).click(function(a) { | |
return function() { | |
v.call(b, { | |
rectangleColor: a | |
}) | |
} | |
} (g)).appendTo(o) | |
}); | |
h.append(o); | |
h.append(a("<div/>").cssImportant("clear", "left")); | |
p.push(h[0]); | |
p.push(a("<div/>").cssImportant("clear", "left")[0]); | |
E.call(this, a(p)); | |
K.call(this) | |
} | |
} | |
function y(a) { | |
var d = a.$; | |
return function() { | |
var g = d(this), | |
h = a.$container.find("." + ca), | |
j = d("#" + I.menu), | |
i = (h.length - 1) * w + w / 3; | |
a.$container.data("expanded") ? s.call(a, | |
function() { | |
j.find("." + ea + ", " + ra).filter(":not(#" + I.selectorType + ")").each(function() { | |
d(this).removeClass(b).removeClass(D).parent().removeClass(b).removeClass(q) | |
}); | |
var a = d(this); | |
j.animate({ | |
width: j.width() - i | |
}, | |
250, "easeInCubic", | |
function() { | |
a.empty(); | |
h.hide(); | |
g.toggleClass(aa + " " + Z) | |
}) | |
}) : (j.width(j.width()), h.show(), | |
j.animate({ | |
width: j.width() + i | |
}, | |
250, "easeInCubic", | |
function() { | |
g.toggleClass(aa + " " + Z) | |
})); | |
a.$container.data("expanded", !a.$container.data("expanded")) | |
} | |
} | |
function J(d, g) { | |
var h = /^widget_(.+?)_clipboard_314159265$/.exec(d.attr("id"))[1]; | |
g ? d.addClass(a(h)) : d.removeClass(b) | |
} | |
function T(a, b) { | |
a.toggleClass(D, b).closest("." + ra).toggleClass(q, b) | |
} | |
function S(a) { | |
this.$container.find("." + ea + ", " + ra).filter(":not(#" + I.selectorType + ")").removeClass(b); | |
T(this.$container.find("." + D), !1); | |
this.trigger("navigated", { | |
source: a | |
}); | |
switch (a) { | |
case Y.help: | |
F.call(this); | |
break; | |
case Y.preferences: | |
O.call(this); | |
break; | |
case Y.selectors: | |
r.call(this) | |
} | |
this.activeTab = Y[a] | |
} | |
function t(a) { | |
var b = this; | |
this.$container.fadeOut("fast", | |
function() { | |
b.$container.remove(); | |
b.$container = null; | |
a && a.call(b) | |
}) | |
} | |
function z(a) { | |
function b(a, d, g) { | |
a = j("<div/>").applyBlockStyles().attr("id", a + "_container").addClass(ra + " " + ka).append("<div/>").find("div").applyBlockStyles().attr("id", a).addClass(ea).end(); | |
g !== i && a.cssImportant("left", g); | |
d && a.addClass(ca); | |
return a | |
} | |
var g = this, | |
j = g.$, | |
p = j("<div/>").applyBlockStyles().attr("id", I.clipContainer).addClass(ka).append(b(I.selectorType, !1).toggleClass(ka + " " + I.rectangle)).append(b(I.selectorDropDown, !0).removeClass(ka)), | |
t = w + w / 3; | |
this.$container = j("<div/>").applyBlockStyles().attr("id", I.login).append("<div/>").find("div:first").applyBlockStyles().attr("id", I.menuContainer).append("<div/>").find("div:first").applyBlockStyles().attr("id", I.menuBackground).append(j("<div/>").applyBlockStyles().attr("id", I.message)).append("<div/>").find("div:eq(1)").width(w + | |
w / 2).applyBlockStyles().attr("id", I.menu).append(p).append(b(I.preferences, !0, t + 0 * w)).append(b(I.help, !0, t + 1 * w)).append(b(I.home, !0, t + 2 * w)).append(b(I.close, !0, t + 3 * w)).append(b(I.expand).find("div").addClass(aa).end()).end().end().end().append(j("<div/>").applyBlockStyles().attr("id", I.flyout).hide()); | |
j("body").append(this.$container); | |
j.support.boxModel ? j("#" + I.menuBackground).cssImportant("background-image", 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAsCAYAAACkJ9JhAAAAt0lEQVQImQXBDS8CAQCA4ffnYQwRSQ2lUpfcLleSSulDXcvHGIb5qa/n4e85kd/VXH6WM/lOpvK1GMvn44N8zEbyPrmXt3FfXkc9eRl25WnQkVWvLctuLMnttSw6TZnfRDJrhTKNGzJpXso4CmQU1mQYVmXQKEu/XpJeUJS7WkG61TPpVE6lXcpL6zwncfFY4kJWopNDCfNpucrtSyObkvrRjgSZbakebMlFelMqextSTq1LaXfNf6t8Z14HSskhAAAAAElFTkSuQmCC")') : | |
(j("#" + I.menuBackground).cssImportant({ | |
"padding-bottom": 0 | |
}), j("#" + I.flyout).cssImportant({ | |
position: "relative", | |
top: -2, | |
left: -1 | |
})); | |
M.util.flagAsUnclippable(this.$container); | |
this.$container.data("expanded", !1); | |
j("#" + I.selectorType).mousedown(h(g)); | |
j("#" + I.selectorDropDown).click(function() { | |
S.call(g, Y.selectors) | |
}); | |
j("#" + I.home).click(function() { | |
g.trigger("navigated", { | |
source: "home" | |
}); | |
d.open(g.baseUri, "clipboard_blank") | |
}); | |
j("#" + I.close).click(function() { | |
g.trigger("navigated", { | |
source: "close" | |
}) | |
}); | |
j("#" + I.expand).click(y(this)); | |
j("#" + I.help).click(function() { | |
S.call(g, Y.help) | |
}); | |
j("#" + I.preferences).click(function() { | |
S.call(g, Y.preferences) | |
}); | |
o.call(this, "login", a) | |
} | |
function p(a) { | |
var b = this, | |
d = b.baseUri, | |
g = b.$; | |
this.$container = g("<div/>").applyBlockStyles().attr("id", I.logout).append(g("<p/>").applyBlockStyles().append("Please ").append(g("<a/>").applyLinkStyles().attr({ | |
href: d + "login?popup=1", | |
target: "_blank", | |
id: I.loginLink | |
}).click(function() { | |
b.trigger("loginClicked", { | |
$element: g(this) | |
}); | |
return ! 1 | |
}).text("login")).append(" to Clipboard to start clipping")); | |
M.util.flagAsUnclippable(this.$container); | |
g("body").append(this.$container); | |
o.call(this, "logout", a) | |
} | |
function N(a) { | |
var b = this.$; | |
this.$container = b("<div/>").applyBlockStyles().attr("id", I.waiting).append(b("<img/>").applyInlineStyles().attr("id", I.spinner).attr("src", this.staticBaseUrl + "/images/1.0.17/loadingYellowBall.gif")); | |
M.util.flagAsUnclippable(this.$container); | |
b("body").append(this.$container); | |
o.call(this, "waiting", a) | |
} | |
function o(a, b) { | |
var d = this.$, | |
g = this; | |
this.$container.cssImportant({ | |
top: 0, | |
right: 20 | |
}); | |
d.support.opacity && this.$container.cssImportant("opacity", 0); | |
var h = { | |
top: "+=" + $ | |
}; | |
if (d.support.opacity) h.opacity = db; | |
M.util.assureFixedPositioning(this.$container); | |
this.$container.animate(h, 200, | |
function() { | |
g.trigger("controlDisplayed", { | |
type: a | |
}); | |
b && b() | |
}) | |
} | |
function H(a, b) { | |
var d = this.$container && this.$container.attr("id"), | |
g; | |
switch (a) { | |
case "login": | |
g = z; | |
break; | |
case "logout": | |
g = p; | |
break; | |
case "waiting": | |
g = N; | |
break; | |
default: | |
b && b.call(this); | |
return | |
} | |
var h = this, | |
j = function() { | |
g.call(h, b) | |
}; | |
d ? d !== I[a] ? t.call(this, j) : b && b.call(this) : | |
j() | |
} | |
function L(a) { | |
this.$container = null; | |
this.baseUri = a.baseUri; | |
this.staticBaseUrl = a.staticBaseUrl; | |
this.$ = a.$; | |
this.currentSelectorType = "rectangle"; | |
this.activeTab = null; | |
this.rgbaSupport = a.support.rgba; | |
this.isLoggedIn = !1 | |
} | |
var M = d.CLIPBOARD.client, | |
$ = 20, | |
ca = g("verboseItem"), | |
aa = g("expand"), | |
Z = g("collapse"), | |
ga = g("inlineIcon"), | |
Q = g("flyout"), | |
j = g("preferencesBlock"), | |
D = g("selectedTab"), | |
q = g("selectedTabContainer"), | |
B = g("helpBlock"), | |
X = g("helpText"), | |
ea = g("menuItemIcon"), | |
ra = g("menuItemContainer"), | |
ka = g("menuItemHoverContainer"), | |
w = 42, | |
db = 0.99, | |
Y = { | |
help: "help", | |
preferences: "preferences", | |
selectors: "selectors" | |
}, | |
I = { | |
loginLink: g("loginLink"), | |
clipContainer: g("clipContainer"), | |
selectorType: g("selectorType"), | |
rectangle: g("rectangle"), | |
home: g("home"), | |
close: g("close"), | |
bookmark: g("bookmark"), | |
text: g("text"), | |
help: g("help"), | |
preferences: g("preferences"), | |
expand: g("expand"), | |
message: g("message"), | |
logout: g("logoutControl"), | |
login: g("loginControl"), | |
selectorDropDown: g("selectorDropDown"), | |
menu: g("menu"), | |
menuContainer: g("menuContainer"), | |
menuBackground: g("menuBackground"), | |
flyout: g("flyout"), | |
colorRadioList: g("colorRadioList"), | |
waiting: g("waitingControl"), | |
spinner: g("waitingControlSpinner") | |
}, | |
eb = { | |
rectangle: '<p>Go to "clip mode." Just move your mouse around until you find something you like, and click.</p><p>You can also click and drag your mouse to get a better selection, or scroll the mousewheel to zoom in or out.</p><p>If you have text selected, this will automatically put you into "text mode" and extract the selected text.</p>', | |
text: '<p>Switch to "text mode." Highlight some text, and it will format it in an easy-to-read fashion.</p>', | |
preferences: "<p>Adjust your clipping preferences.</p>", | |
home: "<p>Open up your Clipboard home page in a new window.</p>", | |
close: "<p>Hide the Clipper.</p>" | |
}, | |
fb = { | |
Rectangle: "<p>Select a rectangular region to clip. This is the default setting.</p>", | |
Text: "<p>Select a region to clip by highlighting text.</p>" | |
}, | |
Ba = function() { | |
function a(g, o, m) { | |
var t = this.$; | |
t("#" + I.menu).find("." + ka + ":first").cssImportant("border-top-left-radius", "0px").cssImportant("border-bottom-left-radius", "0px"); | |
g = t("#" + I.message).removeClass().addClass(m).html(g); | |
m = g.show().width(); | |
t.support.boxModel ? g.cssImportant("width", "1px").animate({ | |
width: m | |
}, | |
p, "easeOutCubic", | |
function() { | |
t(this).width("auto") | |
}) : (g.cssImportant({ | |
visibility: "hidden", | |
position: "absolute", | |
width: "auto" | |
}).show(), m = g.parent().width() - g.next().width() - g.outerWidth() + 2, g.cssImportant({ | |
left: m, | |
visibility: "visible" | |
})); | |
var z = this, | |
g = o === i ? h: o; | |
j = o === i || 0 <= o ? d.setTimeout(function() { | |
b.call(z) | |
}, | |
g) : 0 | |
} | |
function b(a) { | |
var g = this.$; | |
j = d.clearTimeout(j); | |
g.support.boxModel ? (g("#" + I.menu).find("." + ka + ":first").cssImportant("border-top-left-radius", | |
"4px").cssImportant("border-bottom-left-radius", "4px"), g("#" + I.message).animate({ | |
width: 0 | |
}, | |
p, "easeInCubic", | |
function() { | |
g(this).hide().width("auto"); | |
a && a() | |
})) : (g("#" + I.message).hide(), a && a()) | |
} | |
var h = 3E3, | |
j, | |
p = 200; | |
return { | |
showMessage: function(d, h) { | |
var j = this; | |
H.call(this, "login", | |
function() { | |
b.call(j, | |
function() { | |
a.call(j, d, h, g("messageSuccess")) | |
}) | |
}) | |
}, | |
hideMessage: b, | |
showErrorMessage: function(d, h) { | |
var j = this; | |
H.call(this, "login", | |
function() { | |
b.call(j, | |
function() { | |
a.call(j, d, h, g("messageError")) | |
}) | |
}) | |
} | |
} | |
} (); | |
M.util.inherit(L, | |
new M.ActivatableControl, new M.EventEmitter); | |
L.prototype.constructor = L; | |
L.prototype.enableClipping = function(b) { | |
var g = this, | |
j = d.setInterval(function() { | |
if (g.$container && g.$container.attr("id") === I.login) { | |
d.clearInterval(j); | |
var h = I[g.currentSelectorType]; | |
g.$("#" + I.selectorType).removeClass(h).addClass(I[b]).addClass(a(b)); | |
g.currentSelectorType = b | |
} | |
}, | |
100) | |
}; | |
L.prototype.doActivate = function() { | |
this.$container || (this.isLoggedIn ? z.call(this) : N.call(this)) | |
}; | |
L.prototype.doDeactivate = function() { | |
if (this.$container) { | |
var a = | |
this, | |
b = { | |
top: "-=" + ($ + this.$container.height()) | |
}; | |
if (this.$.support.opacity) b.opacity = 0; | |
this.$container.animate(b, | |
function() { | |
a.$container.remove(); | |
a.$container = null | |
}) | |
} | |
this.activeTab = null | |
}; | |
L.prototype.show = function() { | |
this.$container && this.$container.fadeIn("fast") | |
}; | |
L.prototype.hide = function() { | |
this.$container && this.$container.fadeOut("fast") | |
}; | |
L.prototype.showMessage = Ba.showMessage; | |
L.prototype.hideMessage = Ba.hideMessage; | |
L.prototype.showErrorMessage = Ba.showErrorMessage; | |
L.prototype.disableClipping = function() { | |
this.hideMessage(); | |
this.$("#" + I.selectorType).removeClass(b) | |
}; | |
L.prototype.setPreferences = function(a) { | |
this.preferences = a | |
}; | |
L.prototype.showLoadingMessage = function() { | |
H.call(this, "waiting") | |
}; | |
L.prototype.setLoginState = function(a) { | |
this.isLoggedIn = a; | |
H.call(this, a ? "login": "logout") | |
}; | |
M.ui.Widget = L | |
})(window); | |
(function(d) { | |
function i(a) { | |
function b() { | |
v.remove(); | |
h.remove(); | |
t.remove(); | |
u.remove() | |
} | |
var g = this.$, | |
h = g("<div/>").css({ | |
position: "fixed", | |
top: 0, | |
left: 0, | |
background: "#000000", | |
zIndex: s, | |
opacity: 0.5, | |
width: "100%", | |
height: "100%" | |
}), | |
i = "#faq-third-party-cookies", | |
n = d.navigator.userAgent; | |
/MSIE/i.test(n) ? i += "-ie": /Firefox/i.test(n) ? i += "-firefox": /Chrome/i.test(n) ? i += "-chrome": /Safari/i.test(n) && (i += "-safari"); | |
n = ""; | |
switch (a) { | |
case "cookies": | |
n = '<p style="">The clipper requires 3rd party cookies to be enabled. Head over to our <a target="_blank" href="' + | |
this.baseUri + "help" + i + '" style="color: #469CB9">help page</a> for instructions on how to enable them.</p>' | |
} | |
var n = n + '<p style="position: absolute; bottom: 40px; margin: 0 auto; width: 90%">Click anywhere to dismiss this message.</p>', | |
a = { | |
top: "50%", | |
left: "50%", | |
display: "none", | |
width: 600, | |
height: 440, | |
padding: "20px", | |
"margin-left": -300, | |
"margin-top": -220, | |
position: "fixed" | |
}, | |
u = g("<div/>").css(g.extend({}, | |
a, { | |
background: "#eee", | |
"z-index": s + 3 | |
})).appendTo("body"), | |
v = g("<div/>").css(g.extend({}, | |
a, { | |
background: "transparent url(" + | |
this.staticBaseUrl + "/images/1.0.17/logo1.png) no-repeat center center", | |
opacity: 0.3, | |
"z-index": s + 4 | |
})), | |
t = g("<div/>"); | |
t.css(g.extend({}, | |
a, { | |
zIndex: s + 5, | |
"-webkit-border-radius": "3px", | |
"-moz-border-radius": "3px", | |
"border-radius": "3px", | |
"-webkit-box-shadow": "-3px 3px 10px rgba(0,0,0,0.75)", | |
"box-shadow": "-3px 3px 10px rgba(0,0,0,0.75)", | |
background: "transparent", | |
color: "rgb(57,39,27)", | |
"text-align": "center", | |
"font-family": '"lucida grande", tahoma, verdana, arial, sans-serif', | |
"font-size": "22px" | |
})).html(n); | |
g.each([u, | |
h, v, t], | |
function() { | |
this.appendTo("body").fadeIn().click(b) | |
}); | |
K.util.assureFixedPositioning(h) | |
} | |
function g(a) { | |
return function() { | |
a.$(d).unbind("." + u); | |
a.$(a.document).unbind("." + u); | |
a.widget.hide() | |
} | |
} | |
function b(a) { | |
return function() { | |
a.widget.show() | |
} | |
} | |
function a(a) { | |
return function(b) { | |
a.trigger("reviewConfirmed", b); | |
a.review.close(); | |
var d = b.clip; | |
d.postToFacebook = b.reviewData.postToFacebook; | |
d.tweet = b.reviewData.tweet; | |
d.annotation = b.reviewData.annotation; | |
d["private"] = !b.reviewData.published; | |
d.title = b.reviewData.title || | |
d.title; | |
a.trigger("clipConfirmed", { | |
clip: d | |
}) | |
} | |
} | |
function h() { | |
var d = this; | |
this.review.on("opening", g(this)).on("closing", b(this)).on("confirmed", a(this)).on("canceled", | |
function() { | |
d.review.close() | |
}).on("socialNetworkConnected", | |
function(a) { | |
var b = { | |
preferences: {} | |
}; | |
if ("Twitter" === a.network) b.preferences.connectedToTwitter = !0; | |
else if ("Facebook" === a.network) b.preferences.connectedToFbStream = !0; | |
d.trigger("preferencesUpdated", b) | |
}).bubble("preferencesUpdated").to(this).bubble("autocompleteTriggered").to(this).bubble("closing").to(this, | |
"reviewClosing").bubble("closed").to(this, "reviewClosed").bubble("opening").to(this, "reviewOpening").bubble("canceled").to(this, "reviewCanceled"); | |
this.widget.on("loginClicked", | |
function(a) { | |
d.loginWindow.open(a.$element) | |
}).bubble("navigated").to(this).bubble("selectorSwitched").to(this).bubble("preferencesUpdated").to(this).bubble("displayed").to(this, "controlsDisplayed"); | |
this.loginWindow.on("closed", | |
function() { | |
d.trigger("userDataRequested") | |
}) | |
} | |
function n(a, b) { | |
this.baseUri = a.baseUri; | |
this.staticBaseUrl = | |
a.staticBaseUrl; | |
this.$ = a.$; | |
this.document = a.document; | |
this.shouldShowReview = a.preferences.reviewClip; | |
b = K.util.merge(K.util.merge({}, | |
{ | |
review: v.review(a), | |
widget: v.widget(a) | |
}), b); | |
this.review = b.review; | |
this.widget = b.widget; | |
this.loginWindow = K.ui.PopupWindow.factory("login", a); | |
this.controls = [this.review, this.widget, this.loginWindow]; | |
h.call(this) | |
} | |
var K = d.CLIPBOARD.client, | |
s = 9999999, | |
u = "clipboard_ui", | |
v = { | |
review: function(a) { | |
return new K.ui.Review(a) | |
}, | |
widget: function(a) { | |
return new K.ui.Widget(a) | |
} | |
}; | |
K.util.inherit(n, | |
new K.UiController, new K.ActivatableControl, new K.EventEmitter); | |
n.prototype.constructor = n; | |
n.prototype.doDeactivate = function() { | |
this.hideNotification() | |
}; | |
K.util.merge(n.prototype, { | |
showLoadingMessage: function() { | |
this.widget.showLoadingMessage() | |
}, | |
show3rdPartyCookiesErrorMessage: function() { | |
i.call(this, "cookies") | |
}, | |
showNotification: function(a, b) { | |
this.widget.showMessage(a, b) | |
}, | |
hideNotification: function(a) { | |
this.widget.hideMessage(a) | |
}, | |
showErrorNotification: function(a, b) { | |
this.widget.showErrorMessage(a, b) | |
}, | |
enableClipping: function(a) { | |
this.widget.enableClipping(a) | |
}, | |
disableClipping: function(a) { | |
this.widget.disableClipping(a) | |
}, | |
handleExtraction: function(a) { | |
this.shouldShowReview ? this.review.open(a) : this.trigger("clipConfirmed", a) | |
}, | |
setPreferences: function(a) { | |
this.shouldShowReview = !!a.reviewClip; | |
this.widget.setPreferences(a); | |
this.review.setPreferences(a) | |
}, | |
setLoginState: function(a) { | |
this.widget.setLoginState(a); | |
this.review.setLoginState(a) | |
} | |
}); | |
K.ui.WidgetUiController = n | |
})(window); | |
(function(d) { | |
function i(a) { | |
return function() { | |
if (!a.bookmark) a.dragging = !0 | |
} | |
} | |
function g(a) { | |
return function(b) { | |
if (3 !== b.which) { | |
var d = "click"; | |
a.bookmark ? d = "bookmark": a.selectionData.startElement !== a.selectionData.endElement ? d = "drag": a.zoomContext.zooming && (d = "zoom"); | |
var g = a.bookmark ? "bookmark": "rectangle"; | |
a.selecting = !1; | |
a.dragging = !1; | |
n.call(a); | |
var h = a.getSelection(), | |
i = setInterval(function() { | |
if (!a.animationContext.animating) clearInterval(i), | |
a.trigger("selectionEnded", { | |
selectionData: h, | |
selectionType: g, | |
extractionContext: { | |
rect: a.$zoomRect.data("dimensions"), | |
extractionType: d | |
} | |
}), | |
a.selecting = !0 | |
}, | |
50) | |
} | |
} | |
} | |
function b(a) { | |
var b = !1, | |
d = 1E3 / O; | |
return function(g, h, i, t) { | |
if (g.metaKey || g.shiftKey || g.altKey || g.ctrlKey) { | |
if (!a.zoomContext.sentMetaEventToTracker) a.trigger("scrolled", { | |
source: "mouseWheelWithMetaKey" | |
}), | |
a.zoomContext.sentMetaEventToTracker = !0; | |
return ! 0 | |
} | |
if (b || 0 === t || !a.selectionData.startElement) return ! 1; | |
b = !0; | |
if (!a.zoomContext.zooming) a.zoomContext.start.clientX = g.clientX, | |
a.zoomContext.start.clientY = g.clientY; | |
0 > t ? a.zoomIn() : a.zoomOut(); | |
setTimeout(function() { | |
b = !1 | |
}, | |
d); | |
return ! 1 | |
} | |
} | |
function a(a) { | |
return function(b) { | |
b.preventDefault(); | |
if (a.selecting) { | |
var d; | |
if (! (d = !a.zoomContext.zooming)) { | |
var g = a.zoomContext; | |
d = g.start.clientX - b.clientX; | |
g = g.start.clientY - b.clientY; | |
d = Math.sqrt(d * d + g * g) >= y | |
} | |
d && (a.zoomContext.reset(), a.animateTo({ | |
clientX: b.clientX, | |
clientY: b.clientY | |
})) | |
} | |
} | |
} | |
function h() { | |
if (!this.bookmark) this.trigger("bookmarkPage"), | |
this.$zoomRect.cssImportant({ | |
"border-top-width": J, | |
"border-bottom-width": J, | |
"border-right-width": J, | |
"border-left-width": J | |
}, | |
!0), | |
K.call(this), | |
this.$canvasOverlay.cssImportant("cursor", | |
"pointer"), | |
this.$bookmark.show().cssImportant({ | |
left: -80, | |
opacity: 0 | |
}).delay(200).animate({ | |
left: 20, | |
opacity: 1 | |
}, | |
"fast", "linear"), | |
this.selectionData.startElement = this.selectionData.startElement = null, | |
this.bookmark = !0 | |
} | |
function n(a) { | |
var b = this.$; | |
this.bookmark = !1; | |
this.trigger("notBookmarkPage"); | |
this.$canvasOverlay.cssImportant("cursor", "default"); | |
this.$zoomRect.cssImportant({ | |
"border-top-width": r, | |
"border-bottom-width": r, | |
"border-right-width": r, | |
"border-left-width": r | |
}, | |
!0); | |
v.util.retireFixedPositioning(this.$zoomRect); | |
this.$bookmark.animate({ | |
left: -80, | |
opacity: 0 | |
}, | |
"fast", "linear", | |
function() { | |
b(this).hide(); | |
a && a() | |
}) | |
} | |
function K() { | |
var a = this, | |
b = this.$, | |
g = b.support.boxModel ? 2 * (J + F) : 0; | |
v.util.assureFixedPositioning(this.$zoomRect); | |
this.$zoomRect.stop(!0, !1).animate({ | |
left: 0, | |
top: 0, | |
width: b(d).width() - g, | |
height: b(d).height() - g | |
}, | |
150, "easeOutQuad", | |
function() { | |
a.animationContext.animating = !1; | |
b(this).cssImportant({ | |
width: b(d).width() - g, | |
height: b(d).height() - g | |
}) | |
}) | |
} | |
function s(a) { | |
this.bookmark && n.call(this); | |
var b = this.selectionData.endElement; | |
if (! (this.selectionData.startElement === a && this.selectionData.endElement === a)) { | |
if (this.dragging) { | |
if (!this.selectionData.startElement) this.selectionData.startElement = a | |
} else this.selectionData.startElement = a; | |
this.selectionData.endElement = a; | |
this.animationContext.animating = !0; | |
this.trigger("selecting"); | |
var d = this.$, | |
a = d(this.selectionData.startElement), | |
d = d(this.selectionData.endElement), | |
a = v.util.getOuterDimensions(a), | |
d = v.util.getOuterDimensions(d), | |
a = { | |
top: Math.min(a.top, d.top), | |
left: Math.min(a.left, d.left), | |
bottom: Math.max(a.bottom, d.bottom), | |
right: Math.max(a.right, d.right) | |
}; | |
a.width = a.right - a.left; | |
a.height = a.bottom - a.top; | |
a.area = a.width * a.height; | |
if (a.area > v.util.maxArea) this.selectionData.endElement = b, | |
this.trigger("selectionFailed", { | |
reason: v.Selector.failureStatus.maxSizeExceededViaDrag | |
}); | |
else { | |
this.$zoomRect.data("dimensions", a); | |
var g = this; | |
this.$zoomRect.stop(!0, !1).animate({ | |
left: a.left - r - F - this.bodyOffset.left, | |
top: a.top - r - F - this.bodyOffset.top, | |
width: a.width, | |
height: a.height | |
}, | |
250, "easeOutQuad", | |
function() { | |
g.animationContext.animating = | |
!1 | |
}) | |
} | |
} | |
} | |
function u(a) { | |
this.type = "rectangle"; | |
this.support = a.support; | |
this.bodyOffset = a.bodyOffset; | |
this.$ = a.$; | |
this.staticBaseUrl = a.staticBaseUrl; | |
this.selecting = !1; | |
this.baseData = a.baseData; | |
this.document = a.document; | |
this.preferences = a.preferences; | |
this.getExtractor = function() { | |
return new v.extractors.HtmlExtractor(a) | |
}; | |
this.$canvasOverlay = this.$zoomRect = null; | |
this.dragging = !1; | |
this.zoomContext = { | |
zooming: !1, | |
noZoomReason: "", | |
lastZoom: 0, | |
start: { | |
clientX: 0, | |
clientY: 0 | |
}, | |
path: null, | |
current: -1, | |
reset: function() { | |
this.zooming = | |
!1; | |
this.lastZoom = 0; | |
this.start.clientX = -1; | |
this.start.clientY = -1; | |
this.path = null; | |
this.current = -1; | |
this.noZoomReason = ""; | |
this.sentMetaEventToTracker = !1 | |
}, | |
sentMetaEventToTracker: !1 | |
}; | |
this.selectionData = { | |
startElement: null, | |
endElement: null | |
}; | |
this.animationContext = { | |
animating: !1, | |
timeoutId: 0 | |
} | |
} | |
var v = d.CLIPBOARD.client, | |
r = 2, | |
F = 2, | |
E = "rectangleSelector_" + v.util.idSuffix, | |
O = 5, | |
y = 15, | |
J = 10, | |
T = "zoom" + v.util.idSuffix, | |
S = "canvas" + v.util.idSuffix, | |
t = "bookmarkImage" + v.util.idSuffix, | |
z = function() { | |
function a(d) { | |
var g = this.$; | |
if (null === this.zoomContext.path) { | |
var h = | |
!0, | |
i = g(this.selectionData.startElement), | |
p = i; | |
this.zoomContext.path = i.allParents().filter(function() { | |
h = b(g(this), p); ! 0 === h && (p = g(this)); | |
return ! 0 === h | |
}).map(function() { | |
return g(this) | |
}).toArray(); | |
if (!0 === h) h = v.Selector.failureStatus.nowhereToZoom; | |
this.zoomContext.path.unshift(i); | |
this.zoomContext.noZoomReason = h | |
} | |
if (d) { | |
d = this.zoomContext.path[this.zoomContext.current + 1]; | |
if (!d) return this.zoomContext.lastZoom && (new Date).getTime() - this.zoomContext.lastZoom > 2 * (1E3 / O) && this.trigger("selectionFailed", { | |
reason: this.zoomContext.noZoomReason | |
}), | |
this.zoomContext.lastZoom = (new Date).getTime(), | |
[]; | |
this.zoomContext.lastZoom = (new Date).getTime(); | |
this.zoomContext.current++; | |
return d | |
} | |
this.zoomContext.current = Math.max(0, this.zoomContext.current - 1); | |
return (d = this.zoomContext.path[this.zoomContext.current]) || [] | |
} | |
var b = function() { | |
var a = { | |
head: 1, | |
meta: 1, | |
link: 1, | |
style: 1, | |
script: 1 | |
}; | |
return function(b, d) { | |
var g; | |
if (! (g = !b[0])) if (! (g = 1 !== b[0].nodeType)) if (! (g = b[0].nodeName.toLowerCase() in a)) { | |
g = v.util.getDimensions(b); | |
var h = v.util.getDimensions(d); | |
g = g.area < 0.95 * h.area ? | |
!1: v.util.computeOverlap(g, h).area >= 0.95 * h.area; | |
g = !g | |
} | |
return g ? v.Selector.failureStatus.nowhereToZoom: !v.util.shouldInclude(b, {}) ? v.Selector.failureStatus.maxSizeExceededViaZoom: !0 | |
} | |
} (); | |
return function(b) { | |
var d = a.call(this, b); | |
if (d.length) this.zoomContext.zooming = !0, | |
this.trigger("zooming", { | |
direction: b ? "in": "out" | |
}), | |
b = d.trueOffset(), | |
v.util.adjustOffsetForMargins(d, b), | |
d.trueCoordinates(b), | |
this.animateTo(d[0]) | |
} | |
} (); | |
v.util.inherit(u, new v.Selector, new v.ActivatableControl, new v.EventEmitter); | |
u.prototype.constructor = | |
u; | |
u.prototype.doActivate = function() { | |
var d = this.$; | |
if (!this.$zoomRect) v.util.rewritePageHtml(this.$, this.baseData, this.support), | |
this.$zoomRect = d("<div/>").applyBlockStyles().attr("id", T), | |
this.support.rgba ? this.$zoomRect.cssImportant("opacity", 1) : this.$zoomRect.cssImportant("opacity", 0.25), | |
v.util.applyGradient(this.$zoomRect, this.preferences.rectangleColor), | |
this.$bookmark = d("<img/>").applyBlockStyles().attr("id", t).attr("src", this.staticBaseUrl + "/images/1.0.17/bookmarkLarge.png").click(g(this)), | |
v.util.flagAsUnclippable(this.$zoomRect), | |
this.$canvasOverlay = d("<div/>").applyBlockStyles().attr("id", S).mousedown(i(this)).mousemove(a(this)).mouseup(g(this)).mousewheel(b(this)), | |
v.util.flagAsUnclippable(this.$canvasOverlay), | |
d("body").append(this.$canvasOverlay).append(this.$bookmark).append(this.$zoomRect), | |
v.util.assureFixedPositioning(this.$canvasOverlay), | |
v.util.assureFixedPositioning(this.$bookmark), | |
this.enableGlobalEvents(), | |
this.selecting = !0, | |
this.dragging = !1, | |
this.select() | |
}; | |
u.prototype.doDeactivate = function() { | |
this.selecting = !1; | |
if (this.$zoomRect && | |
this.$canvasOverlay) { | |
if (this.animationContext.timeoutId) this.animationContext.timeoutId = d.clearTimeout(this.animationContext.timeoutId); | |
var a = this, | |
b = this.$(this.document); | |
this.bookmark && n.call(this, | |
function() { | |
a.$bookmark.remove(); | |
a.$bookmark = null | |
}); | |
this.$zoomRect.animate({ | |
width: 0, | |
height: 0, | |
left: this.$(d).width() + b.scrollLeft() - 130, | |
top: b.scrollTop() + 40, | |
opacity: 0 | |
}, | |
{ | |
duration: 350, | |
easing: "easeInOutQuad", | |
complete: function() { | |
v.util.retireFixedPositioning(a.$zoomRect); | |
a.$zoomRect.remove(); | |
a.$zoomRect = null | |
} | |
}); | |
v.util.retireFixedPositioning(this.$canvasOverlay); | |
this.$canvasOverlay.remove(); | |
this.$canvasOverlay = null; | |
this.disableGlobalEvents(); | |
this.animationContext.animating = !1; | |
this.zoomContext.reset() | |
} | |
}; | |
u.prototype.disableGlobalEvents = function() { | |
this.$(this.document).unbind("keydown." + E) | |
}; | |
u.prototype.enableGlobalEvents = function() { | |
var a = this; | |
this.$(this.document).bind("keydown." + E, | |
function(b) { | |
27 === b.keyCode && (a.deactivate(), a.trigger("canceled", { | |
source: "escapeKey" | |
})) | |
}) | |
}; | |
u.prototype.zoomIn = function() { | |
z.call(this, | |
!0) | |
}; | |
u.prototype.zoomOut = function() { | |
z.call(this, !1) | |
}; | |
u.prototype.animateTo = function(a) { | |
var b = this.$; | |
if (0 <= this.animationContext.timeoutId) this.animationContext.timeoutId = clearTimeout(this.animationContext.timeoutId); | |
var g = null, | |
i = this; | |
if ("undefined" === typeof a.nodeType) { | |
if (!i.dragging) { | |
var t = a.clientX, | |
z = a.clientY, | |
n = b(d).width(), | |
b = b(d).height(); | |
if (20 > t || t > n - 20 || 20 > z || z > b - 20) g = function() { | |
h.call(i) | |
} | |
} | |
g || (g = function() { | |
i.$canvasOverlay.hide(); | |
i.$zoomRect.hide(); | |
var b = v.util.getElementFromPoint(a.clientX, | |
a.clientY, i.$, i.document); | |
i.$canvasOverlay.show(); | |
i.$zoomRect.show(); | |
b && s.call(i, b) | |
}) | |
} else g = function() { | |
a && s.call(i, a) | |
}; | |
this.animationContext.timeoutId = setTimeout(g, 20) | |
}; | |
u.prototype.getSelection = function() { | |
return { | |
startElement: this.selectionData.startElement, | |
endElement: this.selectionData.endElement | |
} | |
}; | |
u.prototype.shouldUseAsDefault = function() { | |
return ! 0 | |
}; | |
u.prototype.setPreferences = function(a) { | |
this.preferences = a; | |
this.$zoomRect && v.util.applyGradient(this.$zoomRect, this.preferences.rectangleColor) | |
}; | |
v.selectors.RectangleSelector = | |
u | |
})(window); | |
(function(d) { | |
function i(a) { | |
return function() { | |
b.call(a) | |
} | |
} | |
function g(a) { | |
return function(b) { | |
27 === b.keyCode && (a.deactivate(), a.trigger("canceled", { | |
source: "escapeKey" | |
})) | |
} | |
} | |
function b() { | |
var a = this.getSelection(); | |
a.text && this.trigger("selectionEnded", { | |
selectionType: "text", | |
selectionData: a, | |
extractionContext: { | |
top: a.top, | |
left: a.left | |
} | |
}) | |
} | |
function a(a) { | |
this.type = "text"; | |
this.$ = a.$; | |
this.document = a.document; | |
this.startCoordinates = { | |
x: null, | |
y: null | |
}; | |
this.activated = !1; | |
this.getExtractor = function() { | |
return new h.extractors.TextExtractor(a) | |
} | |
} | |
var h = | |
d.CLIPBOARD.client; | |
h.util.inherit(a, new h.Selector, new h.ActivatableControl, new h.EventEmitter); | |
a.prototype.constructor = a; | |
a.prototype.doActivate = function() { | |
if (!this.activated) this.activated = !0, | |
this.startCoordinates.x = null, | |
this.startCoordinates.y = null, | |
this.enableGlobalEvents(), | |
this.select() | |
}; | |
a.prototype.doDeactivate = function() { | |
this.disableGlobalEvents(); | |
this.activated = !1 | |
}; | |
a.prototype.getSelection = function() { | |
var a = h.util.getRangeData(this.document); | |
return { | |
fragment: a.fragment, | |
text: h.util.trim(a.text), | |
top: a.offset.top, | |
left: a.offset.left | |
} | |
}; | |
a.prototype.select = b; | |
a.prototype.enableGlobalEvents = function() { | |
this.$(this.document).on("mouseup.clipboard_text_selector", i(this)).on("keydown.clipboard_text_selector", g(this)) | |
}; | |
a.prototype.disableGlobalEvents = function() { | |
this.$(this.document).off(".clipboard_text_selector") | |
}; | |
a.prototype.shouldUseAsDefault = function() { | |
return !! h.util.trim(this.getSelection().text) | |
}; | |
h.selectors.TextSelector = a | |
})(window); | |
(function(d) { | |
function i(a, b, d) { | |
function g(b) { | |
b = O.util.getOuterDimensions(b); | |
return 0 < b.area && (b.left > a.right || b.right < a.left || b.top > a.bottom || b.bottom < a.top) | |
} | |
function h(a) { | |
var b = n(a); | |
if (! (!b.hasClass(O.util.rewriteClass) && !b.is(":visible") || g(b))) if (b.attr(O.util.cullNodeAttributeFlag, !0), F.push(a), b.children().each(function() { | |
h(this) | |
}), "iframe" === a.nodeName.toLowerCase()) try { | |
h(b.contents()[0].documentElement) | |
} catch(d) {} | |
} | |
function i(a, b) { | |
for (var d = a, g = b; d.length && g.length;) { | |
d = d.next(); | |
if (!d.length) { | |
d = | |
b; | |
g = a; | |
break | |
} | |
if (d[0] === b[0]) { | |
d = a; | |
g = b; | |
break | |
} | |
g = g.next(); | |
if (g[0] === a[0]) { | |
d = b; | |
g = a; | |
break | |
} | |
if (!g.length) { | |
d = a; | |
g = b; | |
break | |
} | |
} | |
do | |
if (h(d[0]), d[0] === g[0]) break; | |
while (d = d.next()) | |
} | |
var n = this.$, | |
r = this.document, | |
s, | |
u, | |
y, | |
v, | |
F = []; | |
v = !1; | |
if (b[0] === r.documentElement || d[0] === r.documentElement) s = r.documentElement; | |
else if (b[0] === d[0]) s = d[0]; | |
else { | |
r = b.allParents().toArray(); | |
v = d.allParents().toArray(); | |
r.reverse(); | |
v.reverse(); | |
r.push(b[0]); | |
v.push(d[0]); | |
d = Math.max(r.length, v.length); | |
for (b = 0; b < d; b++) { | |
var E = r[b], | |
j = v[b]; | |
if (E !== j) { | |
s = r[b - 1]; | |
u = n(E); | |
y = n(j); | |
break | |
} | |
} | |
if (!s) return []; | |
v = !0 | |
} (function(a) { | |
a.setAttribute(O.util.cullNodeAttributeFlag, !0); | |
var b = n(a).allParents().each(function() { | |
this.setAttribute(O.util.cullNodeAttributeFlag, !0) | |
}); | |
F.push(a); | |
Array.prototype.push.apply(F, b.toArray()) | |
})(s); | |
v ? i(u, y) : h(s); | |
return F | |
} | |
function g(a, b, d) { | |
var g = a.constructor; | |
if (a.hasClass(O.util.rewriteClass)) { | |
for (var a = a.contents(), h = 0, i = 0; i < a.length; i++) d.firstIteration = !1, | |
h = r.call(this, g(a[i]), b, d) || h; | |
return h | |
} | |
return 0 | |
} | |
function b(a, b) { | |
for (var d in b) b.hasOwnProperty(d) && | |
a.css(d) !== b[d] && a.css(d, b[d]) | |
} | |
function a(a, b) { | |
var d = {}, | |
g, | |
h; | |
for (g = 0; g < b.length; g++) { | |
h = b[g]; | |
try { | |
d[h] = a.css(h) | |
} catch(i) {} | |
} | |
return d | |
} | |
function h(a, b) { | |
function d(b) { | |
void 0 === s[b] && (s[b] = a.css(b)); | |
s[b] && (r[b] = s[b]) | |
} | |
function g(a, b) { | |
"border" === a ? 0 !== s[a + b + "Width"] && h.each(["Style", "Width", "Color"], | |
function(g, h) { | |
d(a + b + h) | |
}) : d(a + b) | |
} | |
var h = a.constructor, | |
i = a.trueOffset(), | |
n = {}, | |
r = { | |
marginTop: 0, | |
marginBottom: 0, | |
marginLeft: 0, | |
marginRight: 0, | |
paddingTop: 0, | |
paddingBottom: 0, | |
paddingLeft: 0, | |
paddingRight: 0 | |
}, | |
s = { | |
paddingLeft: parseFloat(a.css("padding-left")), | |
paddingRight: parseFloat(a.css("padding-right")), | |
paddingTop: parseFloat(a.css("padding-top")), | |
paddingBottom: parseFloat(a.css("padding-bottom")), | |
marginLeft: parseFloat(a.css("margin-left")), | |
marginTop: parseFloat(a.css("margin-top")), | |
marginRight: parseFloat(a.css("margin-right")), | |
marginBottom: parseFloat(a.css("margin-bottom")), | |
borderRightWidth: parseFloat(a.css("border-right-width")), | |
borderLeftWidth: parseFloat(a.css("border-left-width")), | |
borderTopWidth: parseFloat(a.css("border-top-width")), | |
borderBottomWidth: parseFloat(a.css("border-bottom-width")) | |
}; | |
n.borderLeft = i.left; | |
n.borderTop = i.top; | |
n.paddingLeft = n.borderLeft + s.borderLeftWidth; | |
n.paddingRight = n.paddingLeft + a.width() + s.paddingLeft + s.paddingRight; | |
n.paddingTop = n.borderTop + s.borderTopWidth; | |
n.paddingBottom = n.paddingTop + a.height() + s.paddingTop + s.paddingBottom; | |
n.borderRight = n.paddingRight + s.borderRightWidth; | |
n.borderBottom = n.paddingBottom + s.borderBottomWidth; | |
n.marginLeft = n.borderLeft - s.marginLeft; | |
n.marginTop = n.borderTop - s.marginTop; | |
n.marginRight = n.borderRight + s.marginRight; | |
n.marginBottom = n.borderBottom + | |
s.marginBottom; | |
h.each(["Left", "Right", "Top", "Bottom"], | |
function(a, d) { | |
var i = "Right" === d || "Bottom" === d; | |
h.each(["margin", "border", "padding"], | |
function(a, h) { | |
var j = n[h + d]; | |
i ? j <= b[d.toLowerCase()] && !("margin" !== h ? 0: 0 > s[h + d]) && g(h, d) : j >= b[d.toLowerCase()] && !("margin" !== h ? 0: 0 > s[h + d]) && g(h, d) | |
}) | |
}); | |
return r | |
} | |
function n(a, b, d) { | |
function g(a, d, i) { | |
var p = O.util.convertUnitsToPixels(a, parseFloat(b.css("font-size"))); | |
if (!1 !== p) return p; | |
p = a; | |
switch (a) { | |
case "left": | |
case "top": | |
return 0; | |
case "right": | |
case "bottom": | |
a = "100%"; | |
break; | |
case "center": | |
a = "50%" | |
} | |
if (!/^-?[\d\.]+%$/.test(a)) return 0; | |
a = parseFloat(a); | |
d = (d = /url\(['"]?(.+?)['"]?\)/i.exec(d)) && 1 < d.length ? d[1] : null; | |
if (!d) return 0; | |
var d = h("<img/>").attr("src", d).css({ | |
left: "-100000px", | |
position: "absolute" | |
}).appendTo("body"), | |
t = d.width(), | |
n = d.height(); | |
d.remove(); | |
d = "horizontal" === i || p in { | |
left: 1, | |
right: 1 | |
} ? t: n; | |
i = "horizontal" === i || p in { | |
left: 1, | |
right: 1 | |
} ? b.width() : b.height(); | |
return a / 100 * i - d * (a / 100) | |
} | |
var h = b.constructor, | |
i = b.css("background-image"); | |
if ("none" !== i) { | |
var n = b.bgPosition().split(" "); | |
"undefined" === typeof n[1] && (n[1] = "center"); | |
if (! (3 <= n.length)) { | |
n[0] = g(n[0], i, "horizontal"); | |
n[1] = g(n[1], i, "vertical"); | |
var r = O.util.getDimensions(b); | |
if (r.top < d.top || r.left < d.left) n[0] -= d.left - r.left, | |
n[1] -= d.top - r.top; | |
n[0] += "px"; | |
n[1] += "px"; | |
a["background-image"] = i; | |
a["background-position"] = n.join(" "); | |
a["background-attachment"] = "scroll" | |
} | |
} | |
} | |
function K(a, b, d) { | |
function g(a, h, t) { | |
n[a] < d[a] && s[a] < d[a] ? b.css(a, 0) : s[a] >= d[a] && s[a] + t <= d[h] ? b.css(a, i[a]) : b.css(a, i[a] - (d[a] - s[a])) | |
} | |
if (!a.is("param")) { | |
var h = a.css("position"); | |
if (! ("static" === h || "fixed" === h)) if (b.css("position", h), "relative" !== h) { | |
var i = a.position(); | |
if (! ("relative" === h && 0 === i.top && 0 === i.left)) { | |
var n = a.trueOffset(), | |
h = a.width() - Math.max(0, n.left + a.width() - d.right), | |
h = Math.min(d.width, h), | |
r = a.height() - Math.max(0, n.top + a.height() - d.bottom), | |
r = Math.min(d.height, r); | |
b.width(h); | |
b.height(r); | |
var s = a.offsetParent().offset(); | |
g("left", "right", a.width()); | |
g("top", "bottom", a.height()) | |
} | |
} | |
} | |
} | |
function s(a, b) { | |
var d = O.util.getOuterDimensions(a), | |
g = O.util.computeOverlap(d, b); | |
this.trigger("overlapCalculated", | |
{ | |
overlap: g, | |
sourceDimensions: d, | |
ratio: 0 !== d.area ? g.area / d.area: 0 | |
}); | |
return d.area && g.area >= 0.95 * d.area || a[0].nodeName.toLowerCase() in J || "none" !== a.css("clear") && 0 === a.children().length && 0 === d.area ? "full": "partial" | |
} | |
function u(a, b) { | |
function d() { | |
return "none" !== g(this).css("float") | |
} | |
var g = this.$, | |
h = this.document, | |
n = g(a.startElement), | |
r = g(a.endElement), | |
s = (new Date).getTime(), | |
u = +!!g.browser.mozilla || +!!g.browser.msie, | |
n = i.call(this, b, n, r); | |
this.trigger("searchSpaceCulled", { | |
elements: n | |
}); | |
this.sandbox.$element.css({ | |
width: b.width + | |
u, | |
height: b.height | |
}); | |
u = g("<div/>").addClass(y); | |
this.sandbox.append(u); | |
r = { | |
rect: b, | |
firstIteration: !0 | |
}; | |
v.call(this, g(this.document.documentElement), u, r, !0); | |
u.find(":last-child").each(function() { | |
var a = g(this); | |
if (! ("inline" === a.css("display") || a.is("p,ul,ol,dl,dt,table,tr,td,th,tbody,thead,tfoot,q"))) { | |
var b = a.prev(); | |
b.length || (b = a); | |
b.children().is(d) && a.append(g("<div/>").css("clear", "both")) | |
} | |
}); (h = this.domainHackers[h.domain]) && h.hack(u); | |
for (h = 0; h < n.length; ++h) n[h].removeAttribute(O.util.cullNodeAttributeFlag); | |
return { | |
clip: u, | |
elapsedTime: (new Date).getTime() - s | |
} | |
} | |
function v(a, b, d) { | |
if (!a.attr(O.util.cullNodeAttributeFlag)) return this.trigger("elementExtracting", { | |
element: a[0], | |
method: "rect" | |
}), | |
this.trigger("elementIgnored", { | |
reason: "not culled" | |
}), | |
!1; | |
var g = O.util.getOuterDimensions(a), | |
h = O.util.computeOverlap(g, d.rect), | |
i = s.call(this, a, d.rect); | |
this.trigger("elementExtracting", { | |
element: a[0], | |
method: "rect", | |
sourceDimensions: g, | |
overlap: h | |
}); (a = "full" === i ? r.call(this, a, b, d) : F.call(this, a, b, d)) ? this.trigger("elementExtracted", | |
{ | |
method: "rect" | |
}) : this.trigger("elementIgnored", { | |
reason: "extractFull or extractPart failed" | |
}); | |
return a | |
} | |
function r(d, h, i) { | |
this.trigger("elementExtracting", { | |
method: "full", | |
element: d[0] | |
}); | |
var n = this.$; | |
if (3 === d[0].nodeType) return h.append(this.document.createTextNode(d[0].nodeValue)), | |
this.trigger("elementExtracted", { | |
method: "full" | |
}), | |
!0; | |
if (g.call(this, d, h, i)) return this.trigger("elementExtracted", { | |
method: "full" | |
}), | |
!0; | |
var o = { | |
reason: null | |
}; | |
if (!O.util.shouldInclude(d, o)) return this.trigger("elementIgnored", { | |
reason: o.reason | |
}), | |
!1; | |
var u = d[0].nodeName.toLowerCase(), | |
u = u in O.util.semanticBlockTagNames || "body" === u || "html" === u || "form" === u ? "div": u; | |
if ("style" === u) return this.trigger("elementIgnored", { | |
reason: "style tag" | |
}), | |
!1; | |
if ("fixed" == d.css("position")) return this.trigger("elementIgnored", { | |
reason: "fixed position" | |
}), | |
!1; | |
if ("input" === u) { | |
o = d.prop("type"); | |
if ("hidden" === o) return this.trigger("elementIgnored", { | |
reason: "unsupported input: " + o | |
}), | |
!1; | |
"submit" === o && (o = "button"); | |
o = n("<" + u + "/>").attr("type", o) | |
} else o = u in O.util.cloneableTags ? | |
O.util.safeClone(d) : "canvas" === u ? n("<img/>").attr("src", d[0].toDataURL("image/png")).attr("alt", "image converted from <canvas>").attr("width", d.width()).attr("height", d.height()).css("display", "inline") : n("<" + u + "/>"); | |
S(d, o); | |
var v = T.call(this, d); | |
if (h.hasClass(y)) v.position = "static"; | |
h.append(o); | |
b(o, v); (h = this.tweakers[u]) && h.tweakFully(d, o); | |
if ("iframe" !== u) { | |
h = d.contents(); | |
for (u = 0; u < h.length; u++) v = n(h[u]), | |
3 === h[u].nodeType ? o.append(this.document.createTextNode(h[u].nodeValue)) : 1 === h[u].nodeType && ("full" === | |
s.call(this, v, i.rect) ? r.call(this, v, o, i) : F.call(this, v, o, i)) | |
} | |
v = a(d, ["width", "height"]); | |
b(o, v); | |
K(d, o, i.rect); | |
i.firstIteration = !1; | |
this.trigger("elementExtracted", { | |
method: "full" | |
}); | |
return ! 0 | |
} | |
function F(d, i, p) { | |
this.trigger("elementExtracting", { | |
method: "partial", | |
element: d[0] | |
}); | |
var r = this.$; | |
if (d.attr(O.util.doNotClipAllAttributeName)) return this.trigger("elementIgnored", { | |
reason: "do not clip attribute" | |
}), | |
!1; | |
if (3 === d[0].nodeType) return i.append(document.createTextNode(d[0].nodeValue)), | |
this.trigger("elementExtracted", | |
{ | |
method: "partial" | |
}), | |
!0; | |
if (g.call(this, d, i, p)) return this.trigger("elementExtracted", { | |
method: "partial" | |
}), | |
!0; | |
var o = { | |
reason: null | |
}; | |
if (!O.util.shouldInclude(d, o)) return this.trigger("elementIgnored", { | |
reason: o.reason | |
}), | |
!1; | |
var s = d[0].nodeName.toLowerCase(), | |
s = s in O.util.semanticBlockTagNames ? "div": s; | |
s in O.util.cloneableTags ? (o = O.util.safeClone(d), o.text("")) : o = s in O.util.tagsToConvertToDiv ? r("<div/>") : r("<" + s + "/>"); | |
i.append(o); | |
i.hasClass(y) ? (o.width(p.rect.width).height(p.rect.height), o.wrap('<div style="position:relative;z-index:0;overflow:hidden;"><div style="position:relative;z-index:-9999;background-color:#FFF;">')) : | |
"table" === s && o.attr({ | |
cellpadding: 0, | |
cellspacing: 0, | |
border: 0 | |
}).css("border-collapse", "collapse"); (i = this.tweakers[s]) && i.tweakPartially(d, o); | |
b(o, h(d, p.rect)); | |
var i = o, | |
u = p.rect, | |
E = a(d, ["background-clip", "background-color", "background-image", "background-origin", "background-repeat"]); | |
n(E, d, u); | |
b(i, E); | |
"fixed" !== d.css("position") && K(d, o, p.rect); | |
b(o, a(d, "display,float,clear,font-size,line-height,font-family,color,visibility,white-space".split(","))); | |
i = !1; | |
if ("iframe" !== s) { | |
if (d = d.contents(), d.length) for (var r = | |
0, J; r < d.length; r++) J = d.eq(r), | |
1 === J[0].nodeType ? (J.attr(O.util.cullNodeAttributeFlag) || J.is("br") || J.hasClass(O.util.rewriteClass) && J.find("br").length || 0 === O.util.getOuterDimensions(J).area) && v.call(this, J, o, p) && (i = !0) : 3 === J[0].nodeType && (i = F.call(this, J, o, p) || i) | |
} else try { | |
J = r(d.contents()[0].documentElement), | |
o.css("display", "inline-block"), | |
i = v.call(this, J, o, p) | |
} catch(T) { | |
i = !1 | |
} | |
i ? this.trigger("elementExtracted", { | |
method: "partial" | |
}) : (this.trigger("elementIgnored", { | |
reason: "no children were extracted" | |
}), | |
o.remove()); | |
return i | |
} | |
function E(a) { | |
this.$ = a.$; | |
this.baseData = a.baseData; | |
this.support = a.support; | |
this.document = a.document; | |
this.sandbox = null; | |
this.tweakers = { | |
a: new E.AnchorTweaker(this.baseData), | |
button: new E.ButtonTweaker, | |
embed: (new E.EmbedTweaker(this.baseData)).bubble("autoplayDisabled").to(this), | |
iframe: (new E.IframeTweaker(this.baseData)).bubble("autoplayDisabled").to(this), | |
img: new E.ImageTweaker(this.baseData), | |
input: new E.InputTweaker(this.baseData), | |
object: (new E.ObjectTweaker(this.baseData)).bubble("autoplayDisabled").to(this), | |
param: (new E.ParamTweaker(this.baseData)).bubble("autoplayDisabled").to(this), | |
source: new E.SourceTweaker(this.baseData), | |
table: new E.TableTweaker(this.baseData), | |
video: (new E.VideoTweaker(this.baseData)).bubble("autoplayDisabled").to(this) | |
}; | |
this.domainHackers = { | |
"tlc.discovery.com": new E.TlcDiscoveryHacker, | |
"www.youtube.com": new E.YouTubeHacker | |
} | |
} | |
var O = d.CLIPBOARD.client, | |
y = O.util.clipContainerClass, | |
J = { | |
embed: 1, | |
param: 1, | |
object: 1, | |
video: 1, | |
audio: 1, | |
source: 1, | |
br: 1, | |
img: 1 | |
}, | |
T = function() { | |
var a = "-moz-border-bottom-left-radius,-moz-border-bottom-right-radius,-moz-border-top-left-radius,-moz-border-top-right-radius,-moz-box-shadow,-webkit-border-bottom-left-radius,-webkit-border-bottom-right-radius,-webkit-border-top-left-radius,-webkit-border-top-right-radius,-webkit-box-shadow,background-clip,background-color,background-image,background-origin,background-position,background-repeat,border-bottom-color,border-bottom-style,border-bottom-width,border-top-color,border-top-style,border-top-width,border-left-color,border-left-style,border-left-width,border-right-color,border-right-style,border-right-width,border-bottom-left-radius,border-bottom-right-radius,border-top-left-radius,border-top-right-radius,border-spacing,border-collapse,box-shadow,caption-side,clear,clip,color,content,counter-increment,counter-reset,cursor,direction,display,empty-cells,float,font-family,font-size,font-style,font-variant,font-weight,letter-spacing,line-height,list-style-image,list-style-position,list-style-type,margin-bottom,margin-left,margin-right,margin-top,marker-offset,max-height,max-width,min-height,min-width,opacity,outline-color,outline-style,outline-width,overflow-x,overflow-y,padding-bottom,padding-left,padding-right,padding-top,page-break-after,page-break-before,page-break-inside,quotes,table-layout,text-align,text-shadow,text-decoration,text-indent,text-transform,vertical-align,visibility,white-space,word-spacing,z-index".split(","); | |
return function(b) { | |
for (var d = {}, | |
g, h = this.document, i = 0; i < a.length; i++) { | |
var n = a[i]; | |
if ("line-height" === n && b[0].currentStyle) g = b[0].currentStyle.lineHeight; | |
else if ("margin-right" === n && h.defaultView && h.defaultView.getComputedStyle) g = h.defaultView.getComputedStyle(b[0], null).getPropertyValue("margin-right"); | |
else if (0 === n.indexOf("background-position")) g = b.bgPosition(); | |
else try { | |
g = b.css(n) | |
} catch(r) { | |
g = null | |
} | |
g && (d[n] = g) | |
} | |
"inline" === d.display && d.clip && delete d.clip; | |
return d | |
} | |
} (), | |
S = function() { | |
function a(b, d, g) { (b = | |
b.attr(g)) && d.attr(g, b) | |
} | |
return function(b, d) { | |
a(b, d, "title"); | |
a(b, d, "alt"); | |
a(b, d, "rel") | |
} | |
} (); | |
O.util.inherit(E, new O.Extractor, new O.ActivatableControl, new O.EventEmitter); | |
O.util.merge(E.prototype, { | |
constructor: E, | |
tweakers: {}, | |
domainHackers: {}, | |
extract: function(a, b) { | |
this.activate(); | |
this.trigger("extractionStarted", { | |
rect: b.rect, | |
selection: a | |
}); | |
var d = u.call(this, a, b.rect); | |
a.startElement = a.endElement = null; | |
if (d) { | |
var g = d.clip, | |
h = O.util.compactHtml(g.html()), | |
g = g.text().replace(/\s+/gm, " "), | |
i = this.sandbox.getDimensions(); | |
this.sandbox.empty(); - 1 !== h.indexOf("data_clipboard3141592654") && (h = h.replace("data_clipboard3141592654", "data"), h = h.replace(/classid=['"]?clsid:D27CDB6E-AE6D-11cf-96B8-444553540000['"]?/gi, "")); | |
this.trigger("extracted", { | |
elapsedTime: d.elapsedTime, | |
html: h, | |
text: g, | |
dimensions: i, | |
top: b.rect.top, | |
left: b.rect.left, | |
extractionType: b.extractionType, | |
clipData: b.clipData | |
}) | |
} else this.trigger("nothingExtracted"); | |
this.deactivate() | |
} | |
}); | |
E.prototype.doActivate = function() { | |
if (!this.sandbox) O.util.rewritePageHtml(this.$, this.baseData, | |
this.support), | |
this.sandbox = O.util.createSandbox(this.$), | |
this.trigger("sandboxBuilt", { | |
nodeName: this.sandbox.$element[0].nodeName.toLowerCase() | |
}) | |
}; | |
E.prototype.doDeactivate = function() { | |
if (this.sandbox) this.sandbox.destroy(), | |
this.sandbox = null | |
}; | |
E.prototype.type = "clip"; | |
O.extractors.HtmlExtractor = E | |
})(window); | |
(function(d) { | |
function i(a) { | |
function b(a, i) { | |
if (3 === a.nodeType) 0 < a.nodeValue.length && i.appendChild(a.cloneNode(!0)); | |
else if (1 === a.nodeType) { | |
var r = a.nodeName.toLowerCase(); | |
if (!v[r]) { | |
s[r] ? (i.appendChild(h.util.safeClone(g(a))[0]), i = i.lastChild, r = i.getAttribute("href"), null !== r && i.setAttribute("href", h.util.normalizeUri(r, d))) : u[r] && i.firstChild && (i.appendChild(n.createElement("br")), i.appendChild(n.createElement("br"))); | |
for (var r = 0, o = a.childNodes.length; r < o; r++) b(a.childNodes[r], i) | |
} | |
} | |
} | |
for (var d = this.baseData, | |
g = this.$, i = this.document.createDocumentFragment(), n = this.document, K = 0, S = a.childNodes.length, t; K < S; K++) t = a.childNodes[K], | |
b(t, i); | |
return i | |
} | |
function g(a) { | |
return '<blockquote class="' + n + '"><p class="' + K + '">' + a + "</p></blockquote>" | |
} | |
function b(a) { | |
var b = a.ownerDocument.createElement("div"); | |
b.appendChild(a); | |
return b.innerHTML | |
} | |
function a(a) { | |
this.$ = a.$; | |
this.baseData = a.baseData; | |
this.document = a.document; | |
this.staticBaseUrl = a.staticBaseUrl | |
} | |
var h = d.CLIPBOARD.client, | |
n = "clipboard_blockquote_314159265", | |
K = "clipboard_blockquote_text_314159265", | |
s = { | |
b: 1, | |
strong: 1, | |
em: 1, | |
i: 1, | |
code: 1, | |
samp: 1, | |
kbd: 1, | |
tt: 1, | |
"var": 1, | |
a: 1, | |
s: 1, | |
del: 1, | |
sup: 1, | |
sub: 1, | |
ins: 1, | |
u: 1, | |
abbr: 1, | |
acronym: 1, | |
small: 1, | |
big: 1, | |
dfn: 1, | |
br: 1, | |
q: 1, | |
cite: 1 | |
}, | |
u = { | |
p: 1 | |
}, | |
v = { | |
script: 1, | |
noscript: 1, | |
noembed: 1, | |
embed: 1, | |
object: 1, | |
meta: 1, | |
base: 1, | |
head: 1, | |
style: 1, | |
noframes: 1 | |
}; | |
a.prototype.constructor = a; | |
h.util.inherit(a, new h.Extractor, new h.ActivatableControl, new h.EventEmitter); | |
a.prototype.extract = function(a, n) { | |
var s = (new Date).getTime(), | |
u = i.call(this, a.fragment), | |
v = g(b(u)), | |
J = h.util.createSandbox(this.$), | |
K = this.$("<div/>").attr("id", | |
h.util.addSuffix("sandbox_readiness")); | |
J.addSandboxCss(this.staticBaseUrl); | |
J.html(v); | |
J.append(K); | |
u = K.attr("id"); | |
K.attr("id", "foo").attr("id", u); | |
var S = this, | |
t = d.setInterval(function() { | |
if ("-9123px" === K.css("left")) { | |
d.clearInterval(t); | |
K.remove(); | |
J.$body.width(570); | |
var b = J.getDimensions(); | |
J.destroy(); | |
S.trigger("extracted", { | |
elapsedTime: (new Date).getTime() - s, | |
html: v, | |
text: a.text, | |
dimensions: b, | |
extractionType: "text", | |
left: n.left, | |
top: n.top | |
}) | |
} | |
}, | |
100) | |
}; | |
a.prototype.type = "text"; | |
h.extractors.TextExtractor = a | |
})(window); | |
(function(d) { | |
function i(d) { | |
this.$ = d.$; | |
this.baseUri = d.baseUri; | |
this.baseData = d.baseData | |
} | |
d = d.CLIPBOARD.client; | |
d.util.inherit(i, new d.Extractor, new d.ActivatableControl, new d.EventEmitter); | |
d.util.merge(i.prototype, { | |
constructor: i, | |
extract: function(d, b) { | |
this.trigger("extracted", { | |
elapsedTime: 0, | |
html: "", | |
text: "", | |
compressedHtml: "", | |
dimensions: { | |
width: 1280, | |
height: 1024 | |
}, | |
top: 0, | |
left: 0, | |
extractionType: b.extractionType | |
}) | |
} | |
}); | |
i.prototype.type = "bookmark"; | |
d.extractors.BookmarkExtractor = i | |
})(window); | |
(function(d) { | |
function i(d) { | |
this.domain = d | |
} | |
i.prototype = { | |
hack: function() {} | |
}; | |
d.CLIPBOARD.client.extractors.HtmlExtractor.DomainHacker = i | |
})(window); (function(d) { | |
function i() {} | |
i.prototype = { | |
tweakPartially: function() {}, | |
tweakFully: function() {} | |
}; | |
d.CLIPBOARD.client.extractors.HtmlExtractor.TagTweaker = i | |
})(window); | |
(function(d) { | |
function i() {} | |
d = d.CLIPBOARD.client.extractors.HtmlExtractor; | |
i.prototype = new d.DomainHacker("tlc.discovery.com"); | |
i.prototype.hack = function(d) { | |
d.find('object[name="video-per-page-player"]').each(function() { | |
var b = d.constructor(this), | |
a = b.find('param[name="flashvars"]').attr("value").match(/clipRefId%22%3A%22(\w+?)%22/); | |
a && b.replaceWith('<iframe id="dit-video-embed" width="640" height="360" src="http://static.discoverymedia.com/videos/components/tlc/{refId}/snag-it-player.html?auto=no" frameborder="0" scrolling="no" allowtransparency="true"></iframe>'.replace("{refId}", | |
a[1])) | |
}) | |
}; | |
d.TlcDiscoveryHacker = i | |
})(window); | |
(function(d) { | |
function i() {} | |
d = d.CLIPBOARD.client.extractors.HtmlExtractor; | |
i.prototype = new d.DomainHacker("www.youtube.com"); | |
i.prototype.hack = function(d) { | |
var b = d.find("embed"), | |
d = d.constructor; | |
if (b.length) for (var a = 0; a < b.length; ++a) { | |
var h = d("embed")[0]; | |
if ((h = (h.outerHTML || (new XMLSerializer).serializeToString(h)).match(/video_id=([^&"]+)/g)) && 1 <= h.length) if ((h = /video_id=([^&"]+)/.exec(h[h.length - 1])) && 2 <= h.length) { | |
var i = d(b[a]).width(), | |
K = d(b[a]).height(), | |
h = '<iframe src="http://www.youtube.com/embed/{id}?wmode=transparent" width="{w}" height="{h}" frameborder="0" allowfullscreen></iframe>'.replace("{id}", | |
h[1]).replace("{w}", i).replace("{h}", K); | |
d(b[a]).replaceWith(h) | |
} | |
} | |
}; | |
d.YouTubeHacker = i | |
})(window); (function(d) { | |
function i(a) { | |
this.baseData = a | |
} | |
function g(a, d) { | |
b.util.copyAttributeAndNormalize(a, d, "href", this.baseData) | |
} | |
var b = d.CLIPBOARD.client, | |
d = b.extractors.HtmlExtractor; | |
b.util.inherit(i, new d.TagTweaker); | |
i.prototype.tweakFully = g; | |
i.prototype.tweakPartially = g; | |
d.AnchorTweaker = i | |
})(window); | |
(function(d) { | |
function i() {} | |
var d = d.CLIPBOARD.client, | |
g = d.extractors.HtmlExtractor; | |
d.util.inherit(i, new g.TagTweaker); | |
i.prototype.tweakFully = function(b, a) { | |
a.height(b.outerHeight()).width(b.outerWidth()) | |
}; | |
g.ButtonTweaker = i | |
})(window); | |
(function(d) { | |
function i(b) { | |
this.baseData = b | |
} | |
var g = d.CLIPBOARD.client, | |
d = g.extractors.HtmlExtractor; | |
g.util.inherit(i, new d.TagTweaker, new g.EventEmitter); | |
i.prototype.tweakFully = function(b, a) { | |
g.util.copyAttributeAndNormalize(b, a, "src", this.baseData) && g.util.disableAutoplayForUrl(a, "src") && this.trigger("autoplayDisabled", { | |
source: "embed.src" | |
}); | |
if (g.util.copyAttributeIfExists(b, a, "flashvars")) if (g.util.disableAutoplayForUrl(a, "flashvars")) this.trigger("autoplayDisabled", { | |
source: "embed.flashvars" | |
}); | |
else { | |
var d = | |
a.attr("flashvars"); | |
a.attr("flashvars", d + (d.length ? "&": "") + "autoplay=false") | |
} | |
}; | |
d.EmbedTweaker = i | |
})(window); | |
(function(d) { | |
function i(b) { | |
this.baseData = b | |
} | |
var g = d.CLIPBOARD.client, | |
d = g.extractors.HtmlExtractor; | |
g.util.inherit(i, new d.TagTweaker, new g.EventEmitter); | |
i.prototype.tweakFully = function(b, a) { | |
g.util.copyAttributeAndNormalize(b, a, "src", this.baseData) && (g.util.disableAutoplayForUrl(a, "src") ? this.trigger("autoplayDisabled", { | |
source: "iframe.src" | |
}) : "#" === a.attr("src") && a.attr("src", "about:blank")); | |
g.util.copyAttributeIfExists(b, a, "scrolling"); | |
g.util.copyAttributeIfExists(b, a, "frameborder"); | |
g.util.copyAttributeIfExists(b, | |
a, "webkitAllowFullScreen"); | |
g.util.copyAttributeIfExists(b, a, "allowFullScreen"); | |
var d = a.attr("src"); | |
/^http:\/\/www\.youtube\.com\/embed\//.test(d) && (d = -1 !== d.indexOf("wmode=") ? d.replace(/\bwmode=.*?([&|$])/i, "wmode=transparent$1") : d + (( - 1 === d.indexOf("?") ? "?": "&") + "wmode=transparent"), a.attr("src", d)) | |
}; | |
d.IframeTweaker = i | |
})(window); | |
(function(d) { | |
function i(a) { | |
this.baseData = a | |
} | |
function g(a, d) { | |
b.util.copyAttributeAndNormalize(a, d, "src", this.baseData) | |
} | |
var b = d.CLIPBOARD.client, | |
d = b.extractors.HtmlExtractor; | |
b.util.inherit(i, new d.TagTweaker); | |
i.prototype.tweakFully = function(a, d) { | |
g.call(this, a, d); | |
b.util.copyAttributeIfExists(a, d, "width"); | |
b.util.copyAttributeIfExists(a, d, "height") | |
}; | |
i.prototype.tweakPartially = g; | |
d.ImageTweaker = i | |
})(window); | |
(function(d) { | |
function i(a, d) { | |
"submit" === a.attr("type") ? d.attr("value", a.attr("value") || "Submit Query") : b.util.copyAttributeIfExists(a, d, "value") | |
} | |
function g() {} | |
var b = d.CLIPBOARD.client, | |
d = b.extractors.HtmlExtractor; | |
b.util.inherit(g, new d.TagTweaker); | |
g.prototype.tweakFully = i; | |
g.prototype.tweakPartially = i; | |
d.InputTweaker = g | |
})(window); | |
(function(d) { | |
function i(b) { | |
this.baseData = b | |
} | |
var g = d.CLIPBOARD.client, | |
d = g.extractors.HtmlExtractor; | |
g.util.inherit(i, new d.TagTweaker, new g.EventEmitter); | |
i.prototype.tweakFully = function(b, a) { | |
g.util.copyAttributeAndNormalize(b, a, "data", this.baseData) && g.util.disableAutoplayForUrl(a, "data") && this.trigger("autoplayDisabled", { | |
source: "object.data" | |
}) | |
}; | |
d.ObjectTweaker = i | |
})(window); | |
(function(d) { | |
function i(a, d) { | |
var g = a.attr("name"); | |
if (g) switch (d.attr("name", g), g = g.toLowerCase(), g) { | |
case "flashvars": | |
d.attr("value", a.attr("value")); | |
b.util.disableAutoplayForUrl(d, "value") && this.trigger("autoplayDisabled", { | |
source: "param.flashvars" | |
}); | |
break; | |
case "play": | |
case "autostart": | |
"false" !== d.attr("value") && (d.attr("value", "false"), this.trigger("autoplayDisabled", { | |
source: "param." + g | |
})); | |
break; | |
case "movie": | |
b.util.copyAttributeAndNormalize(a, d, "value", this.baseData) | |
} | |
} | |
function g(a) { | |
this.baseData = a | |
} | |
var b = d.CLIPBOARD.client, | |
d = b.extractors.HtmlExtractor; | |
b.util.inherit(g, new d.TagTweaker, new b.EventEmitter); | |
g.prototype.tweakFully = i; | |
g.prototype.tweakPartially = i; | |
d.ParamTweaker = g | |
})(window); | |
(function(d) { | |
function i(a, d) { | |
b.util.copyAttributeAndNormalize(a, d, "src", this.baseData); | |
b.util.copyAttributeIfExists(a, d, "type") | |
} | |
function g(a) { | |
this.baseData = a | |
} | |
var b = d.CLIPBOARD.client, | |
d = b.extractors.HtmlExtractor; | |
b.util.inherit(g, new d.TagTweaker); | |
g.prototype.tweakFully = i; | |
g.prototype.tweakPartially = i; | |
d.SourceTweaker = g | |
})(window); | |
(function(d) { | |
function i(a) { | |
this.baseData = a | |
} | |
function g(a, d) { | |
d.attr("bgcolor") && (d.css("background-color", d.css("background-color")), d.removeAttr("bgcolor")); | |
var g = d.attr("background"); | |
g && (d.removeAttr("background"), d.css("background-image", "url(" + b.util.normalizeUri(g, this.baseData) + ")")) | |
} | |
var b = d.CLIPBOARD.client, | |
d = b.extractors.HtmlExtractor; | |
b.util.inherit(i, new d.TagTweaker); | |
i.prototype.tweakFully = g; | |
i.prototype.tweakPartially = g; | |
d.TableTweaker = i | |
})(window); | |
(function(d, i) { | |
function g(a) { | |
this.baseData = a | |
} | |
var b = d.CLIPBOARD.client, | |
a = b.extractors.HtmlExtractor; | |
b.util.inherit(g, new a.TagTweaker, new b.EventEmitter); | |
g.prototype.tweakFully = function(a, d) { | |
d.attr("src") && d.attr("src", b.util.normalizeUri(d.attr("src"), this.baseData)); | |
d.attr("poster") && d.attr("poster", b.util.normalizeUri(d.attr("poster"), this.baseData)); | |
d.attr("autoplay") !== i && (d.removeAttr("autoplay"), this.trigger("autoplayDisabled", { | |
source: "video.autoplay" | |
})); | |
d.attr("controls", "controls") | |
}; | |
a.VideoTweaker = | |
g | |
})(window); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment