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