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