/*****************************************************************************
scalable Inman Flash Replacement (sIFR) version 3, revision 436.

Copyright 2006 – 2008 Mark Wubben, <http://novemberborn.net/>

Older versions:
* IFR by Shaun Inman
* sIFR 1.0 by Mike Davidson, Shaun Inman and Tomas Jogin
* sIFR 2.0 by Mike Davidson, Shaun Inman, Tomas Jogin and Mark Wubben

See also <http://novemberborn.net/sifr3> and <http://wiki.novemberborn.net/sifr3>.

This software is licensed and provided under the CC-GNU LGPL.
See <http://creativecommons.org/licenses/LGPL/2.1/>
*****************************************************************************/

var sIFR = new
function () {
	var O = this;
	var E = {
		ACTIVE: "sIFR-active",
		REPLACED: "sIFR-replaced",
		IGNORE: "sIFR-ignore",
		ALTERNATE: "sIFR-alternate",
		CLASS: "sIFR-class",
		LAYOUT: "sIFR-layout",
		FLASH: "sIFR-flash",
		FIX_FOCUS: "sIFR-fixfocus",
		DUMMY: "sIFR-dummy"
	};
	E.IGNORE_CLASSES = [E.REPLACED, E.IGNORE, E.ALTERNATE];
	this.MIN_FONT_SIZE = 6;
	this.MAX_FONT_SIZE = 126;
	this.FLASH_PADDING_BOTTOM = 5;
	this.VERSION = "436";
	this.isActive = false;
	this.isEnabled = true;
	this.fixHover = true;
	this.autoInitialize = true;
	this.setPrefetchCookie = true;
	this.cookiePath = "/";
	this.domains = [];
	this.forceWidth = true;
	this.fitExactly = false;
	this.forceTextTransform = true;
	this.useDomLoaded = true;
	this.useStyleCheck = false;
	this.hasFlashClassSet = false;
	this.repaintOnResize = true;
	this.replacements = [];
	var L = 0;
	var R = false;

	function Y() {}
	function D(c) {
		function d(e) {
			return e.toLocaleUpperCase()
		}
		this.normalize = function (e) {
			return e.replace(/\n|\r|\xA0/g, D.SINGLE_WHITESPACE).replace(/\s+/g, D.SINGLE_WHITESPACE)
		};
		this.textTransform = function (e, f) {
			switch (e) {
			case "uppercase":
				return f.toLocaleUpperCase();
			case "lowercase":
				return f.toLocaleLowerCase();
			case "capitalize":
				return f.replace(/^\w|\s\w/g, d)
			}
			return f
		};
		this.toHexString = function (e) {
			if (e.charAt(0) != "#" || e.length != 4 && e.length != 7) {
				return e
			}
			e = e.substring(1);
			return "0x" + (e.length == 3 ? e.replace(/(.)(.)(.)/, "$1$1$2$2$3$3") : e)
		};
		this.toJson = function (g, f) {
			var e = "";
			switch (typeof(g)) {
			case "string":
				e = '"' + f(g) + '"';
				break;
			case "number":
			case "boolean":
				e = g.toString();
				break;
			case "object":
				e = [];
				for (var h in g) {
					if (g[h] == Object.prototype[h]) {
						continue
					}
					e.push('"' + h + '":' + this.toJson(g[h]))
				}
				e = "{" + e.join(",") + "}";
				break
			}
			return e
		};
		this.convertCssArg = function (e) {
			if (!e) {
				return {}
			}
			if (typeof(e) == "object") {
				if (e.constructor == Array) {
					e = e.join("")
				} else {
					return e
				}
			}
			var l = {};
			var m = e.split("}");
			for (var h = 0; h < m.length; h++) {
				var k = m[h].match(/([^\s{]+)\s*\{(.+)\s*;?\s*/);
				if (!k || k.length != 3) {
					continue
				}
				if (!l[k[1]]) {
					l[k[1]] = {}
				}
				var g = k[2].split(";");
				for (var f = 0; f < g.length; f++) {
					var n = g[f].match(/\s*([^:\s]+)\s*\:\s*([^;]+)/);
					if (!n || n.length != 3) {
						continue
					}
					l[k[1]][n[1]] = n[2].replace(/\s+$/, "")
				}
			}
			return l
		};
		this.extractFromCss = function (g, f, i, e) {
			var h = null;
			if (g && g[f] && g[f][i]) {
				h = g[f][i];
				if (e) {
					delete g[f][i]
				}
			}
			return h
		};
		this.cssToString = function (f) {
			var g = [];
			for (var e in f) {
				var j = f[e];
				if (j == Object.prototype[e]) {
					continue
				}
				g.push(e, "{");
				for (var i in j) {
					if (j[i] == Object.prototype[i]) {
						continue
					}
					var h = j[i];
					if (D.UNIT_REMOVAL_PROPERTIES[i]) {
						h = parseInt(h, 10)
					}
					g.push(i, ":", h, ";")
				}
				g.push("}")
			}
			return g.join("")
		};
		this.escape = function (e) {
			return escape(e).replace(/\+/g, "%2B")
		};
		this.encodeVars = function (e) {
			return e.join("&").replace(/%/g, "%25")
		};
		this.copyProperties = function (g, f) {
			for (var e in g) {
				if (f[e] === undefined) {
					f[e] = g[e]
				}
			}
			return f
		};
		this.domain = function () {
			var f = "";
			try {
				f = document.domain
			} catch (g) {}
			return f
		};
		this.domainMatches = function (h, g) {
			if (g == "*" || g == h) {
				return true
			}
			var f = g.lastIndexOf("*");
			if (f > -1) {
				g = g.substr(f + 1);
				var e = h.lastIndexOf(g);
				if (e > -1 && (e + g.length) == h.length) {
					return true
				}
			}
			return false
		};
		this.uriEncode = function (e) {
			return encodeURI(decodeURIComponent(e))
		};
		this.delay = function (f, h, g) {
			var e = Array.prototype.slice.call(arguments, 3);
			setTimeout(function () {
				h.apply(g, e)
			}, f)
		}
	}
	D.UNIT_REMOVAL_PROPERTIES = {
		leading: true,
		"margin-left": true,
		"margin-right": true,
		"text-indent": true
	};
	D.SINGLE_WHITESPACE = " ";

	function U(e) {
		var d = this;

		function c(g, j, h) {
			var k = d.getStyleAsInt(g, j, e.ua.ie);
			if (k == 0) {
				k = g[h];
				for (var f = 3; f < arguments.length; f++) {
					k -= d.getStyleAsInt(g, arguments[f], true)
				}
			}
			return k
		}
		this.getBody = function () {
			return document.getElementsByTagName("body")[0] || null
		};
		this.querySelectorAll = function (f) {
			return window.parseSelector(f)
		};
		this.addClass = function (f, g) {
			if (g) {
				g.className = ((g.className || "") == "" ? "" : g.className + " ") + f
			}
		};
		this.removeClass = function (f, g) {
			if (g) {
				g.className = g.className.replace(new RegExp("(^|\\s)" + f + "(\\s|$)"), "").replace(/^\s+|(\s)\s+/g, "$1")
			}
		};
		this.hasClass = function (f, g) {
			return new RegExp("(^|\\s)" + f + "(\\s|$)").test(g.className)
		};
		this.hasOneOfClassses = function (h, g) {
			for (var f = 0; f < h.length; f++) {
				if (this.hasClass(h[f], g)) {
					return true
				}
			}
			return false
		};
		this.ancestorHasClass = function (g, f) {
			g = g.parentNode;
			while (g && g.nodeType == 1) {
				if (this.hasClass(f, g)) {
					return true
				}
				g = g.parentNode
			}
			return false
		};
		this.create = function (f, g) {
			var h = document.createElementNS ? document.createElementNS(U.XHTML_NS, f) : document.createElement(f);
			if (g) {
				h.className = g
			}
			return h
		};
		this.getComputedStyle = function (h, i) {
			var f;
			if (document.defaultView && document.defaultView.getComputedStyle) {
				var g = document.defaultView.getComputedStyle(h, null);
				f = g ? g[i] : null
			} else {
				if (h.currentStyle) {
					f = h.currentStyle[i]
				}
			}
			return f || ""
		};
		this.getStyleAsInt = function (g, i, f) {
			var h = this.getComputedStyle(g, i);
			if (f && !/px$/.test(h)) {
				return 0
			}
			return parseInt(h) || 0
		};
		this.getWidthFromStyle = function (f) {
			return c(f, "width", "offsetWidth", "paddingRight", "paddingLeft", "borderRightWidth", "borderLeftWidth")
		};
		this.getHeightFromStyle = function (f) {
			return c(f, "height", "offsetHeight", "paddingTop", "paddingBottom", "borderTopWidth", "borderBottomWidth")
		};
		this.getDimensions = function (j) {
			var h = j.offsetWidth;
			var f = j.offsetHeight;
			if (h == 0 || f == 0) {
				for (var g = 0; g < j.childNodes.length; g++) {
					var k = j.childNodes[g];
					if (k.nodeType != 1) {
						continue
					}
					h = Math.max(h, k.offsetWidth);
					f = Math.max(f, k.offsetHeight)
				}
			}
			return {
				width: h,
				height: f
			}
		};
		this.getViewport = function () {
			return {
				width: window.innerWidth || document.documentElement.clientWidth || this.getBody().clientWidth,
				height: window.innerHeight || document.documentElement.clientHeight || this.getBody().clientHeight
			}
		};
		this.blurElement = function (g) {
			try {
				g.blur();
				return
			} catch (h) {}
			var f = this.create("input");
			f.style.width = "0px";
			f.style.height = "0px";
			g.parentNode.appendChild(f);
			f.focus();
			f.blur();
			f.parentNode.removeChild(f)
		}
	}
	U.XHTML_NS = "http://www.w3.org/1999/xhtml";

	function H(r) {
		var g = navigator.userAgent.toLowerCase();
		var q = (navigator.product || "").toLowerCase();
		var h = navigator.platform.toLowerCase();
		this.parseVersion = H.parseVersion;
		this.macintosh = /^mac/.test(h);
		this.windows = /^win/.test(h);
		this.linux = /^linux/.test(h);
		this.quicktime = false;
		this.opera = /opera/.test(g);
		this.konqueror = /konqueror/.test(g);
		this.ie = false /*@cc_on||true@*/
		;
		this.ieSupported = this.ie && !/ppc|smartphone|iemobile|msie\s5\.5/.test(g) /*@cc_on&&@_jscript_version>=5.5@*/
		;
		this.ieWin = this.ie && this.windows /*@cc_on&&@_jscript_version>=5.1@*/
		;
		this.windows = this.windows && (!this.ie || this.ieWin);
		this.ieMac = this.ie && this.macintosh /*@cc_on&&@_jscript_version<5.1@*/
		;
		this.macintosh = this.macintosh && (!this.ie || this.ieMac);
		this.safari = /safari/.test(g);
		this.webkit = !this.konqueror && /applewebkit/.test(g);
		this.khtml = this.webkit || this.konqueror;
		this.gecko = !this.khtml && q == "gecko";
		this.ieVersion = this.ie && /.*msie\s(\d\.\d)/.exec(g) ? this.parseVersion(RegExp.$1) : "0";
		this.operaVersion = this.opera && /.*opera(\s|\/)(\d+\.\d+)/.exec(g) ? this.parseVersion(RegExp.$2) : "0";
		this.webkitVersion = this.webkit && /.*applewebkit\/(\d+).*/.exec(g) ? this.parseVersion(RegExp.$1) : "0";
		this.geckoVersion = this.gecko && /.*rv:\s*([^\)]+)\)\s+gecko/.exec(g) ? this.parseVersion(RegExp.$1) : "0";
		this.konquerorVersion = this.konqueror && /.*konqueror\/([\d\.]+).*/.exec(g) ? this.parseVersion(RegExp.$1) : "0";
		this.flashVersion = 0;
		if (this.ieWin) {
			var l;
			var o = false;
			try {
				l = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")
			} catch (m) {
				try {
					l = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
					this.flashVersion = this.parseVersion("6");
					l.AllowScriptAccess = "always"
				} catch (m) {
					o = this.flashVersion == this.parseVersion("6")
				}
				if (!o) {
					try {
						l = new ActiveXObject("ShockwaveFlash.ShockwaveFlash")
					} catch (m) {}
				}
			}
			if (!o && l) {
				this.flashVersion = this.parseVersion((l.GetVariable("$version") || "").replace(/^\D+(\d+)\D+(\d+)\D+(\d+).*/g, "$1.$2.$3"))
			}
		} else {
			if (navigator.plugins && navigator.plugins["Shockwave Flash"]) {
				var n = navigator.plugins["Shockwave Flash"].description.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
				var p = n.replace(/^\D*(\d+\.\d+).*$/, "$1");
				if (/r/.test(n)) {
					p += n.replace(/^.*r(\d*).*$/, ".$1")
				} else {
					if (/d/.test(n)) {
						p += ".0"
					}
				}
				this.flashVersion = this.parseVersion(p);
				var j = false;
				for (var k = 0, c = this.flashVersion >= H.MIN_FLASH_VERSION; c && k < navigator.mimeTypes.length; k++) {
					var f = navigator.mimeTypes[k];
					if (f.type != "application/x-shockwave-flash") {
						continue
					}
					if (f.enabledPlugin) {
						j = true;
						if (f.enabledPlugin.description.toLowerCase().indexOf("quicktime") > -1) {
							c = false;
							this.quicktime = true
						}
					}
				}
				if (this.quicktime || !j) {
					this.flashVersion = this.parseVersion("0")
				}
			}
		}
		this.flash = this.flashVersion >= H.MIN_FLASH_VERSION;
		this.transparencySupport = this.macintosh || this.windows || this.linux && (this.flashVersion >= this.parseVersion("10") && (this.gecko && this.geckoVersion >= this.parseVersion("1.9") || this.opera));
		this.computedStyleSupport = this.ie || !! document.defaultView.getComputedStyle;
		this.fixFocus = this.gecko && this.windows;
		this.nativeDomLoaded = this.gecko || this.webkit && this.webkitVersion >= this.parseVersion("525") || this.konqueror && this.konquerorMajor > this.parseVersion("03") || this.opera;
		this.mustCheckStyle = this.khtml || this.opera;
		this.forcePageLoad = this.webkit && this.webkitVersion < this.parseVersion("523");
		this.properDocument = typeof(document.location) == "object";
		this.supported = this.flash && this.properDocument && (!this.ie || this.ieSupported) && this.computedStyleSupport && (!this.opera || this.operaVersion >= this.parseVersion("9.61")) && (!this.webkit || this.webkitVersion >= this.parseVersion("412")) && (!this.gecko || this.geckoVersion >= this.parseVersion("1.8.0.12")) && (!this.konqueror)
	}
	H.parseVersion = function (c) {
		return c.replace(/(^|\D)(\d+)(?=\D|$)/g, function (f, e, g) {
			f = e;
			for (var d = 4 - g.length; d >= 0; d--) {
				f += "0"
			}
			return f + g
		})
	};
	H.MIN_FLASH_VERSION = H.parseVersion("8");

	function F(c) {
		this.fix = c.ua.ieWin && window.location.hash != "";
		var d;
		this.cache = function () {
			d = document.title
		};

		function e() {
			document.title = d
		}
		this.restore = function () {
			if (this.fix) {
				setTimeout(e, 0)
			}
		}
	}
	function S(l) {
		var e = null;

		function c() {
			try {
				if (l.ua.ie || document.readyState != "loaded" && document.readyState != "complete") {
					document.documentElement.doScroll("left")
				}
			} catch (n) {
				return setTimeout(c, 10)
			}
			i()
		}
		function i() {
			if (l.useStyleCheck) {
				h()
			} else {
				if (!l.ua.mustCheckStyle) {
					d(null, true)
				}
			}
		}
		function h() {
			e = l.dom.create("div", E.DUMMY);
			l.dom.getBody().appendChild(e);
			m()
		}
		function m() {
			if (l.dom.getComputedStyle(e, "marginLeft") == "42px") {
				g()
			} else {
				setTimeout(m, 10)
			}
		}
		function g() {
			if (e && e.parentNode) {
				e.parentNode.removeChild(e)
			}
			e = null;
			d(null, true)
		}
		function d(n, o) {
			l.initialize(o);
			if (n && n.type == "load") {
				if (document.removeEventListener) {
					document.removeEventListener("DOMContentLoaded", d, false)
				}
				if (window.removeEventListener) {
					window.removeEventListener("load", d, false)
				}
			}
		}
		function j() {
			l.prepareClearReferences();
			if (document.readyState == "interactive") {
				document.attachEvent("onstop", f);
				setTimeout(function () {
					document.detachEvent("onstop", f)
				}, 0)
			}
		}
		function f() {
			document.detachEvent("onstop", f);
			k()
		}
		function k() {
			l.clearReferences()
		}
		this.attach = function () {
			if (window.addEventListener) {
				window.addEventListener("load", d, false)
			} else {
				window.attachEvent("onload", d)
			}
			if (!l.useDomLoaded || l.ua.forcePageLoad || l.ua.ie && window.top != window) {
				return
			}
			if (l.ua.nativeDomLoaded) {
				document.addEventListener("DOMContentLoaded", i, false)
			} else {
				if (l.ua.ie || l.ua.khtml) {
					c()
				}
			}
		};
		this.attachUnload = function () {
			if (!l.ua.ie) {
				return
			}
			window.attachEvent("onbeforeunload", j);
			window.attachEvent("onunload", k)
		}
	}
	var Q = "sifrFetch";

	function N(c) {
		var e = false;
		this.fetchMovies = function (f) {
			if (c.setPrefetchCookie && new RegExp(";?" + Q + "=true;?").test(document.cookie)) {
				return
			}
			try {
				e = true;
				d(f)
			} catch (g) {}
			if (c.setPrefetchCookie) {
				document.cookie = Q + "=true;path=" + c.cookiePath
			}
		};
		this.clear = function () {
			if (!e) {
				return
			}
			try {
				var f = document.getElementsByTagName("script");
				for (var g = f.length - 1; g >= 0; g--) {
					var h = f[g];
					if (h.type == "sifr/prefetch") {
						h.parentNode.removeChild(h)
					}
				}
			} catch (j) {}
		};

		function d(f) {
			for (var g = 0; g < f.length; g++) {
				document.write('<script defer type="sifr/prefetch" src="' + f[g].src + '"><\/script>')
			}
		}
	}
	function b(e) {
		var g = e.ua.ie;
		var f = g && e.ua.flashVersion < e.ua.parseVersion("9.0.115");
		var d = {};
		var c = {};
		this.fixFlash = f;
		this.register = function (h) {
			if (!g) {
				return
			}
			var i = h.getAttribute("id");
			this.cleanup(i, false);
			c[i] = h;
			delete d[i];
			if (f) {
				window[i] = h
			}
		};
		this.reset = function () {
			if (!g) {
				return false
			}
			for (var j = 0; j < e.replacements.length; j++) {
				var h = e.replacements[j];
				var k = c[h.id];
				if (!d[h.id] && (!k.parentNode || k.parentNode.nodeType == 11)) {
					h.resetMovie();
					d[h.id] = true
				}
			}
			return true
		};
		this.cleanup = function (l, h) {
			var i = c[l];
			if (!i) {
				return
			}
			for (var k in i) {
				if (typeof(i[k]) == "function") {
					i[k] = null
				}
			}
			c[l] = null;
			if (f) {
				window[l] = null
			}
			if (i.parentNode) {
				if (h && i.parentNode.nodeType == 1) {
					var j = document.createElement("div");
					j.style.width = i.offsetWidth + "px";
					j.style.height = i.offsetHeight + "px";
					i.parentNode.replaceChild(j, i)
				} else {
					i.parentNode.removeChild(i)
				}
			}
		};
		this.prepareClearReferences = function () {
			if (!f) {
				return
			}
			__flash_unloadHandler = function () {};
			__flash_savedUnloadHandler = function () {}
		};
		this.clearReferences = function () {
			if (f) {
				var j = document.getElementsByTagName("object");
				for (var h = j.length - 1; h >= 0; h--) {
					c[j[h].getAttribute("id")] = j[h]
				}
			}
			for (var k in c) {
				if (Object.prototype[k] != c[k]) {
					this.cleanup(k, true)
				}
			}
		}
	}
	function K(d, g, f, c, e) {
		this.sIFR = d;
		this.id = g;
		this.vars = f;
		this.movie = null;
		this.__forceWidth = c;
		this.__events = e;
		this.__resizing = 0
	}
	K.prototype = {
		getFlashElement: function () {
			return document.getElementById(this.id)
		},
		getAlternate: function () {
			return document.getElementById(this.id + "_alternate")
		},
		getAncestor: function () {
			var c = this.getFlashElement().parentNode;
			return !this.sIFR.dom.hasClass(E.FIX_FOCUS, c) ? c : c.parentNode
		},
		available: function () {
			var c = this.getFlashElement();
			return c && c.parentNode
		},
		call: function (c) {
			var d = this.getFlashElement();
			if (!d[c]) {
				return false
			}
			return Function.prototype.apply.call(d[c], d, Array.prototype.slice.call(arguments, 1))
		},
		attempt: function () {
			if (!this.available()) {
				return false
			}
			try {
				this.call.apply(this, arguments)
			} catch (c) {
				if (this.sIFR.debug) {
					throw c
				}
				return false
			}
			return true
		},
		updateVars: function (c, e) {
			for (var d = 0; d < this.vars.length; d++) {
				if (this.vars[d].split("=")[0] == c) {
					this.vars[d] = c + "=" + e;
					break
				}
			}
			var f = this.sIFR.util.encodeVars(this.vars);
			this.movie.injectVars(this.getFlashElement(), f);
			this.movie.injectVars(this.movie.html, f)
		},
		storeSize: function (c, d) {
			this.movie.setSize(c, d);
			this.updateVars(c, d)
		},
		fireEvent: function (c) {
			if (this.available() && this.__events[c]) {
				this.sIFR.util.delay(0, this.__events[c], this, this)
			}
		},
		resizeFlashElement: function (c, d, e) {
			if (!this.available()) {
				return
			}
			this.__resizing++;
			var f = this.getFlashElement();
			f.setAttribute("height", c);
			this.getAncestor().style.minHeight = "";
			this.updateVars("renderheight", c);
			this.storeSize("height", c);
			if (d !== null) {
				f.setAttribute("width", d);
				this.movie.setSize("width", d)
			}
			if (this.__events.onReplacement) {
				this.sIFR.util.delay(0, this.__events.onReplacement, this, this);
				delete this.__events.onReplacement
			}
			if (e) {
				this.sIFR.util.delay(0, function () {
					this.attempt("scaleMovie");
					this.__resizing--
				}, this)
			} else {
				this.__resizing--
			}
		},
		blurFlashElement: function () {
			if (this.available()) {
				this.sIFR.dom.blurElement(this.getFlashElement())
			}
		},
		resetMovie: function () {
			this.sIFR.util.delay(0, this.movie.reset, this.movie, this.getFlashElement(), this.getAlternate())
		},
		resizeAfterScale: function () {
			if (this.available() && this.__resizing == 0) {
				this.sIFR.util.delay(0, this.resize, this)
			}
		},
		resize: function () {
			if (!this.available()) {
				return
			}
			this.__resizing++;
			var g = this.getFlashElement();
			var f = g.offsetWidth;
			if (f == 0) {
				return
			}
			var e = g.getAttribute("width");
			var l = g.getAttribute("height");
			var m = this.getAncestor();
			var o = this.sIFR.dom.getHeightFromStyle(m);
			g.style.width = "1px";
			g.style.height = "1px";
			m.style.minHeight = o + "px";
			var c = this.getAlternate().childNodes;
			var n = [];
			for (var k = 0; k < c.length; k++) {
				var h = c[k].cloneNode(true);
				n.push(h);
				m.appendChild(h)
			}
			var d = this.sIFR.dom.getWidthFromStyle(m);
			for (var k = 0; k < n.length; k++) {
				m.removeChild(n[k])
			}
			g.style.width = g.style.height = m.style.minHeight = "";
			g.setAttribute("width", this.__forceWidth ? d : e);
			g.setAttribute("height", l);
			if (sIFR.ua.ie) {
				g.style.display = "none";
				var j = g.offsetHeight;
				g.style.display = ""
			}
			if (d != f) {
				if (this.__forceWidth) {
					this.storeSize("width", d)
				}
				this.attempt("resize", d)
			}
			this.__resizing--
		},
		replaceText: function (g, j) {
			var d = this.sIFR.util.escape(g);
			if (!this.attempt("replaceText", d)) {
				return false
			}
			this.updateVars("content", d);
			var f = this.getAlternate();
			if (j) {
				while (f.firstChild) {
					f.removeChild(f.firstChild)
				}
				for (var c = 0; c < j.length; c++) {
					f.appendChild(j[c])
				}
			} else {
				try {
					f.innerHTML = g
				} catch (h) {}
			}
			return true
		},
		changeCSS: function (c) {
			c = this.sIFR.util.escape(this.sIFR.util.cssToString(this.sIFR.util.convertCssArg(c)));
			this.updateVars("css", c);
			return this.attempt("changeCSS", c)
		},
		remove: function () {
			if (this.movie && this.available()) {
				this.movie.remove(this.getFlashElement(), this.id)
			}
		}
	};
	var X = new
	function () {
		this.create = function (p, n, j, i, f, e, g, o, l, h, m) {
			var k = p.ua.ie ? d : c;
			return new k(p, n, j, i, f, e, g, o, ["flashvars", l, "wmode", h, "bgcolor", m, "allowScriptAccess", "always", "quality", "best"])
		};

		function c(s, q, l, h, f, e, g, r, n) {
			var m = s.dom.create("object", E.FLASH);
			var p = ["type", "application/x-shockwave-flash", "id", f, "name", f, "data", e, "width", g, "height", r];
			for (var o = 0; o < p.length; o += 2) {
				m.setAttribute(p[o], p[o + 1])
			}
			var j = m;
			if (h) {
				j = W.create("div", E.FIX_FOCUS);
				j.appendChild(m)
			}
			for (var o = 0; o < n.length; o += 2) {
				if (n[o] == "name") {
					continue
				}
				var k = W.create("param");
				k.setAttribute("name", n[o]);
				k.setAttribute("value", n[o + 1]);
				m.appendChild(k)
			}
			l.style.minHeight = r + "px";
			while (l.firstChild) {
				l.removeChild(l.firstChild)
			}
			l.appendChild(j);
			this.html = j.cloneNode(true)
		}
		c.prototype = {
			reset: function (e, f) {
				e.parentNode.replaceChild(this.html.cloneNode(true), e)
			},
			remove: function (e, f) {
				e.parentNode.removeChild(e)
			},
			setSize: function (e, f) {
				this.html.setAttribute(e, f)
			},
			injectVars: function (e, g) {
				var h = e.getElementsByTagName("param");
				for (var f = 0; f < h.length; f++) {
					if (h[f].getAttribute("name") == "flashvars") {
						h[f].setAttribute("value", g);
						break
					}
				}
			}
		};

		function d(p, n, j, h, f, e, g, o, k) {
			this.dom = p.dom;
			this.broken = n;
			this.html = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="' + f + '" width="' + g + '" height="' + o + '" class="' + E.FLASH + '"><param name="movie" value="' + e + '"></param></object>';
			var m = "";
			for (var l = 0; l < k.length; l += 2) {
				m += '<param name="' + k[l] + '" value="' + k[l + 1] + '"></param>'
			}
			this.html = this.html.replace(/(<\/object>)/, m + "$1");
			j.style.minHeight = o + "px";
			j.innerHTML = this.html;
			this.broken.register(j.firstChild)
		}
		d.prototype = {
			reset: function (f, g) {
				g = g.cloneNode(true);
				var e = f.parentNode;
				e.innerHTML = this.html;
				this.broken.register(e.firstChild);
				e.appendChild(g)
			},
			remove: function (e, f) {
				this.broken.cleanup(f)
			},
			setSize: function (e, f) {
				this.html = this.html.replace(e == "height" ? /(height)="\d+"/ : /(width)="\d+"/, '$1="' + f + '"')
			},
			injectVars: function (e, f) {
				if (e != this.html) {
					return
				}
				this.html = this.html.replace(/(flashvars(=|\"\svalue=)\")[^\"]+/, "$1" + f)
			}
		}
	};
	this.errors = new Y(O);
	var A = this.util = new D(O);
	var W = this.dom = new U(O);
	var T = this.ua = new H(O);
	var G = {
		fragmentIdentifier: new F(O),
		pageLoad: new S(O),
		prefetch: new N(O),
		brokenFlashIE: new b(O)
	};
	this.__resetBrokenMovies = G.brokenFlashIE.reset;
	var J = {
		kwargs: [],
		replaceAll: function (d) {
			for (var c = 0; c < this.kwargs.length; c++) {
				O.replace(this.kwargs[c])
			}
			if (!d) {
				this.kwargs = []
			}
		}
	};
	this.activate = function () {
		if (!T.supported || !this.isEnabled || this.isActive || !C() || a()) {
			return
		}
		//G.prefetch.fetchMovies(arguments);
		this.isActive = true;
		this.setFlashClass();
		G.fragmentIdentifier.cache();
		G.pageLoad.attachUnload();
		if (!this.autoInitialize) {
			return
		}
		G.pageLoad.attach()
	};
	this.setFlashClass = function () {
		if (this.hasFlashClassSet) {
			return
		}
		W.addClass(E.ACTIVE, W.getBody() || document.documentElement);
		this.hasFlashClassSet = true
	};
	this.removeFlashClass = function () {
		if (!this.hasFlashClassSet) {
			return
		}
		W.removeClass(E.ACTIVE, W.getBody());
		W.removeClass(E.ACTIVE, document.documentElement);
		this.hasFlashClassSet = false
	};
	this.initialize = function (c) {
		if (!this.isActive || !this.isEnabled) {
			return
		}
		if (R) {
			if (!c) {
				J.replaceAll(false)
			}
			return
		}
		R = true;
		J.replaceAll(c);
		if (O.repaintOnResize) {
			if (window.addEventListener) {
				window.addEventListener("resize", Z, false)
			} else {
				window.attachEvent("onresize", Z)
			}
		}
		G.prefetch.clear()
	};
	this.replace = function (x, u) {
		if (!T.supported) {
			return
		}
		if (u) {
			x = A.copyProperties(x, u)
		}
		if (!R) {
			return J.kwargs.push(x)
		}
		if (this.onReplacementStart) {
			this.onReplacementStart(x)
		}
		var AM = x.elements || W.querySelectorAll(x.selector);
		if (AM.length == 0) {
			return
		}
		var w = M(x.src);
		var AR = A.convertCssArg(x.css);
		var v = B(x.filters);
		var AN = x.forceSingleLine === true;
		var AS = x.preventWrap === true && !AN;
		var q = AN || (x.fitExactly == null ? this.fitExactly : x.fitExactly) === true;
		var AD = q || (x.forceWidth == null ? this.forceWidth : x.forceWidth) === true;
		var s = x.ratios || [];
		var AE = x.pixelFont === true;
		var r = parseInt(x.tuneHeight) || 0;
		var z = !! x.onRelease || !! x.onRollOver || !! x.onRollOut;
		if (q) {
			A.extractFromCss(AR, ".sIFR-root", "text-align", true)
		}
		var t = A.extractFromCss(AR, ".sIFR-root", "font-size", true) || "0";
		var e = A.extractFromCss(AR, ".sIFR-root", "background-color", true) || "#FFFFFF";
		var o = A.extractFromCss(AR, ".sIFR-root", "kerning", true) || "";
		var AW = A.extractFromCss(AR, ".sIFR-root", "opacity", true) || "100";
		var k = A.extractFromCss(AR, ".sIFR-root", "cursor", true) || "default";
		var AP = parseInt(A.extractFromCss(AR, ".sIFR-root", "leading")) || 0;
		var AJ = x.gridFitType || (A.extractFromCss(AR, ".sIFR-root", "text-align") == "right") ? "subpixel" : "pixel";
		var h = this.forceTextTransform === false ? "none" : A.extractFromCss(AR, ".sIFR-root", "text-transform", true) || "none";
		t = /^\d+(px)?$/.test(t) ? parseInt(t) : 0;
		AW = parseFloat(AW) < 1 ? 100 * parseFloat(AW) : AW;
		var AC = x.modifyCss ? "" : A.cssToString(AR);
		var AG = x.wmode || "";
		if (!AG) {
			if (x.transparent) {
				AG = "transparent"
			} else {
				if (x.opaque) {
					AG = "opaque"
				}
			}
		}
		if (AG == "transparent") {
			if (!T.transparencySupport) {
				AG = "opaque"
			} else {
				e = "transparent"
			}
		} else {
			if (e == "transparent") {
				e = "#FFFFFF"
			}
		}
		for (var AV = 0; AV < AM.length; AV++) {
			var AF = AM[AV];
			if (W.hasOneOfClassses(E.IGNORE_CLASSES, AF) || W.ancestorHasClass(AF, E.ALTERNATE)) {
				continue
			}
			var AO = W.getDimensions(AF);
			var f = AO.height;
			var c = AO.width;
			var AA = W.getComputedStyle(AF, "display");
			if (!f || !c || !AA || AA == "none") {
				continue
			}
			c = W.getWidthFromStyle(AF);
			var n, AH;
			if (!t) {
				var AL = I(AF);
				n = Math.min(this.MAX_FONT_SIZE, Math.max(this.MIN_FONT_SIZE, AL.fontSize));
				if (AE) {
					n = Math.max(8, 8 * Math.round(n / 8))
				}
				AH = AL.lines
			} else {
				n = t;
				AH = 1
			}
			var d = W.create("span", E.ALTERNATE);
			var AX = AF.cloneNode(true);
			AF.parentNode.appendChild(AX);
			for (var AU = 0, AT = AX.childNodes.length; AU < AT; AU++) {
				var m = AX.childNodes[AU];
				if (!/^(style|script)$/i.test(m.nodeName)) {
					d.appendChild(m.cloneNode(true))
				}
			}
			if (x.modifyContent) {
				x.modifyContent(AX, x.selector)
			}
			if (x.modifyCss) {
				AC = x.modifyCss(AR, AX, x.selector)
			}
			var p = P(AX, h, x.uriEncode);
			AX.parentNode.removeChild(AX);
			if (x.modifyContentString) {
				p.text = x.modifyContentString(p.text, x.selector)
			}
			if (p.text == "") {
				continue
			}
			var AK = Math.round(AH * V(n, s) * n) + this.FLASH_PADDING_BOTTOM + r;
			if (AH > 1 && AP) {
				AK += Math.round((AH - 1) * AP)
			}
			var AB = AD ? c : "100%";
			var AI = "sIFR_replacement_" + L++;
			var AQ = ["id=" + AI, "content=" + A.escape(p.text), "width=" + c, "renderheight=" + AK, "link=" + A.escape(p.primaryLink.href || ""), "target=" + A.escape(p.primaryLink.target || ""), "size=" + n, "css=" + A.escape(AC), "cursor=" + k, "tunewidth=" + (x.tuneWidth || 0), "tuneheight=" + r, "offsetleft=" + (x.offsetLeft || ""), "offsettop=" + (x.offsetTop || ""), "fitexactly=" + q, "preventwrap=" + AS, "forcesingleline=" + AN, "antialiastype=" + (x.antiAliasType || ""), "thickness=" + (x.thickness || ""), "sharpness=" + (x.sharpness || ""), "kerning=" + o, "gridfittype=" + AJ, "flashfilters=" + v, "opacity=" + AW, "blendmode=" + (x.blendMode || ""), "selectable=" + (x.selectable == null || AG != "" && !sIFR.ua.macintosh && sIFR.ua.gecko && sIFR.ua.geckoVersion >= sIFR.ua.parseVersion("1.9") ? "true" : x.selectable === true), "fixhover=" + (this.fixHover === true), "events=" + z, "delayrun=" + G.brokenFlashIE.fixFlash, "version=" + this.VERSION];
			var y = A.encodeVars(AQ);
			var g = new K(O, AI, AQ, AD, {
				onReplacement: x.onReplacement,
				onRollOver: x.onRollOver,
				onRollOut: x.onRollOut,
				onRelease: x.onRelease
			});
			g.movie = X.create(sIFR, G.brokenFlashIE, AF, T.fixFocus && x.fixFocus, AI, w, AB, AK, y, AG, e);
			this.replacements.push(g);
			this.replacements[AI] = g;
			if (x.selector) {
				if (!this.replacements[x.selector]) {
					this.replacements[x.selector] = [g]
				} else {
					this.replacements[x.selector].push(g)
				}
			}
			d.setAttribute("id", AI + "_alternate");
			AF.appendChild(d);
			W.addClass(E.REPLACED, AF)
		}
		G.fragmentIdentifier.restore()
	};
	this.getReplacementByFlashElement = function (d) {
		for (var c = 0; c < O.replacements.length; c++) {
			if (O.replacements[c].id == d.getAttribute("id")) {
				return O.replacements[c]
			}
		}
	};
	this.redraw = function () {
		for (var c = 0; c < O.replacements.length; c++) {
			O.replacements[c].resetMovie()
		}
	};
	this.prepareClearReferences = function () {
		G.brokenFlashIE.prepareClearReferences()
	};
	this.clearReferences = function () {
		G.brokenFlashIE.clearReferences();
		G = null;
		J = null;
		delete O.replacements
	};

	function C() {
		if (O.domains.length == 0) {
			return true
		}
		var d = A.domain();
		for (var c = 0; c < O.domains.length; c++) {
			if (A.domainMatches(d, O.domains[c])) {
				return true
			}
		}
		return false
	}
	function a() {
		if (document.location.protocol == "file:") {
			if (O.debug) {
				O.errors.fire("isFile")
			}
			return true
		}
		return false
	}
	function M(c) {
		if (T.ie && c.charAt(0) == "/") {
			c = window.location.toString().replace(/([^:]+)(:\/?\/?)([^\/]+).*/, "$1$2$3") + c
		}
		return c
	}
	function V(d, e) {
		for (var c = 0; c < e.length; c += 2) {
			if (d <= e[c]) {
				return e[c + 1]
			}
		}
		return e[e.length - 1] || 1
	}
	function B(g) {
		var e = [];
		for (var d in g) {
			if (g[d] == Object.prototype[d]) {
				continue
			}
			var c = g[d];
			d = [d.replace(/filter/i, "") + "Filter"];
			for (var f in c) {
				if (c[f] == Object.prototype[f]) {
					continue
				}
				d.push(f + ":" + A.escape(A.toJson(c[f], A.toHexString)))
			}
			e.push(d.join(","))
		}
		return A.escape(e.join(";"))
	}
	function Z(d) {
		var e = Z.viewport;
		var c = W.getViewport();
		if (e && c.width == e.width && c.height == e.height) {
			return
		}
		Z.viewport = c;
		if (O.replacements.length == 0) {
			return
		}
		if (Z.timer) {
			clearTimeout(Z.timer)
		}
		Z.timer = setTimeout(function () {
			delete Z.timer;
			for (var f = 0; f < O.replacements.length; f++) {
				O.replacements[f].resize()
			}
		}, 200)
	}
	function I(f) {
		var g = W.getComputedStyle(f, "fontSize");
		var d = g.indexOf("px") == -1;
		var e = f.innerHTML;
		if (d) {
			f.innerHTML = "X"
		}
		f.style.paddingTop = f.style.paddingBottom = f.style.borderTopWidth = f.style.borderBottomWidth = "0px";
		f.style.lineHeight = "2em";
		f.style.display = "block";
		g = d ? f.offsetHeight / 2 : parseInt(g, 10);
		if (d) {
			f.innerHTML = e
		}
		var c = Math.round(f.offsetHeight / (2 * g));
		f.style.paddingTop = f.style.paddingBottom = f.style.borderTopWidth = f.style.borderBottomWidth = f.style.lineHeight = f.style.display = "";
		if (isNaN(c) || !isFinite(c) || c == 0) {
			c = 1
		}
		return {
			fontSize: g,
			lines: c
		}
	}
	function P(c, g, s) {
		s = s || A.uriEncode;
		var q = [],
			m = [];
		var k = null;
		var e = c.childNodes;
		var o = false,
			p = false;
		var j = 0;
		while (j < e.length) {
			var f = e[j];
			if (f.nodeType == 3) {
				var t = A.textTransform(g, A.normalize(f.nodeValue)).replace(/</g, "&lt;");
				if (o && p) {
					t = t.replace(/^\s+/, "")
				}
				m.push(t);
				o = /\s$/.test(t);
				p = false
			}
			if (f.nodeType == 1 && !/^(style|script)$/i.test(f.nodeName)) {
				var h = [];
				var r = f.nodeName.toLowerCase();
				var n = f.className || "";
				if (/\s+/.test(n)) {
					if (n.indexOf(E.CLASS) > -1) {
						n = n.match("(\\s|^)" + E.CLASS + "-([^\\s$]*)(\\s|$)")[2]
					} else {
						n = n.match(/^([^\s]+)/)[1]
					}
				}
				if (n != "") {
					h.push('class="' + n + '"')
				}
				if (r == "a") {
					var d = s(f.getAttribute("href") || "");
					var l = f.getAttribute("target") || "";
					h.push('href="' + d + '"', 'target="' + l + '"');
					if (!k) {
						k = {
							href: d,
							target: l
						}
					}
				}
				m.push("<" + r + (h.length > 0 ? " " : "") + h.join(" ") + ">");
				p = true;
				if (f.hasChildNodes()) {
					q.push(j);
					j = 0;
					e = f.childNodes;
					continue
				} else {
					if (!/^(br|img)$/i.test(f.nodeName)) {
						m.push("</", f.nodeName.toLowerCase(), ">")
					}
				}
			}
			if (q.length > 0 && !f.nextSibling) {
				do {
					j = q.pop();
					e = f.parentNode.parentNode.childNodes;
					f = e[j];
					if (f) {
						m.push("</", f.nodeName.toLowerCase(), ">")
					}
				} while (j == e.length - 1 && q.length > 0)
			}
			j++
		}
		return {
			text: m.join("").replace(/^\s+|\s+$|\s*(<br>)\s*/g, "$1"),
			primaryLink: k || {}
		}
	}
};
var parseSelector = (function () {
	var B = /\s*,\s*/;
	var A = /\s*([\s>+~(),]|^|$)\s*/g;
	var L = /([\s>+~,]|[^(]\+|^)([#.:@])/g;
	var F = /(^|\))[^\s>+~]/g;
	var M = /(\)|^)/;
	var K = /[\s#.:>+~()@]|[^\s#.:>+~()@]+/g;

	function H(R, P) {
		P = P || document.documentElement;
		var S = R.split(B),
			X = [];
		for (var U = 0; U < S.length; U++) {
			var N = [P],
				W = G(S[U]);
			for (var T = 0; T < W.length;) {
				var Q = W[T++],
					O = W[T++],
					V = "";
				if (W[T] == "(") {
					while (W[T++] != ")" && T < W.length) {
						V += W[T]
					}
					V = V.slice(0, -1)
				}
				N = I(N, Q, O, V)
			}
			X = X.concat(N)
		}
		return X
	}
	function G(N) {
		var O = N.replace(A, "$1").replace(L, "$1*$2").replace(F, D);
		return O.match(K) || []
	}
	function D(N) {
		return N.replace(M, "$1 ")
	}
	function I(N, P, Q, O) {
		return (H.selectors[P]) ? H.selectors[P](N, Q, O) : []
	}
	var E = {
		toArray: function (O) {
			var N = [];
			for (var P = 0; P < O.length; P++) {
				N.push(O[P])
			}
			return N
		}
	};
	var C = {
		isTag: function (O, N) {
			return (N == "*") || (N.toLowerCase() == O.nodeName.toLowerCase())
		},
		previousSiblingElement: function (N) {
			do {
				N = N.previousSibling
			} while (N && N.nodeType != 1);
			return N
		},
		nextSiblingElement: function (N) {
			do {
				N = N.nextSibling
			} while (N && N.nodeType != 1);
			return N
		},
		hasClass: function (N, O) {
			return (O.className || "").match("(^|\\s)" + N + "(\\s|$)")
		},
		getByTag: function (N, O) {
			return O.getElementsByTagName(N)
		}
	};
	var J = {
		"#": function (N, P) {
			for (var O = 0; O < N.length; O++) {
				if (N[O].getAttribute("id") == P) {
					return [N[O]]
				}
			}
			return []
		},
		" ": function (O, Q) {
			var N = [];
			for (var P = 0; P < O.length; P++) {
				N = N.concat(E.toArray(C.getByTag(Q, O[P])))
			}
			return N
		},
		">": function (O, R) {
			var N = [];
			for (var Q = 0, S; Q < O.length; Q++) {
				S = O[Q];
				for (var P = 0, T; P < S.childNodes.length; P++) {
					T = S.childNodes[P];
					if (T.nodeType == 1 && C.isTag(T, R)) {
						N.push(T)
					}
				}
			}
			return N
		},
		".": function (O, Q) {
			var N = [];
			for (var P = 0, R; P < O.length; P++) {
				R = O[P];
				if (C.hasClass([Q], R)) {
					N.push(R)
				}
			}
			return N
		},
		":": function (N, P, O) {
			return (H.pseudoClasses[P]) ? H.pseudoClasses[P](N, O) : []
		}
	};
	H.selectors = J;
	H.pseudoClasses = {};
	H.util = E;
	H.dom = C;
	return H
})();
