/*
 * Copyright (c) 2009 Simo Kinnunen.
 * Licensed under the MIT license.
 *
 * @version 1.02
 */
var Cufon = (function() {
	var m = function() {
		return m.replace.apply(null, arguments)
	};
	var x = m.DOM = {
		ready : (function() {
			var C = false, E = {
				loaded : 1,
				complete : 1
			};
			var B = [], D = function() {
				if (C) {
					return
				}
				C = true;
				for ( var F; F = B.shift(); F()) {
				}
			};
			if (document.addEventListener) {
				document.addEventListener("DOMContentLoaded", D, false);
				window.addEventListener("pageshow", D, false)
			}
			if (!window.opera && document.readyState) {
				(function() {
					E[document.readyState] ? D() : setTimeout(arguments.callee,
							10)
				})()
			}
			if (document.readyState && document.createStyleSheet) {
				(function() {
					try {
						document.body.doScroll("left");
						D()
					} catch (F) {
						setTimeout(arguments.callee, 1)
					}
				})()
			}
			q(window, "load", D);
			return function(F) {
				if (!arguments.length) {
					D()
				} else {
					C ? F() : B.push(F)
				}
			}
		})(),
		root : function() {
			return document.documentElement || document.body
		}
	};
	var n = m.CSS = {
		Size : function(C, B) {
			this.value = parseFloat(C);
			this.unit = String(C).match(/[a-z%]*$/)[0] || "px";
			this.convert = function(D) {
				return D / B * this.value
			};
			this.convertFrom = function(D) {
				return D / this.value * B
			};
			this.toString = function() {
				return this.value + this.unit
			}
		},
		addClass : function(C, B) {
			var D = C.className;
			C.className = D + (D && " ") + B;
			return C
		},
		color : j(function(C) {
			var B = {};
			B.color = C.replace(/^rgba\((.*?),\s*([\d.]+)\)/,
					function(E, D, F) {
						B.opacity = parseFloat(F);
						return "rgb(" + D + ")"
					});
			return B
		}),
		fontStretch : j(function(B) {
			if (typeof B == "number") {
				return B
			}
			if (/%$/.test(B)) {
				return parseFloat(B) / 100
			}
			return {
				"ultra-condensed" : 0.5,
				"extra-condensed" : 0.625,
				condensed : 0.75,
				"semi-condensed" : 0.875,
				"semi-expanded" : 1.125,
				expanded : 1.25,
				"extra-expanded" : 1.5,
				"ultra-expanded" : 2
			}[B] || 1
		}),
		getStyle : function(C) {
			var B = document.defaultView;
			if (B && B.getComputedStyle) {
				return new a(B.getComputedStyle(C, null))
			}
			if (C.currentStyle) {
				return new a(C.currentStyle)
			}
			return new a(C.style)
		},
		gradient : j(function(F) {
			var G = {
				id : F,
				type : F.match(/^-([a-z]+)-gradient\(/)[1],
				stops : []
			}, C = F.substr(F.indexOf("(")).match(
					/([\d.]+=)?(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)/ig);
			for ( var E = 0, B = C.length, D; E < B; ++E) {
				D = C[E].split("=", 2).reverse();
				G.stops.push( [ D[1] || E / (B - 1), D[0] ])
			}
			return G
		}),
		hasClass : function(C, B) {
			return RegExp("(?:^|\\s)" + B + "(?=\\s|$)").test(C.className)
		},
		quotedList : j(function(E) {
			var D = [], C = /\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g, B;
			while (B = C.exec(E)) {
				D.push(B[3] || B[1])
			}
			return D
		}),
		recognizesMedia : j(function(G) {
			var E = document.createElement("style"), D, C, B;
			E.type = "text/css";
			E.media = G;
			try {
				E.appendChild(document.createTextNode("/**/"))
			} catch (F) {
			}
			C = g("head")[0];
			C.insertBefore(E, C.firstChild);
			D = (E.sheet || E.styleSheet);
			B = D && !D.disabled;
			C.removeChild(E);
			return B
		}),
		removeClass : function(D, C) {
			var B = RegExp("(?:^|\\s+)" + C + "(?=\\s|$)", "g");
			D.className = D.className.replace(B, "");
			return D
		},
		supports : function(D, C) {
			var B = document.createElement("span").style;
			if (B[D] === undefined) {
				return false
			}
			B[D] = C;
			return B[D] === C
		},
		textAlign : function(E, D, B, C) {
			if (D.get("textAlign") == "right") {
				if (B > 0) {
					E = " " + E
				}
			} else {
				if (B < C - 1) {
					E += " "
				}
			}
			return E
		},
		textDecoration : function(G, F) {
			if (!F) {
				F = this.getStyle(G)
			}
			var C = {
				underline : null,
				overline : null,
				"line-through" : null
			};
			for ( var B = G; B.parentNode && B.parentNode.nodeType == 1;) {
				var E = true;
				for ( var D in C) {
					if (!k(C, D) || C[D]) {
						continue
					}
					if (F.get("textDecoration").indexOf(D) != -1) {
						C[D] = F.get("color")
					}
					E = false
				}
				if (E) {
					break
				}
				F = this.getStyle(B = B.parentNode)
			}
			return C
		},
		textShadow : j(function(F) {
			if (F == "none") {
				return null
			}
			var E = [], G = {}, B, C = 0;
			var D = /(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)|(-?[\d.]+[a-z%]*)|,/ig;
			while (B = D.exec(F)) {
				if (B[0] == ",") {
					E.push(G);
					G = {};
					C = 0
				} else {
					if (B[1]) {
						G.color = B[1]
					} else {
						G[ [ "offX", "offY", "blur" ][C++]] = B[2]
					}
				}
			}
			E.push(G);
			return E
		}),
		textTransform : (function() {
			var B = {
				uppercase : function(C) {
					return C.toUpperCase()
				},
				lowercase : function(C) {
					return C.toLowerCase()
				},
				capitalize : function(C) {
					return C.replace(/\b./g, function(D) {
						return D.toUpperCase()
					})
				}
			};
			return function(E, D) {
				var C = B[D.get("textTransform")];
				return C ? C(E) : E
			}
		})(),
		whiteSpace : (function() {
			var B = {
				inline : 1,
				"inline-block" : 1,
				"run-in" : 1
			};
			return function(E, C, D) {
				if (B[C.get("display")]) {
					return E
				}
				if (!D.previousSibling) {
					E = E.replace(/^\s+/, "")
				}
				if (!D.nextSibling) {
					E = E.replace(/\s+$/, "")
				}
				return E
			}
		})()
	};
	n.ready = (function() {
		var B = !n.recognizesMedia("all"), E = false;
		var D = [], H = function() {
			B = true;
			for ( var K; K = D.shift(); K()) {
			}
		};
		var I = g("link"), J = g("style");
		function C(K) {
			return K.disabled || G(K.sheet, K.media || "screen")
		}
		function G(M, P) {
			if (!n.recognizesMedia(P || "all")) {
				return true
			}
			if (!M || M.disabled) {
				return false
			}
			try {
				var Q = M.cssRules, O;
				if (Q) {
					search: for ( var L = 0, K = Q.length; O = Q[L], L < K; ++L) {
						switch (O.type) {
						case 2:
							break;
						case 3:
							if (!G(O.styleSheet, O.media.mediaText)) {
								return false
							}
							break;
						default:
							break search
						}
					}
				}
			} catch (N) {
			}
			return true
		}
		function F() {
			if (document.createStyleSheet) {
				return true
			}
			var L, K;
			for (K = 0; L = I[K]; ++K) {
				if (L.rel.toLowerCase() == "stylesheet" && !C(L)) {
					return false
				}
			}
			for (K = 0; L = J[K]; ++K) {
				if (!C(L)) {
					return false
				}
			}
			return true
		}
		x.ready(function() {
			if (!E) {
				E = n.getStyle(document.body).isUsable()
			}
			if (B || (E && F())) {
				H()
			} else {
				setTimeout(arguments.callee, 10)
			}
		});
		return function(K) {
			if (B) {
				K()
			} else {
				D.push(K)
			}
		}
	})();
	function s(C) {
		var B = this.face = C.face;
		this.glyphs = C.glyphs;
		this.w = C.w;
		this.baseSize = parseInt(B["units-per-em"], 10);
		this.family = B["font-family"].toLowerCase();
		this.weight = B["font-weight"];
		this.style = B["font-style"] || "normal";
		this.viewBox = (function() {
			var E = B.bbox.split(/\s+/);
			var D = {
				minX : parseInt(E[0], 10),
				minY : parseInt(E[1], 10),
				maxX : parseInt(E[2], 10),
				maxY : parseInt(E[3], 10)
			};
			D.width = D.maxX - D.minX;
			D.height = D.maxY - D.minY;
			D.toString = function() {
				return [ this.minX, this.minY, this.width, this.height ]
						.join(" ")
			};
			return D
		})();
		this.ascent = -parseInt(B.ascent, 10);
		this.descent = -parseInt(B.descent, 10);
		this.height = -this.ascent + this.descent
	}
	function f() {
		var C = {}, B = {
			oblique : "italic",
			italic : "oblique"
		};
		this.add = function(D) {
			(C[D.style] || (C[D.style] = {}))[D.weight] = D
		};
		this.get = function(H, I) {
			var G = C[H] || C[B[H]] || C.normal || C.italic || C.oblique;
			if (!G) {
				return null
			}
			I = {
				normal : 400,
				bold : 700
			}[I] || parseInt(I, 10);
			if (G[I]) {
				return G[I]
			}
			var E = {
				1 : 1,
				99 : 0
			}[I % 100], K = [], F, D;
			if (E === undefined) {
				E = I > 400
			}
			if (I == 500) {
				I = 400
			}
			for ( var J in G) {
				if (!k(G, J)) {
					continue
				}
				J = parseInt(J, 10);
				if (!F || J < F) {
					F = J
				}
				if (!D || J > D) {
					D = J
				}
				K.push(J)
			}
			if (I < F) {
				I = F
			}
			if (I > D) {
				I = D
			}
			K.sort(function(M, L) {
				return (E ? (M > I && L > I) ? M < L : M > L
						: (M < I && L < I) ? M > L : M < L) ? -1 : 1
			});
			return G[K[0]]
		}
	}
	function r() {
		function D(F, G) {
			if (F.contains) {
				return F.contains(G)
			}
			return F.compareDocumentPosition(G) & 16
		}
		function B(G) {
			var F = G.relatedTarget;
			if (!F || D(this, F)) {
				return
			}
			C(this)
		}
		function E(F) {
			C(this)
		}
		function C(F) {
			setTimeout(function() {
				m.replace(F, d.get(F).options, true)
			}, 10)
		}
		this.attach = function(F) {
			if (F.onmouseenter === undefined) {
				q(F, "mouseover", B);
				q(F, "mouseout", B)
			} else {
				q(F, "mouseenter", E);
				q(F, "mouseleave", E)
			}
		}
	}
	function u() {
		var C = [], D = {};
		function B(H) {
			var E = [], G;
			for ( var F = 0; G = H[F]; ++F) {
				E[F] = C[D[G]]
			}
			return E
		}
		this.add = function(F, E) {
			D[F] = C.push(E) - 1
		};
		this.repeat = function() {
			var E = arguments.length ? B(arguments) : C, F;
			for ( var G = 0; F = E[G++];) {
				m.replace(F[0], F[1], true)
			}
		}
	}
	function A() {
		var D = {}, B = 0;
		function C(E) {
			return E.cufid || (E.cufid = ++B)
		}
		this.get = function(E) {
			var F = C(E);
			return D[F] || (D[F] = {})
		}
	}
	function a(B) {
		var D = {}, C = {};
		this.extend = function(E) {
			for ( var F in E) {
				if (k(E, F)) {
					D[F] = E[F]
				}
			}
			return this
		};
		this.get = function(E) {
			return D[E] != undefined ? D[E] : B[E]
		};
		this.getSize = function(F, E) {
			return C[F] || (C[F] = new n.Size(this.get(F), E))
		};
		this.isUsable = function() {
			return !!B
		}
	}
	function q(C, B, D) {
		if (C.addEventListener) {
			C.addEventListener(B, D, false)
		} else {
			if (C.attachEvent) {
				C.attachEvent("on" + B, function() {
					return D.call(C, window.event)
				})
			}
		}
	}
	function v(C, B) {
		var D = d.get(C);
		if (D.options) {
			return C
		}
		if (B.hover && B.hoverables[C.nodeName.toLowerCase()]) {
			b.attach(C)
		}
		D.options = B;
		return C
	}
	function j(B) {
		var C = {};
		return function(D) {
			if (!k(C, D)) {
				C[D] = B.apply(null, arguments)
			}
			return C[D]
		}
	}
	function c(F, E) {
		var B = n.quotedList(E.get("fontFamily").toLowerCase()), D;
		for ( var C = 0; D = B[C]; ++C) {
			if (i[D]) {
				return i[D].get(E.get("fontStyle"), E.get("fontWeight"))
			}
		}
		return null
	}
	function g(B) {
		return document.getElementsByTagName(B)
	}
	function k(C, B) {
		return C.hasOwnProperty(B)
	}
	function h() {
		var B = {}, D, F;
		for ( var E = 0, C = arguments.length; D = arguments[E], E < C; ++E) {
			for (F in D) {
				if (k(D, F)) {
					B[F] = D[F]
				}
			}
		}
		return B
	}
	function o(E, M, C, N, F, D) {
		var K = document.createDocumentFragment(), H;
		if (M === "") {
			return K
		}
		var L = N.separate;
		var I = M.split(p[L]), B = (L == "words");
		if (B && t) {
			if (/^\s/.test(M)) {
				I.unshift("")
			}
			if (/\s$/.test(M)) {
				I.push("")
			}
		}
		for ( var J = 0, G = I.length; J < G; ++J) {
			H = z[N.engine](E, B ? n.textAlign(I[J], C, J, G) : I[J], C, N, F,
					D, J < G - 1);
			if (H) {
				K.appendChild(H)
			}
		}
		return K
	}
	function l(C, J) {
		var B = n.getStyle(v(C, J)).extend(J);
		var D = c(C, B), E, H, G, F, I;
		for (E = C.firstChild; E; E = G) {
			H = E.nodeType;
			G = E.nextSibling;
			if (H == 3) {
				if (F) {
					F.appendData(E.data);
					C.removeChild(E)
				} else {
					F = E
				}
				if (G) {
					continue
				}
			}
			if (F) {
				C.replaceChild(o(D, n.whiteSpace(F.data, B, F), B, J, E, C), F);
				F = null
			}
			if (H == 1 && E.firstChild) {
				if (n.hasClass(E, "cufon")) {
					z[J.engine](D, null, B, J, E, C)
				} else {
					arguments.callee(E, J)
				}
			}
		}
	}
	var t = " ".split(/\s+/).length == 0;
	var d = new A();
	var b = new r();
	var y = new u();
	var e = false;
	var z = {}, i = {}, w = {
		enableTextDecoration : false,
		engine : null,
		forceHitArea : false,
		hover : false,
		hoverables : {
			a : true
		},
		printable : true,
		selector : (window.Sizzle || (window.jQuery && function(B) {
			return jQuery(B)
		}) || (window.dojo && dojo.query) || (window.Ext && Ext.query)
				|| (window.$$ && function(B) {
					return $$(B)
				}) || (window.$ && function(B) {
					return $(B)
				}) || (document.querySelectorAll && function(B) {
					return document.querySelectorAll(B)
				}) || g),
		separate : "words",
		textShadow : "none"
	};
	var p = {
		words : /[^\S\u00a0]+/,
		characters : "",
		none : /^/
	};
	m.now = function() {
		x.ready();
		return m
	};
	m.refresh = function() {
		y.repeat.apply(y, arguments);
		return m
	};
	m.registerEngine = function(C, B) {
		if (!B) {
			return m
		}
		z[C] = B;
		return m.set("engine", C)
	};
	m.registerFont = function(D) {
		var B = new s(D), C = B.family;
		if (!i[C]) {
			i[C] = new f()
		}
		i[C].add(B);
		return m.set("fontFamily", '"' + C + '"')
	};
	m.replace = function(D, C, B) {
		C = h(w, C);
		if (!C.engine) {
			return m
		}
		if (!e) {
			n.addClass(x.root(), "cufon-active cufon-loading");
			n.ready(function() {
				n.addClass(n.removeClass(x.root(), "cufon-loading"),
						"cufon-ready")
			});
			e = true
		}
		if (C.hover) {
			C.forceHitArea = true
		}
		if (typeof C.textShadow == "string") {
			C.textShadow = n.textShadow(C.textShadow)
		}
		if (typeof C.color == "string" && /^-/.test(C.color)) {
			C.textGradient = n.gradient(C.color)
		}
		if (!B) {
			y.add(D, arguments)
		}
		if (D.nodeType || typeof D == "string") {
			D = [ D ]
		}
		n.ready(function() {
			for ( var F = 0, E = D.length; F < E; ++F) {
				var G = D[F];
				if (typeof G == "string") {
					m.replace(C.selector(G), C, true)
				} else {
					l(G, C)
				}
			}
		});
		return m
	};
	m.set = function(B, C) {
		w[B] = C;
		return m
	};
	return m
})();
Cufon
		.registerEngine(
				"canvas",
				(function() {
					var b = document.createElement("canvas");
					if (!b || !b.getContext || !b.getContext.apply) {
						return
					}
					b = null;
					var a = Cufon.CSS.supports("display", "inline-block");
					var e = !a
							&& (document.compatMode == "BackCompat" || /frameset|transitional/i
									.test(document.doctype.publicId));
					var f = document.createElement("style");
					f.type = "text/css";
					f
							.appendChild(document
									.createTextNode((".cufon-canvas{text-indent:0;}@media screen,projection{.cufon-canvas{display:inline;display:inline-block;position:relative;vertical-align:middle;"
											+ (e ? ""
													: "font-size:1px;line-height:1px;")
											+ "}.cufon-canvas .cufon-alt{display:-moz-inline-box;display:inline-block;width:0;height:0;overflow:hidden;text-indent:-10000in;}"
											+ (a ? ".cufon-canvas canvas{position:relative;}"
													: ".cufon-canvas canvas{position:absolute;}") + "}@media print{.cufon-canvas{padding:0;}.cufon-canvas canvas{display:none;}.cufon-canvas .cufon-alt{display:inline;}}")
											.replace(/;/g, "!important;")));
					document.getElementsByTagName("head")[0].appendChild(f);
					function d(p, h) {
						var n = 0, m = 0;
						var g = [], o = /([mrvxe])([^a-z]*)/g, k;
						generate: for ( var j = 0; k = o.exec(p); ++j) {
							var l = k[2].split(",");
							switch (k[1]) {
							case "v":
								g[j] = {
									m : "bezierCurveTo",
									a : [ n + ~~l[0], m + ~~l[1], n + ~~l[2],
											m + ~~l[3], n += ~~l[4],
											m += ~~l[5] ]
								};
								break;
							case "r":
								g[j] = {
									m : "lineTo",
									a : [ n += ~~l[0], m += ~~l[1] ]
								};
								break;
							case "m":
								g[j] = {
									m : "moveTo",
									a : [ n = ~~l[0], m = ~~l[1] ]
								};
								break;
							case "x":
								g[j] = {
									m : "closePath"
								};
								break;
							case "e":
								break generate
							}
							h[g[j].m].apply(h, g[j].a)
						}
						return g
					}
					function c(m, k) {
						for ( var j = 0, h = m.length; j < h; ++j) {
							var g = m[j];
							k[g.m].apply(k, g.a)
						}
					}
					return function(ah, H, Z, D, L, ai) {
						var n = (H === null);
						if (n) {
							H = L.alt
						}
						var J = ah.viewBox;
						var p = Z.getSize("fontSize", ah.baseSize);
						var X = Z.get("letterSpacing");
						X = (X == "normal") ? 0 : p
								.convertFrom(parseInt(X, 10));
						var K = 0, Y = 0, W = 0, F = 0;
						var I = D.textShadow, U = [];
						if (I) {
							for ( var ag = I.length; ag--;) {
								var O = I[ag];
								var T = p.convertFrom(parseFloat(O.offX));
								var R = p.convertFrom(parseFloat(O.offY));
								U[ag] = [ T, R ];
								if (R < K) {
									K = R
								}
								if (T > Y) {
									Y = T
								}
								if (R > W) {
									W = R
								}
								if (T < F) {
									F = T
								}
							}
						}
						var al = Cufon.CSS.textTransform(H, Z).split(""), B;
						var o = ah.glyphs, E, r, ac;
						var h = 0, v, N = [];
						for ( var ag = 0, ae = 0, ab = al.length; ag < ab; ++ag) {
							E = o[B = al[ag]] || ah.missingGlyph;
							if (!E) {
								continue
							}
							if (r) {
								h -= ac = r[B] || 0;
								N[ae - 1] -= ac
							}
							h += v = N[ae++] = ~~(E.w || ah.w) + X;
							r = E.k
						}
						if (v === undefined) {
							return null
						}
						Y += J.width - v;
						F += J.minX;
						var C, q;
						if (n) {
							C = L;
							q = L.firstChild
						} else {
							C = document.createElement("span");
							C.className = "cufon cufon-canvas";
							C.alt = H;
							q = document.createElement("canvas");
							C.appendChild(q);
							if (D.printable) {
								var ad = document.createElement("span");
								ad.className = "cufon-alt";
								ad.appendChild(document.createTextNode(H));
								C.appendChild(ad)
							}
						}
						var am = C.style;
						var Q = q.style;
						var m = p.convert(J.height);
						var ak = Math.ceil(m);
						var V = ak / m;
						var P = V * Cufon.CSS.fontStretch(Z.get("fontStretch"));
						var S = h * P;
						var aa = Math.ceil(p.convert(S + Y - F));
						var t = Math.ceil(p.convert(J.height - K + W));
						q.width = aa;
						q.height = t;
						Q.width = aa + "px";
						Q.height = t + "px";
						K += J.minY;
						Q.top = Math.round(p.convert(K - ah.ascent)) + "px";
						Q.left = Math.round(p.convert(F)) + "px";
						var A = Math.ceil(p.convert(S)) + "px";
						if (a) {
							am.width = A;
							am.height = p.convert(ah.height) + "px"
						} else {
							am.paddingLeft = A;
							am.paddingBottom = (p.convert(ah.height) - 1)
									+ "px"
						}
						var aj = q.getContext("2d"), M = m / J.height;
						aj.scale(M, M * V);
						aj.translate(-F, -K);
						aj.lineWidth = ah.face["underline-thickness"];
						aj.save();
						function s(i, g) {
							aj.strokeStyle = g;
							aj.beginPath();
							aj.moveTo(0, i);
							aj.lineTo(h, i);
							aj.stroke()
						}
						var u = D.enableTextDecoration ? Cufon.CSS
								.textDecoration(ai, Z) : {};
						if (u.underline) {
							s(-ah.face["underline-position"], u.underline)
						}
						if (u.overline) {
							s(ah.ascent, u.overline)
						}
						function af() {
							aj.scale(P, 1);
							for ( var x = 0, k = 0, g = al.length; x < g; ++x) {
								var y = o[al[x]] || ah.missingGlyph;
								if (!y) {
									continue
								}
								if (y.d) {
									aj.beginPath();
									if (y.code) {
										c(y.code, aj)
									} else {
										y.code = d("m" + y.d, aj)
									}
									aj.fill()
								}
								aj.translate(N[k++], 0)
							}
							aj.restore()
						}
						if (I) {
							for ( var ag = I.length; ag--;) {
								var O = I[ag];
								aj.save();
								aj.fillStyle = O.color;
								aj.translate.apply(aj, U[ag]);
								af()
							}
						}
						var z = D.textGradient;
						if (z) {
							var G = z.stops, w = aj.createLinearGradient(0,
									J.minY, 0, J.maxY);
							for ( var ag = 0, ab = G.length; ag < ab; ++ag) {
								w.addColorStop.apply(w, G[ag])
							}
							aj.fillStyle = w
						} else {
							aj.fillStyle = Z.get("color")
						}
						af();
						if (u["line-through"]) {
							s(-ah.descent, u["line-through"])
						}
						return C
					}
				})());
Cufon
		.registerEngine(
				"vml",
				(function() {
					var e = document.namespaces;
					if (!e) {
						return
					}
					e.add("cvml", "urn:schemas-microsoft-com:vml");
					e = null;
					var b = document.createElement("cvml:shape");
					b.style.behavior = "url(#default#VML)";
					if (!b.coordsize) {
						return
					}
					b = null;
					var g = (document.documentMode || 0) < 8;
					document
							.write(('<style type="text/css">.cufon-vml-canvas{text-indent:0;}@media screen{cvml\\:shape,cvml\\:rect,cvml\\:fill,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute;}.cufon-vml-canvas{position:absolute;text-align:left;}.cufon-vml{display:inline-block;position:relative;vertical-align:' + (g ? "middle"
									: "text-bottom") + ";}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px;}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none;}.cufon-vml .cufon-alt{display:inline;}}</style>")
									.replace(/;/g, "!important;"));
					function c(h, i) {
						return a(h, /(?:em|ex|%)$|^[a-z-]+$/i.test(i) ? "1em"
								: i)
					}
					function a(k, l) {
						if (/px$/i.test(l)) {
							return parseFloat(l)
						}
						var j = k.style.left, i = k.runtimeStyle.left;
						k.runtimeStyle.left = k.currentStyle.left;
						k.style.left = l.replace("%", "em");
						var h = k.style.pixelLeft;
						k.style.left = j;
						k.runtimeStyle.left = i;
						return h
					}
					var f = {};
					function d(o) {
						var p = o.id;
						if (!f[p]) {
							var m = o.stops, n = document
									.createElement("cvml:fill"), h = [];
							n.type = "gradient";
							n.angle = 180;
							n.focus = "0";
							n.method = "sigma";
							n.color = m[0][1];
							for ( var l = 1, i = m.length - 1; l < i; ++l) {
								h.push(m[l][0] * 100 + "% " + m[l][1])
							}
							n.colors = h.join(",");
							n.color2 = m[i][1];
							f[p] = n
						}
						return f[p]
					}
					return function(aj, K, ad, G, O, ak, ab) {
						var o = (K === null);
						if (o) {
							K = O.alt
						}
						var M = aj.viewBox;
						var q = ad.computedFontSize
								|| (ad.computedFontSize = new Cufon.CSS.Size(c(
										ak, ad.get("fontSize"))
										+ "px", aj.baseSize));
						var aa = ad.computedLSpacing;
						if (aa == undefined) {
							aa = ad.get("letterSpacing");
							ad.computedLSpacing = aa = (aa == "normal") ? 0
									: ~~q.convertFrom(a(ak, aa))
						}
						var C, r;
						if (o) {
							C = O;
							r = O.firstChild
						} else {
							C = document.createElement("span");
							C.className = "cufon cufon-vml";
							C.alt = K;
							r = document.createElement("span");
							r.className = "cufon-vml-canvas";
							C.appendChild(r);
							if (G.printable) {
								var ag = document.createElement("span");
								ag.className = "cufon-alt";
								ag.appendChild(document.createTextNode(K));
								C.appendChild(ag)
							}
							if (!ab) {
								C.appendChild(document
										.createElement("cvml:shape"))
							}
						}
						var ap = C.style;
						var V = r.style;
						var m = q.convert(M.height), am = Math.ceil(m);
						var Z = am / m;
						var T = Z
								* Cufon.CSS.fontStretch(ad.get("fontStretch"));
						var Y = M.minX, X = M.minY;
						V.height = am;
						V.top = Math.round(q.convert(X - aj.ascent));
						V.left = Math.round(q.convert(Y));
						ap.height = q.convert(aj.height) + "px";
						var v = G.enableTextDecoration ? Cufon.CSS
								.textDecoration(ak, ad) : {};
						var J = ad.get("color");
						var ao = Cufon.CSS.textTransform(K, ad).split(""), B;
						var p = aj.glyphs, H, s, af;
						var h = 0, P = [], W = 0, x;
						var z, L = G.textShadow;
						for ( var ai = 0, ah = 0, ae = ao.length; ai < ae; ++ai) {
							H = p[B = ao[ai]] || aj.missingGlyph;
							if (!H) {
								continue
							}
							if (s) {
								h -= af = s[B] || 0;
								P[ah - 1] -= af
							}
							h += x = P[ah++] = ~~(H.w || aj.w) + aa;
							s = H.k
						}
						if (x === undefined) {
							return null
						}
						var A = -Y + h + (M.width - x);
						var an = q.convert(A * T), ac = Math.round(an);
						var S = A + "," + M.height, n;
						var N = "r" + S + "ns";
						var y = G.textGradient && d(G.textGradient);
						for (ai = 0, ah = 0; ai < ae; ++ai) {
							H = p[ao[ai]] || aj.missingGlyph;
							if (!H) {
								continue
							}
							if (o) {
								z = r.childNodes[ah];
								while (z.firstChild) {
									z.removeChild(z.firstChild)
								}
							} else {
								z = document.createElement("cvml:shape");
								r.appendChild(z)
							}
							z.stroked = "f";
							z.coordsize = S;
							z.coordorigin = n = (Y - W) + "," + X;
							z.path = (H.d ? "m" + H.d + "xe" : "") + "m" + n
									+ N;
							z.fillcolor = J;
							if (y) {
								z.appendChild(y.cloneNode(false))
							}
							var al = z.style;
							al.width = ac;
							al.height = am;
							if (L) {
								var u = L[0], t = L[1];
								var F = Cufon.CSS.color(u.color), D;
								var R = document.createElement("cvml:shadow");
								R.on = "t";
								R.color = F.color;
								R.offset = u.offX + "," + u.offY;
								if (t) {
									D = Cufon.CSS.color(t.color);
									R.type = "double";
									R.color2 = D.color;
									R.offset2 = t.offX + "," + t.offY
								}
								R.opacity = F.opacity || (D && D.opacity) || 1;
								z.appendChild(R)
							}
							W += P[ah++]
						}
						var Q = z.nextSibling, w, E;
						if (G.forceHitArea) {
							if (!Q) {
								Q = document.createElement("cvml:rect");
								Q.stroked = "f";
								Q.className = "cufon-vml-cover";
								w = document.createElement("cvml:fill");
								w.opacity = 0;
								Q.appendChild(w);
								r.appendChild(Q)
							}
							E = Q.style;
							E.width = ac;
							E.height = am
						} else {
							if (Q) {
								r.removeChild(Q)
							}
						}
						ap.width = Math.max(Math.ceil(q.convert(h * T)), 0);
						if (g) {
							var U = ad.computedYAdjust;
							if (U === undefined) {
								var I = ad.get("lineHeight");
								if (I == "normal") {
									I = "1em"
								} else {
									if (!isNaN(I)) {
										I += "em"
									}
								}
								ad.computedYAdjust = U = 0.5 * (a(ak, I) - parseFloat(ap.height))
							}
							if (U) {
								ap.marginTop = Math.ceil(U) + "px";
								ap.marginBottom = U + "px"
							}
						}
						return C
					}
				})());
