(function () { var e = { version: "1.1.4", release: "2012-10-11", path: function () { var e = document.getelementsbytagname("script"); return e[e.length - 1].src.replace(/(^|\/)[^\/]+\/[^\/]+$/, "$1") } (), namespace: function (t, n) { var r = t.split("."), i = 0, s; t.indexof(".") == 0 && (i = 1, n = n || e), n = n || window; for (; s = r[i++]; ) n[s] || (n[s] = {}), n = n[s]; return n }, noconflict: function () { var t = window.qw; return function () { return window.qw = t, e } } (), loadjs: function (e, t, n) { n = n || {}; var r = document.getelementsbytagname("head")[0] || document.documentelement, i = document.createelement("script"), s = !1; i.src = e, n.charset && (i.charset = n.charset), "async" in n && (i.async = n.async || ""), i.onerror = i.onload = i.onreadystatechange = function () { !s && (!this.readystate || this.readystate == "loaded" || this.readystate == "complete") && (s = !0, t && t(), i.onerror = i.onload = i.onreadystatechange = null, r.removechild(i)) }, r.insertbefore(i, r.firstchild) }, loadjsonp: function () { var t = new date * 1; return function (n, r, i) { i = i || {}; var s = "qwjsonp" + t++, o = i.callbackreplacer || /%callbackfun%/ig; window[s] = function (e) { r && r(e), window[s] = null }, o.test(n) ? n = n.replace(o, s) : n += (/\?/.test(n) ? "&" : "?") + "callback=" + s, e.loadjs(n, i.oncomplete, i) } } (), loadcss: function (e) { var t = document.getelementsbytagname("head")[0] || document.documentelement, n = document.createelement("link"); n.rel = "stylesheet", n.type = "text/css", n.href = e, t.insertbefore(n, t.firstchild) }, error: function (e, t) { throw t = t || error, new t(e) } }; window.qw = e })(), function () { function e(e, t, n) { for (var r in t) if (n || !(r in e)) e[r] = t[r]; return e } function t(e) { return !!e && e.constructor == object } function n() { for (var e = 0; e < u.length; e++) { var t = u[e].callback, n = u[e].modulenames.split(/\s*,\s*/g), r = !0; for (var s = 0; s < n.length; s++) { var o = i[n[s]]; if (o.loadstatus != 2 && (o.loadedchecker ? !o.loadedchecker() : !qw[n[s]])) { r = !1; break } } r && (t(), u.splice(e, 1), e--) } } function r() { function e() { t.loadstatus = 2, n(), isloading = !1, r() } var t = o[0]; if (!isloading && t) { isloading = !0, o.splice(0, 1); var i = t.loadedchecker; i && i() ? e() : s(t.url.replace(/^\/\//, qw.path), e) } } var i = {}, s = qw.loadjs, o = [], u = []; isloading = !1; var a = { providedomains: [qw], provide: function (e, n) { if (typeof e == "string") { var r = a.providedomains; for (var i = 0; i < r.length; i++) r[i][e] || (r[i][e] = n) } else if (t(e)) for (i in e) a.provide(i, e[i]) }, addconfig: function (n, r) { if (typeof n == "string") { var s = e({}, r); s.modulename = n, i[n] = s } else if (t(n)) for (var o in n) a.addconfig(o, n[o]) }, use: function (e, t) { var n = {}, s = [], a = e.split(/\s*,\s*/g), f, l, c, h, p; while (a.length) { var d = {}; for (f = 0; f < a.length; f++) { var v = a[f]; if (!v || qw[v]) continue; if (!n[v]) { if (!i[v]) throw "unknown module: " + v; if (i[v].loadstatus != 2) { var m = i[v].loadedchecker; if (m && m()) continue; n[v] = i[v] } var g = ["requires", "use"]; for (l = 0; l < g.length; l++) { var y = i[v][g[l]]; if (y) { var b = y.split(","); for (c = 0; c < b.length; c++) d[b[c]] = 0 } } } } a = []; for (f in d) a.push(f) } for (f in n) s.push(n[f]); for (f = 0, h = s.length; f < h; f++) { if (!s[f].requires) continue; for (l = f + 1; l < h; l++) if ((new regexp("(^|,)" + s[l].modulename + "(,|$)")).test(s[f].requires)) { var w = s[l]; s.splice(l, 1), s.splice(f, 0, w), f--; break } } var e = -1, s = -1; for (f = 0; f < s.length; f++) p = s[f], !p.loadstatus && (new regexp("(^|,)" + p.modulename + "(,|$)")).test(e) && (e = f), p.loadstatus == 1 && (new regexp("(^|,)" + p.modulename + "(,|$)")).test(e) && (s = f); if (e == -1 && s == -1) { t(); return } u.push({ callback: t, modulenames: e }); for (f = 0; f < s.length; f++) p = s[f], p.loadstatus || (p.loadstatus = 1, o.push(p)); r() } }; qw.moduleh = a, qw.use = a.use, qw.provide = a.provide } (), qw.browser = function () { var e = window.navigator, t = e.useragent.tolowercase(), n = /(msie|webkit|gecko|presto|opera|safari|firefox|chrome|maxthon|android|ipad|iphone|webos|hpwos)[ \/os]*([\d_.]+)/ig, r = { platform: e.platform }; t.replace(n, function (e, t, n) { var i = t.tolowercase(); r[i] || (r[i] = n) }), r.opera && t.replace(/opera.*version\/([\d.]+)/, function (e, t) { r.opera = t }); if (r.msie) { r.ie = r.msie; var i = parseint(r.msie, 10); r["ie" + i] = !0 } return r } (); if (qw.browser.ie) try { document.execcommand("backgroundimagecache", !1, !0) } catch (e) { } (function () { var e = { trim: function (e) { return e.replace(/^[\s\xa0\u3000]+|[\u3000\xa0\s]+$/g, "") }, mulreplace: function (e, t) { for (var n = 0; n < t.length; n++) e = e.replace(t[n][0], t[n][1]); return e }, format: function (e, t) { var n = arguments; return e.replace(/\{(\d+)\}/ig, function (e, t) { var r = n[(t | 0) + 1]; return r == null ? "" : r }) }, tmpl: function () { var e = "sarrcmx", t = e + '.push("', n = { js: { tagg: "js", isbgn: 1, isend: 1, sbgn: '");', send: ";" + t }, "if": { tagg: "if", isbgn: 1, rlt: 1, sbgn: '");if', send: "{" + t }, elseif: { tagg: "if", cond: 1, rlt: 1, sbgn: '");} else if', send: "{" + t }, "else": { tagg: "if", cond: 1, rlt: 2, send: '");}else{' + t }, "/if": { tagg: "if", isend: 1, send: '");}' + t }, "for": { tagg: "for", isbgn: 1, rlt: 1, sbgn: '");for', send: "{" + t }, "/for": { tagg: "for", isend: 1, send: '");}' + t }, "while": { tagg: "while", isbgn: 1, rlt: 1, sbgn: '");while', send: "{" + t }, "/while": { tagg: "while", isend: 1, send: '");}' + t} }; return function (r, i) { var s = -1, o = [], u = [[/\{strip\}([\s\s]*?)\{\/strip\}/g, function (e, t) { return t.replace(/[\r\n]\s*\}/g, " }").replace(/[\r\n]\s*/g, "") } ], [/\\/g, "\\\\"], [/"/g, '\\"'], [/\r/g, "\\r"], [/\n/g, "\\n"], [/\{[\s\s]*?\s\}/g, function (e) { e = e.substr(1, e.length - 2); for (var t = 0; t < a.length; t++) e = e.replace(a[t][0], a[t][1]); var r = e; /^(.\w+)\w/.test(r) && (r = regexp.$1); var i = n[r]; if (i) { if (i.isbgn) var u = o[++s] = { tagg: i.tagg, rlt: i.rlt }; if (i.isend) { if (s < 0) throw new error("unexpected tag: " + e); u = o[s--]; if (u.tagg != i.tagg) throw new error("unmatch tags: " + u.tagg + "--" + r) } else if (!i.isbgn) { if (s < 0) throw new error("unexpected tag:" + e); u = o[s]; if (u.tagg != i.tagg) throw new error("unmatch tags: " + u.tagg + "--" + r); if (i.cond && !(i.cond & u.rlt)) throw new error("unexpected tag: " + r); u.rlt = i.rlt } return (i.sbgn || "") + e.substr(r.length) + (i.send || "") } return '",(' + e + '),"' } ]], a = [[/\\n/g, "\n"], [/\\r/g, "\r"], [/\\"/g, '"'], [/\\\\/g, "\\"], [/\$(\w+)/g, 'opts["$1"]'], [/print\(/g, e + ".push("]]; for (var f = 0; f < u.length; f++) r = r.replace(u[f][0], u[f][1]); if (s >= 0) throw new error("lose end tag: " + o[s].tagg); r = r.replace(/##7b/g, "{").replace(/##7d/g, "}").replace(/##23/g, "#"), r = "var " + e + "=[];" + t + r + '");return ' + e + '.join("");'; var l = new function("opts", r); return arguments.length > 1 ? l(i) : l } } (), contains: function (e, t) { return e.indexof(t) > -1 }, dbc2sbc: function (t) { return e.mulreplace(t, [[/[\uff01-\uff5e]/g, function (e) { return string.fromcharcode(e.charcodeat(0) - 65248) } ], [/\u3000/g, " "], [/\u3002/g, "."]]) }, bytelen: function (e) { return e.replace(/[^\x00-\xff]/g, "--").length }, subbyte: function (t, n, r) { return e.bytelen(t) <= n ? t : (r = r || "", n -= e.bytelen(r), t.substr(0, n).replace(/([^\x00-\xff])/g, "$1 ").substr(0, n).replace(/[^\x00-\xff]$/, "").replace(/([^\x00-\xff]) /g, "$1") + r) }, capitalize: function (e) { return e.slice(0, 1).touppercase() + e.slice(1) }, camelize: function (e) { return e.replace(/\-(\w)/ig, function (e, t) { return t.touppercase() }) }, decamelize: function (e) { return e.replace(/[a-z]/g, function (e) { return "-" + e.tolowercase() }) }, encode4js: function (t) { return e.mulreplace(t, [[/\\/g, "\\u005c"], [/"/g, "\\u0022"], [/'/g, "\\u0027"], [/\//g, "\\u002f"], [/\r/g, "\\u000a"], [/\n/g, "\\u000d"], [/\t/g, "\\u0009"]]) }, escapechars: function (t) { return e.mulreplace(t, [[/\\/g, "\\\\"], [/"/g, '\\"'], [/\r/g, "\\r"], [/\n/g, "\\n"], [/\t/g, "\\t"]]) }, encode4http: function (e) { return e.replace(/[\u0000-\u0020\u0080-\u00ff\s"'#\/\|\\%<>\[\]\{\}\^~;\?\:@=&]/g, function (e) { return encodeuricomponent(e) }) }, encode4html: function (e) { var t = document.createelement("pre"), n = document.createtextnode(e); return t.appendchild(n), t.innerhtml }, encode4htmlvalue: function (t) { return e.encode4html(t).replace(/"/g, """).replace(/'/g, "'") }, decode4html: function (t) { var n = document.createelement("div"); return n.innerhtml = e.striptags(t), n.childnodes[0] ? n.childnodes[0].nodevalue || "" : "" }, striptags: function (e) { return e.replace(/<[^>]*>/gi, "") }, evaljs: function (e, t) { return (new function("opts", e))(t) }, evalexp: function (e, t) { return (new function("opts", "return (" + e + ");"))(t) }, queryurl: function (e, t) { e = e.replace(/^[^?=]*\?/ig, "").split("#")[0]; var n = {}; return e.replace(/(^|&)([^&=]+)=([^&]*)/g, function (e, t, r, i) { try { r = decodeuricomponent(r) } catch (s) { } try { i = decodeuricomponent(i) } catch (s) { } r in n ? n[r] instanceof array ? n[r].push(i) : n[r] = [n[r], i] : n[r] = /\[\]$/.test(r) ? [i] : i }), t ? n[t] : n }, decodeurijson: function (t) { return e.queryurl(t) } }; qw.stringh = e })(), function () { function e(e) { return e != null && e.constructor != null ? object.prototype.tostring.call(e).slice(8, -1) : "" } var t = qw.stringh.escapechars, n = { isstring: function (t) { return e(t) == "string" }, isfunction: function (t) { return e(t) == "function" }, isarray: function (t) { return e(t) == "array" }, isarraylike: function (e) { return !!e && typeof e == "object" && e.nodetype != 1 && typeof e.length == "number" }, isobject: function (e) { return e !== null && typeof e == "object" }, isplainobject: function (t) { return e(t) == "object" }, iswrap: function (e, t) { return !!e && !!e[t || "core"] }, iselement: function (e) { return !!e && e.nodetype == 1 }, set: function (e, t, r) { if (n.isarray(t)) for (var i = 0; i < t.length; i++) n.set(e, t[i], r[i]); else if (n.isplainobject(t)) for (i in t) n.set(e, i, t[i]); else if (n.isfunction(t)) { var s = [].slice.call(arguments, 1); s[0] = e, t.apply(null, s) } else { var o = t.split("."); i = 0; for (var u = e, a = o.length - 1; i < a; i++) u = u[o[i]]; u[o[i]] = r } return e }, get: function (e, t, r) { if (n.isarray(t)) { var i = [], s; for (s = 0; s < t.length; s++) i[s] = n.get(e, t[s], r) } else { if (n.isfunction(t)) { var o = [].slice.call(arguments, 1); return o[0] = e, t.apply(null, o) } var u = t.split("."); i = e; for (s = 0; s < u.length; s++) { if (!r && i == null) return; i = i[u[s]] } } return i }, mix: function (e, t, r) { if (n.isarray(t)) { for (var i = 0, s = t.length; i < s; i++) n.mix(e, t[i], r); return e } if (typeof r == "function") for (i in t) e[i] = r(e[i], t[i], i); else for (i in t) if (r || !(e[i] || i in e)) e[i] = t[i]; return e }, dump: function (e, t) { var n = {}; for (var r = 0, i = t.length; r < i; r++) if (r in t) { var s = t[r]; s in e && (n[s] = e[s]) } return n }, map: function (e, t, n) { var r = {}; for (var i in e) r[i] = t.call(n, e[i], i, e); return r }, keys: function (e) { var t = []; for (var n in e) e.hasownproperty(n) && t.push(n); return t }, values: function (e) { var t = []; for (var n in e) e.hasownproperty(n) && t.push(e[n]); return t }, create: function (e, t) { var r = function (e) { e && n.mix(this, e, !0) }; return r.prototype = e, new r(t) }, stringify: function (r) { if (r == null) return "null"; r.tojson && (r = r.tojson()); var i = e(r).tolowercase(); switch (i) { case "string": return '"' + t(r) + '"'; case "number": var s = r.tostring(); return /n/.test(s) ? "null" : s; case "boolean": return r.tostring(); case "date": return "new date(" + r.gettime() + ")"; case "array": var o = []; for (var u = 0; u < r.length; u++) o[u] = n.stringify(r[u]); return "[" + o.join(",") + "]"; case "object": if (n.isplainobject(r)) { o = []; for (u in r) o.push('"' + t(u) + '":' + n.stringify(r[u])); return "{" + o.join(",") + "}" } } return "null" }, encodeurijson: function (e) { var t = []; for (var n in e) { if (e[n] == null) continue; if (e[n] instanceof array) for (var r = 0; r < e[n].length; r++) t.push(encodeuricomponent(n) + "=" + encodeuricomponent(e[n][r])); else t.push(encodeuricomponent(n) + "=" + encodeuricomponent(e[n])) } return t.join("&") } }; qw.objecth = n } (), function () { var e = qw.objecth.isarray, t = { map: function (e, t, n) { var r = e.length, i = new array(r); for (var s = 0; s < r; s++) s in e && (i[s] = t.call(n, e[s], s, e)); return i }, foreach: function (e, t, n) { for (var r = 0, i = e.length; r < i; r++) r in e && t.call(n, e[r], r, e) }, filter: function (e, t, n) { var r = []; for (var i = 0, s = e.length; i < s; i++) i in e && t.call(n, e[i], i, e) && r.push(e[i]); return r }, some: function (e, t, n) { for (var r = 0, i = e.length; r < i; r++) if (r in e && t.call(n, e[r], r, e)) return !0; return !1 }, every: function (e, t, n) { for (var r = 0, i = e.length; r < i; r++) if (r in e && !t.call(n, e[r], r, e)) return !1; return !0 }, indexof: function (e, t, n) { var r = e.length; n |= 0, n < 0 && (n += r), n < 0 && (n = 0); for (; n < r; n++) if (n in e && e[n] === t) return n; return -1 }, lastindexof: function (e, t, n) { var r = e.length; n |= 0; if (!n || n >= r) n = r - 1; n < 0 && (n += r); for (; n > -1; n--) if (n in e && e[n] === t) return n; return -1 }, contains: function (e, n) { return t.indexof(e, n) >= 0 }, clear: function (e) { e.length = 0 }, remove: function (e, t) { var n = -1; for (var r = 1; r < arguments.length; r++) { var i = arguments[r]; for (var s = 0; s < e.length; s++) i === e[s] && (n < 0 && (n = s), e.splice(s--, 1)) } return n }, unique: function (e) { var n = [], r = null, i = array.indexof || t.indexof; for (var s = 0, o = e.length; s < o; s++) i(n, r = e[s]) < 0 && n.push(r); return n }, reduce: function (e, t, n) { var r = e.length, i = 0; if (arguments.length < 3) { var s = 0; for (; i < r; i++) if (i in e) { n = e[i++], s = 1; break } if (!s) throw new error("no component to reduce") } for (; i < r; i++) i in e && (n = t(n, e[i], i, e)); return n }, reduceright: function (e, t, n) { var r = e.length, i = r - 1; if (arguments.length < 3) { var s = 0; for (; i > -1; i--) if (i in e) { n = e[i--], s = 1; break } if (!s) throw new error("no component to reduceright") } for (; i > -1; i--) i in e && (n = t(n, e[i], i, e)); return n }, expand: function (n, r) { var i = [], s = 0, o = n.length; for (; s < o; s++) e(n[s]) ? i = i.concat(r ? n[s] : t.expand(n[s])) : i.push(n[s]); return i }, toarray: function (e) { var t = []; for (var n = 0; n < e.length; n++) t[n] = e[n]; return t }, wrap: function (e, t) { return new t(e) } }; qw.arrayh = t } (), function () { var e = qw.arrayh.contains, t = { union: function (t, n) { var r = []; for (var i = 0, s = n.length; i < s; i++) e(t, n[i]) || r.push(n[i]); return t.concat(r) }, intersect: function (t, n) { var r = []; for (var i = 0, s = n.length; i < s; i++) e(t, n[i]) && r.push(n[i]); return r }, minus: function (t, n) { var r = []; for (var i = 0, s = t.length; i < s; i++) e(t, n[i]) || r.push(t[i]); return r }, complement: function (e, n) { return t.minus(e, n).concat(t.minus(n, e)) } }; qw.hashseth = t } (), function () { var e = { format: function (e, t) { t = t || "yyyy-mm-dd"; var n = e.getfullyear().tostring(), r = { m: e.getmonth() + 1, d: e.getdate(), h: e.gethours(), m: e.getminutes(), s: e.getseconds() }; t = t.replace(/(y+)/ig, function (e, t) { return n.substr(4 - math.min(4, t.length)) }); for (var i in r) t = t.replace(new regexp("(" + i + "+)", "g"), function (e, t) { return r[i] < 10 && t.length > 1 ? "0" + r[i] : r[i] }); return t } }; qw.dateh = e } (), function () { var e = { methodize: function (e, t) { return t ? function () { return e.apply(null, [this[t]].concat([].slice.call(arguments))) } : function () { return e.apply(null, [this].concat([].slice.call(arguments))) } }, mul: function (e, t) { var n = t == 1, r = t == 2, i = t == 3; return n ? function () { var t = arguments[0]; if (!(t instanceof array)) return e.apply(this, arguments); if (t.length) { var n = [].slice.call(arguments); return n[0] = t[0], e.apply(this, n) } } : function () { var t = arguments[0]; if (t instanceof array) { var n = [].slice.call(arguments), s = [], o = 0, u = t.length, a; for (; o < u; o++) { n[0] = t[o], a = e.apply(this, n); if (r) a != null && (s = s.concat(a)); else if (i) { if (a !== undefined) return a } else s.push(a) } return i ? undefined : s } return e.apply(this, arguments) } }, rwrap: function (e, t, n, r) { return n == null && (n = 0), function () { var i = e.apply(this, arguments); if (r && i !== undefined) return i; if (n >= 0) i = arguments[n]; else if (n == "this" || n == "context") i = this; return t ? new t(i) : i } }, hook: function (e, t, n) { if (t == "before") return function () { var r = [].slice.call(arguments); if (!1 !== n.call(this, r, e, t)) return e.apply(this, r) }; if (t == "after") return function () { var r = [].slice.call(arguments), i = e.apply(this, r); return n.call(this, i, e, t) }; throw new error("unknow hooker:" + t) }, bind: function (e, t) { var n = [].slice, r = n.call(arguments, 2), i = function () { }, s = function () { return e.apply(this instanceof i ? this : t || {}, r.concat(n.call(arguments))) }; return i.prototype = e.prototype, s.prototype = new i, s }, lazyapply: function (e, t, n, r, i) { i = i || function () { return !0 }; var s = function () { var r = i(); r == 1 && e.apply(t, n || []), (r == 1 || r == -1) && clearinterval(o) }, o = setinterval(s, r); return o } }; qw.functionh = e } (), function () { var e = qw.objecth.mix, t = qw.objecth.create, n = { createinstance: function (e) { var n = t(e.prototype); return e.apply(n, [].slice.call(arguments, 1)), n }, extend: function (t, n) { function r(t) { var n = function () { }; n.prototype = t[0].prototype; for (var r = 1; r < t.length; r++) { var i = t[r]; e(n.prototype, i.prototype) } return new n } var i = t.prototype; return t.prototype = r([].slice.call(arguments, 1)), t.$super = n, e(t.prototype, i, !0), t } }; qw.classh = n } (), function () { var e = qw.functionh, t = qw.objecth.create, n = qw.objecth.isplainobject, r = function () { }, i = { rwrap: function (n, i, s) { var o = t(n); s = s || "operator"; for (var u in n) { var a = s, f = n[u]; f instanceof function && (typeof a != "string" && (a = s[u] || ""), "queryer" == a ? o[u] = e.rwrap(f, i, "returnvalue") : "operator" == a ? n instanceof r ? o[u] = e.rwrap(f, i, "this") : o[u] = e.rwrap(f, i, 0) : "gsetter" == a && (n instanceof r ? o[u] = e.rwrap(f, i, "this", !0) : o[u] = e.rwrap(f, i, 0, !0))) } return o }, gsetter: function (e, i) { var s = t(e); i = i || {}; for (var o in i) s[o] = function (e, t) { return function () { var r = arguments.length; return r -= t, n(arguments[t]) && r++, s[e[math.min(r, e.length - 1)]].apply(this, arguments) } } (i[o], e instanceof r ? 0 : 1); return s }, mul: function (n, r) { var i = t(n); r = r || {}; var s = 0, o = 1, u = 2, a = 3; for (var f in n) { var l = n[f]; if (l instanceof function) { var c = r; typeof c != "string" && (c = r[f] || ""), "getter" == c || "getter_first" == c || "getter_first_all" == c ? i[f] = e.mul(l, o) : "getter_all" == c ? i[f] = e.mul(l, s) : "gsetter" == c ? i[f] = e.mul(l, a) : i[f] = e.mul(l, u); if ("getter" == c || "getter_first_all" == c) i[f + "all"] = e.mul(l, s) } } return i }, methodize: function (t, n, i) { var s = new r; for (var o in t) { var u = t[o]; u instanceof function ? s[o] = e.methodize(u, n) : i && (s[o] = u) } return s } }; qw.helperh = i } (), function () { qw.json = { parse: function (e) { if (/^[[\],:{}\s0]*$/.test(e.replace(/\\\\|\\"|\\'|\w+\s*\:|null|true|false|[+\-ee.]|new date(\d*)/g, "0").replace(/"[^"]*"|'[^']*'|\d+/g, "0"))) return (new function("return (" + e + ");"))(); throw "invalid json format in executing json.parse" }, stringify: function (e) { return qw.objecth.stringify(e) } } } (), function () { var e = qw.objecth.mix, t = qw.arrayh.indexof, n = function (t, n, r) { this.target = t, this.type = n, e(this, r || {}) }; e(n.prototype, { target: null, currenttarget: null, type: null, returnvalue: undefined, preventdefault: function () { this.returnvalue = !1 } }); var r = { on: function (e, n, i) { var s = e.__custlisteners && e.__custlisteners[n]; return s || (r.createevents(e, n), s = e.__custlisteners && e.__custlisteners[n]), t(s, i) > -1 ? !1 : (s.push(i), !0) }, un: function (e, n, r) { var i = e.__custlisteners && e.__custlisteners[n]; if (!i) return !1; if (r) { var s = t(i, r); if (s < 0) return !1; i.splice(s, 1) } else i.length = 0; return !0 }, fire: function (t, i, s) { if (i instanceof n) { var o = e(i, s); i = i.type } else o = new n(t, i, s); var u = t.__custlisteners && t.__custlisteners[i]; u || (r.createevents(t, i), u = t.__custlisteners && t.__custlisteners[i]), i != "*" && (u = u.concat(t.__custlisteners["*"] || [])), o.returnvalue = undefined, o.currenttarget = t; var a = o.currenttarget; if (a && a["on" + o.type]) var f = a["on" + o.type].call(a, o); for (var l = 0; l < u.length; l++) u[l].call(a, o); return o.returnvalue !== !1 && (f !== !1 || o.returnvalue !== undefined) }, createevents: function (e, t) { t = t || [], typeof t == "string" && (t = t.split(",")); var n = e.__custlisteners; n || (n = e.__custlisteners = {}); for (var r = 0; r < t.length; r++) n[t[r]] = n[t[r]] || []; return n["*"] = n["*"] || [], e } }, i = function () { this.__custlisteners = {} }, s = qw.helperh.methodize(r); e(i.prototype, s), n.createevents = function (t, n) { return r.createevents(t, n), e(t, s) }, qw.custevent = n, qw.custeventtargeth = r, qw.custeventtarget = i } (), function () { function e() { return !0 } function t(t, n) { var r = [], i = t.length, s = 0, o; if (n == e) { if (t instanceof array) return t.slice(0); for (; s < i; s++) r[s] = t[s] } else for (; s < i; ) o = t[s++], n(o) && r.push(o); return r } function n(e) { var t = e.children || e.childnodes, n = t.length, r = [], i = 0; for (; i < n; i++) t[i].nodetype == 1 && r.push(t[i]); return r } function r(e) { var t = document.getelementbyid(e), n; if (t && t.id != e) { n = document.getelementsbyname(e); for (var r = 0; r < n.length; r++) if (n[r].id == e) return n[r]; return null } return t } function i(e, t, n) { if (t == "n") return !0; if (typeof e == "number") var r = e; else { var i = e.parentnode; if (i.__querystamp != m) { var s = { nextsibling: i.firstchild }, o = 1; while (s = s.nextsibling) s.nodetype == 1 && (s.__siblingidx = o++); i.__querystamp = m, i.__childrennum = o - 1 } n ? r = i.__childrennum - e.__siblingidx + 1 : r = e.__siblingidx } switch (t) { case "even": case "2n": return r % 2 == 0; case "odd": case "2n+1": return r % 2 == 1; default: if (!/n/.test(t)) return r == t; var u = t.replace(/(^|\d+)n/g, "$11n").split("n"), a = u[0] | 0, f = r - u[1] | 0; return a * f >= 0 && f % a == 0 } } function s(n, r) { if (!r && v[n]) return v[n]; var i = [], s = l(n), o = /\[\s*((?:[\w\u00c0-\uffff-]|\\.)+)\s*(?:(\s?=)\s*(['"]*)(.*?)\3|)\s*\]/g, u = []; s = s.replace(/\:([\w\-]+)(\(([^)]+)\))?/g, function (e, t, n, r, s) { return i.push([t, r]), "" }).replace(/^\*/g, function (e) { return u.push("el.nodetype==1"), "" }).replace(/^([\w\-]+)/g, function (e) { return u.push('(el.tagname||"").touppercase()=="' + e.touppercase() + '"'), "" }).replace(/([\[(].*)|#([\w\-]+)|\.([\w\-]+)/g, function (e, t, n, r) { return t || n && '[id="' + n + '"]' || r && '[classname~="' + r + '"]' }).replace(o, function (e, t, n, r, i) { var s = h._attrgetters[t] || 'el.getattribute("' + t + '")'; return u.push(h._operators[n || ""].replace(/aa/g, s).replace(/vv/g, i || "")), "" }); if (!/^\s*$/.test(s)) throw "unsupported selector:\n" + n + "\n-" + s; for (var a = 0, f; f = i[a]; a++) { if (!h._pseudos[f[0]]) throw "unsupported selector:\n" + f[0] + "\n" + s; u.push('__sltpsds["' + f[0] + '"](el,"' + (f[1] != null ? c(f[1]) : "") + '",i,els)') } return u.length ? r ? new function("els", "var els2=[];for(var i=0,el;el=els[i];i++){if(" + u.join("&&") + ") els2.push(el);} return els2;") : v[n] = new function("el, i, els", "return " + u.join("&&") + ";") : r ? function (n) { return t(n, e) } : v[n] = e } function o(e, t) { if (d && /^((^|,)\s*[.\w-][.\w\s\->+~]*)+$/.test(t)) { var n = e.id, r, i = [], s; if (!n && e.parentnode) { r = e.id = "__qw_slt_" + g++; try { s = e.queryselectorall("#" + r + " " + t) } finally { e.removeattribute("id") } } else s = e.queryselectorall(t); for (var o = 0, u = s.length; o < u; o++) i.push(s[o]); return i } return null } function u(e, t) { y++; var i = o(e, t); if (i) return i; var l = a(t), c = [e], h, v, m, g, b; while (g = l[0]) { if (!c.length) return []; var w = g[0]; i = []; if (w == "+") { b = s(g[1]); for (h = 0; v = c[h++]; ) while (v = v.nextsibling) if (v.tagname) { b(v) && i.push(v); break } c = i, l.splice(0, 1) } else { if (w != "~") break; b = s(g[1]); for (h = 0; v = c[h++]; ) { if (h > 1 && v.parentnode == c[h - 2].parentnode) continue; while (v = v.nextsibling) v.tagname && b(v) && i.push(v) } c = i, l.splice(0, 1) } } var e = l.length; if (!e || !c.length) return c; for (var s = 0, x, t; t = l[s]; s++) if (/^[.\w-]*#([\w-]+)/i.test(t[1])) { x = regexp.$1, t[1] = t[1].replace("#" + x, ""); break } if (s < e) { var n = r(x); if (!n) return []; for (h = 0, m; m = c[h++]; ) if (!m.parentnode || p(m, n)) return i = f(m, [n], l.slice(0, s + 1)), !i.length || s == e - 1 ? i : u(n, l.slice(s + 1).join(",").replace(/,/g, " ")); return [] } var c = function (e) { return e.getelementsbytagname(k) }, k = "*", l = ""; t = l[e - 1][1], t = t.replace(/^[\w\-]+/, function (e) { return k = e, "" }), d && (t = t.replace(/^[\w\*]*\.([\w\-]+)/, function (e, t) { return l = t, "" })), l && (c = function (e) { return e.queryselectorall(k + "." + l) }); if (e == 1) { l[0][0] == ">" ? (c = n, b = s(l[0][1], !0)) : b = s(t, !0), i = []; for (h = 0; m = c[h++]; ) i = i.concat(b(c(m))); return i } l[l.length - 1][1] = t, i = []; for (h = 0; m = c[h++]; ) i = i.concat(f(m, c(m), l)); return i } function a(e) { var t = [], n = /(^|\s*[>+~ ]\s*)(([\w\-\:.#*]+|\([^\)]*\)|\[\s*((?:[\w\u00c0-\uffff-]|\\.)+)\s*(?:(\s?=)\s*(['"]*)(.*?)\6|)\s*\])+)(?=($|\s*[>+~ ]\s*))/g, r = l(e).replace(n, function (e, n, r, i) { return t.push([l(n), r]), "" }); if (!/^\s*$/.test(r)) throw "unsupported selector:\n" + e + "\n--" + r; return t } function f(e, n, r) { var i = r[0], o = r.length, u = !i[0], a = [], f = [], l = [], c = ""; for (var p = 0; p < o; p++) { i = r[p], a[p] = s(i[1], p == o - 1), f[p] = h._relations[i[0]]; if (i[0] == "" || i[0] == "~") l[p] = !0; c += i[0] || " " } n = a[o - 1](n); if (c == " ") return n; if (/[+>~] |[+]~/.test(c)) return t(n, function (t) { var n = [], r = o - 1, i = n[r] = t; for (; r > -1; r--) { if (r > 0) i = f[r](i, a[r - 1], e); else { if (u || i.parentnode == e) return !0; i = null } while (!i) { if (++r == o) return !1; l[r] && (i = n[r - 1], r++) } n[r - 1] = i } }); var d = [], v = n.length; for (var p = 0, m, g; p < v; ) { m = g = n[p++]; for (var y = o - 1; y > 0; y--) if (!(m = f[y](m, a[y - 1], e))) break; m && (u || m.parentnode == e) && d.push(g) } return d } var l = qw.stringh.trim, c = qw.stringh.encode4js, h = { querystamp: 0, _operators: { "": "aa", "=": 'aa=="vv"', "!=": 'aa!="vv"', "~=": 'aa&&(" "+aa+" ").indexof(" vv ")>-1', "|=": 'aa&&(aa+"-").indexof("vv-")==0', "^=": 'aa&&aa.indexof("vv")==0', "$=": 'aa&&aa.lastindexof("vv")==aa.length-"vv".length', "*=": 'aa&&aa.indexof("vv")>-1' }, _pseudos: { "first-child": function (e) { return !(e = e.previoussibling) || !e.tagname && !e.previoussibling }, "last-child": function (e) { return !(e = e.nextsibling) || !e.tagname && !e.nextsibling }, "only-child": function (e) { var t; return !((t = e.previoussibling) && (t.tagname || t.previoussibling) || (t = e.nextsibling) && (t.tagname || t.nextsibling)) }, "nth-child": function (e, t) { return i(e, t) }, "nth-last-child": function (e, t) { return i(e, t, !0) }, "first-of-type": function (e) { var t = e.tagname, n = e; while (n = n.previousslibling) if (n.tagname == t) return !1; return !0 }, "last-of-type": function (e) { var t = e.tagname, n = e; while (n = n.nextsibling) if (n.tagname == t) return !1; return !0 }, "only-of-type": function (e) { var t = e.parentnode.childnodes; for (var n = t.length - 1; n > -1; n--) if (t[n].tagname == e.tagname && t[n] != e) return !1; return !0 }, "nth-of-type": function (e, t) { var n = 1, r = e; while (r = r.previoussibling) r.tagname == e.tagname && n++; return i(n, t) }, "nth-last-of-type": function (e, t) { var n = 1, r = e; while (r = r.nextsibling) r.tagname == e.tagname && n++; return i(n, t) }, empty: function (e) { return !e.firstchild }, parent: function (e) { return !!e.firstchild }, not: function (e, t) { return !s(t)(e) }, enabled: function (e) { return !e.disabled }, disabled: function (e) { return e.disabled }, checked: function (e) { return e.checked }, focus: function (e) { return e == e.ownerdocument.activeelement }, indeterminate: function (e) { return e.indeterminate }, input: function (e) { return /input|select|textarea|button/i.test(e.nodename) }, contains: function (e, t) { return (e.textcontent || e.innertext || "").indexof(t) >= 0 } }, _attrgetters: function () { var e = { "class": "el.classname", "for": "el.htmlfor", href: 'el.getattribute("href",2)' }, t = "name,id,classname,value,selected,checked,disabled,type,tagname,readonly,offsetwidth,offsetheight,innerhtml".split(","); for (var n = 0, r; r = t[n]; n++) e[r] = "el." + r; return e } (), _relations: { "": function (e, t, n) { while ((e = e.parentnode) && e != n) if (t(e)) return e; return null }, ">": function (e, t, n) { return e = e.parentnode, e != n && t(e) ? e : null }, "+": function (e, t, n) { while (e = e.previoussibling) if (e.tagname) return t(e) && e; return null }, "~": function (e, t, n) { while (e = e.previoussibling) if (e.tagname && t(e)) return e; return null } }, selector2filter: function (e) { return s(e) }, test: function (e, t) { return s(t)(e) }, filter: function (e, t, n) { var n = n || document, r = l(t).split(","); if (r.length < 2) return f(n || document, e, a(t)); var i = f(n || document, e, a(r[0])); if (i.length == e.length) return i; for (var s = 0, o = e.length; s < o; s++) e[s].__qwsltflted = 0; for (s = 0, o = i.length; s < o; s++) i[s].__qwsltflted = 1; var u = e, c; for (var h = 1; h < r.length; h++) { c = []; for (s = 0, o = u.length; s < o; s++) u[s].__qwsltflted || c.push(u[s]); u = c, i = f(n || document, u, a(r[h])); for (s = 0, o = i.length; s < o; s++) i[s].__qwsltflted = 1 } var p = []; for (s = 0, o = e.length; s < o; s++) e[s].__qwsltflted && p.push(e[s]); return p }, query: function (e, t) { h.querystamp = m++, e = e || document; var n = o(e, t); if (n) return n; var r = l(t).split(","); n = u(e, r[0]); for (var i = 1, s; s = r[i]; i++) { var a = u(e, s); n = n.concat(a) } return n }, one: function (e, t) { var n = h.query(e, t); return n[0] } }; window.__sltpsds = h._pseudos; var p, d; (function () { var e = document.createelement("div"); e.innerhtml = '
', d = e.queryselectorall && e.queryselectorall(".aaa").length == 1, p = e.contains ? function (e, t) { return e != t && e.contains(t) } : function (e, t) { return e.comparedocumentposition(t) & 16 } })(); var v = {}, m = 0, g = 0, y = 0; qw.selector = h } (), function () { var e = qw.selector, t = qw.browser, n = { query: function (t, n) { return e.query(n || document.documentelement, t) }, getdocrect: function (e) { e = e || document; var n = e.defaultview || e.parentwindow, r = e.compatmode, i = e.documentelement, s = n.innerheight || 0, o = n.innerwidth || 0, u = n.pagexoffset || 0, a = n.pageyoffset || 0, f = i.scrollwidth, l = i.scrollheight; return r != "css1compat" && (i = e.body, f = i.scrollwidth, l = i.scrollheight), r && !t.opera && (o = i.clientwidth, s = i.clientheight), f = math.max(f, o), l = math.max(l, s), u = math.max(u, e.documentelement.scrollleft, e.body.scrollleft), a = math.max(a, e.documentelement.scrolltop, e.body.scrolltop), { width: o, height: s, scrollwidth: f, scrollheight: l, scrollx: u, scrolly: a} }, create: function () { var e = document.createelement("div"), t = { option: [1, '"], optgroup: [1, '"], legend: [1, ""], thead: [1, "
", "
"], tbody: [1, "
", "
"], tfoot: [1, "
", "
"], tr: [2, "
", "
"], td: [3, "
", "
"], th: [3, "
", "
"], col: [2, "
", "
"], _default: [0, "", ""] }, n = /<(\w+)/i; return function (r, i, s) { var o = s && s.createelement("div") || e, u = o, a = (n.exec(r) || ["", ""])[1], f = t[a] || t._default, l = f[0]; o.innerhtml = f[1] + r + f[2]; while (l--) o = o.firstchild; var c = o.firstchild; if (!c || !i) { while (u.firstchild) u.removechild(u.firstchild); return c } s = s || document; var h = s.createdocumentfragment(); while (c = o.firstchild) h.appendchild(c); return h } } (), pluckwhitenode: function (e) { var t = [], r = 0, i = e.length; for (; r < i; r++) n.iselement(e[r]) && t.push(e[r]); return t }, iselement: function (e) { return !!e && e.nodetype == 1 }, ready: function (e, n) { n = n || document; if (/complete/.test(n.readystate)) e(); else if (n.addeventlistener) !t.ie && "interactive" == n.readystate ? e() : n.addeventlistener("domcontentloaded", e, !1); else { var r = function () { r = new function, e() }; (function () { try { n.body.doscroll("left") } catch (e) { return settimeout(arguments.callee, 1) } r() })(), n.attachevent("onreadystatechange", function () { "complete" == n.readystate && r() }) } }, rectcontains: function (e, t) { return e.left <= t.left && e.right >= t.right && e.top <= t.top && e.bottom >= t.bottom }, rectintersect: function (e, t) { var n = math.max(e.top, t.top), r = math.min(e.right, t.right), i = math.min(e.bottom, t.bottom), s = math.max(e.left, t.left); return i >= n && r >= s ? { top: n, right: r, bottom: i, left: s} : null }, createelement: function (e, t, n) { n = n || document; var r = n.createelement(e); return t && qw.nodeh.setattr(r, t), r }, insertcsstext: function (e) { var t = document.createelement("style"); return t.type = "text/css", t.stylesheet ? t.stylesheet.csstext = e : t.appendchild(document.createtextnode(e)), (document.getelementsbytagname("head")[0] || document.documentelement).appendchild(t) } }; qw.domu = n } (), function () { function e(e, t) { if ("string" == typeof e) { if (e.indexof("<") == 0) return s.create(e, !1, t); var n = (t || document).getelementbyid(e), i; if (n && n.id != e) { i = (t || document).getelementsbyname(e); for (var o = 0; o < i.length; o++) if (i[o].id == e) return i[o]; return null } return n } return r.iswrap(e) ? arguments.callee(e[0]) : e } function t(e) { return string(e).replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1") } function n(e, t) { if (/px$/.test(t) || !t) return parseint(t, 10) || 0; var n = e.style.right, r = e.runtimestyle.right, i; return e.runtimestyle.right = e.currentstyle.right, e.style.right = t, i = e.style.pixelright || 0, e.style.right = n, e.runtimestyle.right = r, i } var r = qw.objecth, i = qw.stringh, s = qw.domu, o = qw.browser, u = qw.selector, a = u.selector2filter, f = { outerhtml: function () { var t = document.createelement("div"); return function (n, r) { n = e(n); if ("outerhtml" in n) return n.outerhtml; t.innerhtml = ""; var i = r && r.createelement("div") || t; return i.appendchild(n.clonenode(!0)), i.innerhtml } } (), hasclass: function (t, n) { return t = e(t), (" " + t.classname + " ").indexof(" " + n + " ") > -1 }, addclass: function (t, n) { t = e(t), f.hasclass(t, n) || (t.classname = t.classname ? t.classname + " " + n : n) }, removeclass: function (n, r) { n = e(n), f.hasclass(n, r) && (n.classname = n.classname.replace(new regexp("(?:^|\\s)" + t(r) + "(?=\\s|$)", "ig"), "")) }, replaceclass: function (n, r, i) { n = e(n), f.hasclass(n, r) ? n.classname = n.classname.replace(new regexp("(^|\\s)" + t(r) + "(?=\\s|$)", "ig"), "$1" + i) : f.addclass(n, i) }, toggleclass: function (e, t, n) { n = n || "", f.hasclass(e, t) ? f.replaceclass(e, t, n) : f.replaceclass(e, n, t) }, show: function () { function t(e) { if (!n[e]) { var t = document.createelement(e), r = document.body; f.insertsiblingbefore(r.firstchild, t), display = f.getcurrentstyle(t, "display"), f.removechild(r, t), r = t = null; if (display === "none" || display === "") display = "block"; n[e] = display } return n[e] } var n = {}; return function (n, r) { n = e(n); if (!r) { var i = n.style.display; i === "none" && (i = n.style.display = ""), i === "" && f.getcurrentstyle(n, "display") === "none" && (i = t(n.nodename)) } n.style.display = r || i } } (), hide: function (t) { t = e(t), t.style.display = "none" }, wrap: function (t, n) { t = e(t), n = e(n, t.ownerdocument), t.parentnode.insertbefore(n, t), n.appendchild(t) }, unwrap: function (t) { t = e(t); var n = t.parentnode; if (n && n.tagname != "body") { var r = n.parentnode; while (n.firstchild) r.insertbefore(n.firstchild, n); r.removechild(n) } }, empty: function (t) { t = e(t); while (t.firstchild) t.removechild(t.firstchild) }, toggle: function (e, t) { f.isvisible(e) ? f.hide(e) : f.show(e, t) }, isvisible: function (t) { return t = e(t), !!(t.offsetheight + t.offsetwidth && f.getstyle(t, "display") != "none") }, getxy: function () { var e = function (e, t) { var n = parseint(f.getcurrentstyle(e, "bordertopwidth"), 10) || 0, r = parseint(f.getcurrentstyle(e, "borderleftwidth"), 10) || 0; return o.gecko && /^t(?:able|d|h)$/i.test(e.tagname) && (n = r = 0), t[0] += r, t[1] += n, t }; return document.documentelement.getboundingclientrect ? function (e) { var t = e.ownerdocument, n = s.getdocrect(t), r = n.scrollx, i = n.scrolly, u = e.getboundingclientrect(), a = [u.left, u.top], f, l, c; o.ie && (l = t.documentelement.clientleft, c = t.documentelement.clienttop, f = t.compatmode, f == "backcompat" && (l = t.body.clientleft, c = t.body.clienttop), a[0] -= l, a[1] -= c); if (i || r) a[0] += r, a[1] += i; return a } : function (t) { var n = [t.offsetleft, t.offsettop], r = t.parentnode, i = t.ownerdocument, u = s.getdocrect(i), a = !!(o.gecko || parsefloat(o.webkit) > 519), l = 0, c = 0; while (r = r.offsetparent) n[0] += r.offsetleft, n[1] += r.offsettop, a && (n = e(r, n)); if (f.getcurrentstyle(t, "position") != "fixed") { r = t; while (r = r.parentnode) { l = r.scrolltop, c = r.scrollleft, o.gecko && f.getcurrentstyle(r, "overflow") !== "visible" && (n = e(r, n)); if (l || c) n[0] -= c, n[1] -= l } } return n[0] += u.scrollx, n[1] += u.scrolly, n } } (), setxy: function (t, n, r) { t = e(t), n = parseint(n, 10), r = parseint(r, 10), isnan(n) || f.setstyle(t, "left", n + "px"), isnan(r) || f.setstyle(t, "top", r + "px") }, setsize: function (t, n, r) { t = e(t), n = parsefloat(n, 10), r = parsefloat(r, 10); if (isnan(n) && isnan(r)) return; var i = f.borderwidth(t), s = f.paddingwidth(t); isnan(n) || f.setstyle(t, "width", math.max(+n - i[1] - i[3] - s[1] - s[3], 0) + "px"), isnan(r) || f.setstyle(t, "height", math.max(+r - i[0] - i[2] - s[0] - s[2], 0) + "px") }, setinnersize: function (t, n, r) { t = e(t), n = parsefloat(n, 10), r = parsefloat(r, 10), isnan(n) || f.setstyle(t, "width", n + "px"), isnan(r) || f.setstyle(t, "height", r + "px") }, setrect: function (e, t, n, r, i) { f.setxy(e, t, n), f.setsize(e, r, i) }, setinnerrect: function (e, t, n, r, i) { f.setxy(e, t, n), f.setinnersize(e, r, i) }, getsize: function (t) { return t = e(t), { width: t.offsetwidth, height: t.offsetheight} }, getrect: function (t) { t = e(t); var n = f.getxy(t), r = n[0], i = n[1], s = t.offsetwidth, o = t.offsetheight; return { width: s, height: o, left: r, top: i, bottom: i + o, right: r + s} }, nextsibling: function (t, n) { var r = a(n || ""); t = e(t); do t = t.nextsibling; while (t && !r(t)); return t }, previoussibling: function (t, n) { var r = a(n || ""); t = e(t); do t = t.previoussibling; while (t && !r(t)); return t }, previoussiblings: function (t, n) { var r = a(n || ""), i = []; t = e(t); while (t = t.previoussibling) r(t) && i.push(t); return i.reverse() }, nextsiblings: function (t, n) { var r = a(n || ""), i = []; t = e(t); while (t = t.nextsibling) r(t) && i.push(t); return i }, siblings: function (e, t) { var n = a(t || ""), r = e.parentnode.firstchild, i = []; while (r) e != r && n(r) && i.push(r), r = r.nextsibling; return i }, ancestornode: function (t, n) { var r = a(n || ""); t = e(t); do t = t.parentnode; while (t && !r(t)); return t }, parentnode: function (e, t) { return f.ancestornode(e, t) }, ancestornodes: function (t, n) { var r = a(n || ""), i = []; t = e(t); while (t = t.parentnode) r(t) && i.push(t); return i.reverse() }, firstchild: function (t, n) { var r = a(n || ""); t = e(t).firstchild; while (t && !r(t)) t = t.nextsibling; return t }, lastchild: function (t, n) { var r = a(n || ""); t = e(t).lastchild; while (t && !r(t)) t = t.previoussibling; return t }, contains: function (t, n) { return t = e(t), n = e(n), t.contains ? t != n && t.contains(n) : !!(t.comparedocumentposition(n) & 16) }, insertadjacenthtml: function (t, n, r) { t = e(t); if (t.insertadjacenthtml) t.insertadjacenthtml(n, r); else { var i = t.ownerdocument.createrange(), s; i.setstartbefore(t), s = i.createcontextualfragment(r), f.insertadjacentelement(t, n, s) } }, insertadjacentelement: function (t, n, r) { t = e(t), r = e(r); if (t.insertadjacentelement) t.insertadjacentelement(n, r); else switch (string(n).tolowercase()) { case "beforebegin": t.parentnode.insertbefore(r, t); break; case "afterbegin": t.insertbefore(r, t.firstchild); break; case "beforeend": t.appendchild(r); break; case "afterend": t.parentnode.insertbefore(r, t.nextsibling || null) } return r }, insert: function (e, t, n) { f.insertadjacentelement(e, t, n) }, insertto: function (e, t, n) { f.insertadjacentelement(n, t, e) }, appendchild: function (t, n) { return e(t).appendchild(e(n)) }, appendto: function (t, n) { return e(n).appendchild(e(t)) }, prepend: function (t, n) { return t = e(t), t.insertbefore(e(n), t.firstchild) }, prependto: function (e, t) { return f.prepend(t, e) }, insertsiblingbefore: function (t, n) { return t = e(t), t.parentnode.insertbefore(e(n), t) }, insertsiblingafter: function (t, n) { t = e(t), t.parentnode.insertbefore(e(n), t.nextsibling || null) }, insertbefore: function (t, n, r) { return e(t).insertbefore(e(n), r && e(r) || null) }, insertafter: function (t, n, r) { return e(t).insertbefore(e(n), r && e(r).nextsibling || null) }, insertparent: function (e, t) { return f.insertsiblingbefore(e, t), f.appendchild(t, e) }, replacenode: function (t, n) { return t = e(t), t.parentnode.replacechild(e(n), t) }, replacechild: function (t, n, r) { return e(t).replacechild(e(n), e(r)) }, removenode: function (t) { return t = e(t), t.parentnode.removechild(t) }, removechild: function (t, n) { return e(t).removechild(e(n)) }, get: function (t, n) { return t = e(t), r.get.apply(null, arguments) }, set: function (t, n, i) { t = e(t), r.set.apply(null, arguments) }, getattr: function (t, n, r) { return t = e(t), n = f.attrmap[n] || n, n in t && "href" != n ? t[n] : t.getattribute(n, r || t.nodename == "a" && n.tolowercase() == "href" && 2 || null) }, setattr: function (t, n, r, i) { t = e(t); if ("object" != typeof n) n = f.attrmap[n] || n, n in t ? t[n] = r : t.setattribute(n, r, i || null); else for (var s in n) f.setattr(t, s, n[s]) }, removeattr: function (t, n, r) { return t = e(t), t.removeattribute(n, r || 0) }, query: function (t, n) { return t = e(t), u.query(t, n || "") }, one: function (t, n) { return t = e(t), u.one(t, n || "") }, getelementsbyclass: function (t, n) { return t = e(t), u.query(t, "." + n) }, getvalue: function (t) { return t = e(t), t.value }, setvalue: function (t, n) { e(t).value = n }, gethtml: function (t) { return t = e(t), t.innerhtml }, sethtml: function () { var t = /<(?:object|embed|option|style)/i, n = function (e, t) { f.empty(e), f.appendchild(e, s.create(t, !0)) }; return function (r, i) { r = e(r); if (!t.test(i)) try { r.innerhtml = i } catch (s) { n(r, i) } else n(r, i) } } (), encodeuriform: function (t, n) { t = e(t), n = n || function (e) { return !1 }; var r = [], i = t.elements, s = i.length, o = 0, u = function (e, t) { r.push(encodeuricomponent(e) + "=" + encodeuricomponent(t)) }; for (; o < s; ++o) { t = i[o]; var a = t.name; if (t.disabled || !a || n(t)) continue; switch (t.type) { case "text": case "hidden": case "password": case "textarea": u(a, t.value); break; case "radio": case "checkbox": t.checked && u(a, t.value); break; case "select-one": t.selectedindex > -1 && u(a, t.value); break; case "select-multiple": var f = t.options; for (var l = 0; l < f.length; ++l) f[l].selected && u(a, f[l].value) } } return r.join("&") }, isformchanged: function (t, n) { t = e(t), n = n || function (e) { return !1 }; var r = t.elements, i = r.length, s = 0, o = 0, u; for (; s < i; ++s, o = 0) { t = r[s]; if (n(t)) continue; switch (t.type) { case "text": case "hidden": case "password": case "textarea": if (t.defaultvalue != t.value) return !0; break; case "radio": case "checkbox": if (t.defaultchecked != t.checked) return !0; break; case "select-one": o = 1; case "select-multiple": u = t.options; for (; o < u.length; ++o) if (u[o].defaultselected != u[o].selected) return !0 } } return !1 }, clonenode: function (t, n) { return e(t).clonenode(n || !1) }, removestyle: function (t, n) { t = e(t); var r = i.camelize(n), s = f.csshooks[r]; s ? s.remove(t) : t.style.removeproperty ? t.style.removeproperty(i.decamelize(n)) : t.style.removeattribute(r) }, getstyle: function (t, n) { t = e(t), n = i.camelize(n); var r = f.csshooks[n], s; return r ? s = r.get(t) : s = t.style[n], !s || s == "auto" ? null : s }, getcurrentstyle: function (t, n, r) { t = e(t); var s = i.camelize(n), u = f.csshooks[s], a; if (u) a = u.get(t, !0, r); else if (o.ie) a = t.currentstyle[s]; else { var l = t.ownerdocument.defaultview.getcomputedstyle(t, r || null); a = l ? l.getpropertyvalue(i.decamelize(n)) : null } return !a || a == "auto" ? null : a }, setstyle: function (t, n, r) { t = e(t); if ("object" != typeof n) { var s = i.camelize(n), o = f.csshooks[s]; o ? o.set(t, r) : t.style[s] = r } else for (var u in n) f.setstyle(t, u, n[u]) }, borderwidth: function () { var t = { thin: 2, medium: 4, thick: 6 }, n = function (e, n) { var r = f.getcurrentstyle(e, n); return r = t[r] || parsefloat(r), r || 0 }; return function (t) { return t = e(t), [n(t, "bordertopwidth"), n(t, "borderrightwidth"), n(t, "borderbottomwidth"), n(t, "borderleftwidth")] } } (), paddingwidth: function (t) { return t = e(t), [n(t, f.getcurrentstyle(t, "paddingtop")), n(t, f.getcurrentstyle(t, "paddingright")), n(t, f.getcurrentstyle(t, "paddingbottom")), n(t, f.getcurrentstyle(t, "paddingleft"))] }, marginwidth: function (t) { return t = e(t), [n(t, f.getcurrentstyle(t, "margintop")), n(t, f.getcurrentstyle(t, "marginright")), n(t, f.getcurrentstyle(t, "marginbottom")), n(t, f.getcurrentstyle(t, "marginleft"))] }, tmpl: function (t, n) { return t = e(t), i.tmpl(t.innerhtml, n) }, attrmap: { "class": "classname", "for": "htmlfor", tabindex: "tabindex", readonly: "readonly", maxlength: "maxlength", cellspacing: "cellspacing", cellpadding: "cellpadding", rowspan: "rowspan", colspan: "colspan", usemap: "usemap", frameborder: "frameborder", contenteditable: "contenteditable" }, csshooks: function () { var e = { "float": { get: function (e, t, n) { if (t) { var r = e.ownerdocument.defaultview.getcomputedstyle(e, n || null); return r ? r.getpropertyvalue("cssfloat") : null } return e.style.cssfloat }, set: function (e, t) { e.style.cssfloat = t }, remove: function (e) { e.style.removeproperty("float") } } }; if (o.ie) { e["float"] = { get: function (e, t) { return e[t ? "currentstyle" : "style"].stylefloat }, set: function (e, t) { e.style.stylefloat = t }, remove: function (e) { e.style.removeattribute("stylefloat") } }; var t = document.createelement("div"), n; t.innerhtml = "a", n = t.getelementsbytagname("a")[0]; if (n && !/^0.55$/.test(n.style.opacity)) { var r = /alpha\([^)]*\)/i, i = /opacity=([^)]*)/; e.opacity = { get: function (e, t) { return i.test((t && e.currentstyle ? e.currentstyle.filter : e.style.filter) || "") ? parsefloat(regexp.$1) / 100 + "" : t ? "1" : "" }, set: function (e, t) { var n = e.style, i = e.currentstyle; n.zoom = 1; var s = "alpha(opacity=" + t * 100 + ")", o = i && i.filter || n.filter || ""; n.filter = r.test(o) ? o.replace(r, s) : o + " " + s }, remove: function (e) { var t = e.style, n = e.currentstyle, i = n && n.filter || t.filter || ""; r.test(i) && (t.filter = i.replace(r, "")), t.removeattribute("opacity") } } } } return e } () }; f.g = e, qw.nodeh = f } (), function () { var e = qw.objecth, t = e.mix, n = e.isstring, r = e.isarray, i = array.prototype.push, s = qw.nodeh, o = s.g, u = s.query, a = s.one, f = qw.domu.create, l = function (e) { if (!e) return null; if (e instanceof l) return e; var t = arguments[1]; if (n(e)) { if (/^ -1; u.removeeventlistener(e, o.split(/[^a-za-z]/)[0], i[o], f), delete i[o] } } } } } (), u = { _eventhooks: {}, _delegatehooks: {}, _delegatecpatureevents: "change,focus,blur", firehandler: function (e, t, n, r) { return t = s(t), t.usertype = r, n.call(e, t) }, addeventlistener: function () { return document.addeventlistener ? function (e, t, n, r) { e.addeventlistener(t, n, r || !1) } : function (e, t, n) { e.attachevent("on" + t, n) } } (), removeeventlistener: function () { return document.removeeventlistener ? function (e, t, n, r) { e.removeeventlistener(t, n, r || !1) } : function (e, t, n) { e.detachevent("on" + t, n) } } (), on: function (t, n, i) { if (n && n.indexof(",") > -1) { var s = n.split(/\s*,\s*/); for (var a = 0; a < s.length; a++) u.on(t, s[a], i); return } t = r(t); var f = u._eventhooks[n]; if (f) for (var a in f) { var l = e(t, a, i, n); o.add(l, t, a + "." + n, i), a == n ? u.addeventlistener(t, a, l) : u.on(t, a, l) } else l = e(t, n, i), u.addeventlistener(t, n, l), o.add(l, t, n, i) }, un: function (t, n, i) { if (n && n.indexof(",") > -1) { var s = n.split(/\s*,\s*/); for (var a = 0; a < s.length; a++) u.un(t, s[a], i); return } t = r(t); if (!i) return o.removeevents(t, n); var f = u._eventhooks[n]; if (f) for (var a in f) { var l = e(t, a, i, n); a == n ? u.removeeventlistener(t, a, l) : u.un(t, a, l), o.remove(t, a + "." + n, i) } else l = e(t, n, i), u.removeeventlistener(t, n, l), o.remove(t, n, i) }, once: function (e, t, n) { e = r(e); var i = function () { n.apply(this, arguments), u.un(e, t, i) }; u.on(e, t, i) }, delegate: function (e, n, i, s) { if (i && i.indexof(",") > -1) { var a = i.split(/\s*,\s*/); for (var f = 0; f < a.length; f++) u.delegate(e, n, a[f], s); return } e = r(e); var l = u._delegatehooks[i], c = u._delegatecpatureevents.indexof(i) > -1; if (l) for (var f in l) { var h = t(e, n, f, s, i); o.add(h, e, f + "." + i, s, n), f == i ? u.addeventlistener(e, f, h, c) : u.delegate(e, n, f, h) } else h = t(e, n, i, s), u.addeventlistener(e, i, h, c), o.add(h, e, i, s, n) }, undelegate: function (e, n, i, s) { if (i && i.indexof(",") > -1) { var a = i.split(/\s*,\s*/); for (var f = 0; f < a.length; f++) u.undelegate(e, n, a[f], s); return } e = r(e); if (!s) return o.removedelegates(e, i, n); var l = u._delegatehooks[i], c = u._delegatecpatureevents.indexof(i) > -1; if (l) for (var f in l) { var h = t(e, n, f, s, i); f == i ? u.removeeventlistener(e, f, h, c) : u.undelegate(e, n, f, h), o.remove(e, f + "." + i, s, n) } else h = t(e, n, i, s), u.removeeventlistener(e, i, h, c), o.remove(e, i, s, n) }, fire: function () { return document.dispatchevent ? function (e, t) { var n = null, r = e.ownerdocument || e; return /mouse|click/i.test(t) ? (n = r.createevent("mouseevents"), n.initmouseevent(t, !0, !0, r.defaultview, 1, 0, 0, 0, 0, !1, !1, !1, !1, 0, null)) : (n = r.createevent("events"), n.initevent(t, !0, !0, r.defaultview)), e.dispatchevent(n) } : function (e, t) { return e.fireevent("on" + t) } } () }; u._defaultextend = function () { var e = function (e) { function t(e) { u[e] = function (t, n) { n ? u.on(t, e, n) : t[e] ? t[e]() : u.fire(t, e) } } for (var n = 0, r = e.length; n < r; ++n) t(e[n]) }; e("submit,reset,click,focus,blur,change,select".split(",")), u.hover = function (e, t, n) { e = r(e), u.on(e, "mouseenter", t), u.on(e, "mouseleave", n || t) }; var t = navigator.useragent; /firefox/i.test(t) && (u._eventhooks.mousewheel = u._delegatehooks.mousewheel = { dommousescroll: function (e, t) { return !0 } }), i(u._eventhooks, { mouseenter: { mouseover: function (e, t) { var n = t.relatedtarget || t.fromelement; if (!n || !(e.contains ? e.contains(n) : e == n || e.comparedocumentposition(n) & 16)) return !0 } }, mouseleave: { mouseout: function (e, t) { var n = t.relatedtarget || t.toelement; if (!n || !(e.contains ? e.contains(n) : e == n || e.comparedocumentposition(n) & 16)) return !0 } } }), i(u._delegatehooks, u._eventhooks); if (!document.addeventlistener) { function n(e) { switch (e.type) { case "checkbox": case "radio": return e.checked; case "select-multiple": var t = [], n = e.options; for (var r = 0; r < n.length; ++r) n[r].selected && t.push(n[r].value); return t.join(","); default: return e.value } } function s(e, t) { var r = t.target || t.srcelement; if (n(r) != r.__qweth_pre_val) return o(e, t), !0 } function o(e, t) { var r = t.target || t.srcelement; r.__qweth_pre_val = n(r) } i(u._delegatehooks, { change: { beforeactivete: o, deactivate: s, focusout: s, click: s, keyup: function (e, t) { if (t.srcelement && t.srcelement.tagname == "select") return s(e, t) } }, focus: { focusin: function (e, t) { return !0 } }, blur: { focusout: function (e, t) { return !0 } } }) } }, u._defaultextend(), qw.eventtargeth = u } (), function () { function e(e, t) { var r = e.__jssdata; if (!r) { var i = e.getattribute("data-jss"); i ? (/^\s*{/.test(i) || (i = "{" + i + "}"), r = e.__jssdata = n(i)) : t && (r = e.__jssdata = {}) } return r } var t = qw.objecth.mix, n = qw.json.parse, r = {}; t(r, { rules: {}, addrule: function (e, n) { var i = r.rules[e] || (r.rules[e] = {}); t(i, n, !0) }, addrules: function (e) { for (var t in e) r.addrule(t, e[t]) }, removerule: function (e) { var t = r.rules[e]; return t ? (delete r.rules[e], !0) : !1 }, getruledata: function (e) { return r.rules[e] }, setruleattribute: function (e, t, n) { var i = {}; i[t] = n, r.addrule(e, i) }, removeruleattribute: function (e, t) { var n = r.rules[e]; return n && attributename in n ? (delete n[attributename], !0) : !1 }, getruleattribute: function (e, t) { var n = r.rules[e] || {}; return n[t] } }); var i = { getownjss: function (t, n) { var r = e(t); return r && n in r ? r[n] : undefined }, getjss: function (t, n) { var i = e(t); if (i && n in i) return i[n]; var s = r.getruledata, o = t.id; if (o && (i = s("#" + o)) && n in i) return i[n]; var u = t.name; if (u && (i = s("@" + u)) && n in i) return i[n]; var a = t.classname; if (a) { var f = a.split(" "); for (var l = 0; l < f.length; l++) if ((i = s("." + f[l])) && n in i) return i[n] } var c = t.tagname; return c && (i = s(c)) && n in i ? i[n] : undefined }, setjss: function (t, n, r) { var i = e(t, !0); i[n] = r }, removejss: function (t, n) { var r = e(t); return r && n in r ? (delete r[n], !0) : !1 } }; qw.jss = r, qw.jsstargeth = i } (), function () { var e = "queryer", t = "operator", n = "getter_all", r = "getter_first", i = "getter_first_all"; qw.nodec = { gettertype: r, arraymethods: "map,foreach,toarray".split(","), wrapmethods: { g: e, one: e, query: e, getelementsbyclass: e, outerhtml: r, hasclass: r, addclass: t, removeclass: t, replaceclass: t, toggleclass: t, show: t, hide: t, toggle: t, isvisible: r, getxy: i, setxy: t, setsize: t, setinnersize: t, setrect: t, setinnerrect: t, getsize: i, getrect: i, nextsibling: e, previoussibling: e, nextsiblings: e, previoussiblings: e, siblings: e, ancestornode: e, ancestornodes: e, parentnode: e, firstchild: e, lastchild: e, contains: r, insertadjacenthtml: t, insertadjacentelement: t, insert: t, insertto: t, appendchild: t, appendto: t, insertsiblingbefore: t, insertsiblingafter: t, insertbefore: t, insertafter: t, replacenode: t, replacechild: t, removenode: t, empty: t, removechild: t, get: i, set: t, getattr: i, setattr: t, removeattr: t, getvalue: i, setvalue: t, gethtml: i, sethtml: t, encodeuriform: r, isformchanged: r, clonenode: e, getstyle: i, getcurrentstyle: i, setstyle: t, removestyle: t, borderwidth: r, paddingwidth: r, marginwidth: r, tmpl: i, wrap: t, unwrap: t, prepend: t, prependto: t, getownjss: i, getjss: i, setjss: t, removejss: t, foreach: t }, gsettermethods: { val: ["getvalue", "setvalue"], html: ["gethtml", "sethtml"], attr: ["", "getattr", "setattr"], css: ["", "getcurrentstyle", "setstyle"], size: ["getsize", "setinnersize"], xy: ["getxy", "setxy"]}} } (), function () { var e = qw.helperh.methodize, t = qw.objecth.mix; t(object, qw.objecth), t(qw.arrayh, qw.hashseth), t(array, qw.arrayh), t(array.prototype, e(qw.arrayh)), t(qw.functionh, qw.classh), t(function, qw.functionh), t(date, qw.dateh), t(date.prototype, e(qw.dateh)), t(string, qw.stringh), t(string.prototype, e(qw.stringh)) } (), function () { var e = qw.objecth.mix, t = qw.helperh.methodize, n = qw.helperh.rwrap, r = qw.nodec, i = qw.nodeh, s = qw.eventtargeth, o = qw.jsstargeth, u = qw.domu, a = qw.nodew; a.pluginhelper(i, r.wrapmethods, r.gsettermethods), a.pluginhelper(s, "operator"), a.pluginhelper(o, r.wrapmethods, { jss: ["", "getjss", "setjss"] }); var f = qw.objecth.dump(qw.arrayh, r.arraymethods); f = t(f), f = n(f, a, r.wrapmethods), e(a.prototype, f); var l = qw.dom = {}; e(l, [u, i, s, o]) } (), function () { var e = function (e, t) { var n = (e.getattribute && e.getattribute("data--ban")) | 0; if (n) { if (!e.__ban_pretime || new date - e.__ban_pretime > n) return e.__ban_pretime = new date * 1, !0; return } return !0 }; qw.eventtargeth._delegatehooks.click = qw.eventtargeth._eventhooks.click = { click: e }, qw.eventtargeth._eventhooks.submit = { submit: e} } (), qw.g = qw.nodeh.g, qw.w = qw.nodew, qw.objecth.mix(window, qw), qw.moduleh.providedomains.push(window), function () { function e(e, t) { e = e || window, t = t || "_default"; var n = e.__qwasynch_sequences || (e.__qwasynch_sequences = {}); return n[t] = n[t] || [], n[t] } var t = qw.objecth.isstring, n = { wait: function (n, r, i) { t(r) || (i = r, r = "_default"), i = i || function () { }; var s = e(n, r); s.push(i), s.length <= 1 && (/^_/.test(r) || (i = function () { }, s.unshift(i)), i.call(n)) }, signal: function (t, r, i) { r = r || "_default"; var s = e(t, r), o = s.shift(); return s[0] && (function (e) { e.call(t) } (s[0]), i && n.signal(t, r, i)), !!o }, clearsignals: function (t, n) { var r = e(t, n), i = r.length; return r.length = 0, !!i } }; qw.provide("asynch", n) } (), function () { var e = qw.nodew, t = qw.asynch, n = qw.helperh.methodize; e.pluginhelper(t, "operator"); var r = n(t); qw.provide("async", r) } (), function () { function e(e) { this.options = e, this._initialize() } var t = qw.objecth.mix, n = qw.objecth.encodeurijson, r = qw.nodeh.encodeuriform, i = qw.custevent; t(e, { state_init: 0, state_request: 1, state_success: 2, state_error: 3, state_timeout: 4, state_cancel: 5, defaultheaders: { "content-type": "application/x-www-form-urlencoded utf-8", "x-requested-with": "xmlhttprequest" }, events: ["succeed", "error", "cancel", "complete"], xhrversions: ["microsoft.xmlhttp"], getxhr: function () { var t = e.xhrversions; if (window.activexobject) while (t.length > 0) try { return new activexobject(t[0]) } catch (n) { t.shift() } return window.xmlhttprequest ? new xmlhttprequest : null }, request: function (t, n, r, i) { if (t.constructor == object) var s = new e(t); else typeof n == "function" && (i = r, r = n, t && t.tagname == "form" ? (i = i || t.method, n = t, t = t.action) : n = ""), s = new e({ url: t, method: i, data: n, onsucceed: function () { r.call(this, this.requester.responsetext) } }); return s.send(), s }, get: function (t, n, r) { var i = [].slice.call(arguments, 0); return i.push("get"), e.request.apply(null, i) }, post: function (t, n, r) { var i = [].slice.call(arguments, 0); return i.push("post"), e.request.apply(null, i) } }), t(e.prototype, { url: "", method: "get", async: !0, user: "", pwd: "", requestheaders: null, data: "", uselock: 0, timeout: 3e4, islocked: 0, state: e.state_init, send: function (t, i, s) { var o = this; if (o.islocked) throw new error("locked."); o.isprocessing() && o.cancel(); var u = o.requester; if (!u) { u = o.requester = e.getxhr(); if (!u) throw new error("fail to get httprequester.") } t = t || o.url, t = t.split("#")[0], i = (i || o.method || "").tolowercase(), i != "post" && (i = "get"), s = s || o.data, typeof s == "object" && (s.tagname == "form" ? s = r(s) : s = n(s)), s && i != "post" && (t += (t.indexof("?") != -1 ? "&" : "?") + s), o.user ? u.open(i, t, o.async, o.user, o.pwd) : u.open(i, t, o.async); for (var a in o.requestheaders) u.setrequestheader(a, o.requestheaders[a]); o.islocked = 0, o.state = e.state_init, o.async && (o._sendtime = new date, o.uselock && (o.islocked = 1), this.requester.onreadystatechange = function () { var e = o.requester.readystate; e == 4 && o._execcomplete() }, o._checktimeout()), i == "post" ? (s || (s = " "), u.send(s)) : u.send(null); if (!o.async) return o._execcomplete(), o.requester.responsetext }, issuccess: function () { var e = this.requester.status; return !e || e >= 200 && e < 300 || e == 304 }, isprocessing: function () { var e = this.requester ? this.requester.readystate : 0; return e > 0 && e < 4 }, get: function (e, t) { this.send(e, "get", t) }, post: function (e, t) { this.send(e, "post", t) }, cancel: function () { var t = this; return t.requester && t.isprocessing() ? (t.state = e.state_cancel, t.requester.abort(), t._execcomplete(), t.fire("cancel"), !0) : !1 }, _initialize: function () { var n = this; i.createevents(n, e.events), t(n, n.options, 1), n.requestheaders = t(n.requestheaders || {}, e.defaultheaders) }, _checktimeout: function () { var t = this; t.async && (cleartimeout(t._timer), this._timer = settimeout(function () { t.requester && !t.isprocessing() && (t.state = e.state_timeout, t.requester.abort(), t._execcomplete("timeout")) }, t.timeout)) }, _execcomplete: function () { var t = this, n = t.requester; n.onreadystatechange = new function, t.islocked = 0, cleartimeout(this._timer), t.state != e.state_cancel && t.state != e.state_timeout && (t.issuccess() ? (t.state = e.state_success, t.fire("succeed", t.requester.responsetext)) : (t.state = e.state_error, t.fire("error", t.requester.responsetext))), t.fire("complete", t.requester.responsetext) } }), qw.provide("ajax", e) } (), function () { var e = qw.ajax, t = qw.nodew; e.delay = 1e3, e.prototype.opresults = function (e) { var t = this; if (!t.issuccess()) return alert("\u7cfb\u7edf\u9519\u8bef\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002"), { isop: !0, err: "inter" }; var n = t.requester.responsetext; try { var r = (new function("return (" + n + ");"))() } catch (i) { return alert("\u7cfb\u7edf\u9519\u8bef\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002"), { isop: !0, err: "inter"} } r.isop = !0; switch (r.err) { default: r.isop = !1 } return r }, e.prototype.execjs = function () { qw.stringh.execjs(this.requester.responsetext) }; var n = { ajaxform: function (t, n) { var r = { data: t, url: t.action, method: t.method }; typeof n == "function" ? r.onsucceed = function () { n.call(this, this.requester.responsetext) } : (r.onsucceed = e.opresults, qw.objecth.mix(r, n || {}, !0)), (new e(r)).send() } }; t.pluginhelper(n, "operator") } (), function () { function e(e) { e.step(), e.isplaying() && (e._interval = window.setinterval(function () { e.step() }, e.frametime)) } function t(e) { window.clearinterval(e._interval) } function n(e, t) { e.per = t, e._startdate = new date * 1 - t * e.dur, e.bystep && (e._totalstep = e.dur / e.frametime, e._currentstep = t * e._totalstep) } var r = qw.custevent, i = qw.objecth.mix, s = function (e, t, o) { i(this, o), i(this, { animfun: e, dur: t, bystep: !1, per: 0, frametime: 28, _status: 0 }), n(this, this.per), r.createevents(this, s.events) }; s.events = "beforeplay,play,step,pause,resume,end,reset".split(","), i(s.prototype, { isplaying: function () { return this._status == 1 }, play: function () { var t = this; return t.isplaying() && t.pause(), n(t, 0), t.fire("beforeplay") ? (t._status = 1, t.fire("play"), e(t), !0) : !1 }, step: function (e) { var t = this; e != null ? n(t, e) : (t.bystep ? e = t._currentstep++ / t._totalstep : e = (new date - t._startdate) / t.dur, this.per = e), this.per > 1 && (this.per = 1), t.animfun(this.per), t.fire("step"); if (this.per >= 1) { this.end(); return } }, end: function () { n(this, 1), this.animfun(1), this._status = 2, t(this), this.fire("end") }, pause: function () { this._status = 4, t(this), this.fire("pause") }, resume: function () { n(this, this.per), this._status = 1, this.fire("resume"), e(this) }, reset: function () { n(this, 0), this.animfun(0), this.fire("reset") } }), qw.provide("anim", s) } (), function () { function e(e, t) { for (var n in e) { var r = new regexp(n, "i"); if (r.test(t)) return e[n] } return null } var t = qw.nodeh, n = qw.objecth.mix, r = qw.objecth.isobject, i = n, s = t.g, o = t.getcurrentstyle, u = t.setstyle, a = t.getsize, f = qw.domu.iselement, l = qw.arrayh.foreach, c = qw.arrayh.map, h = qw.anim, p = t.show, d = t.hide, v = t.isvisible, m = ["zindex", "fontweight", "opacity", "lineheight"], g = function (e, t, i) { this.el = e, this.attr = i, r(t) || (t = { to: t }), n(this, t) }; n(g.prototype, { getvalue: function () { return o(this.el, this.attr) }, setvalue: function (e, t) { u(this.el, this.attr, e + t) }, getunit: function () { if (this.unit) return this.unit; var e = this.getvalue(); if (e) { var t = e.tostring().replace(/^[+-]?[\d\.]+/g, ""); if (t && t != e) return t } return m.contains(this.attr.camelize()) ? "" : "px" }, init: function () { var e, t, n; null != this.from ? e = parsefloat(this.from) : e = parsefloat(this.getvalue()) || 0, t = parsefloat(this.to), n = this.by != null ? parsefloat(this.by) : t - e, this.from = e, this.by = n, this.unit = this.getunit() }, action: function (e) { var t = this.unit, n; typeof this.end != "undefined" && e >= 1 ? n = this.end : (n = this.from + this.by * this.easing(e), n = n.tofixed(6)), this.setvalue(n, t) } }); var y = function (e, t, n) { var r = new g(e, t, n); i(this, r) }; y.mentor_class = g, n(y.prototype, { getvalue: function () { return this.el[this.attr] | 0 }, setvalue: function (e) { this.el[this.attr] = math.round(e) } }, !0); var b = function (e, t, n) { var r = new g(e, t, n); i(this, r) }; b.mentor_class = g, n(b.prototype, { parsecolor: function (e) { var t = { rgb: /^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i, hex: /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i, hex3: /^#?([0-9a-f]{1})([0-9a-f]{1})([0-9a-f]{1})$/i }; if (e.length == 3) return e; var n = t.hex.exec(e); return n && n.length == 4 ? [parseint(n[1], 16), parseint(n[2], 16), parseint(n[3], 16)] : (n = t.rgb.exec(e), n && n.length == 4 ? [parseint(n[1], 10), parseint(n[2], 10), parseint(n[3], 10)] : (n = t.hex3.exec(e), n && n.length == 4 ? [parseint(n[1] + n[1], 16), parseint(n[2] + n[2], 16), parseint(n[3] + n[3], 16)] : [0, 0, 0])) }, init: function () { var e, t, n, r = this.parsecolor; null != this.from ? e = this.from : e = this.getvalue(), e = r(e), t = this.to || [0, 0, 0], t = r(t), n = this.by ? r(this.by) : c(t, function (t, n) { return t - e[n] }), this.from = e, this.to = t, this.by = n, this.unit = "" }, getvalue: function () { var e = o(this.el, this.attr); return this.parsecolor(e) }, setvalue: function (e) { typeof e == "string" ? u(this.el, this.attr, e) : u(this.el, this.attr, "rgb(" + e.join(",") + ")") }, action: function (e) { var t = this, n; typeof this.end != "undefined" && e >= 1 ? n = this.end : n = this.from.map(function (n, r) { return math.max(math.floor(n + t.by[r] * t.easing(e)), 0) }), this.setvalue(n) } }, !0); var w = { color$: b, "^scroll": y, ".*": g }, e = function (t, n, r, o) { t = s(t); if (!f(t)) throw new error(["animation", "initialize error", "element not found!"]); r = r || e.defaulteasing, o = typeof o == "function" ? o : e.defaulteasing; var u = [], a = []; for (var c in n) { if (typeof n[c] == "string" && e.agenthooks[n[c]]) { var p = e.agenthooks[n[c]](c, t); p.callback && (a.push(p.callback), delete p.callback), n[c] = p } var d = e(w, c), v = new d(t, n[c], c); if (!v) continue; v.init(), v.easing = v.easing || o, u.push(v) } var m = new h(function (e) { l(u, function (t) { t.action(e) }) }, r); l(a, function (e) { m.on("end", e) }), i(this, m) }; e.mentor_class = h, e.defaulteasing = function (e) { return e }, e.defaultdur = 500, e.sequence = !1, e.agenthooks = function () { var e = function (e, t) { return /^(height|width)$/ig.test(t) ? a(e)[t] || 0 : o(e, t) || 0 }; return { show: function (t, n) { var r = 0, i = n["__anim" + t]; return v(n) ? (r = e(n, t), i = typeof i == "undefined" ? e(n, t) : i) : (p(n), i = typeof i == "undefined" ? e(n, t) : i, u(n, t, 0)), { from: r, to: i} }, hide: function (t, n) { var r = e(n, t), i = "__anim" + t, s = n[i]; typeof s == "undefined" && (v(n) ? s = r : (p(n), s = e(n, t), d(n)), n[i] = s); var o = function () { d(n); var e = n[i]; typeof e == "number" && !m.contains(t.camelize()) && (e += "px"), u(n, t, e) }; return { from: r, to: 0, callback: o} }, toggle: function (e, t) { return v(t) ? e.agenthooks.hide.apply(this, arguments) : e.agenthooks.show.apply(this, arguments) } } } (), qw.provide({ elanim: e, scrollanim: e, coloranim: e }) } (), function () { var e = { easenone: function (e) { return e }, easein: function (e) { return e * e }, easeout: function (e) { return e * (2 - e) }, easeboth: function (e) { return (e /= .5) < 1 ? .5 * e * e : -0.5 * (--e * (e - 2) - 1) }, easeinstrong: function (e) { return e * e * e * e }, easeoutstrong: function (e) { return -((e -= 1) * e * e * e - 1) }, easebothstrong: function (e) { return (e /= .5) < 1 ? .5 * e * e * e * e : -0.5 * ((e -= 2) * e * e * e - 2) }, elasticin: function (e) { if (e == 0) return 0; if (e == 1) return 1; var t = .3, n = t / 4; return -(math.pow(2, 10 * (e -= 1)) * math.sin((e - n) * 2 * math.pi / t)) }, elasticout: function (e) { if (e == 0) return 0; if (e == 1) return 1; var t = .3, n = t / 4; return math.pow(2, -10 * e) * math.sin((e - n) * 2 * math.pi / t) + 1 }, elasticboth: function (e) { if (e == 0) return 0; if ((e /= .5) == 2) return 1; var t = .3 * 1.5, n = t / 4; return e < 1 ? -0.5 * math.pow(2, 10 * (e -= 1)) * math.sin((e - n) * 2 * math.pi / t) : math.pow(2, -10 * (e -= 1)) * math.sin((e - n) * 2 * math.pi / t) * .5 + 1 }, backin: function (e) { var t = 1.70158; return e * e * ((t + 1) * e - t) }, backout: function (e) { var t = 1.70158; return (e -= 1) * e * ((t + 1) * e + t) + 1 }, backboth: function (e) { var t = 1.70158; return (e /= .5) < 1 ? .5 * e * e * (((t *= 1.525) + 1) * e - t) : .5 * ((e -= 2) * e * (((t *= 1.525) + 1) * e + t) + 2) }, bouncein: function (t) { return 1 - e.bounceout(1 - t) }, bounceout: function (e) { return e < 1 / 2.75 ? 7.5625 * e * e : e < 2 / 2.75 ? 7.5625 * (e -= 1.5 / 2.75) * e + .75 : e < 2.5 / 2.75 ? 7.5625 * (e -= 2.25 / 2.75) * e + .9375 : 7.5625 * (e -= 2.625 / 2.75) * e + .984375 }, bounceboth: function (t) { return t < .5 ? e.bouncein(t * 2) * .5 : e.bounceout(t * 2 - 1) * .5 + .5 } }; qw.provide("easing", e) } (), function () { function e(e, t, r, i, s) { e = n(e); var o = e.__preanim; o && o.isplaying() && o.pause(); var u = new qw.elanim(e, t, i || 400, s); return r && u.on("end", function () { r.call(e, null) }), settimeout(function () { u.play() }), e.__preanim = u, u } var t = qw.nodeh, n = t.g, r = t.isvisible, i = { animate: function (t, n, r, i, s, o) { for (var u = arguments.length - 1; u > 0; u--) if (arguments[u] === !!arguments[u]) { var a = arguments[u]; arguments[u] = null, o = a; break } if (!qw.async || !o && !qw.elanim.sequence) return e(t, n, i, r, s); w(t).wait(function () { var o = e(t, n, i, r, s); return o.on("end", function () { w(t).signal() }), o }) }, fadein: function (e, t, n, r, s) { var o = { opacity: "show" }; return i.animate(e, o, t, n, r, s) }, fadeout: function (e, t, n, r, s) { var o = { opacity: "hide" }; return i.animate(e, o, t, n, r, s) }, fadetoggle: function (e, t, n, s, o) { return i[r(e) ? "fadeout" : "fadein"](e, t, n, s, o) }, slideup: function (e, t, n, r, s) { var o = { height: "hide" }; return i.animate(e, o, t, n, r, s) }, slidedown: function (e, t, n, r, s) { var o = { height: "show" }; return i.animate(e, o, t, n, r, s) }, slidetoggle: function (e, t, n, s, o) { return i[r(e) ? "slideup" : "slidedown"](e, t, n, s, o) }, shine4error: function (e, t, n, r, s) { var o = { backgroundcolor: { from: "#f33", to: "#fff", end: ""} }; return i.animate(e, o, t, n, r, s) } }; qw.nodew.pluginhelper(i, "operator"), qw.dom && qw.objecth.mix(qw.dom, i) } ();