Skip to content

Instantly share code, notes, and snippets.

@SiarheyUchukhlebau
Created June 4, 2024 14:02
Show Gist options
  • Save SiarheyUchukhlebau/b3691a1ac96b7fcdbaf0bb8512dd1b20 to your computer and use it in GitHub Desktop.
Save SiarheyUchukhlebau/b3691a1ac96b7fcdbaf0bb8512dd1b20 to your computer and use it in GitHub Desktop.
var Prototype = {
Version: "1.7.3",
Browser: (function () {
var b = navigator.userAgent;
var a = Object.prototype.toString.call(window.opera) == "[object Opera]";
return {
IE: !!window.attachEvent && !a,
Opera: a,
WebKit: b.indexOf("AppleWebKit/") > -1,
Gecko: b.indexOf("Gecko") > -1 && b.indexOf("KHTML") === -1,
MobileSafari: /Apple.*Mobile/.test(b)
}
})(),
BrowserFeatures: {
XPath: !!document.evaluate,
SelectorsAPI: !!document.querySelector,
ElementExtensions: (function () {
var a = window.Element || window.HTMLElement;
return !!(a && a.prototype)
})(),
SpecificElementExtensions: (function () {
if (typeof window.HTMLDivElement !== "undefined") {
return true
}
var c = document.createElement("div"), b = document.createElement("form"), a = false;
if (c.__proto__ && (c.__proto__ !== b.__proto__)) {
a = true
}
c = b = null;
return a
})()
},
ScriptFragment: "<script[^>]*>([\\S\\s]*?)<\/script\\s*>",
JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,
emptyFunction: function () {
},
K: function (a) {
return a
}
};
if (Prototype.Browser.MobileSafari) {
Prototype.BrowserFeatures.SpecificElementExtensions = false
}
var Class = (function () {
var d = (function () {
for (var e in {toString: 1}) {
if (e === "toString") {
return false
}
}
return true
})();
function a() {
}
function b() {
var h = null, g = $A(arguments);
if (Object.isFunction(g[0])) {
h = g.shift()
}
function e() {
this.initialize.apply(this, arguments)
}
Object.extend(e, Class.Methods);
e.superclass = h;
e.subclasses = [];
if (h) {
a.prototype = h.prototype;
e.prototype = new a;
h.subclasses.push(e)
}
for (var f = 0, k = g.length; f < k; f++) {
e.addMethods(g[f])
}
if (!e.prototype.initialize) {
e.prototype.initialize = Prototype.emptyFunction
}
e.prototype.constructor = e;
return e
}
function c(m) {
var g = this.superclass && this.superclass.prototype, f = Object.keys(m);
if (d) {
if (m.toString != Object.prototype.toString) {
f.push("toString")
}
if (m.valueOf != Object.prototype.valueOf) {
f.push("valueOf")
}
}
for (var e = 0, h = f.length; e < h; e++) {
var l = f[e], k = m[l];
if (g && Object.isFunction(k) && k.argumentNames()[0] == "$super") {
var n = k;
k = (function (i) {
return function () {
return g[i].apply(this, arguments)
}
})(l).wrap(n);
k.valueOf = (function (i) {
return function () {
return i.valueOf.call(i)
}
})(n);
k.toString = (function (i) {
return function () {
return i.toString.call(i)
}
})(n)
}
this.prototype[l] = k
}
return this
}
return {create: b, Methods: {addMethods: c}}
})();
(function () {
var z = Object.prototype.toString, l = Object.prototype.hasOwnProperty, A = "Null", C = "Undefined", L = "Boolean",
x = "Number", w = "String", J = "Object", i = "[object Function]", d = "[object Boolean]",
k = "[object Number]", f = "[object String]", b = "[object Array]", I = "[object Date]",
e = window.JSON && typeof JSON.stringify === "function" && JSON.stringify(0) === "0" && typeof JSON.stringify(Prototype.K) === "undefined";
var r = ["toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "constructor"];
var a = (function () {
for (var M in {toString: 1}) {
if (M === "toString") {
return false
}
}
return true
})();
function E(N) {
switch (N) {
case null:
return A;
case (void 0):
return C
}
var M = typeof N;
switch (M) {
case"boolean":
return L;
case"number":
return x;
case"string":
return w
}
return J
}
function h(M, O) {
for (var N in O) {
M[N] = O[N]
}
return M
}
function m(M) {
try {
if (p(M)) {
return "undefined"
}
if (M === null) {
return "null"
}
return M.inspect ? M.inspect() : String(M)
} catch (N) {
if (N instanceof RangeError) {
return "..."
}
throw N
}
}
function B(M) {
return n("", {"": M}, [])
}
function n(V, S, T) {
var U = S[V];
if (E(U) === J && typeof U.toJSON === "function") {
U = U.toJSON(V)
}
var O = z.call(U);
switch (O) {
case k:
case d:
case f:
U = U.valueOf()
}
switch (U) {
case null:
return "null";
case true:
return "true";
case false:
return "false"
}
var R = typeof U;
switch (R) {
case"string":
return U.inspect(true);
case"number":
return isFinite(U) ? String(U) : "null";
case"object":
for (var N = 0, M = T.length; N < M; N++) {
if (T[N] === U) {
throw new TypeError("Cyclic reference to '" + U + "' in object")
}
}
T.push(U);
var Q = [];
if (O === b) {
for (var N = 0, M = U.length; N < M; N++) {
var P = n(N, U, T);
Q.push(typeof P === "undefined" ? "null" : P)
}
Q = "[" + Q.join(",") + "]"
} else {
var W = Object.keys(U);
for (var N = 0, M = W.length; N < M; N++) {
var V = W[N], P = n(V, U, T);
if (typeof P !== "undefined") {
Q.push(V.inspect(true) + ":" + P)
}
}
Q = "{" + Q.join(",") + "}"
}
T.pop();
return Q
}
}
function K(M) {
return JSON.stringify(M)
}
function D(M) {
return $H(M).toQueryString()
}
function q(M) {
return M && M.toHTML ? M.toHTML() : String.interpret(M)
}
function y(M) {
if (E(M) !== J) {
throw new TypeError()
}
var O = [];
for (var P in M) {
if (l.call(M, P)) {
O.push(P)
}
}
if (a) {
for (var N = 0; P = r[N]; N++) {
if (l.call(M, P)) {
O.push(P)
}
}
}
return O
}
function H(M) {
var N = [];
for (var O in M) {
N.push(M[O])
}
return N
}
function t(M) {
return h({}, M)
}
function F(M) {
return !!(M && M.nodeType == 1)
}
function v(M) {
return z.call(M) === b
}
var c = (typeof Array.isArray == "function") && Array.isArray([]) && !Array.isArray({});
if (c) {
v = Array.isArray
}
function s(M) {
return M instanceof Hash
}
function o(M) {
return z.call(M) === i
}
function g(M) {
return z.call(M) === f
}
function G(M) {
return z.call(M) === k
}
function u(M) {
return z.call(M) === I
}
function p(M) {
return typeof M === "undefined"
}
h(Object, {
extend: h,
inspect: m,
toJSON: e ? K : B,
toQueryString: D,
toHTML: q,
keys: Object.keys || y,
values: H,
clone: t,
isElement: F,
isArray: v,
isHash: s,
isFunction: o,
isString: g,
isNumber: G,
isDate: u,
isUndefined: p
})
})();
Object.extend(Function.prototype, (function () {
var m = Array.prototype.slice;
function d(q, n) {
var p = q.length, o = n.length;
while (o--) {
q[p + o] = n[o]
}
return q
}
function k(o, n) {
o = m.call(o, 0);
return d(o, n)
}
function g() {
var n = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1].replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, "").replace(/\s+/g, "").split(",");
return n.length == 1 && !n[0] ? [] : n
}
function h(p) {
if (arguments.length < 2 && Object.isUndefined(arguments[0])) {
return this
}
if (!Object.isFunction(this)) {
throw new TypeError("The object is not callable.")
}
var r = function () {
};
var n = this, o = m.call(arguments, 1);
var q = function () {
var s = k(o, arguments);
var t = this instanceof q ? this : p;
return n.apply(t, s)
};
r.prototype = this.prototype;
q.prototype = new r();
return q
}
function f(p) {
var n = this, o = m.call(arguments, 1);
return function (r) {
var q = d([r || window.event], o);
return n.apply(p, q)
}
}
function l() {
if (!arguments.length) {
return this
}
var n = this, o = m.call(arguments, 0);
return function () {
var p = k(o, arguments);
return n.apply(this, p)
}
}
function e(p) {
var n = this, o = m.call(arguments, 1);
p = p * 1000;
return window.setTimeout(function () {
return n.apply(n, o)
}, p)
}
function a() {
var n = d([0.01], arguments);
return this.delay.apply(this, n)
}
function c(o) {
var n = this;
return function () {
var p = d([n.bind(this)], arguments);
return o.apply(this, p)
}
}
function b() {
if (this._methodized) {
return this._methodized
}
var n = this;
return this._methodized = function () {
var o = d([this], arguments);
return n.apply(null, o)
}
}
var i = {argumentNames: g, bindAsEventListener: f, curry: l, delay: e, defer: a, wrap: c, methodize: b};
if (!Function.prototype.bind) {
i.bind = h
}
return i
})());
(function (c) {
function b() {
return this.getUTCFullYear() + "-" + (this.getUTCMonth() + 1).toPaddedString(2) + "-" + this.getUTCDate().toPaddedString(2) + "T" + this.getUTCHours().toPaddedString(2) + ":" + this.getUTCMinutes().toPaddedString(2) + ":" + this.getUTCSeconds().toPaddedString(2) + "Z"
}
function a() {
return this.toISOString()
}
if (!c.toISOString) {
c.toISOString = b
}
if (!c.toJSON) {
c.toJSON = a
}
})(Date.prototype);
RegExp.prototype.match = RegExp.prototype.test;
RegExp.escape = function (a) {
return String(a).replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1")
};
var PeriodicalExecuter = Class.create({
initialize: function (b, a) {
this.callback = b;
this.frequency = a;
this.currentlyExecuting = false;
this.registerCallback()
}, registerCallback: function () {
this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000)
}, execute: function () {
this.callback(this)
}, stop: function () {
if (!this.timer) {
return
}
clearInterval(this.timer);
this.timer = null
}, onTimerEvent: function () {
if (!this.currentlyExecuting) {
try {
this.currentlyExecuting = true;
this.execute();
this.currentlyExecuting = false
} catch (a) {
this.currentlyExecuting = false;
throw a
}
}
}
});
Object.extend(String, {
interpret: function (a) {
return a == null ? "" : String(a)
}, specialChar: {"\b": "\\b", "\t": "\\t", "\n": "\\n", "\f": "\\f", "\r": "\\r", "\\": "\\\\"}
});
Object.extend(String.prototype, (function () {
var NATIVE_JSON_PARSE_SUPPORT = window.JSON && typeof JSON.parse === "function" && JSON.parse('{"test": true}').test;
function prepareReplacement(replacement) {
if (Object.isFunction(replacement)) {
return replacement
}
var template = new Template(replacement);
return function (match) {
return template.evaluate(match)
}
}
function isNonEmptyRegExp(regexp) {
return regexp.source && regexp.source !== "(?:)"
}
function gsub(pattern, replacement) {
var result = "", source = this, match;
replacement = prepareReplacement(replacement);
if (Object.isString(pattern)) {
pattern = RegExp.escape(pattern)
}
if (!(pattern.length || isNonEmptyRegExp(pattern))) {
replacement = replacement("");
return replacement + source.split("").join(replacement) + replacement
}
while (source.length > 0) {
match = source.match(pattern);
if (match && match[0].length > 0) {
result += source.slice(0, match.index);
result += String.interpret(replacement(match));
source = source.slice(match.index + match[0].length)
} else {
result += source, source = ""
}
}
return result
}
function sub(pattern, replacement, count) {
replacement = prepareReplacement(replacement);
count = Object.isUndefined(count) ? 1 : count;
return this.gsub(pattern, function (match) {
if (--count < 0) {
return match[0]
}
return replacement(match)
})
}
function scan(pattern, iterator) {
this.gsub(pattern, iterator);
return String(this)
}
function truncate(length, truncation) {
length = length || 30;
truncation = Object.isUndefined(truncation) ? "..." : truncation;
return this.length > length ? this.slice(0, length - truncation.length) + truncation : String(this)
}
function strip() {
return this.replace(/^\s+/, "").replace(/\s+$/, "")
}
function stripTags() {
return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?(\/)?>|<\/\w+>/gi, "")
}
function stripScripts() {
return this.replace(new RegExp(Prototype.ScriptFragment, "img"), "")
}
function extractScripts() {
var matchAll = new RegExp(Prototype.ScriptFragment, "img"),
matchOne = new RegExp(Prototype.ScriptFragment, "im");
return (this.match(matchAll) || []).map(function (scriptTag) {
return (scriptTag.match(matchOne) || ["", ""])[1]
})
}
function evalScripts() {
return this.extractScripts().map(function (script) {
return eval(script)
})
}
function escapeHTML() {
return this.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;")
}
function unescapeHTML() {
return this.stripTags().replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&")
}
function toQueryParams(separator) {
var match = this.strip().match(/([^?#]*)(#.*)?$/);
if (!match) {
return {}
}
return match[1].split(separator || "&").inject({}, function (hash, pair) {
if ((pair = pair.split("="))[0]) {
var key = decodeURIComponent(pair.shift()), value = pair.length > 1 ? pair.join("=") : pair[0];
if (value != undefined) {
value = value.gsub("+", " ");
value = decodeURIComponent(value)
}
if (key in hash) {
if (!Object.isArray(hash[key])) {
hash[key] = [hash[key]]
}
hash[key].push(value)
} else {
hash[key] = value
}
}
return hash
})
}
function toArray() {
return this.split("")
}
function succ() {
return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1)
}
function times(count) {
return count < 1 ? "" : new Array(count + 1).join(this)
}
function camelize() {
return this.replace(/-+(.)?/g, function (match, chr) {
return chr ? chr.toUpperCase() : ""
})
}
function capitalize() {
return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase()
}
function underscore() {
return this.replace(/::/g, "/").replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2").replace(/([a-z\d])([A-Z])/g, "$1_$2").replace(/-/g, "_").toLowerCase()
}
function dasherize() {
return this.replace(/_/g, "-")
}
function inspect(useDoubleQuotes) {
var escapedString = this.replace(/[\x00-\x1f\\]/g, function (character) {
if (character in String.specialChar) {
return String.specialChar[character]
}
return "\\u00" + character.charCodeAt().toPaddedString(2, 16)
});
if (useDoubleQuotes) {
return '"' + escapedString.replace(/"/g, '\\"') + '"'
}
return "'" + escapedString.replace(/'/g, "\\'") + "'"
}
function unfilterJSON(filter) {
return this.replace(filter || Prototype.JSONFilter, "$1")
}
function isJSON() {
var str = this;
if (str.blank()) {
return false
}
str = str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@");
str = str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]");
str = str.replace(/(?:^|:|,)(?:\s*\[)+/g, "");
return (/^[\],:{}\s]*$/).test(str)
}
function evalJSON(sanitize) {
var json = this.unfilterJSON(),
cx = /[\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff\u0000]/g;
if (cx.test(json)) {
json = json.replace(cx, function (a) {
return "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4)
})
}
try {
if (!sanitize || json.isJSON()) {
return eval("(" + json + ")")
}
} catch (e) {
}
throw new SyntaxError("Badly formed JSON string: " + this.inspect())
}
function parseJSON() {
var json = this.unfilterJSON();
return JSON.parse(json)
}
function include(pattern) {
return this.indexOf(pattern) > -1
}
function startsWith(pattern, position) {
position = Object.isNumber(position) ? position : 0;
return this.lastIndexOf(pattern, position) === position
}
function endsWith(pattern, position) {
pattern = String(pattern);
position = Object.isNumber(position) ? position : this.length;
if (position < 0) {
position = 0
}
if (position > this.length) {
position = this.length
}
var d = position - pattern.length;
return d >= 0 && this.indexOf(pattern, d) === d
}
function empty() {
return this == ""
}
function blank() {
return /^\s*$/.test(this)
}
function interpolate(object, pattern) {
return new Template(this, pattern).evaluate(object)
}
return {
gsub: gsub,
sub: sub,
scan: scan,
truncate: truncate,
strip: String.prototype.trim || strip,
stripTags: stripTags,
stripScripts: stripScripts,
extractScripts: extractScripts,
evalScripts: evalScripts,
escapeHTML: escapeHTML,
unescapeHTML: unescapeHTML,
toQueryParams: toQueryParams,
parseQuery: toQueryParams,
toArray: toArray,
succ: succ,
times: times,
camelize: camelize,
capitalize: capitalize,
underscore: underscore,
dasherize: dasherize,
inspect: inspect,
unfilterJSON: unfilterJSON,
isJSON: isJSON,
evalJSON: NATIVE_JSON_PARSE_SUPPORT ? parseJSON : evalJSON,
include: include,
startsWith: String.prototype.startsWith || startsWith,
endsWith: String.prototype.endsWith || endsWith,
empty: empty,
blank: blank,
interpolate: interpolate
}
})());
var Template = Class.create({
initialize: function (a, b) {
this.template = a.toString();
this.pattern = b || Template.Pattern
}, evaluate: function (a) {
if (a && Object.isFunction(a.toTemplateReplacements)) {
a = a.toTemplateReplacements()
}
return this.template.gsub(this.pattern, function (d) {
if (a == null) {
return (d[1] + "")
}
var f = d[1] || "";
if (f == "\\") {
return d[2]
}
var b = a, g = d[3], e = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;
d = e.exec(g);
if (d == null) {
return f
}
while (d != null) {
var c = d[1].startsWith("[") ? d[2].replace(/\\\\]/g, "]") : d[1];
b = b[c];
if (null == b || "" == d[3]) {
break
}
g = g.substring("[" == d[3] ? d[1].length : d[0].length);
d = e.exec(g)
}
return f + String.interpret(b)
})
}
});
Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;
var $break = {};
var Enumerable = (function () {
function c(y, x) {
try {
this._each(y, x)
} catch (z) {
if (z != $break) {
throw z
}
}
return this
}
function s(A, z, y) {
var x = -A, B = [], C = this.toArray();
if (A < 1) {
return C
}
while ((x += A) < C.length) {
B.push(C.slice(x, x + A))
}
return B.collect(z, y)
}
function b(z, y) {
z = z || Prototype.K;
var x = true;
this.each(function (B, A) {
x = x && !!z.call(y, B, A, this);
if (!x) {
throw $break
}
}, this);
return x
}
function i(z, y) {
z = z || Prototype.K;
var x = false;
this.each(function (B, A) {
if (x = !!z.call(y, B, A, this)) {
throw $break
}
}, this);
return x
}
function k(z, y) {
z = z || Prototype.K;
var x = [];
this.each(function (B, A) {
x.push(z.call(y, B, A, this))
}, this);
return x
}
function u(z, y) {
var x;
this.each(function (B, A) {
if (z.call(y, B, A, this)) {
x = B;
throw $break
}
}, this);
return x
}
function h(z, y) {
var x = [];
this.each(function (B, A) {
if (z.call(y, B, A, this)) {
x.push(B)
}
}, this);
return x
}
function g(A, z, y) {
z = z || Prototype.K;
var x = [];
if (Object.isString(A)) {
A = new RegExp(RegExp.escape(A))
}
this.each(function (C, B) {
if (A.match(C)) {
x.push(z.call(y, C, B, this))
}
}, this);
return x
}
function a(x) {
if (Object.isFunction(this.indexOf) && this.indexOf(x) != -1) {
return true
}
var y = false;
this.each(function (z) {
if (z == x) {
y = true;
throw $break
}
});
return y
}
function r(y, x) {
x = Object.isUndefined(x) ? null : x;
return this.eachSlice(y, function (z) {
while (z.length < y) {
z.push(x)
}
return z
})
}
function m(x, z, y) {
this.each(function (B, A) {
x = z.call(y, x, B, A, this)
}, this);
return x
}
function w(y) {
var x = $A(arguments).slice(1);
return this.map(function (z) {
return z[y].apply(z, x)
})
}
function q(z, y) {
z = z || Prototype.K;
var x;
this.each(function (B, A) {
B = z.call(y, B, A, this);
if (x == null || B >= x) {
x = B
}
}, this);
return x
}
function o(z, y) {
z = z || Prototype.K;
var x;
this.each(function (B, A) {
B = z.call(y, B, A, this);
if (x == null || B < x) {
x = B
}
}, this);
return x
}
function e(A, y) {
A = A || Prototype.K;
var z = [], x = [];
this.each(function (C, B) {
(A.call(y, C, B, this) ? z : x).push(C)
}, this);
return [z, x]
}
function f(y) {
var x = [];
this.each(function (z) {
x.push(z[y])
});
return x
}
function d(z, y) {
var x = [];
this.each(function (B, A) {
if (!z.call(y, B, A, this)) {
x.push(B)
}
}, this);
return x
}
function n(y, x) {
return this.map(function (A, z) {
return {value: A, criteria: y.call(x, A, z, this)}
}, this).sort(function (C, B) {
var A = C.criteria, z = B.criteria;
return A < z ? -1 : A > z ? 1 : 0
}).pluck("value")
}
function p() {
return this.map()
}
function t() {
var y = Prototype.K, x = $A(arguments);
if (Object.isFunction(x.last())) {
y = x.pop()
}
var z = [this].concat(x).map($A);
return this.map(function (B, A) {
return y(z.pluck(A))
})
}
function l() {
return this.toArray().length
}
function v() {
return "#<Enumerable:" + this.toArray().inspect() + ">"
}
return {
each: c,
eachSlice: s,
all: b,
every: b,
any: i,
some: i,
collect: k,
map: k,
detect: u,
findAll: h,
select: h,
filter: h,
grep: g,
include: a,
member: a,
inGroupsOf: r,
inject: m,
invoke: w,
max: q,
min: o,
partition: e,
pluck: f,
reject: d,
sortBy: n,
toArray: p,
entries: p,
zip: t,
size: l,
inspect: v,
find: u
}
})();
function $A(c) {
if (!c) {
return []
}
if ("toArray" in Object(c)) {
return c.toArray()
}
var b = c.length || 0, a = new Array(b);
while (b--) {
a[b] = c[b]
}
return a
}
function $w(a) {
if (!Object.isString(a)) {
return []
}
a = a.strip();
return a ? a.split(/\s+/) : []
}
if (typeof Array._from !== 'function') {
Array._from = Array.from;
}
Array.from = function(arg) {
if (arg == null) {
throw new TypeError('Array.from requires an array-like object - not null or undefined');
}
if (typeof arg[Symbol.iterator] === 'function') {
return Array._from(arg);
}
return $A(arg);
};
(function () {
var w = Array.prototype, p = w.slice, r = w.forEach;
function b(C, B) {
for (var A = 0, D = this.length >>> 0; A < D; A++) {
if (A in this) {
C.call(B, this[A], A, this)
}
}
}
if (!r) {
r = b
}
function o() {
this.length = 0;
return this
}
function d() {
return this[0]
}
function g() {
return this[this.length - 1]
}
function l() {
return this.select(function (A) {
return A != null
})
}
function z() {
return this.inject([], function (B, A) {
if (Object.isArray(A)) {
return B.concat(A.flatten())
}
B.push(A);
return B
})
}
function k() {
var A = p.call(arguments, 0);
return this.select(function (B) {
return !A.include(B)
})
}
function f(A) {
return (A === false ? this.toArray() : this)._reverse()
}
function n(A) {
return this.inject([], function (D, C, B) {
if (0 == B || (A ? D.last() != C : !D.include(C))) {
D.push(C)
}
return D
})
}
function s(A) {
return this.uniq().findAll(function (B) {
return A.indexOf(B) !== -1
})
}
function u() {
return p.call(this, 0)
}
function m() {
return this.length
}
function x() {
return "[" + this.map(Object.inspect).join(", ") + "]"
}
function a(D, B) {
if (this == null) {
throw new TypeError()
}
var E = Object(this), C = E.length >>> 0;
if (C === 0) {
return -1
}
B = Number(B);
if (isNaN(B)) {
B = 0
} else {
if (B !== 0 && isFinite(B)) {
B = (B > 0 ? 1 : -1) * Math.floor(Math.abs(B))
}
}
if (B > C) {
return -1
}
var A = B >= 0 ? B : Math.max(C - Math.abs(B), 0);
for (; A < C; A++) {
if (A in E && E[A] === D) {
return A
}
}
return -1
}
function q(D, B) {
if (this == null) {
throw new TypeError()
}
var E = Object(this), C = E.length >>> 0;
if (C === 0) {
return -1
}
if (!Object.isUndefined(B)) {
B = Number(B);
if (isNaN(B)) {
B = 0
} else {
if (B !== 0 && isFinite(B)) {
B = (B > 0 ? 1 : -1) * Math.floor(Math.abs(B))
}
}
} else {
B = C
}
var A = B >= 0 ? Math.min(B, C - 1) : C - Math.abs(B);
for (; A >= 0; A--) {
if (A in E && E[A] === D) {
return A
}
}
return -1
}
function c(H) {
var F = [], G = p.call(arguments, 0), I, B = 0;
G.unshift(this);
for (var E = 0, A = G.length; E < A; E++) {
I = G[E];
if (Object.isArray(I) && !("callee" in I)) {
for (var D = 0, C = I.length; D < C; D++) {
if (D in I) {
F[B] = I[D]
}
B++
}
} else {
F[B++] = I
}
}
F.length = B;
return F
}
function t(A) {
return function () {
if (arguments.length === 0) {
return A.call(this, Prototype.K)
} else {
if (arguments[0] === undefined) {
var B = p.call(arguments, 1);
B.unshift(Prototype.K);
return A.apply(this, B)
} else {
return A.apply(this, arguments)
}
}
}
}
function v(E) {
if (this == null) {
throw new TypeError()
}
E = E || Prototype.K;
var A = Object(this);
var D = [], C = arguments[1], G = 0;
for (var B = 0, F = A.length >>> 0; B < F; B++) {
if (B in A) {
D[G] = E.call(C, A[B], B, A)
}
G++
}
D.length = G;
return D
}
if (w.map) {
v = t(Array.prototype.map)
}
function h(E) {
if (this == null || !Object.isFunction(E)) {
throw new TypeError()
}
var A = Object(this);
var D = [], C = arguments[1], G;
for (var B = 0, F = A.length >>> 0; B < F; B++) {
if (B in A) {
G = A[B];
if (E.call(C, G, B, A)) {
D.push(G)
}
}
}
return D
}
if (w.filter) {
h = Array.prototype.filter
}
function i(D) {
if (this == null) {
throw new TypeError()
}
D = D || Prototype.K;
var C = arguments[1];
var A = Object(this);
for (var B = 0, E = A.length >>> 0; B < E; B++) {
if (B in A && D.call(C, A[B], B, A)) {
return true
}
}
return false
}
if (w.some) {
i = t(Array.prototype.some)
}
function y(D) {
if (this == null) {
throw new TypeError()
}
D = D || Prototype.K;
var C = arguments[1];
var A = Object(this);
for (var B = 0, E = A.length >>> 0; B < E; B++) {
if (B in A && !D.call(C, A[B], B, A)) {
return false
}
}
return true
}
if (w.every) {
y = t(Array.prototype.every)
}
Object.extend(w, Enumerable);
if (w.entries === Enumerable.entries) {
delete w.entries
}
if (!w._reverse) {
w._reverse = w.reverse
}
Object.extend(w, {
_each: r,
map: v,
collect: v,
select: h,
filter: h,
findAll: h,
some: i,
any: i,
every: y,
all: y,
clear: o,
first: d,
last: g,
compact: l,
flatten: z,
without: k,
reverse: f,
uniq: n,
intersect: s,
clone: u,
toArray: u,
size: m,
inspect: x
});
var e = (function () {
return [].concat(arguments)[0][0] !== 1
})(1, 2);
if (e) {
w.concat = c
}
if (!w.indexOf) {
w.indexOf = a
}
if (!w.lastIndexOf) {
w.lastIndexOf = q
}
})();
function $H(a) {
return new Hash(a)
}
var Hash = Class.create(Enumerable, (function () {
function e(q) {
this._object = Object.isHash(q) ? q.toObject() : Object.clone(q)
}
function f(t, s) {
var r = 0;
for (var q in this._object) {
var u = this._object[q], v = [q, u];
v.key = q;
v.value = u;
t.call(s, v, r);
r++
}
}
function k(q, r) {
return this._object[q] = r
}
function c(q) {
if (this._object[q] !== Object.prototype[q]) {
return this._object[q]
}
}
function n(q) {
var r = this._object[q];
delete this._object[q];
return r
}
function p() {
return Object.clone(this._object)
}
function o() {
return this.pluck("key")
}
function m() {
return this.pluck("value")
}
function g(r) {
var q = this.detect(function (s) {
return s.value === r
});
return q && q.key
}
function i(q) {
return this.clone().update(q)
}
function d(q) {
return new Hash(q).inject(this, function (r, s) {
r.set(s.key, s.value);
return r
})
}
function b(q, r) {
if (Object.isUndefined(r)) {
return q
}
r = String.interpret(r);
r = r.gsub(/(\r)?\n/, "\r\n");
r = encodeURIComponent(r);
r = r.gsub(/%20/, "+");
return q + "=" + r
}
function a() {
return this.inject([], function (u, x) {
var t = encodeURIComponent(x.key), r = x.value;
if (r && typeof r == "object") {
if (Object.isArray(r)) {
var w = [];
for (var s = 0, q = r.length, v; s < q; s++) {
v = r[s];
w.push(b(t, v))
}
return u.concat(w)
}
} else {
u.push(b(t, r))
}
return u
}).join("&")
}
function l() {
return "#<Hash:{" + this.map(function (q) {
return q.map(Object.inspect).join(": ")
}).join(", ") + "}>"
}
function h() {
return new Hash(this)
}
return {
initialize: e,
_each: f,
set: k,
get: c,
unset: n,
toObject: p,
toTemplateReplacements: p,
keys: o,
values: m,
index: g,
merge: i,
update: d,
toQueryString: a,
inspect: l,
toJSON: p,
clone: h
}
})());
Hash.from = $H;
Object.extend(Number.prototype, (function () {
function d() {
return this.toPaddedString(2, 16)
}
function b() {
return this + 1
}
function h(k, i) {
$R(0, this, true).each(k, i);
return this
}
function g(l, k) {
var i = this.toString(k || 10);
return "0".times(l - i.length) + i
}
function a() {
return Math.abs(this)
}
function c() {
return Math.round(this)
}
function e() {
return Math.ceil(this)
}
function f() {
return Math.floor(this)
}
return {toColorPart: d, succ: b, times: h, toPaddedString: g, abs: a, round: c, ceil: e, floor: f}
})());
function $R(c, a, b) {
return new ObjectRange(c, a, b)
}
var ObjectRange = Class.create(Enumerable, (function () {
function b(f, d, e) {
this.start = f;
this.end = d;
this.exclusive = e
}
function c(f, e) {
var g = this.start, d;
for (d = 0; this.include(g); d++) {
f.call(e, g, d);
g = g.succ()
}
}
function a(d) {
if (d < this.start) {
return false
}
if (this.exclusive) {
return d < this.end
}
return d <= this.end
}
return {initialize: b, _each: c, include: a}
})());
var Abstract = {};
var Try = {
these: function () {
var c;
for (var b = 0, d = arguments.length; b < d; b++) {
var a = arguments[b];
try {
c = a();
break
} catch (f) {
}
}
return c
}
};
var Ajax = {
getTransport: function () {
return Try.these(function () {
return new XMLHttpRequest()
}, function () {
return new ActiveXObject("Msxml2.XMLHTTP")
}, function () {
return new ActiveXObject("Microsoft.XMLHTTP")
}) || false
}, activeRequestCount: 0
};
Ajax.Responders = {
responders: [], _each: function (b, a) {
this.responders._each(b, a)
}, register: function (a) {
if (!this.include(a)) {
this.responders.push(a)
}
}, unregister: function (a) {
this.responders = this.responders.without(a)
}, dispatch: function (d, b, c, a) {
this.each(function (f) {
if (Object.isFunction(f[d])) {
try {
f[d].apply(f, [b, c, a])
} catch (g) {
}
}
})
}
};
Object.extend(Ajax.Responders, Enumerable);
Ajax.Responders.register({
onCreate: function () {
Ajax.activeRequestCount++
}, onComplete: function () {
Ajax.activeRequestCount--
}
});
Ajax.Base = Class.create({
initialize: function (a) {
this.options = {
method: "post",
asynchronous: true,
contentType: "application/x-www-form-urlencoded",
encoding: "UTF-8",
parameters: "",
evalJSON: true,
evalJS: true
};
Object.extend(this.options, a || {});
this.options.method = this.options.method.toLowerCase();
if (Object.isHash(this.options.parameters)) {
this.options.parameters = this.options.parameters.toObject()
}
}
});
Ajax.Request = Class.create(Ajax.Base, {
_complete: false, initialize: function ($super, b, a) {
$super(a);
this.transport = Ajax.getTransport();
this.request(b)
}, request: function (b) {
this.url = b;
this.method = this.options.method;
var d = Object.isString(this.options.parameters) ? this.options.parameters : Object.toQueryString(this.options.parameters);
if (!["get", "post"].include(this.method)) {
d += (d ? "&" : "") + "_method=" + this.method;
this.method = "post"
}
if (d && this.method === "get") {
this.url += (this.url.include("?") ? "&" : "?") + d
}
this.parameters = d.toQueryParams();
try {
var a = new Ajax.Response(this);
if (this.options.onCreate) {
this.options.onCreate(a)
}
Ajax.Responders.dispatch("onCreate", this, a);
this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous);
if (this.options.asynchronous) {
this.respondToReadyState.bind(this).defer(1)
}
this.transport.onreadystatechange = this.onStateChange.bind(this);
this.setRequestHeaders();
this.body = this.method == "post" ? (this.options.postBody || d) : null;
this.transport.send(this.body);
if (!this.options.asynchronous && this.transport.overrideMimeType) {
this.onStateChange()
}
} catch (c) {
this.dispatchException(c)
}
}, onStateChange: function () {
var a = this.transport.readyState;
if (a > 1 && !((a == 4) && this._complete)) {
this.respondToReadyState(this.transport.readyState)
}
}, setRequestHeaders: function () {
var e = {
"X-Requested-With": "XMLHttpRequest",
"X-Prototype-Version": Prototype.Version,
Accept: "text/javascript, text/html, application/xml, text/xml, */*"
};
if (this.method == "post") {
e["Content-type"] = this.options.contentType + (this.options.encoding ? "; charset=" + this.options.encoding : "");
if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0, 2005])[1] < 2005) {
e.Connection = "close"
}
}
if (typeof this.options.requestHeaders == "object") {
var c = this.options.requestHeaders;
if (Object.isFunction(c.push)) {
for (var b = 0, d = c.length; b < d; b += 2) {
e[c[b]] = c[b + 1]
}
} else {
$H(c).each(function (f) {
e[f.key] = f.value
})
}
}
for (var a in e) {
if (e[a] != null) {
this.transport.setRequestHeader(a, e[a])
}
}
}, success: function () {
var a = this.getStatus();
return !a || (a >= 200 && a < 300) || a == 304
}, getStatus: function () {
try {
if (this.transport.status === 1223) {
return 204
}
return this.transport.status || 0
} catch (a) {
return 0
}
}, respondToReadyState: function (a) {
var c = Ajax.Request.Events[a], b = new Ajax.Response(this);
if (c == "Complete") {
try {
this._complete = true;
(this.options["on" + b.status] || this.options["on" + (this.success() ? "Success" : "Failure")] || Prototype.emptyFunction)(b, b.headerJSON)
} catch (d) {
this.dispatchException(d)
}
var f = b.getHeader("Content-type");
if (this.options.evalJS == "force" || (this.options.evalJS && this.isSameOrigin() && f && f.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) {
this.evalResponse()
}
}
try {
(this.options["on" + c] || Prototype.emptyFunction)(b, b.headerJSON);
Ajax.Responders.dispatch("on" + c, this, b, b.headerJSON)
} catch (d) {
this.dispatchException(d)
}
if (c == "Complete") {
this.transport.onreadystatechange = Prototype.emptyFunction
}
}, isSameOrigin: function () {
var a = this.url.match(/^\s*https?:\/\/[^\/]*/);
return !a || (a[0] == "#{protocol}//#{domain}#{port}".interpolate({
protocol: location.protocol,
domain: document.domain,
port: location.port ? ":" + location.port : ""
}))
}, getHeader: function (a) {
try {
return this.transport.getResponseHeader(a) || null
} catch (b) {
return null
}
}, evalResponse: function () {
try {
return eval((this.transport.responseText || "").unfilterJSON())
} catch (e) {
this.dispatchException(e)
}
}, dispatchException: function (a) {
(this.options.onException || Prototype.emptyFunction)(this, a);
Ajax.Responders.dispatch("onException", this, a)
}
});
Ajax.Request.Events = ["Uninitialized", "Loading", "Loaded", "Interactive", "Complete"];
Ajax.Response = Class.create({
initialize: function (c) {
this.request = c;
var d = this.transport = c.transport, a = this.readyState = d.readyState;
if ((a > 2 && !Prototype.Browser.IE) || a == 4) {
this.status = this.getStatus();
this.statusText = this.getStatusText();
this.responseText = String.interpret(d.responseText);
this.headerJSON = this._getHeaderJSON()
}
if (a == 4) {
var b = d.responseXML;
this.responseXML = Object.isUndefined(b) ? null : b;
this.responseJSON = this._getResponseJSON()
}
}, status: 0, statusText: "", getStatus: Ajax.Request.prototype.getStatus, getStatusText: function () {
try {
return this.transport.statusText || ""
} catch (a) {
return ""
}
}, getHeader: Ajax.Request.prototype.getHeader, getAllHeaders: function () {
try {
return this.getAllResponseHeaders()
} catch (a) {
return null
}
}, getResponseHeader: function (a) {
return this.transport.getResponseHeader(a)
}, getAllResponseHeaders: function () {
return this.transport.getAllResponseHeaders()
}, _getHeaderJSON: function () {
var a = this.getHeader("X-JSON");
if (!a) {
return null
}
try {
a = decodeURIComponent(escape(a))
} catch (b) {
}
try {
return a.evalJSON(this.request.options.sanitizeJSON || !this.request.isSameOrigin())
} catch (b) {
this.request.dispatchException(b)
}
}, _getResponseJSON: function () {
var a = this.request.options;
if (!a.evalJSON || (a.evalJSON != "force" && !(this.getHeader("Content-type") || "").include("application/json")) || this.responseText.blank()) {
return null
}
try {
return this.responseText.evalJSON(a.sanitizeJSON || !this.request.isSameOrigin())
} catch (b) {
this.request.dispatchException(b)
}
}
});
Ajax.Updater = Class.create(Ajax.Request, {
initialize: function ($super, a, c, b) {
this.container = {success: (a.success || a), failure: (a.failure || (a.success ? null : a))};
b = Object.clone(b);
var d = b.onComplete;
b.onComplete = (function (e, f) {
this.updateContent(e.responseText);
if (Object.isFunction(d)) {
d(e, f)
}
}).bind(this);
$super(c, b)
}, updateContent: function (d) {
var c = this.container[this.success() ? "success" : "failure"], a = this.options;
if (!a.evalScripts) {
d = d.stripScripts()
}
if (c = $(c)) {
if (a.insertion) {
if (Object.isString(a.insertion)) {
var b = {};
b[a.insertion] = d;
c.insert(b)
} else {
a.insertion(c, d)
}
} else {
c.update(d)
}
}
}
});
Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
initialize: function ($super, a, c, b) {
$super(b);
this.onComplete = this.options.onComplete;
this.frequency = (this.options.frequency || 2);
this.decay = (this.options.decay || 1);
this.updater = {};
this.container = a;
this.url = c;
this.start()
}, start: function () {
this.options.onComplete = this.updateComplete.bind(this);
this.onTimerEvent()
}, stop: function () {
this.updater.options.onComplete = undefined;
clearTimeout(this.timer);
(this.onComplete || Prototype.emptyFunction).apply(this, arguments)
}, updateComplete: function (a) {
if (this.options.decay) {
this.decay = (a.responseText == this.lastText ? this.decay * this.options.decay : 1);
this.lastText = a.responseText
}
this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency)
}, onTimerEvent: function () {
this.updater = new Ajax.Updater(this.container, this.url, this.options)
}
});
(function (a9) {
var aF;
var a2 = Array.prototype.slice;
var aw = document.createElement("div");
function a0(bq) {
if (arguments.length > 1) {
for (var F = 0, bs = [], br = arguments.length; F < br; F++) {
bs.push(a0(arguments[F]))
}
return bs
}
if (Object.isString(bq)) {
bq = document.getElementById(bq)
}
return aG.extend(bq)
}
a9.$ = a0;
if (!a9.Node) {
a9.Node = {}
}
if (!a9.Node.ELEMENT_NODE) {
Object.extend(a9.Node, {
ELEMENT_NODE: 1,
ATTRIBUTE_NODE: 2,
TEXT_NODE: 3,
CDATA_SECTION_NODE: 4,
ENTITY_REFERENCE_NODE: 5,
ENTITY_NODE: 6,
PROCESSING_INSTRUCTION_NODE: 7,
COMMENT_NODE: 8,
DOCUMENT_NODE: 9,
DOCUMENT_TYPE_NODE: 10,
DOCUMENT_FRAGMENT_NODE: 11,
NOTATION_NODE: 12
})
}
var s = {};
function aR(F, i) {
if (F === "select") {
return false
}
if ("type" in i) {
return false
}
return true
}
var d = (function () {
try {
var i = document.createElement('<input name="x">');
return i.tagName.toLowerCase() === "input" && i.name === "x"
} catch (F) {
return false
}
})();
var aJ = a9.Element;
function aG(F, i) {
i = i || {};
F = F.toLowerCase();
if (d && i.name) {
F = "<" + F + ' name="' + i.name + '">';
delete i.name;
return aG.writeAttribute(document.createElement(F), i)
}
if (!s[F]) {
s[F] = aG.extend(document.createElement(F))
}
var bq = aR(F, i) ? s[F].cloneNode(false) : document.createElement(F);
return aG.writeAttribute(bq, i)
}
a9.Element = aG;
Object.extend(a9.Element, aJ || {});
if (aJ) {
a9.Element.prototype = aJ.prototype
}
aG.Methods = {ByTag: {}, Simulated: {}};
var a4 = {};
var I = {id: "id", className: "class"};
function bb(F) {
F = a0(F);
var i = "<" + F.tagName.toLowerCase();
var bq, bs;
for (var br in I) {
bq = I[br];
bs = (F[br] || "").toString();
if (bs) {
i += " " + bq + "=" + bs.inspect(true)
}
}
return i + ">"
}
a4.inspect = bb;
function w(i) {
return a0(i).getStyle("display") !== "none"
}
function ay(F, i) {
F = a0(F);
if (typeof i !== "boolean") {
i = !aG.visible(F)
}
aG[i ? "show" : "hide"](F);
return F
}
function aI(i) {
i = a0(i);
i.style.display = "none";
return i
}
function k(i) {
i = a0(i);
i.style.display = "";
return i
}
Object.extend(a4, {visible: w, toggle: ay, hide: aI, show: k});
function ae(i) {
i = a0(i);
if (i && i.parentNode) {
i.parentNode.removeChild(i);
}
return i;
}
var aU = (function () {
var i = document.createElement("select"), F = true;
i.innerHTML = '<option value="test">test</option>';
if (i.options && i.options[0]) {
F = i.options[0].nodeName.toUpperCase() !== "OPTION"
}
i = null;
return F
})();
var J = (function () {
try {
var i = document.createElement("table");
if (i && i.tBodies) {
i.innerHTML = "<tbody><tr><td>test</td></tr></tbody>";
var bq = typeof i.tBodies[0] == "undefined";
i = null;
return bq
}
} catch (F) {
return true
}
})();
var a3 = (function () {
try {
var i = document.createElement("div");
i.innerHTML = "<link />";
var bq = (i.childNodes.length === 0);
i = null;
return bq
} catch (F) {
return true
}
})();
var y = aU || J || a3;
var ar = (function () {
var i = document.createElement("script"), bq = false;
try {
i.appendChild(document.createTextNode(""));
bq = !i.firstChild || i.firstChild && i.firstChild.nodeType !== 3
} catch (F) {
bq = true
}
i = null;
return bq
})();
function P(bs, bu) {
bs = a0(bs);
var bv = bs.getElementsByTagName("*"), br = bv.length;
while (br--) {
aa(bv[br])
}
if (bu && bu.toElement) {
bu = bu.toElement()
}
if (Object.isElement(bu)) {
return bs.update().insert(bu)
}
bu = Object.toHTML(bu);
var bq = bs.tagName.toUpperCase();
if (bq === "SCRIPT" && ar) {
bs.text = bu;
return bs
}
if (y) {
if (bq in M.tags) {
while (bs.firstChild) {
bs.removeChild(bs.firstChild)
}
var F = u(bq, bu.stripScripts());
for (var br = 0, bt; bt = F[br]; br++) {
bs.appendChild(bt)
}
} else {
if (a3 && Object.isString(bu) && bu.indexOf("<link") > -1) {
while (bs.firstChild) {
bs.removeChild(bs.firstChild)
}
var F = u(bq, bu.stripScripts(), true);
for (var br = 0, bt; bt = F[br]; br++) {
bs.appendChild(bt)
}
} else {
bs.innerHTML = bu.stripScripts()
}
}
} else {
bs.innerHTML = bu.stripScripts()
}
bu.evalScripts.bind(bu).defer();
return bs
}
function ai(F, bq) {
F = a0(F);
if (bq && bq.toElement) {
bq = bq.toElement()
} else {
if (!Object.isElement(bq)) {
bq = Object.toHTML(bq);
var i = F.ownerDocument.createRange();
i.selectNode(F);
bq.evalScripts.bind(bq).defer();
bq = i.createContextualFragment(bq.stripScripts())
}
}
F.parentNode.replaceChild(bq, F);
return F
}
var M = {
before: function (i, F) {
i.parentNode.insertBefore(F, i)
},
top: function (i, F) {
i.insertBefore(F, i.firstChild)
},
bottom: function (i, F) {
i.appendChild(F)
},
after: function (i, F) {
i.parentNode.insertBefore(F, i.nextSibling)
},
tags: {
TABLE: ["<table>", "</table>", 1],
TBODY: ["<table><tbody>", "</tbody></table>", 2],
TR: ["<table><tbody><tr>", "</tr></tbody></table>", 3],
TD: ["<table><tbody><tr><td>", "</td></tr></tbody></table>", 4],
SELECT: ["<select>", "</select>", 1]
}
};
var aK = M.tags;
Object.extend(aK, {THEAD: aK.TBODY, TFOOT: aK.TBODY, TH: aK.TD});
function ap(bq, bt) {
bq = a0(bq);
if (bt && bt.toElement) {
bt = bt.toElement()
}
if (Object.isElement(bt)) {
bq.parentNode.replaceChild(bt, bq);
return bq
}
bt = Object.toHTML(bt);
var bs = bq.parentNode, F = bs.tagName.toUpperCase();
if (F in M.tags) {
var bu = aG.next(bq);
var i = u(F, bt.stripScripts());
bs.removeChild(bq);
var br;
if (bu) {
br = function (bv) {
bs.insertBefore(bv, bu)
}
} else {
br = function (bv) {
bs.appendChild(bv)
}
}
i.each(br)
} else {
bq.outerHTML = bt.stripScripts()
}
bt.evalScripts.bind(bt).defer();
return bq
}
if ("outerHTML" in document.documentElement) {
ai = ap
}
function a8(i) {
if (Object.isUndefined(i) || i === null) {
return false
}
if (Object.isString(i) || Object.isNumber(i)) {
return true
}
if (Object.isElement(i)) {
return true
}
if (i.toElement || i.toHTML) {
return true
}
return false
}
function bo(bs, bu, F) {
F = F.toLowerCase();
var bw = M[F];
if (bu && bu.toElement) {
bu = bu.toElement()
}
if (Object.isElement(bu)) {
bw(bs, bu);
return bs
}
bu = Object.toHTML(bu);
var br = ((F === "before" || F === "after") ? bs.parentNode : bs).tagName.toUpperCase();
var bv = u(br, bu.stripScripts());
if (F === "top" || F === "after") {
bv.reverse()
}
for (var bq = 0, bt; bt = bv[bq]; bq++) {
bw(bs, bt)
}
bu.evalScripts.bind(bu).defer()
}
function R(F, bq) {
F = a0(F);
if (a8(bq)) {
bq = {bottom: bq}
}
for (var i in bq) {
bo(F, bq[i], i)
}
return F
}
function v(F, bq, i) {
F = a0(F);
if (Object.isElement(bq)) {
a0(bq).writeAttribute(i || {})
} else {
if (Object.isString(bq)) {
bq = new aG(bq, i)
} else {
bq = new aG("div", bq)
}
}
if (F.parentNode) {
F.parentNode.replaceChild(bq, F)
}
bq.appendChild(F);
return bq
}
function x(F) {
F = a0(F);
var bq = F.firstChild;
while (bq) {
var i = bq.nextSibling;
if (bq.nodeType === Node.TEXT_NODE && !/\S/.test(bq.nodeValue)) {
F.removeChild(bq)
}
bq = i
}
return F
}
function a5(i) {
return a0(i).innerHTML.blank()
}
function u(bt, bs, bu) {
var br = M.tags[bt], bv = aw;
var F = !!br;
if (!F && bu) {
F = true;
br = ["", "", 0]
}
if (F) {
bv.innerHTML = "&#160;" + br[0] + bs + br[1];
bv.removeChild(bv.firstChild);
for (var bq = br[2]; bq--;) {
bv = bv.firstChild
}
} else {
bv.innerHTML = bs
}
return $A(bv.childNodes)
}
function G(br, F) {
if (!(br = a0(br))) {
return
}
var bt = br.cloneNode(F);
if (!aZ) {
bt._prototypeUID = aF;
if (F) {
var bs = aG.select(bt, "*"), bq = bs.length;
while (bq--) {
bs[bq]._prototypeUID = aF
}
}
}
return aG.extend(bt)
}
function aa(F) {
var i = N(F);
if (i) {
aG.stopObserving(F);
if (!aZ) {
F._prototypeUID = aF
}
delete aG.Storage[i]
}
}
function bm(bq) {
var F = bq.length;
while (F--) {
aa(bq[F])
}
}
function au(bs) {
var br = bs.length, bq, F;
while (br--) {
bq = bs[br];
F = N(bq);
delete aG.Storage[F];
delete Event.cache[F]
}
}
if (aZ) {
bm = au
}
function n(bq) {
if (!(bq = a0(bq))) {
return
}
aa(bq);
var br = bq.getElementsByTagName("*"), F = br.length;
while (F--) {
aa(br[F])
}
return null
}
Object.extend(a4, {
remove: ae,
update: P,
replace: ai,
insert: R,
wrap: v,
cleanWhitespace: x,
empty: a5,
clone: G,
purge: n
});
function an(i, bq, br) {
i = a0(i);
br = br || -1;
var F = [];
while (i = i[bq]) {
if (i.nodeType === Node.ELEMENT_NODE) {
F.push(aG.extend(i))
}
if (F.length === br) {
break
}
}
return F
}
function aM(i) {
return an(i, "parentNode")
}
function bn(i) {
return aG.select(i, "*")
}
function Y(i) {
i = a0(i).firstChild;
while (i && i.nodeType !== Node.ELEMENT_NODE) {
i = i.nextSibling
}
return a0(i)
}
function bj(F) {
var i = [], bq = a0(F).firstChild;
while (bq) {
if (bq.nodeType === Node.ELEMENT_NODE) {
i.push(aG.extend(bq))
}
bq = bq.nextSibling
}
return i
}
function q(i) {
return an(i, "previousSibling")
}
function bi(i) {
return an(i, "nextSibling")
}
function aW(i) {
i = a0(i);
var bq = q(i), F = bi(i);
return bq.reverse().concat(F)
}
function aS(F, i) {
F = a0(F);
if (Object.isString(i)) {
return Prototype.Selector.match(F, i)
}
return i.match(F)
}
function aX(F, bq, br, i) {
F = a0(F), br = br || 0, i = i || 0;
if (Object.isNumber(br)) {
i = br, br = null
}
while (F = F[bq]) {
if (F.nodeType !== 1) {
continue
}
if (br && !Prototype.Selector.match(F, br)) {
continue
}
if (--i >= 0) {
continue
}
return aG.extend(F)
}
}
function ab(F, bq, i) {
F = a0(F);
if (arguments.length === 1) {
return a0(F.parentNode)
}
return aX(F, "parentNode", bq, i)
}
function z(F, br, i) {
if (arguments.length === 1) {
return Y(F)
}
F = a0(F), br = br || 0, i = i || 0;
if (Object.isNumber(br)) {
i = br, br = "*"
}
var bq = Prototype.Selector.select(br, F)[i];
return aG.extend(bq)
}
function h(F, bq, i) {
return aX(F, "previousSibling", bq, i)
}
function aC(F, bq, i) {
return aX(F, "nextSibling", bq, i)
}
function bc(i) {
i = a0(i);
var F = a2.call(arguments, 1).join(", ");
return Prototype.Selector.select(F, i)
}
function aE(br) {
br = a0(br);
var bt = a2.call(arguments, 1).join(", ");
var bu = aG.siblings(br), bq = [];
for (var F = 0, bs; bs = bu[F]; F++) {
if (Prototype.Selector.match(bs, bt)) {
bq.push(bs)
}
}
return bq
}
function E(F, i) {
F = a0(F), i = a0(i);
if (!F || !i) {
return false
}
while (F = F.parentNode) {
if (F === i) {
return true
}
}
return false
}
function C(F, i) {
F = a0(F), i = a0(i);
if (!F || !i) {
return false
}
if (!i.contains) {
return E(F, i)
}
return i.contains(F) && i !== F
}
function K(F, i) {
F = a0(F), i = a0(i);
if (!F || !i) {
return false
}
return (F.compareDocumentPosition(i) & 8) === 8
}
var aN;
if (aw.compareDocumentPosition) {
aN = K
} else {
if (aw.contains) {
aN = C
} else {
aN = E
}
}
Object.extend(a4, {
recursivelyCollect: an,
ancestors: aM,
descendants: bn,
firstDescendant: Y,
immediateDescendants: bj,
previousSiblings: q,
nextSiblings: bi,
siblings: aW,
match: aS,
up: ab,
down: z,
previous: h,
next: aC,
select: bc,
adjacent: aE,
descendantOf: aN,
getElementsBySelector: bc,
childElements: bj
});
var U = 1;
function aV(i) {
i = a0(i);
var F = aG.readAttribute(i, "id");
if (F) {
return F
}
do {
F = "anonymous_element_" + U++
} while (a0(F));
aG.writeAttribute(i, "id", F);
return F
}
function ba(F, i) {
return a0(F).getAttribute(i)
}
function L(F, i) {
F = a0(F);
var bq = aH.read;
if (bq.values[i]) {
return bq.values[i](F, i)
}
if (bq.names[i]) {
i = bq.names[i]
}
if (i.include(":")) {
if (!F.attributes || !F.attributes[i]) {
return null
}
return F.attributes[i].value
}
return F.getAttribute(i)
}
function e(F, i) {
if (i === "title") {
return F.title
}
return F.getAttribute(i)
}
var V = (function () {
aw.setAttribute("onclick", []);
var i = aw.getAttribute("onclick");
var F = Object.isArray(i);
aw.removeAttribute("onclick");
return F
})();
if (V) {
ba = L
} else {
if (Prototype.Browser.Opera) {
ba = e
}
}
function a1(br, bq, bt) {
br = a0(br);
var F = {}, bs = aH.write;
if (typeof bq === "object") {
F = bq
} else {
F[bq] = Object.isUndefined(bt) ? true : bt
}
for (var i in F) {
bq = bs.names[i] || i;
bt = F[i];
if (bs.values[i]) {
bt = bs.values[i](br, bt);
if (Object.isUndefined(bt)) {
continue
}
}
if (bt === false || bt === null) {
br.removeAttribute(bq)
} else {
if (bt === true) {
br.setAttribute(bq, bq)
} else {
br.setAttribute(bq, bt)
}
}
}
return br
}
var a = (function () {
if (!d) {
return false
}
var F = document.createElement('<input type="checkbox">');
F.checked = true;
var i = F.getAttributeNode("checked");
return !i || !i.specified
})();
function Z(i, bq) {
bq = aH.has[bq] || bq;
var F = a0(i).getAttributeNode(bq);
return !!(F && F.specified)
}
function bh(i, F) {
if (F === "checked") {
return i.checked
}
return Z(i, F)
}
a9.Element.Methods.Simulated.hasAttribute = a ? bh : Z;
function l(i) {
return new aG.ClassNames(i)
}
var W = {};
function f(F) {
if (W[F]) {
return W[F]
}
var i = new RegExp("(^|\\s+)" + F + "(\\s+|$)");
W[F] = i;
return i
}
function am(i, F) {
if (!(i = a0(i))) {
return
}
var bq = i.className;
if (bq.length === 0) {
return false
}
if (bq === F) {
return true
}
return f(F).test(bq)
}
function p(i, F) {
if (!(i = a0(i))) {
return
}
if (!am(i, F)) {
i.className += (i.className ? " " : "") + F
}
return i
}
function av(i, F) {
if (!(i = a0(i))) {
return
}
i.className = i.className.replace(f(F), " ").strip();
return i
}
function af(F, bq, i) {
if (!(F = a0(F))) {
return
}
if (Object.isUndefined(i)) {
i = !am(F, bq)
}
var br = aG[i ? "addClassName" : "removeClassName"];
return br(F, bq)
}
var aH = {};
var aQ = "className", at = "for";
aw.setAttribute(aQ, "x");
if (aw.className !== "x") {
aw.setAttribute("class", "x");
if (aw.className === "x") {
aQ = "class"
}
}
var aL = document.createElement("label");
aL.setAttribute(at, "x");
if (aL.htmlFor !== "x") {
aL.setAttribute("htmlFor", "x");
if (aL.htmlFor === "x") {
at = "htmlFor"
}
}
aL = null;
function ad(i, F) {
return i.getAttribute(F)
}
function g(i, F) {
return i.getAttribute(F, 2)
}
function B(i, bq) {
var F = i.getAttributeNode(bq);
return F ? F.value : ""
}
function bk(i, F) {
return a0(i).hasAttribute(F) ? F : null
}
aw.onclick = Prototype.emptyFunction;
var Q = aw.getAttribute("onclick");
var ax;
if (String(Q).indexOf("{") > -1) {
ax = function (i, F) {
var bq = i.getAttribute(F);
if (!bq) {
return null
}
bq = bq.toString();
bq = bq.split("{")[1];
bq = bq.split("}")[0];
return bq.strip()
}
} else {
if (Q === "") {
ax = function (i, F) {
var bq = i.getAttribute(F);
if (!bq) {
return null
}
return bq.strip()
}
}
}
aH.read = {
names: {"class": aQ, className: aQ, "for": at, htmlFor: at}, values: {
style: function (i) {
return i.style.cssText.toLowerCase()
}, title: function (i) {
return i.title
}
}
};
aH.write = {
names: {className: "class", htmlFor: "for", cellpadding: "cellPadding", cellspacing: "cellSpacing"},
values: {
checked: function (i, F) {
F = !!F;
i.checked = F;
return F ? "checked" : null
}, style: function (i, F) {
i.style.cssText = F ? F : ""
}
}
};
aH.has = {names: {}};
Object.extend(aH.write.names, aH.read.names);
var a7 = $w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder");
for (var ag = 0, ah; ah = a7[ag]; ag++) {
aH.write.names[ah.toLowerCase()] = ah;
aH.has.names[ah.toLowerCase()] = ah
}
Object.extend(aH.read.values, {
href: g,
src: g,
type: ad,
action: B,
disabled: bk,
checked: bk,
readonly: bk,
multiple: bk,
onload: ax,
onunload: ax,
onclick: ax,
ondblclick: ax,
onmousedown: ax,
onmouseup: ax,
onmouseover: ax,
onmousemove: ax,
onmouseout: ax,
onfocus: ax,
onblur: ax,
onkeypress: ax,
onkeydown: ax,
onkeyup: ax,
onsubmit: ax,
onreset: ax,
onselect: ax,
onchange: ax
});
Object.extend(a4, {
identify: aV,
readAttribute: ba,
writeAttribute: a1,
classNames: l,
hasClassName: am,
addClassName: p,
removeClassName: av,
toggleClassName: af
});
function X(i) {
if (i === "float" || i === "styleFloat") {
return "cssFloat"
}
return i.camelize()
}
function bp(i) {
if (i === "float" || i === "cssFloat") {
return "styleFloat"
}
return i.camelize()
}
function D(bq, br) {
bq = a0(bq);
var bu = bq.style, F;
if (Object.isString(br)) {
bu.cssText += ";" + br;
if (br.include("opacity")) {
var i = br.match(/opacity:\s*(\d?\.?\d*)/)[1];
aG.setOpacity(bq, i)
}
return bq
}
for (var bt in br) {
if (bt === "opacity") {
aG.setOpacity(bq, br[bt])
} else {
var bs = br[bt];
if (bt === "float" || bt === "cssFloat") {
bt = Object.isUndefined(bu.styleFloat) ? "cssFloat" : "styleFloat"
}
bu[bt] = bs
}
}
return bq
}
function aP(F, bq) {
F = a0(F);
bq = X(bq);
var br = F.style[bq];
if (!br || br === "auto") {
var i = document.defaultView.getComputedStyle(F, null);
br = i ? i[bq] : null
}
if (bq === "opacity") {
return br ? parseFloat(br) : 1
}
return br === "auto" ? null : br
}
function t(i, F) {
switch (F) {
case"height":
case"width":
if (!aG.visible(i)) {
return null
}
var bq = parseInt(aP(i, F), 10);
if (bq !== i["offset" + F.capitalize()]) {
return bq + "px"
}
return aG.measure(i, F);
default:
return aP(i, F)
}
}
function ak(i, F) {
i = a0(i);
F = bp(F);
var bq = i.style[F];
if (!bq && i.currentStyle) {
bq = i.currentStyle[F]
}
if (F === "opacity") {
if (!O) {
return bf(i)
} else {
return bq ? parseFloat(bq) : 1
}
}
if (bq === "auto") {
if ((F === "width" || F === "height") && aG.visible(i)) {
return aG.measure(i, F) + "px"
}
return null
}
return bq
}
function aB(i) {
return (i || "").replace(/alpha\([^\)]*\)/gi, "")
}
function ac(i) {
if (!i.currentStyle || !i.currentStyle.hasLayout) {
i.style.zoom = 1
}
return i
}
var O = (function () {
aw.style.cssText = "opacity:.55";
return /^0.55/.test(aw.style.opacity)
})();
function A(i, F) {
i = a0(i);
if (F == 1 || F === "") {
F = ""
} else {
if (F < 0.00001) {
F = 0
}
}
i.style.opacity = F;
return i
}
function bg(i, br) {
if (O) {
return A(i, br)
}
i = ac(a0(i));
var bq = aG.getStyle(i, "filter"), F = i.style;
if (br == 1 || br === "") {
bq = aB(bq);
if (bq) {
F.filter = bq
} else {
F.removeAttribute("filter")
}
return i
}
if (br < 0.00001) {
br = 0
}
F.filter = aB(bq) + " alpha(opacity=" + (br * 100) + ")";
return i
}
function be(i) {
return aG.getStyle(i, "opacity")
}
function bf(F) {
if (O) {
return be(F)
}
var bq = aG.getStyle(F, "filter");
if (bq.length === 0) {
return 1
}
var i = (bq || "").match(/alpha\(opacity=(.*)\)/i);
if (i && i[1]) {
return parseFloat(i[1]) / 100
}
return 1
}
Object.extend(a4, {setStyle: D, getStyle: aP, setOpacity: A, getOpacity: be});
if ("styleFloat" in aw.style) {
a4.getStyle = ak;
a4.setOpacity = bg;
a4.getOpacity = bf
}
var m = 0;
a9.Element.Storage = {UID: 1};
function N(i) {
if (i === window) {
return 0
}
if (typeof i._prototypeUID === "undefined") {
i._prototypeUID = aG.Storage.UID++
}
return i._prototypeUID
}
function c(i) {
if (i === window) {
return 0
}
if (i == document) {
return 1
}
return i.uniqueID
}
var aZ = ("uniqueID" in aw);
if (aZ) {
N = c
}
function b(F) {
if (!(F = a0(F))) {
return
}
var i = N(F);
if (!aG.Storage[i]) {
aG.Storage[i] = $H()
}
return aG.Storage[i]
}
function a6(F, i, bq) {
if (!(F = a0(F))) {
return
}
var br = b(F);
if (arguments.length === 2) {
br.update(i)
} else {
br.set(i, bq)
}
return F
}
function aO(bq, F, i) {
if (!(bq = a0(bq))) {
return
}
var bs = b(bq), br = bs.get(F);
if (Object.isUndefined(br)) {
bs.set(F, i);
br = i
}
return br
}
Object.extend(a4, {getStorage: b, store: a6, retrieve: aO});
var ao = {}, aY = aG.Methods.ByTag, aD = Prototype.BrowserFeatures;
if (!aD.ElementExtensions && ("__proto__" in aw)) {
a9.HTMLElement = {};
a9.HTMLElement.prototype = aw.__proto__;
aD.ElementExtensions = true
}
function bd(i) {
if (typeof window.Element === "undefined") {
return false
}
if (!d) {
return false
}
var bq = window.Element.prototype;
if (bq) {
var bs = "_" + (Math.random() + "").slice(2), F = document.createElement(i);
bq[bs] = "x";
var br = (F[bs] !== "x");
delete bq[bs];
F = null;
return br
}
return false
}
var aq = bd("object");
function al(F, i) {
for (var br in i) {
var bq = i[br];
if (Object.isFunction(bq) && !(br in F)) {
F[br] = bq.methodize()
}
}
}
var bl = {};
function az(F) {
var i = N(F);
return (i in bl)
}
function aA(bq) {
if (!bq || az(bq)) {
return bq
}
if (bq.nodeType !== Node.ELEMENT_NODE || bq == window) {
return bq
}
var i = Object.clone(ao), F = bq.tagName.toUpperCase();
if (aY[F]) {
Object.extend(i, aY[F])
}
al(bq, i);
bl[N(bq)] = true;
return bq
}
function aT(F) {
if (!F || az(F)) {
return F
}
var i = F.tagName;
if (i && (/^(?:object|applet|embed)$/i.test(i))) {
al(F, aG.Methods);
al(F, aG.Methods.Simulated);
al(F, aG.Methods.ByTag[i.toUpperCase()])
}
return F
}
if (aD.SpecificElementExtensions) {
aA = aq ? aT : Prototype.K
}
function T(F, i) {
F = F.toUpperCase();
if (!aY[F]) {
aY[F] = {}
}
Object.extend(aY[F], i)
}
function r(F, bq, i) {
if (Object.isUndefined(i)) {
i = false
}
for (var bs in bq) {
var br = bq[bs];
if (!Object.isFunction(br)) {
continue
}
if (!i || !(bs in F)) {
F[bs] = br.methodize()
}
}
}
function aj(br) {
var i;
var bq = {
OPTGROUP: "OptGroup",
TEXTAREA: "TextArea",
P: "Paragraph",
FIELDSET: "FieldSet",
UL: "UList",
OL: "OList",
DL: "DList",
DIR: "Directory",
H1: "Heading",
H2: "Heading",
H3: "Heading",
H4: "Heading",
H5: "Heading",
H6: "Heading",
Q: "Quote",
INS: "Mod",
DEL: "Mod",
A: "Anchor",
IMG: "Image",
CAPTION: "TableCaption",
COL: "TableCol",
COLGROUP: "TableCol",
THEAD: "TableSection",
TFOOT: "TableSection",
TBODY: "TableSection",
TR: "TableRow",
TH: "TableCell",
TD: "TableCell",
FRAMESET: "FrameSet",
IFRAME: "IFrame"
};
if (bq[br]) {
i = "HTML" + bq[br] + "Element"
}
if (window[i]) {
return window[i]
}
i = "HTML" + br + "Element";
if (window[i]) {
return window[i]
}
i = "HTML" + br.capitalize() + "Element";
if (window[i]) {
return window[i]
}
var F = document.createElement(br), bs = F.__proto__ || F.constructor.prototype;
F = null;
return bs
}
function S(bs) {
if (arguments.length === 0) {
H()
}
if (arguments.length === 2) {
var bu = bs;
bs = arguments[1]
}
if (!bu) {
Object.extend(aG.Methods, bs || {})
} else {
if (Object.isArray(bu)) {
for (var bt = 0, br; br = bu[bt]; bt++) {
T(br, bs)
}
} else {
T(bu, bs)
}
}
var bq = window.HTMLElement ? HTMLElement.prototype : aG.prototype;
if (aD.ElementExtensions) {
r(bq, aG.Methods);
r(bq, aG.Methods.Simulated, true)
}
if (aD.SpecificElementExtensions) {
for (var br in aG.Methods.ByTag) {
var F = aj(br);
if (Object.isUndefined(F)) {
continue
}
r(F.prototype, aY[br])
}
}
Object.extend(aG, aG.Methods);
Object.extend(aG, aG.Methods.Simulated);
delete aG.ByTag;
delete aG.Simulated;
aG.extend.refresh();
s = {}
}
Object.extend(a9.Element, {extend: aA, addMethods: S});
if (aA === Prototype.K) {
a9.Element.extend.refresh = Prototype.emptyFunction
} else {
a9.Element.extend.refresh = function () {
if (Prototype.BrowserFeatures.ElementExtensions) {
return
}
Object.extend(ao, aG.Methods);
Object.extend(ao, aG.Methods.Simulated);
bl = {}
}
}
function H() {
Object.extend(Form, Form.Methods);
Object.extend(Form.Element, Form.Element.Methods);
Object.extend(aG.Methods.ByTag, {
FORM: Object.clone(Form.Methods),
INPUT: Object.clone(Form.Element.Methods),
SELECT: Object.clone(Form.Element.Methods),
TEXTAREA: Object.clone(Form.Element.Methods),
BUTTON: Object.clone(Form.Element.Methods)
})
}
aG.addMethods(a4);
function o() {
aw = null;
s = null
}
if (window.attachEvent) {
window.attachEvent("onunload", o)
}
})(this);
(function () {
function l(H) {
var G = H.match(/^(\d+)%?$/i);
if (!G) {
return null
}
return (Number(G[1]) / 100)
}
function z(H, I) {
H = $(H);
var J = H.style[I];
if (!J || J === "auto") {
var G = document.defaultView.getComputedStyle(H, null);
J = G ? G[I] : null
}
if (I === "opacity") {
return J ? parseFloat(J) : 1
}
return J === "auto" ? null : J
}
function C(G, H) {
var I = G.style[H];
if (!I && G.currentStyle) {
I = G.currentStyle[H]
}
return I
}
function s(I, H) {
var K = I.offsetWidth;
var M = v(I, "borderLeftWidth", H) || 0;
var G = v(I, "borderRightWidth", H) || 0;
var J = v(I, "paddingLeft", H) || 0;
var L = v(I, "paddingRight", H) || 0;
return K - M - G - J - L
}
if (!Object.isUndefined(document.documentElement.currentStyle) && !Prototype.Browser.Opera) {
z = C
}
function v(Q, R, H) {
var K = null;
if (Object.isElement(Q)) {
K = Q;
Q = z(K, R)
}
if (Q === null || Object.isUndefined(Q)) {
return null
}
if ((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(Q)) {
return window.parseFloat(Q)
}
var L = Q.include("%"), I = (H === document.viewport);
if (/\d/.test(Q) && K && K.runtimeStyle && !(L && I)) {
var G = K.style.left, P = K.runtimeStyle.left;
K.runtimeStyle.left = K.currentStyle.left;
K.style.left = Q || 0;
Q = K.style.pixelLeft;
K.style.left = G;
K.runtimeStyle.left = P;
return Q
}
if (K && L) {
H = H || K.parentNode;
var J = l(Q), M = null;
var O = R.include("left") || R.include("right") || R.include("width");
var N = R.include("top") || R.include("bottom") || R.include("height");
if (H === document.viewport) {
if (O) {
M = document.viewport.getWidth()
} else {
if (N) {
M = document.viewport.getHeight()
}
}
} else {
if (O) {
M = $(H).measure("width")
} else {
if (N) {
M = $(H).measure("height")
}
}
}
return (M === null) ? 0 : M * J
}
return 0
}
function k(G) {
if (Object.isString(G) && G.endsWith("px")) {
return G
}
return G + "px"
}
function n(G) {
while (G && G.parentNode) {
var H = G.getStyle("display");
if (H === "none") {
return false
}
G = $(G.parentNode)
}
return true
}
var g = Prototype.K;
if ("currentStyle" in document.documentElement) {
g = function (G) {
if (!G.currentStyle.hasLayout) {
G.style.zoom = 1
}
return G
}
}
function i(G) {
if (G.include("border")) {
G = G + "-width"
}
return G.camelize()
}
Element.Layout = Class.create(Hash, {
initialize: function ($super, H, G) {
$super();
this.element = $(H);
Element.Layout.PROPERTIES.each(function (I) {
this._set(I, null)
}, this);
if (G) {
this._preComputing = true;
this._begin();
Element.Layout.PROPERTIES.each(this._compute, this);
this._end();
this._preComputing = false
}
}, _set: function (H, G) {
return Hash.prototype.set.call(this, H, G)
}, set: function (H, G) {
throw "Properties of Element.Layout are read-only."
}, get: function ($super, H) {
var G = $super(H);
return G === null ? this._compute(H) : G
}, _begin: function () {
if (this._isPrepared()) {
return
}
var K = this.element;
if (n(K)) {
this._setPrepared(true);
return
}
var M = {
position: K.style.position || "",
width: K.style.width || "",
visibility: K.style.visibility || "",
display: K.style.display || ""
};
K.store("prototype_original_styles", M);
var N = z(K, "position"), G = K.offsetWidth;
if (G === 0 || G === null) {
K.style.display = "block";
G = K.offsetWidth
}
var H = (N === "fixed") ? document.viewport : K.parentNode;
var O = {visibility: "hidden", display: "block"};
if (N !== "fixed") {
O.position = "absolute"
}
K.setStyle(O);
var I = K.offsetWidth, J;
if (G && (I === G)) {
J = s(K, H)
} else {
if (N === "absolute" || N === "fixed") {
J = s(K, H)
} else {
var P = K.parentNode, L = $(P).getLayout();
J = L.get("width") - this.get("margin-left") - this.get("border-left") - this.get("padding-left") - this.get("padding-right") - this.get("border-right") - this.get("margin-right")
}
}
K.setStyle({width: J + "px"});
this._setPrepared(true)
}, _end: function () {
var H = this.element;
var G = H.retrieve("prototype_original_styles");
H.store("prototype_original_styles", null);
H.setStyle(G);
this._setPrepared(false)
}, _compute: function (H) {
var G = Element.Layout.COMPUTATIONS;
if (!(H in G)) {
throw "Property not found."
}
return this._set(H, G[H].call(this, this.element))
}, _isPrepared: function () {
return this.element.retrieve("prototype_element_layout_prepared", false)
}, _setPrepared: function (G) {
return this.element.store("prototype_element_layout_prepared", G)
}, toObject: function () {
var G = $A(arguments);
var H = (G.length === 0) ? Element.Layout.PROPERTIES : G.join(" ").split(" ");
var I = {};
H.each(function (J) {
if (!Element.Layout.PROPERTIES.include(J)) {
return
}
var K = this.get(J);
if (K != null) {
I[J] = K
}
}, this);
return I
}, toHash: function () {
var G = this.toObject.apply(this, arguments);
return new Hash(G)
}, toCSS: function () {
var G = $A(arguments);
var I = (G.length === 0) ? Element.Layout.PROPERTIES : G.join(" ").split(" ");
var H = {};
I.each(function (J) {
if (!Element.Layout.PROPERTIES.include(J)) {
return
}
if (Element.Layout.COMPOSITE_PROPERTIES.include(J)) {
return
}
var K = this.get(J);
if (K != null) {
H[i(J)] = K + "px"
}
}, this);
return H
}, inspect: function () {
return "#<Element.Layout>"
}
});
Object.extend(Element.Layout, {
PROPERTIES: $w("height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height"),
COMPOSITE_PROPERTIES: $w("padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height"),
COMPUTATIONS: {
height: function (I) {
if (!this._preComputing) {
this._begin()
}
var G = this.get("border-box-height");
if (G <= 0) {
if (!this._preComputing) {
this._end()
}
return 0
}
var J = this.get("border-top"), H = this.get("border-bottom");
var L = this.get("padding-top"), K = this.get("padding-bottom");
if (!this._preComputing) {
this._end()
}
return G - J - H - L - K
}, width: function (I) {
if (!this._preComputing) {
this._begin()
}
var H = this.get("border-box-width");
if (H <= 0) {
if (!this._preComputing) {
this._end()
}
return 0
}
var L = this.get("border-left"), G = this.get("border-right");
var J = this.get("padding-left"), K = this.get("padding-right");
if (!this._preComputing) {
this._end()
}
return H - L - G - J - K
}, "padding-box-height": function (H) {
var G = this.get("height"), J = this.get("padding-top"), I = this.get("padding-bottom");
return G + J + I
}, "padding-box-width": function (G) {
var H = this.get("width"), I = this.get("padding-left"), J = this.get("padding-right");
return H + I + J
}, "border-box-height": function (H) {
if (!this._preComputing) {
this._begin()
}
var G = H.offsetHeight;
if (!this._preComputing) {
this._end()
}
return G
}, "border-box-width": function (G) {
if (!this._preComputing) {
this._begin()
}
var H = G.offsetWidth;
if (!this._preComputing) {
this._end()
}
return H
}, "margin-box-height": function (H) {
var G = this.get("border-box-height"), I = this.get("margin-top"), J = this.get("margin-bottom");
if (G <= 0) {
return 0
}
return G + I + J
}, "margin-box-width": function (I) {
var H = this.get("border-box-width"), J = this.get("margin-left"), G = this.get("margin-right");
if (H <= 0) {
return 0
}
return H + J + G
}, top: function (G) {
var H = G.positionedOffset();
return H.top
}, bottom: function (G) {
var J = G.positionedOffset(), H = G.getOffsetParent(), I = H.measure("height");
var K = this.get("border-box-height");
return I - K - J.top
}, left: function (G) {
var H = G.positionedOffset();
return H.left
}, right: function (I) {
var K = I.positionedOffset(), J = I.getOffsetParent(), G = J.measure("width");
var H = this.get("border-box-width");
return G - H - K.left
}, "padding-top": function (G) {
return v(G, "paddingTop")
}, "padding-bottom": function (G) {
return v(G, "paddingBottom")
}, "padding-left": function (G) {
return v(G, "paddingLeft")
}, "padding-right": function (G) {
return v(G, "paddingRight")
}, "border-top": function (G) {
return v(G, "borderTopWidth")
}, "border-bottom": function (G) {
return v(G, "borderBottomWidth")
}, "border-left": function (G) {
return v(G, "borderLeftWidth")
}, "border-right": function (G) {
return v(G, "borderRightWidth")
}, "margin-top": function (G) {
return v(G, "marginTop")
}, "margin-bottom": function (G) {
return v(G, "marginBottom")
}, "margin-left": function (G) {
return v(G, "marginLeft")
}, "margin-right": function (G) {
return v(G, "marginRight")
}
}
});
if ("getBoundingClientRect" in document.documentElement) {
Object.extend(Element.Layout.COMPUTATIONS, {
right: function (H) {
var I = g(H.getOffsetParent());
var J = H.getBoundingClientRect(), G = I.getBoundingClientRect();
return (G.right - J.right).round()
}, bottom: function (H) {
var I = g(H.getOffsetParent());
var J = H.getBoundingClientRect(), G = I.getBoundingClientRect();
return (G.bottom - J.bottom).round()
}
})
}
Element.Offset = Class.create({
initialize: function (H, G) {
this.left = H.round();
this.top = G.round();
this[0] = this.left;
this[1] = this.top
}, relativeTo: function (G) {
return new Element.Offset(this.left - G.left, this.top - G.top)
}, inspect: function () {
return "#<Element.Offset left: #{left} top: #{top}>".interpolate(this)
}, toString: function () {
return "[#{left}, #{top}]".interpolate(this)
}, toArray: function () {
return [this.left, this.top]
}
});
function A(H, G) {
return new Element.Layout(H, G)
}
function d(G, H) {
return $(G).getLayout().get(H)
}
function r(G) {
return Element.getDimensions(G).height
}
function c(G) {
return Element.getDimensions(G).width
}
function t(H) {
H = $(H);
var L = Element.getStyle(H, "display");
if (L && L !== "none") {
return {width: H.offsetWidth, height: H.offsetHeight}
}
var I = H.style;
var G = {visibility: I.visibility, position: I.position, display: I.display};
var K = {visibility: "hidden", display: "block"};
if (G.position !== "fixed") {
K.position = "absolute"
}
Element.setStyle(H, K);
var J = {width: H.offsetWidth, height: H.offsetHeight};
Element.setStyle(H, G);
return J
}
function q(G) {
G = $(G);
function I(J) {
return o(J) ? $(document.body) : $(J)
}
if (h(G) || f(G) || p(G) || o(G)) {
return $(document.body)
}
var H = (Element.getStyle(G, "display") === "inline");
if (!H && G.offsetParent) {
return I(G.offsetParent)
}
while ((G = G.parentNode) && G !== document.body) {
if (Element.getStyle(G, "position") !== "static") {
return I(G)
}
}
return $(document.body)
}
function D(H) {
H = $(H);
var G = 0, I = 0;
if (H.parentNode) {
do {
G += H.offsetTop || 0;
I += H.offsetLeft || 0;
H = H.offsetParent
} while (H)
}
return new Element.Offset(I, G)
}
function x(H) {
H = $(H);
var I = H.getLayout();
var G = 0, K = 0;
do {
G += H.offsetTop || 0;
K += H.offsetLeft || 0;
H = H.offsetParent;
if (H) {
if (p(H)) {
break
}
var J = Element.getStyle(H, "position");
if (J !== "static") {
break
}
}
} while (H);
K -= I.get("margin-left");
G -= I.get("margin-top");
return new Element.Offset(K, G)
}
function b(H) {
var G = 0, I = 0;
do {
if (H === document.body) {
var J = document.documentElement || document.body.parentNode || document.body;
G += !Object.isUndefined(window.pageYOffset) ? window.pageYOffset : J.scrollTop || 0;
I += !Object.isUndefined(window.pageXOffset) ? window.pageXOffset : J.scrollLeft || 0;
break
} else {
G += H.scrollTop || 0;
I += H.scrollLeft || 0;
H = H.parentNode
}
} while (H);
return new Element.Offset(I, G)
}
function B(K) {
var G = 0, J = 0, I = document.body;
K = $(K);
var H = K;
do {
G += H.offsetTop || 0;
J += H.offsetLeft || 0;
if (H.offsetParent == I && Element.getStyle(H, "position") == "absolute") {
break
}
} while (H = H.offsetParent);
H = K;
do {
if (H != I) {
G -= H.scrollTop || 0;
J -= H.scrollLeft || 0
}
} while (H = H.parentNode);
return new Element.Offset(J, G)
}
function y(G) {
G = $(G);
if (Element.getStyle(G, "position") === "absolute") {
return G
}
var K = q(G);
var J = G.viewportOffset(), H = K.viewportOffset();
var L = J.relativeTo(H);
var I = G.getLayout();
G.store("prototype_absolutize_original_styles", {
position: G.getStyle("position"),
left: G.getStyle("left"),
top: G.getStyle("top"),
width: G.getStyle("width"),
height: G.getStyle("height")
});
G.setStyle({
position: "absolute",
top: L.top + "px",
left: L.left + "px",
width: I.get("width") + "px",
height: I.get("height") + "px"
});
return G
}
function m(H) {
H = $(H);
if (Element.getStyle(H, "position") === "relative") {
return H
}
var G = H.retrieve("prototype_absolutize_original_styles");
if (G) {
H.setStyle(G)
}
return H
}
function a(G) {
G = $(G);
var H = Element.cumulativeOffset(G);
window.scrollTo(H.left, H.top);
return G
}
function w(H) {
H = $(H);
var G = Element.getStyle(H, "position"), I = {};
if (G === "static" || !G) {
I.position = "relative";
if (Prototype.Browser.Opera) {
I.top = 0;
I.left = 0
}
Element.setStyle(H, I);
Element.store(H, "prototype_made_positioned", true)
}
return H
}
function u(G) {
G = $(G);
var I = Element.getStorage(G), H = I.get("prototype_made_positioned");
if (H) {
I.unset("prototype_made_positioned");
Element.setStyle(G, {position: "", top: "", bottom: "", left: "", right: ""})
}
return G
}
function e(H) {
H = $(H);
var J = Element.getStorage(H), G = J.get("prototype_made_clipping");
if (Object.isUndefined(G)) {
var I = Element.getStyle(H, "overflow");
J.set("prototype_made_clipping", I);
if (I !== "hidden") {
H.style.overflow = "hidden"
}
}
return H
}
function E(G) {
G = $(G);
var I = Element.getStorage(G), H = I.get("prototype_made_clipping");
if (!Object.isUndefined(H)) {
I.unset("prototype_made_clipping");
G.style.overflow = H || ""
}
return G
}
function F(J, G, R) {
R = Object.extend({
setLeft: true,
setTop: true,
setWidth: true,
setHeight: true,
offsetTop: 0,
offsetLeft: 0
}, R || {});
var I = document.documentElement;
G = $(G);
J = $(J);
var H, P, L, Q = {};
if (R.setLeft || R.setTop) {
H = Element.viewportOffset(G);
P = [0, 0];
if (Element.getStyle(J, "position") === "absolute") {
var O = Element.getOffsetParent(J);
if (O !== document.body) {
P = Element.viewportOffset(O)
}
}
}
function M() {
var S = 0, T = 0;
if (Object.isNumber(window.pageXOffset)) {
S = window.pageXOffset;
T = window.pageYOffset
} else {
if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
S = document.body.scrollLeft;
T = document.body.scrollTop
} else {
if (I && (I.scrollLeft || I.scrollTop)) {
S = I.scrollLeft;
T = I.scrollTop
}
}
}
return {x: S, y: T}
}
var K = M();
if (R.setWidth || R.setHeight) {
L = Element.getLayout(G)
}
if (R.setLeft) {
Q.left = (H[0] + K.x - P[0] + R.offsetLeft) + "px"
}
if (R.setTop) {
Q.top = (H[1] + K.y - P[1] + R.offsetTop) + "px"
}
var N = J.getLayout();
if (R.setWidth) {
Q.width = L.get("width") + "px"
}
if (R.setHeight) {
Q.height = L.get("height") + "px"
}
return Element.setStyle(J, Q)
}
if (Prototype.Browser.IE) {
q = q.wrap(function (I, H) {
H = $(H);
if (h(H) || f(H) || p(H) || o(H)) {
return $(document.body)
}
var G = H.getStyle("position");
if (G !== "static") {
return I(H)
}
H.setStyle({position: "relative"});
var J = I(H);
H.setStyle({position: G});
return J
});
x = x.wrap(function (J, H) {
H = $(H);
if (!H.parentNode) {
return new Element.Offset(0, 0)
}
var G = H.getStyle("position");
if (G !== "static") {
return J(H)
}
var I = H.getOffsetParent();
if (I && I.getStyle("position") === "fixed") {
g(I)
}
H.setStyle({position: "relative"});
var K = J(H);
H.setStyle({position: G});
return K
})
} else {
if (Prototype.Browser.Webkit) {
D = function (H) {
H = $(H);
var G = 0, I = 0;
do {
G += H.offsetTop || 0;
I += H.offsetLeft || 0;
if (H.offsetParent == document.body) {
if (Element.getStyle(H, "position") == "absolute") {
break
}
}
H = H.offsetParent
} while (H);
return new Element.Offset(I, G)
}
}
}
Element.addMethods({
getLayout: A,
measure: d,
getWidth: c,
getHeight: r,
getDimensions: t,
getOffsetParent: q,
cumulativeOffset: D,
positionedOffset: x,
cumulativeScrollOffset: b,
viewportOffset: B,
absolutize: y,
relativize: m,
scrollTo: a,
makePositioned: w,
undoPositioned: u,
makeClipping: e,
undoClipping: E,
clonePosition: F
});
function p(G) {
return G.nodeName.toUpperCase() === "BODY"
}
function o(G) {
return G.nodeName.toUpperCase() === "HTML"
}
function h(G) {
return G.nodeType === Node.DOCUMENT_NODE
}
function f(G) {
return G !== document.body && !Element.descendantOf(G, document.body)
}
if ("getBoundingClientRect" in document.documentElement) {
Element.addMethods({
viewportOffset: function (G) {
G = $(G);
if (f(G)) {
return new Element.Offset(0, 0)
}
var H = G.getBoundingClientRect(), I = document.documentElement;
return new Element.Offset(H.left - I.clientLeft, H.top - I.clientTop)
}
})
}
})();
(function () {
var c = Prototype.Browser.Opera && (window.parseFloat(window.opera.version()) < 9.5);
var f = null;
function b() {
if (f) {
return f
}
f = c ? document.body : document.documentElement;
return f
}
function d() {
return {width: this.getWidth(), height: this.getHeight()}
}
function a() {
return b().clientWidth
}
function g() {
return b().clientHeight
}
function e() {
var h = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft;
var i = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
return new Element.Offset(h, i)
}
document.viewport = {getDimensions: d, getWidth: a, getHeight: g, getScrollOffsets: e}
})();
window.$$ = function () {
var a = $A(arguments).join(", ");
return Prototype.Selector.select(a, document)
};
Prototype.Selector = (function () {
function a() {
throw new Error('Method "Prototype.Selector.select" must be defined.')
}
function c() {
throw new Error('Method "Prototype.Selector.match" must be defined.')
}
function d(m, n, h) {
h = h || 0;
var g = Prototype.Selector.match, l = m.length, f = 0, k;
for (k = 0; k < l; k++) {
if (g(m[k], n) && h == f++) {
return Element.extend(m[k])
}
}
}
function e(h) {
for (var f = 0, g = h.length; f < g; f++) {
Element.extend(h[f])
}
return h
}
var b = Prototype.K;
return {select: a, match: c, find: d, extendElements: (Element.extend === b) ? b : e, extendElement: Element.extend}
})();
Prototype._original_property = window.Sizzle;
(function () {
function a(b) {
Prototype._actual_sizzle = b()
}
a.amd = true;
if (typeof define !== "undefined" && define.amd) {
Prototype._original_define = define;
Prototype._actual_sizzle = null;
window.define = a
}
})();
/*!
* Sizzle CSS Selector Engine v1.10.18
* http://sizzlejs.com/
*
* Copyright 2013 jQuery Foundation, Inc. and other contributors
* Released under the MIT license
* http://jquery.org/license
*
* Date: 2014-02-05
*/
(function (aw) {
var E, az, u, N, Q, ac, ay, aD, O, ad, af, I, v, ao, aj, ax, l, L, aq = "sizzle" + -(new Date()), P = aw.document,
aA = 0, ak = 0, d = G(), ap = G(), M = G(), K = function (i, e) {
if (i === e) {
ad = true
}
return 0
}, av = typeof undefined, W = 1 << 31, U = ({}).hasOwnProperty, at = [], au = at.pop, S = at.push, b = at.push,
t = at.slice, k = at.indexOf || function (aF) {
var aE = 0, e = this.length;
for (; aE < e; aE++) {
if (this[aE] === aF) {
return aE
}
}
return -1
},
c = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
w = "[\\x20\\t\\r\\n\\f]", a = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", R = a.replace("w", "w#"),
am = "\\[" + w + "*(" + a + ")" + w + "*(?:([*^$|!~]?=)" + w + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + R + ")|)|)" + w + "*\\]",
r = ":(" + a + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + am.replace(3, 8) + ")*)|.*)\\)|)",
y = new RegExp("^" + w + "+|((?:^|[^\\\\])(?:\\\\.)*)" + w + "+$", "g"),
B = new RegExp("^" + w + "*," + w + "*"), H = new RegExp("^" + w + "*([>+~]|" + w + ")" + w + "*"),
A = new RegExp("=" + w + "*([^\\]'\"]*?)" + w + "*\\]", "g"), Y = new RegExp(r), aa = new RegExp("^" + R + "$"),
ai = {
ID: new RegExp("^#(" + a + ")"),
CLASS: new RegExp("^\\.(" + a + ")"),
TAG: new RegExp("^(" + a.replace("w", "w*") + ")"),
ATTR: new RegExp("^" + am),
PSEUDO: new RegExp("^" + r),
CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + w + "*(even|odd|(([+-]|)(\\d*)n|)" + w + "*(?:([+-]|)" + w + "*(\\d+)|))" + w + "*\\)|)", "i"),
bool: new RegExp("^(?:" + c + ")$", "i"),
needsContext: new RegExp("^" + w + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + w + "*((?:-\\d)?\\d*)" + w + "*\\)|)(?=[^-]|$)", "i")
}, h = /^(?:input|select|textarea|button)$/i, s = /^h\d$/i, V = /^[^{]+\{\s*\[native \w/,
X = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, ah = /[+~]/, T = /'|\\/g,
z = new RegExp("\\\\([\\da-f]{1,6}" + w + "?|(" + w + ")|.)", "ig"), al = function (e, aF, i) {
var aE = "0x" + aF - 65536;
return aE !== aE || i ? aF : aE < 0 ? String.fromCharCode(aE + 65536) : String.fromCharCode(aE >> 10 | 55296, aE & 1023 | 56320)
};
try {
b.apply((at = t.call(P.childNodes)), P.childNodes);
at[P.childNodes.length].nodeType
} catch (J) {
b = {
apply: at.length ? function (i, e) {
S.apply(i, t.call(e))
} : function (aG, aF) {
var e = aG.length, aE = 0;
while ((aG[e++] = aF[aE++])) {
}
aG.length = e - 1
}
}
}
function C(aL, aE, aP, aR) {
var aQ, aI, aJ, aN, aO, aH, aG, e, aF, aM;
if ((aE ? aE.ownerDocument || aE : P) !== I) {
af(aE)
}
aE = aE || I;
aP = aP || [];
if (!aL || typeof aL !== "string") {
return aP
}
if ((aN = aE.nodeType) !== 1 && aN !== 9) {
return []
}
if (ao && !aR) {
if ((aQ = X.exec(aL))) {
if ((aJ = aQ[1])) {
if (aN === 9) {
aI = aE.getElementById(aJ);
if (aI && aI.parentNode) {
if (aI.id === aJ) {
aP.push(aI);
return aP
}
} else {
return aP
}
} else {
if (aE.ownerDocument && (aI = aE.ownerDocument.getElementById(aJ)) && L(aE, aI) && aI.id === aJ) {
aP.push(aI);
return aP
}
}
} else {
if (aQ[2]) {
b.apply(aP, aE.getElementsByTagName(aL));
return aP
} else {
if ((aJ = aQ[3]) && az.getElementsByClassName && aE.getElementsByClassName) {
b.apply(aP, aE.getElementsByClassName(aJ));
return aP
}
}
}
}
if (az.qsa && (!aj || !aj.test(aL))) {
e = aG = aq;
aF = aE;
aM = aN === 9 && aL;
if (aN === 1 && aE.nodeName.toLowerCase() !== "object") {
aH = o(aL);
if ((aG = aE.getAttribute("id"))) {
e = aG.replace(T, "\\$&")
} else {
aE.setAttribute("id", e)
}
e = "[id='" + e + "'] ";
aO = aH.length;
while (aO--) {
aH[aO] = e + p(aH[aO])
}
aF = ah.test(aL) && Z(aE.parentNode) || aE;
aM = aH.join(",")
}
if (aM) {
try {
b.apply(aP, aF.querySelectorAll(aM));
return aP
} catch (aK) {
} finally {
if (!aG) {
aE.removeAttribute("id")
}
}
}
}
}
return ay(aL.replace(y, "$1"), aE, aP, aR)
}
function G() {
var i = [];
function e(aE, aF) {
if (i.push(aE + " ") > u.cacheLength) {
delete e[i.shift()]
}
return (e[aE + " "] = aF)
}
return e
}
function q(e) {
e[aq] = true;
return e
}
function m(i) {
var aF = I.createElement("div");
try {
return !!i(aF)
} catch (aE) {
return false
} finally {
if (aF.parentNode) {
aF.parentNode.removeChild(aF)
}
aF = null
}
}
function aB(aE, aG) {
var e = aE.split("|"), aF = aE.length;
while (aF--) {
u.attrHandle[e[aF]] = aG
}
}
function f(i, e) {
var aF = e && i,
aE = aF && i.nodeType === 1 && e.nodeType === 1 && (~e.sourceIndex || W) - (~i.sourceIndex || W);
if (aE) {
return aE
}
if (aF) {
while ((aF = aF.nextSibling)) {
if (aF === e) {
return -1
}
}
}
return i ? 1 : -1
}
function D(e) {
return function (aE) {
var i = aE.nodeName.toLowerCase();
return i === "input" && aE.type === e
}
}
function g(e) {
return function (aE) {
var i = aE.nodeName.toLowerCase();
return (i === "input" || i === "button") && aE.type === e
}
}
function an(e) {
return q(function (i) {
i = +i;
return q(function (aE, aI) {
var aG, aF = e([], aE.length, i), aH = aF.length;
while (aH--) {
if (aE[(aG = aF[aH])]) {
aE[aG] = !(aI[aG] = aE[aG])
}
}
})
})
}
function Z(e) {
return e && typeof e.getElementsByTagName !== av && e
}
az = C.support = {};
Q = C.isXML = function (e) {
var i = e && (e.ownerDocument || e).documentElement;
return i ? i.nodeName !== "HTML" : false
};
af = C.setDocument = function (aE) {
var e, aF = aE ? aE.ownerDocument || aE : P, i = aF.defaultView;
if (aF === I || aF.nodeType !== 9 || !aF.documentElement) {
return I
}
I = aF;
v = aF.documentElement;
ao = !Q(aF);
if (i && i !== i.top) {
if (i.addEventListener) {
i.addEventListener("unload", function () {
af()
}, false)
} else {
if (i.attachEvent) {
i.attachEvent("onunload", function () {
af()
})
}
}
}
az.attributes = m(function (aG) {
aG.className = "i";
return !aG.getAttribute("className")
});
az.getElementsByTagName = m(function (aG) {
aG.appendChild(aF.createComment(""));
return !aG.getElementsByTagName("*").length
});
az.getElementsByClassName = V.test(aF.getElementsByClassName) && m(function (aG) {
aG.innerHTML = "<div class='a'></div><div class='a i'></div>";
aG.firstChild.className = "i";
return aG.getElementsByClassName("i").length === 2
});
az.getById = m(function (aG) {
v.appendChild(aG).id = aq;
return !aF.getElementsByName || !aF.getElementsByName(aq).length
});
if (az.getById) {
u.find.ID = function (aI, aH) {
if (typeof aH.getElementById !== av && ao) {
var aG = aH.getElementById(aI);
return aG && aG.parentNode ? [aG] : []
}
};
u.filter.ID = function (aH) {
var aG = aH.replace(z, al);
return function (aI) {
return aI.getAttribute("id") === aG
}
}
} else {
delete u.find.ID;
u.filter.ID = function (aH) {
var aG = aH.replace(z, al);
return function (aJ) {
var aI = typeof aJ.getAttributeNode !== av && aJ.getAttributeNode("id");
return aI && aI.value === aG
}
}
}
u.find.TAG = az.getElementsByTagName ? function (aG, aH) {
if (typeof aH.getElementsByTagName !== av) {
return aH.getElementsByTagName(aG)
}
} : function (aG, aK) {
var aL, aJ = [], aI = 0, aH = aK.getElementsByTagName(aG);
if (aG === "*") {
while ((aL = aH[aI++])) {
if (aL.nodeType === 1) {
aJ.push(aL)
}
}
return aJ
}
return aH
};
u.find.CLASS = az.getElementsByClassName && function (aH, aG) {
if (typeof aG.getElementsByClassName !== av && ao) {
return aG.getElementsByClassName(aH)
}
};
ax = [];
aj = [];
if ((az.qsa = V.test(aF.querySelectorAll))) {
m(function (aG) {
aG.innerHTML = "<select t=''><option selected=''></option></select>";
if (aG.querySelectorAll("[t^='']").length) {
aj.push("[*^$]=" + w + "*(?:''|\"\")")
}
if (!aG.querySelectorAll("[selected]").length) {
aj.push("\\[" + w + "*(?:value|" + c + ")")
}
if (!aG.querySelectorAll(":checked").length) {
aj.push(":checked")
}
});
m(function (aH) {
var aG = aF.createElement("input");
aG.setAttribute("type", "hidden");
aH.appendChild(aG).setAttribute("name", "D");
if (aH.querySelectorAll("[name=d]").length) {
aj.push("name" + w + "*[*^$|!~]?=")
}
if (!aH.querySelectorAll(":enabled").length) {
aj.push(":enabled", ":disabled")
}
aH.querySelectorAll("*,:x");
aj.push(",.*:")
})
}
if ((az.matchesSelector = V.test((l = v.webkitMatchesSelector || v.mozMatchesSelector || v.oMatchesSelector || v.msMatchesSelector)))) {
m(function (aG) {
az.disconnectedMatch = l.call(aG, "div");
l.call(aG, "[s!='']:x");
ax.push("!=", r)
})
}
aj = aj.length && new RegExp(aj.join("|"));
ax = ax.length && new RegExp(ax.join("|"));
e = V.test(v.compareDocumentPosition);
L = e || V.test(v.contains) ? function (aH, aG) {
var aJ = aH.nodeType === 9 ? aH.documentElement : aH, aI = aG && aG.parentNode;
return aH === aI || !!(aI && aI.nodeType === 1 && (aJ.contains ? aJ.contains(aI) : aH.compareDocumentPosition && aH.compareDocumentPosition(aI) & 16))
} : function (aH, aG) {
if (aG) {
while ((aG = aG.parentNode)) {
if (aG === aH) {
return true
}
}
}
return false
};
K = e ? function (aH, aG) {
if (aH === aG) {
ad = true;
return 0
}
var aI = !aH.compareDocumentPosition - !aG.compareDocumentPosition;
if (aI) {
return aI
}
aI = (aH.ownerDocument || aH) === (aG.ownerDocument || aG) ? aH.compareDocumentPosition(aG) : 1;
if (aI & 1 || (!az.sortDetached && aG.compareDocumentPosition(aH) === aI)) {
if (aH === aF || aH.ownerDocument === P && L(P, aH)) {
return -1
}
if (aG === aF || aG.ownerDocument === P && L(P, aG)) {
return 1
}
return O ? (k.call(O, aH) - k.call(O, aG)) : 0
}
return aI & 4 ? -1 : 1
} : function (aH, aG) {
if (aH === aG) {
ad = true;
return 0
}
var aN, aK = 0, aM = aH.parentNode, aJ = aG.parentNode, aI = [aH], aL = [aG];
if (!aM || !aJ) {
return aH === aF ? -1 : aG === aF ? 1 : aM ? -1 : aJ ? 1 : O ? (k.call(O, aH) - k.call(O, aG)) : 0
} else {
if (aM === aJ) {
return f(aH, aG)
}
}
aN = aH;
while ((aN = aN.parentNode)) {
aI.unshift(aN)
}
aN = aG;
while ((aN = aN.parentNode)) {
aL.unshift(aN)
}
while (aI[aK] === aL[aK]) {
aK++
}
return aK ? f(aI[aK], aL[aK]) : aI[aK] === P ? -1 : aL[aK] === P ? 1 : 0
};
return aF
};
C.matches = function (i, e) {
return C(i, null, null, e)
};
C.matchesSelector = function (aE, aG) {
if ((aE.ownerDocument || aE) !== I) {
af(aE)
}
aG = aG.replace(A, "='$1']");
if (az.matchesSelector && ao && (!ax || !ax.test(aG)) && (!aj || !aj.test(aG))) {
try {
var i = l.call(aE, aG);
if (i || az.disconnectedMatch || aE.document && aE.document.nodeType !== 11) {
return i
}
} catch (aF) {
}
}
return C(aG, I, null, [aE]).length > 0
};
C.contains = function (e, i) {
if ((e.ownerDocument || e) !== I) {
af(e)
}
return L(e, i)
};
C.attr = function (aE, e) {
if ((aE.ownerDocument || aE) !== I) {
af(aE)
}
var i = u.attrHandle[e.toLowerCase()],
aF = i && U.call(u.attrHandle, e.toLowerCase()) ? i(aE, e, !ao) : undefined;
return aF !== undefined ? aF : az.attributes || !ao ? aE.getAttribute(e) : (aF = aE.getAttributeNode(e)) && aF.specified ? aF.value : null
};
C.error = function (e) {
throw new Error("Syntax error, unrecognized expression: " + e)
};
C.uniqueSort = function (aF) {
var aG, aH = [], e = 0, aE = 0;
ad = !az.detectDuplicates;
O = !az.sortStable && aF.slice(0);
aF.sort(K);
if (ad) {
while ((aG = aF[aE++])) {
if (aG === aF[aE]) {
e = aH.push(aE)
}
}
while (e--) {
aF.splice(aH[e], 1)
}
}
O = null;
return aF
};
N = C.getText = function (aH) {
var aG, aE = "", aF = 0, e = aH.nodeType;
if (!e) {
while ((aG = aH[aF++])) {
aE += N(aG)
}
} else {
if (e === 1 || e === 9 || e === 11) {
if (typeof aH.textContent === "string") {
return aH.textContent
} else {
for (aH = aH.firstChild; aH; aH = aH.nextSibling) {
aE += N(aH)
}
}
} else {
if (e === 3 || e === 4) {
return aH.nodeValue
}
}
}
return aE
};
u = C.selectors = {
cacheLength: 50,
createPseudo: q,
match: ai,
attrHandle: {},
find: {},
relative: {
">": {dir: "parentNode", first: true},
" ": {dir: "parentNode"},
"+": {dir: "previousSibling", first: true},
"~": {dir: "previousSibling"}
},
preFilter: {
ATTR: function (e) {
e[1] = e[1].replace(z, al);
e[3] = (e[4] || e[5] || "").replace(z, al);
if (e[2] === "~=") {
e[3] = " " + e[3] + " "
}
return e.slice(0, 4)
}, CHILD: function (e) {
e[1] = e[1].toLowerCase();
if (e[1].slice(0, 3) === "nth") {
if (!e[3]) {
C.error(e[0])
}
e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * (e[3] === "even" || e[3] === "odd"));
e[5] = +((e[7] + e[8]) || e[3] === "odd")
} else {
if (e[3]) {
C.error(e[0])
}
}
return e
}, PSEUDO: function (i) {
var e, aE = !i[5] && i[2];
if (ai.CHILD.test(i[0])) {
return null
}
if (i[3] && i[4] !== undefined) {
i[2] = i[4]
} else {
if (aE && Y.test(aE) && (e = o(aE, true)) && (e = aE.indexOf(")", aE.length - e) - aE.length)) {
i[0] = i[0].slice(0, e);
i[2] = aE.slice(0, e)
}
}
return i.slice(0, 3)
}
},
filter: {
TAG: function (i) {
var e = i.replace(z, al).toLowerCase();
return i === "*" ? function () {
return true
} : function (aE) {
return aE.nodeName && aE.nodeName.toLowerCase() === e
}
}, CLASS: function (e) {
var i = d[e + " "];
return i || (i = new RegExp("(^|" + w + ")" + e + "(" + w + "|$)")) && d(e, function (aE) {
return i.test(typeof aE.className === "string" && aE.className || typeof aE.getAttribute !== av && aE.getAttribute("class") || "")
})
}, ATTR: function (aE, i, e) {
return function (aG) {
var aF = C.attr(aG, aE);
if (aF == null) {
return i === "!="
}
if (!i) {
return true
}
aF += "";
return i === "=" ? aF === e : i === "!=" ? aF !== e : i === "^=" ? e && aF.indexOf(e) === 0 : i === "*=" ? e && aF.indexOf(e) > -1 : i === "$=" ? e && aF.slice(-e.length) === e : i === "~=" ? (" " + aF + " ").indexOf(e) > -1 : i === "|=" ? aF === e || aF.slice(0, e.length + 1) === e + "-" : false
}
}, CHILD: function (i, aG, aF, aH, aE) {
var aJ = i.slice(0, 3) !== "nth", e = i.slice(-4) !== "last", aI = aG === "of-type";
return aH === 1 && aE === 0 ? function (aK) {
return !!aK.parentNode
} : function (aQ, aO, aT) {
var aK, aW, aR, aV, aS, aN, aP = aJ !== e ? "nextSibling" : "previousSibling", aU = aQ.parentNode,
aM = aI && aQ.nodeName.toLowerCase(), aL = !aT && !aI;
if (aU) {
if (aJ) {
while (aP) {
aR = aQ;
while ((aR = aR[aP])) {
if (aI ? aR.nodeName.toLowerCase() === aM : aR.nodeType === 1) {
return false
}
}
aN = aP = i === "only" && !aN && "nextSibling"
}
return true
}
aN = [e ? aU.firstChild : aU.lastChild];
if (e && aL) {
aW = aU[aq] || (aU[aq] = {});
aK = aW[i] || [];
aS = aK[0] === aA && aK[1];
aV = aK[0] === aA && aK[2];
aR = aS && aU.childNodes[aS];
while ((aR = ++aS && aR && aR[aP] || (aV = aS = 0) || aN.pop())) {
if (aR.nodeType === 1 && ++aV && aR === aQ) {
aW[i] = [aA, aS, aV];
break
}
}
} else {
if (aL && (aK = (aQ[aq] || (aQ[aq] = {}))[i]) && aK[0] === aA) {
aV = aK[1]
} else {
while ((aR = ++aS && aR && aR[aP] || (aV = aS = 0) || aN.pop())) {
if ((aI ? aR.nodeName.toLowerCase() === aM : aR.nodeType === 1) && ++aV) {
if (aL) {
(aR[aq] || (aR[aq] = {}))[i] = [aA, aV]
}
if (aR === aQ) {
break
}
}
}
}
}
aV -= aE;
return aV === aH || (aV % aH === 0 && aV / aH >= 0)
}
}
}, PSEUDO: function (aF, aE) {
var e, i = u.pseudos[aF] || u.setFilters[aF.toLowerCase()] || C.error("unsupported pseudo: " + aF);
if (i[aq]) {
return i(aE)
}
if (i.length > 1) {
e = [aF, aF, "", aE];
return u.setFilters.hasOwnProperty(aF.toLowerCase()) ? q(function (aI, aK) {
var aH, aG = i(aI, aE), aJ = aG.length;
while (aJ--) {
aH = k.call(aI, aG[aJ]);
aI[aH] = !(aK[aH] = aG[aJ])
}
}) : function (aG) {
return i(aG, 0, e)
}
}
return i
}
},
pseudos: {
not: q(function (e) {
var i = [], aE = [], aF = ac(e.replace(y, "$1"));
return aF[aq] ? q(function (aH, aM, aK, aI) {
var aL, aG = aF(aH, null, aI, []), aJ = aH.length;
while (aJ--) {
if ((aL = aG[aJ])) {
aH[aJ] = !(aM[aJ] = aL)
}
}
}) : function (aI, aH, aG) {
i[0] = aI;
aF(i, null, aG, aE);
return !aE.pop()
}
}), has: q(function (e) {
return function (i) {
return C(e, i).length > 0
}
}), contains: q(function (e) {
return function (i) {
return (i.textContent || i.innerText || N(i)).indexOf(e) > -1
}
}), lang: q(function (e) {
if (!aa.test(e || "")) {
C.error("unsupported lang: " + e)
}
e = e.replace(z, al).toLowerCase();
return function (aE) {
var i;
do {
if ((i = ao ? aE.lang : aE.getAttribute("xml:lang") || aE.getAttribute("lang"))) {
i = i.toLowerCase();
return i === e || i.indexOf(e + "-") === 0
}
} while ((aE = aE.parentNode) && aE.nodeType === 1);
return false
}
}), target: function (e) {
var i = aw.location && aw.location.hash;
return i && i.slice(1) === e.id
}, root: function (e) {
return e === v
}, focus: function (e) {
return e === I.activeElement && (!I.hasFocus || I.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
}, enabled: function (e) {
return e.disabled === false
}, disabled: function (e) {
return e.disabled === true
}, checked: function (e) {
var i = e.nodeName.toLowerCase();
return (i === "input" && !!e.checked) || (i === "option" && !!e.selected)
}, selected: function (e) {
if (e.parentNode) {
e.parentNode.selectedIndex
}
return e.selected === true
}, empty: function (e) {
for (e = e.firstChild; e; e = e.nextSibling) {
if (e.nodeType < 6) {
return false
}
}
return true
}, parent: function (e) {
return !u.pseudos.empty(e)
}, header: function (e) {
return s.test(e.nodeName)
}, input: function (e) {
return h.test(e.nodeName)
}, button: function (i) {
var e = i.nodeName.toLowerCase();
return e === "input" && i.type === "button" || e === "button"
}, text: function (i) {
var e;
return i.nodeName.toLowerCase() === "input" && i.type === "text" && ((e = i.getAttribute("type")) == null || e.toLowerCase() === "text")
}, first: an(function () {
return [0]
}), last: an(function (e, i) {
return [i - 1]
}), eq: an(function (e, aE, i) {
return [i < 0 ? i + aE : i]
}), even: an(function (e, aF) {
var aE = 0;
for (; aE < aF; aE += 2) {
e.push(aE)
}
return e
}), odd: an(function (e, aF) {
var aE = 1;
for (; aE < aF; aE += 2) {
e.push(aE)
}
return e
}), lt: an(function (e, aG, aF) {
var aE = aF < 0 ? aF + aG : aF;
for (; --aE >= 0;) {
e.push(aE)
}
return e
}), gt: an(function (e, aG, aF) {
var aE = aF < 0 ? aF + aG : aF;
for (; ++aE < aG;) {
e.push(aE)
}
return e
})
}
};
u.pseudos.nth = u.pseudos.eq;
for (E in {radio: true, checkbox: true, file: true, password: true, image: true}) {
u.pseudos[E] = D(E)
}
for (E in {submit: true, reset: true}) {
u.pseudos[E] = g(E)
}
function ab() {
}
ab.prototype = u.filters = u.pseudos;
u.setFilters = new ab();
function o(aG, aL) {
var i, aH, aJ, aK, aI, aE, e, aF = ap[aG + " "];
if (aF) {
return aL ? 0 : aF.slice(0)
}
aI = aG;
aE = [];
e = u.preFilter;
while (aI) {
if (!i || (aH = B.exec(aI))) {
if (aH) {
aI = aI.slice(aH[0].length) || aI
}
aE.push((aJ = []))
}
i = false;
if ((aH = H.exec(aI))) {
i = aH.shift();
aJ.push({value: i, type: aH[0].replace(y, " ")});
aI = aI.slice(i.length)
}
for (aK in u.filter) {
if ((aH = ai[aK].exec(aI)) && (!e[aK] || (aH = e[aK](aH)))) {
i = aH.shift();
aJ.push({value: i, type: aK, matches: aH});
aI = aI.slice(i.length)
}
}
if (!i) {
break
}
}
return aL ? aI.length : aI ? C.error(aG) : ap(aG, aE).slice(0)
}
function p(aG) {
var aF = 0, aE = aG.length, e = "";
for (; aF < aE; aF++) {
e += aG[aF].value
}
return e
}
function x(aG, aE, aF) {
var e = aE.dir, aH = aF && e === "parentNode", i = ak++;
return aE.first ? function (aK, aJ, aI) {
while ((aK = aK[e])) {
if (aK.nodeType === 1 || aH) {
return aG(aK, aJ, aI)
}
}
} : function (aM, aK, aJ) {
var aN, aL, aI = [aA, i];
if (aJ) {
while ((aM = aM[e])) {
if (aM.nodeType === 1 || aH) {
if (aG(aM, aK, aJ)) {
return true
}
}
}
} else {
while ((aM = aM[e])) {
if (aM.nodeType === 1 || aH) {
aL = aM[aq] || (aM[aq] = {});
if ((aN = aL[e]) && aN[0] === aA && aN[1] === i) {
return (aI[2] = aN[2])
} else {
aL[e] = aI;
if ((aI[2] = aG(aM, aK, aJ))) {
return true
}
}
}
}
}
}
}
function aC(e) {
return e.length > 1 ? function (aH, aG, aE) {
var aF = e.length;
while (aF--) {
if (!e[aF](aH, aG, aE)) {
return false
}
}
return true
} : e[0]
}
function F(aE, aH, aG) {
var aF = 0, e = aH.length;
for (; aF < e; aF++) {
C(aE, aH[aF], aG)
}
return aG
}
function ag(e, aE, aF, aG, aJ) {
var aH, aM = [], aI = 0, aK = e.length, aL = aE != null;
for (; aI < aK; aI++) {
if ((aH = e[aI])) {
if (!aF || aF(aH, aG, aJ)) {
aM.push(aH);
if (aL) {
aE.push(aI)
}
}
}
}
return aM
}
function n(aE, i, aG, aF, aH, e) {
if (aF && !aF[aq]) {
aF = n(aF)
}
if (aH && !aH[aq]) {
aH = n(aH, e)
}
return q(function (aS, aP, aK, aR) {
var aU, aQ, aM, aL = [], aT = [], aJ = aP.length, aI = aS || F(i || "*", aK.nodeType ? [aK] : aK, []),
aN = aE && (aS || !i) ? ag(aI, aL, aE, aK, aR) : aI,
aO = aG ? aH || (aS ? aE : aJ || aF) ? [] : aP : aN;
if (aG) {
aG(aN, aO, aK, aR)
}
if (aF) {
aU = ag(aO, aT);
aF(aU, [], aK, aR);
aQ = aU.length;
while (aQ--) {
if ((aM = aU[aQ])) {
aO[aT[aQ]] = !(aN[aT[aQ]] = aM)
}
}
}
if (aS) {
if (aH || aE) {
if (aH) {
aU = [];
aQ = aO.length;
while (aQ--) {
if ((aM = aO[aQ])) {
aU.push((aN[aQ] = aM))
}
}
aH(null, (aO = []), aU, aR)
}
aQ = aO.length;
while (aQ--) {
if ((aM = aO[aQ]) && (aU = aH ? k.call(aS, aM) : aL[aQ]) > -1) {
aS[aU] = !(aP[aU] = aM)
}
}
}
} else {
aO = ag(aO === aP ? aO.splice(aJ, aO.length) : aO);
if (aH) {
aH(null, aP, aO, aR)
} else {
b.apply(aP, aO)
}
}
})
}
function ar(aJ) {
var aE, aH, aF, aI = aJ.length, aM = u.relative[aJ[0].type], aN = aM || u.relative[" "], aG = aM ? 1 : 0,
aK = x(function (i) {
return i === aE
}, aN, true), aL = x(function (i) {
return k.call(aE, i) > -1
}, aN, true), e = [function (aP, aO, i) {
return (!aM && (i || aO !== aD)) || ((aE = aO).nodeType ? aK(aP, aO, i) : aL(aP, aO, i))
}];
for (; aG < aI; aG++) {
if ((aH = u.relative[aJ[aG].type])) {
e = [x(aC(e), aH)]
} else {
aH = u.filter[aJ[aG].type].apply(null, aJ[aG].matches);
if (aH[aq]) {
aF = ++aG;
for (; aF < aI; aF++) {
if (u.relative[aJ[aF].type]) {
break
}
}
return n(aG > 1 && aC(e), aG > 1 && p(aJ.slice(0, aG - 1).concat({value: aJ[aG - 2].type === " " ? "*" : ""})).replace(y, "$1"), aH, aG < aF && ar(aJ.slice(aG, aF)), aF < aI && ar((aJ = aJ.slice(aF))), aF < aI && p(aJ))
}
e.push(aH)
}
}
return aC(e)
}
function ae(aF, aE) {
var e = aE.length > 0, aG = aF.length > 0, i = function (aQ, aK, aP, aO, aT) {
var aL, aM, aR, aV = 0, aN = "0", aH = aQ && [], aW = [], aU = aD, aJ = aQ || aG && u.find.TAG("*", aT),
aI = (aA += aU == null ? 1 : Math.random() || 0.1), aS = aJ.length;
if (aT) {
aD = aK !== I && aK
}
for (; aN !== aS && (aL = aJ[aN]) != null; aN++) {
if (aG && aL) {
aM = 0;
while ((aR = aF[aM++])) {
if (aR(aL, aK, aP)) {
aO.push(aL);
break
}
}
if (aT) {
aA = aI
}
}
if (e) {
if ((aL = !aR && aL)) {
aV--
}
if (aQ) {
aH.push(aL)
}
}
}
aV += aN;
if (e && aN !== aV) {
aM = 0;
while ((aR = aE[aM++])) {
aR(aH, aW, aK, aP)
}
if (aQ) {
if (aV > 0) {
while (aN--) {
if (!(aH[aN] || aW[aN])) {
aW[aN] = au.call(aO)
}
}
}
aW = ag(aW)
}
b.apply(aO, aW);
if (aT && !aQ && aW.length > 0 && (aV + aE.length) > 1) {
C.uniqueSort(aO)
}
}
if (aT) {
aA = aI;
aD = aU
}
return aH
};
return e ? q(i) : i
}
ac = C.compile = function (e, aF) {
var aG, aE = [], aI = [], aH = M[e + " "];
if (!aH) {
if (!aF) {
aF = o(e)
}
aG = aF.length;
while (aG--) {
aH = ar(aF[aG]);
if (aH[aq]) {
aE.push(aH)
} else {
aI.push(aH)
}
}
aH = M(e, ae(aI, aE));
aH.selector = e
}
return aH
};
ay = C.select = function (aF, e, aG, aJ) {
var aH, aM, aE, aN, aK, aL = typeof aF === "function" && aF, aI = !aJ && o((aF = aL.selector || aF));
aG = aG || [];
if (aI.length === 1) {
aM = aI[0] = aI[0].slice(0);
if (aM.length > 2 && (aE = aM[0]).type === "ID" && az.getById && e.nodeType === 9 && ao && u.relative[aM[1].type]) {
e = (u.find.ID(aE.matches[0].replace(z, al), e) || [])[0];
if (!e) {
return aG
} else {
if (aL) {
e = e.parentNode
}
}
aF = aF.slice(aM.shift().value.length)
}
aH = ai.needsContext.test(aF) ? 0 : aM.length;
while (aH--) {
aE = aM[aH];
if (u.relative[(aN = aE.type)]) {
break
}
if ((aK = u.find[aN])) {
if ((aJ = aK(aE.matches[0].replace(z, al), ah.test(aM[0].type) && Z(e.parentNode) || e))) {
aM.splice(aH, 1);
aF = aJ.length && p(aM);
if (!aF) {
b.apply(aG, aJ);
return aG
}
break
}
}
}
}
(aL || ac(aF, aI))(aJ, e, !ao, aG, ah.test(aF) && Z(e.parentNode) || e);
return aG
};
az.sortStable = aq.split("").sort(K).join("") === aq;
az.detectDuplicates = !!ad;
af();
az.sortDetached = m(function (e) {
return e.compareDocumentPosition(I.createElement("div")) & 1
});
if (!m(function (e) {
e.innerHTML = "<a href='#'></a>";
return e.firstChild.getAttribute("href") === "#"
})) {
aB("type|href|height|width", function (i, e, aE) {
if (!aE) {
return i.getAttribute(e, e.toLowerCase() === "type" ? 1 : 2)
}
})
}
if (!az.attributes || !m(function (e) {
e.innerHTML = "<input/>";
e.firstChild.setAttribute("value", "");
return e.firstChild.getAttribute("value") === ""
})) {
aB("value", function (i, e, aE) {
if (!aE && i.nodeName.toLowerCase() === "input") {
return i.defaultValue
}
})
}
if (!m(function (e) {
return e.getAttribute("disabled") == null
})) {
aB(c, function (i, e, aF) {
var aE;
if (!aF) {
return i[e] === true ? e.toLowerCase() : (aE = i.getAttributeNode(e)) && aE.specified ? aE.value : null
}
})
}
if (typeof define === "function" && define.amd) {
define(function () {
return C
})
} else {
if (typeof module !== "undefined" && module.exports) {
module.exports = C
} else {
aw.Sizzle = C
}
}
})(window);
(function () {
if (typeof Sizzle !== "undefined") {
return
}
if (typeof define !== "undefined" && define.amd) {
window.Sizzle = Prototype._actual_sizzle;
window.define = Prototype._original_define;
delete Prototype._actual_sizzle;
delete Prototype._original_define
} else {
if (typeof module !== "undefined" && module.exports) {
window.Sizzle = module.exports;
module.exports = {}
}
}
})();
(function (c) {
var d = Prototype.Selector.extendElements;
function a(e, f) {
return d(c(e, f || document))
}
function b(f, e) {
return c.matches(e, [f]).length == 1
}
Prototype.Selector.engine = c;
Prototype.Selector.select = a;
Prototype.Selector.match = b
})(Sizzle);
window.Sizzle = Prototype._original_property;
delete Prototype._original_property;
var Form = {
reset: function (a) {
a = $(a);
a.reset();
return a
}, serializeElements: function (h, d) {
if (typeof d != "object") {
d = {hash: !!d}
} else {
if (Object.isUndefined(d.hash)) {
d.hash = true
}
}
var e, g, a = false, f = d.submit, b, c;
if (d.hash) {
c = {};
b = function (i, k, l) {
if (k in i) {
if (!Object.isArray(i[k])) {
i[k] = [i[k]]
}
i[k] = i[k].concat(l)
} else {
i[k] = l
}
return i
}
} else {
c = "";
b = function (i, l, k) {
if (!Object.isArray(k)) {
k = [k]
}
if (!k.length) {
return i
}
var m = encodeURIComponent(l).gsub(/%20/, "+");
return i + (i ? "&" : "") + k.map(function (n) {
n = n.gsub(/(\r)?\n/, "\r\n");
n = encodeURIComponent(n);
n = n.gsub(/%20/, "+");
return m + "=" + n
}).join("&")
}
}
return h.inject(c, function (i, k) {
if (!k.disabled && k.name) {
e = k.name;
g = $(k).getValue();
if (g != null && k.type != "file" && (k.type != "submit" || (!a && f !== false && (!f || e == f) && (a = true)))) {
i = b(i, e, g)
}
}
return i
})
}
};
Form.Methods = {
serialize: function (b, a) {
return Form.serializeElements(Form.getElements(b), a)
}, getElements: function (e) {
var f = $(e).getElementsByTagName("*");
var d, c = [], b = Form.Element.Serializers;
for (var a = 0; d = f[a]; a++) {
if (b[d.tagName.toLowerCase()]) {
c.push(Element.extend(d))
}
}
return c
}, getInputs: function (g, c, d) {
g = $(g);
var a = g.getElementsByTagName("input");
if (!c && !d) {
return $A(a).map(Element.extend)
}
for (var e = 0, h = [], f = a.length; e < f; e++) {
var b = a[e];
if ((c && b.type != c) || (d && b.name != d)) {
continue
}
h.push(Element.extend(b))
}
return h
}, disable: function (a) {
a = $(a);
Form.getElements(a).invoke("disable");
return a
}, enable: function (a) {
a = $(a);
Form.getElements(a).invoke("enable");
return a
}, findFirstElement: function (b) {
var c = $(b).getElements().findAll(function (d) {
return "hidden" != d.type && !d.disabled
});
var a = c.findAll(function (d) {
return d.hasAttribute("tabIndex") && d.tabIndex >= 0
}).sortBy(function (d) {
return d.tabIndex
}).first();
return a ? a : c.find(function (d) {
return /^(?:input|select|textarea)$/i.test(d.tagName)
})
}, focusFirstElement: function (b) {
b = $(b);
var a = b.findFirstElement();
if (a) {
a.activate()
}
return b
}, request: function (b, a) {
b = $(b), a = Object.clone(a || {});
var d = a.parameters, c = b.readAttribute("action") || "";
if (c.blank()) {
c = window.location.href
}
a.parameters = b.serialize(true);
if (d) {
if (Object.isString(d)) {
d = d.toQueryParams()
}
Object.extend(a.parameters, d)
}
if (b.hasAttribute("method") && !a.method) {
a.method = b.method
}
return new Ajax.Request(c, a)
}
};
Form.Element = {
focus: function (a) {
$(a).focus();
return a
}, select: function (a) {
$(a).select();
return a
}
};
Form.Element.Methods = {
serialize: function (a) {
a = $(a);
if (!a.disabled && a.name) {
var b = a.getValue();
if (b != undefined) {
var c = {};
c[a.name] = b;
return Object.toQueryString(c)
}
}
return ""
}, getValue: function (a) {
a = $(a);
var b = a.tagName.toLowerCase();
return Form.Element.Serializers[b](a)
}, setValue: function (a, b) {
a = $(a);
var c = a.tagName.toLowerCase();
Form.Element.Serializers[c](a, b);
return a
}, clear: function (a) {
$(a).value = "";
return a
}, present: function (a) {
return $(a).value != ""
}, activate: function (a) {
a = $(a);
try {
a.focus();
if (a.select && (a.tagName.toLowerCase() != "input" || !(/^(?:button|reset|submit)$/i.test(a.type)))) {
a.select()
}
} catch (b) {
}
return a
}, disable: function (a) {
a = $(a);
a.disabled = true;
return a
}, enable: function (a) {
a = $(a);
a.disabled = false;
return a
}
};
var Field = Form.Element;
var $F = Form.Element.Methods.getValue;
Form.Element.Serializers = (function () {
function b(h, i) {
switch (h.type.toLowerCase()) {
case"checkbox":
case"radio":
return f(h, i);
default:
return e(h, i)
}
}
function f(h, i) {
if (Object.isUndefined(i)) {
return h.checked ? h.value : null
} else {
h.checked = !!i
}
}
function e(h, i) {
if (Object.isUndefined(i)) {
return h.value
} else {
h.value = i
}
}
function a(l, o) {
if (Object.isUndefined(o)) {
return (l.type === "select-one" ? c : d)(l)
}
var k, m, p = !Object.isArray(o);
for (var h = 0, n = l.length; h < n; h++) {
k = l.options[h];
m = this.optionValue(k);
if (p) {
if (m == o) {
k.selected = true;
return
}
} else {
k.selected = o.include(m)
}
}
}
function c(i) {
var h = i.selectedIndex;
return h >= 0 ? g(i.options[h]) : null
}
function d(m) {
var h, n = m.length;
if (!n) {
return null
}
for (var l = 0, h = []; l < n; l++) {
var k = m.options[l];
if (k.selected) {
h.push(g(k))
}
}
return h
}
function g(h) {
return Element.hasAttribute(h, "value") ? h.value : h.text
}
return {input: b, inputSelector: f, textarea: e, select: a, selectOne: c, selectMany: d, optionValue: g, button: e}
})();
Abstract.TimedObserver = Class.create(PeriodicalExecuter, {
initialize: function ($super, a, b, c) {
$super(c, b);
this.element = $(a);
this.lastValue = this.getValue()
}, execute: function () {
var a = this.getValue();
if (Object.isString(this.lastValue) && Object.isString(a) ? this.lastValue != a : String(this.lastValue) != String(a)) {
this.callback(this.element, a);
this.lastValue = a
}
}
});
Form.Element.Observer = Class.create(Abstract.TimedObserver, {
getValue: function () {
return Form.Element.getValue(this.element)
}
});
Form.Observer = Class.create(Abstract.TimedObserver, {
getValue: function () {
return Form.serialize(this.element)
}
});
Abstract.EventObserver = Class.create({
initialize: function (a, b) {
this.element = $(a);
this.callback = b;
this.lastValue = this.getValue();
if (this.element.tagName.toLowerCase() == "form") {
this.registerFormCallbacks()
} else {
this.registerCallback(this.element)
}
}, onElementEvent: function () {
var a = this.getValue();
if (this.lastValue != a) {
this.callback(this.element, a);
this.lastValue = a
}
}, registerFormCallbacks: function () {
Form.getElements(this.element).each(this.registerCallback, this)
}, registerCallback: function (a) {
if (a.type) {
switch (a.type.toLowerCase()) {
case"checkbox":
case"radio":
Event.observe(a, "click", this.onElementEvent.bind(this));
break;
default:
Event.observe(a, "change", this.onElementEvent.bind(this));
break
}
}
}
});
Form.Element.EventObserver = Class.create(Abstract.EventObserver, {
getValue: function () {
return Form.Element.getValue(this.element)
}
});
Form.EventObserver = Class.create(Abstract.EventObserver, {
getValue: function () {
return Form.serialize(this.element)
}
});
(function (E) {
var v = document.createElement("div");
var d = document.documentElement;
var l = "onmouseenter" in d && "onmouseleave" in d;
var M = {
KEY_BACKSPACE: 8,
KEY_TAB: 9,
KEY_RETURN: 13,
KEY_ESC: 27,
KEY_LEFT: 37,
KEY_UP: 38,
KEY_RIGHT: 39,
KEY_DOWN: 40,
KEY_DELETE: 46,
KEY_HOME: 36,
KEY_END: 35,
KEY_PAGEUP: 33,
KEY_PAGEDOWN: 34,
KEY_INSERT: 45
};
var B = function (Y) {
return false
};
if (window.attachEvent) {
if (window.addEventListener) {
B = function (Y) {
return !(Y instanceof window.Event)
}
} else {
B = function (Y) {
return true
}
}
}
var P;
function N(Z, Y) {
return Z.which ? (Z.which === Y + 1) : (Z.button === Y)
}
var X = {0: 1, 1: 4, 2: 2};
function T(Z, Y) {
return Z.button === X[Y]
}
function Q(Z, Y) {
switch (Y) {
case 0:
return Z.which == 1 && !Z.metaKey;
case 1:
return Z.which == 2 || (Z.which == 1 && Z.metaKey);
case 2:
return Z.which == 3;
default:
return false
}
}
if (window.attachEvent) {
if (!window.addEventListener) {
P = T
} else {
P = function (Z, Y) {
return B(Z) ? T(Z, Y) : N(Z, Y)
}
}
} else {
if (Prototype.Browser.WebKit) {
P = Q
} else {
P = N
}
}
function C(Y) {
return P(Y, 0)
}
function i(Y) {
return P(Y, 1)
}
function e(Y) {
return P(Y, 2)
}
function p(Y) {
return Element.extend(L(Y))
}
function L(aa) {
aa = M.extend(aa);
var Z = aa.target, Y = aa.type, ab = aa.currentTarget;
if (ab && ab.tagName) {
if (Y === "load" || Y === "error" || (Y === "click" && ab.tagName.toLowerCase() === "input" && ab.type === "radio")) {
Z = ab
}
}
return Z.nodeType == Node.TEXT_NODE ? Z.parentNode : Z
}
function k(aa, ab) {
var Z = L(aa), Y = Prototype.Selector;
if (!ab) {
return Element.extend(Z)
}
while (Z) {
if (Object.isElement(Z) && Y.match(Z, ab)) {
return Element.extend(Z)
}
Z = Z.parentNode
}
}
function u(Y) {
return {x: V(Y), y: U(Y)}
}
function V(aa) {
var Z = document.documentElement, Y = document.body || {scrollLeft: 0};
return aa.pageX || (aa.clientX + (Z.scrollLeft || Y.scrollLeft) - (Z.clientLeft || 0))
}
function U(aa) {
var Z = document.documentElement, Y = document.body || {scrollTop: 0};
return aa.pageY || (aa.clientY + (Z.scrollTop || Y.scrollTop) - (Z.clientTop || 0))
}
function s(Y) {
M.extend(Y);
Y.preventDefault();
Y.stopPropagation();
Y.stopped = true
}
M.Methods = {
isLeftClick: C,
isMiddleClick: i,
isRightClick: e,
element: p,
findElement: k,
pointer: u,
pointerX: V,
pointerY: U,
stop: s
};
var I = Object.keys(M.Methods).inject({}, function (Y, Z) {
Y[Z] = M.Methods[Z].methodize();
return Y
});
if (window.attachEvent) {
function W(Z) {
var Y;
switch (Z.type) {
case"mouseover":
case"mouseenter":
Y = Z.fromElement;
break;
case"mouseout":
case"mouseleave":
Y = Z.toElement;
break;
default:
return null
}
return Element.extend(Y)
}
var R = {
stopPropagation: function () {
this.cancelBubble = true
}, preventDefault: function () {
this.returnValue = false
}, inspect: function () {
return "[object Event]"
}
};
M.extend = function (Z, Y) {
if (!Z) {
return false
}
if (!B(Z)) {
return Z
}
if (Z._extendedByPrototype) {
return Z
}
Z._extendedByPrototype = Prototype.emptyFunction;
var aa = M.pointer(Z);
Object.extend(Z, {target: Z.srcElement || Y, relatedTarget: W(Z), pageX: aa.x, pageY: aa.y});
Object.extend(Z, I);
Object.extend(Z, R);
return Z
}
} else {
M.extend = Prototype.K
}
if (window.addEventListener) {
M.prototype = window.Event.prototype || document.createEvent("HTMLEvents").__proto__;
Object.extend(M.prototype, I)
}
var w = {mouseenter: "mouseover", mouseleave: "mouseout"};
function f(Y) {
return w[Y] || Y
}
if (l) {
f = Prototype.K
}
function S(Y) {
if (Y === window) {
return 0
}
if (typeof Y._prototypeUID === "undefined") {
Y._prototypeUID = Element.Storage.UID++
}
return Y._prototypeUID
}
function J(Y) {
if (Y === window) {
return 0
}
if (Y == document) {
return 1
}
return Y.uniqueID
}
if ("uniqueID" in v) {
S = J
}
function y(Y) {
return Y.include(":")
}
M._isCustomEvent = y;
function A(aa, Z) {
var Y = E.Event.cache;
if (Object.isUndefined(Z)) {
Z = S(aa)
}
if (!Y[Z]) {
Y[Z] = {element: aa}
}
return Y[Z]
}
function F(Z, Y) {
if (Object.isUndefined(Y)) {
Y = S(Z)
}
delete E.Event.cache[Y]
}
function h(aa, ad, ag) {
var Y = A(aa);
if (!Y[ad]) {
Y[ad] = []
}
var ac = Y[ad];
var ab = ac.length;
while (ab--) {
if (ac[ab].handler === ag) {
return null
}
}
var ae = S(aa);
var Z = E.Event._createResponder(ae, ad, ag);
var af = {responder: Z, handler: ag};
ac.push(af);
return af
}
function t(ad, aa, ae) {
var Z = A(ad);
var Y = Z[aa] || [];
var ac = Y.length, af;
while (ac--) {
if (Y[ac].handler === ae) {
af = Y[ac];
break
}
}
if (af) {
var ab = Y.indexOf(af);
Y.splice(ab, 1)
}
if (Y.length === 0) {
delete Z[aa];
if (Object.keys(Z).length === 1 && ("element" in Z)) {
F(ad)
}
}
return af
}
function c(aa, Z, ab) {
aa = $(aa);
var ac = h(aa, Z, ab);
if (ac === null) {
return aa
}
var Y = ac.responder;
if (y(Z)) {
q(aa, Z, Y)
} else {
n(aa, Z, Y)
}
return aa
}
function n(ab, aa, Z) {
var Y = f(aa);
if (ab.addEventListener) {
ab.addEventListener(Y, Z, false)
} else {
ab.attachEvent("on" + Y, Z)
}
}
function q(aa, Z, Y) {
if (aa.addEventListener) {
aa.addEventListener("dataavailable", Y, false)
} else {
aa.attachEvent("ondataavailable", Y);
aa.attachEvent("onlosecapture", Y)
}
}
function K(Z, Y, aa) {
Z = $(Z);
var ac = !Object.isUndefined(aa), ad = !Object.isUndefined(Y);
if (!ad && !ac) {
z(Z);
return Z
}
if (!ac) {
H(Z, Y);
return Z
}
var ab = t(Z, Y, aa);
if (!ab) {
return Z
}
a(Z, Y, ab.responder);
return Z
}
function D(ab, aa, Z) {
var Y = f(aa);
if (ab.removeEventListener) {
ab.removeEventListener(Y, Z, false)
} else {
ab.detachEvent("on" + Y, Z)
}
}
function b(aa, Z, Y) {
if (aa.removeEventListener) {
aa.removeEventListener("dataavailable", Y, false)
} else {
aa.detachEvent("ondataavailable", Y);
aa.detachEvent("onlosecapture", Y)
}
}
function z(ad) {
var ac = S(ad), aa = E.Event.cache[ac];
if (!aa) {
return
}
F(ad, ac);
var Y, ab;
for (var Z in aa) {
if (Z === "element") {
continue
}
Y = aa[Z];
ab = Y.length;
while (ab--) {
a(ad, Z, Y[ab].responder)
}
}
}
function H(ad, aa) {
var Z = A(ad);
var Y = Z[aa];
if (Y) {
delete Z[aa]
}
Y = Y || [];
var ac = Y.length;
while (ac--) {
a(ad, aa, Y[ac].responder)
}
for (var ab in Z) {
if (ab === "element") {
continue
}
return
}
F(ad)
}
function a(Z, Y, aa) {
if (y(Y)) {
b(Z, Y, aa)
} else {
D(Z, Y, aa)
}
}
function g(Y) {
if (Y !== document) {
return Y
}
if (document.createEvent && !Y.dispatchEvent) {
return document.documentElement
}
return Y
}
function x(ab, aa, Z, Y) {
ab = g($(ab));
if (Object.isUndefined(Y)) {
Y = true
}
Z = Z || {};
var ac = O(ab, aa, Z, Y);
return M.extend(ac)
}
function m(ab, aa, Z, Y) {
var ac = document.createEvent("HTMLEvents");
ac.initEvent("dataavailable", Y, true);
ac.eventName = aa;
ac.memo = Z;
ab.dispatchEvent(ac);
return ac
}
function o(ab, aa, Z, Y) {
var ac = document.createEventObject();
ac.eventType = Y ? "ondataavailable" : "onlosecapture";
ac.eventName = aa;
ac.memo = Z;
ab.fireEvent(ac.eventType, ac);
return ac
}
var O = document.createEvent ? m : o;
M.Handler = Class.create({
initialize: function (aa, Z, Y, ab) {
this.element = $(aa);
this.eventName = Z;
this.selector = Y;
this.callback = ab;
this.handler = this.handleEvent.bind(this)
}, start: function () {
M.observe(this.element, this.eventName, this.handler);
return this
}, stop: function () {
M.stopObserving(this.element, this.eventName, this.handler);
return this
}, handleEvent: function (Z) {
var Y = M.findElement(Z, this.selector);
if (Y) {
this.callback.call(this.element, Z, Y)
}
}
});
function G(aa, Z, Y, ab) {
aa = $(aa);
if (Object.isFunction(Y) && Object.isUndefined(ab)) {
ab = Y, Y = null
}
return new M.Handler(aa, Z, Y, ab).start()
}
Object.extend(M, M.Methods);
Object.extend(M, {fire: x, observe: c, stopObserving: K, on: G});
Element.addMethods({fire: x, observe: c, stopObserving: K, on: G});
Object.extend(document, {
fire: x.methodize(),
observe: c.methodize(),
stopObserving: K.methodize(),
on: G.methodize(),
loaded: false
});
if (E.Event) {
Object.extend(window.Event, M)
} else {
E.Event = M
}
E.Event.cache = {};
function r() {
E.Event.cache = null
}
if (window.attachEvent) {
window.attachEvent("onunload", r)
}
v = null;
d = null
})(this);
(function (c) {
var g = document.documentElement;
var b = "onmouseenter" in g && "onmouseleave" in g;
function f(h) {
return !b && (h === "mouseenter" || h === "mouseleave")
}
function d(i, h, k) {
if (Event._isCustomEvent(h)) {
return e(i, h, k)
}
if (f(h)) {
return a(i, h, k)
}
return function (m) {
if (!Event.cache) {
return
}
var l = Event.cache[i].element;
Event.extend(m, l);
k.call(l, m)
}
}
function e(i, h, k) {
return function (n) {
var l = Event.cache[i];
var m = l && l.element;
if (Object.isUndefined(n.eventName)) {
return false
}
if (n.eventName !== h) {
return false
}
Event.extend(n, m);
k.call(m, n)
}
}
function a(i, h, k) {
return function (n) {
var l = Event.cache[i].element;
Event.extend(n, l);
var m = n.relatedTarget;
while (m && m !== l) {
try {
m = m.parentNode
} catch (o) {
m = l
}
}
if (m === l) {
return
}
k.call(l, n)
}
}
c.Event._createResponder = d;
g = null
})(this);
(function (a) {
var e;
function b() {
if (document.loaded) {
return
}
if (e) {
window.clearTimeout(e)
}
document.loaded = true;
document.fire("dom:loaded")
}
function d() {
if (document.readyState === "complete") {
document.detachEvent("onreadystatechange", d);
b()
}
}
function c() {
try {
document.documentElement.doScroll("left")
} catch (f) {
e = c.defer();
return
}
b()
}
if (document.readyState === "complete") {
b();
return
}
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", b, false)
} else {
document.attachEvent("onreadystatechange", d);
if (window == top) {
e = c.defer()
}
}
Event.observe(window, "load", b)
})(this);
Element.addMethods();
Hash.toQueryString = Object.toQueryString;
var Toggle = {display: Element.toggle};
Element.addMethods({childOf: Element.Methods.descendantOf});
var Insertion = {
Before: function (a, b) {
return Element.insert(a, {before: b})
}, Top: function (a, b) {
return Element.insert(a, {top: b})
}, Bottom: function (a, b) {
return Element.insert(a, {bottom: b})
}, After: function (a, b) {
return Element.insert(a, {after: b})
}
};
var $continue = new Error('"throw $continue" is deprecated, use "return" instead');
var Position = {
includeScrollOffsets: false,
prepare: function () {
this.deltaX = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;
this.deltaY = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0
},
within: function (b, a, c) {
if (this.includeScrollOffsets) {
return this.withinIncludingScrolloffsets(b, a, c)
}
this.xcomp = a;
this.ycomp = c;
this.offset = Element.cumulativeOffset(b);
return (c >= this.offset[1] && c < this.offset[1] + b.offsetHeight && a >= this.offset[0] && a < this.offset[0] + b.offsetWidth)
},
withinIncludingScrolloffsets: function (b, a, d) {
var c = Element.cumulativeScrollOffset(b);
this.xcomp = a + c[0] - this.deltaX;
this.ycomp = d + c[1] - this.deltaY;
this.offset = Element.cumulativeOffset(b);
return (this.ycomp >= this.offset[1] && this.ycomp < this.offset[1] + b.offsetHeight && this.xcomp >= this.offset[0] && this.xcomp < this.offset[0] + b.offsetWidth)
},
overlap: function (b, a) {
if (!b) {
return 0
}
if (b == "vertical") {
return ((this.offset[1] + a.offsetHeight) - this.ycomp) / a.offsetHeight
}
if (b == "horizontal") {
return ((this.offset[0] + a.offsetWidth) - this.xcomp) / a.offsetWidth
}
},
cumulativeOffset: Element.Methods.cumulativeOffset,
positionedOffset: Element.Methods.positionedOffset,
absolutize: function (a) {
Position.prepare();
return Element.absolutize(a)
},
relativize: function (a) {
Position.prepare();
return Element.relativize(a)
},
realOffset: Element.Methods.cumulativeScrollOffset,
offsetParent: Element.Methods.getOffsetParent,
page: Element.Methods.viewportOffset,
clone: function (b, c, a) {
a = a || {};
return Element.clonePosition(c, b, a)
}
};
if (!document.getElementsByClassName) {
document.getElementsByClassName = function (b) {
function a(c) {
return c.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + c + " ')]"
}
b.getElementsByClassName = Prototype.BrowserFeatures.XPath ? function (c, e) {
e = e.toString().strip();
var d = /\s/.test(e) ? $w(e).map(a).join("") : a(e);
return d ? document._getElementsByXPath(".//*" + d, c) : []
} : function (e, f) {
f = f.toString().strip();
var g = [], h = (/\s/.test(f) ? $w(f) : null);
if (!h && !f) {
return g
}
var c = $(e).getElementsByTagName("*");
f = " " + f + " ";
for (var d = 0, l, k; l = c[d]; d++) {
if (l.className && (k = " " + l.className + " ") && (k.include(f) || (h && h.all(function (i) {
return !i.toString().blank() && k.include(" " + i + " ")
})))) {
g.push(Element.extend(l))
}
}
return g
};
return function (d, c) {
return $(c || document.body).getElementsByClassName(d)
}
}(Element.Methods)
}
Element.ClassNames = Class.create();
Element.ClassNames.prototype = {
initialize: function (a) {
this.element = $(a)
}, _each: function (b, a) {
this.element.className.split(/\s+/).select(function (c) {
return c.length > 0
})._each(b, a)
}, set: function (a) {
this.element.className = a
}, add: function (a) {
if (this.include(a)) {
return
}
this.set($A(this).concat(a).join(" "))
}, remove: function (a) {
if (!this.include(a)) {
return
}
this.set($A(this).without(a).join(" "))
}, toString: function () {
return $A(this).join(" ")
}
};
Object.extend(Element.ClassNames.prototype, Enumerable);
(function () {
window.Selector = Class.create({
initialize: function (a) {
this.expression = a.strip()
}, findElements: function (a) {
return Prototype.Selector.select(this.expression, a)
}, match: function (a) {
return Prototype.Selector.match(a, this.expression)
}, toString: function () {
return this.expression
}, inspect: function () {
return "#<Selector: " + this.expression + ">"
}
});
Object.extend(Selector, {
matchElements: function (f, g) {
var a = Prototype.Selector.match, d = [];
for (var c = 0, e = f.length; c < e; c++) {
var b = f[c];
if (a(b, g)) {
d.push(Element.extend(b))
}
}
return d
}, findElement: function (f, g, b) {
b = b || 0;
var a = 0, d;
for (var c = 0, e = f.length; c < e; c++) {
d = f[c];
if (Prototype.Selector.match(d, g) && b === a++) {
return Element.extend(d)
}
}
}, findChildElements: function (b, c) {
var a = c.toArray().join(", ");
return Prototype.Selector.select(a, b || document)
}
})
})();
var Window = Class.create();
Window.keepMultiModalWindow = false;
Window.hasEffectLib = (typeof Effect != "undefined");
Window.resizeEffectDuration = 0.4;
Window.prototype = {
initialize: function () {
var c;
var b = 0;
if (arguments.length > 0) {
if (typeof arguments[0] == "string") {
c = arguments[0];
b = 1
} else {
c = arguments[0] ? arguments[0].id : null
}
}
if (!c) {
c = "window_" + new Date().getTime()
}
if ($(c)) {
alert("Window " + c + " is already registered in the DOM! Make sure you use setDestroyOnClose() or destroyOnClose: true in the constructor")
}
this.options = Object.extend({
className: "dialog",
blurClassName: null,
minWidth: 100,
minHeight: 20,
resizable: true,
closable: true,
minimizable: true,
maximizable: true,
draggable: true,
userData: null,
showEffect: (Window.hasEffectLib ? Effect.Appear : Element.show),
hideEffect: (Window.hasEffectLib ? Effect.Fade : Element.hide),
showEffectOptions: {},
hideEffectOptions: {},
effectOptions: null,
parent: document.body,
title: "&nbsp;",
url: null,
onload: Prototype.emptyFunction,
width: 200,
height: 300,
opacity: 1,
recenterAuto: true,
wiredDrag: false,
closeCallback: null,
destroyOnClose: false,
gridX: 1,
gridY: 1
}, arguments[b] || {});
if (this.options.blurClassName) {
this.options.focusClassName = this.options.className
}
if (typeof this.options.top == "undefined" && typeof this.options.bottom == "undefined") {
this.options.top = this._round(Math.random() * 500, this.options.gridY)
}
if (typeof this.options.left == "undefined" && typeof this.options.right == "undefined") {
this.options.left = this._round(Math.random() * 500, this.options.gridX)
}
if (this.options.effectOptions) {
Object.extend(this.options.hideEffectOptions, this.options.effectOptions);
Object.extend(this.options.showEffectOptions, this.options.effectOptions);
if (this.options.showEffect == Element.Appear) {
this.options.showEffectOptions.to = this.options.opacity
}
}
if (Window.hasEffectLib) {
if (this.options.showEffect == Effect.Appear) {
this.options.showEffectOptions.to = this.options.opacity
}
if (this.options.hideEffect == Effect.Fade) {
this.options.hideEffectOptions.from = this.options.opacity
}
}
if (this.options.hideEffect == Element.hide) {
this.options.hideEffect = function () {
Element.hide(this.element);
if (this.options.destroyOnClose) {
this.destroy()
}
}.bind(this)
}
if (this.options.parent != document.body) {
this.options.parent = $(this.options.parent)
}
this.element = this._createWindow(c);
this.element.win = this;
this.eventMouseDown = this._initDrag.bindAsEventListener(this);
this.eventMouseUp = this._endDrag.bindAsEventListener(this);
this.eventMouseMove = this._updateDrag.bindAsEventListener(this);
this.eventOnLoad = this._getWindowBorderSize.bindAsEventListener(this);
this.eventMouseDownContent = this.toFront.bindAsEventListener(this);
this.eventResize = this._recenter.bindAsEventListener(this);
this.topbar = $(this.element.id + "_top");
this.bottombar = $(this.element.id + "_bottom");
this.content = $(this.element.id + "_content");
Event.observe(this.topbar, "mousedown", this.eventMouseDown);
Event.observe(this.bottombar, "mousedown", this.eventMouseDown);
Event.observe(this.content, "mousedown", this.eventMouseDownContent);
Event.observe(window, "load", this.eventOnLoad);
Event.observe(window, "resize", this.eventResize);
Event.observe(window, "scroll", this.eventResize);
Event.observe(this.options.parent, "scroll", this.eventResize);
if (this.options.draggable) {
var a = this;
[this.topbar, this.topbar.up().previous(), this.topbar.up().next()].each(function (d) {
d.observe("mousedown", a.eventMouseDown);
d.addClassName("top_draggable")
});
[this.bottombar.up(), this.bottombar.up().previous(), this.bottombar.up().next()].each(function (d) {
d.observe("mousedown", a.eventMouseDown);
d.addClassName("bottom_draggable")
})
}
if (this.options.resizable) {
this.sizer = $(this.element.id + "_sizer");
Event.observe(this.sizer, "mousedown", this.eventMouseDown)
}
this.useLeft = null;
this.useTop = null;
if (typeof this.options.left != "undefined") {
this.element.setStyle({left: parseFloat(this.options.left) + "px"});
this.useLeft = true
} else {
this.element.setStyle({right: parseFloat(this.options.right) + "px"});
this.useLeft = false
}
if (typeof this.options.top != "undefined") {
this.element.setStyle({top: parseFloat(this.options.top) + "px"});
this.useTop = true
} else {
this.element.setStyle({bottom: parseFloat(this.options.bottom) + "px"});
this.useTop = false
}
this.storedLocation = null;
this.setOpacity(this.options.opacity);
if (this.options.zIndex) {
this.setZIndex(this.options.zIndex)
}
if (this.options.destroyOnClose) {
this.setDestroyOnClose(true)
}
this._getWindowBorderSize();
this.width = this.options.width;
this.height = this.options.height;
this.visible = false;
this.constraint = false;
this.constraintPad = {top: 0, left: 0, bottom: 0, right: 0};
if (this.width && this.height) {
this.setSize(this.options.width, this.options.height)
}
this.setTitle(this.options.title);
Windows.register(this)
}, destroy: function () {
this._notify("onDestroy");
Event.stopObserving(this.topbar, "mousedown", this.eventMouseDown);
Event.stopObserving(this.bottombar, "mousedown", this.eventMouseDown);
Event.stopObserving(this.content, "mousedown", this.eventMouseDownContent);
Event.stopObserving(window, "load", this.eventOnLoad);
Event.stopObserving(window, "resize", this.eventResize);
Event.stopObserving(window, "scroll", this.eventResize);
Event.stopObserving(this.options.parent, "scroll", this.eventResize);
Event.stopObserving(this.content, "load", this.options.onload);
if (this._oldParent) {
var c = this.getContent();
var a = null;
for (var b = 0; b < c.childNodes.length; b++) {
a = c.childNodes[b];
if (a.nodeType == 1) {
break
}
a = null
}
if (a) {
this._oldParent.appendChild(a)
}
this._oldParent = null
}
if (this.sizer) {
Event.stopObserving(this.sizer, "mousedown", this.eventMouseDown)
}
if (this.options.url) {
this.content.src = null
}
if (this.wiredElement) {
this.wiredElement.remove()
}
if (this.iefix) {
Element.remove(this.iefix)
}
Element.remove(this.element);
Windows.unregister(this)
}, setCloseCallback: function (a) {
this.options.closeCallback = a
}, getContent: function () {
return this.content
}, setContent: function (h, g, b) {
var a = $(h);
if (null == a) {
throw "Unable to find element '" + h + "' in DOM"
}
this._oldParent = a.parentNode;
var f = null;
var e = null;
if (g) {
f = Element.getDimensions(a)
}
if (b) {
e = Position.cumulativeOffset(a)
}
var c = this.getContent();
this.setHTMLContent("");
c = this.getContent();
c.appendChild(a);
a.show();
if (g) {
this.setSize(f.width, f.height)
}
if (b) {
this.setLocation(e[1] - this.heightN, e[0] - this.widthW)
}
}, setHTMLContent: function (a) {
if (this.options.url) {
this.content.src = null;
this.options.url = null;
var b = '<div id="' + this.getId() + '_content" class="' + this.options.className + '_content"> </div>';
$(this.getId() + "_table_content").innerHTML = b;
this.content = $(this.element.id + "_content")
}
this.getContent().update(a);
return this
}, setAjaxContent: function (b, a, d, c) {
this.showFunction = d ? "showCenter" : "show";
this.showModal = c || false;
a = a || {};
this.setHTMLContent("");
this.onComplete = a.onComplete;
if (!this._onCompleteHandler) {
this._onCompleteHandler = this._setAjaxContent.bind(this)
}
a.onComplete = this._onCompleteHandler;
new Ajax.Request(b, a);
a.onComplete = this.onComplete
}, _setAjaxContent: function (a) {
Element.update(this.getContent(), a.responseText);
if (this.onComplete) {
this.onComplete(a)
}
this.onComplete = null;
this[this.showFunction](this.showModal)
}, setURL: function (a) {
if (this.options.url) {
this.content.src = null
}
this.options.url = a;
var b = "<iframe frameborder='0' name='" + this.getId() + "_content' id='" + this.getId() + "_content' src='" + a + "' width='" + this.width + "' height='" + this.height + "'> </iframe>";
$(this.getId() + "_table_content").innerHTML = b;
this.content = $(this.element.id + "_content")
}, getURL: function () {
return this.options.url ? this.options.url : null
}, refresh: function () {
if (this.options.url) {
$(this.element.getAttribute("id") + "_content").src = this.options.url
}
}, setCookie: function (b, c, o, e, a) {
b = b || this.element.id;
this.cookie = [b, c, o, e, a];
var m = WindowUtilities.getCookie(b);
if (m) {
var n = m.split(",");
var k = n[0].split(":");
var i = n[1].split(":");
var l = parseFloat(n[2]), f = parseFloat(n[3]);
var g = n[4];
var d = n[5];
this.setSize(l, f);
if (g == "true") {
this.doMinimize = true
} else {
if (d == "true") {
this.doMaximize = true
}
}
this.useLeft = k[0] == "l";
this.useTop = i[0] == "t";
this.element.setStyle(this.useLeft ? {left: k[1]} : {right: k[1]});
this.element.setStyle(this.useTop ? {top: i[1]} : {bottom: i[1]})
}
}, getId: function () {
return this.element.id
}, setDestroyOnClose: function () {
this.options.destroyOnClose = true
}, setConstraint: function (a, b) {
this.constraint = a;
this.constraintPad = Object.extend(this.constraintPad, b || {});
if (this.useTop && this.useLeft) {
this.setLocation(parseFloat(this.element.style.top), parseFloat(this.element.style.left))
}
}, _initDrag: function (b) {
if (Event.element(b) == this.sizer && this.isMinimized()) {
return
}
if (Event.element(b) != this.sizer && this.isMaximized()) {
return
}
if (Prototype.Browser.IE && this.heightN == 0) {
this._getWindowBorderSize()
}
this.pointer = [this._round(Event.pointerX(b), this.options.gridX), this._round(Event.pointerY(b), this.options.gridY)];
if (this.options.wiredDrag) {
this.currentDrag = this._createWiredElement()
} else {
this.currentDrag = this.element
}
if (Event.element(b) == this.sizer) {
this.doResize = true;
this.widthOrg = this.width;
this.heightOrg = this.height;
this.bottomOrg = parseFloat(this.element.getStyle("bottom"));
this.rightOrg = parseFloat(this.element.getStyle("right"));
this._notify("onStartResize")
} else {
this.doResize = false;
var a = $(this.getId() + "_close");
if (a && Position.within(a, this.pointer[0], this.pointer[1])) {
this.currentDrag = null;
return
}
this.toFront();
if (!this.options.draggable) {
return
}
this._notify("onStartMove")
}
Event.observe(document, "mouseup", this.eventMouseUp, false);
Event.observe(document, "mousemove", this.eventMouseMove, false);
WindowUtilities.disableScreen("__invisible__", "__invisible__", this.overlayOpacity);
document.body.ondrag = function () {
return false
};
document.body.onselectstart = function () {
return false
};
this.currentDrag.show();
Event.stop(b)
}, _round: function (b, a) {
return a == 1 ? b : b = Math.floor(b / a) * a
}, _updateDrag: function (b) {
var a = [this._round(Event.pointerX(b), this.options.gridX), this._round(Event.pointerY(b), this.options.gridY)];
var l = a[0] - this.pointer[0];
var k = a[1] - this.pointer[1];
if (this.doResize) {
var i = this.widthOrg + l;
var d = this.heightOrg + k;
l = this.width - this.widthOrg;
k = this.height - this.heightOrg;
if (this.useLeft) {
i = this._updateWidthConstraint(i)
} else {
this.currentDrag.setStyle({right: (this.rightOrg - l) + "px"})
}
if (this.useTop) {
d = this._updateHeightConstraint(d)
} else {
this.currentDrag.setStyle({bottom: (this.bottomOrg - k) + "px"})
}
this.setSize(i, d);
this._notify("onResize")
} else {
this.pointer = a;
if (this.useLeft) {
var c = parseFloat(this.currentDrag.getStyle("left")) + l;
var g = this._updateLeftConstraint(c);
this.pointer[0] += g - c;
this.currentDrag.setStyle({left: g + "px"})
} else {
this.currentDrag.setStyle({right: parseFloat(this.currentDrag.getStyle("right")) - l + "px"})
}
if (this.useTop) {
var f = parseFloat(this.currentDrag.getStyle("top")) + k;
var e = this._updateTopConstraint(f);
this.pointer[1] += e - f;
this.currentDrag.setStyle({top: e + "px"})
} else {
this.currentDrag.setStyle({bottom: parseFloat(this.currentDrag.getStyle("bottom")) - k + "px"})
}
this._notify("onMove")
}
if (this.iefix) {
this._fixIEOverlapping()
}
this._removeStoreLocation();
Event.stop(b)
}, _endDrag: function (a) {
WindowUtilities.enableScreen("__invisible__");
if (this.doResize) {
this._notify("onEndResize")
} else {
this._notify("onEndMove")
}
Event.stopObserving(document, "mouseup", this.eventMouseUp, false);
Event.stopObserving(document, "mousemove", this.eventMouseMove, false);
Event.stop(a);
this._hideWiredElement();
this._saveCookie();
document.body.ondrag = null;
document.body.onselectstart = null
}, _updateLeftConstraint: function (b) {
if (this.constraint && this.useLeft && this.useTop) {
var a = this.options.parent == document.body ? WindowUtilities.getPageSize().windowWidth : this.options.parent.getDimensions().width;
if (b < this.constraintPad.left) {
b = this.constraintPad.left
}
if (b + this.width + this.widthE + this.widthW > a - this.constraintPad.right) {
b = a - this.constraintPad.right - this.width - this.widthE - this.widthW
}
}
return b
}, _updateTopConstraint: function (c) {
if (this.constraint && this.useLeft && this.useTop) {
var a = this.options.parent == document.body ? WindowUtilities.getPageSize().windowHeight : this.options.parent.getDimensions().height;
var b = this.height + this.heightN + this.heightS;
if (c < this.constraintPad.top) {
c = this.constraintPad.top
}
if (c + b > a - this.constraintPad.bottom) {
c = a - this.constraintPad.bottom - b
}
}
return c
}, _updateWidthConstraint: function (a) {
if (this.constraint && this.useLeft && this.useTop) {
var b = this.options.parent == document.body ? WindowUtilities.getPageSize().windowWidth : this.options.parent.getDimensions().width;
var c = parseFloat(this.element.getStyle("left"));
if (c + a + this.widthE + this.widthW > b - this.constraintPad.right) {
a = b - this.constraintPad.right - c - this.widthE - this.widthW
}
}
return a
}, _updateHeightConstraint: function (b) {
if (this.constraint && this.useLeft && this.useTop) {
var a = this.options.parent == document.body ? WindowUtilities.getPageSize().windowHeight : this.options.parent.getDimensions().height;
var c = parseFloat(this.element.getStyle("top"));
if (c + b + this.heightN + this.heightS > a - this.constraintPad.bottom) {
b = a - this.constraintPad.bottom - c - this.heightN - this.heightS
}
}
return b
}, _createWindow: function (a) {
var f = this.options.className;
var d = document.createElement("div");
d.setAttribute("id", a);
d.className = "dialog";
var e;
if (this.options.url) {
e = '<iframe frameborder="0" name="' + a + '_content" id="' + a + '_content" src="' + this.options.url + '"> </iframe>'
} else {
e = '<div id="' + a + '_content" class="' + f + '_content"> </div>'
}
var g = this.options.closable ? "<div class='" + f + "_close' id='" + a + "_close' onclick='Windows.close(\"" + a + "\", event)'> </div>" : "";
var h = this.options.minimizable ? "<div class='" + f + "_minimize' id='" + a + "_minimize' onclick='Windows.minimize(\"" + a + "\", event)'> </div>" : "";
var i = this.options.maximizable ? "<div class='" + f + "_maximize' id='" + a + "_maximize' onclick='Windows.maximize(\"" + a + "\", event)'> </div>" : "";
var c = this.options.resizable ? "class='" + f + "_sizer' id='" + a + "_sizer'" : "class='" + f + "_se'";
var b = "../themes/default/blank.gif";
d.innerHTML = g + h + i + " <table id='" + a + "_row1' class=\"top table_window\"> <tr> <td class='" + f + "_nw'></td> <td class='" + f + "_n'><div id='" + a + "_top' class='" + f + "_title title_window'>" + this.options.title + "</div></td> <td class='" + f + "_ne'></td> </tr> </table> <table id='" + a + "_row2' class=\"mid table_window\"> <tr> <td class='" + f + "_w'></td> <td id='" + a + "_table_content' class='" + f + "_content' valign='top'>" + e + "</td> <td class='" + f + "_e'></td> </tr> </table> <table id='" + a + "_row3' class=\"bot table_window\"> <tr> <td class='" + f + "_sw'></td> <td class='" + f + "_s'><div id='" + a + "_bottom' class='status_bar'><span style='float:left; width:1px; height:1px'></span></div></td> <td " + c + "></td> </tr> </table> ";
Element.hide(d);
this.options.parent.insertBefore(d, this.options.parent.firstChild);
Event.observe($(a + "_content"), "load", this.options.onload);
return d
}, changeClassName: function (a) {
var b = this.options.className;
var c = this.getId();
$A(["_close", "_minimize", "_maximize", "_content"]).each(function (d) {
this._toggleClassName($(c + d), b + d, a + d)
}.bind(this));
this._toggleClassName($(c + "_top"), b + "_title", a + "_title");
$$("#" + c + " td").each(function (d) {
d.className = d.className.sub(b, a)
});
this.options.className = a;
this._getWindowBorderSize();
this.setSize(this.width, this.height)
}, _toggleClassName: function (c, b, a) {
if (c) {
c.removeClassName(b);
c.addClassName(a)
}
}, setLocation: function (c, b) {
c = this._updateTopConstraint(c);
b = this._updateLeftConstraint(b);
var a = this.currentDrag || this.element;
a.setStyle({top: c + "px"});
a.setStyle({left: b + "px"});
this.useLeft = true;
this.useTop = true
}, getLocation: function () {
var a = {};
if (this.useTop) {
a = Object.extend(a, {top: this.element.getStyle("top")})
} else {
a = Object.extend(a, {bottom: this.element.getStyle("bottom")})
}
if (this.useLeft) {
a = Object.extend(a, {left: this.element.getStyle("left")})
} else {
a = Object.extend(a, {right: this.element.getStyle("right")})
}
return a
}, getSize: function () {
return {width: this.width, height: this.height}
}, setSize: function (c, b, a) {
c = parseFloat(c);
b = parseFloat(b);
if (!this.minimized && c < this.options.minWidth) {
c = this.options.minWidth
}
if (!this.minimized && b < this.options.minHeight) {
b = this.options.minHeight
}
if (this.options.maxHeight && b > this.options.maxHeight) {
b = this.options.maxHeight
}
if (this.options.maxWidth && c > this.options.maxWidth) {
c = this.options.maxWidth
}
if (this.useTop && this.useLeft && Window.hasEffectLib && Effect.ResizeWindow && a) {
new Effect.ResizeWindow(this, null, null, c, b, {duration: Window.resizeEffectDuration})
} else {
this.width = c;
this.height = b;
var f = this.currentDrag ? this.currentDrag : this.element;
f.setStyle({width: c + this.widthW + this.widthE + "px"});
f.setStyle({height: b + this.heightN + this.heightS + "px"});
if (!this.currentDrag || this.currentDrag == this.element) {
var d = $(this.element.id + "_content");
d.setStyle({height: b + "px"});
d.setStyle({width: c + "px"})
}
}
}, updateHeight: function () {
this.setSize(this.width, this.content.scrollHeight, true)
}, updateWidth: function () {
this.setSize(this.content.scrollWidth, this.height, true)
}, toFront: function () {
if (this.element.style.zIndex < Windows.maxZIndex) {
this.setZIndex(Windows.maxZIndex + 1)
}
if (this.iefix) {
this._fixIEOverlapping()
}
}, getBounds: function (b) {
if (!this.width || !this.height || !this.visible) {
this.computeBounds()
}
var a = this.width;
var c = this.height;
if (!b) {
a += this.widthW + this.widthE;
c += this.heightN + this.heightS
}
var d = Object.extend(this.getLocation(), {width: a + "px", height: c + "px"});
return d
}, computeBounds: function () {
if (!this.width || !this.height) {
var a = WindowUtilities._computeSize(this.content.innerHTML, this.content.id, this.width, this.height, 0, this.options.className);
if (this.height) {
this.width = a + 5
} else {
this.height = a + 5
}
}
this.setSize(this.width, this.height);
if (this.centered) {
this._center(this.centerTop, this.centerLeft)
}
}, show: function (b) {
this.visible = true;
if (b) {
if (typeof this.overlayOpacity == "undefined") {
var a = this;
setTimeout(function () {
a.show(b)
}, 10);
return
}
Windows.addModalWindow(this);
this.modal = true;
this.setZIndex(Windows.maxZIndex + 1);
Windows.unsetOverflow(this)
} else {
if (!this.element.style.zIndex) {
this.setZIndex(Windows.maxZIndex + 1)
}
}
if (this.oldStyle) {
this.getContent().setStyle({overflow: this.oldStyle})
}
this.computeBounds();
this._notify("onBeforeShow");
if (this.options.showEffect != Element.show && this.options.showEffectOptions) {
this.options.showEffect(this.element, this.options.showEffectOptions)
} else {
this.options.showEffect(this.element)
}
this._checkIEOverlapping();
WindowUtilities.focusedWindow = this;
this._notify("onShow")
}, showCenter: function (a, c, b) {
this.centered = true;
this.centerTop = c;
this.centerLeft = b;
this.show(a)
}, isVisible: function () {
return this.visible
}, _center: function (c, b) {
var d = WindowUtilities.getWindowScroll(this.options.parent);
var a = WindowUtilities.getPageSize(this.options.parent);
if (typeof c == "undefined") {
c = (a.windowHeight - (this.height + this.heightN + this.heightS)) / 2
}
c += d.top;
if (typeof b == "undefined") {
b = (a.windowWidth - (this.width + this.widthW + this.widthE)) / 2
}
b += d.left;
this.setLocation(c, b);
this.toFront()
}, _recenter: function (b) {
if (this.centered) {
var a = WindowUtilities.getPageSize(this.options.parent);
var c = WindowUtilities.getWindowScroll(this.options.parent);
if (this.pageSize && this.pageSize.windowWidth == a.windowWidth && this.pageSize.windowHeight == a.windowHeight && this.windowScroll.left == c.left && this.windowScroll.top == c.top) {
return
}
this.pageSize = a;
this.windowScroll = c;
if ($("overlay_modal")) {
$("overlay_modal").setStyle({height: (a.pageHeight + "px")})
}
if (this.options.recenterAuto) {
this._center(this.centerTop, this.centerLeft)
}
}
}, hide: function () {
this.visible = false;
if (this.modal) {
Windows.removeModalWindow(this);
Windows.resetOverflow()
}
this.oldStyle = this.getContent().getStyle("overflow") || "auto";
this.getContent().setStyle({overflow: "hidden"});
this.options.hideEffect(this.element, this.options.hideEffectOptions);
if (this.iefix) {
this.iefix.hide()
}
if (!this.doNotNotifyHide) {
this._notify("onHide")
}
}, close: function () {
if (this.visible) {
if (this.options.closeCallback && !this.options.closeCallback(this)) {
return
}
if (this.options.destroyOnClose) {
var a = this.destroy.bind(this);
if (this.options.hideEffectOptions.afterFinish) {
var b = this.options.hideEffectOptions.afterFinish;
this.options.hideEffectOptions.afterFinish = function () {
b();
a()
}
} else {
this.options.hideEffectOptions.afterFinish = function () {
a()
}
}
}
Windows.updateFocusedWindow();
this.doNotNotifyHide = true;
this.hide();
this.doNotNotifyHide = false;
this._notify("onClose")
}
}, minimize: function () {
if (this.isMaximized() || this.resizing) {
return
}
if (this.minimized) {
this.restore();
return
}
var a = $(this.getId() + "_row2");
this.minimized = true;
var d = a.getDimensions().height;
this.r2Height = d;
var c = this.element.getHeight() - d;
if (this.useLeft && this.useTop && Window.hasEffectLib && Effect.ResizeWindow) {
new Effect.ResizeWindow(this, null, null, null, this.height - d, {duration: Window.resizeEffectDuration})
} else {
this.height -= d;
this.element.setStyle({height: c + "px"});
a.hide()
}
if (!this.useTop) {
var b = parseFloat(this.element.getStyle("bottom"));
this.element.setStyle({bottom: (b + d) + "px"})
}
this._notify("onMinimize");
this._saveCookie()
}, restore: function () {
if (!this.minimized || this.resizing) {
return
}
var a = $(this.getId() + "_row2");
this.minimized = false;
var d = this.r2Height;
this.r2Height = null;
if (this.useLeft && this.useTop && Window.hasEffectLib && Effect.ResizeWindow) {
new Effect.ResizeWindow(this, null, null, null, this.height + d, {duration: Window.resizeEffectDuration})
} else {
var c = this.element.getHeight() + d;
this.height += d;
this.element.setStyle({height: c + "px"});
a.show()
}
if (!this.useTop) {
var b = parseFloat(this.element.getStyle("bottom"));
this.element.setStyle({bottom: (b - d) + "px"})
}
this.toFront();
this._saveCookie()
}, maximize: function () {
if (this.isMinimized() || this.resizing) {
return
}
if (Prototype.Browser.IE && this.heightN == 0) {
this._getWindowBorderSize()
}
if (this.storedLocation != null) {
this._restoreLocation();
if (this.iefix) {
this.iefix.hide()
}
} else {
this._storeLocation();
Windows.unsetOverflow(this);
var g = WindowUtilities.getWindowScroll(this.options.parent);
var b = WindowUtilities.getPageSize(this.options.parent);
var f = g.left;
var e = g.top;
if (this.options.parent != document.body) {
g = {top: 0, left: 0, bottom: 0, right: 0};
var d = this.options.parent.getDimensions();
b.windowWidth = d.width;
b.windowHeight = d.height;
e = 0;
f = 0
}
if (this.constraint) {
b.windowWidth -= Math.max(0, this.constraintPad.left) + Math.max(0, this.constraintPad.right);
b.windowHeight -= Math.max(0, this.constraintPad.top) + Math.max(0, this.constraintPad.bottom);
f += Math.max(0, this.constraintPad.left);
e += Math.max(0, this.constraintPad.top)
}
var c = b.windowWidth - this.widthW - this.widthE;
var a = b.windowHeight - this.heightN - this.heightS;
if (this.useLeft && this.useTop && Window.hasEffectLib && Effect.ResizeWindow) {
new Effect.ResizeWindow(this, e, f, c, a, {duration: Window.resizeEffectDuration})
} else {
this.setSize(c, a);
this.element.setStyle(this.useLeft ? {left: f + "px"} : {right: f + "px"});
this.element.setStyle(this.useTop ? {top: e + "px"} : {bottom: e + "px"})
}
this.toFront();
if (this.iefix) {
this._fixIEOverlapping()
}
}
this._notify("onMaximize");
this._saveCookie()
}, isMinimized: function () {
return this.minimized
}, isMaximized: function () {
return (this.storedLocation != null)
}, setOpacity: function (a) {
if (Element.setOpacity) {
Element.setOpacity(this.element, a)
}
}, setZIndex: function (a) {
this.element.setStyle({zIndex: a});
Windows.updateZindex(a, this)
}, setTitle: function (a) {
if (!a || a == "") {
a = "&nbsp;"
}
Element.update(this.element.id + "_top", a)
}, getTitle: function () {
return $(this.element.id + "_top").innerHTML
}, setStatusBar: function (b) {
var a = $(this.getId() + "_bottom");
if (typeof (b) == "object") {
if (this.bottombar.firstChild) {
this.bottombar.replaceChild(b, this.bottombar.firstChild)
} else {
this.bottombar.appendChild(b)
}
} else {
this.bottombar.innerHTML = b
}
}, _checkIEOverlapping: function () {
if (!this.iefix && (navigator.appVersion.indexOf("MSIE") > 0) && (navigator.userAgent.indexOf("Opera") < 0) && (this.element.getStyle("position") == "absolute")) {
new Insertion.After(this.element.id, '<iframe id="' + this.element.id + '_iefix" style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" src="javascript:false;" frameborder="0" scrolling="no"></iframe>');
this.iefix = $(this.element.id + "_iefix")
}
if (this.iefix) {
setTimeout(this._fixIEOverlapping.bind(this), 50)
}
}, _fixIEOverlapping: function () {
Position.clone(this.element, this.iefix);
this.iefix.style.zIndex = this.element.style.zIndex - 1;
this.iefix.show()
}, _getWindowBorderSize: function (b) {
var c = this._createHiddenDiv(this.options.className + "_n");
this.heightN = Element.getDimensions(c).height;
c.parentNode.removeChild(c);
var c = this._createHiddenDiv(this.options.className + "_s");
this.heightS = Element.getDimensions(c).height;
c.parentNode.removeChild(c);
var c = this._createHiddenDiv(this.options.className + "_e");
this.widthE = Element.getDimensions(c).width;
c.parentNode.removeChild(c);
var c = this._createHiddenDiv(this.options.className + "_w");
this.widthW = Element.getDimensions(c).width;
c.parentNode.removeChild(c);
var c = document.createElement("div");
c.className = "overlay_" + this.options.className;
document.body.appendChild(c);
var a = this;
setTimeout(function () {
a.overlayOpacity = ($(c).getStyle("opacity"));
c.parentNode.removeChild(c)
}, 10);
if (Prototype.Browser.IE) {
this.heightS = $(this.getId() + "_row3").getDimensions().height;
this.heightN = $(this.getId() + "_row1").getDimensions().height
}
if (Prototype.Browser.WebKit && Prototype.Browser.WebKitVersion < 420) {
this.setSize(this.width, this.height)
}
if (this.doMaximize) {
this.maximize()
}
if (this.doMinimize) {
this.minimize()
}
}, _createHiddenDiv: function (b) {
var a = document.body;
var c = document.createElement("div");
c.setAttribute("id", this.element.id + "_tmp");
c.className = b;
c.style.display = "none";
c.innerHTML = "";
a.insertBefore(c, a.firstChild);
return c
}, _storeLocation: function () {
if (this.storedLocation == null) {
this.storedLocation = {
useTop: this.useTop,
useLeft: this.useLeft,
top: this.element.getStyle("top"),
bottom: this.element.getStyle("bottom"),
left: this.element.getStyle("left"),
right: this.element.getStyle("right"),
width: this.width,
height: this.height
}
}
}, _restoreLocation: function () {
if (this.storedLocation != null) {
this.useLeft = this.storedLocation.useLeft;
this.useTop = this.storedLocation.useTop;
if (this.useLeft && this.useTop && Window.hasEffectLib && Effect.ResizeWindow) {
new Effect.ResizeWindow(this, this.storedLocation.top, this.storedLocation.left, this.storedLocation.width, this.storedLocation.height, {duration: Window.resizeEffectDuration})
} else {
this.element.setStyle(this.useLeft ? {left: this.storedLocation.left} : {right: this.storedLocation.right});
this.element.setStyle(this.useTop ? {top: this.storedLocation.top} : {bottom: this.storedLocation.bottom});
this.setSize(this.storedLocation.width, this.storedLocation.height)
}
Windows.resetOverflow();
this._removeStoreLocation()
}
}, _removeStoreLocation: function () {
this.storedLocation = null
}, _saveCookie: function () {
if (this.cookie) {
var a = "";
if (this.useLeft) {
a += "l:" + (this.storedLocation ? this.storedLocation.left : this.element.getStyle("left"))
} else {
a += "r:" + (this.storedLocation ? this.storedLocation.right : this.element.getStyle("right"))
}
if (this.useTop) {
a += ",t:" + (this.storedLocation ? this.storedLocation.top : this.element.getStyle("top"))
} else {
a += ",b:" + (this.storedLocation ? this.storedLocation.bottom : this.element.getStyle("bottom"))
}
a += "," + (this.storedLocation ? this.storedLocation.width : this.width);
a += "," + (this.storedLocation ? this.storedLocation.height : this.height);
a += "," + this.isMinimized();
a += "," + this.isMaximized();
WindowUtilities.setCookie(a, this.cookie)
}
}, _createWiredElement: function () {
if (!this.wiredElement) {
if (Prototype.Browser.IE) {
this._getWindowBorderSize()
}
var b = document.createElement("div");
b.className = "wired_frame " + this.options.className + "_wired_frame";
b.style.position = "absolute";
this.options.parent.insertBefore(b, this.options.parent.firstChild);
this.wiredElement = $(b)
}
if (this.useLeft) {
this.wiredElement.setStyle({left: this.element.getStyle("left")})
} else {
this.wiredElement.setStyle({right: this.element.getStyle("right")})
}
if (this.useTop) {
this.wiredElement.setStyle({top: this.element.getStyle("top")})
} else {
this.wiredElement.setStyle({bottom: this.element.getStyle("bottom")})
}
var a = this.element.getDimensions();
this.wiredElement.setStyle({width: a.width + "px", height: a.height + "px"});
this.wiredElement.setStyle({zIndex: Windows.maxZIndex + 30});
return this.wiredElement
}, _hideWiredElement: function () {
if (!this.wiredElement || !this.currentDrag) {
return
}
if (this.currentDrag == this.element) {
this.currentDrag = null
} else {
if (this.useLeft) {
this.element.setStyle({left: this.currentDrag.getStyle("left")})
} else {
this.element.setStyle({right: this.currentDrag.getStyle("right")})
}
if (this.useTop) {
this.element.setStyle({top: this.currentDrag.getStyle("top")})
} else {
this.element.setStyle({bottom: this.currentDrag.getStyle("bottom")})
}
this.currentDrag.hide();
this.currentDrag = null;
if (this.doResize) {
this.setSize(this.width, this.height)
}
}
}, _notify: function (a) {
if (this.options[a]) {
this.options[a](this)
} else {
Windows.notify(a, this)
}
}
};
var Windows = {
windows: [],
modalWindows: [],
observers: [],
focusedWindow: null,
maxZIndex: 0,
overlayShowEffectOptions: {duration: 0.5},
overlayHideEffectOptions: {duration: 0.5},
addObserver: function (a) {
this.removeObserver(a);
this.observers.push(a)
},
removeObserver: function (a) {
this.observers = this.observers.reject(function (b) {
return b == a
})
},
notify: function (a, b) {
this.observers.each(function (c) {
if (c[a]) {
c[a](a, b)
}
})
},
getWindow: function (a) {
return this.windows.detect(function (b) {
return b.getId() == a
})
},
getFocusedWindow: function () {
return this.focusedWindow
},
updateFocusedWindow: function () {
this.focusedWindow = this.windows.length >= 2 ? this.windows[this.windows.length - 2] : null
},
addModalWindow: function (a) {
if (this.modalWindows.length == 0) {
WindowUtilities.disableScreen(a.options.className, "overlay_modal", a.overlayOpacity, a.getId(), a.options.parent)
} else {
if (Window.keepMultiModalWindow) {
$("overlay_modal").style.zIndex = Windows.maxZIndex + 1;
Windows.maxZIndex += 1;
WindowUtilities._hideSelect(this.modalWindows.last().getId())
} else {
this.modalWindows.last().element.hide()
}
WindowUtilities._showSelect(a.getId())
}
this.modalWindows.push(a)
},
removeModalWindow: function (a) {
this.modalWindows.pop();
if (this.modalWindows.length == 0) {
WindowUtilities.enableScreen()
} else {
if (Window.keepMultiModalWindow) {
this.modalWindows.last().toFront();
WindowUtilities._showSelect(this.modalWindows.last().getId())
} else {
this.modalWindows.last().element.show()
}
}
},
register: function (a) {
this.windows.push(a)
},
unregister: function (a) {
this.windows = this.windows.reject(function (b) {
return b == a
})
},
closeAll: function () {
this.windows.each(function (a) {
Windows.close(a.getId())
})
},
closeAllModalWindows: function () {
WindowUtilities.enableScreen();
this.modalWindows.each(function (a) {
if (a) {
a.close()
}
})
},
minimize: function (c, a) {
var b = this.getWindow(c);
if (b && b.visible) {
b.minimize()
}
Event.stop(a)
},
maximize: function (c, a) {
var b = this.getWindow(c);
if (b && b.visible) {
b.maximize()
}
Event.stop(a)
},
close: function (c, a) {
var b = this.getWindow(c);
if (b) {
b.close()
}
if (a) {
Event.stop(a)
}
},
blur: function (b) {
var a = this.getWindow(b);
if (!a) {
return
}
if (a.options.blurClassName) {
a.changeClassName(a.options.blurClassName)
}
if (this.focusedWindow == a) {
this.focusedWindow = null
}
a._notify("onBlur")
},
focus: function (b) {
var a = this.getWindow(b);
if (!a) {
return
}
if (this.focusedWindow) {
this.blur(this.focusedWindow.getId())
}
if (a.options.focusClassName) {
a.changeClassName(a.options.focusClassName)
}
this.focusedWindow = a;
a._notify("onFocus")
},
unsetOverflow: function (a) {
this.windows.each(function (b) {
b.oldOverflow = b.getContent().getStyle("overflow") || "auto";
b.getContent().setStyle({overflow: "hidden"})
});
if (a && a.oldOverflow) {
a.getContent().setStyle({overflow: a.oldOverflow})
}
},
resetOverflow: function () {
this.windows.each(function (a) {
if (a.oldOverflow) {
a.getContent().setStyle({overflow: a.oldOverflow})
}
})
},
updateZindex: function (a, b) {
if (a > this.maxZIndex) {
this.maxZIndex = a;
if (this.focusedWindow) {
this.blur(this.focusedWindow.getId())
}
}
this.focusedWindow = b;
if (this.focusedWindow) {
this.focus(this.focusedWindow.getId())
}
}
};
var Dialog = {
dialogId: null, onCompleteFunc: null, callFunc: null, parameters: null, confirm: function (d, c) {
if (d && typeof d != "string") {
Dialog._runAjaxRequest(d, c, Dialog.confirm);
return
}
d = d || "";
c = c || {};
var f = c.okLabel ? c.okLabel : "Ok";
var a = c.cancelLabel ? c.cancelLabel : "Cancel";
c = Object.extend(c, c.windowParameters || {});
c.windowParameters = c.windowParameters || {};
c.className = c.className || "alert";
var b = "class ='" + (c.buttonClass ? c.buttonClass + " " : "") + " ok_button'";
var e = "class ='" + (c.buttonClass ? c.buttonClass + " " : "") + " cancel_button'";
var d = " <div class='" + c.className + "_message'>" + d + "</div> <div class='" + c.className + "_buttons'> <input type='button' value='" + f + "' onclick='Dialog.okCallback()' " + b + "/> <input type='button' value='" + a + "' onclick='Dialog.cancelCallback()' " + e + "/> </div> ";
return this._openDialog(d, c)
}, alert: function (c, b) {
if (c && typeof c != "string") {
Dialog._runAjaxRequest(c, b, Dialog.alert);
return
}
c = c || "";
b = b || {};
var d = b.okLabel ? b.okLabel : "Ok";
b = Object.extend(b, b.windowParameters || {});
b.windowParameters = b.windowParameters || {};
b.className = b.className || "alert";
var a = "class ='" + (b.buttonClass ? b.buttonClass + " " : "") + " ok_button'";
var c = " <div class='" + b.className + "_message'>" + c + "</div> <div class='" + b.className + "_buttons'> <input type='button' value='" + d + "' onclick='Dialog.okCallback()' " + a + "/> </div>";
return this._openDialog(c, b)
}, info: function (b, a) {
if (b && typeof b != "string") {
Dialog._runAjaxRequest(b, a, Dialog.info);
return
}
b = b || "";
a = a || {};
a = Object.extend(a, a.windowParameters || {});
a.windowParameters = a.windowParameters || {};
a.className = a.className || "alert";
var b = "<div id='modal_dialog_message' class='" + a.className + "_message'>" + b + "</div>";
if (a.showProgress) {
b += "<div id='modal_dialog_progress' class='" + a.className + "_progress'> </div>"
}
a.ok = null;
a.cancel = null;
return this._openDialog(b, a)
}, setInfoMessage: function (a) {
$("modal_dialog_message").update(a)
}, closeInfo: function () {
Windows.close(this.dialogId)
}, _openDialog: function (e, d) {
var c = d.className;
if (!d.height && !d.width) {
d.width = WindowUtilities.getPageSize((d.options && d.options.parent) || document.body).pageWidth / 2
}
if (d.id) {
this.dialogId = d.id
} else {
var b = new Date();
this.dialogId = "modal_dialog_" + b.getTime();
d.id = this.dialogId
}
if (!d.height || !d.width) {
var a = WindowUtilities._computeSize(e, this.dialogId, d.width, d.height, 5, c);
if (d.height) {
d.width = a + 5
} else {
d.height = a + 5
}
}
d.effectOptions = d.effectOptions;
d.resizable = d.resizable || false;
d.minimizable = d.minimizable || false;
d.maximizable = d.maximizable || false;
d.draggable = d.draggable || false;
d.closable = d.closable || false;
var f = new Window(d);
if (!d.url) {
f.setHTMLContent(e)
}
f.showCenter(true, d.top, d.left);
f.setDestroyOnClose();
f.cancelCallback = d.onCancel || d.cancel;
f.okCallback = d.onOk || d.ok;
return f
}, _getAjaxContent: function (a) {
Dialog.callFunc(a.responseText, Dialog.parameters)
}, _runAjaxRequest: function (c, b, a) {
if (c.options == null) {
c.options = {}
}
Dialog.onCompleteFunc = c.options.onComplete;
Dialog.parameters = b;
Dialog.callFunc = a;
c.options.onComplete = Dialog._getAjaxContent;
new Ajax.Request(c.url, c.options)
}, okCallback: function () {
var a = Windows.focusedWindow;
if (!a.okCallback || a.okCallback(a)) {
$$("#" + a.getId() + " input").each(function (b) {
b.onclick = null
});
a.close()
}
}, cancelCallback: function () {
var a = Windows.focusedWindow;
$$("#" + a.getId() + " input").each(function (b) {
b.onclick = null
});
a.close();
if (a.cancelCallback) {
a.cancelCallback(a)
}
}
};
if (Prototype.Browser.WebKit) {
var array = navigator.userAgent.match(new RegExp(/AppleWebKit\/([\d\.\+]*)/));
Prototype.Browser.WebKitVersion = parseFloat(array[1])
}
var WindowUtilities = {
getWindowScroll: function (parent) {
var T, L, W, H;
parent = parent || document.body;
if (parent != document.body) {
T = parent.scrollTop;
L = parent.scrollLeft;
W = parent.scrollWidth;
H = parent.scrollHeight
} else {
var w = window;
with (w.document) {
if (w.document.documentElement && documentElement.scrollTop) {
T = documentElement.scrollTop;
L = documentElement.scrollLeft
} else {
if (w.document.body) {
T = body.scrollTop;
L = body.scrollLeft
}
}
if (w.innerWidth) {
W = w.innerWidth;
H = w.innerHeight
} else {
if (w.document.documentElement && documentElement.clientWidth) {
W = documentElement.clientWidth;
H = documentElement.clientHeight
} else {
W = body.offsetWidth;
H = body.offsetHeight
}
}
}
}
return {top: T, left: L, width: W, height: H}
}, getPageSize: function (d) {
d = d || document.body;
var c, g;
var e, b;
if (d != document.body) {
c = d.getWidth();
g = d.getHeight();
b = d.scrollWidth;
e = d.scrollHeight
} else {
var f, a;
if (window.innerHeight && window.scrollMaxY) {
f = document.body.scrollWidth;
a = window.innerHeight + window.scrollMaxY
} else {
if (document.body.scrollHeight > document.body.offsetHeight) {
f = document.body.scrollWidth;
a = document.body.scrollHeight
} else {
f = document.body.offsetWidth;
a = document.body.offsetHeight
}
}
if (self.innerHeight) {
c = self.innerWidth;
g = self.innerHeight
} else {
if (document.documentElement && document.documentElement.clientHeight) {
c = document.documentElement.clientWidth;
g = document.documentElement.clientHeight
} else {
if (document.body) {
c = document.body.clientWidth;
g = document.body.clientHeight
}
}
}
if (a < g) {
e = g
} else {
e = a
}
if (f < c) {
b = c
} else {
b = f
}
}
return {pageWidth: b, pageHeight: e, windowWidth: c, windowHeight: g}
}, disableScreen: function (c, a, d, e, b) {
WindowUtilities.initLightbox(a, c, function () {
this._disableScreen(c, a, d, e)
}.bind(this), b || document.body)
}, _disableScreen: function (c, b, e, f) {
var d = $(b);
var a = WindowUtilities.getPageSize(d.parentNode);
if (f && Prototype.Browser.IE) {
WindowUtilities._hideSelect();
WindowUtilities._showSelect(f)
}
d.style.height = (a.pageHeight + "px");
d.style.display = "none";
if (b == "overlay_modal" && Window.hasEffectLib && Windows.overlayShowEffectOptions) {
d.overlayOpacity = e;
new Effect.Appear(d, Object.extend({from: 0, to: e}, Windows.overlayShowEffectOptions))
} else {
d.style.display = "block"
}
}, enableScreen: function (b) {
b = b || "overlay_modal";
var a = $(b);
if (a) {
if (b == "overlay_modal" && Window.hasEffectLib && Windows.overlayHideEffectOptions) {
new Effect.Fade(a, Object.extend({from: a.overlayOpacity, to: 0}, Windows.overlayHideEffectOptions))
} else {
a.style.display = "none";
a.parentNode.removeChild(a)
}
if (b != "__invisible__") {
WindowUtilities._showSelect()
}
}
}, _hideSelect: function (a) {
if (Prototype.Browser.IE) {
a = a == null ? "" : "#" + a + " ";
$$(a + "select").each(function (b) {
if (!WindowUtilities.isDefined(b.oldVisibility)) {
b.oldVisibility = b.style.visibility ? b.style.visibility : "visible";
b.style.visibility = "hidden"
}
})
}
}, _showSelect: function (a) {
if (Prototype.Browser.IE) {
a = a == null ? "" : "#" + a + " ";
$$(a + "select").each(function (b) {
if (WindowUtilities.isDefined(b.oldVisibility)) {
try {
b.style.visibility = b.oldVisibility
} catch (c) {
b.style.visibility = "visible"
}
b.oldVisibility = null
} else {
if (b.style.visibility) {
b.style.visibility = "visible"
}
}
})
}
}, isDefined: function (a) {
return typeof (a) != "undefined" && a != null
}, initLightbox: function (e, c, a, b) {
if ($(e)) {
Element.setStyle(e, {zIndex: Windows.maxZIndex + 1});
Windows.maxZIndex++;
a()
} else {
var d = document.createElement("div");
d.setAttribute("id", e);
d.className = "overlay_" + c;
d.style.display = "none";
d.style.position = "absolute";
d.style.top = "0";
d.style.left = "0";
d.style.zIndex = Windows.maxZIndex + 1;
Windows.maxZIndex++;
d.style.width = "100%";
b.insertBefore(d, b.firstChild);
if (Prototype.Browser.WebKit && e == "overlay_modal") {
setTimeout(function () {
a()
}, 10)
} else {
a()
}
}
}, setCookie: function (b, a) {
document.cookie = a[0] + "=" + escape(b) + ((a[1]) ? "; expires=" + a[1].toGMTString() : "") + ((a[2]) ? "; path=" + a[2] : "") + ((a[3]) ? "; domain=" + a[3] : "") + ((a[4]) ? "; secure" : "")
}, getCookie: function (c) {
var b = document.cookie;
var e = c + "=";
var d = b.indexOf("; " + e);
if (d == -1) {
d = b.indexOf(e);
if (d != 0) {
return null
}
} else {
d += 2
}
var a = document.cookie.indexOf(";", d);
if (a == -1) {
a = b.length
}
return unescape(b.substring(d + e.length, a))
}, _computeSize: function (e, a, b, g, d, f) {
var i = document.body;
var c = document.createElement("div");
c.setAttribute("id", a);
c.className = f + "_content";
if (g) {
c.style.height = g + "px"
} else {
c.style.width = b + "px"
}
c.style.position = "absolute";
c.style.top = "0";
c.style.left = "0";
c.style.display = "none";
c.innerHTML = e.stripScripts();
i.insertBefore(c, i.firstChild);
var h;
if (g) {
h = $(c).getDimensions().width + d
} else {
h = $(c).getDimensions().height + d
}
i.removeChild(c);
return h
}
};
var Builder = {
NODEMAP: {
AREA: "map",
CAPTION: "table",
COL: "table",
COLGROUP: "table",
LEGEND: "fieldset",
OPTGROUP: "select",
OPTION: "select",
PARAM: "object",
TBODY: "table",
TD: "table",
TFOOT: "table",
TH: "table",
THEAD: "table",
TR: "table"
}, node: function (a) {
a = a.toUpperCase();
var g = this.NODEMAP[a] || "div";
var b = document.createElement(g);
try {
b.innerHTML = "<" + a + "></" + a + ">"
} catch (f) {
}
var d = b.firstChild || null;
if (d && (d.tagName.toUpperCase() != a)) {
d = d.getElementsByTagName(a)[0]
}
if (!d) {
d = document.createElement(a)
}
if (!d) {
return
}
if (arguments[1]) {
if (this._isStringOrNumber(arguments[1]) || (arguments[1] instanceof Array) || arguments[1].tagName) {
this._children(d, arguments[1])
} else {
var c = this._attributes(arguments[1]);
if (c.length) {
try {
b.innerHTML = "<" + a + " " + c + "></" + a + ">"
} catch (f) {
}
d = b.firstChild || null;
if (!d) {
d = document.createElement(a);
for (attr in arguments[1]) {
d[attr == "class" ? "className" : attr] = arguments[1][attr]
}
}
if (d.tagName.toUpperCase() != a) {
d = b.getElementsByTagName(a)[0]
}
}
}
}
if (arguments[2]) {
this._children(d, arguments[2])
}
return $(d)
}, _text: function (a) {
return document.createTextNode(a)
}, ATTR_MAP: {className: "class", htmlFor: "for"}, _attributes: function (a) {
var b = [];
for (attribute in a) {
b.push((attribute in this.ATTR_MAP ? this.ATTR_MAP[attribute] : attribute) + '="' + a[attribute].toString().escapeHTML().gsub(/"/, "&quot;") + '"')
}
return b.join(" ")
}, _children: function (b, a) {
if (a.tagName) {
b.appendChild(a);
return
}
if (typeof a == "object") {
a.flatten().each(function (c) {
if (typeof c == "object") {
b.appendChild(c)
} else {
if (Builder._isStringOrNumber(c)) {
b.appendChild(Builder._text(c))
}
}
})
} else {
if (Builder._isStringOrNumber(a)) {
b.appendChild(Builder._text(a))
}
}
}, _isStringOrNumber: function (a) {
return (typeof a == "string" || typeof a == "number")
}, build: function (b) {
var a = this.node("div");
$(a).update(b.strip());
return a.down()
}, dump: function (b) {
if (typeof b != "object" && typeof b != "function") {
b = window
}
var a = ("A ABBR ACRONYM ADDRESS APPLET AREA B BASE BASEFONT BDO BIG BLOCKQUOTE BODY BR BUTTON CAPTION CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM FIELDSET FONT FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HEAD HR HTML I IFRAME IMG INPUT INS ISINDEX KBD LABEL LEGEND LI LINK MAP MENU META NOFRAMES NOSCRIPT OBJECT OL OPTGROUP OPTION P PARAM PRE Q S SAMP SCRIPT SELECT SMALL SPAN STRIKE STRONG STYLE SUB SUP TABLE TBODY TD TEXTAREA TFOOT TH THEAD TITLE TR TT U UL VAR").split(/\s+/);
a.each(function (c) {
b[c] = function () {
return Builder.node.apply(Builder, [c].concat($A(arguments)))
}
})
}
};
String.prototype.parseColor = function () {
var a = "#";
if (this.slice(0, 4) == "rgb(") {
var c = this.slice(4, this.length - 1).split(",");
var b = 0;
do {
a += parseInt(c[b]).toColorPart()
} while (++b < 3)
} else {
if (this.slice(0, 1) == "#") {
if (this.length == 4) {
for (var b = 1; b < 4; b++) {
a += (this.charAt(b) + this.charAt(b)).toLowerCase()
}
}
if (this.length == 7) {
a = this.toLowerCase()
}
}
}
return (a.length == 7 ? a : (arguments[0] || this))
};
Element.collectTextNodes = function (a) {
return $A($(a).childNodes).collect(function (b) {
return (b.nodeType == 3 ? b.nodeValue : (b.hasChildNodes() ? Element.collectTextNodes(b) : ""))
}).flatten().join("")
};
Element.collectTextNodesIgnoreClass = function (a, b) {
return $A($(a).childNodes).collect(function (c) {
return (c.nodeType == 3 ? c.nodeValue : ((c.hasChildNodes() && !Element.hasClassName(c, b)) ? Element.collectTextNodesIgnoreClass(c, b) : ""))
}).flatten().join("")
};
Element.setContentZoom = function (a, b) {
a = $(a);
a.setStyle({fontSize: (b / 100) + "em"});
if (Prototype.Browser.WebKit) {
window.scrollBy(0, 0)
}
return a
};
Element.getInlineOpacity = function (a) {
return $(a).style.opacity || ""
};
Element.forceRerendering = function (a) {
try {
a = $(a);
var c = document.createTextNode(" ");
a.appendChild(c);
a.removeChild(c)
} catch (b) {
}
};
var Effect = {
_elementDoesNotExistError: {
name: "ElementDoesNotExistError",
message: "The specified DOM element does not exist, but is required for this effect to operate"
},
Transitions: {
linear: Prototype.K, sinoidal: function (a) {
return (-Math.cos(a * Math.PI) / 2) + 0.5
}, reverse: function (a) {
return 1 - a
}, flicker: function (a) {
var a = ((-Math.cos(a * Math.PI) / 4) + 0.75) + Math.random() / 4;
return a > 1 ? 1 : a
}, wobble: function (a) {
return (-Math.cos(a * Math.PI * (9 * a)) / 2) + 0.5
}, pulse: function (b, a) {
return (-Math.cos((b * ((a || 5) - 0.5) * 2) * Math.PI) / 2) + 0.5
}, spring: function (a) {
return 1 - (Math.cos(a * 4.5 * Math.PI) * Math.exp(-a * 6))
}, none: function (a) {
return 0
}, full: function (a) {
return 1
}
},
DefaultOptions: {duration: 1, fps: 100, sync: false, from: 0, to: 1, delay: 0, queue: "parallel"},
tagifyText: function (a) {
var b = "position:relative";
if (Prototype.Browser.IE) {
b += ";zoom:1"
}
a = $(a);
$A(a.childNodes).each(function (c) {
if (c.nodeType == 3) {
c.nodeValue.toArray().each(function (d) {
a.insertBefore(new Element("span", {style: b}).update(d == " " ? String.fromCharCode(160) : d), c)
});
Element.remove(c)
}
})
},
multiple: function (b, c) {
var e;
if (((typeof b == "object") || Object.isFunction(b)) && (b.length)) {
e = b
} else {
e = $(b).childNodes
}
var a = Object.extend({speed: 0.1, delay: 0}, arguments[2] || {});
var d = a.delay;
$A(e).each(function (g, f) {
new c(g, Object.extend(a, {delay: f * a.speed + d}))
})
},
PAIRS: {slide: ["SlideDown", "SlideUp"], blind: ["BlindDown", "BlindUp"], appear: ["Appear", "Fade"]},
toggle: function (b, c, a) {
b = $(b);
c = (c || "appear").toLowerCase();
return Effect[Effect.PAIRS[c][b.visible() ? 1 : 0]](b, Object.extend({
queue: {
position: "end",
scope: (b.id || "global"),
limit: 1
}
}, a || {}))
}
};
Effect.DefaultOptions.transition = Effect.Transitions.sinoidal;
Effect.ScopedQueue = Class.create(Enumerable, {
initialize: function () {
this.effects = [];
this.interval = null
}, _each: function (a) {
this.effects._each(a)
}, add: function (b) {
var c = new Date().getTime();
var a = Object.isString(b.options.queue) ? b.options.queue : b.options.queue.position;
switch (a) {
case"front":
this.effects.findAll(function (d) {
return d.state == "idle"
}).each(function (d) {
d.startOn += b.finishOn;
d.finishOn += b.finishOn
});
break;
case"with-last":
c = this.effects.pluck("startOn").max() || c;
break;
case"end":
c = this.effects.pluck("finishOn").max() || c;
break
}
b.startOn += c;
b.finishOn += c;
if (!b.options.queue.limit || (this.effects.length < b.options.queue.limit)) {
this.effects.push(b)
}
if (!this.interval) {
this.interval = setInterval(this.loop.bind(this), 15)
}
}, remove: function (a) {
this.effects = this.effects.reject(function (b) {
return b == a
});
if (this.effects.length == 0) {
clearInterval(this.interval);
this.interval = null
}
}, loop: function () {
var c = new Date().getTime();
for (var b = 0, a = this.effects.length; b < a; b++) {
this.effects[b] && this.effects[b].loop(c)
}
}
});
Effect.Queues = {
instances: $H(), get: function (a) {
if (!Object.isString(a)) {
return a
}
return this.instances.get(a) || this.instances.set(a, new Effect.ScopedQueue())
}
};
Effect.Queue = Effect.Queues.get("global");
Effect.Base = Class.create({
position: null, start: function (a) {
if (a && a.transition === false) {
a.transition = Effect.Transitions.linear
}
this.options = Object.extend(Object.extend({}, Effect.DefaultOptions), a || {});
this.currentFrame = 0;
this.state = "idle";
this.startOn = this.options.delay * 1000;
this.finishOn = this.startOn + (this.options.duration * 1000);
this.fromToDelta = this.options.to - this.options.from;
this.totalTime = this.finishOn - this.startOn;
this.totalFrames = this.options.fps * this.options.duration;
this.render = (function () {
function b(d, c) {
if (d.options[c + "Internal"]) {
d.options[c + "Internal"](d)
}
if (d.options[c]) {
d.options[c](d)
}
}
return function (c) {
if (this.state === "idle") {
this.state = "running";
b(this, "beforeSetup");
if (this.setup) {
this.setup()
}
b(this, "afterSetup")
}
if (this.state === "running") {
c = (this.options.transition(c) * this.fromToDelta) + this.options.from;
this.position = c;
b(this, "beforeUpdate");
if (this.update) {
this.update(c)
}
b(this, "afterUpdate")
}
}
})();
this.event("beforeStart");
if (!this.options.sync) {
Effect.Queues.get(Object.isString(this.options.queue) ? "global" : this.options.queue.scope).add(this)
}
}, loop: function (c) {
if (c >= this.startOn) {
if (c >= this.finishOn) {
this.render(1);
this.cancel();
this.event("beforeFinish");
if (this.finish) {
this.finish()
}
this.event("afterFinish");
return
}
var b = (c - this.startOn) / this.totalTime, a = (b * this.totalFrames).round();
if (a > this.currentFrame) {
this.render(b);
this.currentFrame = a
}
}
}, cancel: function () {
if (!this.options.sync) {
Effect.Queues.get(Object.isString(this.options.queue) ? "global" : this.options.queue.scope).remove(this)
}
this.state = "finished"
}, event: function (a) {
if (this.options[a + "Internal"]) {
this.options[a + "Internal"](this)
}
if (this.options[a]) {
this.options[a](this)
}
}, inspect: function () {
var a = $H();
for (property in this) {
if (!Object.isFunction(this[property])) {
a.set(property, this[property])
}
}
return "#<Effect:" + a.inspect() + ",options:" + $H(this.options).inspect() + ">"
}
});
Effect.Parallel = Class.create(Effect.Base, {
initialize: function (a) {
this.effects = a || [];
this.start(arguments[1])
}, update: function (a) {
this.effects.invoke("render", a)
}, finish: function (a) {
this.effects.each(function (b) {
b.render(1);
b.cancel();
b.event("beforeFinish");
if (b.finish) {
b.finish(a)
}
b.event("afterFinish")
})
}
});
Effect.Tween = Class.create(Effect.Base, {
initialize: function (c, f, e) {
c = Object.isString(c) ? $(c) : c;
var b = $A(arguments), d = b.last(), a = b.length == 5 ? b[3] : null;
this.method = Object.isFunction(d) ? d.bind(c) : Object.isFunction(c[d]) ? c[d].bind(c) : function (g) {
c[d] = g
};
this.start(Object.extend({from: f, to: e}, a || {}))
}, update: function (a) {
this.method(a)
}
});
Effect.Event = Class.create(Effect.Base, {
initialize: function () {
this.start(Object.extend({duration: 0}, arguments[0] || {}))
}, update: Prototype.emptyFunction
});
Effect.Opacity = Class.create(Effect.Base, {
initialize: function (b) {
this.element = $(b);
if (!this.element) {
throw (Effect._elementDoesNotExistError)
}
if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout)) {
this.element.setStyle({zoom: 1})
}
var a = Object.extend({from: this.element.getOpacity() || 0, to: 1}, arguments[1] || {});
this.start(a)
}, update: function (a) {
this.element.setOpacity(a)
}
});
Effect.Move = Class.create(Effect.Base, {
initialize: function (b) {
this.element = $(b);
if (!this.element) {
throw (Effect._elementDoesNotExistError)
}
var a = Object.extend({x: 0, y: 0, mode: "relative"}, arguments[1] || {});
this.start(a)
}, setup: function () {
this.element.makePositioned();
this.originalLeft = parseFloat(this.element.getStyle("left") || "0");
this.originalTop = parseFloat(this.element.getStyle("top") || "0");
if (this.options.mode == "absolute") {
this.options.x = this.options.x - this.originalLeft;
this.options.y = this.options.y - this.originalTop
}
}, update: function (a) {
this.element.setStyle({
left: (this.options.x * a + this.originalLeft).round() + "px",
top: (this.options.y * a + this.originalTop).round() + "px"
})
}
});
Effect.MoveBy = function (b, a, c) {
return new Effect.Move(b, Object.extend({x: c, y: a}, arguments[3] || {}))
};
Effect.Scale = Class.create(Effect.Base, {
initialize: function (b, c) {
this.element = $(b);
if (!this.element) {
throw (Effect._elementDoesNotExistError)
}
var a = Object.extend({
scaleX: true,
scaleY: true,
scaleContent: true,
scaleFromCenter: false,
scaleMode: "box",
scaleFrom: 100,
scaleTo: c
}, arguments[2] || {});
this.start(a)
}, setup: function () {
this.restoreAfterFinish = this.options.restoreAfterFinish || false;
this.elementPositioning = this.element.getStyle("position");
this.originalStyle = {};
["top", "left", "width", "height", "fontSize"].each(function (b) {
this.originalStyle[b] = this.element.style[b]
}.bind(this));
this.originalTop = this.element.offsetTop;
this.originalLeft = this.element.offsetLeft;
var a = this.element.getStyle("font-size") || "100%";
["em", "px", "%", "pt"].each(function (b) {
if (a.indexOf(b) > 0) {
this.fontSize = parseFloat(a);
this.fontSizeType = b
}
}.bind(this));
this.factor = (this.options.scaleTo - this.options.scaleFrom) / 100;
this.dims = null;
if (this.options.scaleMode == "box") {
this.dims = [this.element.offsetHeight, this.element.offsetWidth]
}
if (/^content/.test(this.options.scaleMode)) {
this.dims = [this.element.scrollHeight, this.element.scrollWidth]
}
if (!this.dims) {
this.dims = [this.options.scaleMode.originalHeight, this.options.scaleMode.originalWidth]
}
}, update: function (a) {
var b = (this.options.scaleFrom / 100) + (this.factor * a);
if (this.options.scaleContent && this.fontSize) {
this.element.setStyle({fontSize: this.fontSize * b + this.fontSizeType})
}
this.setDimensions(this.dims[0] * b, this.dims[1] * b)
}, finish: function (a) {
if (this.restoreAfterFinish) {
this.element.setStyle(this.originalStyle)
}
}, setDimensions: function (a, e) {
var f = {};
if (this.options.scaleX) {
f.width = e.round() + "px"
}
if (this.options.scaleY) {
f.height = a.round() + "px"
}
if (this.options.scaleFromCenter) {
var c = (a - this.dims[0]) / 2;
var b = (e - this.dims[1]) / 2;
if (this.elementPositioning == "absolute") {
if (this.options.scaleY) {
f.top = this.originalTop - c + "px"
}
if (this.options.scaleX) {
f.left = this.originalLeft - b + "px"
}
} else {
if (this.options.scaleY) {
f.top = -c + "px"
}
if (this.options.scaleX) {
f.left = -b + "px"
}
}
}
this.element.setStyle(f)
}
});
Effect.Highlight = Class.create(Effect.Base, {
initialize: function (b) {
this.element = $(b);
if (!this.element) {
throw (Effect._elementDoesNotExistError)
}
var a = Object.extend({startcolor: "#ffff99"}, arguments[1] || {});
this.start(a)
}, setup: function () {
if (this.element.getStyle("display") == "none") {
this.cancel();
return
}
this.oldStyle = {};
if (!this.options.keepBackgroundImage) {
this.oldStyle.backgroundImage = this.element.getStyle("background-image");
this.element.setStyle({backgroundImage: "none"})
}
if (!this.options.endcolor) {
this.options.endcolor = this.element.getStyle("background-color").parseColor("#ffffff")
}
if (!this.options.restorecolor) {
this.options.restorecolor = this.element.getStyle("background-color")
}
this._base = $R(0, 2).map(function (a) {
return parseInt(this.options.startcolor.slice(a * 2 + 1, a * 2 + 3), 16)
}.bind(this));
this._delta = $R(0, 2).map(function (a) {
return parseInt(this.options.endcolor.slice(a * 2 + 1, a * 2 + 3), 16) - this._base[a]
}.bind(this))
}, update: function (a) {
this.element.setStyle({
backgroundColor: $R(0, 2).inject("#", function (b, c, d) {
return b + ((this._base[d] + (this._delta[d] * a)).round().toColorPart())
}.bind(this))
})
}, finish: function () {
this.element.setStyle(Object.extend(this.oldStyle, {backgroundColor: this.options.restorecolor}))
}
});
Effect.ScrollTo = function (c) {
var b = arguments[1] || {}, a = document.viewport.getScrollOffsets(), d = $(c).cumulativeOffset();
if (b.offset) {
d[1] += b.offset
}
return new Effect.Tween(null, a.top, d[1], b, function (e) {
scrollTo(a.left, e.round())
})
};
Effect.Fade = function (c) {
c = $(c);
var a = c.getInlineOpacity();
var b = Object.extend({
from: c.getOpacity() || 1, to: 0, afterFinishInternal: function (d) {
if (d.options.to != 0) {
return
}
d.element.hide().setStyle({opacity: a})
}
}, arguments[1] || {});
return new Effect.Opacity(c, b)
};
Effect.Appear = function (b) {
b = $(b);
var a = Object.extend({
from: (b.getStyle("display") == "none" ? 0 : b.getOpacity() || 0),
to: 1,
afterFinishInternal: function (c) {
c.element.forceRerendering()
},
beforeSetup: function (c) {
c.element.setOpacity(c.options.from).show()
}
}, arguments[1] || {});
return new Effect.Opacity(b, a)
};
Effect.Puff = function (b) {
b = $(b);
var a = {
opacity: b.getInlineOpacity(),
position: b.getStyle("position"),
top: b.style.top,
left: b.style.left,
width: b.style.width,
height: b.style.height
};
return new Effect.Parallel([new Effect.Scale(b, 200, {
sync: true,
scaleFromCenter: true,
scaleContent: true,
restoreAfterFinish: true
}), new Effect.Opacity(b, {sync: true, to: 0})], Object.extend({
duration: 1, beforeSetupInternal: function (c) {
Position.absolutize(c.effects[0].element)
}, afterFinishInternal: function (c) {
c.effects[0].element.hide().setStyle(a)
}
}, arguments[1] || {}))
};
Effect.BlindUp = function (a) {
a = $(a);
a.makeClipping();
return new Effect.Scale(a, 0, Object.extend({
scaleContent: false,
scaleX: false,
restoreAfterFinish: true,
afterFinishInternal: function (b) {
b.element.hide().undoClipping()
}
}, arguments[1] || {}))
};
Effect.BlindDown = function (b) {
b = $(b);
var a = b.getDimensions();
return new Effect.Scale(b, 100, Object.extend({
scaleContent: false,
scaleX: false,
scaleFrom: 0,
scaleMode: {originalHeight: a.height, originalWidth: a.width},
restoreAfterFinish: true,
afterSetup: function (c) {
c.element.makeClipping().setStyle({height: "0px"}).show()
},
afterFinishInternal: function (c) {
c.element.undoClipping()
}
}, arguments[1] || {}))
};
Effect.SwitchOff = function (b) {
b = $(b);
var a = b.getInlineOpacity();
return new Effect.Appear(b, Object.extend({
duration: 0.4,
from: 0,
transition: Effect.Transitions.flicker,
afterFinishInternal: function (c) {
new Effect.Scale(c.element, 1, {
duration: 0.3,
scaleFromCenter: true,
scaleX: false,
scaleContent: false,
restoreAfterFinish: true,
beforeSetup: function (d) {
d.element.makePositioned().makeClipping()
},
afterFinishInternal: function (d) {
d.element.hide().undoClipping().undoPositioned().setStyle({opacity: a})
}
})
}
}, arguments[1] || {}))
};
Effect.DropOut = function (b) {
b = $(b);
var a = {top: b.getStyle("top"), left: b.getStyle("left"), opacity: b.getInlineOpacity()};
return new Effect.Parallel([new Effect.Move(b, {x: 0, y: 100, sync: true}), new Effect.Opacity(b, {
sync: true,
to: 0
})], Object.extend({
duration: 0.5, beforeSetup: function (c) {
c.effects[0].element.makePositioned()
}, afterFinishInternal: function (c) {
c.effects[0].element.hide().undoPositioned().setStyle(a)
}
}, arguments[1] || {}))
};
Effect.Shake = function (d) {
d = $(d);
var b = Object.extend({distance: 20, duration: 0.5}, arguments[1] || {});
var e = parseFloat(b.distance);
var c = parseFloat(b.duration) / 10;
var a = {top: d.getStyle("top"), left: d.getStyle("left")};
return new Effect.Move(d, {
x: e, y: 0, duration: c, afterFinishInternal: function (f) {
new Effect.Move(f.element, {
x: -e * 2, y: 0, duration: c * 2, afterFinishInternal: function (g) {
new Effect.Move(g.element, {
x: e * 2, y: 0, duration: c * 2, afterFinishInternal: function (h) {
new Effect.Move(h.element, {
x: -e * 2,
y: 0,
duration: c * 2,
afterFinishInternal: function (i) {
new Effect.Move(i.element, {
x: e * 2,
y: 0,
duration: c * 2,
afterFinishInternal: function (k) {
new Effect.Move(k.element, {
x: -e,
y: 0,
duration: c,
afterFinishInternal: function (l) {
l.element.undoPositioned().setStyle(a)
}
})
}
})
}
})
}
})
}
})
}
})
};
Effect.SlideDown = function (c) {
c = $(c).cleanWhitespace();
var a = c.down().getStyle("bottom");
var b = c.getDimensions();
return new Effect.Scale(c, 100, Object.extend({
scaleContent: false,
scaleX: false,
scaleFrom: window.opera ? 0 : 1,
scaleMode: {originalHeight: b.height, originalWidth: b.width},
restoreAfterFinish: true,
afterSetup: function (d) {
d.element.makePositioned();
d.element.down().makePositioned();
if (window.opera) {
d.element.setStyle({top: ""})
}
d.element.makeClipping().setStyle({height: "0px"}).show()
},
afterUpdateInternal: function (d) {
d.element.down().setStyle({bottom: (d.dims[0] - d.element.clientHeight) + "px"})
},
afterFinishInternal: function (d) {
d.element.undoClipping().undoPositioned();
d.element.down().undoPositioned().setStyle({bottom: a})
}
}, arguments[1] || {}))
};
Effect.SlideUp = function (c) {
c = $(c).cleanWhitespace();
var a = c.down().getStyle("bottom");
var b = c.getDimensions();
return new Effect.Scale(c, window.opera ? 0 : 1, Object.extend({
scaleContent: false,
scaleX: false,
scaleMode: "box",
scaleFrom: 100,
scaleMode: {originalHeight: b.height, originalWidth: b.width},
restoreAfterFinish: true,
afterSetup: function (d) {
d.element.makePositioned();
d.element.down().makePositioned();
if (window.opera) {
d.element.setStyle({top: ""})
}
d.element.makeClipping().show()
},
afterUpdateInternal: function (d) {
d.element.down().setStyle({bottom: (d.dims[0] - d.element.clientHeight) + "px"})
},
afterFinishInternal: function (d) {
d.element.hide().undoClipping().undoPositioned();
d.element.down().undoPositioned().setStyle({bottom: a})
}
}, arguments[1] || {}))
};
Effect.Squish = function (a) {
return new Effect.Scale(a, window.opera ? 1 : 0, {
restoreAfterFinish: true, beforeSetup: function (b) {
b.element.makeClipping()
}, afterFinishInternal: function (b) {
b.element.hide().undoClipping()
}
})
};
Effect.Grow = function (c) {
c = $(c);
var b = Object.extend({
direction: "center",
moveTransition: Effect.Transitions.sinoidal,
scaleTransition: Effect.Transitions.sinoidal,
opacityTransition: Effect.Transitions.full
}, arguments[1] || {});
var a = {
top: c.style.top,
left: c.style.left,
height: c.style.height,
width: c.style.width,
opacity: c.getInlineOpacity()
};
var g = c.getDimensions();
var h, f;
var e, d;
switch (b.direction) {
case"top-left":
h = f = e = d = 0;
break;
case"top-right":
h = g.width;
f = d = 0;
e = -g.width;
break;
case"bottom-left":
h = e = 0;
f = g.height;
d = -g.height;
break;
case"bottom-right":
h = g.width;
f = g.height;
e = -g.width;
d = -g.height;
break;
case"center":
h = g.width / 2;
f = g.height / 2;
e = -g.width / 2;
d = -g.height / 2;
break
}
return new Effect.Move(c, {
x: h, y: f, duration: 0.01, beforeSetup: function (i) {
i.element.hide().makeClipping().makePositioned()
}, afterFinishInternal: function (i) {
new Effect.Parallel([new Effect.Opacity(i.element, {
sync: true,
to: 1,
from: 0,
transition: b.opacityTransition
}), new Effect.Move(i.element, {
x: e,
y: d,
sync: true,
transition: b.moveTransition
}), new Effect.Scale(i.element, 100, {
scaleMode: {originalHeight: g.height, originalWidth: g.width},
sync: true,
scaleFrom: window.opera ? 1 : 0,
transition: b.scaleTransition,
restoreAfterFinish: true
})], Object.extend({
beforeSetup: function (k) {
k.effects[0].element.setStyle({height: "0px"}).show()
}, afterFinishInternal: function (k) {
k.effects[0].element.undoClipping().undoPositioned().setStyle(a)
}
}, b))
}
})
};
Effect.Shrink = function (c) {
c = $(c);
var b = Object.extend({
direction: "center",
moveTransition: Effect.Transitions.sinoidal,
scaleTransition: Effect.Transitions.sinoidal,
opacityTransition: Effect.Transitions.none
}, arguments[1] || {});
var a = {
top: c.style.top,
left: c.style.left,
height: c.style.height,
width: c.style.width,
opacity: c.getInlineOpacity()
};
var f = c.getDimensions();
var e, d;
switch (b.direction) {
case"top-left":
e = d = 0;
break;
case"top-right":
e = f.width;
d = 0;
break;
case"bottom-left":
e = 0;
d = f.height;
break;
case"bottom-right":
e = f.width;
d = f.height;
break;
case"center":
e = f.width / 2;
d = f.height / 2;
break
}
return new Effect.Parallel([new Effect.Opacity(c, {
sync: true,
to: 0,
from: 1,
transition: b.opacityTransition
}), new Effect.Scale(c, window.opera ? 1 : 0, {
sync: true,
transition: b.scaleTransition,
restoreAfterFinish: true
}), new Effect.Move(c, {
x: e,
y: d,
sync: true,
transition: b.moveTransition
})], Object.extend({
beforeStartInternal: function (g) {
g.effects[0].element.makePositioned().makeClipping()
}, afterFinishInternal: function (g) {
g.effects[0].element.hide().undoClipping().undoPositioned().setStyle(a)
}
}, b))
};
Effect.Pulsate = function (c) {
c = $(c);
var b = arguments[1] || {}, a = c.getInlineOpacity(), e = b.transition || Effect.Transitions.linear,
d = function (f) {
return 1 - e((-Math.cos((f * (b.pulses || 5) * 2) * Math.PI) / 2) + 0.5)
};
return new Effect.Opacity(c, Object.extend(Object.extend({
duration: 2, from: 0, afterFinishInternal: function (f) {
f.element.setStyle({opacity: a})
}
}, b), {transition: d}))
};
Effect.Fold = function (b) {
b = $(b);
var a = {top: b.style.top, left: b.style.left, width: b.style.width, height: b.style.height};
b.makeClipping();
return new Effect.Scale(b, 5, Object.extend({
scaleContent: false, scaleX: false, afterFinishInternal: function (c) {
new Effect.Scale(b, 1, {
scaleContent: false, scaleY: false, afterFinishInternal: function (d) {
d.element.hide().undoClipping().setStyle(a)
}
})
}
}, arguments[1] || {}))
};
Effect.Morph = Class.create(Effect.Base, {
initialize: function (c) {
this.element = $(c);
if (!this.element) {
throw (Effect._elementDoesNotExistError)
}
var a = Object.extend({style: {}}, arguments[1] || {});
if (!Object.isString(a.style)) {
this.style = $H(a.style)
} else {
if (a.style.include(":")) {
this.style = a.style.parseStyle()
} else {
this.element.addClassName(a.style);
this.style = $H(this.element.getStyles());
this.element.removeClassName(a.style);
var b = this.element.getStyles();
this.style = this.style.reject(function (d) {
return d.value == b[d.key]
});
a.afterFinishInternal = function (d) {
d.element.addClassName(d.options.style);
d.transforms.each(function (e) {
d.element.style[e.style] = ""
})
}
}
}
this.start(a)
}, setup: function () {
function a(b) {
if (!b || ["rgba(0, 0, 0, 0)", "transparent"].include(b)) {
b = "#ffffff"
}
b = b.parseColor();
return $R(0, 2).map(function (c) {
return parseInt(b.slice(c * 2 + 1, c * 2 + 3), 16)
})
}
this.transforms = this.style.map(function (g) {
var f = g[0], e = g[1], d = null;
if (e.parseColor("#zzzzzz") != "#zzzzzz") {
e = e.parseColor();
d = "color"
} else {
if (f == "opacity") {
e = parseFloat(e);
if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout)) {
this.element.setStyle({zoom: 1})
}
} else {
if (Element.CSS_LENGTH.test(e)) {
var c = e.match(/^([\+\-]?[0-9\.]+)(.*)$/);
e = parseFloat(c[1]);
d = (c.length == 3) ? c[2] : null
}
}
}
var b = this.element.getStyle(f);
return {
style: f.camelize(),
originalValue: d == "color" ? a(b) : parseFloat(b || 0),
targetValue: d == "color" ? a(e) : e,
unit: d
}
}.bind(this)).reject(function (b) {
return ((b.originalValue == b.targetValue) || (b.unit != "color" && (isNaN(b.originalValue) || isNaN(b.targetValue))))
})
}, update: function (a) {
var d = {}, b, c = this.transforms.length;
while (c--) {
d[(b = this.transforms[c]).style] = b.unit == "color" ? "#" + (Math.round(b.originalValue[0] + (b.targetValue[0] - b.originalValue[0]) * a)).toColorPart() + (Math.round(b.originalValue[1] + (b.targetValue[1] - b.originalValue[1]) * a)).toColorPart() + (Math.round(b.originalValue[2] + (b.targetValue[2] - b.originalValue[2]) * a)).toColorPart() : (b.originalValue + (b.targetValue - b.originalValue) * a).toFixed(3) + (b.unit === null ? "" : b.unit)
}
this.element.setStyle(d, true)
}
});
Effect.Transform = Class.create({
initialize: function (a) {
this.tracks = [];
this.options = arguments[1] || {};
this.addTracks(a)
}, addTracks: function (a) {
a.each(function (b) {
b = $H(b);
var c = b.values().first();
this.tracks.push($H({ids: b.keys().first(), effect: Effect.Morph, options: {style: c}}))
}.bind(this));
return this
}, play: function () {
return new Effect.Parallel(this.tracks.map(function (a) {
var d = a.get("ids"), c = a.get("effect"), b = a.get("options");
var e = [$(d) || $$(d)].flatten();
return e.map(function (f) {
return new c(f, Object.extend({sync: true}, b))
})
}).flatten(), this.options)
}
});
Element.CSS_PROPERTIES = $w("backgroundColor backgroundPosition borderBottomColor borderBottomStyle borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth borderRightColor borderRightStyle borderRightWidth borderSpacing borderTopColor borderTopStyle borderTopWidth bottom clip color fontSize fontWeight height left letterSpacing lineHeight marginBottom marginLeft marginRight marginTop markerOffset maxHeight maxWidth minHeight minWidth opacity outlineColor outlineOffset outlineWidth paddingBottom paddingLeft paddingRight paddingTop right textIndent top width wordSpacing zIndex");
Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;
String.__parseStyleElement = document.createElement("div");
String.prototype.parseStyle = function () {
var b, a = $H();
if (Prototype.Browser.WebKit) {
b = new Element("div", {style: this}).style
} else {
String.__parseStyleElement.innerHTML = '<div style="' + this + '"></div>';
b = String.__parseStyleElement.childNodes[0].style
}
Element.CSS_PROPERTIES.each(function (c) {
if (b[c]) {
a.set(c, b[c])
}
});
if (Prototype.Browser.IE && this.include("opacity")) {
a.set("opacity", this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1])
}
return a
};
if (document.defaultView && document.defaultView.getComputedStyle) {
Element.getStyles = function (b) {
var a = document.defaultView.getComputedStyle($(b), null);
return Element.CSS_PROPERTIES.inject({}, function (c, d) {
c[d] = a[d];
return c
})
}
} else {
Element.getStyles = function (b) {
b = $(b);
var a = b.currentStyle, c;
c = Element.CSS_PROPERTIES.inject({}, function (d, e) {
d[e] = a[e];
return d
});
if (!c.opacity) {
c.opacity = b.getOpacity()
}
return c
}
}
Effect.Methods = {
morph: function (a, b) {
a = $(a);
new Effect.Morph(a, Object.extend({style: b}, arguments[2] || {}));
return a
}, visualEffect: function (c, e, b) {
c = $(c);
var d = e.dasherize().camelize(), a = d.charAt(0).toUpperCase() + d.substring(1);
new Effect[a](c, b);
return c
}, highlight: function (b, a) {
b = $(b);
new Effect.Highlight(b, a);
return b
}
};
$w("fade appear grow shrink fold blindUp blindDown slideUp slideDown pulsate shake puff squish switchOff dropOut").each(function (a) {
Effect.Methods[a] = function (c, b) {
c = $(c);
Effect[a.charAt(0).toUpperCase() + a.substring(1)](c, b);
return c
}
});
$w("getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles").each(function (a) {
Effect.Methods[a] = Element[a]
});
Element.addMethods(Effect.Methods);
function validateCreditCard(p) {
var o = "0123456789", n = "", f, e, d, b, g, l, h;
for (f = 0; f < p.length; f++) {
h = p.charAt(f);
if (o.indexOf(h, 0) !== -1) {
n += h
}
}
e = n.length / 2;
d = Math.floor(e);
b = Math.ceil(e) - d;
g = 0;
for (f = 0; f < d; f++) {
l = n.charAt(f * 2 + b) * 2;
g += l > 9 ? Math.floor(l / 10 + l % 10) : l
}
for (f = 0; f < d + b; f++) {
g += n.charAt(f * 2 + 1 - b) * 1
}
return g % 10 === 0
}
var Validator = Class.create();
Validator.prototype = {
initialize: function (c, b, d, a) {
if (typeof d == "function") {
this.options = $H(a);
this._test = d
} else {
this.options = $H(d);
this._test = function () {
return true
}
}
this.error = b || "Validation failed.";
this.className = c
}, test: function (a, b) {
return (this._test(a, b) && this.options.all(function (c) {
return Validator.methods[c.key] ? Validator.methods[c.key](a, b, c.value) : true
}))
}
};
Validator.methods = {
pattern: function (a, c, b) {
return Validation.get("IsEmpty").test(a) || b.test(a)
}, minLength: function (a, c, b) {
return a.length >= b
}, maxLength: function (a, c, b) {
return a.length <= b
}, min: function (a, c, b) {
return a >= parseFloat(b)
}, max: function (a, c, b) {
return a <= parseFloat(b)
}, notOneOf: function (a, c, b) {
return $A(b).all(function (d) {
return a != d
})
}, oneOf: function (a, c, b) {
return $A(b).any(function (d) {
return a == d
})
}, is: function (a, c, b) {
return a == b
}, isNot: function (a, c, b) {
return a != b
}, equalToField: function (a, c, b) {
return a == $F(b)
}, notEqualToField: function (a, c, b) {
return a != $F(b)
}, include: function (a, c, b) {
return $A(b).all(function (d) {
return Validation.get(d).test(a, c)
})
}
};
var Validation = Class.create();
Validation.defaultOptions = {
onSubmit: true,
stopOnFirst: false,
immediate: false,
focusOnError: true,
useTitles: false,
addClassNameToContainer: false,
containerClassName: ".input-box",
onFormValidate: function (a, b) {
},
onElementValidate: function (a, b) {
}
};
Validation.prototype = {
initialize: function (b, a) {
this.form = $(b);
if (!this.form) {
return
}
this.options = Object.extend({
onSubmit: Validation.defaultOptions.onSubmit,
stopOnFirst: Validation.defaultOptions.stopOnFirst,
immediate: Validation.defaultOptions.immediate,
focusOnError: Validation.defaultOptions.focusOnError,
useTitles: Validation.defaultOptions.useTitles,
onFormValidate: Validation.defaultOptions.onFormValidate,
onElementValidate: Validation.defaultOptions.onElementValidate
}, a || {});
if (this.options.onSubmit) {
Event.observe(this.form, "submit", this.onSubmit.bind(this), false)
}
if (this.options.immediate) {
Form.getElements(this.form).each(function (c) {
if (c.tagName.toLowerCase() == "select") {
Event.observe(c, "blur", this.onChange.bindAsEventListener(this))
}
if (c.type.toLowerCase() == "radio" || c.type.toLowerCase() == "checkbox") {
Event.observe(c, "click", this.onChange.bindAsEventListener(this))
} else {
Event.observe(c, "change", this.onChange.bindAsEventListener(this))
}
}, this)
}
}, onChange: function (a) {
Validation.isOnChange = true;
Validation.validate(Event.element(a), {
useTitle: this.options.useTitles,
onElementValidate: this.options.onElementValidate
});
Validation.isOnChange = false
}, onSubmit: function (a) {
if (!this.validate()) {
Event.stop(a)
}
}, validate: function () {
var a = false;
var b = this.options.useTitles;
var d = this.options.onElementValidate;
try {
if (this.options.stopOnFirst) {
a = Form.getElements(this.form).all(function (e) {
if (e.hasClassName("local-validation") && !this.isElementInForm(e, this.form)) {
return true
}
return Validation.validate(e, {useTitle: b, onElementValidate: d})
}, this)
} else {
a = Form.getElements(this.form).collect(function (e) {
if (e.hasClassName("local-validation") && !this.isElementInForm(e, this.form)) {
return true
}
if (e.hasClassName("validation-disabled")) {
return true
}
return Validation.validate(e, {useTitle: b, onElementValidate: d})
}, this).all()
}
} catch (c) {
}
if (!a && this.options.focusOnError) {
try {
Form.getElements(this.form).findAll(function (e) {
return $(e).hasClassName("validation-failed")
}).first().focus()
} catch (c) {
}
}
this.options.onFormValidate(a, this.form);
return a
}, reset: function () {
Form.getElements(this.form).each(Validation.reset)
}, isElementInForm: function (c, b) {
var a = c.up("form");
if (a == b) {
return true
}
return false
}
};
Object.extend(Validation, {
validate: function (c, a) {
a = Object.extend({
useTitle: false, onElementValidate: function (d, e) {
}
}, a || {});
c = $(c);
var b = $w(c.className);
return result = b.all(function (d) {
var e = Validation.test(d, c, a.useTitle);
a.onElementValidate(e, c);
return e
})
}, insertAdvice: function (d, b) {
var a = $(d).up(".field-row");
if (a) {
Element.insert(a, {after: b})
} else {
if (d.up("td.value")) {
d.up("td.value").insert({bottom: b})
} else {
if (d.advaiceContainer && $(d.advaiceContainer)) {
$(d.advaiceContainer).update(b)
} else {
switch (d.type.toLowerCase()) {
case"checkbox":
case"radio":
var c = d.parentNode;
if (c) {
Element.insert(c, {bottom: b})
} else {
Element.insert(d, {after: b})
}
break;
default:
Element.insert(d, {after: b})
}
}
}
}
}, showAdvice: function (c, b, a) {
if (!c.advices) {
c.advices = new Hash()
} else {
c.advices.each(function (d) {
if (!b || d.value.id != b.id) {
this.hideAdvice(c, d.value)
}
}.bind(this))
}
c.advices.set(a, b);
if (typeof Effect == "undefined") {
b.style.display = "block"
} else {
if (!b._adviceAbsolutize) {
new Effect.Appear(b, {duration: 1})
} else {
Position.absolutize(b);
b.show();
b.setStyle({top: b._adviceTop, left: b._adviceLeft, width: b._adviceWidth, "z-index": 1000});
b.addClassName("advice-absolute")
}
}
}, hideAdvice: function (b, a) {
if (a != null) {
new Effect.Fade(a, {
duration: 1, afterFinishInternal: function () {
a.hide()
}
})
}
}, updateCallback: function (elm, status) {
if (typeof elm.callbackFunction != "undefined") {
eval(elm.callbackFunction + "('" + elm.id + "','" + status + "')")
}
}, ajaxError: function (e, d) {
var c = "validate-ajax";
var b = Validation.getAdvice(c, e);
if (b == null) {
b = this.createAdvice(c, e, false, d)
}
this.showAdvice(e, b, "validate-ajax");
this.updateCallback(e, "failed");
e.addClassName("validation-failed");
e.addClassName("validate-ajax");
if (Validation.defaultOptions.addClassNameToContainer && Validation.defaultOptions.containerClassName != "") {
var a = e.up(Validation.defaultOptions.containerClassName);
if (a && this.allowContainerClassName(e)) {
a.removeClassName("validation-passed");
a.addClassName("validation-error")
}
}
}, allowContainerClassName: function (a) {
if (a.type == "radio" || a.type == "checkbox") {
return a.hasClassName("change-container-classname")
}
return true
}, test: function (d, i, g) {
var b = Validation.get(d);
var h = "__advice" + d.camelize();
try {
if (Validation.isVisible(i) && !b.test($F(i), i)) {
var c = Validation.getAdvice(d, i);
if (c == null) {
c = this.createAdvice(d, i, g)
}
this.showAdvice(i, c, d);
this.updateCallback(i, "failed");
i[h] = 1;
if (!i.advaiceContainer) {
i.removeClassName("validation-passed");
i.addClassName("validation-failed")
}
if (Validation.defaultOptions.addClassNameToContainer && Validation.defaultOptions.containerClassName != "") {
var a = i.up(Validation.defaultOptions.containerClassName);
if (a && this.allowContainerClassName(i)) {
a.removeClassName("validation-passed");
a.addClassName("validation-error")
}
}
return false
} else {
var c = Validation.getAdvice(d, i);
this.hideAdvice(i, c);
this.updateCallback(i, "passed");
i[h] = "";
i.removeClassName("validation-failed");
i.addClassName("validation-passed");
if (Validation.defaultOptions.addClassNameToContainer && Validation.defaultOptions.containerClassName != "") {
var a = i.up(Validation.defaultOptions.containerClassName);
if (a && !a.down(".validation-failed") && this.allowContainerClassName(i)) {
if (!Validation.get("IsEmpty").test(i.value) || !this.isVisible(i)) {
a.addClassName("validation-passed")
} else {
a.removeClassName("validation-passed")
}
a.removeClassName("validation-error")
}
}
return true
}
} catch (f) {
throw (f)
}
}, isVisible: function (a) {
while (a.tagName != "BODY") {
if (!$(a).visible()) {
return false
}
a = a.parentNode
}
return true
}, getAdvice: function (a, b) {
return $("advice-" + a + "-" + Validation.getElmID(b)) || $("advice-" + Validation.getElmID(b))
}, createAdvice: function (c, h, g, b) {
var a = Validation.get(c);
var f = g ? ((h && h.title) ? h.title : a.error) : a.error;
if (b) {
f = b
}
if (jQuery.mage.__) {
f = jQuery.mage.__(f)
}
advice = '<div class="validation-advice" id="advice-' + c + "-" + Validation.getElmID(h) + '" style="display:none">' + f + "</div>";
Validation.insertAdvice(h, advice);
advice = Validation.getAdvice(c, h);
if ($(h).hasClassName("absolute-advice")) {
var e = $(h).getDimensions();
var d = Position.cumulativeOffset(h);
advice._adviceTop = (d[1] + e.height) + "px";
advice._adviceLeft = (d[0]) + "px";
advice._adviceWidth = (e.width) + "px";
advice._adviceAbsolutize = true
}
return advice
}, getElmID: function (a) {
return a.id ? a.id : a.name
}, reset: function (b) {
b = $(b);
var a = $w(b.className);
a.each(function (e) {
var f = "__advice" + e.camelize();
if (b[f]) {
var d = Validation.getAdvice(e, b);
if (d) {
d.hide()
}
b[f] = ""
}
b.removeClassName("validation-failed");
b.removeClassName("validation-passed");
if (Validation.defaultOptions.addClassNameToContainer && Validation.defaultOptions.containerClassName != "") {
var c = b.up(Validation.defaultOptions.containerClassName);
if (c) {
c.removeClassName("validation-passed");
c.removeClassName("validation-error")
}
}
})
}, add: function (d, c, e, b) {
var a = {};
a[d] = new Validator(d, c, e, b);
Object.extend(Validation.methods, a)
}, addAllThese: function (a) {
var b = {};
$A(a).each(function (c) {
b[c[0]] = new Validator(c[0], c[1], c[2], (c.length > 3 ? c[3] : {}))
});
Object.extend(Validation.methods, b)
}, get: function (a) {
return Validation.methods[a] ? Validation.methods[a] : Validation.methods._LikeNoIDIEverSaw_
}, methods: {_LikeNoIDIEverSaw_: new Validator("_LikeNoIDIEverSaw_", "", {})}
});
Validation.add("IsEmpty", "", function (a) {
return (a == "" || (a == null) || (a.length == 0) || /^\s+$/.test(a))
});
Validation.addAllThese([["validate-no-html-tags", "HTML tags are not allowed", function (a) {
return !/<(\/)?\w+/.test(a)
}], ["validate-select", "Please select an option.", function (a) {
return ((a != "none") && (a != null) && (a.length != 0))
}], ["required-entry", "This is a required field.", function (a) {
return !Validation.get("IsEmpty").test(a)
}], ["validate-number", "Please enter a valid number in this field.", function (a) {
return Validation.get("IsEmpty").test(a) || (!isNaN(parseNumber(a)) && /^\s*-?\d*(\.\d*)?\s*$/.test(a))
}], ["validate-number-range", "The value is not within the specified range.", function (c, e) {
if (Validation.get("IsEmpty").test(c)) {
return true
}
var d = parseNumber(c);
if (isNaN(d)) {
return false
}
var b = /^number-range-(-?[\d.,]+)?-(-?[\d.,]+)?$/, a = true;
$w(e.className).each(function (g) {
var f = b.exec(g);
if (f) {
a = a && (f[1] == null || f[1] == "" || d >= parseNumber(f[1])) && (f[2] == null || f[2] == "" || d <= parseNumber(f[2]))
}
});
return a
}], ["validate-digits", "Please use numbers only in this field. Please avoid spaces or other characters such as dots or commas.", function (a) {
return Validation.get("IsEmpty").test(a) || !/[^\d]/.test(a)
}], ["validate-digits-range", "The value is not within the specified range.", function (c, e) {
if (Validation.get("IsEmpty").test(c)) {
return true
}
var d = parseNumber(c);
if (isNaN(d)) {
return false
}
var b = /^digits-range-(-?\d+)?-(-?\d+)?$/, a = true;
$w(e.className).each(function (g) {
var f = b.exec(g);
if (f) {
a = a && (f[1] == null || f[1] == "" || d >= parseNumber(f[1])) && (f[2] == null || f[2] == "" || d <= parseNumber(f[2]))
}
});
return a
}], ["validate-range", "The value is not within the specified range.", function (d, g) {
var e, f;
if (Validation.get("IsEmpty").test(d)) {
return true
} else {
if (Validation.get("validate-digits").test(d)) {
e = f = parseNumber(d)
} else {
var c = /^(-?\d+)?-(-?\d+)?$/.exec(d);
if (c) {
e = parseNumber(c[1]);
f = parseNumber(c[2]);
if (e > f) {
return false
}
} else {
return false
}
}
}
var b = /^range-(-?\d+)?-(-?\d+)?$/, a = true;
$w(g.className).each(function (h) {
var l = b.exec(h);
if (l) {
var k = parseNumber(l[1]);
var i = parseNumber(l[2]);
a = a && (isNaN(k) || e >= k) && (isNaN(i) || f <= i)
}
});
return a
}], ["validate-alpha", "Please use letters only (a-z or A-Z) in this field.", function (a) {
return Validation.get("IsEmpty").test(a) || /^[a-zA-Z]+$/.test(a)
}], ["validate-code", "Please use only lowercase letters (a-z), numbers (0-9) or underscore (_) in this field, and the first character should be a letter.", function (a) {
return Validation.get("IsEmpty").test(a) || /^[a-z]+[a-z0-9_]+$/.test(a)
}], ["validate-alphanum", "Please use only letters (a-z or A-Z) or numbers (0-9) in this field. No spaces or other characters are allowed.", function (a) {
return Validation.get("IsEmpty").test(a) || /^[a-zA-Z0-9]+$/.test(a)
}], ["validate-alphanum-with-spaces", "Please use only letters (a-z or A-Z), numbers (0-9) or spaces only in this field.", function (a) {
return Validation.get("IsEmpty").test(a) || /^[a-zA-Z0-9 ]+$/.test(a)
}], ["validate-street", 'Please use only letters (a-z or A-Z), numbers (0-9), spaces and "#" in this field.', function (a) {
return Validation.get("IsEmpty").test(a) || /^[ \w]{3,}([A-Za-z]\.)?([ \w]*\#\d+)?(\r\n| )[ \w]{3,}/.test(a)
}], ["validate-phoneStrict", "Please enter a valid phone number (Ex: 123-456-7890).", function (a) {
return Validation.get("IsEmpty").test(a) || /^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/.test(a)
}], ["validate-phoneLax", "Please enter a valid phone number (Ex: 123-456-7890).", function (a) {
return Validation.get("IsEmpty").test(a) || /^((\d[-. ]?)?((\(\d{3}\))|\d{3}))?[-. ]?\d{3}[-. ]?\d{4}$/.test(a)
}], ["validate-fax", "Please enter a valid fax number (Ex: 123-456-7890).", function (a) {
return Validation.get("IsEmpty").test(a) || /^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/.test(a)
}], ["validate-date", "Please enter a valid date.", function (a) {
var b = new Date(a);
return Validation.get("IsEmpty").test(a) || !isNaN(b)
}], ["validate-date-range", "Make sure the To Date is later than or the same as the From Date.", function (c, f) {
var b = /\bdate-range-(\w+)-(\w+)\b/.exec(f.className);
if (!b || b[2] == "to" || Validation.get("IsEmpty").test(c)) {
return true
}
var d = new Date().getFullYear() + "";
var a = function (g) {
g = g.split(/[.\/]/);
if (g[2] && g[2].length < 4) {
g[2] = d.substr(0, g[2].length) + g[2]
}
return new Date(g.join("/")).getTime()
};
var e = Element.select(f.form, ".validate-date-range.date-range-" + b[1] + "-to");
return !e.length || Validation.get("IsEmpty").test(e[0].value) || a(c) <= a(e[0].value)
}], ["validate-email", "Please enter a valid email address (Ex: johndoe@domain.com).", function (a) {
return Validation.get("IsEmpty").test(a) || /^([a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*@([a-z0-9-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z0-9-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*\.(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]){2,})$/i.test(a)
}], ["validate-emailSender", "Please use only visible characters and spaces.", function (a) {
return Validation.get("IsEmpty").test(a) || /^[\S ]+$/.test(a)
}], ["validate-password", "Please enter 6 or more characters. Leading and trailing spaces will be ignored.", function (a) {
var b = a.strip();
return !(b.length > 0 && b.length < 6)
}], ["validate-admin-password", "Please enter 7 or more characters, using both numeric and alphabetic.", function (a) {
var b = a.strip();
if (0 == b.length) {
return true
}
if (!(/[a-z]/i.test(a)) || !(/[0-9]/.test(a))) {
return false
}
return !(b.length < 7)
}], ["validate-cpassword", "Please make sure your passwords match.", function (a) {
var b = $("confirmation") ? $("confirmation") : $$(".validate-cpassword")[0];
var e = false;
if ($("password")) {
e = $("password")
}
var f = $$(".validate-password");
for (var c = 0; c < f.size(); c++) {
var d = f[c];
if (d.up("form").id == b.up("form").id) {
e = d
}
}
if ($$(".validate-admin-password").size()) {
e = $$(".validate-admin-password")[0]
}
return (e.value == b.value)
}], ["validate-both-passwords", "Please make sure your passwords match.", function (c, b) {
var a = $(b.form[b.name == "password" ? "confirmation" : "password"]), d = b.value == a.value;
if (d && a.hasClassName("validation-failed")) {
Validation.test(this.className, a)
}
return a.value == "" || d
}], ["validate-url", "Please enter a valid URL. Protocol is required (http://, https:// or ftp://)", function (a) {
a = (a || "").replace(/^\s+/, "").replace(/\s+$/, "");
return Validation.get("IsEmpty").test(a) || /^(http|https|ftp):\/\/(([A-Z0-9]([A-Z0-9_-]*[A-Z0-9]|))(\.[A-Z0-9]([A-Z0-9_-]*[A-Z0-9]|))*)(:(\d+))?(\/[A-Z0-9~](([A-Z0-9_~-]|\.)*[A-Z0-9~]|))*\/?(.*)?$/i.test(a)
}], ["validate-clean-url", 'Please enter a valid URL (Ex: "http://www.example.com" or "www.example.com").', function (a) {
return Validation.get("IsEmpty").test(a) || /^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+.(com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))?\/?/i.test(a) || /^(www)((\.[A-Z0-9][A-Z0-9_-]*)+.(com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))?\/?/i.test(a)
}], ["validate-identifier", 'Please enter a valid URL Key (Ex: "example-page", "example-page.html" or "anotherlevel/example-page").', function (a) {
return Validation.get("IsEmpty").test(a) || /^[a-z0-9][a-z0-9_\/-]+(\.[a-z0-9_-]+)?$/.test(a)
}], ["validate-xml-identifier", "Please enter a valid XML-identifier (Ex: something_1, block5, id-4).", function (a) {
return Validation.get("IsEmpty").test(a) || /^[A-Z][A-Z0-9_\/-]*$/i.test(a)
}], ["validate-ssn", "Please enter a valid social security number (Ex: 123-45-6789).", function (a) {
return Validation.get("IsEmpty").test(a) || /^\d{3}-?\d{2}-?\d{4}$/.test(a)
}], ["validate-zip-us", "Please enter a valid zip code (Ex: 90602 or 90602-1234).", function (a) {
return Validation.get("IsEmpty").test(a) || /(^\d{5}$)|(^\d{5}-\d{4}$)/.test(a)
}], ["validate-zip-international", "Please enter a valid zip code.", function (a) {
return true
}], ["validate-date-au", 'Please use this date format: dd/mm/yyyy (Ex: "17/03/2006" for the 17th of March, 2006).', function (a) {
if (Validation.get("IsEmpty").test(a)) {
return true
}
var b = /^(\d{2})\/(\d{2})\/(\d{4})$/;
if (!b.test(a)) {
return false
}
var c = new Date(a.replace(b, "$2/$1/$3"));
return (parseInt(RegExp.$2, 10) == (1 + c.getMonth())) && (parseInt(RegExp.$1, 10) == c.getDate()) && (parseInt(RegExp.$3, 10) == c.getFullYear())
}], ["validate-currency-dollar", "Please enter a valid $ amount (Ex: $100.00).", function (a) {
return Validation.get("IsEmpty").test(a) || /^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/.test(a)
}], ["validate-one-required", "Please select one of the options above.", function (a, d) {
var c = d.parentNode;
var b = c.getElementsByTagName("INPUT");
return $A(b).any(function (e) {
return $F(e)
})
}], ["validate-one-required-by-name", "Please select one of the options.", function (b, e) {
var a = $$('input[name="' + e.name.replace(/([\\"])/g, "\\$1") + '"]');
var c = 1;
for (var d = 0; d < a.length; d++) {
if ((a[d].type == "checkbox" || a[d].type == "radio") && a[d].checked == true) {
c = 0
}
if (Validation.isOnChange && (a[d].type == "checkbox" || a[d].type == "radio")) {
Validation.reset(a[d])
}
}
if (c == 0) {
return true
} else {
return false
}
}], ["validate-not-negative-number", "Please enter a number 0 or greater in this field.", function (a) {
if (Validation.get("IsEmpty").test(a)) {
return true
}
a = parseNumber(a);
return !isNaN(a) && a >= 0
}], ["validate-zero-or-greater", "Please enter a number 0 or greater in this field.", function (a) {
return Validation.get("validate-not-negative-number").test(a)
}], ["validate-greater-than-zero", "Please enter a number greater than 0 in this field.", function (a) {
if (Validation.get("IsEmpty").test(a)) {
return true
}
a = parseNumber(a);
return !isNaN(a) && a > 0
}], ["validate-state", "Please select State/Province.", function (a) {
return (a != 0 || a == "")
}], ["validate-new-password", "Please enter 6 or more characters. Leading and trailing spaces will be ignored.", function (a) {
if (!Validation.get("validate-password").test(a)) {
return false
}
if (Validation.get("IsEmpty").test(a) && a != "") {
return false
}
return true
}], ["validate-cc-number", "Please enter a valid credit card number.", function (a, c) {
var b = $(c.id.substr(0, c.id.indexOf("_cc_number")) + "_cc_type");
if (b && typeof Validation.creditCartTypes.get(b.value) != "undefined" && Validation.creditCartTypes.get(b.value)[2] == false) {
if (!Validation.get("IsEmpty").test(a) && Validation.get("validate-digits").test(a)) {
return true
} else {
return false
}
}
return validateCreditCard(a)
}], ["validate-cc-type", "Credit card number does not match credit card type.", function (b, e) {
e.value = removeDelimiters(e.value);
b = removeDelimiters(b);
var d = $(e.id.substr(0, e.id.indexOf("_cc_number")) + "_cc_type");
if (!d) {
return true
}
var c = d.value;
if (typeof Validation.creditCartTypes.get(c) == "undefined") {
return false
}
if (Validation.creditCartTypes.get(c)[0] == false) {
return true
}
var a = "";
Validation.creditCartTypes.each(function (f) {
if (f.value[0] && b.match(f.value[0])) {
a = f.key;
throw $break
}
});
if (a != c) {
return false
}
if (d.hasClassName("validation-failed") && Validation.isOnChange) {
Validation.validate(d)
}
return true
}], ["validate-cc-type-select", "Card type does not match credit card number.", function (b, c) {
var a = $(c.id.substr(0, c.id.indexOf("_cc_type")) + "_cc_number");
if (Validation.isOnChange && Validation.get("IsEmpty").test(a.value)) {
return true
}
if (Validation.get("validate-cc-type").test(a.value, a)) {
Validation.validate(a)
}
return Validation.get("validate-cc-type").test(a.value, a)
}], ["validate-cc-exp", "Incorrect credit card expiration date.", function (a, g) {
var f = a;
var e = $(g.id.substr(0, g.id.indexOf("_expiration")) + "_expiration_yr").value;
var d = new Date();
var c = d.getMonth() + 1;
var b = d.getFullYear();
if (f < c && e == b) {
return false
}
return true
}], ["validate-cc-cvn", "Please enter a valid credit card verification number.", function (a, e) {
var d = $(e.id.substr(0, e.id.indexOf("_cc_cid")) + "_cc_type");
if (!d) {
return true
}
var b = d.value;
if (typeof Validation.creditCartTypes.get(b) == "undefined") {
return false
}
var c = Validation.creditCartTypes.get(b)[1];
if (a.match(c)) {
return true
}
return false
}], ["validate-ajax", "", function (a, b) {
return true
}], ["validate-data", "Please use only letters (a-z or A-Z), numbers (0-9) or underscore (_) in this field, and the first character should be a letter.", function (a) {
if (a != "" && a) {
return /^[A-Za-z]+[A-Za-z0-9_]+$/.test(a)
}
return true
}], ["validate-css-length", "Please input a valid CSS-length (Ex: 100px, 77pt, 20em, .5ex or 50%).", function (a) {
if (a != "" && a) {
return /^[0-9\.]+(px|pt|em|ex|%)?$/.test(a) && (!(/\..*\./.test(a))) && !(/\.$/.test(a))
}
return true
}], ["validate-length", "Text length does not meet the specified text range.", function (b, e) {
var c = new RegExp(/^maximum-length-[0-9]+$/);
var d = new RegExp(/^minimum-length-[0-9]+$/);
var a = true;
$w(e.className).each(function (g, f) {
if (g.match(c) && a) {
var h = g.split("-")[2];
a = (b.length <= h)
}
if (g.match(d) && a && !Validation.get("IsEmpty").test(b)) {
var h = g.split("-")[2];
a = (b.length >= h)
}
});
return a
}], ["validate-percents", "Please enter a number lower than 100.", {max: 100}], ["required-file", "Please select a file.", function (b, c) {
var a = !Validation.get("IsEmpty").test(b);
if (a === false) {
ovId = c.id + "_value";
if ($(ovId)) {
a = !Validation.get("IsEmpty").test($(ovId).value)
}
}
return a
}], ["validate-cc-ukss", "Please enter issue number or start date for switch/solo card type.", function (i, e) {
var a;
if (e.id.match(/(.)+_cc_issue$/)) {
a = e.id.indexOf("_cc_issue")
} else {
if (e.id.match(/(.)+_start_month$/)) {
a = e.id.indexOf("_start_month")
} else {
a = e.id.indexOf("_start_year")
}
}
var d = e.id.substr(0, a);
var b = $(d + "_cc_type");
if (!b) {
return true
}
var h = b.value;
if (["SS", "SM", "SO"].indexOf(h) == -1) {
return true
}
$(d + "_cc_issue").advaiceContainer = $(d + "_start_month").advaiceContainer = $(d + "_start_year").advaiceContainer = $(d + "_cc_type_ss_div").down(".adv-container");
var f = $(d + "_cc_issue").value;
var g = $(d + "_start_month").value;
var k = $(d + "_start_year").value;
var c = (g && k) ? true : false;
if (!c && !f) {
return false
}
return true
}]]);
function removeDelimiters(a) {
a = a.replace(/\s/g, "");
a = a.replace(/\-/g, "");
return a
}
function parseNumber(a) {
if (typeof a != "string") {
return parseFloat(a)
}
var c = a.indexOf(".");
var b = a.indexOf(",");
if (c != -1 && b != -1) {
if (b > c) {
a = a.replace(".", "").replace(",", ".")
} else {
a = a.replace(",", "")
}
} else {
if (b != -1) {
a = a.replace(",", ".")
}
}
return parseFloat(a)
}
Validation.creditCartTypes = $H({
SO: [new RegExp("^(6334[5-9]([0-9]{11}|[0-9]{13,14}))|(6767([0-9]{12}|[0-9]{14,15}))$"), new RegExp("^([0-9]{3}|[0-9]{4})?$"), true],
SM: [new RegExp("(^(5[0678])[0-9]{11,18}$)|(^(6[^05])[0-9]{11,18}$)|(^(601)[^1][0-9]{9,16}$)|(^(6011)[0-9]{9,11}$)|(^(6011)[0-9]{13,16}$)|(^(65)[0-9]{11,13}$)|(^(65)[0-9]{15,18}$)|(^(49030)[2-9]([0-9]{10}$|[0-9]{12,13}$))|(^(49033)[5-9]([0-9]{10}$|[0-9]{12,13}$))|(^(49110)[1-2]([0-9]{10}$|[0-9]{12,13}$))|(^(49117)[4-9]([0-9]{10}$|[0-9]{12,13}$))|(^(49118)[0-2]([0-9]{10}$|[0-9]{12,13}$))|(^(4936)([0-9]{12}$|[0-9]{14,15}$))"), new RegExp("^([0-9]{3}|[0-9]{4})?$"), true],
VI: [new RegExp("^4[0-9]{12}([0-9]{3})?$"), new RegExp("^[0-9]{3}$"), true],
MC: [new RegExp("^5[1-5][0-9]{14}$"), new RegExp("^[0-9]{3}$"), true],
AE: [new RegExp("^3[47][0-9]{13}$"), new RegExp("^[0-9]{4}$"), true],
DI: [new RegExp("^6(011|4[4-9][0-9]|5[0-9]{2})[0-9]{12}$"), new RegExp("^[0-9]{3}$"), true],
JCB: [new RegExp("^(3[0-9]{15}|(2131|1800)[0-9]{11})$"), new RegExp("^[0-9]{3,4}$"), true],
OT: [false, new RegExp("^([0-9]{3}|[0-9]{4})?$"), false]
});
function popWin(b, c, a) {
var c = window.open(b, c, a);
c.focus()
}
function setLocation(a) {
window.location.href = a
}
function setPLocation(b, a) {
if (a) {
window.opener.focus()
}
window.opener.location.href = b
}
function setLanguageCode(c, d) {
var a = window.location.href;
var f = "", e;
if (e = a.match(/\#(.*)$/)) {
a = a.replace(/\#(.*)$/, "");
f = e[0]
}
if (a.match(/[?]/)) {
var b = /([?&]store=)[a-z0-9_]*/;
if (a.match(b)) {
a = a.replace(b, "$1" + c)
} else {
a += "&store=" + c
}
var b = /([?&]from_store=)[a-z0-9_]*/;
if (a.match(b)) {
a = a.replace(b, "")
}
} else {
a += "?store=" + c
}
if (typeof d != "undefined") {
a += "&from_store=" + d
}
a += f;
setLocation(a)
}
function decorateGeneric(f, c) {
var g = ["odd", "even", "first", "last"];
var b = {};
var e = f.length;
if (e) {
if (typeof c == "undefined") {
c = g
}
if (!c.length) {
return
}
for (var a in g) {
b[g[a]] = false
}
for (var a in c) {
b[c[a]] = true
}
if (b.first) {
Element.addClassName(f[0], "first")
}
if (b.last) {
Element.addClassName(f[e - 1], "last")
}
for (var d = 0; d < e; d++) {
if ((d + 1) % 2 == 0) {
if (b.even) {
Element.addClassName(f[d], "even")
}
} else {
if (b.odd) {
Element.addClassName(f[d], "odd")
}
}
}
}
}
function decorateTable(f, c) {
var f = $(f);
if (f) {
var a = {
tbody: false,
"tbody tr": ["odd", "even", "first", "last"],
"thead tr": ["first", "last"],
"tfoot tr": ["first", "last"],
"tr td": ["last"]
};
if (typeof c != "undefined") {
for (var b in c) {
a[b] = c[b]
}
}
if (a.tbody) {
decorateGeneric(f.select("tbody"), a.tbody)
}
if (a["tbody tr"]) {
decorateGeneric(f.select("tbody tr"), a["tbody tr"])
}
if (a["thead tr"]) {
decorateGeneric(f.select("thead tr"), a["thead tr"])
}
if (a["tfoot tr"]) {
decorateGeneric(f.select("tfoot tr"), a["tfoot tr"])
}
if (a["tr td"]) {
var e = f.select("tr");
if (e.length) {
for (var d = 0; d < e.length; d++) {
decorateGeneric(e[d].getElementsByTagName("TD"), a["tr td"])
}
}
}
}
}
function decorateList(c, b) {
if ($(c)) {
if (typeof b == "undefined") {
var a = $(c).select("li")
} else {
var a = $(c).childElements()
}
decorateGeneric(a, ["odd", "even", "last"])
}
}
function decorateDataList(a) {
a = $(a);
if (a) {
decorateGeneric(a.select("dt"), ["odd", "even", "last"]);
decorateGeneric(a.select("dd"), ["odd", "even", "last"])
}
}
function parseSidUrl(d, c) {
var b = d.indexOf("/?SID=");
var a = "";
c = c != undefined ? c : "";
if (b > -1) {
a = "?" + d.substring(b + 2);
d = d.substring(0, b + 1)
}
return d + c + a
}
function formatCurrency(h, m, e) {
var g = isNaN(m.precision = Math.abs(m.precision)) ? 2 : m.precision;
var p = isNaN(m.requiredPrecision = Math.abs(m.requiredPrecision)) ? 2 : m.requiredPrecision;
g = p;
var n = isNaN(m.integerRequired = Math.abs(m.integerRequired)) ? 1 : m.integerRequired;
var l = m.decimalSymbol == undefined ? "," : m.decimalSymbol;
var c = m.groupSymbol == undefined ? "." : m.groupSymbol;
var b = m.groupLength == undefined ? 3 : m.groupLength;
var o = "";
if (e == undefined || e == true) {
o = h < 0 ? "-" : e ? "+" : ""
} else {
if (e == false) {
o = ""
}
}
var f = parseInt(h = Math.abs(+h || 0).toFixed(g)) + "";
var d = f.length < n ? n - f.length : 0;
while (d) {
f = "0" + f;
d--
}
j = (j = f.length) > b ? j % b : 0;
re = new RegExp("(\\d{" + b + "})(?=\\d)", "g");
var a = (j ? f.substr(0, j) + c : "") + f.substr(j).replace(re, "$1" + c) + (g ? l + Math.abs(h - f).toFixed(g).replace(/-/, 0).slice(2) : "");
var k = "";
if (m.pattern.indexOf("{sign}") == -1) {
k = o + m.pattern
} else {
k = m.pattern.replace("{sign}", o)
}
return k.replace("%s", a).replace(/^\s\s*/, "").replace(/\s\s*$/, "")
}
function expandDetails(b, a) {
if (Element.hasClassName(b, "show-details")) {
$$(a).each(function (c) {
c.hide()
});
Element.removeClassName(b, "show-details")
} else {
$$(a).each(function (c) {
c.show()
});
Element.addClassName(b, "show-details")
}
}
var isIE = navigator.appVersion.match(/MSIE/) == "MSIE";
if (!window.Varien) {
var Varien = new Object()
}
Varien.showLoading = function () {
var a = $("loading-process");
a && a.show()
};
Varien.hideLoading = function () {
var a = $("loading-process");
a && a.hide()
};
Varien.GlobalHandlers = {
onCreate: function () {
Varien.showLoading()
}, onComplete: function () {
if (Ajax.activeRequestCount == 0) {
Varien.hideLoading()
}
}
};
Ajax.Responders.register(Varien.GlobalHandlers);
Varien.searchForm = Class.create();
Varien.searchForm.prototype = {
initialize: function (b, c, a) {
this.form = $(b);
this.field = $(c);
this.emptyText = a;
Event.observe(this.form, "submit", this.submit.bind(this));
Event.observe(this.field, "focus", this.focus.bind(this));
Event.observe(this.field, "blur", this.blur.bind(this));
this.blur()
}, submit: function (a) {
if (this.field.value == this.emptyText || this.field.value == "") {
Event.stop(a);
return false
}
return true
}, focus: function (a) {
if (this.field.value == this.emptyText) {
this.field.value = ""
}
}, blur: function (a) {
if (this.field.value == "") {
this.field.value = this.emptyText
}
}
};
Varien.DateElement = Class.create();
Varien.DateElement.prototype = {
initialize: function (a, b, d, c) {
if (a == "id") {
this.day = $(b + "day");
this.month = $(b + "month");
this.year = $(b + "year");
this.full = $(b + "full");
this.advice = $(b + "date-advice")
} else {
if (a == "container") {
this.day = b.day;
this.month = b.month;
this.year = b.year;
this.full = b.full;
this.advice = b.advice
} else {
return
}
}
this.required = d;
this.format = c;
this.day.addClassName("validate-custom");
this.day.validate = this.validate.bind(this);
this.month.addClassName("validate-custom");
this.month.validate = this.validate.bind(this);
this.year.addClassName("validate-custom");
this.year.validate = this.validate.bind(this);
this.setDateRange(false, false);
this.year.setAttribute("autocomplete", "off");
this.advice.hide()
},
validate: function () {
var g = false, i = parseInt(this.day.value, 10) || 0, d = parseInt(this.month.value, 10) || 0,
f = parseInt(this.year.value, 10) || 0;
if (this.day.value.strip().empty() && this.month.value.strip().empty() && this.year.value.strip().empty()) {
if (this.required) {
g = "Please enter a date."
} else {
this.full.value = ""
}
} else {
if (!i || !d || !f) {
g = "Please enter a valid full date."
} else {
var b = new Date, h = 0, c = null;
b.setYear(f);
b.setMonth(d - 1);
b.setDate(32);
h = 32 - b.getDate();
if (!h || h > 31) {
h = 31
}
if (i < 1 || i > h) {
c = "day";
g = "Please enter a valid day (1-%1)."
} else {
if (d < 1 || d > 12) {
c = "month";
g = "Please enter a valid month (1-12)."
} else {
if (i % 10 == i) {
this.day.value = "0" + i
}
if (d % 10 == d) {
this.month.value = "0" + d
}
this.full.value = this.format.replace(/%[mb]/i, this.month.value).replace(/%[de]/i, this.day.value).replace(/%y/i, this.year.value);
var a = this.month.value + "/" + this.day.value + "/" + this.year.value;
var e = new Date(a);
if (isNaN(e)) {
g = "Please enter a valid date."
} else {
this.setFullDate(e)
}
}
}
var k = false;
if (!g && !this.validateData()) {
c = this.validateDataErrorType;
k = this.validateDataErrorText;
g = k
}
}
}
if (g !== false) {
if (jQuery.mage.__) {
g = jQuery.mage.__(g)
}
if (!k) {
this.advice.innerHTML = g.replace("%1", h)
} else {
this.advice.innerHTML = this.errorTextModifier(g)
}
this.advice.show();
return false
}
this.day.removeClassName("validation-failed");
this.month.removeClassName("validation-failed");
this.year.removeClassName("validation-failed");
this.advice.hide();
return true
},
validateData: function () {
var b = this.fullDate.getFullYear();
var a = new Date;
this.curyear = a.getFullYear();
return b >= 1900 && b <= this.curyear
},
validateDataErrorType: "year",
validateDataErrorText: "Please enter a valid year (1900-%1).",
errorTextModifier: function (a) {
return a.replace("%1", this.curyear)
},
setDateRange: function (a, b) {
this.minDate = a;
this.maxDate = b
},
setFullDate: function (a) {
this.fullDate = a
}
};
Varien.DOB = Class.create();
Varien.DOB.prototype = {
initialize: function (a, e, d) {
var c = $$(a)[0];
var b = {};
b.day = Element.select(c, ".dob-day input")[0];
b.month = Element.select(c, ".dob-month input")[0];
b.year = Element.select(c, ".dob-year input")[0];
b.full = Element.select(c, ".dob-full input")[0];
b.advice = Element.select(c, ".validation-advice")[0];
new Varien.DateElement("container", b, e, d)
}
};
Varien.dateRangeDate = Class.create();
Varien.dateRangeDate.prototype = Object.extend(new Varien.DateElement(), {
validateData: function () {
var a = true;
if (this.minDate || this.maxValue) {
if (this.minDate) {
this.minDate = new Date(this.minDate);
this.minDate.setHours(0);
if (isNaN(this.minDate)) {
this.minDate = new Date("1/1/1900")
}
a = a && this.fullDate >= this.minDate
}
if (this.maxDate) {
this.maxDate = new Date(this.maxDate);
this.minDate.setHours(0);
if (isNaN(this.maxDate)) {
this.maxDate = new Date()
}
a = a && this.fullDate <= this.maxDate
}
if (this.maxDate && this.minDate) {
this.validateDataErrorText = "Please enter a valid date between %s and %s"
} else {
if (this.maxDate) {
this.validateDataErrorText = "Please enter a valid date less than or equal to %s"
} else {
if (this.minDate) {
this.validateDataErrorText = "Please enter a valid date equal to or greater than %s"
} else {
this.validateDataErrorText = ""
}
}
}
}
return a
}, validateDataErrorText: "Date should be between %s and %s", errorTextModifier: function (a) {
if (this.minDate) {
a = a.sub("%s", this.dateFormat(this.minDate))
}
if (this.maxDate) {
a = a.sub("%s", this.dateFormat(this.maxDate))
}
return a
}, dateFormat: function (a) {
return a.getMonth() + 1 + "/" + a.getDate() + "/" + a.getFullYear()
}
});
Varien.FileElement = Class.create();
Varien.FileElement.prototype = {
initialize: function (a) {
this.fileElement = $(a);
this.hiddenElement = $(a + "_value");
this.fileElement.observe("change", this.selectFile.bind(this))
}, selectFile: function (a) {
this.hiddenElement.value = this.fileElement.getValue()
}
};
Validation.addAllThese([["validate-custom", " ", function (a, b) {
return b.validate()
}]]);
Element.addMethods({
getInnerText: function (a) {
a = $(a);
if (a.innerText && !Prototype.Browser.Opera) {
return a.innerText
}
return a.innerHTML.stripScripts().unescapeHTML().replace(/[\n\r\s]+/g, " ").strip()
}
});
function fireEvent(b, c) {
var a = document.createEvent("HTMLEvents");
a.initEvent(c, true, true);
return b.dispatchEvent(a)
}
function modulo(a, d) {
var c = d / 10000;
var b = a % d;
if (Math.abs(b - d) < c || Math.abs(b) < c) {
b = 0
}
return b
}
if (typeof Range != "undefined" && !Range.prototype.createContextualFragment) {
Range.prototype.createContextualFragment = function (a) {
var c = document.createDocumentFragment(), b = document.createElement("div");
c.appendChild(b);
b.outerHTML = a;
return c
}
}
var byteConvert = function (a) {
if (isNaN(a)) {
return ""
}
var b = ["bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
var d = Math.floor(Math.log(a) / Math.log(2));
if (d < 1) {
d = 0
}
var c = Math.floor(d / 10);
a /= Math.pow(2, 10 * c);
if (a.toString().length > a.toFixed(2).toString().length) {
a = a.toFixed(2)
}
return a + " " + b[c]
};
var SessionError = Class.create();
SessionError.prototype = {
initialize: function (a) {
this.errorText = a
}, toString: function () {
return "Session Error:" + this.errorText
}
};
Ajax.Request.addMethods({
initialize: function ($super, b, a) {
$super(a);
this.transport = Ajax.getTransport();
if (!b.match(new RegExp("[?&]isAjax=true", ""))) {
b = b.match(new RegExp("\\?", "g")) ? b + "&isAjax=true" : b + "?isAjax=true"
}
if (Object.isString(this.options.parameters) && this.options.parameters.indexOf("form_key=") == -1) {
this.options.parameters += "&" + Object.toQueryString({form_key: FORM_KEY})
} else {
if (!this.options.parameters) {
this.options.parameters = {form_key: FORM_KEY}
}
if (!this.options.parameters.form_key) {
this.options.parameters.form_key = FORM_KEY
}
}
this.request(b)
}, respondToReadyState: function (a) {
var d = Ajax.Request.Events[a], b = new Ajax.Response(this);
if (d == "Complete") {
try {
this._complete = true;
if (b.responseText.isJSON()) {
var c = b.responseText.evalJSON();
if (c.ajaxExpired && c.ajaxRedirect) {
window.location.replace(c.ajaxRedirect);
throw new SessionError("session expired")
}
}
(this.options["on" + b.status] || this.options["on" + (this.success() ? "Success" : "Failure")] || Prototype.emptyFunction)(b, b.headerJSON)
} catch (f) {
this.dispatchException(f);
if (f instanceof SessionError) {
return
}
}
var g = b.getHeader("Content-type");
if (this.options.evalJS == "force" || this.options.evalJS && this.isSameOrigin() && g && g.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)) {
this.evalResponse()
}
}
try {
(this.options["on" + d] || Prototype.emptyFunction)(b, b.headerJSON);
Ajax.Responders.dispatch("on" + d, this, b, b.headerJSON)
} catch (f) {
this.dispatchException(f)
}
if (d == "Complete") {
this.transport.onreadystatechange = Prototype.emptyFunction
}
}
});
Ajax.Updater.respondToReadyState = Ajax.Request.respondToReadyState;
var varienLoader = new Class.create();
varienLoader.prototype = {
initialize: function (a) {
this.callback = false;
this.cache = $H();
this.caching = a || false;
this.url = false
}, getCache: function (a) {
if (this.cache.get(a)) {
return this.cache.get(a)
}
return false
}, load: function (a, b, d) {
this.url = a;
this.callback = d;
if (this.caching) {
var c = this.getCache(a);
if (c) {
this.processResult(c);
return
}
}
if (typeof b.updaterId != "undefined") {
new varienUpdater(b.updaterId, a, {
evalScripts: true,
onComplete: this.processResult.bind(this),
onFailure: this._processFailure.bind(this)
})
} else {
new Ajax.Request(a, {
method: "post",
parameters: b || {},
onComplete: this.processResult.bind(this),
onFailure: this._processFailure.bind(this)
})
}
}, _processFailure: function (a) {
location.href = BASE_URL
}, processResult: function (a) {
if (this.caching) {
this.cache.set(this.url, a)
}
if (this.callback) {
this.callback(a.responseText)
}
}
};
if (!window.varienLoaderHandler) {
var varienLoaderHandler = new Object()
}
varienLoaderHandler.handler = {
onCreate: function (a) {
if (a.options.loaderArea === false) {
return
}
jQuery("body").trigger("processStart")
}, onException: function (a) {
jQuery("body").trigger("processStop")
}, onComplete: function (a) {
jQuery("body").trigger("processStop")
}
};
function setLoaderPosition() {
var c = $("loading_mask_loader");
if (c && Prototype.Browser.IE) {
var b = c.getDimensions();
var d = document.viewport.getDimensions();
var a = document.viewport.getScrollOffsets();
c.style.left = Math.floor(d.width / 2 + a.left - b.width / 2) + "px";
c.style.top = Math.floor(d.height / 2 + a.top - b.height / 2) + "px";
c.style.position = "absolute"
}
}
function toggleSelectsUnderBlock(d, a) {
if (Prototype.Browser.IE) {
var c = document.getElementsByTagName("select");
for (var b = 0; b < c.length; b++) {
if (a) {
if (c[b].needShowOnSuccess) {
c[b].needShowOnSuccess = false;
c[b].style.visibility = ""
}
} else {
if (Element.visible(c[b])) {
c[b].style.visibility = "hidden";
c[b].needShowOnSuccess = true
}
}
}
}
}
Ajax.Responders.register(varienLoaderHandler.handler);
var varienUpdater = Class.create(Ajax.Updater, {
updateContent: function ($super, a) {
if (a.isJSON()) {
var b = a.evalJSON();
if (b.ajaxExpired && b.ajaxRedirect) {
window.location.replace(b.ajaxRedirect)
}
} else {
$super(a)
}
}
});
function setLocation(a) {
window.location.href = a
}
function setElementDisable(b, a) {
if ($(b)) {
$(b).disabled = a
}
}
function toggleParentVis(a) {
a = $(a).parentNode;
if (a.style.display == "none") {
a.style.display = ""
} else {
a.style.display = "none"
}
}
function toggleFieldsetVis(b) {
id = b;
b = $(b);
if (b.style.display == "none") {
b.style.display = ""
} else {
b.style.display = "none"
}
b = b.parentNode.childElements();
for (var a = 0; a < b.length; a++) {
if (b[a].id != undefined && b[a].id == id && b[a - 1].classNames() == "entry-edit-head") {
if (b[a - 1].style.display == "none") {
b[a - 1].style.display = ""
} else {
b[a - 1].style.display = "none"
}
}
}
}
function toggleVis(a) {
a = $(a);
if (a.style.display == "none") {
a.style.display = ""
} else {
a.style.display = "none"
}
}
function imagePreview(a) {
if ($(a)) {
var b = window.open("", "preview", "width=400,height=400,resizable=1,scrollbars=1");
b.document.open();
b.document.write('<body style="padding:0;margin:0"><img src="' + $(a).src + '" id="image_preview"/></body>');
b.document.close();
Event.observe(b, "load", function () {
var c = b.document.getElementById("image_preview");
b.resizeTo(c.width + 40, c.height + 80)
})
}
}
function checkByProductPriceType(a) {
if (a.id == "price_type") {
this.productPriceType = a.value;
return false
}
if (a.id == "price" && this.productPriceType == 0) {
return false
}
return true
}
function toggleSeveralValueElements(d, c, a, b) {
if (c && d) {
if (Object.prototype.toString.call(c) != "[object Array]") {
c = [c]
}
c.each(function (e) {
toggleValueElements(d, e, a, b)
})
}
}
function toggleValueElements(g, b, d, f) {
if (b && g) {
var h = [g];
if (typeof d != "undefined") {
if (Object.prototype.toString.call(d) != "[object Array]") {
d = [d]
}
for (var e = 0; e < d.length; e++) {
h.push(d[e])
}
}
var c = Element.select(b, ["select", "input", "textarea", "button", "img"]).filter(function (i) {
return i.readAttribute("type") != "hidden"
});
var a = f != undefined ? f : g.checked;
c.each(function (l) {
if (checkByProductPriceType(l)) {
var k = h.length;
while (k-- && l != h[k]) {
}
if (k != -1) {
return
}
l.disabled = a;
if (a) {
l.addClassName("disabled")
} else {
l.removeClassName("disabled")
}
if (l.nodeName.toLowerCase() == "img") {
a ? l.hide() : l.show()
}
}
})
}
}
function submitAndReloadArea(c, b) {
if ($(c)) {
var a = $(c).select("input", "select", "textarea");
var d = Form.serializeElements(a, true);
b += b.match(new RegExp("\\?")) ? "&isAjax=true" : "?isAjax=true";
new Ajax.Request(b, {
parameters: $H(d), loaderArea: c, onSuccess: function (h) {
try {
if (h.responseText.isJSON()) {
var f = h.responseText.evalJSON();
if (f.error) {
alert(f.message)
}
if (f.ajaxExpired && f.ajaxRedirect) {
setLocation(f.ajaxRedirect)
}
} else {
$(c).update(h.responseText)
}
} catch (g) {
$(c).update(h.responseText)
}
}
})
}
}
function syncOnchangeValue(b, c) {
var a = {baseElem: b, distElem: c};
Event.observe(b, "change", function () {
if ($(this.baseElem) && $(this.distElem)) {
$(this.distElem).value = $(this.baseElem).value
}
}.bind(a))
}
function updateElementAtCursor(c, d, e) {
if (e == undefined) {
e = window.self
}
if (document.selection) {
c.focus();
sel = e.document.selection.createRange();
sel.text = d
} else {
if (c.selectionStart || c.selectionStart == "0") {
var b = c.selectionStart;
var a = c.selectionEnd;
c.value = c.value.substring(0, b) + d + c.value.substring(a, c.value.length)
} else {
c.value += d
}
}
}
function firebugEnabled() {
if (window.console && window.console.firebug) {
return true
}
return false
}
function disableElement(a) {
a.disabled = true;
a.addClassName("disabled")
}
function enableElement(a) {
a.disabled = false;
a.removeClassName("disabled")
}
function disableElements(a) {
$$("." + a).each(disableElement)
}
function enableElements(a) {
$$("." + a).each(enableElement)
}
var Cookie = {
all: function () {
var b = document.cookie.split(";");
var a = {};
b.each(function (d, c) {
var e = d.strip().split("=");
a[unescape(e[0])] = unescape(e[1])
});
return a
}, read: function (b) {
var a = this.all();
if (a[b]) {
return a[b]
}
return null
}, write: function (g, e, f, d) {
var a = "";
if (f) {
var c = new Date();
c.setTime(c.getTime() + f * 1000);
a = "; expires=" + c.toUTCString()
}
var b = "/" + BASE_URL.split("/").slice(3).join("/");
d = "; samesite=" + (d ? d : "lax");
document.cookie = escape(g) + "=" + escape(e) + a + "; path=" + b + d
}, clear: function (a) {
this.write(a, "", -1)
}
};
var Fieldset = {
cookiePrefix: "fh-", applyCollapse: function (a) {
if ($(a + "-state")) {
collapsed = $(a + "-state").value == 1 ? 0 : 1
} else {
collapsed = $(a + "-head").collapsed
}
if (collapsed == 1 || collapsed === undefined) {
$(a + "-head").removeClassName("open");
if ($(a + "-head").up(".section-config")) {
$(a + "-head").up(".section-config").removeClassName("active")
}
$(a).hide()
} else {
$(a + "-head").addClassName("open");
if ($(a + "-head").up(".section-config")) {
$(a + "-head").up(".section-config").addClassName("active")
}
$(a).show()
}
}, toggleCollapse: function (a, b) {
if ($(a + "-state")) {
collapsed = $(a + "-state").value == 1 ? 0 : 1
} else {
collapsed = $(a + "-head").collapsed
}
if (collapsed == 1 || collapsed === undefined) {
if ($(a + "-state")) {
$(a + "-state").value = 1
}
$(a + "-head").collapsed = 0
} else {
if ($(a + "-state")) {
$(a + "-state").value = 0
}
$(a + "-head").collapsed = 1
}
this.applyCollapse(a);
if (typeof b != "undefined") {
this.saveState(b, {container: a, value: $(a + "-state").value})
}
}, addToPrefix: function (a) {
this.cookiePrefix += a + "-"
}, saveState: function (a, b) {
new Ajax.Request(a, {method: "post", parameters: Object.toQueryString(b), loaderArea: false})
}
};
var Base64 = {
_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", encode: function (c) {
var a = "";
var l, h, f, k, g, e, d;
var b = 0;
c = Base64._utf8_encode(c);
if (typeof window.btoa === "function") {
return window.btoa(c)
}
while (b < c.length) {
l = c.charCodeAt(b++);
h = c.charCodeAt(b++);
f = c.charCodeAt(b++);
k = l >> 2;
g = (l & 3) << 4 | h >> 4;
e = (h & 15) << 2 | f >> 6;
d = f & 63;
if (isNaN(h)) {
e = d = 64
} else {
if (isNaN(f)) {
d = 64
}
}
a = a + this._keyStr.charAt(k) + this._keyStr.charAt(g) + this._keyStr.charAt(e) + this._keyStr.charAt(d)
}
return a
}, decode: function (c) {
var a = "";
var l, h, f;
var k, g, e, d;
var b = 0;
if (typeof window.atob === "function") {
return Base64._utf8_decode(window.atob(c))
}
c = c.replace(/[^A-Za-z0-9\+\/\=]/g, "");
while (b < c.length) {
k = this._keyStr.indexOf(c.charAt(b++));
g = this._keyStr.indexOf(c.charAt(b++));
e = this._keyStr.indexOf(c.charAt(b++));
d = this._keyStr.indexOf(c.charAt(b++));
l = k << 2 | g >> 4;
h = (g & 15) << 4 | e >> 2;
f = (e & 3) << 6 | d;
a += String.fromCharCode(l);
if (e != 64) {
a += String.fromCharCode(h)
}
if (d != 64) {
a += String.fromCharCode(f)
}
}
return Base64._utf8_decode(a)
}, mageEncode: function (a) {
return this.encode(a).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, ",")
}, mageDecode: function (a) {
a = a.replace(/\-/g, "+").replace(/_/g, "/").replace(/,/g, "=");
return this.decode(a)
}, idEncode: function (a) {
return this.encode(a).replace(/\+/g, ":").replace(/\//g, "_").replace(/=/g, "-")
}, idDecode: function (a) {
a = a.replace(/\-/g, "=").replace(/_/g, "/").replace(/\:/g, "+");
return this.decode(a)
}, _utf8_encode: function (b) {
b = b.replace(/\r\n/g, "\n");
var a = "";
for (var e = 0; e < b.length; e++) {
var d = b.charCodeAt(e);
if (d < 128) {
a += String.fromCharCode(d)
} else {
if (d > 127 && d < 2048) {
a += String.fromCharCode(d >> 6 | 192);
a += String.fromCharCode(d & 63 | 128)
} else {
a += String.fromCharCode(d >> 12 | 224);
a += String.fromCharCode(d >> 6 & 63 | 128);
a += String.fromCharCode(d & 63 | 128)
}
}
}
return a
}, _utf8_decode: function (a) {
var b = "";
var d = 0;
var e = c1 = c2 = 0;
while (d < a.length) {
e = a.charCodeAt(d);
if (e < 128) {
b += String.fromCharCode(e);
d++
} else {
if (e > 191 && e < 224) {
c2 = a.charCodeAt(d + 1);
b += String.fromCharCode((e & 31) << 6 | c2 & 63);
d += 2
} else {
c2 = a.charCodeAt(d + 1);
c3 = a.charCodeAt(d + 2);
b += String.fromCharCode((e & 15) << 12 | (c2 & 63) << 6 | c3 & 63);
d += 3
}
}
}
return b
}
};
function sortNumeric(b, a) {
return b - a
}
(function () {
var globals = ["Prototype", "Abstract", "Try", "Class", "PeriodicalExecuter", "Template", "$break", "Enumerable", "$A", "$w", "$H", "Hash", "$R", "ObjectRange", "Ajax", "$", "Form", "Field", "$F", "Toggle", "Insertion", "$continue", "Position", "Windows", "Dialog", "array", "WindowUtilities", "Builder", "Effect", "validateCreditCard", "Validator", "Validation", "removeDelimiters", "parseNumber", "popWin", "setLocation", "setPLocation", "setLanguageCode", "decorateGeneric", "decorateTable", "decorateList", "decorateDataList", "parseSidUrl", "formatCurrency", "expandDetails", "isIE", "Varien", "fireEvent", "modulo", "byteConvert", "SessionError", "varienLoader", "varienLoaderHandler", "setLoaderPosition", "toggleSelectsUnderBlock", "varienUpdater", "setElementDisable", "toggleParentVis", "toggleFieldsetVis", "toggleVis", "imagePreview", "checkByProductPriceType", "toggleSeveralValueElements", "toggleValueElements", "submitAndReloadArea", "syncOnchangeValue", "updateElementAtCursor", "firebugEnabled", "disableElement", "enableElement", "disableElements", "enableElements", "Cookie", "Fieldset", "Base64", "sortNumeric", "Element", "$$", "Sizzle", "Selector", "Window"];
globals.forEach(function (prop) {
window[prop] = eval(prop)
})
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment