/*
 * 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}})());


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
    }
})());

