(function(){var s={faces:{},loadFace:function(a){var b=a.familyName.toLowerCase();if(!this.faces[b]){this.faces[b]={}}if(!this.faces[b][a.cssFontWeight]){this.faces[b][a.cssFontWeight]={}}var c=this.faces[b][a.cssFontWeight][a.cssFontStyle]=a;c.loaded=true},log:function(a){if(this.quiet){return}a="typeface.js: "+a;if(this.customLogFn){this.customLogFn(a)}else if(window.console&&window.console.log){window.console.log(a)}},pixelsFromPoints:function(a,b,c,d){var e=c*parseInt(b.fontSize)*72/(a.resolution*100);if(d=='horizontal'&&b.fontStretchPercent){e*=b.fontStretchPercent}return e},pointsFromPixels:function(a,b,c,d){var e=c*a.resolution/(parseInt(b.fontSize)*72/100);if(d=='horizontal'&&b.fontStretchPrecent){e*=b.fontStretchPercent}return e},cssFontWeightMap:{normal:'normal',bold:'bold',400:'normal',700:'bold'},cssFontStretchMap:{'ultra-condensed':0.55,'extra-condensed':0.77,'condensed':0.85,'semi-condensed':0.93,'normal':1,'semi-expanded':1.07,'expanded':1.15,'extra-expanded':1.23,'ultra-expanded':1.45,'default':1},fallbackCharacter:'.',configure:function(a){var b=['customLogFn','customClassNameRegex','customTypefaceElementsList','quiet','verbose'];for(var i=0;i<b.length;i++){var c=b[i];if(a[c]){if(c=='customLogFn'){if(typeof a[c]!='function'){throw"customLogFn is not a function";}else{this.customLogFn=a.customLogFn}}else{this[c]=a[c]}}}},getTextExtents:function(a,b,c){var d=0;var e=0;var f;for(var i=0;i<c.length;i++){var g=a.glyphs[c.charAt(i)]?a.glyphs[c.charAt(i)]:a.glyphs[this.fallbackCharacter];var h=this.pointsFromPixels(a,b,b.letterSpacing);d+=Math.max(g.ha,g.x_max)+h;f+=g.ha+h}return{x:d,y:e,ha:f}},pixelsFromCssAmount:function(a,b,c){var d=undefined;if(a=='normal'){return b}else if(d=a.match(/([\-\d+\.]+)px/)){return d[1]}else{var e;var f=c.style.left;var g=c.runtimeStyle.left;c.runtimeStyle.left=c.currentStyle.left;if(a.match(/\d(em|%)$/)){c.style.left='1em'}else{c.style.left=a||0}e=c.style.pixelLeft;c.style.left=f;c.runtimeStyle.left=g;return e||b}},capitalizeText:function(b){return b.replace(/(^|\s)[a-z]/g,function(a){return a.toUpperCase()})},getElementStyle:function(e){if(window.getComputedStyle){return window.getComputedStyle(e,'')}else if(e.currentStyle){return e.currentStyle}},getRenderedText:function(e){var a=this.getElementStyle(e.parentNode);var b=e.parentNode.getAttribute('style');if(b&&typeof(b)=='object'){b=b.cssText}if(b){var c=b.split(/\s*\;\s*/);var d={};for(var i=0;i<c.length;i++){var f=c[i];var g=f.split(/\s*\:\s*/);d[g[0]]=g[1]}}var h={color:a.color,fontFamily:a.fontFamily.split(/\s*,\s*/)[0].replace(/(^"|^'|'$|"$)/g,'').toLowerCase(),fontSize:this.pixelsFromCssAmount(a.fontSize,12,e.parentNode),fontWeight:this.cssFontWeightMap[a.fontWeight],fontStyle:a.fontStyle?a.fontStyle:'normal',fontStretchPercent:this.cssFontStretchMap[d&&d['font-stretch']?d['font-stretch']:'default'],textDecoration:a.textDecoration,lineHeight:this.pixelsFromCssAmount(a.lineHeight,'normal',e.parentNode),letterSpacing:this.pixelsFromCssAmount(a.letterSpacing,0,e.parentNode),textTransform:a.textTransform};var j;if(this.faces[h.fontFamily]&&this.faces[h.fontFamily][h.fontWeight]){j=this.faces[h.fontFamily][h.fontWeight][h.fontStyle]}var k=e.nodeValue;if(h.textTransform&&h.textTransform!='none'){switch(h.textTransform){case'capitalize':k=this.capitalizeText(k);break;case'uppercase':k=k.toUpperCase();break;case'lowercase':k=k.toLowerCase();break}}if(!j){var l=12;var m=k.substring(0,l);if(k.length>l){m+='...'}var n=h.fontFamily;if(h.fontWeight!='normal')n+=' '+h.fontWeight;if(h.fontStyle!='normal')n+=' '+h.fontStyle;this.log("couldn't find typeface font: "+n+' for text "'+m+'"');return}var o=k;var p=document.createElement('span');var q=this.renderWord(j,h,o);if(q)p.appendChild(q);return{span:p,fontface:j,styleObj:h}},getRenderedTextIE:function(e){var a=this.getElementStyle(e.parentNode);var b=e.parentNode.getAttribute('style');if(b&&typeof(b)=='object'){b=b.cssText}if(b){var c=b.split(/\s*\;\s*/);var d={};for(var i=0;i<c.length;i++){var f=c[i];var g=f.split(/\s*\:\s*/);d[g[0]]=g[1]}}var h={color:a.color,fontFamily:a.fontFamily.split(/\s*,\s*/)[0].replace(/(^"|^'|'$|"$)/g,'').toLowerCase(),fontSize:this.pixelsFromCssAmount(a.fontSize,12,e.parentNode),fontWeight:this.cssFontWeightMap[a.fontWeight],fontStyle:a.fontStyle?a.fontStyle:'normal',fontStretchPercent:this.cssFontStretchMap[d&&d['font-stretch']?d['font-stretch']:'default'],textDecoration:a.textDecoration,lineHeight:this.pixelsFromCssAmount(a.lineHeight,'normal',e.parentNode),letterSpacing:this.pixelsFromCssAmount(a.letterSpacing,0,e.parentNode),textTransform:a.textTransform};var j;if(this.faces[h.fontFamily]&&this.faces[h.fontFamily][h.fontWeight]){j=this.faces[h.fontFamily][h.fontWeight][h.fontStyle]}var k=e.nodeValue;if(e.previousSibling&&e.previousSibling.nodeType==1&&e.previousSibling.tagName!='BR'&&this.getElementStyle(e.previousSibling).display.match(/inline/)){k=k.replace(/^\s+/,' ')}else{k=k.replace(/^\s+/,'')}if(e.nextSibling&&e.nextSibling.nodeType==1&&e.nextSibling.tagName!='BR'&&this.getElementStyle(e.nextSibling).display.match(/inline/)){k=k.replace(/\s+$/,' ')}else{k=k.replace(/\s+$/,'')}k=k.replace(/\s+/g,' ');if(h.textTransform&&h.textTransform!='none'){switch(h.textTransform){case'capitalize':k=this.capitalizeText(k);break;case'uppercase':k=k.toUpperCase();break;case'lowercase':k=k.toLowerCase();break}}if(!j){var l=12;var m=k.substring(0,l);if(k.length>l){m+='...'}var n=h.fontFamily;if(h.fontWeight!='normal')n+=' '+h.fontWeight;if(h.fontStyle!='normal')n+=' '+h.fontStyle;this.log("couldn't find typeface font: "+n+' for text "'+m+'"');return}var o=k.split(/\b(?=\w)/);var p=document.createElement('span');for(var i=0;i<o.length;i++){var q=o[i];var r=this.renderWord(j,h,q);if(r)p.appendChild(r)}return p},renderDocument:function(a){if(!a)a=function(e){e.style.visibility='visible'};var b=document.getElementsByTagName('*');var c=b.length;for(var i=0;i<b.length;i++){if(b[i].className.match(/(^|\s)select(\s|$)/)){this.replaceText(b[i]);if(typeof a=='function'){a(b[i])}}}},replaceText:function(e){var a=[];var b=e.childNodes.length;for(var i=0;i<b;i++){this.replaceText(e.childNodes[i])}if(e.nodeType==3&&e.nodeValue.match(/\S/)){var c=e.parentNode;var d=this.getRenderedTextIE(e);if(c.tagName=='A'&&this.vectorBackend=='vml'&&this.getElementStyle(c).display=='inline'){c.style.display='inline-block';c.style.cursor='pointer'}if(this.getElementStyle(c).display=='inline'){c.style.display='inline-block'}if(d){if(c.replaceChild){c.replaceChild(d,e)}else{c.insertBefore(d,e);c.removeChild(e)}if(this.vectorBackend=='vml'){d.innerHTML=d.innerHTML}}}},applyElementVerticalMetrics:function(a,b,e){if(b.lineHeight=='normal'){b.lineHeight=this.pixelsFromPoints(a,b,a.lineHeight)}var c=b.lineHeight-this.pixelsFromPoints(a,b,a.lineHeight);e.style.marginTop=Math.round(c/2)+'px';e.style.marginBottom=Math.round(c/2)+'px'},vectorBackends:{canvas:{_initializeSurface:function(a,b,c){var d=this.getTextExtents(a,b,c);var e=document.createElement('canvas');e.innerHTML=c;e.height=Math.round(this.pixelsFromPoints(a,b,a.lineHeight));e.width=Math.round(this.pixelsFromPoints(a,b,d.x,'horizontal'));this.applyElementVerticalMetrics(a,b,e);if(d.x>d.ha)e.style.marginRight=Math.round(this.pixelsFromPoints(a,b,d.x-d.ha,'horizontal'))+'px';var f=e.getContext('2d');var g=this.pixelsFromPoints(a,b,1);f.scale(g*b.fontStretchPercent,-1*g);f.translate(0,-1*a.ascender);f.fillStyle=b.color;return{context:f,canvas:e}},_renderGlyph:function(a,b,c,d){var e=b.glyphs[c];if(!e){return this.renderGlyph(a,b,this.fallbackCharacter,d)}if(e.o){var f;if(e.cached_outline){f=e.cached_outline}else{f=e.o.split(' ');e.cached_outline=f}for(var i=0;i<f.length;){var g=f[i++];switch(g){case'm':a.moveTo(f[i++],f[i++]);break;case'l':a.lineTo(f[i++],f[i++]);break;case'q':var h=f[i++];var j=f[i++];a.quadraticCurveTo(f[i++],f[i++],h,j);break}}}if(e.ha){var k=d.letterSpacing&&d.letterSpacing!='normal'?this.pointsFromPixels(b,d,d.letterSpacing):0;a.translate(e.ha+k,0)}},_renderWord:function(a,b,c){var d=this.initializeSurface(a,b,c);var e=d.context;var f=d.canvas;e.beginPath();e.save();var g=c.split('');for(var i=0;i<g.length;i++){this.renderGlyph(e,a,g[i],b)}e.fill();if(b.textDecoration=='underline'){e.beginPath();e.moveTo(0,a.underlinePosition);e.restore();e.lineTo(0,a.underlinePosition);e.strokeStyle=b.color;e.lineWidth=a.underlineThickness;e.stroke()}return e.canvas}},vml:{_initializeSurface:function(a,b,c){var d=document.createElement('v:shape');var e=this.getTextExtents(a,b,c);d.style.width=d.style.height=b.fontSize+'px';if(e.x>e.ha){d.style.marginRight=this.pixelsFromPoints(a,b,e.x-e.ha,'horizontal')+'px'}this.applyElementVerticalMetrics(a,b,d);var f=a.resolution*100/72;d.coordsize=(f/b.fontStretchPercent)+","+f;d.coordorigin='0,'+a.ascender;d.style.flip='y';d.fillColor=b.color;d.stroked=false;d.path='hh m 0,'+a.ascender+' l 0,'+a.descender+' ';return d},_renderGlyph:function(a,b,c,d,e,f){var g=b.glyphs[c];if(!g){this.log("glyph not defined: "+c);this.renderGlyph(a,b,this.fallbackCharacter,d,e);return}f.push('m');if(g.o){var h,outlineLength;if(g.cached_outline){h=g.cached_outline;outlineLength=h.length}else{h=g.o.split(' ');outlineLength=h.length;for(var i=0;i<outlineLength;){switch(h[i++]){case'q':h[i]=Math.round(h[i++]);h[i]=Math.round(h[i++]);case'm':case'l':h[i]=Math.round(h[i++]);h[i]=Math.round(h[i++]);break}}g.cached_outline=h}var j,prevY;for(var i=0;i<outlineLength;){var k=h[i++];var x=h[i++]+d;var y=h[i++];switch(k){case'm':f.push('xm ',x,',',y);break;case'l':f.push('l ',x,',',y);break;case'q':var l=h[i++]+d;var m=h[i++];var n=Math.round(j+2.0/3.0*(l-j));var o=Math.round(prevY+2.0/3.0*(m-prevY));var p=Math.round(n+(x-j)/3.0);var q=Math.round(o+(y-prevY)/3.0);f.push('c ',n,',',o,',',p,',',q,',',x,',',y);break}j=x;prevY=y}}f.push('x e');return f},_renderWord:function(a,b,c){var d=0;var e=this.initializeSurface(a,b,c);var f=b.letterSpacing&&b.letterSpacing!='normal'?this.pointsFromPixels(a,b,b.letterSpacing):0;f=Math.round(f);var g=c.split('');var h=[];for(var i=0;i<g.length;i++){var j=g[i];h=this.renderGlyph(e,a,j,d,b,h);d+=a.glyphs[j].ha+f}e.path+=h.join('')+'m '+d+' 0 l '+d+' '+a.ascender;return e}}},setVectorBackend:function(a){this.vectorBackend=a;var b=['renderWord','initializeSurface','renderGlyph'];for(var i=0;i<b.length;i++){var c=b[i];this[c]=this.vectorBackends[a]['_'+c]}}};var t=['.typeface-js','h1','h2','h3','h4','h5','h6'];if(document.createStyleSheet){var u=document.createStyleSheet()}else if(document.styleSheets&&document.styleSheets.length){var u=document.styleSheets[0]}var v=!!(window.attachEvent&&!window.opera)?'vml':window.CanvasRenderingContext2D||document.createElement('canvas').getContext?'canvas':null;if(v=='vml'){document.namespaces.add("v","urn:schemas-microsoft-com:vml","#default#VML");var u=document.createStyleSheet();u.addRule('v\\:shape',"display: inline-block;")}s.setVectorBackend(v);window._typeface_js=s})();