var src_global_ver = "3.0.0.27", isIE = navigator.appVersion.indexOf("MSIE") != -1 ? true : false, isWin = navigator.appVersion.toLowerCase().indexOf("win") != -1 ? true : false, isOpera = navigator.userAgent.indexOf("Opera") != -1 ? true : false;
function ControlVersion() {
    var a, b; try { b = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); a = b.GetVariable("$version") } catch (c) { } if (!a) try { b = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); a = "WIN 6,0,21,0"; b.AllowScriptAccess = "always"; a = b.GetVariable("$version") } catch (d) { } if (!a) try { b = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); a = b.GetVariable("$version") } catch (e) { } if (!a) try { new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); a = "WIN 3,0,18,0" } catch (g) { } if (!a) try {
        new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
        a = "WIN 2,0,0,11"
    } catch (f) { a = -1 } return a
}
function GetSwfVer() {
    var a = -1; if (navigator.plugins != null && navigator.plugins.length > 0) { if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) { a = navigator.plugins["Shockwave Flash" + (navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "")].description.split(" "); var b = a[2].split("."), c = b[0]; b = b[1]; tempArrayMinor = a[3] != "" ? a[3].split("r") : a[4].split("r"); a = c + "." + b + "." + (tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0) } } else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) a =
4; else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) a = 3; else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) a = 2; else if (isIE && isWin && !isOpera) a = ControlVersion(); return a
}
function DetectFlashVer(a, b, c) { versionStr = GetSwfVer(); if (versionStr == -1) return false; else if (versionStr != 0) { if (isIE && isWin && !isOpera) { tempArray = versionStr.split(" "); tempString = tempArray[1]; versionArray = tempString.split(",") } else versionArray = versionStr.split("."); var d = versionArray[0], e = versionArray[1], g = versionArray[2]; if (d > parseFloat(a)) return true; else if (d == parseFloat(a)) if (e > parseFloat(b)) return true; else if (e == parseFloat(b)) if (g >= parseFloat(c)) return true; return false } }
function AC_AddExtension(a, b) { return a.indexOf("?") != -1 ? a.replace(/\?/, b + "?") : a + b } function AC_Generateobj(a, b, c) { var d = "<object "; for (var e in a) d += e + '="' + a[e] + '" '; d += ">"; for (e in b) d += '<param name="' + e + '" value="' + b[e] + '" /> '; d += "<embed "; for (e in c) d += e + '="' + c[e] + '" '; d += " ></embed></object>"; return d }
function AC_FL_RunContent() { var a = AC_GetArgs(arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000", "application/x-shockwave-flash"); document.write(AC_Generateobj(a.objAttrs, a.params, a.embedAttrs)) } function AC_FL_GetContent() { var a = AC_GetArgs(arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000", "application/x-shockwave-flash"); return AC_Generateobj(a.objAttrs, a.params, a.embedAttrs) }
function AC_SW_RunContent() { var a = AC_GetArgs(arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000", null); AC_Generateobj(a.objAttrs, a.params, a.embedAttrs) }
function AC_GetArgs(a, b, c, d, e) {
    var g = {}; g.embedAttrs = {}; g.params = {}; g.objAttrs = {}; for (var f = 0; f < a.length; f += 2) switch (a[f].toLowerCase()) {
        case "classid": break; case "pluginspage": g.embedAttrs[a[f]] = a[f + 1]; break; case "src": case "movie": a[f + 1] = AC_AddExtension(a[f + 1], b); g.embedAttrs.src = a[f + 1]; g.params[c] = a[f + 1]; break; case "onafterupdate": case "onbeforeupdate": case "onblur": case "oncellchange": case "onclick": case "ondblClick": case "ondrag": case "ondragend": case "ondragenter": case "ondragleave": case "ondragover": case "ondrop": case "onfinish": case "onfocus": case "onhelp": case "onmousedown": case "onmouseup": case "onmouseover": case "onmousemove": case "onmouseout": case "onkeypress": case "onkeydown": case "onkeyup": case "onload": case "onlosecapture": case "onpropertychange": case "onreadystatechange": case "onrowsdelete": case "onrowenter": case "onrowexit": case "onrowsinserted": case "onstart": case "onscroll": case "onbeforeeditfocus": case "onactivate": case "onbeforedeactivate": case "ondeactivate": case "type": case "codebase": g.objAttrs[a[f]] = a[f +
1]; break; case "width": case "height": case "align": case "vspace": case "hspace": case "class": case "title": case "accesskey": case "tabindex": g.embedAttrs[a[f]] = g.objAttrs[a[f]] = a[f + 1]; break; case "name": g.embedAttrs[a[f]] = a[f + 1]; break; case "id": g.objAttrs[a[f]] = a[f + 1]; break; default: g.embedAttrs[a[f]] = g.params[a[f]] = a[f + 1]
    } g.objAttrs.classid = d; if (e) g.embedAttrs.type = e; return g
}
var MooTools = { version: "1.2.1", build: "0d4845aab3d9a4fdee2f0d4a6dd59210e4b697cf" }, Native = function (a) {
    a = a || {}; var b = a.name, c = a.legacy, d = a.protect, e = a.implement, g = a.generics, f = a.initialize, l = a.afterImplement || function () { }; a = f || c; g = g !== false; a.constructor = Native; a.$family = { name: "native" }; if (c && f) a.prototype = c.prototype; a.prototype.constructor = a; if (b) { b = b.toLowerCase(); a.prototype.$family = { name: b }; Native.typize(a, b) } var n = function (h, k, o, q) {
        if (!d || q || !h.prototype[k]) h.prototype[k] = o; g && Native.genericize(h,
k, d); l.call(h, k, o); return h
    }; a.alias = function (h, k, o) { if (typeof h == "string") if (h = this.prototype[h]) return n(this, k, h, o); for (var q in h) this.alias(q, h[q], k); return this }; a.implement = function (h, k, o) { if (typeof h == "string") return n(this, h, k, o); for (var q in h) n(this, q, h[q], k); return this }; e && a.implement(e); return a
}; Native.genericize = function (a, b, c) { if ((!c || !a[b]) && typeof a.prototype[b] == "function") a[b] = function () { var d = Array.prototype.slice.call(arguments); return a.prototype[b].apply(d.shift(), d) } };
Native.implement = function (a, b) { for (var c = 0, d = a.length; c < d; c++) a[c].implement(b) }; Native.typize = function (a, b) { if (!a.type) a.type = function (c) { return $type(c) === b } };
(function () {
    var a = { Array: Array, Date: Date, Function: Function, Number: Number, RegExp: RegExp, String: String }; for (var b in a) new Native({ name: b, initialize: a[b], protect: true }); a = { "boolean": Boolean, "native": Native, object: Object }; for (var c in a) Native.typize(a[c], c); c = { Array: ["concat", "indexOf", "join", "lastIndexOf", "pop", "push", "reverse", "shift", "slice", "sort", "splice", "toString", "unshift", "valueOf"], String: ["charAt", "charCodeAt", "concat", "indexOf", "lastIndexOf", "match", "replace", "search", "slice", "split", "substr",
"substring", "toLowerCase", "toUpperCase", "valueOf"]
    }; for (var d in c) for (a = c[d].length; a--; ) Native.genericize(window[d], c[d][a], true)
})(); var Hash = new Native({ name: "Hash", initialize: function (a) { if ($type(a) == "hash") a = $unlink(a.getClean()); for (var b in a) this[b] = a[b]; return this } });
Hash.implement({ forEach: function (a, b) { for (var c in this) this.hasOwnProperty(c) && a.call(b, this[c], c, this) }, getClean: function () { var a = {}; for (var b in this) if (this.hasOwnProperty(b)) a[b] = this[b]; return a }, getLength: function () { var a = 0; for (var b in this) this.hasOwnProperty(b) && a++; return a } }); Hash.alias("forEach", "each"); Array.implement({ forEach: function (a, b) { for (var c = 0, d = this.length; c < d; c++) a.call(b, this[c], c, this) } }); Array.alias("forEach", "each");
function $A(a) { if (a.item) { for (var b = [], c = 0, d = a.length; c < d; c++) b[c] = a[c]; return b } return Array.prototype.slice.call(a) } function $arguments(a) { return function () { return arguments[a] } } function $chk(a) { return !!(a || a === 0) } function $clear(a) { clearTimeout(a); clearInterval(a); return null } function $defined(a) { return a != undefined } function $each(a, b, c) { var d = $type(a); (d == "arguments" || d == "collection" || d == "array" ? Array : Hash).each(a, b, c) } function $empty() { }
function $extend(a, b) { for (var c in b || {}) a[c] = b[c]; return a } function $H(a) { return new Hash(a) } function $lambda(a) { return typeof a == "function" ? a : function () { return a } } function $merge() { for (var a = {}, b = 0, c = arguments.length; b < c; b++) { var d = arguments[b]; if ($type(d) == "object") for (var e in d) { var g = d[e], f = a[e]; a[e] = f && $type(g) == "object" && $type(f) == "object" ? $merge(f, g) : $unlink(g) } } return a } function $pick() { for (var a = 0, b = arguments.length; a < b; a++) if (arguments[a] != undefined) return arguments[a]; return null }
function $random(a, b) { return Math.floor(Math.random() * (b - a + 1) + a) } function $splat(a) { var b = $type(a); return b ? b != "array" && b != "arguments" ? [a] : a : [] } var $time = Date.now || function () { return +new Date }; function $try() { for (var a = 0, b = arguments.length; a < b; a++) try { return arguments[a]() } catch (c) { } return null }
function $type(a) { if (a == undefined) return false; if (a.$family) return a.$family.name == "number" && !isFinite(a) ? false : a.$family.name; if (a.nodeName) switch (a.nodeType) { case 1: return "element"; case 3: return /\S/.test(a.nodeValue) ? "textnode" : "whitespace" } else if (typeof a.length == "number") if (a.callee) return "arguments"; else if (a.item) return "collection"; return typeof a }
function $unlink(a) { var b; switch ($type(a)) { case "object": b = {}; for (var c in a) b[c] = $unlink(a[c]); break; case "hash": b = new Hash(a); break; case "array": b = []; c = 0; for (var d = a.length; c < d; c++) b[c] = $unlink(a[c]); break; default: return a } return b }
var Browser = $merge({ Engine: { name: "unknown", version: 0 }, Platform: { name: window.orientation != undefined ? "ipod" : (navigator.platform.match(/mac|win|linux/i) || ["other"])[0].toLowerCase() }, Features: { xpath: !!document.evaluate, air: !!window.runtime, query: !!document.querySelector }, Plugins: {}, Engines: { presto: function () { return !window.opera ? false : arguments.callee.caller ? 960 : document.getElementsByClassName ? 950 : 925 }, trident: function () { return !window.ActiveXObject ? false : window.XMLHttpRequest ? 5 : 4 }, webkit: function () {
    return navigator.taintEnabled ?
false : Browser.Features.xpath ? Browser.Features.query ? 525 : 420 : 419
}, gecko: function () { return document.getBoxObjectFor == undefined ? false : document.getElementsByClassName ? 19 : 18 } 
} 
}, Browser || {}); Browser.Platform[Browser.Platform.name] = true; Browser.detect = function () { for (var a in this.Engines) { var b = this.Engines[a](); if (b) { this.Engine = { name: a, version: b }; this.Engine[a] = this.Engine[a + b] = true; break } } return { name: a, version: b} }; Browser.detect();
Browser.Request = function () { return $try(function () { return new XMLHttpRequest }, function () { return new ActiveXObject("MSXML2.XMLHTTP") }) }; Browser.Features.xhr = !!Browser.Request(); Browser.Plugins.Flash = function () { var a = ($try(function () { return navigator.plugins["Shockwave Flash"].description }, function () { return (new ActiveXObject("ShockwaveFlash.ShockwaveFlash")).GetVariable("$version") }) || "0 r0").match(/\d+/g); return { version: parseInt(a[0] || "0." + a[1] || 0), build: parseInt(a[2] || 0)} } ();
function $exec(a) { if (!a) return a; if (window.execScript) window.execScript(a); else { var b = document.createElement("script"); b.setAttribute("type", "text/javascript"); b[Browser.Engine.webkit && Browser.Engine.version < 420 ? "innerText" : "text"] = a; document.head.appendChild(b); document.head.removeChild(b) } return a } Native.UID = 1;
var $uid = Browser.Engine.trident ? function (a) { return (a.uid || (a.uid = [Native.UID++]))[0] } : function (a) { return a.uid || (a.uid = Native.UID++) }, Window = new Native({ name: "Window", legacy: Browser.Engine.trident ? null : window.Window, initialize: function (a) { $uid(a); if (!a.Element) { a.Element = $empty; Browser.Engine.webkit && a.document.createElement("iframe"); a.Element.prototype = Browser.Engine.webkit ? window["[[DOMElement.prototype]]"] : {} } a.document.window = a; return $extend(a, Window.Prototype) }, afterImplement: function (a, b) {
    window[a] =
Window.Prototype[a] = b
} 
}); Window.Prototype = { $family: { name: "window"} }; new Window(window);
var Document = new Native({ name: "Document", legacy: Browser.Engine.trident ? null : window.Document, initialize: function (a) { $uid(a); a.head = a.getElementsByTagName("head")[0]; a.html = a.getElementsByTagName("html")[0]; Browser.Engine.trident && Browser.Engine.version <= 4 && $try(function () { a.execCommand("BackgroundImageCache", false, true) }); Browser.Engine.trident && a.window.attachEvent("onunload", function () { a.window.detachEvent("onunload", arguments.callee); a.head = a.html = a.window = null }); return $extend(a, Document.Prototype) },
    afterImplement: function (a, b) { document[a] = Document.Prototype[a] = b } 
}); Document.Prototype = { $family: { name: "document"} }; new Document(document);
Array.implement({ every: function (a, b) { for (var c = 0, d = this.length; c < d; c++) if (!a.call(b, this[c], c, this)) return false; return true }, filter: function (a, b) { for (var c = [], d = 0, e = this.length; d < e; d++) a.call(b, this[d], d, this) && c.push(this[d]); return c }, clean: function () { return this.filter($defined) }, indexOf: function (a, b) { for (var c = this.length, d = b < 0 ? Math.max(0, c + b) : b || 0; d < c; d++) if (this[d] === a) return d; return -1 }, map: function (a, b) { for (var c = [], d = 0, e = this.length; d < e; d++) c[d] = a.call(b, this[d], d, this); return c }, some: function (a,
b) { for (var c = 0, d = this.length; c < d; c++) if (a.call(b, this[c], c, this)) return true; return false }, associate: function (a) { for (var b = {}, c = Math.min(this.length, a.length), d = 0; d < c; d++) b[a[d]] = this[d]; return b }, link: function (a) { for (var b = {}, c = 0, d = this.length; c < d; c++) for (var e in a) if (a[e](this[c])) { b[e] = this[c]; delete a[e]; break } return b }, contains: function (a, b) { return this.indexOf(a, b) != -1 }, extend: function (a) { for (var b = 0, c = a.length; b < c; b++) this.push(a[b]); return this }, getLast: function () {
    return this.length ? this[this.length -
1] : null
}, getRandom: function () { return this.length ? this[$random(0, this.length - 1)] : null }, include: function (a) { this.contains(a) || this.push(a); return this }, combine: function (a) { for (var b = 0, c = a.length; b < c; b++) this.include(a[b]); return this }, erase: function (a) { for (var b = this.length; b--; ) this[b] === a && this.splice(b, 1); return this }, empty: function () { this.length = 0; return this }, flatten: function () {
    for (var a = [], b = 0, c = this.length; b < c; b++) {
        var d = $type(this[b]); if (d) a = a.concat(d == "array" || d == "collection" || d == "arguments" ?
Array.flatten(this[b]) : this[b])
    } return a
}, hexToRgb: function (a) { if (this.length != 3) return null; var b = this.map(function (c) { if (c.length == 1) c += c; return c.toInt(16) }); return a ? b : "rgb(" + b + ")" }, rgbToHex: function (a) { if (this.length < 3) return null; if (this.length == 4 && this[3] == 0 && !a) return "transparent"; for (var b = [], c = 0; c < 3; c++) { var d = (this[c] - 0).toString(16); b.push(d.length == 1 ? "0" + d : d) } return a ? b : "#" + b.join("") } 
});
Function.implement({ extend: function (a) { for (var b in a) this[b] = a[b]; return this }, create: function (a) { var b = this; a = a || {}; return function (c) { var d = a.arguments; d = d != undefined ? $splat(d) : Array.slice(arguments, a.event ? 1 : 0); if (a.event) d = [c || window.event].extend(d); var e = function () { return b.apply(a.bind || null, d) }; if (a.delay) return setTimeout(e, a.delay); if (a.periodical) return setInterval(e, a.periodical); if (a.attempt) return $try(e); return e() } }, run: function (a, b) { return this.apply(b, $splat(a)) }, pass: function (a,
b) { return this.create({ bind: b, arguments: a }) }, bind: function (a, b) { return this.create({ bind: a, arguments: b }) }, bindWithEvent: function (a, b) { return this.create({ bind: a, arguments: b, event: true }) }, attempt: function (a, b) { return this.create({ bind: b, arguments: a, attempt: true })() }, delay: function (a, b, c) { return this.create({ bind: b, arguments: c, delay: a })() }, periodical: function (a, b, c) { return this.create({ bind: b, arguments: c, periodical: a })() } 
});
Number.implement({ limit: function (a, b) { return Math.min(b, Math.max(a, this)) }, round: function (a) { a = Math.pow(10, a || 0); return Math.round(this * a) / a }, times: function (a, b) { for (var c = 0; c < this; c++) a.call(b, c, this) }, toFloat: function () { return parseFloat(this) }, toInt: function (a) { return parseInt(this, a || 10) } }); Number.alias("times", "each");
(function (a) { var b = {}; a.each(function (c) { Number[c] || (b[c] = function () { return Math[c].apply(null, [this].concat($A(arguments))) }) }); Number.implement(b) })(["abs", "acos", "asin", "atan", "atan2", "ceil", "cos", "exp", "floor", "log", "max", "min", "pow", "sin", "sqrt", "tan"]);
String.implement({ test: function (a, b) { return (typeof a == "string" ? new RegExp(a, b) : a).test(this) }, contains: function (a, b) { return b ? (b + this + b).indexOf(b + a + b) > -1 : this.indexOf(a) > -1 }, trim: function () { return this.replace(/^\s+|\s+$/g, "") }, clean: function () { return this.replace(/\s+/g, " ").trim() }, camelCase: function () { return this.replace(/-\D/g, function (a) { return a.charAt(1).toUpperCase() }) }, hyphenate: function () { return this.replace(/[A-Z]/g, function (a) { return "-" + a.charAt(0).toLowerCase() }) }, capitalize: function () {
    return this.replace(/\b[a-z]/g,
function (a) { return a.toUpperCase() })
}, escapeRegExp: function () { return this.replace(/([-.*+?^${}()|[\]\/\\])/g, "\\$1") }, toInt: function (a) { return parseInt(this, a || 10) }, toFloat: function () { return parseFloat(this) }, hexToRgb: function (a) { var b = this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/); return b ? b.slice(1).hexToRgb(a) : null }, rgbToHex: function (a) { var b = this.match(/\d{1,3}/g); return b ? b.rgbToHex(a) : null }, stripScripts: function (a) {
    var b = "", c = this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function (d, e) {
        b +=
e + "\n"; return ""
    }); if (a === true) $exec(b); else $type(a) == "function" && a(b, c); return c
}, substitute: function (a, b) { return this.replace(b || /\\?\{([^{}]+)\}/g, function (c, d) { if (c.charAt(0) == "\\") return c.slice(1); return a[d] != undefined ? a[d] : "" }) } 
});
Hash.implement({ has: Object.prototype.hasOwnProperty, keyOf: function (a) { for (var b in this) if (this.hasOwnProperty(b) && this[b] === a) return b; return null }, hasValue: function (a) { return Hash.keyOf(this, a) !== null }, extend: function (a) { Hash.each(a, function (b, c) { Hash.set(this, c, b) }, this); return this }, combine: function (a) { Hash.each(a, function (b, c) { Hash.include(this, c, b) }, this); return this }, erase: function (a) { this.hasOwnProperty(a) && delete this[a]; return this }, get: function (a) {
    return this.hasOwnProperty(a) ? this[a] :
null
}, set: function (a, b) { if (!this[a] || this.hasOwnProperty(a)) this[a] = b; return this }, empty: function () { Hash.each(this, function (a, b) { delete this[b] }, this); return this }, include: function (a, b) { if (this[a] == undefined) this[a] = b; return this }, map: function (a, b) { var c = new Hash; Hash.each(this, function (d, e) { c.set(e, a.call(b, d, e, this)) }, this); return c }, filter: function (a, b) { var c = new Hash; Hash.each(this, function (d, e) { a.call(b, d, e, this) && c.set(e, d) }, this); return c }, every: function (a, b) {
    for (var c in this) if (this.hasOwnProperty(c) &&
!a.call(b, this[c], c)) return false; return true
}, some: function (a, b) { for (var c in this) if (this.hasOwnProperty(c) && a.call(b, this[c], c)) return true; return false }, getKeys: function () { var a = []; Hash.each(this, function (b, c) { a.push(c) }); return a }, getValues: function () { var a = []; Hash.each(this, function (b) { a.push(b) }); return a }, toQueryString: function (a) {
    var b = []; Hash.each(this, function (c, d) {
        if (a) d = a + "[" + d + "]"; var e; switch ($type(c)) {
            case "object": e = Hash.toQueryString(c, d); break; case "array": var g = {}; c.each(function (f,
l) { g[l] = f }); e = Hash.toQueryString(g, d); break; default: e = d + "=" + encodeURIComponent(c)
        } c != undefined && b.push(e)
    }); return b.join("&")
} 
}); Hash.alias({ keyOf: "indexOf", hasValue: "contains" });
var Event = new Native({ name: "Event", initialize: function (a, b) {
    b = b || window; var c = b.document; a = a || b.event; if (a.$extended) return a; this.$extended = true; for (var d = a.type, e = a.target || a.srcElement; e && e.nodeType == 3; ) e = e.parentNode; if (d.test(/key/)) { var g = a.which || a.keyCode, f = Event.Keys.keyOf(g); if (d == "keydown") { c = g - 111; if (c > 0 && c < 13) f = "f" + c } f = f || String.fromCharCode(g).toLowerCase() } else if (d.match(/(click|mouse|menu)/i)) {
        c = !c.compatMode || c.compatMode == "CSS1Compat" ? c.html : c.body; var l = { x: a.pageX || a.clientX + c.scrollLeft,
            y: a.pageY || a.clientY + c.scrollTop
        }, n = { x: a.pageX ? a.pageX - b.pageXOffset : a.clientX, y: a.pageY ? a.pageY - b.pageYOffset : a.clientY }; if (d.match(/DOMMouseScroll|mousewheel/)) var h = a.wheelDelta ? a.wheelDelta / 120 : -(a.detail || 0) / 3; var k = a.which == 3 || a.button == 2, o = null; if (d.match(/over|out/)) { switch (d) { case "mouseover": o = a.relatedTarget || a.fromElement; break; case "mouseout": o = a.relatedTarget || a.toElement } (function () { for (; o && o.nodeType == 3; ) o = o.parentNode; return true }).create({ attempt: Browser.Engine.gecko })() || (o = false) } 
    } return $extend(this,
{ event: a, type: d, page: l, client: n, rightClick: k, wheel: h, relatedTarget: o, target: e, code: g, key: f, shift: a.shiftKey, control: a.ctrlKey, alt: a.altKey, meta: a.metaKey })
} 
}); Event.Keys = new Hash({ enter: 13, up: 38, down: 40, left: 37, right: 39, esc: 27, space: 32, backspace: 8, tab: 9, "delete": 46 });
Event.implement({ stop: function () { return this.stopPropagation().preventDefault() }, stopPropagation: function () { if (this.event.stopPropagation) this.event.stopPropagation(); else this.event.cancelBubble = true; return this }, preventDefault: function () { if (this.event.preventDefault) this.event.preventDefault(); else this.event.returnValue = false; return this } });
var Class = new Native({ name: "Class", initialize: function (a) { a = a || {}; var b = function () { for (var d in this) if ($type(this[d]) != "function") this[d] = $unlink(this[d]); this.constructor = b; if (Class.prototyping) return this; d = this.initialize ? this.initialize.apply(this, arguments) : this; this.options && this.options.initialize && this.options.initialize.call(this); return d }; for (var c in Class.Mutators) if (a[c]) { a = Class.Mutators[c](a, a[c]); delete a[c] } $extend(b, this); b.constructor = Class; b.prototype = a; return b } });
Class.Mutators = { Extends: function (a, b) { Class.prototyping = b.prototype; var c = new b; delete c.parent; c = Class.inherit(c, a); delete Class.prototyping; return c }, Implements: function (a, b) { $splat(b).each(function (c) { Class.prototying = c; $extend(a, $type(c) == "class" ? new c : c); delete Class.prototyping }); return a } };
Class.extend({ inherit: function (a, b) { var c = arguments.callee.caller; for (var d in b) { var e = b[d], g = a[d], f = $type(e); if (g && f == "function") { if (e != g) if (c) { e.__parent = g; a[d] = e } else Class.override(a, d, e) } else a[d] = f == "object" ? $merge(g, e) : e } if (c) a.parent = function () { return arguments.callee.caller.__parent.apply(this, arguments) }; return a }, override: function (a, b, c) {
    var d = Class.prototyping; if (d && a[b] != d[b]) d = null; a[b] = function () {
        var e = this.parent; this.parent = d ? d[b] : a[b]; var g = c.apply(this, arguments); this.parent = e;
        return g
    } 
} 
}); Class.implement({ implement: function () { var a = this.prototype; $each(arguments, function (b) { Class.inherit(a, b) }); return this } });
var Chain = new Class({ $chain: [], chain: function () { this.$chain.extend(Array.flatten(arguments)); return this }, callChain: function () { return this.$chain.length ? this.$chain.shift().apply(this, arguments) : false }, clearChain: function () { this.$chain.empty(); return this } }), Events = new Class({ $events: {}, addEvent: function (a, b, c) { a = Events.removeOn(a); if (b != $empty) { this.$events[a] = this.$events[a] || []; this.$events[a].include(b); if (c) b.internal = true } return this }, addEvents: function (a) {
    for (var b in a) this.addEvent(b, a[b]);
    return this
}, fireEvent: function (a, b, c) { a = Events.removeOn(a); if (!this.$events || !this.$events[a]) return this; this.$events[a].each(function (d) { d.create({ bind: this, delay: c, arguments: b })() }, this); return this }, removeEvent: function (a, b) { a = Events.removeOn(a); if (!this.$events[a]) return this; b.internal || this.$events[a].erase(b); return this }, removeEvents: function (a) {
    if ($type(a) == "object") { for (var b in a) this.removeEvent(b, a[b]); return this } if (a) a = Events.removeOn(a); for (b in this.$events) if (!(a && a != b)) for (var c =
this.$events[b], d = c.length; d--; ) this.removeEvent(b, c[d]); return this
} 
}); Events.removeOn = function (a) { return a.replace(/^on([A-Z])/, function (b, c) { return c.toLowerCase() }) };
var Options = new Class({ setOptions: function () { this.options = $merge.run([this.options].extend(arguments)); if (!this.addEvent) return this; for (var a in this.options) if (!($type(this.options[a]) != "function" || !/^on[A-Z]/.test(a))) { this.addEvent(a, this.options[a]); delete this.options[a] } return this } }), Element = new Native({ name: "Element", legacy: window.Element, initialize: function (a, b) { var c = Element.Constructors.get(a); if (c) return c(b); if (typeof a == "string") return document.newElement(a, b); return $(a).set(b) }, afterImplement: function (a,
b) { Element.Prototype[a] = b; Array[a] || Elements.implement(a, function () { for (var c = [], d = true, e = 0, g = this.length; e < g; e++) { var f = this[e][a].apply(this[e], arguments); c.push(f); if (d) d = $type(f) == "element" } return d ? new Elements(c) : c }) } 
}); Element.Prototype = { $family: { name: "element"} }; Element.Constructors = new Hash;
var IFrame = new Native({ name: "IFrame", generics: false, initialize: function () {
    var a = Array.link(arguments, { properties: Object.type, iframe: $defined }), b = a.properties || {}, c = $(a.iframe) || false, d = b.onload || $empty; delete b.onload; b.id = b.name = $pick(b.id, b.name, c.id, c.name, "IFrame_" + $time()); c = new Element(c || "iframe", b); a = function () {
        var e = $try(function () { return c.contentWindow.location.host }); if (e && e == window.location.host) {
            e = new Window(c.contentWindow); new Document(c.contentWindow.document); $extend(e.Element.prototype,
Element.Prototype)
        } d.call(c.contentWindow, c.contentWindow.document)
    }; window.frames[b.id] ? a() : c.addListener("load", a); return c
} 
}), Elements = new Native({ initialize: function (a, b) { b = $extend({ ddup: true, cash: true }, b); a = a || []; if (b.ddup || b.cash) { for (var c = {}, d = [], e = 0, g = a.length; e < g; e++) { var f = $.element(a[e], !b.cash); if (b.ddup) { if (c[f.uid]) continue; c[f.uid] = true } d.push(f) } a = d } return b.cash ? $extend(a, this) : a } });
Elements.implement({ filter: function (a, b) { if (!a) return this; return new Elements(Array.filter(this, typeof a == "string" ? function (c) { return c.match(a) } : a, b)) } }); Document.implement({ newElement: function (a, b) { if (Browser.Engine.trident && b) { ["name", "type", "checked"].each(function (c) { if (b[c]) { a += " " + c + '="' + b[c] + '"'; c != "checked" && delete b[c] } }); a = "<" + a + ">" } return $.element(this.createElement(a)).set(b) }, newTextNode: function (a) { return this.createTextNode(a) }, getDocument: function () { return this }, getWindow: function () { return this.window } });
Window.implement({ $: function (a, b) { if (a && a.$family && a.uid) return a; var c = $type(a); return $[c] ? $[c](a, b, this.document) : null }, $$: function (a) { if (arguments.length == 1 && typeof a == "string") return this.document.getElements(a); for (var b = [], c = Array.flatten(arguments), d = 0, e = c.length; d < e; d++) { var g = c[d]; switch ($type(g)) { case "element": b.push(g); break; case "string": b.extend(this.document.getElements(g, true)) } } return new Elements(b) }, getDocument: function () { return this.document }, getWindow: function () { return this } });
$.string = function (a, b, c) { return (a = c.getElementById(a)) ? $.element(a, b) : null }; $.element = function (a, b) { $uid(a); if (!b && !a.$family && !/^object|embed$/i.test(a.tagName)) { var c = Element.Prototype; for (var d in c) a[d] = c[d] } return a }; $.object = function (a, b, c) { if (a.toElement) return $.element(a.toElement(c), b); return null }; $.textnode = $.whitespace = $.window = $.document = $arguments(0);
Native.implement([Element, Document], { getElement: function (a, b) { return $(this.getElements(a, true)[0] || null, b) }, getElements: function (a, b) { a = a.split(","); var c = [], d = a.length > 1; a.each(function (e) { e = this.getElementsByTagName(e.trim()); d ? c.extend(e) : (c = e) }, this); return new Elements(c, { ddup: d, cash: !b }) } });
(function () {
    var a = {}, b = {}, c = { input: "checked", option: "selected", textarea: Browser.Engine.webkit && Browser.Engine.version < 420 ? "innerHTML" : "value" }, d = function (h, k) { if (h) { var o = h.uid; if (Browser.Engine.trident) { if (h.clearAttributes) { var q = k && h.cloneNode(false); h.clearAttributes(); q && h.mergeAttributes(q) } else h.removeEvents && h.removeEvents(); if (/object/i.test(h.tagName)) { for (var B in h) if (typeof h[B] == "function") h[B] = $empty; Element.dispose(h) } } if (o) a[o] = b[o] = null } }, e = function (h, k, o, q, B, C) {
        h = h[o || k]; for (o =
[]; h; ) { if (h.nodeType == 1 && (!q || Element.match(h, q))) { if (!B) return $(h, C); o.push(h) } h = h[k] } return B ? new Elements(o, { ddup: false, cash: !C }) : null
    }, g = { html: "innerHTML", "class": "className", "for": "htmlFor", text: Browser.Engine.trident || Browser.Engine.webkit && Browser.Engine.version < 420 ? "innerText" : "textContent" }, f = ["compact", "nowrap", "ismap", "declare", "noshade", "checked", "disabled", "readonly", "multiple", "selected", "noresize", "defer"], l = ["value", "accessKey", "cellPadding", "cellSpacing", "colSpan", "frameBorder",
"maxLength", "readOnly", "rowSpan", "tabIndex", "useMap"]; Hash.extend(g, f.associate(f)); Hash.extend(g, l.associate(l.map(String.toLowerCase))); var n = { before: function (h, k) { k.parentNode && k.parentNode.insertBefore(h, k) }, after: function (h, k) { if (k.parentNode) { var o = k.nextSibling; o ? k.parentNode.insertBefore(h, o) : k.parentNode.appendChild(h) } }, bottom: function (h, k) { k.appendChild(h) }, top: function (h, k) { var o = k.firstChild; o ? k.insertBefore(h, o) : k.appendChild(h) } }; n.inside = n.bottom; Hash.each(n, function (h, k) {
    k = k.capitalize();
    Element.implement("inject" + k, function (o) { h(this, $(o, true)); return this }); Element.implement("grab" + k, function (o) { h($(o, true), this); return this })
}); Element.implement({ set: function (h, k) { switch ($type(h)) { case "object": for (var o in h) this.set(o, h[o]); break; case "string": (o = Element.Properties.get(h)) && o.set ? o.set.apply(this, Array.slice(arguments, 1)) : this.setProperty(h, k) } return this }, get: function (h) { var k = Element.Properties.get(h); return k && k.get ? k.get.apply(this, Array.slice(arguments, 1)) : this.getProperty(h) },
    erase: function (h) { var k = Element.Properties.get(h); k && k.erase ? k.erase.apply(this) : this.removeProperty(h); return this }, setProperty: function (h, k) { var o = g[h]; if (k == undefined) return this.removeProperty(h); if (o && f[h]) k = !!k; o ? (this[o] = k) : this.setAttribute(h, "" + k); return this }, setProperties: function (h) { for (var k in h) this.setProperty(k, h[k]); return this }, getProperty: function (h) { var k = g[h], o = k ? this[k] : this.getAttribute(h, 2); return f[h] ? !!o : k ? o : o || null }, getProperties: function () {
        var h = $A(arguments); return h.map(this.getProperty,
this).associate(h)
    }, removeProperty: function (h) { var k = g[h]; k ? (this[k] = k && f[h] ? false : "") : this.removeAttribute(h); return this }, removeProperties: function () { Array.each(arguments, this.removeProperty, this); return this }, hasClass: function (h) { return this.className.contains(h, " ") }, addClass: function (h) { if (!this.hasClass(h)) this.className = (this.className + " " + h).clean(); return this }, removeClass: function (h) { this.className = this.className.replace(new RegExp("(^|\\s)" + h + "(?:\\s|$)"), "$1"); return this }, toggleClass: function (h) {
        return this.hasClass(h) ?
this.removeClass(h) : this.addClass(h)
    }, adopt: function () { Array.flatten(arguments).each(function (h) { (h = $(h, true)) && this.appendChild(h) }, this); return this }, appendText: function (h, k) { return this.grab(this.getDocument().newTextNode(h), k) }, grab: function (h, k) { n[k || "bottom"]($(h, true), this); return this }, inject: function (h, k) { n[k || "bottom"](this, $(h, true)); return this }, replaces: function (h) { h = $(h, true); h.parentNode.replaceChild(this, h); return this }, wraps: function (h, k) {
        h = $(h, true); return this.replaces(h).grab(h,
k)
    }, getPrevious: function (h, k) { return e(this, "previousSibling", null, h, false, k) }, getAllPrevious: function (h, k) { return e(this, "previousSibling", null, h, true, k) }, getNext: function (h, k) { return e(this, "nextSibling", null, h, false, k) }, getAllNext: function (h, k) { return e(this, "nextSibling", null, h, true, k) }, getFirst: function (h, k) { return e(this, "nextSibling", "firstChild", h, false, k) }, getLast: function (h, k) { return e(this, "previousSibling", "lastChild", h, false, k) }, getParent: function (h, k) {
        return e(this, "parentNode", null,
h, false, k)
    }, getParents: function (h, k) { return e(this, "parentNode", null, h, true, k) }, getChildren: function (h, k) { return e(this, "nextSibling", "firstChild", h, true, k) }, getWindow: function () { return this.ownerDocument.window }, getDocument: function () { return this.ownerDocument }, getElementById: function (h, k) { var o = this.ownerDocument.getElementById(h); if (!o) return null; for (var q = o.parentNode; q != this; q = q.parentNode) if (!q) return null; return $.element(o, k) }, getSelected: function () { return new Elements($A(this.options).filter(function (h) { return h.selected })) },
    getComputedStyle: function (h) { if (this.currentStyle) return this.currentStyle[h.camelCase()]; var k = this.getDocument().defaultView.getComputedStyle(this, null); return k ? k.getPropertyValue([h.hyphenate()]) : null }, toQueryString: function () {
        var h = []; this.getElements("input, select, textarea", true).each(function (k) {
            if (!(!k.name || k.disabled)) {
                var o = k.tagName.toLowerCase() == "select" ? Element.getSelected(k).map(function (q) { return q.value }) : (k.type == "radio" || k.type == "checkbox") && !k.checked ? null : k.value; $splat(o).each(function (q) {
                    typeof q !=
"undefined" && h.push(k.name + "=" + encodeURIComponent(q))
                })
            } 
        }); return h.join("&")
    }, clone: function (h, k) {
        h = h !== false; var o = this.cloneNode(h), q = function (A, F) { k || A.removeAttribute("id"); if (Browser.Engine.trident) { A.clearAttributes(); A.mergeAttributes(F); A.removeAttribute("uid"); if (A.options) for (var x = A.options, D = F.options, I = x.length; I--; ) x[I].selected = D[I].selected } if ((x = c[F.tagName.toLowerCase()]) && F[x]) A[x] = F[x] }; if (h) for (var B = o.getElementsByTagName("*"), C = this.getElementsByTagName("*"), M = B.length; M--; ) q(B[M],
C[M]); q(o, this); return $(o)
    }, destroy: function () { Element.empty(this); Element.dispose(this); d(this, true); return null }, empty: function () { $A(this.childNodes).each(function (h) { Element.destroy(h) }); return this }, dispose: function () { return this.parentNode ? this.parentNode.removeChild(this) : this }, hasChild: function (h) {
        h = $(h, true); if (!h) return false; if (Browser.Engine.webkit && Browser.Engine.version < 420) return $A(this.getElementsByTagName(h.tagName)).contains(h); return this.contains ? this != h && this.contains(h) : !!(this.compareDocumentPosition(h) &
16)
    }, match: function (h) { return !h || h == this || Element.get(this, "tag") == h } 
}); Native.implement([Element, Window, Document], { addListener: function (h, k) { if (h == "unload") { var o = k, q = this; k = function () { q.removeListener("unload", k); o() } } else a[this.uid] = this; this.addEventListener ? this.addEventListener(h, k, false) : this.attachEvent("on" + h, k); return this }, removeListener: function (h, k) { this.removeEventListener ? this.removeEventListener(h, k, false) : this.detachEvent("on" + h, k); return this }, retrieve: function (h, k) {
    var o = b[this.uid] ||
(b[this.uid] = {}), q = o[h]; if (k != undefined && q == undefined) q = o[h] = k; return $pick(q)
}, store: function (h, k) { (b[this.uid] || (b[this.uid] = {}))[h] = k; return this }, eliminate: function (h) { delete (b[this.uid] || (b[this.uid] = {}))[h]; return this } 
}); window.addListener("unload", function () { Hash.each(a, d); Browser.Engine.trident && $A(document.getElementsByTagName("object")).each(d); window.CollectGarbage && CollectGarbage(); a = b = null })
})(); Element.Properties = new Hash;
Element.Properties.style = { set: function (a) { this.style.cssText = a }, get: function () { return this.style.cssText }, erase: function () { this.style.cssText = "" } }; Element.Properties.tag = { get: function () { return this.tagName.toLowerCase() } };
Element.Properties.html = function () {
    var a = document.createElement("div"), b = { table: [1, "<table>", "</table>"], select: [1, "<select>", "</select>"], tbody: [2, "<table><tbody>", "</tbody></table>"], tr: [3, "<table><tbody><tr>", "</tr></tbody></table>"] }; b.thead = b.tfoot = b.tbody; var c = { set: function () { var d = Array.flatten(arguments).join(""), e = Browser.Engine.trident && b[this.get("tag")]; if (e) { var g = a; g.innerHTML = e[1] + d + e[2]; for (d = e[0]; d--; ) g = g.firstChild; this.empty().adopt(g.childNodes) } else this.innerHTML = d } }; c.erase =
c.set; return c
} (); if (Browser.Engine.webkit && Browser.Engine.version < 420) Element.Properties.text = { get: function () { if (this.innerText) return this.innerText; var a = this.ownerDocument.newElement("div", { html: this.innerHTML }).inject(this.ownerDocument.body), b = a.innerText; a.destroy(); return b } }; Element.Properties.events = { set: function (a) { this.addEvents(a) } };
Native.implement([Element, Window, Document], { addEvent: function (a, b) {
    var c = this.retrieve("events", {}); c[a] = c[a] || { keys: [], values: [] }; if (c[a].keys.contains(b)) return this; c[a].keys.push(b); var d = a, e = Element.Events.get(a), g = b, f = this; if (e) { e.onAdd && e.onAdd.call(this, b); if (e.condition) g = function (h) { if (e.condition.call(this, h)) return b.call(this, h); return true }; d = e.base || d } var l = function () { return b.call(f) }, n = Element.NativeEvents[d]; if (n) {
        if (n == 2) l = function (h) {
            h = new Event(h, f.getWindow()); g.call(f, h) ===
false && h.stop()
        }; this.addListener(d, l)
    } c[a].values.push(l); return this
}, removeEvent: function (a, b) { var c = this.retrieve("events"); if (!c || !c[a]) return this; var d = c[a].keys.indexOf(b); if (d == -1) return this; c[a].keys.splice(d, 1); c = c[a].values.splice(d, 1)[0]; if (d = Element.Events.get(a)) { d.onRemove && d.onRemove.call(this, b); a = d.base || a } return Element.NativeEvents[a] ? this.removeListener(a, c) : this }, addEvents: function (a) { for (var b in a) this.addEvent(b, a[b]); return this }, removeEvents: function (a) {
    if ($type(a) == "object") {
        for (var b in a) this.removeEvent(b,
a[b]); return this
    } var c = this.retrieve("events"); if (!c) return this; if (a) { if (c[a]) { for (; c[a].keys[0]; ) this.removeEvent(a, c[a].keys[0]); c[a] = null } } else { for (b in c) this.removeEvents(b); this.eliminate("events") } return this
}, fireEvent: function (a, b, c) { var d = this.retrieve("events"); if (!d || !d[a]) return this; d[a].keys.each(function (e) { e.create({ bind: this, delay: c, arguments: b })() }, this); return this }, cloneEvents: function (a, b) {
    a = $(a); var c = a.retrieve("events"); if (!c) return this; if (b) c[b] && c[b].keys.each(function (e) {
        this.addEvent(b,
e)
    }, this); else for (var d in c) this.cloneEvents(a, d); return this
} 
}); Element.NativeEvents = { click: 2, dblclick: 2, mouseup: 2, mousedown: 2, contextmenu: 2, mousewheel: 2, DOMMouseScroll: 2, mouseover: 2, mouseout: 2, mousemove: 2, selectstart: 2, selectend: 2, keydown: 2, keypress: 2, keyup: 2, focus: 2, blur: 2, change: 2, reset: 2, select: 2, submit: 2, load: 1, unload: 1, beforeunload: 2, resize: 1, move: 1, DOMContentLoaded: 1, readystatechange: 1, error: 1, abort: 1, scroll: 1 };
(function () { var a = function (b) { b = b.relatedTarget; if (b == undefined) return true; if (b === false) return false; return $type(this) != "document" && b != this && b.prefix != "xul" && !this.hasChild(b) }; Element.Events = new Hash({ mouseenter: { base: "mouseover", condition: a }, mouseleave: { base: "mouseout", condition: a }, mousewheel: { base: Browser.Engine.gecko ? "DOMMouseScroll" : "mousewheel"} }) })(); Element.Properties.styles = { set: function (a) { this.setStyles(a) } };
Element.Properties.opacity = { set: function (a, b) { if (!b) if (a == 0) { if (this.style.visibility != "hidden") this.style.visibility = "hidden" } else if (this.style.visibility != "visible") this.style.visibility = "visible"; if (!this.currentStyle || !this.currentStyle.hasLayout) this.style.zoom = 1; if (Browser.Engine.trident) this.style.filter = a == 1 ? "" : "alpha(opacity=" + a * 100 + ")"; this.style.opacity = a; this.store("opacity", a) }, get: function () { return this.retrieve("opacity", 1) } };
Element.implement({ setOpacity: function (a) { return this.set("opacity", a, true) }, getOpacity: function () { return this.get("opacity") }, setStyle: function (a, b) {
    switch (a) { case "opacity": return this.set("opacity", parseFloat(b)); case "float": a = Browser.Engine.trident ? "styleFloat" : "cssFloat" } a = a.camelCase(); if ($type(b) != "string") { var c = (Element.Styles.get(a) || "@").split(" "); b = $splat(b).map(function (d, e) { if (!c[e]) return ""; return $type(d) == "number" ? c[e].replace("@", Math.round(d)) : d }).join(" ") } else if (b == String(Number(b))) b =
Math.round(b); this.style[a] = b; return this
}, getStyle: function (a) {
    switch (a) { case "opacity": return this.get("opacity"); case "float": a = Browser.Engine.trident ? "styleFloat" : "cssFloat" } a = a.camelCase(); var b = this.style[a]; if (!$chk(b)) { b = []; for (var c in Element.ShortStyles) if (a == c) { for (var d in Element.ShortStyles[c]) b.push(this.getStyle(d)); return b.join(" ") } b = this.getComputedStyle(a) } if (b) { b = String(b); if (c = b.match(/rgba?\([\d\s,]+\)/)) b = b.replace(c[0], c[0].rgbToHex()) } if (Browser.Engine.presto || Browser.Engine.trident &&
!$chk(parseInt(b))) { if (a.test(/^(height|width)$/)) { var e = 0; (a == "width" ? ["left", "right"] : ["top", "bottom"]).each(function (g) { e += this.getStyle("border-" + g + "-width").toInt() + this.getStyle("padding-" + g).toInt() }, this); return this["offset" + a.capitalize()] - e + "px" } if (Browser.Engine.presto && String(b).test("px")) return b; if (a.test(/(border(.+)Width|margin|padding)/)) return "0px" } return b
}, setStyles: function (a) { for (var b in a) this.setStyle(b, a[b]); return this }, getStyles: function () {
    var a = {}; Array.each(arguments,
function (b) { a[b] = this.getStyle(b) }, this); return a
} 
});
Element.Styles = new Hash({ left: "@px", top: "@px", bottom: "@px", right: "@px", width: "@px", height: "@px", maxWidth: "@px", maxHeight: "@px", minWidth: "@px", minHeight: "@px", backgroundColor: "rgb(@, @, @)", backgroundPosition: "@px @px", color: "rgb(@, @, @)", fontSize: "@px", letterSpacing: "@px", lineHeight: "@px", clip: "rect(@px @px @px @px)", margin: "@px @px @px @px", padding: "@px @px @px @px", border: "@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)", borderWidth: "@px @px @px @px", borderStyle: "@ @ @ @", borderColor: "rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)",
    zIndex: "@", zoom: "@", fontWeight: "@", textIndent: "@px", opacity: "@"
}); Element.ShortStyles = { margin: {}, padding: {}, border: {}, borderWidth: {}, borderStyle: {}, borderColor: {} };
["Top", "Right", "Bottom", "Left"].each(function (a) { var b = Element.ShortStyles, c = Element.Styles; ["margin", "padding"].each(function (l) { var n = l + a; b[l][n] = c[n] = "@px" }); var d = "border" + a; b.border[d] = c[d] = "@px @ rgb(@, @, @)"; var e = d + "Width", g = d + "Style", f = d + "Color"; b[d] = {}; b.borderWidth[e] = b[d][e] = c[e] = "@px"; b.borderStyle[g] = b[d][g] = c[g] = "@"; b.borderColor[f] = b[d][f] = c[f] = "rgb(@, @, @)" });
(function () {
    function a(f) { return g(f, "-moz-box-sizing") == "border-box" } function b(f) { return g(f, "border-top-width").toInt() || 0 } function c(f) { return g(f, "border-left-width").toInt() || 0 } function d(f) { return /^(?:body|html)$/i.test(f.tagName) } function e(f) { f = f.getDocument(); return !f.compatMode || f.compatMode == "CSS1Compat" ? f.html : f.body } Element.implement({ scrollTo: function (f, l) { if (d(this)) this.getWindow().scrollTo(f, l); else { this.scrollLeft = f; this.scrollTop = l } return this }, getSize: function () {
        if (d(this)) return this.getWindow().getSize();
        return { x: this.offsetWidth, y: this.offsetHeight}
    }, getScrollSize: function () { if (d(this)) return this.getWindow().getScrollSize(); return { x: this.scrollWidth, y: this.scrollHeight} }, getScroll: function () { if (d(this)) return this.getWindow().getScroll(); return { x: this.scrollLeft, y: this.scrollTop} }, getScrolls: function () { for (var f = this, l = { x: 0, y: 0 }; f && !d(f); ) { l.x += f.scrollLeft; l.y += f.scrollTop; f = f.parentNode } return l }, getOffsetParent: function () {
        var f = this; if (d(f)) return null; if (!Browser.Engine.trident) return f.offsetParent;
        for (; (f = f.parentNode) && !d(f); ) if (g(f, "position") != "static") return f; return null
    }, getOffsets: function () {
        if (Browser.Engine.trident) { var f = this.getBoundingClientRect(), l = this.getDocument().documentElement; return { x: f.left + l.scrollLeft - l.clientLeft, y: f.top + l.scrollTop - l.clientTop} } f = this; l = { x: 0, y: 0 }; if (d(this)) return l; for (; f && !d(f); ) {
            l.x += f.offsetLeft; l.y += f.offsetTop; if (Browser.Engine.gecko) { if (!a(f)) { l.x += c(f); l.y += b(f) } var n = f.parentNode; if (n && g(n, "overflow") != "visible") { l.x += c(n); l.y += b(n) } } else if (f !=
this && Browser.Engine.webkit) { l.x += c(f); l.y += b(f) } f = f.offsetParent
        } if (Browser.Engine.gecko && !a(this)) { l.x -= c(this); l.y -= b(this) } return l
    }, getPosition: function (f) { if (d(this)) return { x: 0, y: 0 }; var l = this.getOffsets(), n = this.getScrolls(); l = { x: l.x - n.x, y: l.y - n.y }; n = f && (f = $(f)) ? f.getPosition() : { x: 0, y: 0 }; return { x: l.x - n.x, y: l.y - n.y} }, getCoordinates: function (f) {
        if (d(this)) return this.getWindow().getCoordinates(); f = this.getPosition(f); var l = this.getSize(); f = { left: f.x, top: f.y, width: l.x, height: l.y }; f.right = f.left +
f.width; f.bottom = f.top + f.height; return f
    }, computePosition: function (f) { return { left: f.x - (g(this, "margin-left").toInt() || 0), top: f.y - (g(this, "margin-top").toInt() || 0)} }, position: function (f) { return this.setStyles(this.computePosition(f)) } 
    }); Native.implement([Document, Window], { getSize: function () { var f = this.getWindow(); if (Browser.Engine.presto || Browser.Engine.webkit) return { x: f.innerWidth, y: f.innerHeight }; f = e(this); return { x: f.clientWidth, y: f.clientHeight} }, getScroll: function () {
        var f = this.getWindow(), l = e(this);
        return { x: f.pageXOffset || l.scrollLeft, y: f.pageYOffset || l.scrollTop}
    }, getScrollSize: function () { var f = e(this), l = this.getSize(); return { x: Math.max(f.scrollWidth, l.x), y: Math.max(f.scrollHeight, l.y)} }, getPosition: function () { return { x: 0, y: 0} }, getCoordinates: function () { var f = this.getSize(); return { top: 0, left: 0, bottom: f.y, right: f.x, height: f.y, width: f.x} } 
    }); var g = Element.getComputedStyle
})();
Native.implement([Window, Document, Element], { getHeight: function () { return this.getSize().y }, getWidth: function () { return this.getSize().x }, getScrollTop: function () { return this.getScroll().y }, getScrollLeft: function () { return this.getScroll().x }, getScrollHeight: function () { return this.getScrollSize().y }, getScrollWidth: function () { return this.getScrollSize().x }, getTop: function () { return this.getPosition().y }, getLeft: function () { return this.getPosition().x } });
Native.implement([Document, Element], { getElements: function (a, b) { a = a.split(","); for (var c, d = {}, e = 0, g = a.length; e < g; e++) { var f = Selectors.Utils.search(this, a[e], d); if (e != 0 && f.item) f = $A(f); c = e == 0 ? f : c.item ? $A(c).concat(f) : c.concat(f) } return new Elements(c, { ddup: a.length > 1, cash: !b }) } });
Element.implement({ match: function (a) { if (!a || a == this) return true; var b = Selectors.Utils.parseTagAndID(a), c = b[0]; if (!Selectors.Filters.byID(this, b[1]) || !Selectors.Filters.byTag(this, c)) return false; return (a = Selectors.Utils.parseSelector(a)) ? Selectors.Utils.filter(this, a, {}) : true } }); var Selectors = { Cache: { nth: {}, parsed: {}} }; Selectors.RegExps = { id: /#([\w-]+)/, tag: /^(\w+|\*)/, quick: /^(\w+|\*)$/, splitter: /\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g, combined: /\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=)(["']?)([^\4]*?)\4)?\]|:([\w-]+)(?:\(["']?(.*?)?["']?\)|$)/g };
Selectors.Utils = { chk: function (a, b) { if (!b) return true; var c = $uid(a); if (!b[c]) return b[c] = true; return false }, parseNthArgument: function (a) {
    if (Selectors.Cache.nth[a]) return Selectors.Cache.nth[a]; var b = a.match(/^([+-]?\d*)?([a-z]+)?([+-]?\d*)?$/); if (!b) return false; var c = parseInt(b[1]); c = c || c === 0 ? c : 1; var d = b[2] || false; b = parseInt(b[3]) || 0; if (c != 0) { for (b--; b < 1; ) b += c; for (; b >= c; ) b -= c } else { c = b; d = "index" } switch (d) {
        case "n": b = { a: c, b: b, special: "n" }; break; case "odd": b = { a: 2, b: 0, special: "n" }; break; case "even": b =
{ a: 2, b: 1, special: "n" }; break; case "first": b = { a: 0, special: "index" }; break; case "last": b = { special: "last-child" }; break; case "only": b = { special: "only-child" }; break; default: b = { a: c - 1, special: "index"}
    } return Selectors.Cache.nth[a] = b
}, parseSelector: function (a) {
    if (Selectors.Cache.parsed[a]) return Selectors.Cache.parsed[a]; for (var b, c = { classes: [], pseudos: [], attributes: [] }; b = Selectors.RegExps.combined.exec(a); ) {
        var d = b[1], e = b[2], g = b[3], f = b[5], l = b[6]; b = b[7]; if (d) c.classes.push(d); else if (l) (d = Selectors.Pseudo.get(l)) ?
c.pseudos.push({ parser: d, argument: b }) : c.attributes.push({ name: l, operator: "=", value: b }); else e && c.attributes.push({ name: e, operator: g, value: f })
    } c.classes.length || delete c.classes; c.attributes.length || delete c.attributes; c.pseudos.length || delete c.pseudos; if (!c.classes && !c.attributes && !c.pseudos) c = null; return Selectors.Cache.parsed[a] = c
}, parseTagAndID: function (a) { var b = a.match(Selectors.RegExps.tag); a = a.match(Selectors.RegExps.id); return [b ? b[1] : "*", a ? a[1] : false] }, filter: function (a, b, c) {
    var d; if (b.classes) for (d =
b.classes.length; d--; ) if (!Selectors.Filters.byClass(a, b.classes[d])) return false; if (b.attributes) for (d = b.attributes.length; d--; ) { var e = b.attributes[d]; if (!Selectors.Filters.byAttribute(a, e.name, e.operator, e.value)) return false } if (b.pseudos) for (d = b.pseudos.length; d--; ) { e = b.pseudos[d]; if (!Selectors.Filters.byPseudo(a, e.parser, e.argument, c)) return false } return true
}, getByTagAndID: function (a, b, c) {
    if (c) return (a = a.getElementById ? a.getElementById(c, true) : Element.getElementById(a, c, true)) && Selectors.Filters.byTag(a,
b) ? [a] : []; else return a.getElementsByTagName(b)
}, search: function (a, b, c) {
    var d = []; b = b.trim().replace(Selectors.RegExps.splitter, function (M, A, F) { d.push(A); return ":)" + F }).split(":)"); for (var e, g, f, l = 0, n = b.length; l < n; l++) {
        g = b[l]; if (l == 0 && Selectors.RegExps.quick.test(g)) e = a.getElementsByTagName(g); else {
            f = d[l - 1]; var h = Selectors.Utils.parseTagAndID(g), k = h[0]; h = h[1]; if (l == 0) e = Selectors.Utils.getByTagAndID(a, k, h); else { for (var o = {}, q = [], B = 0, C = e.length; B < C; B++) q = Selectors.Getters[f](q, e[B], k, h, o); e = q } if (k = Selectors.Utils.parseSelector(g)) {
                g =
[]; h = 0; for (o = e.length; h < o; h++) { f = e[h]; Selectors.Utils.filter(f, k, c) && g.push(f) } e = g
            } 
        } 
    } return e
} 
};
Selectors.Getters = { " ": function (a, b, c, d, e) { b = Selectors.Utils.getByTagAndID(b, c, d); c = 0; for (d = b.length; c < d; c++) { var g = b[c]; Selectors.Utils.chk(g, e) && a.push(g) } return a }, ">": function (a, b, c, d, e) { c = Selectors.Utils.getByTagAndID(b, c, d); d = 0; for (var g = c.length; d < g; d++) { var f = c[d]; f.parentNode == b && Selectors.Utils.chk(f, e) && a.push(f) } return a }, "+": function (a, b, c, d, e) { for (; b = b.nextSibling; ) if (b.nodeType == 1) { Selectors.Utils.chk(b, e) && Selectors.Filters.byTag(b, c) && Selectors.Filters.byID(b, d) && a.push(b); break } return a },
    "~": function (a, b, c, d, e) { for (; b = b.nextSibling; ) if (b.nodeType == 1) { if (!Selectors.Utils.chk(b, e)) break; Selectors.Filters.byTag(b, c) && Selectors.Filters.byID(b, d) && a.push(b) } return a } 
};
Selectors.Filters = { byTag: function (a, b) { return b == "*" || a.tagName && a.tagName.toLowerCase() == b }, byID: function (a, b) { return !b || a.id && a.id == b }, byClass: function (a, b) { return a.className && a.className.contains(b, " ") }, byPseudo: function (a, b, c, d) { return b.call(a, c, d) }, byAttribute: function (a, b, c, d) {
    a = Element.prototype.getProperty.call(a, b); if (!a) return c == "!="; if (!c || d == undefined) return true; switch (c) {
        case "=": return a == d; case "*=": return a.contains(d); case "^=": return a.substr(0, d.length) == d; case "$=": return a.substr(a.length -
d.length) == d; case "!=": return a != d; case "~=": return a.contains(d, " "); case "|=": return a.contains(d, "-")
    } return false
} 
};
Selectors.Pseudo = new Hash({ checked: function () { return this.checked }, empty: function () { return !(this.innerText || this.textContent || "").length }, not: function (a) { return !Element.match(this, a) }, contains: function (a) { return (this.innerText || this.textContent || "").contains(a) }, "first-child": function () { return Selectors.Pseudo.index.call(this, 0) }, "last-child": function () { for (var a = this; a = a.nextSibling; ) if (a.nodeType == 1) return false; return true }, "only-child": function () {
    for (var a = this; a = a.previousSibling; ) if (a.nodeType ==
1) return false; for (a = this; a = a.nextSibling; ) if (a.nodeType == 1) return false; return true
}, "nth-child": function (a, b) { var c = Selectors.Utils.parseNthArgument(a == undefined ? "n" : a); if (c.special != "n") return Selectors.Pseudo[c.special].call(this, c.a, b); var d = 0; b.positions = b.positions || {}; var e = $uid(this); if (!b.positions[e]) { for (var g = this; g = g.previousSibling; ) if (g.nodeType == 1) { d++; var f = b.positions[$uid(g)]; if (f != undefined) { d = f + d; break } } b.positions[e] = d } return b.positions[e] % c.a == c.b }, index: function (a) {
    for (var b =
this, c = 0; b = b.previousSibling; ) if (b.nodeType == 1 && ++c > a) return false; return c == a
}, even: function (a, b) { return Selectors.Pseudo["nth-child"].call(this, "2n+1", b) }, odd: function (a, b) { return Selectors.Pseudo["nth-child"].call(this, "2n", b) } 
}); Element.Events.domready = { onAdd: function (a) { Browser.loaded && a.call(this) } };
(function () {
    var a = function () { if (!Browser.loaded) { Browser.loaded = true; window.fireEvent("domready"); document.fireEvent("domready") } }; if (Browser.Engine.trident) { var b = document.createElement("div"); (function () { $try(function () { b.doScroll("left"); return $(b).inject(document.body).set("html", "temp").dispose() }) ? a() : arguments.callee.delay(50) })() } else if (Browser.Engine.webkit && Browser.Engine.version < 525) (function () { ["loaded", "complete"].contains(document.readyState) ? a() : arguments.callee.delay(50) })(); else {
        window.addEvent("load",
a); document.addEvent("DOMContentLoaded", a)
    } 
})();
var JSON = new Hash({ $specialChars: { "\u0008": "\\b", "\t": "\\t", "\n": "\\n", "\u000c": "\\f", "\r": "\\r", '"': '\\"', "\\": "\\\\" }, $replaceChars: function (a) { return JSON.$specialChars[a] || "\\u00" + Math.floor(a.charCodeAt() / 16).toString(16) + (a.charCodeAt() % 16).toString(16) }, encode: function (a) {
    switch ($type(a)) {
        case "string": return '"' + a.replace(/[\x00-\x1f\\"]/g, JSON.$replaceChars) + '"'; case "array": return "[" + String(a.map(JSON.encode).filter($defined)) + "]"; case "object": case "hash": var b = []; Hash.each(a, function (c,
d) { var e = JSON.encode(c); e && b.push(JSON.encode(d) + ":" + e) }); return "{" + b + "}"; case "number": case "boolean": return String(a); case false: return "null"
    } return null
}, decode: function (a, b) { if ($type(a) != "string" || !a.length) return null; if (b && !/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/.test(a.replace(/\\./g, "@").replace(/"[^"\\\n\r]*"/g, ""))) return null; return eval("(" + a + ")") } 
}); Native.implement([Hash, Array, String, Number], { toJSON: function () { return JSON.encode(this) } });
var Cookie = new Class({ Implements: Options, options: { path: false, domain: false, duration: false, secure: false, document: document }, initialize: function (a, b) { this.key = a; this.setOptions(b) }, write: function (a) {
    a = encodeURIComponent(a); if (this.options.domain) a += "; domain=" + this.options.domain; if (this.options.path) a += "; path=" + this.options.path; if (this.options.duration) { var b = new Date; b.setTime(b.getTime() + this.options.duration * 24 * 60 * 60 * 1E3); a += "; expires=" + b.toGMTString() } if (this.options.secure) a += "; secure"; this.options.document.cookie =
this.key + "=" + a; return this
}, read: function () { var a = this.options.document.cookie.match("(?:^|;)\\s*" + this.key.escapeRegExp() + "=([^;]*)"); return a ? decodeURIComponent(a[1]) : null }, dispose: function () { (new Cookie(this.key, $merge(this.options, { duration: -1 }))).write(""); return this } 
}); Cookie.write = function (a, b, c) { return (new Cookie(a, c)).write(b) }; Cookie.read = function (a) { return (new Cookie(a)).read() }; Cookie.dispose = function (a, b) { return (new Cookie(a, b)).dispose() };
var Fx = new Class({ Implements: [Chain, Events, Options], options: { fps: 50, unit: false, duration: 500, link: "ignore" }, initialize: function (a) { this.subject = this.subject || this; this.setOptions(a); this.options.duration = Fx.Durations[this.options.duration] || this.options.duration.toInt(); if (this.options.wait === false) this.options.link = "cancel" }, getTransition: function () { return function (a) { return -(Math.cos(Math.PI * a) - 1) / 2 } }, step: function () {
    var a = $time(); if (a < this.time + this.options.duration) this.set(this.compute(this.from,
this.to, this.transition((a - this.time) / this.options.duration))); else { this.set(this.compute(this.from, this.to, 1)); this.complete() } 
}, set: function (a) { return a }, compute: function (a, b, c) { return Fx.compute(a, b, c) }, check: function (a) { if (!this.timer) return true; switch (this.options.link) { case "cancel": this.cancel(); return true; case "chain": this.chain(a.bind(this, Array.slice(arguments, 1))); return false } return false }, start: function (a, b) {
    if (!this.check(arguments.callee, a, b)) return this; this.from = a; this.to = b; this.time =
0; this.transition = this.getTransition(); this.startTimer(); this.onStart(); return this
}, complete: function () { this.stopTimer() && this.onComplete(); return this }, cancel: function () { this.stopTimer() && this.onCancel(); return this }, onStart: function () { this.fireEvent("start", this.subject) }, onComplete: function () { this.fireEvent("complete", this.subject); this.callChain() || this.fireEvent("chainComplete", this.subject) }, onCancel: function () { this.fireEvent("cancel", this.subject).clearChain() }, pause: function () {
    this.stopTimer();
    return this
}, resume: function () { this.startTimer(); return this }, stopTimer: function () { if (!this.timer) return false; this.time = $time() - this.time; this.timer = $clear(this.timer); return true }, startTimer: function () { if (this.timer) return false; this.time = $time() - this.time; this.timer = this.step.periodical(Math.round(1E3 / this.options.fps), this); return true } 
}); Fx.compute = function (a, b, c) { return (b - a) * c + a }; Fx.Durations = { "short": 250, normal: 500, "long": 1E3 };
Fx.CSS = new Class({ Extends: Fx, prepare: function (a, b, c) { c = $splat(c); if (!$chk(c[1])) { c[1] = c[0]; c[0] = a.getStyle(b) } a = c.map(this.parse); return { from: a[0], to: a[1]} }, parse: function (a) { a = $lambda(a)(); a = typeof a == "string" ? a.split(" ") : $splat(a); return a.map(function (b) { b = String(b); var c = false; Fx.CSS.Parsers.each(function (d) { if (!c) { var e = d.parse(b); if ($chk(e)) c = { value: e, parser: d} } }); return c = c || { value: b, parser: Fx.CSS.Parsers.String} }) }, compute: function (a, b, c) {
    var d = []; Math.min(a.length, b.length).times(function (e) {
        d.push({ value: a[e].parser.compute(a[e].value,
b[e].value, c), parser: a[e].parser
        })
    }); d.$family = { name: "fx:css:value" }; return d
}, serve: function (a, b) { if ($type(a) != "fx:css:value") a = this.parse(a); var c = []; a.each(function (d) { c = c.concat(d.parser.serve(d.value, b)) }); return c }, render: function (a, b, c, d) { a.setStyle(b, this.serve(c, d)) }, search: function (a) {
    if (Fx.CSS.Cache[a]) return Fx.CSS.Cache[a]; var b = {}; Array.each(document.styleSheets, function (c) {
        var d = c.href; d && d.contains("://") && !d.contains(document.domain) || Array.each(c.rules || c.cssRules, function (e) {
            if (e.style) {
                var g =
e.selectorText ? e.selectorText.replace(/^\w+/, function (f) { return f.toLowerCase() }) : null; g && g.test("^" + a + "$") && Element.Styles.each(function (f, l) { if (!(!e.style[l] || Element.ShortStyles[l])) { f = String(e.style[l]); b[l] = f.test(/^rgb/) ? f.rgbToHex() : f } })
            } 
        })
    }); return Fx.CSS.Cache[a] = b
} 
}); Fx.CSS.Cache = {};
Fx.CSS.Parsers = new Hash({ Color: { parse: function (a) { if (a.match(/^#[0-9a-f]{3,6}$/i)) return a.hexToRgb(true); return (a = a.match(/(\d+),\s*(\d+),\s*(\d+)/)) ? [a[1], a[2], a[3]] : false }, compute: function (a, b, c) { return a.map(function (d, e) { return Math.round(Fx.compute(a[e], b[e], c)) }) }, serve: function (a) { return a.map(Number) } }, Number: { parse: parseFloat, compute: Fx.compute, serve: function (a, b) { return b ? a + b : a } }, String: { parse: $lambda(false), compute: $arguments(1), serve: $arguments(0)} });
Fx.Tween = new Class({ Extends: Fx.CSS, initialize: function (a, b) { this.element = this.subject = $(a); this.parent(b) }, set: function (a, b) { if (arguments.length == 1) { b = a; a = this.property || this.options.property } this.render(this.element, a, b, this.options.unit); return this }, start: function (a, b, c) { if (!this.check(arguments.callee, a, b, c)) return this; var d = Array.flatten(arguments); this.property = this.options.property || d.shift(); d = this.prepare(this.element, this.property, d); return this.parent(d.from, d.to) } });
Element.Properties.tween = { set: function (a) { var b = this.retrieve("tween"); b && b.cancel(); return this.eliminate("tween").store("tween:options", $extend({ link: "cancel" }, a)) }, get: function (a) { if (a || !this.retrieve("tween")) { if (a || !this.retrieve("tween:options")) this.set("tween", a); this.store("tween", new Fx.Tween(this, this.retrieve("tween:options"))) } return this.retrieve("tween") } };
Element.implement({ tween: function () { this.get("tween").start(arguments); return this }, fade: function (a) {
    var b = this.get("tween"), c; a = $pick(a, "toggle"); switch (a) { case "in": b.start("opacity", 1); break; case "out": b.start("opacity", 0); break; case "show": b.set("opacity", 1); break; case "hide": b.set("opacity", 0); break; case "toggle": c = this.retrieve("fade:flag", this.get("opacity") == 1); b.start("opacity", c ? 0 : 1); this.store("fade:flag", !c); c = true; break; default: b.start("opacity", arguments) } c || this.eliminate("fade:flag");
    return this
}, highlight: function (a, b) { if (!b) { b = this.retrieve("highlight:original", this.getStyle("background-color")); b = b == "transparent" ? "#fff" : b } var c = this.get("tween"); c.start("background-color", a || "#ffff88", b).chain(function () { this.setStyle("background-color", this.retrieve("highlight:original")); c.callChain() } .bind(this)); return this } 
});
Fx.Morph = new Class({ Extends: Fx.CSS, initialize: function (a, b) { this.element = this.subject = $(a); this.parent(b) }, set: function (a) { if (typeof a == "string") a = this.search(a); for (var b in a) this.render(this.element, b, a[b], this.options.unit); return this }, compute: function (a, b, c) { var d = {}; for (var e in a) d[e] = this.parent(a[e], b[e], c); return d }, start: function (a) {
    if (!this.check(arguments.callee, a)) return this; if (typeof a == "string") a = this.search(a); var b = {}, c = {}; for (var d in a) {
        var e = this.prepare(this.element, d, a[d]);
        b[d] = e.from; c[d] = e.to
    } return this.parent(b, c)
} 
}); Element.Properties.morph = { set: function (a) { var b = this.retrieve("morph"); b && b.cancel(); return this.eliminate("morph").store("morph:options", $extend({ link: "cancel" }, a)) }, get: function (a) { if (a || !this.retrieve("morph")) { if (a || !this.retrieve("morph:options")) this.set("morph", a); this.store("morph", new Fx.Morph(this, this.retrieve("morph:options"))) } return this.retrieve("morph") } }; Element.implement({ morph: function (a) { this.get("morph").start(a); return this } });
Fx.implement({ getTransition: function () { var a = this.options.transition || Fx.Transitions.Sine.easeInOut; if (typeof a == "string") { var b = a.split(":"); a = Fx.Transitions; a = a[b[0]] || a[b[0].capitalize()]; if (b[1]) a = a["ease" + b[1].capitalize() + (b[2] ? b[2].capitalize() : "")] } return a } }); Fx.Transition = function (a, b) { b = $splat(b); return $extend(a, { easeIn: function (c) { return a(c, b) }, easeOut: function (c) { return 1 - a(1 - c, b) }, easeInOut: function (c) { return c <= 0.5 ? a(2 * c, b) / 2 : (2 - a(2 * (1 - c), b)) / 2 } }) }; Fx.Transitions = new Hash({ linear: $arguments(0) });
Fx.Transitions.extend = function (a) { for (var b in a) Fx.Transitions[b] = new Fx.Transition(a[b]) };
Fx.Transitions.extend({ Pow: function (a, b) { return Math.pow(a, b[0] || 6) }, Expo: function (a) { return Math.pow(2, 8 * (a - 1)) }, Circ: function (a) { return 1 - Math.sin(Math.acos(a)) }, Sine: function (a) { return 1 - Math.sin((1 - a) * Math.PI / 2) }, Back: function (a, b) { b = b[0] || 1.618; return Math.pow(a, 2) * ((b + 1) * a - b) }, Bounce: function (a) { for (var b, c = 0, d = 1; ; c += d, d /= 2) if (a >= (7 - 4 * c) / 11) { b = d * d - Math.pow((11 - 6 * c - 11 * a) / 4, 2); break } return b }, Elastic: function (a, b) { return Math.pow(2, 10 * --a) * Math.cos(20 * a * Math.PI * (b[0] || 1) / 3) } });
["Quad", "Cubic", "Quart", "Quint"].each(function (a, b) { Fx.Transitions[a] = new Fx.Transition(function (c) { return Math.pow(c, [b + 2]) }) });
var Request = new Class({ Implements: [Chain, Events, Options], options: { url: "", data: "", headers: { "X-Requested-With": "XMLHttpRequest", Accept: "text/javascript, text/html, application/xml, text/xml, */*" }, async: true, format: false, method: "post", link: "ignore", isSuccess: null, emulation: true, urlEncoded: true, encoding: "utf-8", evalScripts: false, evalResponse: false }, initialize: function (a) { this.xhr = new Browser.Request; this.setOptions(a); this.options.isSuccess = this.options.isSuccess || this.isSuccess; this.headers = new Hash(this.options.headers) },
    onStateChange: function () { if (!(this.xhr.readyState != 4 || !this.running)) { this.running = false; this.status = 0; $try(function () { this.status = this.xhr.status } .bind(this)); if (this.options.isSuccess.call(this, this.status)) { this.response = { text: this.xhr.responseText, xml: this.xhr.responseXML }; this.success(this.response.text, this.response.xml) } else { this.response = { text: null, xml: null }; this.failure() } this.xhr.onreadystatechange = $empty } }, isSuccess: function () { return this.status >= 200 && this.status < 300 }, processScripts: function (a) {
        if (this.options.evalResponse ||
/(ecma|java)script/.test(this.getHeader("Content-type"))) return $exec(a); return a.stripScripts(this.options.evalScripts)
    }, success: function (a, b) { this.onSuccess(this.processScripts(a), b) }, onSuccess: function () { this.fireEvent("complete", arguments).fireEvent("success", arguments).callChain() }, failure: function () { this.onFailure() }, onFailure: function () { this.fireEvent("complete").fireEvent("failure", this.xhr) }, setHeader: function (a, b) { this.headers.set(a, b); return this }, getHeader: function (a) { return $try(function () { return this.xhr.getResponseHeader(a) } .bind(this)) },
    check: function (a) { if (!this.running) return true; switch (this.options.link) { case "cancel": this.cancel(); return true; case "chain": this.chain(a.bind(this, Array.slice(arguments, 1))); return false } return false }, send: function (a) {
        if (!this.check(arguments.callee, a)) return this; this.running = true; var b = $type(a); if (b == "string" || b == "element") a = { data: a }; b = this.options; a = $extend({ data: b.data, url: b.url, method: b.method }, a); b = a.data; var c = a.url, d = a.method; switch ($type(b)) {
            case "element": b = $(b).toQueryString(); break;
            case "object": case "hash": b = Hash.toQueryString(b)
        } if (this.options.format) { var e = "format=" + this.options.format; b = b ? e + "&" + b : e } if (this.options.emulation && ["put", "delete"].contains(d)) { d = "_method=" + d; b = b ? d + "&" + b : d; d = "post" } if (this.options.urlEncoded && d == "post") this.headers.set("Content-type", "application/x-www-form-urlencoded" + (this.options.encoding ? "; charset=" + this.options.encoding : "")); if (b && d == "get") { c = c + (c.contains("?") ? "&" : "?") + b; b = null } this.xhr.open(d.toUpperCase(), c, this.options.async); this.xhr.onreadystatechange =
this.onStateChange.bind(this); this.headers.each(function (g, f) { try { this.xhr.setRequestHeader(f, g) } catch (l) { this.fireEvent("exception", [f, g]) } }, this); this.fireEvent("request"); this.xhr.send(b); this.options.async || this.onStateChange(); return this
    }, cancel: function () { if (!this.running) return this; this.running = false; this.xhr.abort(); this.xhr.onreadystatechange = $empty; this.xhr = new Browser.Request; this.fireEvent("cancel"); return this } 
});
(function () { var a = {}; ["get", "post", "put", "delete", "GET", "POST", "PUT", "DELETE"].each(function (b) { a[b] = function () { var c = Array.link(arguments, { url: String.type, data: $defined }); return this.send($extend(c, { method: b.toLowerCase() })) } }); Request.implement(a) })();
Element.Properties.send = { set: function (a) { var b = this.retrieve("send"); b && b.cancel(); return this.eliminate("send").store("send:options", $extend({ data: this, link: "cancel", method: this.get("method") || "post", url: this.get("action") }, a)) }, get: function (a) { if (a || !this.retrieve("send")) { if (a || !this.retrieve("send:options")) this.set("send", a); this.store("send", new Request(this.retrieve("send:options"))) } return this.retrieve("send") } };
Element.implement({ send: function (a) { var b = this.get("send"); b.send({ data: this, url: a || b.options.url }); return this } });
Request.HTML = new Class({ Extends: Request, options: { update: false, evalScripts: true, filter: false }, processHTML: function (a) {
    var b = a.match(/<body[^>]*>([\s\S]*?)<\/body>/i); a = b ? b[1] : a; var c = new Element("div"); return $try(function () {
        var d = "<root>" + a + "</root>", e; if (Browser.Engine.trident) { e = new ActiveXObject("Microsoft.XMLDOM"); e.async = false; e.loadXML(d) } else e = (new DOMParser).parseFromString(d, "text/xml"); d = e.getElementsByTagName("root")[0]; e = 0; for (var g = d.childNodes.length; e < g; e++) {
            var f = Element.clone(d.childNodes[e],
true, true); f && c.grab(f)
        } return c
    }) || c.set("html", a)
}, success: function (a) { var b = this.options, c = this.response; c.html = a.stripScripts(function (d) { c.javascript = d }); a = this.processHTML(c.html); c.tree = a.childNodes; c.elements = a.getElements("*"); if (b.filter) c.tree = c.elements.filter(b.filter); b.update && $(b.update).empty().set("html", c.html); b.evalScripts && $exec(c.javascript); this.onSuccess(c.tree, c.elements, c.html, c.javascript) } 
});
Element.Properties.load = { set: function (a) { var b = this.retrieve("load"); b && b.cancel(); return this.eliminate("load").store("load:options", $extend({ data: this, link: "cancel", update: this, method: "get" }, a)) }, get: function (a) { if (a || !this.retrieve("load")) { if (a || !this.retrieve("load:options")) this.set("load", a); this.store("load", new Request.HTML(this.retrieve("load:options"))) } return this.retrieve("load") } };
Element.implement({ load: function () { this.get("load").send(Array.link(arguments, { data: Object.type, url: String.type })); return this } }); Request.JSON = new Class({ Extends: Request, options: { secure: true }, initialize: function (a) { this.parent(a); this.headers.extend({ Accept: "application/json", "X-Request": "JSON" }) }, success: function (a) { this.response.json = JSON.decode(a, this.options.secure); this.onSuccess(this.response.json, a) } });
Fx.Slide = new Class({ Extends: Fx, options: { mode: "vertical" }, initialize: function (a, b) {
    this.addEvent("complete", function () { (this.open = this.wrapper["offset" + this.layout.capitalize()] != 0) && Browser.Engine.webkit419 && this.element.dispose().inject(this.wrapper) }, true); this.element = this.subject = $(a); this.parent(b); this.wrapper = this.element.retrieve("wrapper") || (new Element("div", { styles: $extend(this.element.getStyles("margin", "position"), { overflow: "hidden" }) })).wraps(this.element); this.element.store("wrapper",
this.wrapper).setStyle("margin", 0); this.now = []; this.open = true
}, vertical: function () { this.margin = "margin-top"; this.layout = "height"; this.offset = this.element.offsetHeight }, horizontal: function () { this.margin = "margin-left"; this.layout = "width"; this.offset = this.element.offsetWidth }, set: function (a) { this.element.setStyle(this.margin, a[0]); this.wrapper.setStyle(this.layout, a[1]); return this }, compute: function (a, b, c) { var d = []; (2).times(function (e) { d[e] = Fx.compute(a[e], b[e], c) }); return d }, start: function (a, b) {
    if (!this.check(arguments.callee,
a, b)) return this; this[b || this.options.mode](); var c = this.element.getStyle(this.margin).toInt(), d = this.wrapper.getStyle(this.layout).toInt(), e = [[c, d], [0, this.offset]]; c = [[c, d], [-this.offset, 0]]; var g; switch (a) { case "in": g = e; break; case "out": g = c; break; case "toggle": g = this.wrapper["offset" + this.layout.capitalize()] == 0 ? e : c } return this.parent(g[0], g[1])
}, slideIn: function (a) { return this.start("in", a) }, slideOut: function (a) { return this.start("out", a) }, hide: function (a) {
    this[a || this.options.mode](); this.open =
false; return this.set([-this.offset, 0])
}, show: function (a) { this[a || this.options.mode](); this.open = true; return this.set([0, this.offset]) }, toggle: function (a) { return this.start("toggle", a) } 
}); Element.Properties.slide = { set: function (a) { var b = this.retrieve("slide"); b && b.cancel(); return this.eliminate("slide").store("slide:options", $extend({ link: "cancel" }, a)) }, get: function (a) { if (a || !this.retrieve("slide")) { if (a || !this.retrieve("slide:options")) this.set("slide", a); this.store("slide", new Fx.Slide(this, this.retrieve("slide:options"))) } return this.retrieve("slide") } };
Element.implement({ slide: function (a, b) { a = a || "toggle"; var c = this.get("slide"), d; switch (a) { case "hide": c.hide(b); break; case "show": c.show(b); break; case "toggle": d = this.retrieve("slide:flag", c.open); c[d ? "slideOut" : "slideIn"](b); this.store("slide:flag", !d); d = true; break; default: c.start(a, b) } d || this.eliminate("slide:flag"); return this } });
Fx.Scroll = new Class({ Extends: Fx, options: { offset: { x: 0, y: 0 }, wheelStops: true }, initialize: function (a, b) { this.element = this.subject = $(a); this.parent(b); var c = this.cancel.bind(this, false); if ($type(this.element) != "element") this.element = $(this.element.getDocument().body); var d = this.element; if (this.options.wheelStops) { this.addEvent("start", function () { d.addEvent("mousewheel", c) }, true); this.addEvent("complete", function () { d.removeEvent("mousewheel", c) }, true) } }, set: function () {
    var a = Array.flatten(arguments); this.element.scrollTo(a[0],
a[1])
}, compute: function (a, b, c) { var d = []; (2).times(function (e) { d.push(Fx.compute(a[e], b[e], c)) }); return d }, start: function (a, b) { if (!this.check(arguments.callee, a, b)) return this; var c = this.element.getSize(), d = this.element.getScrollSize(), e = this.element.getScroll(), g = { x: a, y: b }; for (var f in g) { var l = d[f] - c[f]; g[f] = $chk(g[f]) ? $type(g[f]) == "number" ? g[f].limit(0, l) : l : e[f]; g[f] += this.options.offset[f] } return this.parent([e.x, e.y], [g.x, g.y]) }, toTop: function () { return this.start(false, 0) }, toLeft: function () {
    return this.start(0,
false)
}, toRight: function () { return this.start("right", false) }, toBottom: function () { return this.start(false, "bottom") }, toElement: function (a) { a = $(a).getPosition(this.element); return this.start(a.x, a.y) } 
});
Fx.Elements = new Class({ Extends: Fx.CSS, initialize: function (a, b) { this.elements = this.subject = $$(a); this.parent(b) }, compute: function (a, b, c) { var d = {}; for (var e in a) { var g = a[e], f = b[e], l = d[e] = {}; for (var n in g) l[n] = this.parent(g[n], f[n], c) } return d }, set: function (a) { for (var b in a) { var c = a[b]; for (var d in c) this.render(this.elements[b], d, c[d], this.options.unit) } return this }, start: function (a) {
    if (!this.check(arguments.callee, a)) return this; var b = {}, c = {}; for (var d in a) {
        var e = a[d], g = b[d] = {}, f = c[d] = {}; for (var l in e) {
            var n =
this.prepare(this.elements[d], l, e[l]); g[l] = n.from; f[l] = n.to
        } 
    } return this.parent(b, c)
} 
});
var Drag = new Class({ Implements: [Events, Options], options: { snap: 6, unit: "px", grid: false, style: true, limit: false, handle: false, invert: false, preventDefault: false, modifiers: { x: "left", y: "top"} }, initialize: function () {
    var a = Array.link(arguments, { options: Object.type, element: $defined }); this.element = $(a.element); this.document = this.element.getDocument(); this.setOptions(a.options || {}); a = $type(this.options.handle); this.handles = a == "array" || a == "collection" ? $$(this.options.handle) : $(this.options.handle) || this.element;
    this.mouse = { now: {}, pos: {} }; this.value = { start: {}, now: {} }; this.selection = Browser.Engine.trident ? "selectstart" : "mousedown"; this.bound = { start: this.start.bind(this), check: this.check.bind(this), drag: this.drag.bind(this), stop: this.stop.bind(this), cancel: this.cancel.bind(this), eventStop: $lambda(false) }; this.attach()
}, attach: function () { this.handles.addEvent("mousedown", this.bound.start); return this }, detach: function () { this.handles.removeEvent("mousedown", this.bound.start); return this }, start: function (a) {
    this.options.preventDefault &&
a.preventDefault(); this.fireEvent("beforeStart", this.element); this.mouse.start = a.page; var b = this.options.limit; this.limit = { x: [], y: [] }; for (var c in this.options.modifiers) if (this.options.modifiers[c]) { this.value.now[c] = this.options.style ? this.element.getStyle(this.options.modifiers[c]).toInt() : this.element[this.options.modifiers[c]]; if (this.options.invert) this.value.now[c] *= -1; this.mouse.pos[c] = a.page[c] - this.value.now[c]; if (b && b[c]) for (var d = 2; d--; ) if ($chk(b[c][d])) this.limit[c][d] = $lambda(b[c][d])() } if ($type(this.options.grid) ==
"number") this.options.grid = { x: this.options.grid, y: this.options.grid }; this.document.addEvents({ mousemove: this.bound.check, mouseup: this.bound.cancel }); this.document.addEvent(this.selection, this.bound.eventStop)
}, check: function (a) {
    this.options.preventDefault && a.preventDefault(); if (Math.round(Math.sqrt(Math.pow(a.page.x - this.mouse.start.x, 2) + Math.pow(a.page.y - this.mouse.start.y, 2))) > this.options.snap) {
        this.cancel(); this.document.addEvents({ mousemove: this.bound.drag, mouseup: this.bound.stop }); this.fireEvent("start",
this.element).fireEvent("snap", this.element)
    } 
}, drag: function (a) {
    this.options.preventDefault && a.preventDefault(); this.mouse.now = a.page; for (var b in this.options.modifiers) if (this.options.modifiers[b]) {
        this.value.now[b] = this.mouse.now[b] - this.mouse.pos[b]; if (this.options.invert) this.value.now[b] *= -1; if (this.options.limit && this.limit[b]) if ($chk(this.limit[b][1]) && this.value.now[b] > this.limit[b][1]) this.value.now[b] = this.limit[b][1]; else if ($chk(this.limit[b][0]) && this.value.now[b] < this.limit[b][0]) this.value.now[b] =
this.limit[b][0]; if (this.options.grid[b]) this.value.now[b] -= this.value.now[b] % this.options.grid[b]; if (this.options.style) this.element.setStyle(this.options.modifiers[b], this.value.now[b] + this.options.unit); else this.element[this.options.modifiers[b]] = this.value.now[b]
    } this.fireEvent("drag", this.element)
}, cancel: function (a) {
    this.document.removeEvent("mousemove", this.bound.check); this.document.removeEvent("mouseup", this.bound.cancel); if (a) {
        this.document.removeEvent(this.selection, this.bound.eventStop);
        this.fireEvent("cancel", this.element)
    } 
}, stop: function (a) { this.document.removeEvent(this.selection, this.bound.eventStop); this.document.removeEvent("mousemove", this.bound.drag); this.document.removeEvent("mouseup", this.bound.stop); a && this.fireEvent("complete", this.element) } 
}); Element.implement({ makeResizable: function (a) { return new Drag(this, $merge({ modifiers: { x: "width", y: "height"} }, a)) } });
Drag.Move = new Class({ Extends: Drag, options: { droppables: [], container: false }, initialize: function (a, b) {
    this.parent(a, b); this.droppables = $$(this.options.droppables); if ((this.container = $(this.options.container)) && $type(this.container) != "element") this.container = $(this.container.getDocument().body); a = this.element; var c = a.getStyle("position"); c = c != "static" ? c : "absolute"; if (a.getStyle("left") == "auto" || a.getStyle("top") == "auto") a.position(a.getPosition(a.offsetParent)); a.setStyle("position", c); this.addEvent("start",
function () { this.checkDroppables() }, true)
}, start: function (a) { if (this.container) { var b = this.element, c = this.container, d = c.getCoordinates(b.offsetParent), e = {}, g = {}; ["top", "right", "bottom", "left"].each(function (f) { e[f] = c.getStyle("padding-" + f).toInt(); g[f] = b.getStyle("margin-" + f).toInt() }, this); this.options.limit = { x: [d.left + e.left, d.right - e.right - (b.offsetWidth + g.left + g.right)], y: [d.top + e.top, d.bottom - e.bottom - (b.offsetHeight + g.top + g.bottom)]} } this.parent(a) }, checkAgainst: function (a) {
    a = a.getCoordinates();
    var b = this.mouse.now; return b.x > a.left && b.x < a.right && b.y < a.bottom && b.y > a.top
}, checkDroppables: function () { var a = this.droppables.filter(this.checkAgainst, this).getLast(); if (this.overed != a) { this.overed && this.fireEvent("leave", [this.element, this.overed]); if (a) { this.overed = a; this.fireEvent("enter", [this.element, a]) } else this.overed = null } }, drag: function (a) { this.parent(a); this.droppables.length && this.checkDroppables() }, stop: function (a) {
    this.checkDroppables(); this.fireEvent("drop", [this.element, this.overed]);
    this.overed = null; return this.parent(a)
} 
}); Element.implement({ makeDraggable: function (a) { return new Drag.Move(this, a) } }); Hash.Cookie = new Class({ Extends: Cookie, options: { autoSave: true }, initialize: function (a, b) { this.parent(a, b); this.load() }, save: function () { var a = JSON.encode(this.hash); if (!a || a.length > 4096) return false; a == "{}" ? this.dispose() : this.write(a); return true }, load: function () { this.hash = new Hash(JSON.decode(this.read(), true)); return this } });
Hash.Cookie.implement(function () { var a = {}; Hash.each(Hash.prototype, function (b, c) { a[c] = function () { var d = b.apply(this.hash, arguments); this.options.autoSave && this.save(); return d } }); return a } ());
var Color = new Native({ initialize: function (a, b) { if (arguments.length >= 3) { b = "rgb"; a = Array.slice(arguments, 0, 3) } else if (typeof a == "string") a = a.match(/rgb/) ? a.rgbToHex().hexToRgb(true) : a.match(/hsb/) ? a.hsbToRgb() : a.hexToRgb(true); switch (b || "rgb") { case "hsb": var c = a; a = a.hsbToRgb(); a.hsb = c; break; case "hex": a = a.hexToRgb(true); break } a.rgb = a.slice(0, 3); a.hsb = a.hsb || a.rgbToHsb(); a.hex = a.rgbToHex(); return $extend(a, this) } });
Color.implement({ mix: function () { var a = Array.slice(arguments), b = $type(a.getLast()) == "number" ? a.pop() : 50, c = this.slice(); a.each(function (d) { d = new Color(d); for (var e = 0; e < 3; e++) c[e] = Math.round(c[e] / 100 * (100 - b) + d[e] / 100 * b) }); return new Color(c, "rgb") }, invert: function () { return new Color(this.map(function (a) { return 255 - a })) }, setHue: function (a) { return new Color([a, this.hsb[1], this.hsb[2]], "hsb") }, setSaturation: function (a) { return new Color([this.hsb[0], a, this.hsb[2]], "hsb") }, setBrightness: function (a) {
    return new Color([this.hsb[0],
this.hsb[1], a], "hsb")
} 
}); function $RGB(a, b, c) { return new Color([a, b, c], "rgb") } function $HSB(a, b, c) { return new Color([a, b, c], "hsb") } function $HEX(a) { return new Color(a, "hex") }
Array.implement({ rgbToHsb: function () { var a = this[0], b = this[1], c = this[2], d, e = Math.max(a, b, c), g = e - Math.min(a, b, c); d = e != 0 ? g / e : 0; if (d == 0) a = 0; else { var f = (e - a) / g, l = (e - b) / g; c = (e - c) / g; a = a == e ? c - l : b == e ? 2 + f - c : 4 + l - f; a /= 6; a < 0 && a++ } return [Math.round(a * 360), Math.round(d * 100), Math.round(e / 255 * 100)] }, hsbToRgb: function () {
    var a = Math.round(this[2] / 100 * 255); if (this[1] == 0) return [a, a, a]; else {
        var b = this[0] % 360, c = b % 60, d = Math.round(this[2] * (100 - this[1]) / 1E4 * 255), e = Math.round(this[2] * (6E3 - this[1] * c) / 6E5 * 255); c = Math.round(this[2] *
(6E3 - this[1] * (60 - c)) / 6E5 * 255); switch (Math.floor(b / 60)) { case 0: return [a, c, d]; case 1: return [e, a, d]; case 2: return [d, a, c]; case 3: return [d, e, a]; case 4: return [c, d, a]; case 5: return [a, d, e] } 
    } return false
} 
}); String.implement({ rgbToHsb: function () { return this.match(/\d{1,3}/g) ? hsb.rgbToHsb() : null }, hsbToRgb: function () { var a = this.match(/\d{1,3}/g); return a ? a.hsbToRgb() : null } });
var Group = new Class({ initialize: function () { this.instances = Array.flatten(arguments); this.events = {}; this.checker = {} }, addEvent: function (a, b) { this.checker[a] = this.checker[a] || {}; this.events[a] = this.events[a] || []; if (this.events[a].contains(b)) return false; else this.events[a].push(b); this.instances.each(function (c, d) { c.addEvent(a, this.check.bind(this, [a, c, d])) }, this); return this }, check: function (a, b, c) {
    this.checker[a][c] = true; if (this.instances.every(function (d, e) { return this.checker[a][e] || false }, this)) {
        this.checker[a] =
{}; this.events[a].each(function (d) { d.call(this, this.instances, b) }, this)
    } 
} 
}), Asset = new Hash({ javascript: function (a, b) {
    b = $extend({ onload: $empty, document: document, check: $lambda(true) }, b); var c = new Element("script", { src: a, type: "text/javascript" }), d = b.onload.bind(c), e = b.check, g = b.document; delete b.onload; delete b.check; delete b.document; c.addEvents({ load: d, readystatechange: function () { ["loaded", "complete"].contains(this.readyState) && d() } }).setProperties(b); if (Browser.Engine.webkit419) var f = function () {
        if ($try(e)) {
            $clear(f);
            d()
        } 
    } .periodical(50); return c.inject(g.head)
}, css: function (a, b) { return (new Element("link", $merge({ rel: "stylesheet", media: "screen", type: "text/css", href: a }, b))).inject(document.head) }, image: function (a, b) {
    b = $merge({ onload: $empty, onabort: $empty, onerror: $empty }, b); var c = new Image, d = $(c) || new Element("img"); ["load", "abort", "error"].each(function (e) {
        var g = "on" + e, f = b[g]; delete b[g]; c[g] = function () {
            if (c) {
                if (!d.parentNode) { d.width = c.width; d.height = c.height } c = c.onload = c.onabort = c.onerror = null; f.delay(1, d, d);
                d.fireEvent(e, d, 1)
            } 
        } 
    }); c.src = d.src = a; c && c.complete && c.onload.delay(1); return d.setProperties(b)
}, images: function (a, b) { b = $merge({ onComplete: $empty, onProgress: $empty }, b); a.push || (a = [a]); var c = [], d = 0; a.each(function (e) { var g = new Asset.image(e, { onload: function () { b.onProgress.call(this, d, a.indexOf(e)); d++; d == a.length && b.onComplete() } }); c.push(g) }); return new Elements(c) } 
}), Sortables = new Class({ Implements: [Events, Options], options: { snap: 4, opacity: 1, clone: false, revert: false, handle: false, constrain: false },
    initialize: function (a, b) { this.setOptions(b); this.elements = []; this.lists = []; this.idle = true; this.addLists($$($(a) || a)); if (!this.options.clone) this.options.revert = false; if (this.options.revert) this.effect = new Fx.Morph(null, $merge({ duration: 250, link: "cancel" }, this.options.revert)) }, attach: function () { this.addLists(this.lists); return this }, detach: function () { this.lists = this.removeLists(this.lists); return this }, addItems: function () {
        Array.flatten(arguments).each(function (a) {
            this.elements.push(a); var b = a.retrieve("sortables:start",
this.start.bindWithEvent(this, a)); (this.options.handle ? a.getElement(this.options.handle) || a : a).addEvent("mousedown", b)
        }, this); return this
    }, addLists: function () { Array.flatten(arguments).each(function (a) { this.lists.push(a); this.addItems(a.getChildren()) }, this); return this }, removeItems: function () {
        var a = []; Array.flatten(arguments).each(function (b) { a.push(b); this.elements.erase(b); var c = b.retrieve("sortables:start"); (this.options.handle ? b.getElement(this.options.handle) || b : b).removeEvent("mousedown", c) },
this); return $$(a)
    }, removeLists: function () { var a = []; Array.flatten(arguments).each(function (b) { a.push(b); this.lists.erase(b); this.removeItems(b.getChildren()) }, this); return $$(a) }, getClone: function (a, b) { if (!this.options.clone) return (new Element("div")).inject(document.body); if ($type(this.options.clone) == "function") return this.options.clone.call(this, a, b, this.list); return b.clone(true).setStyles({ margin: "0px", position: "absolute", visibility: "hidden", width: b.getStyle("width") }).inject(this.list).position(b.getPosition(b.getOffsetParent())) },
    getDroppables: function () { var a = this.list.getChildren(); this.options.constrain || (a = this.lists.concat(a).erase(this.list)); return a.erase(this.clone).erase(this.element) }, insert: function (a, b) { var c = "inside"; if (this.lists.contains(b)) { this.list = b; this.drag.droppables = this.getDroppables() } else c = this.element.getAllPrevious().contains(b) ? "before" : "after"; this.element.inject(b, c); this.fireEvent("sort", [this.element, this.clone]) }, start: function (a, b) {
        if (this.idle) {
            this.idle = false; this.element = b; this.opacity =
b.get("opacity"); this.list = b.getParent(); this.clone = this.getClone(a, b); this.drag = new Drag.Move(this.clone, { snap: this.options.snap, container: this.options.constrain && this.element.getParent(), droppables: this.getDroppables(), onSnap: function () { a.stop(); this.clone.setStyle("visibility", "visible"); this.element.set("opacity", this.options.opacity || 0); this.fireEvent("start", [this.element, this.clone]) } .bind(this), onEnter: this.insert.bind(this), onCancel: this.reset.bind(this), onComplete: this.end.bind(this) });
            this.clone.inject(this.element, "before"); this.drag.start(a)
        } 
    }, end: function () { this.drag.detach(); this.element.set("opacity", this.opacity); if (this.effect) { var a = this.element.getStyles("width", "height"), b = this.clone.computePosition(this.element.getPosition(this.clone.offsetParent)); this.effect.element = this.clone; this.effect.start({ top: b.top, left: b.left, width: a.width, height: a.height, opacity: 0.25 }).chain(this.reset.bind(this)) } else this.reset() }, reset: function () {
        this.idle = true; this.clone.destroy(); this.fireEvent("complete",
this.element)
    }, serialize: function () { var a = Array.link(arguments, { modifier: Function.type, index: $defined }), b = this.lists.map(function (d) { return d.getChildren().map(a.modifier || function (e) { return e.get("id") }, this) }, this), c = a.index; if (this.lists.length == 1) c = 0; return $chk(c) && c >= 0 && c < this.lists.length ? b[c] : b } 
}), Tips = new Class({ Implements: [Events, Options], options: { onShow: function (a) { a.setStyle("visibility", "visible") }, onHide: function (a) { a.setStyle("visibility", "hidden") }, showDelay: 100, hideDelay: 100, className: null,
    offsets: { x: 16, y: 16 }, fixed: false
}, initialize: function () {
    var a = Array.link(arguments, { options: Object.type, elements: $defined }); this.setOptions(a.options || null); this.tip = (new Element("div")).inject(document.body); this.options.className && this.tip.addClass(this.options.className); (new Element("div", { "class": "tip-top" })).inject(this.tip); this.container = (new Element("div", { "class": "tip" })).inject(this.tip); (new Element("div", { "class": "tip-bottom" })).inject(this.tip); this.tip.setStyles({ position: "absolute",
        top: 0, left: 0, visibility: "hidden"
    }); a.elements && this.attach(a.elements)
}, attach: function (a) {
    $$(a).each(function (b) {
        b.retrieve("tip:title", b.get("title")); b.retrieve("tip:text", b.get("rel") || b.get("href")); var c = b.retrieve("tip:enter", this.elementEnter.bindWithEvent(this, b)), d = b.retrieve("tip:leave", this.elementLeave.bindWithEvent(this, b)); b.addEvents({ mouseenter: c, mouseleave: d }); if (!this.options.fixed) { c = b.retrieve("tip:move", this.elementMove.bindWithEvent(this, b)); b.addEvent("mousemove", c) } b.store("tip:native",
b.get("title")); b.erase("title")
    }, this); return this
}, detach: function (a) { $$(a).each(function (b) { b.removeEvent("mouseenter", b.retrieve("tip:enter") || $empty); b.removeEvent("mouseleave", b.retrieve("tip:leave") || $empty); b.removeEvent("mousemove", b.retrieve("tip:move") || $empty); b.eliminate("tip:enter").eliminate("tip:leave").eliminate("tip:move"); var c = b.retrieve("tip:native"); c && b.set("title", c) }); return this }, elementEnter: function (a, b) {
    $A(this.container.childNodes).each(Element.dispose); var c = b.retrieve("tip:title");
    if (c) { this.titleElement = (new Element("div", { "class": "tip-title" })).inject(this.container); this.fill(this.titleElement, c) } if (c = b.retrieve("tip:text")) { this.textElement = (new Element("div", { "class": "tip-text" })).inject(this.container); this.fill(this.textElement, c) } this.timer = $clear(this.timer); this.timer = this.show.delay(this.options.showDelay, this); this.position(!this.options.fixed ? a : { page: b.getPosition() })
}, elementLeave: function () {
    $clear(this.timer); this.timer = this.hide.delay(this.options.hideDelay,
this)
}, elementMove: function (a) { this.position(a) }, position: function (a) { var b = window.getSize(), c = window.getScroll(), d = { x: this.tip.offsetWidth, y: this.tip.offsetHeight }, e = { x: "left", y: "top" }; for (var g in e) { var f = a.page[g] + this.options.offsets[g]; if (f + d[g] - c[g] > b[g]) f = a.page[g] - this.options.offsets[g] - d[g]; this.tip.setStyle(e[g], f) } }, fill: function (a, b) { typeof b == "string" ? a.set("html", b) : a.adopt(b) }, show: function () { this.fireEvent("show", this.tip) }, hide: function () { this.fireEvent("hide", this.tip) } 
}), SmoothScroll =
new Class({ Extends: Fx.Scroll, initialize: function (a, b) { b = b || document; var c = b.getDocument(), d = b.getWindow(); this.parent(c, a); this.links = this.options.links ? $$(this.options.links) : $$(c.links); var e = d.location.href.match(/^[^#]*/)[0] + "#"; this.links.each(function (g) { if (g.href.indexOf(e) == 0) { var f = g.href.substr(e.length); f && $(f) && this.useLink(g, f) } }, this); Browser.Engine.webkit419 || this.addEvent("complete", function () { d.location.hash = this.anchor }, true) }, useLink: function (a, b) {
    a.addEvent("click", function (c) {
        this.anchor =
b; this.toElement(b); c.stop()
    } .bind(this))
} 
}), Slider = new Class({ Implements: [Events, Options], options: { onTick: function (a) { if (this.options.snap) a = this.toPosition(this.step); this.knob.setStyle(this.property, a) }, snap: false, offset: 0, range: false, wheel: false, steps: 100, mode: "horizontal" }, initialize: function (a, b, c) {
    this.setOptions(c); this.element = $(a); this.knob = $(b); this.previousChange = this.previousEnd = this.step = -1; this.element.addEvent("mousedown", this.clickedElement.bind(this)); this.options.wheel && this.element.addEvent("mousewheel",
this.scrolledElement.bindWithEvent(this)); var d; a = {}; b = { x: false, y: false }; switch (this.options.mode) { case "vertical": this.axis = "y"; this.property = "top"; d = "offsetHeight"; break; case "horizontal": this.axis = "x"; this.property = "left"; d = "offsetWidth" } this.half = this.knob[d] / 2; this.full = this.element[d] - this.knob[d] + this.options.offset * 2; this.min = $chk(this.options.range[0]) ? this.options.range[0] : 0; this.max = $chk(this.options.range[1]) ? this.options.range[1] : this.options.steps; this.range = this.max - this.min; this.steps =
this.options.steps || this.full; this.stepSize = Math.abs(this.range) / this.steps; this.stepWidth = this.stepSize * this.full / Math.abs(this.range); this.knob.setStyle("position", "relative").setStyle(this.property, -this.options.offset); b[this.axis] = this.property; a[this.axis] = [-this.options.offset, this.full - this.options.offset]; this.drag = new Drag(this.knob, { snap: 0, limit: a, modifiers: b, onDrag: this.draggedKnob.bind(this), onStart: this.draggedKnob.bind(this), onComplete: function () { this.draggedKnob(); this.end() } .bind(this) });
    if (this.options.snap) { this.drag.options.grid = Math.ceil(this.stepWidth); this.drag.options.limit[this.axis][1] = this.full } 
}, set: function (a) { if (!(this.range > 0 ^ a < this.min)) a = this.min; if (!(this.range > 0 ^ a > this.max)) a = this.max; this.step = Math.round(a); this.checkStep(); this.end(); this.fireEvent("tick", this.toPosition(this.step)); return this }, clickedElement: function (a) {
    var b = this.range < 0 ? -1 : 1; a = a.page[this.axis] - this.element.getPosition()[this.axis] - this.half; a = a.limit(-this.options.offset, this.full - this.options.offset);
    this.step = Math.round(this.min + b * this.toStep(a)); this.checkStep(); this.end(); this.fireEvent("tick", a)
}, scrolledElement: function (a) { this.set((this.options.mode == "horizontal" ? a.wheel < 0 : a.wheel > 0) ? this.step - this.stepSize : this.step + this.stepSize); a.stop() }, draggedKnob: function () { var a = this.range < 0 ? -1 : 1, b = this.drag.value.now[this.axis]; b = b.limit(-this.options.offset, this.full - this.options.offset); this.step = Math.round(this.min + a * this.toStep(b)); this.checkStep() }, checkStep: function () {
    if (this.previousChange !=
this.step) { this.previousChange = this.step; this.fireEvent("change", this.step) } 
}, end: function () { if (this.previousEnd !== this.step) { this.previousEnd = this.step; this.fireEvent("complete", this.step + "") } }, toStep: function (a) { a = (a + this.options.offset) * this.stepSize / this.full * this.steps; return this.options.steps ? Math.round(a -= a % this.stepSize) : a }, toPosition: function (a) { return this.full * Math.abs(this.min - a) / (this.steps * this.stepSize) - this.options.offset } 
}), Scroller = new Class({ Implements: [Events, Options], options: { area: 20,
    velocity: 1, onChange: function (a, b) { this.element.scrollTo(a, b) } 
}, initialize: function (a, b) { this.setOptions(b); this.element = $(a); this.listener = $type(this.element) != "element" ? $(this.element.getDocument().body) : this.element; this.timer = null; this.coord = this.getCoords.bind(this) }, start: function () { this.listener.addEvent("mousemove", this.coord) }, stop: function () { this.listener.removeEvent("mousemove", this.coord); this.timer = $clear(this.timer) }, getCoords: function (a) {
    this.page = this.listener.get("tag") == "body" ? a.client :
a.page; if (!this.timer) this.timer = this.scroll.periodical(50, this)
}, scroll: function () {
    var a = this.element.getSize(), b = this.element.getScroll(), c = this.element.getPosition(), d = { x: 0, y: 0 }; for (var e in this.page) if (this.page[e] < this.options.area + c[e] && b[e] != 0) d[e] = (this.page[e] - this.options.area - c[e]) * this.options.velocity; else if (this.page[e] + this.options.area > a[e] + c[e] && a[e] + a[e] != b[e]) d[e] = (this.page[e] - a[e] + this.options.area - c[e]) * this.options.velocity; if (d.y || d.x) this.fireEvent("change", [b.x + d.x, b.y +
d.y])
} 
}), Accordion = new Class({ Extends: Fx.Elements, options: { display: 0, show: false, height: true, width: false, opacity: true, fixedHeight: false, fixedWidth: false, wait: false, alwaysHide: false }, initialize: function () {
    var a = Array.link(arguments, { container: Element.type, options: Object.type, togglers: $defined, elements: $defined }); this.parent(a.elements, a.options); this.togglers = $$(a.togglers); this.container = $(a.container); this.previous = -1; if (this.options.alwaysHide) this.options.wait = true; if ($chk(this.options.show)) {
        this.options.display =
false; this.previous = this.options.show
    } if (this.options.start) { this.options.display = false; this.options.show = false } this.effects = {}; if (this.options.opacity) this.effects.opacity = "fullOpacity"; if (this.options.width) this.effects.width = this.options.fixedWidth ? "fullWidth" : "offsetWidth"; if (this.options.height) this.effects.height = this.options.fixedHeight ? "fullHeight" : "scrollHeight"; a = 0; for (var b = this.togglers.length; a < b; a++) this.addSection(this.togglers[a], this.elements[a]); this.elements.each(function (c, d) {
        if (this.options.show ===
d) this.fireEvent("active", [this.togglers[d], c]); else for (var e in this.effects) c.setStyle(e, 0)
    }, this); $chk(this.options.display) && this.display(this.options.display)
}, addSection: function (a, b, c) {
    a = $(a); b = $(b); var d = this.togglers.contains(a), e = this.togglers.length; this.togglers.include(a); this.elements.include(b); if (e && (!d || c)) { c = $pick(c, e - 1); a.inject(this.togglers[c], "before"); b.inject(a, "after") } else if (this.container && !d) { a.inject(this.container); b.inject(this.container) } c = this.togglers.indexOf(a);
    a.addEvent("click", this.display.bind(this, c)); this.options.height && b.setStyles({ "padding-top": 0, "border-top": "none", "padding-bottom": 0, "border-bottom": "none" }); this.options.width && b.setStyles({ "padding-left": 0, "border-left": "none", "padding-right": 0, "border-right": "none" }); b.fullOpacity = 1; if (this.options.fixedWidth) b.fullWidth = this.options.fixedWidth; if (this.options.fixedHeight) b.fullHeight = this.options.fixedHeight; b.setStyle("overflow", "hidden"); if (!d) for (var g in this.effects) b.setStyle(g, 0); return this
},
    display: function (a) { a = $type(a) == "element" ? this.elements.indexOf(a) : a; if (this.timer && this.options.wait || a === this.previous && !this.options.alwaysHide) return this; this.previous = a; var b = {}; this.elements.each(function (c, d) { b[d] = {}; var e = d != a || this.options.alwaysHide && c.offsetHeight > 0; this.fireEvent(e ? "background" : "active", [this.togglers[d], c]); for (var g in this.effects) b[d][g] = e ? 0 : c[this.effects[g]] }, this); return this.start(b) } 
}), swfobject = function () {
    function a() {
        if (!N) {
            try {
                var j = u.getElementsByTagName("body")[0].appendChild(u.createElement("span"));
                j.parentNode.removeChild(j)
            } catch (m) { return } N = true; j = R.length; for (var p = 0; p < j; p++) R[p]()
        } 
    } function b(j) { if (N) j(); else R[R.length] = j } function c(j) { if (typeof E.addEventListener != x) E.addEventListener("load", j, false); else if (typeof u.addEventListener != x) u.addEventListener("load", j, false); else if (typeof E.attachEvent != x) B(E, "onload", j); else if (typeof E.onload == "function") { var m = E.onload; E.onload = function () { m(); j() } } else E.onload = j } function d() {
        var j = u.getElementsByTagName("body")[0], m = u.createElement(D);
        m.setAttribute("type", I); var p = j.appendChild(m); if (p) { var r = 0; (function () { if (typeof p.GetVariable != x) { var s = p.GetVariable("$version"); if (s) { s = s.split(" ")[1].split(","); t.pv = [parseInt(s[0], 10), parseInt(s[1], 10), parseInt(s[2], 10)] } } else if (r < 10) { r++; setTimeout(arguments.callee, 10); return } j.removeChild(m); p = null; e() })() } else e()
    } function e() {
        var j = J.length; if (j > 0) for (var m = 0; m < j; m++) {
            var p = J[m].id, r = J[m].callbackFn, s = { success: false, id: p }; if (t.pv[0] > 0) {
                var w = q(p); if (w) if (C(J[m].swfVersion) && !(t.wk &&
t.wk < 312)) { A(p, true); if (r) { s.success = true; s.ref = g(p); r(s) } } else if (J[m].expressInstall && f()) {
                    s = {}; s.data = J[m].expressInstall; s.width = w.getAttribute("width") || "0"; s.height = w.getAttribute("height") || "0"; if (w.getAttribute("class")) s.styleclass = w.getAttribute("class"); if (w.getAttribute("align")) s.align = w.getAttribute("align"); var v = {}; w = w.getElementsByTagName("param"); for (var z = w.length, y = 0; y < z; y++) if (w[y].getAttribute("name").toLowerCase() != "movie") v[w[y].getAttribute("name")] = w[y].getAttribute("value");
                    l(s, v, p, r)
                } else { n(w); r && r(s) } 
            } else { A(p, true); if (r) { if ((p = g(p)) && typeof p.SetVariable != x) { s.success = true; s.ref = p } r(s) } } 
        } 
    } function g(j) { var m = null; if ((j = q(j)) && j.nodeName == "OBJECT") if (typeof j.SetVariable != x) m = j; else if (j = j.getElementsByTagName(D)[0]) m = j; return m } function f() { return !S && C("6.0.65") && (t.win || t.mac) && !(t.wk && t.wk < 312) } function l(j, m, p, r) {
        S = true; Y = r || null; aa = { success: false, id: p }; var s = q(p); if (s) {
            if (s.nodeName == "OBJECT") { P = h(s); T = null } else { P = s; T = p } j.id = ba; if (typeof j.width == x || !/%$/.test(j.width) &&
parseInt(j.width, 10) < 310) j.width = "310"; if (typeof j.height == x || !/%$/.test(j.height) && parseInt(j.height, 10) < 137) j.height = "137"; u.title = u.title.slice(0, 47) + " - Flash Player Installation"; r = t.ie && t.win ? "ActiveX" : "PlugIn"; r = "MMredirectURL=" + E.location.toString().replace(/&/g, "%26") + "&MMplayerType=" + r + "&MMdoctitle=" + u.title; if (typeof m.flashvars != x) m.flashvars += "&" + r; else m.flashvars = r; if (t.ie && t.win && s.readyState != 4) {
                r = u.createElement("div"); p += "SWFObjectNew"; r.setAttribute("id", p); s.parentNode.insertBefore(r,
s); s.style.display = "none"; (function () { s.readyState == 4 ? s.parentNode.removeChild(s) : setTimeout(arguments.callee, 10) })()
            } k(j, m, p)
        } 
    } function n(j) { if (t.ie && t.win && j.readyState != 4) { var m = u.createElement("div"); j.parentNode.insertBefore(m, j); m.parentNode.replaceChild(h(j), m); j.style.display = "none"; (function () { j.readyState == 4 ? j.parentNode.removeChild(j) : setTimeout(arguments.callee, 10) })() } else j.parentNode.replaceChild(h(j), j) } function h(j) {
        var m = u.createElement("div"); if (t.win && t.ie) m.innerHTML = j.innerHTML;
        else if (j = j.getElementsByTagName(D)[0]) if (j = j.childNodes) for (var p = j.length, r = 0; r < p; r++) !(j[r].nodeType == 1 && j[r].nodeName == "PARAM") && j[r].nodeType != 8 && m.appendChild(j[r].cloneNode(true)); return m
    } function k(j, m, p) {
        var r, s = q(p); if (t.wk && t.wk < 312) return r; if (s) {
            if (typeof j.id == x) j.id = p; if (t.ie && t.win) {
                var w = ""; for (var v in j) if (j[v] != Object.prototype[v]) if (v.toLowerCase() == "data") m.movie = j[v]; else if (v.toLowerCase() == "styleclass") w += ' class="' + j[v] + '"'; else if (v.toLowerCase() != "classid") w += " " + v + '="' +
j[v] + '"'; v = ""; for (var z in m) if (m[z] != Object.prototype[z]) v += '<param name="' + z + '" value="' + m[z] + '" />'; s.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + w + ">" + v + "</object>"; U[U.length] = j.id; r = q(j.id)
            } else {
                z = u.createElement(D); z.setAttribute("type", I); for (var y in j) if (j[y] != Object.prototype[y]) if (y.toLowerCase() == "styleclass") z.setAttribute("class", j[y]); else y.toLowerCase() != "classid" && z.setAttribute(y, j[y]); for (w in m) if (m[w] != Object.prototype[w] && w.toLowerCase() != "movie") {
                    j =
w; v = m[w]; y = u.createElement("param"); y.setAttribute("name", j); y.setAttribute("value", v); z.appendChild(y)
                } s.parentNode.replaceChild(z, s); r = z
            } 
        } return r
    } function o(j) { var m = q(j); if (m && m.nodeName == "OBJECT") if (t.ie && t.win) { m.style.display = "none"; (function () { if (m.readyState == 4) { var p = q(j); if (p) { for (var r in p) if (typeof p[r] == "function") p[r] = null; p.parentNode.removeChild(p) } } else setTimeout(arguments.callee, 10) })() } else m.parentNode.removeChild(m) } function q(j) { var m = null; try { m = u.getElementById(j) } catch (p) { } return m }
    function B(j, m, p) { j.attachEvent(m, p); O[O.length] = [j, m, p] } function C(j) { var m = t.pv; j = j.split("."); j[0] = parseInt(j[0], 10); j[1] = parseInt(j[1], 10) || 0; j[2] = parseInt(j[2], 10) || 0; return m[0] > j[0] || m[0] == j[0] && m[1] > j[1] || m[0] == j[0] && m[1] == j[1] && m[2] >= j[2] ? true : false } function M(j, m, p, r) {
        if (!(t.ie && t.mac)) {
            var s = u.getElementsByTagName("head")[0]; if (s) {
                p = p && typeof p == "string" ? p : "screen"; if (r) Z = G = null; if (!G || Z != p) {
                    r = u.createElement("style"); r.setAttribute("type", "text/css"); r.setAttribute("media", p); G = s.appendChild(r);
                    if (t.ie && t.win && typeof u.styleSheets != x && u.styleSheets.length > 0) G = u.styleSheets[u.styleSheets.length - 1]; Z = p
                } if (t.ie && t.win) G && typeof G.addRule == D && G.addRule(j, m); else G && typeof u.createTextNode != x && G.appendChild(u.createTextNode(j + " {" + m + "}"))
            } 
        } 
    } function A(j, m) { if (ca) { var p = m ? "visible" : "hidden"; if (N && q(j)) q(j).style.visibility = p; else M("#" + j, "visibility:" + p) } } function F(j) { return /[\\\"<>\.;]/.exec(j) != null && typeof encodeURIComponent != x ? encodeURIComponent(j) : j } var x = "undefined", D = "object", I = "application/x-shockwave-flash",
ba = "SWFObjectExprInst", E = window, u = document, K = navigator, da = false, R = [function () { da ? d() : e() } ], J = [], U = [], O = [], P, T, Y, aa, N = false, S = false, G, Z, ca = true, t = function () {
    var j = typeof u.getElementById != x && typeof u.getElementsByTagName != x && typeof u.createElement != x, m = K.userAgent.toLowerCase(), p = K.platform.toLowerCase(), r = p ? /win/.test(p) : /win/.test(m); p = p ? /mac/.test(p) : /mac/.test(m); m = /webkit/.test(m) ? parseFloat(m.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false; var s = ! +"\u000b1", w = [0, 0, 0], v = null; if (typeof K.plugins !=
x && typeof K.plugins["Shockwave Flash"] == D) { if ((v = K.plugins["Shockwave Flash"].description) && !(typeof K.mimeTypes != x && K.mimeTypes[I] && !K.mimeTypes[I].enabledPlugin)) { da = true; s = false; v = v.replace(/^.*\s+(\S+\s+\S+$)/, "$1"); w[0] = parseInt(v.replace(/^(.*)\..*$/, "$1"), 10); w[1] = parseInt(v.replace(/^.*\.(.*)\s.*$/, "$1"), 10); w[2] = /[a-zA-Z]/.test(v) ? parseInt(v.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0 } } else if (typeof E.ActiveXObject != x) try {
        var z = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); if (z) if (v = z.GetVariable("$version")) {
            s =
true; v = v.split(" ")[1].split(","); w = [parseInt(v[0], 10), parseInt(v[1], 10), parseInt(v[2], 10)]
        } 
    } catch (y) { } return { w3: j, pv: w, wk: m, ie: s, win: r, mac: p}
} (); (function () {
    if (t.w3) {
        if (typeof u.readyState != x && u.readyState == "complete" || typeof u.readyState == x && (u.getElementsByTagName("body")[0] || u.body)) a(); if (!N) {
            typeof u.addEventListener != x && u.addEventListener("DOMContentLoaded", a, false); if (t.ie && t.win) {
                u.attachEvent("onreadystatechange", function () {
                    if (u.readyState == "complete") {
                        u.detachEvent("onreadystatechange",
arguments.callee); a()
                    } 
                }); E == top && function () { if (!N) { try { u.documentElement.doScroll("left") } catch (j) { setTimeout(arguments.callee, 0); return } a() } } ()
            } t.wk && function () { N || (/loaded|complete/.test(u.readyState) ? a() : setTimeout(arguments.callee, 0)) } (); c(a)
        } 
    } 
})(); (function () {
    t.ie && t.win && window.attachEvent("onunload", function () {
        for (var j = O.length, m = 0; m < j; m++) O[m][0].detachEvent(O[m][1], O[m][2]); j = U.length; for (m = 0; m < j; m++) o(U[m]); for (var p in t) t[p] = null; t = null; for (var r in swfobject) swfobject[r] = null; swfobject =
null
    })
})(); return { registerObject: function (j, m, p, r) { if (t.w3 && j && m) { var s = {}; s.id = j; s.swfVersion = m; s.expressInstall = p; s.callbackFn = r; J[J.length] = s; A(j, false) } else r && r({ success: false, id: j }) }, getObjectById: function (j) { if (t.w3) return g(j) }, embedSWF: function (j, m, p, r, s, w, v, z, y, Q) {
    var V = { success: false, id: m }; if (t.w3 && !(t.wk && t.wk < 312) && j && m && p && r && s) {
        A(m, false); b(function () {
            p += ""; r += ""; var L = {}; if (y && typeof y === D) for (var H in y) L[H] = y[H]; L.data = j; L.width = p; L.height = r; H = {}; if (z && typeof z === D) for (var W in z) H[W] =
z[W]; if (v && typeof v === D) for (var X in v) if (typeof H.flashvars != x) H.flashvars += "&" + X + "=" + v[X]; else H.flashvars = X + "=" + v[X]; if (C(s)) { W = k(L, H, m); L.id == m && A(m, true); V.success = true; V.ref = W } else if (w && f()) { L.data = w; l(L, H, m, Q); return } else A(m, true); Q && Q(V)
        })
    } else Q && Q(V)
}, switchOffAutoHideShow: function () { ca = false }, ua: t, getFlashPlayerVersion: function () { return { major: t.pv[0], minor: t.pv[1], release: t.pv[2]} }, hasFlashPlayerVersion: C, createSWF: function (j, m, p) { if (t.w3) return k(j, m, p) }, showExpressInstall: function (j,
m, p, r) { t.w3 && f() && l(j, m, p, r) }, removeSWF: function (j) { t.w3 && o(j) }, createCSS: function (j, m, p, r) { t.w3 && M(j, m, p, r) }, addDomLoadEvent: b, addLoadEvent: c, getQueryParamValue: function (j) { var m = u.location.search || u.location.hash; if (m) { if (/\?/.test(m)) m = m.split("?")[1]; if (j == null) return F(m); m = m.split("&"); for (var p = 0; p < m.length; p++) if (m[p].substring(0, m[p].indexOf("=")) == j) return F(m[p].substring(m[p].indexOf("=") + 1)) } return "" }, expressInstallCallback: function () {
    if (S) {
        var j = q(ba); if (j && P) {
            j.parentNode.replaceChild(P,
j); if (T) { A(T, true); if (t.ie && t.win) P.style.display = "block" } Y && Y(aa)
        } S = false
    } 
} 
} 
} (), RadioCanada = {}; RadioCanada.Lib = {}; RadioCanada.Lib.Mod = {}; RadioCanada.Web = {}; RadioCanada.Mod = {};
var src_adElms, oSrc = RadioCanada.Lib.oSrc = { aOnLoad: [], addOnLoad: function (a) { this.aOnLoad.push(a) }, onLoad: function () { var a = this.aOnLoad.length - 1; do typeof this.aOnLoad[a] !== "undefined" && this.aOnLoad[a](); while (--a >= 0) }, queryString: function (a) { a = a.toString(); var b = document.location.search.toString().slice(1); if (b.indexOf(a) != -1) { b = b.split("&"); var c = b.length - 1; if (c >= 0) { do if (b[c].toLowerCase().slice(0, b[c].indexOf("=")) == a.toLowerCase()) return b[c].slice(b[c].indexOf("=") + 1); while (--c >= 0) } } return "" },
    popup: function (a, b, c) { window.open(a, b, c) }, popCav: function (a) { window.open("/audio-video/pop.shtml#urlMedia=" + a, "audioVideo", "toolbar=no,directories=no,status=no,menubar=no,scrollbars=yes,history=no,resizable=yes,width=1,height=1") }, getAlbumPhoto: function (a, b) { return this.albumPhoto(a, b) }, writeAlbumPhoto: function (a, b) { document.write(this.albumPhoto(a, b)) }, albumPhoto: function (a, b) {
        var c = document, d = c.getElements("div[class=srcAlbumPhoto]").length; $defined(b) || (b = ""); return DetectFlashVer(9, 0, 28) ? "<div class='srcAlbumPhoto'>" +
AC_FL_GetContent("id", "AlbumPhoto" + d, "name", "AlbumPhoto" + d, "flashvars", "domId=AlbumPhoto" + d + "&xmlfile=" + a + "&pageUrl=" + c.location.href.toString() + "&crossDomain=true&currentAlbumID=" + b, "width", "490", "height", "1109", "codebase", "http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab", "movie", "http://www.radio-canada.ca/lib/v3/swf/albumPhoto/AlbumPhoto", "quality", "high", "bgcolor", "#ffffff", "allowscriptaccess", "always", "wmode", "transparent") + "</div>" : ""
    }, oClientcide: { include: function () {
        for (var a =
document, b = false, c = a.getElementsByTagName("LINK"), d = c.length - 1; d >= 0; d--) if (c[d].id != "" && c[d].id == "defaultStickyWinStyle") { b = true; break } b || a.write("<link rel='stylesheet' id='defaultStickyWinStyle' type='text/css' href='http://static.src.ca/v3/css/clientcide_1.1.0.css'>"); typeof Clientcide === "undefined" && a.write("<script language='javascript' type='text/javascript' src='http://static.src.ca/v3/js/clientcide_v785_1.0.0.js'><\/script>")
    }, insertScriptTag: function (a, b) {
        var c = document, d = "?nocache=" + (new Date).getTime() +
Math.floor(Math.random() * 2E3); if (b === true) { var e = c.createElement("SCRIPT"); e.type = "text/javascript"; e.language = "javascript"; e.src = a + d; c.getElementsByTagName("head")[0].appendChild(e) } 
    }, stickyWinAjax: function (a, b) { if (a === true) if (typeof Clientcide !== "undefined" && typeof b === "object") { (new StickyWin.Modal.Ajax({ url: b.url, wrapWithUi: true, uiOptions: { width: b.w }, modalOptions: { hideOnClick: false, modalStyle: { "background-color": "#333333", opacity: 0.8, "z-index": 9999} }, caption: b.titre })).update(); return false } } 
    },
    oMeteo: { getBlocMini: function () { if (typeof isVersionLight === "undefined" || !isVersionLight) { document.write("<link rel='stylesheet' type='text/css' href='/meteo/lib/v3.1/css/blocMini.css'/><script language='javascript' type='text/javascript' src='/meteo/lib/v3.1/js/meteo_cookie.js'><\/script>"); RadioCanada.Lib.oSrc.oClientcide.include() } }, litebox: function (a) { RadioCanada.Lib.oSrc.oClientcide.stickyWinAjax(true, a) } }, loadPub: function () {
        src_adElms = document.getElements("div[class=smartAd]"); var a = src_adElms.length -
1; if (a >= 0) {
            do {
                _aId = src_adElms[a].getProperty("id").split("-"); var b = getSmartFormat(_aId[1]); RadioCanada.Lib.oSrc.alert("Pub", "_aId[1] = " + _aId[1]); RadioCanada.Lib.oSrc.alert("Pub", "_oPub = " + b); src_adElms[a].appendChild(new Element("div", { html: "&nbsp;", styles: { height: b._h + "px"} })); if (_aId[1] == "liensTextes") { RadioCanada.Lib.oSrc.alert("Pub", "_aId[0] = " + _aId[0]); setTimeout("src_adElms[" + a + "].innerHTML = getSmartAdServer_liensTextes('" + _aId[0] + "', '" + _aId[1] + "', '');", 500) } else if (_aId[1] == "largeBox") setTimeout("src_adElms[" +
a + "].innerHTML = getSmartAdServer_LargeBox('" + _aId[0] + "', '" + _aId[1] + "', '');", 500); else _aId[0] == 1839 ? setTimeout("if ($defined(srcAV_pubIlotLoaded) && !srcAV_pubIlotLoaded) src_adElms[" + a + "].innerHTML = getSmartAdServer_iframe('" + _aId[0] + "', '" + _aId[1] + "', '');", 50) : setTimeout("src_adElms[" + a + "].innerHTML = getSmartAdServer_iframe('" + _aId[0] + "', '" + _aId[1] + "', '');", 500)
            } while (--a >= 0)
        } 
    }, loadMenu: function () {
        var a = "http://" + location.host, b = location.pathname.toString().toLowerCase(), c = document.getElements("ul[class=srcMenuAuto]");
        if (b.indexOf("regions") != -1) b = "/nouvelles" + b.replace("/regions", "/regional"); for (var d = c.length - 1; d >= 0; d--) for (var e = c[d].getElements("a"), g = e.length - 1; g >= 0; g--) {
            var f = $defined(e[g].getProperty("href")) ? e[g].getProperty("href").toString().toLowerCase() : ""; if (f.indexOf(a) != -1) f = f.slice(a.length); if (b.indexOf(f) == 0) {
                e[g].setProperty("class", "On"); $defined(e[g].getParent("ul").getPrevious("a")) && e[g].getParent("ul").getPrevious("a").setProperty("class", "On"); e[g].getParent("ul").setStyle("display", "block");
                $defined(e[g].getNext("ul")) && e[g].getNext("ul").setStyle("display", "block")
            } 
        } 
    }, isSwfInstall: false, swf_embed: function (a, b, c, d, e, g, f) {
        var l = typeof b !== "string" ? "" : b; c = typeof c !== "string" ? "" : c; d = typeof d !== "string" ? "PlayerCamera" : d; e = typeof e === "number" || typeof e === "string" ? e : 200; g = typeof g === "number" || typeof g === "string" ? g : 150; f = typeof f !== "string" ? "opaque" : f; var n = ""; if (b != "") if (AC_FL_GetContent == 0) alert("This page requires AC_RunActiveContent.js. In Flash, run Apply Active Content Update in the Commands menu to copy AC_RunActiveContent.js to the HTML output folder.");
        else {
            n += "<span style='display:none'>Radio-Canada.ca</span>"; n += AC_FL_GetContent("codebase", "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0", "width", e, "height", g, "src", l, "movie", l, "quality", "high", "pluginspage", "http://www.macromedia.com/go/getflashplayer", "align", "middle", "play", "true", "loop", "true", "scale", "showall", "wmode", f, "devicefont", "false", "id", d, "bgcolor", "#000000", "name", d, "menu", "true", "allowScriptAccess", "always", "allowFullScreen", "true", "salign", "",
"FlashVars", c); if (typeof a === "string" && a != "") $(a).innerHTML = n; else return n
        } 
    }, swf_embedVersion: function (a, b, c, d, e, g, f, l, n) {
        var h = l instanceof Array ? l[0] : 6, k = l instanceof Array ? l[1] : 0, o = l instanceof Array ? l[2] : 65; l = DetectFlashVer(6, 0, 65); var q = DetectFlashVer(h, k, o); n = n != "" && n != null && n != undefined ? n : '<div  style="background-color:#fff;border:1px grey solid;padding:3px;"><p>Le plugiciel <b>&laquo; Flash ' + h + "." + k + "." + o + " &raquo;</b> n'est pas install&eacute; sur votre ordinateur.<br/><a href='http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash' target='_blank'>Cliquez ici pour le t&eacute;l&eacute;charger</a>.</p><p><b>Note pour les utilisateurs Macintosh:</b> Il se peut que vous deviez red&eacute;marrer votre ordinateur une fois l'installation termin&eacute;e.</p></div>";
        if (!q && l) { b = isIE == true ? "ActiveX" : "PlugIn"; c = window.location; d = document; d.title = d.title.slice(0, 47) + " - Flash Player Installation"; d = d.title; this.isSwfInstall = true; if (isIE) this.swf_embed(a, "/lib/v3/swf/playerProductInstall", "MMredirectURL=" + c + "&MMplayerType=" + b + "&MMdoctitle=" + d + "", "installFlashPlayer", e, g, f); else if (typeof a === "string" && a != "") $(a).innerHTML = n; else return n } else if (q) if (typeof a === "string" && a != "") this.swf_embed(a, b, c, d, e, g, f); else return this.swf_embed(a, b, c, d, e, g, f); else if (typeof a ===
"string" && a != "") $(a).innerHTML = n; else return n
    }, swf_write: function (a) { document.write(a) }, swfobject: { altDefault: "<div  style=\"background-color:#fff;border:1px grey solid;padding:3px;\"><p>Le plugiciel <b>&laquo; Flash [flashVersion] &raquo;</b> n'est pas install&eacute; sur votre ordinateur.<br/><a href='http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash' target='_blank'>Cliquez ici pour le t&eacute;l&eacute;charger</a>.</p><p><b>Note pour les utilisateurs Macintosh:</b> Il se peut que vous deviez red&eacute;marrer votre ordinateur une fois l'installation termin&eacute;e.</p></div>",
        conter: 0, embedSWF: function (a, b, c, d, e, g, f, l, n) {
            var h = {}; if (typeof a !== "undefined") {
                h.url = a; if (typeof b === "undefined" || b == null || b == "") { a = "swfAltContent-" + this.conter; this.conter++; document.write('<div id="' + a + '"></div>'); h.altContentDiv = a } else h.altContentDiv = b; if (typeof c !== "undefined") {
                    h.width = c; if (typeof d !== "undefined") {
                        h.height = d; h.flashVersion = typeof e === "undefined" ? "9.0.0" : e; h.autoUpdate = typeof g === "undefined" ? false : g; h.flashvars = f; h.params = l; if (h.params == null || h.params == "") h.params = {}; h.params.AllowScriptAccess =
"always"; h.params.allowFullScreen = "true"; h.params.wmode = "transparent"; h.attributes = n; if ($(h.altContentDiv).innerHTML == "") $(h.altContentDiv).innerHTML = this.altDefault.replace("[flashVersion]", h.flashVersion); swfobject.embedSWF(h.url, h.altContentDiv, h.width, h.height, h.flashVersion, h.autoUpdate, h.flashvars, h.params, h.attributes)
                    } 
                } 
            } 
        } 
    }, oDebugger: { aDataTabs: [], aoTabs: [], isShow: false, oCookie: Cookie.read("srcDebugger") != null ? JSON.decode(Cookie.read("srcDebugger")) : null, add: function (a, b) {
        if (!$defined(this.aDataTabs[a])) {
            this.aoTabs[this.aoTabs.length] =
{ sId: a, aLine: [] }; this.aDataTabs[a] = this.aoTabs[this.aoTabs.length - 1]
        } this.aDataTabs[a].aLine.push(b); this.isShow && this.writeLine(a, b); if (domReady && !this.isShow && $defined(this.oCookie) && this.oCookie.autoOpen) try { this.show() } catch (c) { } 
    }, initShowCaller: function () { RadioCanada.Lib.oSrc.oDebugger.initShow() }, initShow: function () { if (typeof this.oCookie !== "undefined") if ($defined(this.oCookie)) !this.isShow && this.oCookie.autoOpen && this.show(); else setTimeout(RadioCanada.Lib.oSrc.oDebugger.initShowCaller, 500) },
        show: function () {
            if (this.isShow) $("srcDebugger_container").style.display = "block"; else {
                this.isShow = true; document.body.appendChild(new Element("div", { id: "srcDebugger_container" })); $("srcDebugger_container").appendChild(new Element("a", { id: "srcDebugger_close", "class": "tabsTab srcDebugger_btn", href: "#", html: "X", onclick: "RadioCanada.Lib.oSrc.oDebugger.hide()" })); $("srcDebugger_container").appendChild(new Element("div", { id: "srcDebugger_tabs" })); $("srcDebugger_container").appendChild(new Element("div", { id: "srcDebugger_panels" }));
                this.oTabs = new classSrcTabs($("srcDebugger_tabs"), $("srcDebugger_panels")); for (var a = 0; a < this.aoTabs.length; a++) for (var b = 0; b < this.aoTabs[a].aLine.length; b++) this.writeLine(this.aoTabs[a].sId, this.aoTabs[a].aLine[b]); this.oTabs.activeFirstTab()
            } Cookie.write("srcDebugger", "{autoOpen:true}")
        }, writeLine: function (a, b) {
            $defined($(a + "TabContainer")) || this.oTabs.addTab(a, a, new Element("span", { html: a }), null); if ($(a + "PanelContainer").innerHTML == "") {
                var c = new Element("a", { html: "Efacer l'onglet", href: "#", events: { click: function () { RadioCanada.Lib.oSrc.oDebugger.clearTab(this._tabsId) } } });
                c._tabsId = a; var d = new Element("div", { "class": "srcDebugger_btn" }); d.appendChild(new Element("b", { html: "&nbsp;" })); d.appendChild(c); $(a + "PanelContainer").appendChild(d)
            } $(a + "PanelContainer").appendChild(new Element("p", { html: b }))
        }, hide: function () { $("srcDebugger_container").style.display = "none"; Cookie.write("srcDebugger", "{autoOpen:false}") }, clearAll: function () { for (var a = 0; a < this.aoTabs.length; a++) this.clearTab(this.aoTabs[a].sId) }, clearTab: function (a) { $(a + "PanelContainer").innerHTML = "" } 
    }, alert: function (a,
b) { this.oDebugger.add(a, b) }, aCrossDomainAjaxInstance: [], crossDomainAjax: function (a, b) {
    var c = a; if ($defined(b) && $defined(b.onSucceed)) { c += c.indexOf("?") == -1 ? "?" : "&"; c += "onSucceed=" + b.onSucceed } if ($defined(b) && $defined(b.onFailed)) { c += c.indexOf("?") == -1 ? "?" : "&"; c += "onFailed=" + b.onFailed } if (!a.contains("http://www2.smartadserver.com")) { c += c.indexOf("?") == -1 ? "?" : "&"; c += "cdaId=" + this.aCrossDomainAjaxInstance.length } if ($defined(b) && $defined(b.oParam)) { c += c.indexOf("?") == -1 ? "?" : "&"; c += "oParam=" + JSON.encode(b.oParam) } if (typeof b ===
"undefined") b = {}; if (typeof b.oParam === "undefined") b.oParam = null; var d = $defined(b) && $defined(b.timeout) ? b.timeout : 6E3; document.getElementsByTagName("head")[0].appendChild(new Element("script", { id: "cda" + this.aCrossDomainAjaxInstance.length, type: "text/javascript", language: "javascript", src: c })); this.aCrossDomainAjaxInstance.push(setTimeout("oSrc.crossDomainAjaxFailed(" + this.aCrossDomainAjaxInstance.length + ",\t 'Probl\ufffdme de chargement ou script sans fonction  callback id=" + this.aCrossDomainAjaxInstance.length +
"', \"" + b.onFailed + "\", '" + JSON.encode(b.oParam) + "')", d)); this.alert("crossDomainAjax", "crossDomainAjaxCall : <a href='" + c + "' target='_blank'>" + c + "</a>")
}, crossDomainAjaxSucceed: function (a, b, c, d) { try { this.alert("crossDomainAjax", "crossDomainAjaxSucceed(" + JSON.encode(b) + ")") } catch (e) { this.alert("crossDomainAjax", "crossDomainAjaxSucceed(" + b + ")") } $defined(c) && c(b, d); clearTimeout(RadioCanada.Lib.oSrc.aCrossDomainAjaxInstance[a]); try { document.head.removeChild($("cda" + a)) } catch (g) { } }, crossDomainAjaxFailed: function (a,
b, c, d) { this.alert("crossDomainAjax", "crossDomainAjaxFailed(" + b + ")"); $defined(c) && c != "undefined" ? eval(c + '("' + b + "\", '" + d.replaceAll("'", "\\'") + "')") : RadioCanada.Lib.oSrc.alert("crossDomainAjax", "Timeout cdId=" + a); try { document.head.removeChild($("cda" + a)) } catch (e) { } }, oTTxt: { trace: function (a) { RadioCanada.Lib.oSrc.alert("taille Texte", a) }, toggle: function (a) {
    this.trace("oTTxt.changeTextPlusMoins(" + a + ")"); this.trace("Cookie contient : " + Cookie.read("srcTailleTexte")); switch (Cookie.read("srcTailleTexte")) {
        case null: a ==
"plus" && this.setSizeStyleSheet("T1"); break; case "0": a == "plus" && this.setSizeStyleSheet("T1"); break; case "T1": a == "plus" ? this.setSizeStyleSheet("T2") : this.setSizeStyleSheet("0"); break; case "T2": a == "moins" && this.setSizeStyleSheet("T1"); break; default: 
    } 
}, setSizeStyleSheet: function (a) {
    this.trace("oTTxt.setSizeStyleSheet(" + a + ")"); if (a == "0") { $("T1").disabled = true; $("T2").disabled = true } else if (a == "T1") { $("T1").disabled = false; $("T2").disabled = true } else if (a == "T2") { $("T1").disabled = true; $("T2").disabled = false } this.trace("\ufffdcrit dans le cookie la valeur :" +
a); Cookie.write("srcTailleTexte", a)
}, setText: function () { RadioCanada.Lib.oSrc.oTTxt.setTxt() }, setTxt: function () { if ($("T1") && $("T2")) { this.trace("oTTxt.setTxt()"); var a = Cookie.read("srcTailleTexte"); a == null ? this.setSizeStyleSheet("0") : this.setSizeStyleSheet(a) } } 
}, oPlusX: { trace: function (a) { RadioCanada.Lib.oSrc.alert("plusX", a) }, currentShare: null, aShareSite: [{ isFirstLine: true, needShortUrl: false, name: "Courriel", url: "http://www.radio-canada.ca/util/postier/suggerer.asp?sURL=@@url@@&sTitre=@@titre@@", width: 450,
    height: 500
}, { isFirstLine: true, needShortUrl: false, name: "Facebook", url: "http://www.facebook.com/sharer.php?u=@@url@@&t=@@titre@@", width: 500, height: 580 }, { isFirstLine: false, needShortUrl: false, name: "Delicious", url: "http://del.icio.us/post?v=2&url=@@url@@&title=@@titre@@", width: 880, height: 580 }, { isFirstLine: false, needShortUrl: false, name: "Google", url: "http://www.google.com/bookmarks/mark?op=add&bkmk=@@url@@&title=@@titre@@", width: 780, height: 580 }, { isFirstLine: false, needShortUrl: false, name: "Technorati", url: "http://technorati.com/cosmos/search.html?url=@@url@@&title=@@titre@@",
    width: 1024, height: 580
}, { isFirstLine: false, needShortUrl: false, name: "Digg", url: "http://digg.com/remote-submit?phase=2&url=@@url@@&title=@@titre@@", width: 500, height: 580 }, { isFirstLine: false, needShortUrl: false, name: "Ping", url: "http://ping.fm/ref/?link=@@url@@&title=@@titre@@", width: 780, height: 580 }, { isFirstLine: false, needShortUrl: false, name: "Reddit", url: "http://reddit.com/submit?url=@@url@@&title=@@titre@@", width: 780, height: 580}], share: function (a) {
    var b = document; a = typeof a === "string" ? { shareSite: a} : a; if (typeof a.oPageInfo ===
"undefined") a.oPageInfo = {}; if (typeof a.oPageInfo.url === "undefined") { this.trace("Redefined 1 : " + b.location.href); a.oPageInfo.url = b.location.href; this.trace("Redefined 2 : " + a.oPageInfo.url) } if (typeof a.oPageInfo.titre === "undefined") a.oPageInfo.titre = b.title; this.trace("share url = " + a.oPageInfo.url); this.trace("share titre = " + a.oPageInfo.titre); for (b = this.aShareSite.length - 1; b >= 0; b--) if (this.aShareSite[b].name == a.shareSite) {
        this.currentShare = this.aShareSite[b]; this.oCurrentP = a; this.aShareSite[b].needShortUrl ||
this.doShare()
    } 
}, getShortUrlCB: function (a) { RadioCanada.Lib.oSrc.oPlusX.trace("urlShort = " + a); if (a != null && typeof a !== "undefined") { this.currentShare.oPageInfo.url = a; RadioCanada.Lib.oSrc.oPlusX.doShare() } else this.trace("getShortUrlCB erreur") }, doShare: function () {
    var a = this.oCurrentP, b = this.currentShare.url.replace("@@url@@", encodeURIComponent(a.oPageInfo.url)); b = this.currentShare.name == "Facebook" ? b.replace("@@titre@@", encodeURIComponent(a.oPageInfo.titre)) : b.replace("@@titre@@", escape(a.oPageInfo.titre));
    this.trace("share : url = " + b); window.open(b, "partage", "toolbar=no,directories=no,status=no,menubar=no,scrollbars=yes,history=no,resizable=yes,width=" + this.currentShare.width + ",height=" + this.currentShare.height); this.logStat(a.shareSite, 2, a.oPageInfo)
}, logVue: function () { typeof src_isDocument !== "undefined" && RadioCanada.Lib.oSrc.oPlusX.logStat("vue", 1) }, logStat: function (a, b, c) {
    function d(h, k) { return f(e(h) ? e(h) : k) } function e(h) {
        for (var k = document.getElements("meta"), o = 0; o < k.length; o++) if (k[o].name.toLowerCase() ==
h.toLowerCase()) return f(k[o].content); return ""
    } function g() { var h = window.location.href; return h.indexOf(".asp") != -1 ? h : h.split("?")[0].split("#")[0] } function f(h) { return RadioCanada.Lib.oSrc.htmlEncode(h) } if (typeof c === "undefined") c = { url: g(), titre: f(document.title) }; var l = window, n = g(); a = { id: "pp" + Math.round(Math.random() * 1E6), url: c.url, titre: c.titre, titreCourt: d("src.titreCourt", ""), surtitre: d("src.surtitre", ""), description: d("src.description", e("Description")), zone: d("src.zone", l.location.href.split("/")[3]),
        categorie: d("src.categorie", l.location.href.split("/")[4]), dateDocument: d("src.date.created", e("dc.date.created")), keywords: d("src.keywords", e("keywords")), type: d("src.type", "autre"), partagerPar: a, vue: $defined(b) ? b : 1
    }; if (d("src.description", "") == "" || d("src.categorie", "") == "" || d("src.zone", "") == "") statsToClics("WT.clic", "clics_statprod", "clic_action", "metas non complet", "clic_contenu", ""); if (n.indexOf("radio-canada.dev") != -1 || n.indexOf("localhost") != -1 || n.indexOf("blogues.radio-canada.ca") != -1 || n.indexOf("carnets.radio-canada.ca") !=
-1 || n.indexOf("ghtml.radio-canada.ca") != -1 || n.indexOf("msnscache.com") != -1 || n.indexOf("/search?q=cache:") != -1) a.vue += 100; if (a.zone == "nouvelles" || a.zone == "regions") a.zone = "information"; this.trace(JSON.encode(a)); RadioCanada.Lib.oSrc.crossDomainAjax("http://www.radio-canada.ca/utilitaires/PlusPartager/LogPlusPartager2.ashx?obj=" + encodeURIComponent(JSON.encode(a)))
}, aContainer: [], nInstanceCount: 0, ObjAsString: function (a) {
    var b = 0, c = 0, d = "{"; for (prop in a) c++; for (prop in a) {
        var e = a[prop]; e = typeof e == "string" ?
"'" + e.replace(/'/g, "\\'") + "'" : e; d += prop + ":" + e; b++; if (b != c) d += ", "
    } d += "}"; return d
}, returnBarPartage: function (a, b) { var c = typeof b === "string" ? { sUI: b} : b, d = typeof c.id !== "undefined" ? c.id : this.nInstanceCount, e = typeof c.id !== "undefined" ? "uid-" + c.id : d; this.trace("returnBarPartage() : _oConfig = " + c); $(a).innerHTML = '<div id="srcBo-' + d + '" class="srcBoContainer srcBo-' + e + '"></div>'; this.fillBarPartage(b) }, writeBarPartage: function (a) {
    var b = typeof a === "string" ? { sUI: a} : a, c = typeof b.id !== "undefined" ? b.id : this.nInstanceCount;
    document.write('<div id="srcBo-' + c + '" class="srcBoContainer srcBo-' + (typeof b.id != "undefined" ? "uid-" + b.id : c) + '"></div>'); this.fillBarPartage(a)
}, fillBarPartage: function (a) {
    var b = typeof a === "string" ? { sUI: a} : a, c = this.ObjAsString(b), d = typeof b.id !== "undefined" ? b.id : this.nInstanceCount, e = typeof b.id !== "undefined" ? "uid-" + b.id : d, g = {}; this.nInstanceCount++; g.divContainer = $("srcBo-" + d); g.divBarPartager = new Element("div", { "class": "srcBoPtg" + (typeof b.cssClass !== "undefined" ? " " + b.cssClass : "") }); g.divContainer.appendChild(g.divBarPartager);
    g.divFeatureLeft = new Element("div", { "class": "l" }); g.divBarPartager.appendChild(g.divFeatureLeft); if (b.sUI != "bottom" && typeof e !== "undefined") { g.btnCommenter = new Element("a", { href: typeof a.url !== "undefined" ? a.url + "#commenter" : "#commenter", "class": "comment commentHide" }); g.btnCommenter._id = d; g.divFeatureLeft.appendChild(g.btnCommenter) } e = "RadioCanada.Lib.oSrc.oPlusX.toggleBarPartage('" + d + "', " + c + " );"; var f = function () { RadioCanada.Lib.oSrc.oPlusX.toggleBarPartage(d, b); return false }; try {
        if (typeof a.onClick !==
"undefined") { e += "try{" + a.onClick + "; }catch(e){}"; f = function () { RadioCanada.Lib.oSrc.oPlusX.toggleBarPartage(d, b); try { eval(a.onClick) } catch (k) { } return false } } 
    } catch (l) { } e.replace(/"/g, '\\"'); var n = null; n = null; var h = ""; n = typeof a.isAjax !== "undefined" && a.isAjax == "1" ? { id: "SrcBtnPrtg" + d, href: "javascript:" + e, "class": "btnPartager", html: "Partager"} : { id: "SrcBtnPrtg" + d, href: "javascript:;", "class": "btnPartager", html: "Partager", events: { click: f} }; g.btnPartager = new Element("a", n); g.divFeatureLeft.appendChild(g.btnPartager);
    for (e = 0; e < this.aShareSite.length; e++) if (this.aShareSite[e].isFirstLine) {
        h = this.aShareSite[e].name; if (typeof a.isAjax !== "undefined" && a.isAjax == "1") n = { href: "javascript:RadioCanada.Lib.oSrc.oPlusX.share({'shareSite':'" + h + "','oPageInfo':" + c + "});", html: "<span>" + h + "</span>", "class": h.toLowerCase() + " ico" }; else { n = function () { RadioCanada.Lib.oSrc.oPlusX.share({ shareSite: this._sName, oPageInfo: b }); return false }; n = { href: "javascript:;", html: "<span>" + h + "</span>", "class": h.toLowerCase() + " ico", events: { click: n}} } _tmpA =
new Element("a", n); _tmpA._sName = this.aShareSite[e].name; g.divFeatureLeft.appendChild(_tmpA)
    } g.divFeatureRight = new Element("div", { "class": "r" }); g.divBarPartager.appendChild(g.divFeatureRight); c = typeof b.withIconeTaille === "undefined" ? true : b.withIconeTaille; if (b.sUI == "top" && $("T1") && $("T2") && c == true) {
        n = { "class": "tailleText ttMoins", href: "javascript:RadioCanada.Lib.oSrc.oTTxt.toggle('moins');" }; g.aTTMoins = new Element("a", n); g.divFeatureRight.appendChild(g.aTTMoins); n = { "class": "tailleText ttPlus", href: "javascript:RadioCanada.Lib.oSrc.oTTxt.toggle('plus');" };
        g.aTTPlus = new Element("a", n); g.divFeatureRight.appendChild(g.aTTPlus)
    } else if (b.sUI == "bottom") { g.aTop = new Element("a", { "class": "hautPage", href: "#top", html: "Haut de page" }); g.divFeatureRight.appendChild(g.aTop) } c = typeof b.withIconeImpression === "undefined" ? true : b.withIconeImpression; if (window.print && (b.sUI == "top" || b.sUI == "bottom") && c == true) { g.aPrint = new Element("a", { "class": "print", href: "javascript:window.print();", html: "Imprimer" }); g.divFeatureRight.appendChild(g.aPrint) } g.divContainer._oHtml = g; this.aContainer[d] =
g; b.sUI == "bottom" && RadioCanada.Lib.oSrc.oPlusX.toggleBarPartage(d)
}, toggleBarPartage: function (a, b) {
    var c = ""; c = this.ObjAsString(b); var d = RadioCanada.Lib.oSrc.oPlusX.aContainer[a]; d.divContainer = $("srcBo-" + a); this.trace("toggleBarPartage(" + a + ")"); if (!$defined(d.divSrcBoPtgiLst)) {
        d.divSrcBoPtgiLst = new Element("div", { "class": "srcBoPtgiLst" }); d.divContainer.appendChild(d.divSrcBoPtgiLst); d.divListePanneau = new Element("div", { "class": "listePanneau boPannel" }); d.divSrcBoPtgiLst.appendChild(d.divListePanneau);
        var e = null; e = e = null; for (var g = "", f = 0; f < this.aShareSite.length; f++) {
            g = this.aShareSite[f].name; if ($defined(b) && $defined(b.isAjax) && b.isAjax == "1") e = { href: "javascript:RadioCanada.Lib.oSrc.oPlusX.share({'shareSite':'" + g + "','oPageInfo':" + c + "});", "class": g.toLowerCase(), html: g + "&nbsp;&raquo;" }; else { e = function () { RadioCanada.Lib.oSrc.oPlusX.share({ shareSite: this._sName, oPageInfo: b }); return false }; e = { href: "javascript:;", "class": g.toLowerCase(), html: g + "&nbsp;&raquo;", events: { click: e}} } e = new Element("a", e); e._sName =
this.aShareSite[f].name; d.divListePanneau.appendChild(e)
        } d.aAide = new Element("a", { href: "javascript:RadioCanada.Lib.oSrc.oPlusX.toggleHelp('" + a + "');", "class": "btnAide" }); d.divSrcBoPtgiLst.appendChild(d.aAide)
    } d.divContainer.toggleClass("srcBoContainerOpen"); $("SrcBtnPrtg" + a).className = d.divContainer.className.indexOf("srcBoContainerOpen") == -1 ? "btnPartager" : "btnPartager docActif"
}, toggleHelp: function (a) {
    var b = RadioCanada.Lib.oSrc.oPlusX.aContainer[a]; this.trace("toggleHelp(" + a + ")"); if (!$(b.divPanelAide)) {
        b.divPanelAide =
new Element("div", { "class": "pannelAide boPannel" }); b.divPanelAide.innerHTML = "<b>Le partage de signets</b><br/>Le partage de signets permet d'archiver, d'organiser et, bien s&ucirc;r de partager des signets (ou favoris) de pages Web. Il suffit de sauvegarder les liens des pages  Web  que l'on veut retrouver facilement ou partager. Cliquez sur un de ces liens pour ajouter notre article &agrave; votre liste. L'acc&egrave;s aux sites propos&eacute;s est gratuit, mais vous devez &ecirc;tre inscrit."; b.divSrcBoPtgiLst.appendChild(b.divPanelAide)
    } b.divPanelAide.hasClass("open") ?
b.divPanelAide.removeClass("open") : b.divPanelAide.addClass("open")
}, showCommentBtn: function (a) {
    this.trace("showCommentBtn(" + a + ")"); if (typeof a === "undefined") a = {}; if (typeof a.label === "undefined") a.label = "Commenter"; for (var b = document.getElements("div[class^=srcBoContainer]"), c = 0; c < b.length; c++) if (typeof b[c]._oHtml.btnCommenter !== "undefined") {
        this.trace("hasClass('srcBo-uid-" + a.uid + ") = " + b[c].hasClass("srcBo-uid-" + a.uid)); if (typeof a.uid === "undefined" || b[c].hasClass("srcBo-uid-" + a.uid)) {
            b[c]._oHtml.btnCommenter.innerHTML =
a.label + (a.n == 0 || a.n == null || a.n == "undefined" ? "" : "&nbsp;(" + a.n + ")") + "&nbsp;&raquo;"; b[c]._oHtml.btnCommenter.removeClass("commentHide")
        } 
    } 
} 
}, htmlEncode: function (a) {
    var b = [["\ufffd", "&Egrave;"], ["\ufffd", "&Eacute;"], ["\ufffd", "&eacute;"], ["\ufffd", "&egrave;"], ["\ufffd", "&Agrave;"], ["\ufffd", "&agrave;"], ["\ufffd", "&ccedil;"], ["\ufffd", "&Ccedil;"], ["\ufffd", "&euml;"], ["\ufffd", "&Euml;"], ["\ufffd", "&Igrave;"], ["\ufffd", "&igrave;"], ["\ufffd", "&ugrave;"], ["\ufffd", "&Ucirc;"], ["\ufffd", "&ucirc;"], ["\ufffd",
"&Ugrave;"], ["\ufffd", "&Ograve;"], ["\ufffd", "&ograve;"], ["\ufffd", "&ocirc;"], ["\ufffd", "&ecirc;"], ["\ufffd", "&Ocirc;"], ["\ufffd", "&Iuml;"], ["\ufffd", "&iuml;"], ["\ufffd", "&acirc;"], ["\ufffd", "&Acirc;"], ["\ufffd", "&aelig;"], ["\ufffd", "&aelig;"], ["\ufffd", "&#339;"]]; if (typeof a !== "undefined") for (var c = b.length - 1; c >= 0; c--) { do a = a.replace(b[c][0], b[c][1]); while (a.indexOf(b[c][0]) != -1) } return a
}, checkVersion: function (a) {
    if (typeof src_global_ver !== "undefined") {
        var b = src_global_ver.split("."); a = a.split(".");
        for (var c = 0; c < b.length && c < a.length; c++) { if (b[c] > a[c]) return true; if (b[c] < a[c]) return false } return true
    } return false
}, END: 1
}; RadioCanada.Lib.oSrc.addOnLoad(RadioCanada.Lib.oSrc.oDebugger.initShowCaller); RadioCanada.Lib.oSrc.addOnLoad(RadioCanada.Lib.oSrc.oTTxt.setText); RadioCanada.Lib.oSrc.addOnLoad(RadioCanada.Lib.oSrc.loadMenu); RadioCanada.Lib.oSrc.addOnLoad(function () { setTimeout(RadioCanada.Lib.oSrc.oPlusX.logVue, 300) }); RadioCanada.Lib.oSrc.addOnLoad(RadioCanada.Lib.oSrc.loadPub);
if (document.location.host.indexOf("radio-canada.") != -1) { var isn_sDomainExtention; isn_sDomainExtention = document.location.host.indexOf(".dev") != -1 ? "dev" : document.location.host.indexOf(".pp") != -1 ? "pp" : "ca"; document.domain = "radio-canada." + isn_sDomainExtention } String.prototype.replaceAll = function (a, b) { for (var c = this; c.contains(a); ) c = c.replace(a, "@@replaceHere@@"); for (; c.contains("@@replaceHere@@"); ) c = c.replace("@@replaceHere@@", b); return c };
function classSrcTabs(a, b) { this.tabs = []; this.tabContainer = a; this.panelContainer = b; this.addTab = function (c, d, e, g) { this.tabs[this.tabs.length] = new classSrcTab(this, this.tabs.length, c, d, e, g); return this.tabs[this.tabs.length - 1] }; this.activeFirstTab = function () { $defined(this.tabs[0]) && this.tabs[0].activeTab() }; this.activeTab = function (c) { this.tabs[c].activeTab() } }
function classSrcTab(a, b, c, d, e, g) {
    this.parent = a; this.id = b; this.strId = c; this.lbl = d; this.tabContent = e; this.isActive = this.firstLoad = false; this.initFunction = g; (function (f) { f.a = new Element("a", { href: "#", id: f.strId + "TabContainer", "class": "tabsTab" }); f.parent.tabContainer.appendChild(f.a); f.a._parent = f; f.a.onclick = function () { this._parent.activeTab(); return false }; f.a.appendChild(f.tabContent) })(this); this.divPanel = new Element("div", { id: this.strId + "PanelContainer", "class": "tabsPanel" }); this.parent.panelContainer.appendChild(this.divPanel);
    this.activeTab = function () { if (this.isActive == false) { this.isActive = true; this.firstLoad || this.loadContent(); this.a.addClass("active"); this.divPanel.style.display = "block"; for (var f = 0; f < this.parent.tabs.length; f++) this.parent.tabs[f] != this && this.parent.tabs[f].desactiveTab() } }; this.desactiveTab = function () { this.isActive = false; this.a.removeClass("active"); this.divPanel.style.display = "none" }; this.loadContent = function () { this.firstLoad = true; this.initFunction && this.initFunction(this.divPanel) } 
}
var domReady = false; DOM_addEvent(window, "domready", function () { domReady = true }); DOM_addEvent(document, "keypress", srcDebugger_trapKeyPress); var strActivateDebug; function srcDebugger_trapKeyPress(a) { var b; if (window.event) b = a.keyCode; else if (a.which) b = a.which; if (b == 45) strActivateDebug = ""; else strActivateDebug += b + ";"; strActivateDebug == "115;114;99;49;52;48;48;" && RadioCanada.Lib.oSrc.oDebugger.show(); strActivateDebug == "78;65;78;" && oSrc.oDebugger.clearAll() }
function DOM_addEvent(a, b, c) { if (a.addEventListener) { a.addEventListener(b, c, false); return true } else return a.attachEvent ? a.attachEvent("on" + b, c) : false } function popup(a, b, c) { oSrc.popup(a, b, c) } function request(a) { return oSrc.queryString(a) }
function setStyle(a, b) { oSrc.alert("divers", "setStyle(" + a + ", " + b + ")"); var c = JSON.decode(b); for (att in c) if ((a == "blockFlashObj" || a == "blockFlashObjSoccer" || a == "blockFlashObjFIFA") && Browser.Engine.trident != true && Browser.Engine.gecko != true) $(a).getParent().tween(att, c[att]); else try { ($(a).tagName == "OBJECT" ? $(a).getChildren("embed") : $(a)).setStyle(att, c[att] + "px") } catch (d) { if (att == "height") $(a).style.height = c[att]; if (att == "width") $(a).style.width = c[att] } } RadioCanada.Mod.SRCNav = {};
RadioCanada.Mod.SRCNav.oNav = { isVersionDropMenu: true, nZindex: 9E3, isHover: 0, CT: function (a) { typeof CT !== "undefined" && CT(a); statsToClics("clic_action", a, "WT.ti", a, "WT.clic", "clics_navBar") }, browserFix: function () { Browser.Platform.mac && Browser.Engine.gecko && $$("#src_nav ul.niv2 li").each(function (a) { var b = a.childNodes[0]; b.style.display = "none"; a.setProperty("onclick", "javascript:document.location.href='" + b.href + "';"); a.innerHTML += "<span class='off'>" + b.innerHTML + "</span>" }) }, autoLoadMenuGenerique: function () {
    for (var a =
4; ; a++) if ($defined($("SRCNav-" + a)) == true) { eval("oSRCNav_" + a + ' = new RadioCanada.Mod.SRCNav.Menu("SRCNav-' + a + '",' + a + ");"); eval('$("SRCNav-' + a + '").addEvents({mouseover:function() { oSRCNav_' + a + ".setIsStayOpen() },mouseout: function() { oSRCNav_" + a + ".delayCloseMenu(); } });"); eval('$("SRCNav-' + a + '-Btn").addEvents({mouseover:function() { oSRCNav_' + a + ".openMenu() },mouseout: function() { oSRCNav_" + a + ".delayCloseMenu(); } });") } else break
}, autoLoadMenuGeneriqueAjax: function () {
    for (var a = 1; ; a++) if ($defined($("SRCNav-Ajax-" +
a)) == true) { eval("oSRCNav_Ajax_" + a + ' = new RadioCanada.Mod.SRCNav.Menu("SRCNav-Ajax-' + a + '",' + a + ");"); eval('$("SRCNav-Ajax-' + a + '").addEvents({mouseover:function() { oSRCNav_Ajax_' + a + ".setIsStayOpen() },mouseout: function() { oSRCNav_Ajax_" + a + ".delayCloseMenuAjax(); } });"); eval('$("SRCNav-Ajax-' + a + '-Btn").addEvents({mouseout: function() { oSRCNav_Ajax_' + a + ".delayCloseMenuAjax(); } });") } else break
}, getZoneRecherche: function () {
    var a = window, b = function (c) {
        var d = false; if (a.location.href.toLowerCase().indexOf(c) !=
-1) d = true; return d
    }; _sZone = b("/radio") ? "-Radio" : b("/television") ? "-Television" : b("/nouvelles") ? "-Nouvelles" : b("/sports") ? "-Sports" : b("/arts-spectacles") ? "-Culture" : b("/jeunesse") ? "-Jeunesse" : b("/regions") ? "-Regions" : b("/archives") ? "-Archives" : ""; return "RadioCanada" + _sZone
}, submitRecherche: function (a, b) {
    var c = "q" + (b === true ? "2" : ""), d = "site" + (b === true ? "2" : ""); if ($(c).value === "Recherche" || $(c).value === "") return false; a[d].value = this.getZoneRecherche(); c = null; d = ""; var e = 0; do d = c.name + "=" + c.value; while (c =
a.elements[e++]); window.location.href = "http://www.radio-canada.ca/apropos/aide/outil/index.asp?" + d
}, END: 1
}; RadioCanada.Mod.SRCNav.Menu = function (a, b) { this.sItemId = a; this.nInstance = b };
RadioCanada.Mod.SRCNav.Menu.prototype = { constructor: RadioCanada.Mod.SRCNav.Menu, isUseTrace: 1, sItemId: null, nInstance: null, sMenuStatus: "closed", isStayOpen: 0, oFxSlide: null, isInit: 0, oNav: RadioCanada.Mod.SRCNav.oNav, openMenu: function () {
    var a = $(this.sItemId); this.sMenuStatus = "opened"; if (this.oNav.isVersionDropMenu) { this.setStateOpenMenu(); this.oNav.isHover = 1; this.browserFix() } this.setIsStayOpen(); this.trace("call openMenu(): "); this.oFxSlide === null && this.oNav.isVersionDropMenu && this.createFxSlideObj(); if (!this.isInit) {
        this.isInit =
1; if (this.oNav.isVersionDropMenu) { a.style.position = "relative"; a.style.margin = "-171px 0px 0px"; a.style.display = "block" } this.trace("margin target div:" + $(this.sItemId).style.margin)
    } this.oNav.isVersionDropMenu ? this.oFxSlide.slideIn() : $(this.sItemId).fade(0.1, 1)
}, openMenuAjax: function (a) { idElement = this.sItemId; thisTMP = this; (new Request.HTML({ url: a, method: "get", onSuccess: function (b) { $(idElement).set("text", ""); $(idElement).adopt(b); thisTMP.openMenu() }, onFailure: function () { alert("failed call ajax") } })).send() },
    delayCloseMenuAjax: function () { this.setIsStayOpen(0); this.oNav.isHover = 0; setTimeout("oSRCNav_Ajax_" + this.nInstance.toString() + ".doCloseMenu()", 300) }, delayCloseMenu: function () { this.setIsStayOpen(0); this.oNav.isHover = 0; setTimeout("oSRCNav_" + this.nInstance.toString() + ".doCloseMenu()", 300) }, setIsStayOpen: function (a) { this.isStayOpen = typeof a === "undefined" ? true : a }, trace: function (a) { this.isUseTrace && RadioCanada.Lib.oSrc.alert(this.sItemId, a) }, createFxSlideObj: function () {
        this.oFxSlide = new Fx.Slide(this.sItemId,
{ mode: "vertical", duration: 200 }); this.oFxSlide.parentScope = this
    }, setStateOpenMenu: function () { this.oNav.nZindex += 10; $(this.sItemId + "-LI").style.zIndex = this.oNav.nZindex; $(this.sItemId + "-Btn").className += " actif" }, setStateCloseMenu: function () { $(this.sItemId + "-Btn").className = $(this.sItemId + "-Btn").className.split(" actif")[0] }, closeMenu: function () {
        this.sMenuStatus = "closed"; if (this.oNav.isVersionDropMenu) { this.setStateCloseMenu(); this.oNav.isHover || this.browserFix() } this.trace("call closeMenu()"); this.oFxSlide ===
null && this.oNav.isVersionDropMenu && this.createFxSlideObj(); this.oNav.isVersionDropMenu ? this.oFxSlide.slideOut() : $(this.sItemId).fade(1, 0)
    }, doCloseMenu: function () { this.isStayOpen || this.closeMenu() }, browserFix: function () { if (Browser.Platform.win && Browser.Engine.trident) { var a = this; $$(document.getElementsByTagName("select")).each(function (b) { b.style.visibility = a.sMenuStatus == "opened" ? "hidden" : "visible" }) } }, END: 1
}; oSrc.addOnLoad(RadioCanada.Mod.SRCNav.oNav.browserFix); oSrc.addOnLoad(RadioCanada.Mod.SRCNav.oNav.autoLoadMenuGenerique);
oSrc.addOnLoad(RadioCanada.Mod.SRCNav.oNav.autoLoadMenuGeneriqueAjax); var oSRCNav_1 = new RadioCanada.Mod.SRCNav.Menu("SRCNav-Zones", 1), oSRCNav_2 = new RadioCanada.Mod.SRCNav.Menu("SRCNav-Info", 2), oSRCNav_3 = new RadioCanada.Mod.SRCNav.Menu("SRCNav-Chaines", 3), sas_tmstp = Math.round(Math.random() * 1E10), sas_masterflag = 1;
function getSmartFormat(a) {
    a *= 1; switch (a) {
        case 1841: a = { _w: 728, _h: 90, isJs: false }; break; case 1839: a = { _w: 300, _h: 250, isJs: false }; break; case 1846: a = { _w: 424, _h: 60, isJs: false }; break; case 1840: a = { _w: 160, _h: 600, isJs: false }; break; case 1847: a = { _w: 1E3, _h: 70, isJs: false }; break; case 3508: a = { _w: 104, _h: 60, isJs: false }; break; case 3542: a = { _w: 104, _h: 60, isJs: false }; break; case 4760: a = { _w: 502, _h: 100, isJs: false }; break; case 2639: a = { _w: 300, _h: 400, isJs: false }; break; case 5320: a = { _w: 300, _h: 500, isJs: false }; break; case 5321: a = { _w: 300,
            _h: 250, isJs: false
        }; break; default: a = { _w: 1, _h: 1, isJs: true }; break
    } a._smartSize = a._w + "x" + a._h; return a
} function SmartAdServer_iframe(a, b, c) { c = RadioCanada.Mod.oPub.SmartAdServer_motsCles(c); if (b == 1847) { SmartAdServer_noiframe(a, b, c); return false } typeof isNotV3 !== "undefined" ? document.write(getPubSmart(a, b, c)) : document.write('<div id="' + a + "-" + b + '-1" class="smartAd"></div>') }
function getSmartAdServer_iframe(a, b, c) { oSrc.alert("Pub", " onPageLoad format " + b + " is loading " + (new Date).getSeconds() + ":" + (new Date).getMilliseconds()); c = RadioCanada.Mod.oPub.SmartAdServer_motsCles(c); return getPubSmart(a, b, c) }
function getPubSmart(a, b, c) {
    var d = getSmartFormat(b), e = ""; sas_master = sas_masterflag == 1 ? "M" : "S"; sas_masterflag = 0; if (d._smartSize == "728x90") e += '<div class="srcPubBg">'; e += '\t<div class="srcPub srcPub' + d._smartSize + '">'; e += '\t\t<iframe src="http://www2.smartadserver.com/call/pubif/' + a + "/" + b + "/" + sas_master + "/" + sas_tmstp + "/" + c + '?" width="' + d._w + '" height="' + d._h + '" marginwidth="0" marginheight="0" hspace="0" vspace="0" frameborder="0" scrolling="no"></iframe>'; e += "\t</div>"; if (d._smartSize == "728x90") e +=
"</div>"; return e
} function SmartAdServer_noiframe(a, b, c) { c = RadioCanada.Mod.oPub.SmartAdServer_motsCles(c); sas_master = sas_masterflag == 1 ? "M" : "S"; sas_masterflag = 0; document.write('<SCRIPT SRC="http://www2.smartadserver.com/call/pubj/' + a + "/" + b + "/" + sas_master + "/" + sas_tmstp + "/" + c + '?"><\/SCRIPT>') } function getSmartAdServer_LargeBox(a, b, c) { oSrc.alert("Pub", "SmartAdServer_LargeBox()"); sas_master = sas_masterflag == 1 ? "M" : "S"; sas_masterflag = 0; document.write(getLargeBox(a, b, c)) }
function getLargeBox(a, b, c) {
    b = ""; c = RadioCanada.Mod.oPub.SmartAdServer_motsCles(c); oSrc.alert("Pub", "getLargeBox()"); b += '<div class="srcPub srcPubLiensTextes" id="srcPubLiensTextes" style="display:none;"></div>'; oSrc.crossDomainAjax("http://www2.smartadserver.com/call/pubj/" + a + "/4502/" + sas_master + "/" + sas_tmstp + "/" + c); oSrc.crossDomainAjax("http://www2.smartadserver.com/call/pubj/" + a + "/4503/" + sas_master + "/" + sas_tmstp + "/" + c); oSrc.crossDomainAjax("http://www2.smartadserver.com/call/pubj/" + a + "/4504/" + sas_master +
"/" + sas_tmstp + "/" + c); return b
} function SmartAdServer_liensTextes(a, b, c) { oSrc.alert("pubTexte", "SmartAdServer_liensTextes()"); sas_master = sas_masterflag == 1 ? "M" : "S"; sas_masterflag = 0; document.write(getLiensTextes(a, b, c)) } function getSmartAdServer_liensTextes(a, b, c) { oSrc.alert("pubTexte", "getSmartAdServer_liensTextes()"); sas_master = sas_masterflag == 1 ? "M" : "S"; sas_masterflag = 0; return getLiensTextes(a, b, c) }
function getLiensTextes(a, b, c) {
    c = RadioCanada.Mod.oPub.SmartAdServer_motsCles(c); oSrc.alert("pubTexte", "getLiensTextes()"); b = ""; b += '<div class="srcPub srcPubLiensTextes" id="srcPubLiensTextes" style="display:none;"><ul id="srcPubLiensTextesUl" style="display:none;"></ul></div>'; oSrc.crossDomainAjax("http://www2.smartadserver.com/call/pubj/" + a + "/4502/" + sas_master + "/" + sas_tmstp + "/" + c); oSrc.crossDomainAjax("http://www2.smartadserver.com/call/pubj/" + a + "/4503/" + sas_master + "/" + sas_tmstp + "/" + c); oSrc.crossDomainAjax("http://www2.smartadserver.com/call/pubj/" +
a + "/4504/" + sas_master + "/" + sas_tmstp + "/" + c); return b
}
function srcPubLiensTextes(a) { oSrc.alert("pubTexte", "srcPubLiensTextes()"); if (typeof a === "object") if (!(typeof a.href === "undefined" & a.href == "")) if (!(typeof a.label === "undefined" & a.label == "")) { oSrc.alert("pubTexte", "_o.label = " + a.label); var b = $defined(a.alt) ? a.alt : "", c = $("srcPubLiensTextesUl"); c.innerHTML += '<li><a href="' + a.href + '" title="' + b + '" target="_blank">' + a.label + "</a></li>"; c.style.display = "block"; $("srcPubLiensTextes").style.display = "block" } }
RadioCanada.Lib.oSrc.oPub = RadioCanada.Mod.oPub = { SmartAdServer_motsCles: function (a) { oSrc.alert("pub", "SmartAdServer_motsCles " + isAcceptePubMotCle); if (typeof isAcceptePubMotCle !== "undefined" && isAcceptePubMotCle) a = this._obj2Str_keyValuePair(this.SmartAdServer_motsClesObj(), ";"); return a }, SmartAdServer_motsClesObj: function () {
    return { z: this._metaTagValue("src.zone"), s: this._metaTagValue("src.section"), ss: this._metaTagValue("src.pageSection"), e: this._metaTagValue("src.emission"), c: this._metaTagValue("src.categorie"),
        p: this._metaTagValue("src.pays"), t: this._metaTagValue("src.surtitre"), lien: this._urlEscape(location.href)
    } 
}, showPageTag: function () {
    alert(this._obj2Str_keyValuePair({ "zone (z) ": this._metaTagValue("src.zone"), "section (s) ": this._metaTagValue("src.section"), "pageSection (ss) ": this._metaTagValue("src.pageSection"), "emission (e) ": this._metaTagValue("src.emission"), "categorie (c) ": this._metaTagValue("src.categorie"), "pays (p) ": this._metaTagValue("src.pays"), "surtitre (t) ": this._metaTagValue("src.surtitre") },
"\n"))
}, _urlEscape: function (a) { a = a.substr(7); do a = a.replace(/\//, "%2F"); while (a.contains("/")); return a.split("?")[0].split("#")[0] }, _obj2Str_keyValuePair: function (a, b) { var c = ""; if (typeof a !== "undefined") for (var d in a) c += d + "=" + this._removeChar(a[d], "&\"'^@#") + b; return c }, _removeChar: function (a, b) { return a.replace(new RegExp("(" + b.replace(/(.)/g, "\\$1|") + "\\')", "g"), "_").replace(/ {2,}/g, "_") }, _parseString: function (a) {
    var b = "\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd :<>$?|".split(""),
c = "EeaAaAeEeEiIcCoO_______".split(""); a = this._removeChar(a, "&^@%#`|     ,"); for (var d = 0; d < b.length; d++) for (; a.contains(b[d]); ) a = a.replace(b[d], c[d]); return escape(a).substr(0, 70)
}, _metaTagValue: function (a) { var b = ""; $$("meta").each(function (c) { if (c.name == a) b = c.content }); return this._parseString(b) } 
};
var oSSO = RadioCanada.Mod.oSSO = { initialize: function () { }, oDocument: document, loggedIn: function () { if (this.extract_userID() != null && this.extract_DisplayName() != "anonymous") return true; return false }, extract_userID: function () { var a = this.getCrumb("at", "u"); if (a != null) return a; return null }, extract_DisplayName: function () { var a = this.getCrumb("at", "a"); if (a != null) return a; return null }, getCrumb: function (a, b) { var c = Cookie.read(a); if (c != null) { c = (new RegExp("(&|^)" + b + "=([^&]+)")).exec(c); if (c != null && c.length == 3) return c[2] } return null },
    contentLogin: function () {
        var a = "", b = $("loginSSO"); if (!b) return null; if (this.loggedIn()) { a = "<!-- Connect\ufffd --\>"; a += '<a href="https://mesabonnements.radio-canada.ca/Home.aspx?u=' + oSSO.extract_userID() + "&HasKey=1&redirecturl=" + window.location + '">' + oSSO.extract_DisplayName() + "</a>"; a += '<div class="src_login">'; a += '\t<a href="https://mesabonnements.radio-canada.ca/logout.aspx?redirecturl=' + window.location + '" class="signOut">Fermer la session</a>' } else {
            a = "<!-- D\ufffdconnect\ufffd --\>"; a += '<a href="https://inscription.radio-canada.ca/SSOAuthenticationDomain.ashx?mode=login&redirecturl=' +
window.location + '" class="ouvrir">Ouvrir une session</a>'; a += '<div class="src_login">'; a += '\t<a href="https://inscription.radio-canada.ca/SSOAuthenticationDomain.ashx?mode=login&redirecturl=' + window.location + '" class="signIn">Ouvrir une session</a>'
        } a += "</div>"; b.innerHTML = a
    }, drawLogin: function (a) {
        if (a = this.oDocument.getElementById("SSOForm-" + a)) {
            var b = ""; b += '<div id="loginSSO">'; b += '\t<a href="https://inscription.radio-canada.ca/SSOAuthenticationDomain.ashx?mode=login&redirecturl=' + window.location +
'" class="ouvrir">Ouvrir une session</a>'; b += '\t<div class="src_login">'; b += '\t\t<a href="https://inscription.radio-canada.ca/SSOAuthenticationDomain.ashx?mode=login&redirecturl=' + window.location + '" class="signIn">Ouvrir une session</a>'; b += "\t</div>"; b += "</div>"; a.innerHTML = b
        } 
    }, drawMonProfil: function () {
        var a = this.oDocument.getElementById("SSOMonProfil"); if (a) {
            var b = ""; b += '<div id="monProfilSSO">'; b += '\t<a href="https://inscription.radio-canada.ca/SSOAuthenticationDomain.ashx?mode=login&redirecturl=' +
window.location + '" class="ouvrir">Ouvrir une session</a>'; b += '\t<div class="src_login">'; b += '\t\t<a href="https://inscription.radio-canada.ca/SSOAuthenticationDomain.ashx?mode=login&redirecturl=' + window.location + '" class="signIn">Ouvrir une session</a>'; b += "\t</div>"; b += "</div>"; a.innerHTML = b
        } 
    }, contentMonProfil: function () {
        var a = this.oDocument.getElementById("monProfilSSO"), b = ""; if (this.loggedIn()) {
            b = "<!-- Version connecte  --\>"; b += '<h1 class="profil_connecte"><span>Mon profil</span></h1>'; b += ' <div class="blocContenu blocDemi">';
            b += "   <h2>Bonjour " + oSSO.extract_DisplayName() + "</h2>"; b += '   <p class="source">Vous &ecirc;tes actuellement connect&eacute; au site de Radio-Canada.ca.</p>'; b += '  \t<p>Si vous souhaitez fermer votre session, vous pouvez le faire en cliquant sur le bouton suivant. Vous pouvez aussi le faire en tout temps en cliquant sur l&rsquo;ic&ocirc;ne <img class="img_connection" src="/mesAbonnements/lib/v3.1/img/bt_deconnection.gif" alt="Visuel de l&rsquo;ic&ocirc;ne \ufffdFermer une session\ufffd se retrouvant dans la barre de navigation." title="Visuel de l&rsquo;ic&ocirc;ne \ufffdFermer une session\ufffd se retrouvant dans la barre de navigation." /> dans la barre de navigation du haut, &agrave; droite.</p>';
            b += '    <a href="https://mesabonnements.radio-canada.ca/logout.aspx?redirecturl=' + window.location + '" class="se_deconnecter"><span>Fermer une session</span></a>'; b += " </div>"; b += ' <div class="blocContenu blocDemi">'; b += "    <p>Si vous souhaitez modifier vos informations personnelles, cliquez sur le bouton suivant;"; b += "    Vous pouvez aussi avoir acc&egrave;s directement &agrave; votre profil en cliquant sur votre nom dans la barre de navigation du haut, &agrave; droite. </p>"; b += '    <a href="https://mesabonnements.radio-canada.ca/Home.aspx?u=' +
oSSO.extract_userID() + "&HasKey=1&redirecturl=" + window.location + '" class="modif_profil"><span>Modifier mon profil</span></a>'; b += "    <p>Si vous souhaitez consulter les commentaires que vous avez laiss&eacute;s, cliquez sur le bouton suivant. Vous pouvez aussi activer l&rsquo;option Facebook, qui permet de publier vos commentaires de Radio-Canada.ca sur votre profil personnel Facebook.</p>"; b += '    <a href="https://mesabonnements.radio-canada.ca/MemberComments.aspx?u=' + oSSO.extract_userID() + "&HasKey=1&redirecturl=" +
window.location + '" class="vos_commentaires"><span>Mes commentaires</span></a>'; b += " </div>"; b += " <!-- Fin Version connecte --\> "
        } else {
            b = "<!-- Version deconnecte ou non inscrit  --\>"; b += '<h1 class="profil"><span>Mon profil</span></h1>'; b += '  <div class="blocContenu blocIntro">'; b += "  <p>Bonjour,<br />"; b += "  En tant que membre de Radio-Canada.ca, vous pouvez en tout temps exprimer vos commentaires et partager votre opinion sur le site, recevoir nos cyberlettres et participer &agrave; nos activit&eacute;s interactives.</p>";
            b += "  </div>"; b += '  <div class="blocContenu blocDemi">'; b += "   \t<h2>Vous avez d&eacute;j&agrave; un compte?</h2>"; b += '     <p class="source">Vous n&rsquo;&ecirc;tes pas connect&eacute; au site de Radio-Canada.ca.</p>'; b += ' \t\t<p>Si vous poss&eacute;dez un compte et que vous souhaitez y acc&eacute;der, cliquez sur le bouton suivant. Vous pouvez aussi le faire en tout temps en cliquant sur l&rsquo;ic&ocirc;ne <img class="img_connection" src="/mesAbonnements/lib/v3.1/img/bt_connection.gif" alt="Visuel de l&rsquo;ic&ocirc;ne \ufffdOuvrir une session\ufffd se retrouvant dans la barre de navigation." title="Visuel de l&rsquo;ic&ocirc;ne \ufffdOuvrir une session\ufffd se retrouvant dans la barre de navigation." /> dans la barre de navigation du haut, &agrave; droite.</p>';
            b += '\t  <a href="https://inscription.radio-canada.ca/SSOAuthenticationDomain.ashx?mode=login&redirecturl=' + window.location + '" class="se_connecter"><span>Ouvrir une session</span></a>'; b += "   </div>"; b += '\t<div class="blocContenu blocDemi">'; b += "   \t<h2>Vous n&rsquo;avez pas de compte?</h2>"; b += "       <p>Si vous ne poss&eacute;dez pas de compte sur Radio-Canada.ca, cr&eacute;ez-en un en cliquant sur ce bouton. C&rsquo;est simple et rapide, vous n&rsquo;avez besoin que d&rsquo;une adresse courriel et de vous choisir un nom d&rsquo;utilisateur et un mot de passe. Vous pourrez y voir les commentaires que vous avez laiss&eacute;s sur le site, choisir vos abonnements aux diverses cyberlettres de Radio-Canada.ca et bien plus encore. </p>";
            b += '   \t<a href="https://mesabonnements.radio-canada.ca/Register.aspx?redirecturl=' + window.location + '" class="inscrivez_vous"><span>Cr&eacute;er un compte</span></a>'; b += '       <p>Une fois votre compte cr&eacute;&eacute;, vous pourrez utiliser l&rsquo;ic&ocirc;ne <img class="img_connection" src="/mesAbonnements/lib/v3.1/img/bt_connection.gif" alt="Visuel de l&rsquo;ic&ocirc;ne \ufffdOuvrir une session\ufffd se retrouvant dans la barre de navigation." title="Visuel de l&rsquo;ic&ocirc;ne \ufffdOuvrir une session\ufffd se retrouvant dans la barre de navigation." /> dans la barre de navigation du haut, &agrave; droite, pour acc&eacute;der &agrave; votre compte ou l&rsquo;ic&ocirc;ne <img class="img_connection" src="/mesAbonnements/lib/v3.1/img/bt_deconnection.gif" alt="Visuel de l&rsquo;ic&ocirc;ne \ufffdFermer une session\ufffd se retrouvant dans la barre de navigation." title="Visuel de l&rsquo;ic&ocirc;ne \ufffdFermer une session\ufffd se retrouvant dans la barre de navigation." /> pour en sortir. Vous pourrez aussi cliquer sur votre nom, &agrave; gauche de l&rsquo;ic&ocirc;ne, pour acc&eacute;der directement &agrave; votre profil.</p>';
            b += " \t</div>"; b += "<!-- Fin Version deconnecte ou non inscrit --\>"
        } a.innerHTML = b
    }, hrefCyberlettres: function () { var a = ""; return a = this.loggedIn() ? "https://mesabonnements.radio-canada.ca/subscriptions.aspx?u=" + oSSO.extract_userID() + "&HasKey=1&" : "/mesAbonnements/cyberlettres/?" }, onclickCyberlettres: function () {
        var a = this.oDocument.getElementById("sso_href_cyberlettres"); if (a != null) {
            a.setAttribute("href", "#"); this.addEventHandler(a, "click", function () {
                RadioCanada.Mod.SRCNav.oNav.CT("top_Cyberlettres");
                oSSO.gotoRedirecturl(oSSO.hrefCyberlettres())
            }, false)
        } a = this.oDocument.getElementById("sso_href_cyberlettres_pied"); if (a != null) { a.setAttribute("href", "#"); this.addEventHandler(a, "click", function () { RadioCanada.Mod.SRCNav.oNav.CT("bouton_Cyberlettres"); oSSO.gotoRedirecturl(oSSO.hrefCyberlettres()) }, false) } 
    }, addEventHandler: function (a, b, c, d) { typeof window.event !== "undefined" ? a.attachEvent("on" + b, c) : a.addEventListener(b, c, d) }, gotoRedirecturl: function (a) { this.oDocument.location.href = a + "redirecturl=" + window.location },
    END: 1
}; oSrc.addOnLoad(function () { try { oSSO.contentLogin(); oSSO.onclickCyberlettres() } catch (a) { oSrc.alert("SSO", "erreur, try catch : " + a) } }); var gService = false, gTimeZone = -5; function dcsCookie() { if (typeof dcsOther === "function") dcsOther(); else if (typeof dcsPlugin === "function") dcsPlugin(); else typeof dcsFPC === "function" && dcsFPC(gTimeZone) }
function dcsGetCookie(a) { var b = document, c = b.cookie.indexOf(a + "="); if (c != -1) { a = c + a.length + 1; c = b.cookie.indexOf(";", a); if (c == -1) c = b.cookie.length; return unescape(b.cookie.substring(a, c)) } return null } function dcsGetCrumb(a, b) { for (var c = dcsGetCookie(a).split(":"), d = 0; d < c.length; d++) { var e = c[d].split("="); if (b == e[0]) return e[1] } return null } function dcsGetIdCrumb(a, b) { var c = dcsGetCookie(a); c = c.substring(0, c.indexOf(":lv=")).split("="); for (var d = 0; d < c.length; d++) if (b == c[0]) return c[1]; return null }
function dcsFPC(a) {
    var b = document; if (typeof a != "undefined") if (b.cookie.indexOf("WTLOPTOUT=") == -1) {
        var c = gFpc, d = new Date, e = d.getTimezoneOffset() * 6E4 + a * 36E5; d.setTime(d.getTime() + e); var g = new Date(d.getTime() + 31536E7); a = new Date(d.getTime()); WT.co_f = WT.vt_sid = WT.vt_f = WT.vt_f_a = WT.vt_f_s = WT.vt_f_d = WT.vt_f_tlh = WT.vt_f_tlv = ""; if (b.cookie.indexOf(c + "=") == -1) {
            if (typeof gWtId != "undefined" && gWtId != "") WT.co_f = gWtId; else {
                if (typeof gTempWtId != "undefined" && gTempWtId != "") WT.co_f = gTempWtId; else {
                    WT.co_f = "2"; for (var f =
d.getTime().toString(), l = 2; l <= 32 - f.length; l++) WT.co_f += Math.floor(Math.random() * 16).toString(16); WT.co_f += f
                } WT.vt_f = "1"
            } if (typeof gWtAccountRollup == "undefined") WT.vt_f_a = "1"; WT.vt_f_s = WT.vt_f_d = "1"; WT.vt_f_tlh = WT.vt_f_tlv = "0"
        } else {
            l = dcsGetIdCrumb(c, "id"); var n = parseInt(dcsGetCrumb(c, "lv")); f = parseInt(dcsGetCrumb(c, "ss")); if (l == null || l == "null" || isNaN(n) || isNaN(f)) return; WT.co_f = l; l = new Date(n); WT.vt_f_tlh = Math.floor((l.getTime() - e) / 1E3); a.setTime(f); if (d.getTime() > l.getTime() + 18E5 || d.getTime() > a.getTime() +
288E5) { WT.vt_f_tlv = Math.floor((a.getTime() - e) / 1E3); a.setTime(d.getTime()); WT.vt_f_s = "1" } if (d.getDay() != l.getDay() || d.getMonth() != l.getMonth() || d.getYear() != l.getYear()) WT.vt_f_d = "1"
        } WT.co_f = escape(WT.co_f); WT.vt_sid = WT.co_f + "." + (a.getTime() - e); e = "; expires=" + g.toGMTString(); b.cookie = c + "=id=" + WT.co_f + ":lv=" + d.getTime().toString() + ":ss=" + a.getTime().toString() + e + "; path=/" + (typeof gFpcDom != "undefined" && gFpcDom != "" ? "; domain=" + gFpcDom : ""); if (b.cookie.indexOf(c + "=") == -1) {
            WT.co_f = WT.vt_sid = WT.vt_f_s = WT.vt_f_d =
WT.vt_f_tlh = WT.vt_f_tlv = ""; WT.vt_f = WT.vt_f_a = "2"
        } 
    } 
} function dcsParseSvl(a) { a = a.split(" ").join(""); a = a.split("\t").join(""); a = a.split("\n").join(""); var b = a.toUpperCase().indexOf("WT.SVL="); if (b != -1) { b = b + 8; var c = a.indexOf('"', b); if (c == -1) { c = a.indexOf("'", b); if (c == -1) c = a.length } return a.substring(b, c) } return "" } function dcsIsOnsite() { return 1 } function dcsIsHttp(a) { return a.href && a.protocol && a.protocol.indexOf("http") != -1 ? true : false }
function dcsTypeMatch(a, b) { for (var c = a.substring(a.lastIndexOf(".") + 1, a.length), d = b.split(","), e = d.length - 1; e >= 0; e--) if (c == d[e]) return true; return false } function dcsEvt(a, b) { var c = a.target || a.srcElement; do c = c.parentElement || c.parentNode; while (c.tagName && c.tagName != b); return c } function dcsBind(a, b) { var c = document.body; if (typeof window[b] === "function" && c) if (c.addEventListener) c.addEventListener(a, window[b], true); else c.attachEvent && c.attachEvent("on" + a, window[b]) }
function dcsET() { var a = navigator.appVersion.indexOf("MSIE") != -1 ? "click" : "mousedown"; dcsBind(a, "dcsDownload"); dcsBind(a, "dcsDynamic"); dcsBind(a, "dcsFormButton"); dcsBind(a, "dcsOffsite"); dcsBind(a, "dcsAnchor"); dcsBind("mousedown", "dcsRightClick") }
function dcsMultiTrack() { if (arguments.length % 2 == 0) { for (var a = 0; a < arguments.length; a += 2) if (arguments[a].indexOf("WT.") == 0) WT[arguments[a].substring(3)] = arguments[a + 1]; else if (arguments[a].indexOf("DCS.") == 0) DCS[arguments[a].substring(4)] = arguments[a + 1]; else if (arguments[a].indexOf("DCSext.") == 0) DCSext[arguments[a].substring(7)] = arguments[a + 1]; DCS.dcsdat = (new Date).getTime(); dcsFunc("dcsCookie"); dcsTag() } }
function dcsAdv() { dcsFunc("dcsET"); dcsFunc("dcsCookie"); dcsFunc("dcsAdSearch"); dcsFunc("dcsTP") } var agDomain = new Array("sdc2.radio-canada.ca", "sdc3.radio-canada.ca"), gDcsId = "dcs5w0txb10000wocrvqy1nqm_6n1p", gFpcDom = "www.radio-canada.ca", gFpc = "WEBTRENDS_SRC", gConvert = true, gImages = [], gIndex = 0, comS_gImages = [], comS_gIndex = 0, comS_id = 3005684, DCS = {}, WT = {}, DCSext = {}, gQP = [], gI18n = false;
function dcsVar() {
    var a = window, b = navigator, c = document, d = c.body, e = new Date; WT.tz = e.getTimezoneOffset() / 60 * -1; if (WT.tz == 0) WT.tz = "0"; WT.bh = e.getHours(); WT.ul = b.appName == "Netscape" ? b.language : b.userLanguage; if (typeof screen == "object") { WT.cd = b.appName == "Netscape" ? screen.pixelDepth : screen.colorDepth; WT.sr = screen.width + "x" + screen.height } if (typeof b.javaEnabled() == "boolean") WT.jo = b.javaEnabled() ? "Yes" : "No"; if (c.title) WT.ti = gI18n ? dcsEscape(dcsEncode(c.title), I18NRE) : c.title; WT.js = "Yes"; WT.jv = dcsJV(); if (d &&
d.addBehavior) try { d.addBehavior("#default#clientCaps"); WT.ct = d.connectionType || "unknown"; d.addBehavior("#default#homePage"); WT.hp = d.isHomePage(location.href) ? "1" : "0" } catch (g) { WT.ct = "unknown" } else WT.ct = "unknown"; if (parseInt(navigator.appVersion) > 3) if (b.appName == "Microsoft Internet Explorer" && d) WT.bs = d.offsetWidth + "x" + d.offsetHeight; else if (b.appName == "Netscape") WT.bs = a.innerWidth + "x" + a.innerHeight; WT.fi = "No"; if (a.ActiveXObject) for (d = 10; d > 0; d--) try {
        new ActiveXObject("ShockwaveFlash.ShockwaveFlash." +
d); WT.fi = "Yes"; WT.fv = d + ".0"; break
    } catch (f) { } else if (b.plugins && b.plugins.length) for (d = 0; d < b.plugins.length; d++) if (b.plugins[d].name.indexOf("Shockwave Flash") != -1) { WT.fi = "Yes"; WT.fv = b.plugins[d].description.split(" ")[2]; break } if (gI18n) { WT.em = typeof encodeURIComponent == "function" ? "uri" : "esc"; if (typeof c.defaultCharset == "string") WT.le = c.defaultCharset; else if (typeof c.characterSet == "string") WT.le = c.characterSet } WT.tv = "8.0.2"; WT.sp = ";"; DCS.dcsdat = e.getTime(); DCS.dcssip = a.location.hostname; DCS.dcsuri =
a.location.pathname; if (a.location.search) { DCS.dcsqry = a.location.search; if (gQP.length > 0) for (d = 0; d < gQP.length; d++) { e = DCS.dcsqry.indexOf(gQP[d]); if (e != -1) { c = DCS.dcsqry.substring(0, e); e = DCS.dcsqry.substring(e + gQP[d].length, DCS.dcsqry.length); DCS.dcsqry = c + e } } } if (a.document.referrer != "" && a.document.referrer != "-") if (!(b.appName == "Microsoft Internet Explorer" && parseInt(b.appVersion) < 4)) DCS.dcsref = gI18n ? dcsEscape(a.document.referrer, I18NRE) : a.document.referrer
} var RE = { "%26": /\&/g };
function dcsA(a, b) { return "&" + a + "=" + dcsEscape(b, RE) } function dcsEscape(a, b) { if (typeof b != "undefined") { var c = new String(a); for (var d in b) c = c.replace(b[d], d); return c } else return escape(a) } function dcsEncode(a) { return typeof encodeURIComponent == "function" ? encodeURIComponent(a) : escape(a) }
function dcsCreateImage(a, b) { var c = document; if (c.images) { gImages[gIndex] = new Image; gImages[gIndex].src = a; gIndex++ } else c.write('<IMG ALT="" BORDER="0" NAME="DCSIMG" WIDTH="1" HEIGHT="1" SRC="' + a + '">'); if (typeof b != "undefined" && b != null) if (c.images) { comS_gImages[comS_gIndex] = new Image; comS_gImages[comS_gIndex].src = b; comS_gIndex++ } else c.write('<IMG ALT="" BORDER="0" NAME="DCSIMG" WIDTH="1" HEIGHT="1" SRC="' + b + '">'); return a }
function dcsMeta() {
    var a = document, b; if (a.all) b = a.all.tags("meta"); else if (a.documentElement) b = a.getElementsByTagName("meta"); if (typeof b != "undefined") {
        a = b.length; for (var c = 0; c < a; c++) {
            var d = b.item(c).name, e = b.item(c).content, g = b.item(c).httpEquiv; if (d.length > 0) if (d.indexOf("WT.") == 0) { g = false; if (gI18n) for (var f = ["mc_id", "oss", "ti"], l = 0; l < f.length; l++) if (d.indexOf("WT." + f[l]) == 0) { g = true; break } WT[d.substring(3)] = g ? dcsEscape(dcsEncode(e), I18NRE) : e } else if (d.indexOf("DCSext.") == 0) DCSext[d.substring(7)] =
e; else { if (d.indexOf("DCS.") == 0) DCS[d.substring(4)] = gI18n && d.indexOf("DCS.dcsref") == 0 ? dcsEscape(e, I18NRE) : e } else if (gI18n && g == "Content-Type") { d = e.toLowerCase().indexOf("charset="); if (d != -1) WT.mle = e.substring(d + 8) } 
        } 
    } 
}
function dcsTag() {
    var a = document; if (a.cookie.indexOf("WTLOPTOUT=") == -1) {
        if (typeof WT.sp != "undefined" && WT.sp.indexOf("global") != -1) if (WT.sp.indexOf("sc_audiovideo") != -1 && DCS.dcsuri != null && DCS.dcsuri != "undefined") { var b = DCS.dcsuri; a = "http://beacon.scorecardresearch.com/scripts/beacon.dll?C1=" + (WT.sp.indexOf("sc_audiovideo") != -1 ? 1 : 2) + "&C2=" + comS_id + "&C3=&C4=" + escape(b) + "&C5=&C6=&C7=" + escape(b) + "&C8=" + escape(a.title) + "&C9=" + escape(a.location.href) + "&rn=" + Math.floor(Math.random() * 99999999) } else {
            try {
                b =
top.window.location.href
            } catch (c) { b = window.location.href } a = "http://beacon.scorecardresearch.com/scripts/beacon.dll?C1=" + (WT.sp.indexOf("sc_audiovideo") != -1 ? 1 : 2) + "&C2=" + comS_id + "&C3=&C4=" + escape(b) + "&C5=&C6=" + WT.sp.split(";")[1] + "&C7=" + escape(window.location.href) + "&C8=" + escape(a.title) + "&C9=" + escape(a.referrer) + "&rn=" + Math.floor(Math.random() * 99999999)
        } else a = null; b = ""; for (var d in DCS) if (DCS[d]) b += dcsA(d, DCS[d]); for (var e = ["co_f", "vt_sid", "vt_f_tlv"], g = 0; g < e.length; g++) {
            var f = e[g]; if (WT[f]) {
                b += dcsA("WT." +
f, WT[f]); delete WT[f]
            } 
        } for (d in WT) if (WT[d]) b += dcsA("WT." + d, WT[d]); for (d in DCSext) if (DCSext[d]) b += dcsA(d, DCSext[d]); if (b.length > 2048 && navigator.userAgent.indexOf("MSIE") >= 0) b = b.substring(0, 2040) + "&WT.tu=1"; for (g = 0; g < agDomain.length; g++) {
            d = "http" + (window.location.protocol.indexOf("https:") == 0 ? "s" : "") + "://" + agDomain[g] + (gDcsId == "" ? "" : "/" + gDcsId) + "/dcs.gif?" + b; if (g == agDomain.length - 1) {
                typeof oSrc != "undefined" && oSrc.alert("stats", d.replaceAll("&", "<br />&")); a != null && typeof oSrc != "undefined" && oSrc.alert("stats",
'<span style="color:blue;">' + a.replaceAll("&", "<br />&") + "</span>"); return dcsCreateImage(d, a)
            } else { typeof oSrc != "undefined" && oSrc.alert("stats", '<span style="color:#CCC;">' + d.replaceAll("&", "<br />&") + "</span>"); dcsCreateImage(d) } 
        } 
    } 
}
function dcsJV() {
    var a = navigator.userAgent.toLowerCase(), b = parseInt(navigator.appVersion), c = a.indexOf("mac") != -1, d = a.indexOf("firefox") != -1, e = a.indexOf("firefox/0.") != -1, g = a.indexOf("firefox/1.0") != -1, f = a.indexOf("firefox/1.5") != -1, l = d && !e && !g & !f, n = !d && a.indexOf("mozilla") != -1 && a.indexOf("compatible") == -1; d = n && b == 4; n = n && b >= 5; var h = a.indexOf("msie") != -1 && a.indexOf("opera") == -1; b = h && b == 4 && a.indexOf("msie 4") != -1; h = h && !b; var k = a.indexOf("opera") != -1, o = a.indexOf("opera 5") != -1 || a.indexOf("opera/5") !=
-1; a = a.indexOf("opera 6") != -1 || a.indexOf("opera/6") != -1; var q = "1.1"; if (l) q = "1.7"; else if (f) q = "1.6"; else if (e || g || n || k && !o && !a) q = "1.5"; else if (c && h || a) q = "1.4"; else if (h || d || o) q = "1.3"; else if (b) q = "1.2"; return q
} function dcsFunc(a) { typeof window[a] == "function" && window[a]() } function CT() { return false }
function statsToProfils() {
    DCS.dcsqry = null; DCS = {}; WT = {}; DCSext = {}; dcsVar(); dcsMeta(); for (var a = 0; a < arguments.length; a++) switch (arguments[a].toLowerCase()) {
        case "titrepage": WT.ti = dcsEscape(arguments[a + 1]); DCS.dcsqry = null; break; case "descriptiondansurl": if (typeof DCS.dcsqry == "undefined" || DCS.dcsqry == null) DCS.dcsqry = "?" + dcsEscape(arguments[a + 1]); else DCS.dcsqry += "%26" + dcsEscape(arguments[a + 1]); break; case "wt.sp": case "profil": WT.sp = dcsEscape(arguments[a + 1]); break; case "dcs.dcsuri": DCS.dcsuri = dcsEscape(arguments[a +
1]); break
    } if (document.location.href.indexOf("radio-canada.ca") != -1) if (WT.sp) WT.sp += ";groupeRC;"; else WT.sp = "groupeRC;"; dcsFunc("dcsAdv"); return dcsTag()
} typeof isNotV3 == "undefined" && statsToProfils();
function statsToClics() { DCS.dcsqry = null; dcsVar(); dcsMeta(); DCS = {}; WT = {}; DCSext = {}; DCS.dcsuri = dcsEscape("vide.html"); for (var a = ["clic_action", "clic_contenu", "WT.ti", "WT.clic"], b = 0; b < arguments.length; b++) for (var c = 0; c < a.length; c++) if (arguments[b] == a[c]) switch (arguments[b].toLowerCase()) { case "wt.ti": WT.ti = dcsEscape(arguments[b + 1]); break; case "wt.clic": WT.clic = dcsEscape(arguments[b + 1]); break; default: DCSext[arguments[b]] = arguments[b + 1]; break } dcsFunc("dcsAdv"); return dcsTag() } var isStaticGlobalJs = true;
if (typeof aStaticGlobalJs !== "undefined") for (var i = 0; i < aStaticGlobalJs.length; i++) eval(aStaticGlobalJs[i]); if (typeof isAcceptePubMotCle === "undefined") isAcceptePubMotCle = true;

var _sWtCall2 = statsToClics('clic_action', "ProdSourceScript", 'clic_contenu', 'F:\\ca\\src\\static\\wwwroot\\v3\\js\\global\\3\\0\\0\\27\\global_3.0.0.27_fifa.js', 'WT.ti',  "ProdSourceScript :: " + 'F:\\ca\\src\\static\\wwwroot\\v3\\js\\global\\3\\0\\0\\27\\global_3.0.0.27_fifa.js', 'WT.clic', 'clics_statprod'); //Call webtrends pour identifier tous les endroits où on doit intervenir pour modifier l’ensemble du site
