/*
 * Copyright (c) 2009 Simo Kinnunen.
 * Licensed under the MIT license.
 *
 * @version 1.09
 */
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
		}),
			
		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
		},
			
		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 D={inline:1,"inline-block":1,"run-in":1};
			var C=/^\s+/,B=/\s+$/;
			return function(H,F,G,E)
			{
				if(E)
				{
					if(E.nodeName.toLowerCase()=="br")
					{
						H=H.replace(C,"")
					}
				}
				if(D[F.get("display")])
				{
					return H
				}
				if(!G.previousSibling)
				{
					H=H.replace(C,"")
				}
				if(!G.nextSibling)
				{
					H=H.replace(B,"")
				}
				return H
			}
		})()
	};
	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(D)
	{
		var C=this.face=D.face,B={"\u0020":1,"\u00a0":1,"\u3000":1};
		this.glyphs=D.glyphs;
		this.w=D.w;
		this.baseSize=parseInt(C["units-per-em"],10);
		this.family=C["font-family"].toLowerCase();
		this.weight=C["font-weight"];
		this.style=C["font-style"]||"normal";
		this.viewBox=(function()
		{
			var F=C.bbox.split(/\s+/);
			var E={minX:parseInt(F[0],10),minY:parseInt(F[1],10),maxX:parseInt(F[2],10),maxY:parseInt(F[3],10)};
			E.width=E.maxX-E.minX;
			E.height=E.maxY-E.minY;
			E.toString=function()
			{
				return[this.minX,this.minY,this.width,this.height].join(" ")
			};
			return E
		})();
		this.ascent=-parseInt(C.ascent,10);
		this.descent=-parseInt(C.descent,10);
		this.height=-this.ascent+this.descent;
		this.spacing=function(L,N,E)
		{
			var O=this.glyphs,M,K,G,P=[],F=0,J=-1,I=-1,H;
			while(H=L[++J])
			{
				M=O[H]||this.missingGlyph;
				if(!M)
				{
					continue
				}
				if(K)
				{
					F-=G=K[H]||0;
					P[I]-=G
				}
				F+=P[++I]=~~(M.w||this.w)+N+(B[H]?E:0);
				K=M.k
			}
			P.total=F;
			return P
		}
	}

	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,G.type=="mouseover")
		}
		function E(F)
		{
			C(this,F.type=="mouseenter")
		}
		function C(F,G)
		{
			setTimeout(function(){var H=d.get(F).options;m.replace(F,G?h(H,H.hover):H,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 C={},B,F;
		for(var E=0,D=arguments.length;B=arguments[E],E<D;++E)
		{
			for(F in B)
			{
				if(k(B,F))
				{
					C[F]=B[F]
				}
			}
		}
		return C
	}

	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(D,M)
	{
		var C=D.nodeName.toLowerCase();
		if(M.ignore[C])
		{
			return
		}
		var E=!M.textless[C];
		var B=n.getStyle(v(D,M)).extend(M);
		var F=c(D,B),G,K,I,H,L,J;
		if(!F)
		{
			return
		}
		for(G=D.firstChild;G;G=I)
		{
			K=G.nodeType;
			I=G.nextSibling;
			if(E&&K==3)
			{
				if(H)
				{
					H.appendData(G.data);
					D.removeChild(G)
				}
				else
				{
					H=G
				}
				if(I)
				{
					continue
				}
			}
			if(H)
			{
				D.replaceChild(o(F,n.whiteSpace(H.data,B,H,J),B,M,G,D),H);
				H=null
			}
			if(K==1)
			{
				if(G.firstChild)
				{
					if(G.nodeName.toLowerCase()=="cufon")
					{
						z[M.engine](F,null,B,M,G,D)
					}
					else
					{
						arguments.callee(G,M)
					}
				}
				J=G
			}
		}
	}
	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={autoDetect:false,engine:null,forceHitArea:false,hover:false,hoverables:{a:true},ignore:{applet:1,canvas:1,col:1,colgroup:1,head:1,iframe:1,map:1,optgroup:1,option:1,script:1,select:1,style:1,textarea:1,title:1,pre:1},printable:true,selector:(window.Sizzle||(window.jQuery&&function(B){return jQuery(B)})||(window.dojo&&dojo.query)||(window.Ext&&Ext.query)||(window.YAHOO&&YAHOO.util&&YAHOO.util.Selector&&YAHOO.util.Selector.query)||(window.$$&&function(B){return $$(B)})||(window.$&&function(B){return $(B)})||(document.querySelectorAll&&function(B){return document.querySelectorAll(B)})||g),separate:"words",textless:{dl:1,html:1,ol:1,table:1,tbody:1,thead:1,tfoot:1,tr:1,ul:1},textShadow:"none"};
	var p={words:/\s/.test("\u00a0")?/[^\S\u00a0]+/:/\s+/,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)
	{
		if(!D)
		{
			return m
		}
		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(C.autoDetect)
		{
			delete C.fontFamily
		}
		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)
		}
		else
		{
			delete C.textGradient
		}
		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{text-indent:0;}@media screen,projection{cufon{display:inline;display:inline-block;position:relative;vertical-align:middle;"+(e?"":"font-size:1px;line-height:1px;")+"}cufon cufontext{display:-moz-inline-box;display:inline-block;width:0;height:0;overflow:hidden;text-indent:-10000in;}"+(a?"cufon canvas{position:relative;}":"cufon canvas{position:absolute;}")+"}@media print{cufon{padding:0;}cufon canvas{display:none;}}").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(V,w,P,t,C,W)
	{
		var k=(w===null);
		if(k)
		{
			w=C.getAttribute("alt")
		}
		var A=V.viewBox;
		var m=P.getSize("fontSize",V.baseSize);
		var B=0,O=0,N=0,u=0;
		var z=t.textShadow,L=[];
		if(z)
		{
			for(var U=z.length;U--;)
			{
				var F=z[U];
				var K=m.convertFrom(parseFloat(F.offX));
				var I=m.convertFrom(parseFloat(F.offY));
				L[U]=[K,I];
				if(I<B)
				{
					B=I
				}
				if(K>O)
				{
					O=K
				}
				if(I>N)
				{
					N=I
				}
				if(K<u)
				{
					u=K
				}
			}
		}
		var Z=Cufon.CSS.textTransform(w,P).split("");
		var E=V.spacing(Z,~~m.convertFrom(parseFloat(P.get("letterSpacing"))||0),~~m.convertFrom(parseFloat(P.get("wordSpacing"))||0));
		if(!E.length)
		{
			return null
		}
		var h=E.total;
		O+=A.width-E[E.length-1];
		u+=A.minX;
		var s,n;
		if(k)
		{
			s=C;
			n=C.firstChild
		}
		else
		{
			s=document.createElement("cufon");
			s.className="cufon cufon-canvas";
			s.setAttribute("alt",w);
			n=document.createElement("canvas");
			s.appendChild(n);
			if(t.printable)
			{
				var S=document.createElement("cufontext");
				S.appendChild(document.createTextNode(w));
				s.appendChild(S)
			}
		}
		var aa=s.style;
		var H=n.style;
		var j=m.convert(A.height);
		var Y=Math.ceil(j);
		var M=Y/j;
		var G=M*Cufon.CSS.fontStretch(P.get("fontStretch"));
		var J=h*G;
		var Q=Math.ceil(m.convert(J+O-u));
		var o=Math.ceil(m.convert(A.height-B+N));
		n.width=Q;
		n.height=o;
		H.width=Q+"px";
		H.height=o+"px";
		B+=A.minY;
		H.top=Math.round(m.convert(B-V.ascent))+"px";
		H.left=Math.round(m.convert(u))+"px";
		var r=Math.max(Math.ceil(m.convert(J)),0)+"px";
		if(a)
		{
			aa.width=r;
			aa.height=m.convert(V.height)+"px"
		}
		else
		{
			aa.paddingLeft=r;
			aa.paddingBottom=(m.convert(V.height)-1)+"px"
		}
		var X=n.getContext("2d"),D=j/A.height;
		X.scale(D,D*M);
		X.translate(-u,-B);
		X.save();
		function T()
		{
			var x=V.glyphs,ab,l=-1,g=-1,y;
			X.scale(G,1);
			while(y=Z[++l])
			{
				var ab=x[Z[l]]||V.missingGlyph;
				if(!ab)
				{
					continue
				}
				if(ab.d)
				{
					X.beginPath();
					if(ab.code)
					{
						c(ab.code,X)
					}
					else
					{
						ab.code=d("m"+ab.d,X)
					}
					X.fill()
				}
				X.translate(E[++g],0)
			}
			X.restore()
		}
		if(z)
		{
			for(var U=z.length;U--;)
			{
				var F=z[U];
				X.save();
				X.fillStyle=F.color;
				X.translate.apply(X,L[U]);
				T()
			}
		}
		var q=t.textGradient;
		if(q)
		{
			var v=q.stops,p=X.createLinearGradient(0,A.minY,0,A.maxY);
			for(var U=0,R=v.length;U<R;++U)
			{
				p.addColorStop.apply(p,v[U])
			}
			X.fillStyle=p
		}
		else
		{
			X.fillStyle=P.get("color")
		}
		T();
		return s
	}
})());

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 h=(document.documentMode||0)<8;
	document.write(('<style type="text/css">cufoncanvas{text-indent:0;}@media screen{cvml\\:shape,cvml\\:rect,cvml\\:fill,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute;}cufoncanvas{position:absolute;text-align:left;}cufon{display:inline-block;position:relative;vertical-align:'+(h?"middle":"text-bottom")+";}cufon cufontext{position:absolute;left:-10000in;font-size:1px;}a cufon{cursor:pointer}}@media print{cufon cufoncanvas{display:none;}}</style>").replace(/;/g,"!important;"));
	function c(i,j)
	{
		return a(i,/(?:em|ex|%)$|^[a-z-]+$/i.test(j)?"1em":j)
	}
	function a(l,m)
	{
		if(m==="0")
		{
			return 0
		}
		if(/px$/i.test(m))
		{
			return parseFloat(m)
		}
		var k=l.style.left,j=l.runtimeStyle.left;
		l.runtimeStyle.left=l.currentStyle.left;
		l.style.left=m.replace("%","em");
		var i=l.style.pixelLeft;
		l.style.left=k;
		l.runtimeStyle.left=j;
		return i
	}
	function f(l,k,j,n)
	{
		var i="computed"+n,m=k[i];
		if(isNaN(m))
		{
			m=k.get(n);
			k[i]=m=(m=="normal")?0:~~j.convertFrom(a(l,m))
		}
		return m
	}
	var g={};
	function d(p)
	{
		var q=p.id;
		if(!g[q])
		{
			var n=p.stops,o=document.createElement("cvml:fill"),i=[];
			o.type="gradient";
			o.angle=180;
			o.focus="0";
			o.method="sigma";
			o.color=n[0][1];
			for(var m=1,l=n.length-1;m<l;++m)
			{
				i.push(n[m][0]*100+"% "+n[m][1])
			}
			o.colors=i.join(",");
			o.color2=n[l][1];
			g[q]=o
		}
		return g[q]
	}
	return function(ac,G,Y,C,K,ad,W)
	{
		var n=(G===null);
		if(n)
		{
			G=K.alt
		}
		var I=ac.viewBox;
		var p=Y.computedFontSize||(Y.computedFontSize=new Cufon.CSS.Size(c(ad,Y.get("fontSize"))+"px",ac.baseSize));
		var y,q;
		if(n)
		{
			y=K;
			q=K.firstChild
		}
		else
		{
			y=document.createElement("cufon");
			y.className="cufon cufon-vml";
			y.alt=G;
			q=document.createElement("cufoncanvas");
			y.appendChild(q);
			if(C.printable)
			{
				var Z=document.createElement("cufontext");
				Z.appendChild(document.createTextNode(G));
				y.appendChild(Z)
			}
			if(!W)
			{
				y.appendChild(document.createElement("cvml:shape"))
			}
		}
		var ai=y.style;
		var R=q.style;
		var l=p.convert(I.height),af=Math.ceil(l);
		var V=af/l;
		var P=V*Cufon.CSS.fontStretch(Y.get("fontStretch"));
		var U=I.minX,T=I.minY;
		R.height=af;
		R.top=Math.round(p.convert(T-ac.ascent));
		R.left=Math.round(p.convert(U));
		ai.height=p.convert(ac.height)+"px";
		var F=Y.get("color");
		var ag=Cufon.CSS.textTransform(G,Y).split("");
		var L=ac.spacing(ag,f(ad,Y,p,"letterSpacing"),f(ad,Y,p,"wordSpacing"));
		if(!L.length)
		{
			return null
		}
		var k=L.total;
		var x=-U+k+(I.width-L[L.length-1]);
		var ah=p.convert(x*P),X=Math.round(ah);
		var O=x+","+I.height,m;
		var J="r"+O+"ns";
		var u=C.textGradient&&d(C.textGradient);
		var o=ac.glyphs,S=0;
		var H=C.textShadow;
		var ab=-1,aa=0,w;
		while(w=ag[++ab])
		{
			var D=o[ag[ab]]||ac.missingGlyph,v;
			if(!D)
			{
				continue
			}
			if(n)
			{
				v=q.childNodes[aa];
				while(v.firstChild)
				{
					v.removeChild(v.firstChild)
				}
			}
			else
			{
				v=document.createElement("cvml:shape");
				q.appendChild(v)
			}
			v.stroked="f";
			v.coordsize=O;
			v.coordorigin=m=(U-S)+","+T;
			v.path=(D.d?"m"+D.d+"xe":"")+"m"+m+J;
			v.fillcolor=F;
			if(u)
			{
				v.appendChild(u.cloneNode(false))
			}
			var ae=v.style;
			ae.width=X;
			ae.height=af;
			if(H)
			{
				var s=H[0],r=H[1];
				var B=Cufon.CSS.color(s.color),z;
				var N=document.createElement("cvml:shadow");
				N.on="t";
				N.color=B.color;
				N.offset=s.offX+","+s.offY;
				if(r)
				{
					z=Cufon.CSS.color(r.color);
					N.type="double";
					N.color2=z.color;
					N.offset2=r.offX+","+r.offY
				}
				N.opacity=B.opacity||(z&&z.opacity)||1;
				v.appendChild(N)
			}
			S+=L[aa++]
		}
		var M=v.nextSibling,t,A;
		if(C.forceHitArea)
		{
			if(!M)
			{
				M=document.createElement("cvml:rect");
				M.stroked="f";
				M.className="cufon-vml-cover";
				t=document.createElement("cvml:fill");
				t.opacity=0;
				M.appendChild(t);
				q.appendChild(M)
			}
			A=M.style;
			A.width=X;
			A.height=af
		}
		else
		{
			if(M)
			{
				q.removeChild(M)
			}
		}
		ai.width=Math.max(Math.ceil(p.convert(k*P)),0);
		if(h)
		{
			var Q=Y.computedYAdjust;
			if(Q===undefined)
			{
				var E=Y.get("lineHeight");
				if(E=="normal")
				{
					E="1em"
				}
				else
				{
					if(!isNaN(E))
					{
						E+="em"
					}
				}
				Y.computedYAdjust=Q=0.5*(a(ad,E)-parseFloat(ai.height))
			}
			if(Q)
			{
				ai.marginTop=Math.ceil(Q)+"px";ai.marginBottom=Q+"px"
			}
		}
		return y
	}
})());
