var FLIR={version:"1.2",options:{path:"",classnameIgnore:false,findEmbededFonts:false,ignoredElements:"BR,HR,IMG,INPUT,SELECT"},onreplacing:null,onreplaced:null,onreplacingchild:null,onreplacedchild:null,flirElements:{},flirPlugins:[],isCraptastic:true,isIE:true,defaultStyle:null,classStyles:{},embededFonts:{},dpi:96,init:function(a,b){if(this.isFStyle(a)){this.defaultStyle=a}else{if(typeof a!="undefined"){this.loadOptions(a)}if(typeof b=="undefined"){this.defaultStyle=new FLIRStyle()}else{if(this.isFStyle(b)){this.defaultStyle=b}else{this.defaultStyle=new FLIRStyle(b)}}}this.calcDPI();if(this.options.findEmbededFonts){this.discoverEmbededFonts()}this.isIE=(navigator.userAgent.toLowerCase().indexOf("msie")>-1&&navigator.userAgent.toLowerCase().indexOf("opera")<0);this.isCraptastic=(typeof document.body.style.maxHeight=="undefined");if(this.isIE){this.flirIERepObj=[];this.flirIEHovEls=[];this.flirIEHovStyles=[]}FLIR._call_plugin("init",arguments)},loadOptions:function(a){for(var b in a){this.options[b]=a[b]}},installPlugin:function(a){this.flirPlugins.push(a)},_call_plugin:function(d,c){var a=c;for(var b=0;b-1?c.split(","):c);var d;for(var b=0;b0){this.replace(d)}}},hover:function(l){var b=FLIR.evsrc(l);var n=b;var r=b.flirHasHover;var j=b;var m=(l.type=="mouseover");while(b!=document.body&&!b.flirMainObj){b=FLIR.getParentNode(b);if(!r){r=b.flirHasHover;j=b}}if(b==document.body){return}var c=FLIR.getFStyle(b);if(m&&c!=c.hoverStyle){c=c.hoverStyle}if(!(args=FLIR._call_plugin("hover",[m,n,b,j]))){return}m=args[0];n=args[1];b=args[2];j=args[3];var k=FLIR.getChildren(j);if(k.length==0||(k.length==1&&(k[0].flirImage||k[0].flirHasHover))){k=[j]}else{if(k.length==1&&!FLIR.isIgnoredElement(k[0])){var f=FLIR.getChildren(k[0]);if(f.length>0){if((f.length==1&&!f[0].flirImage)||f.length>1){k=f}}}}var p;for(var h=0;h1){for(var b in e.childNodes){var d=e.childNodes[b];if(d&&d.nodeType==3){var c=document.createElement("SPAN");c.style.margin=c.style.padding=c.style.border="0px";c.className="flir-span";c.flirSpan=true;var a=d.nodeValue.replace(/[\t\n\r]/g," ").replace(/\s\s+/g," ");c.innerHTML=!FLIR.isIE?a:d.nodeValue.replace(/^\s+|\s+$/g," ");e.replaceChild(c,d)}}}},replace:function(c,b){if(!(args=FLIR._call_plugin("replace",arguments))){return}c=args[0];b=args[1];if(!c||c.flirReplaced){return}if(!this.isFStyle(b)){b=this.getFStyle(c)}if(typeof c=="string"){c=this.getElements(c)}if(typeof c.length!="undefined"){if(c.length==0){return}for(var a=0;a1000){console.error("Facelift: Too much recursion.");return}var d=!e.hasChildNodes()||(e.hasChildNodes()&&e.childNodes.length==1&&e.childNodes[0].nodeType==3)?[e]:e.childNodes;var a;for(var b=0;b1||a.childNodes[0].nodeType!=3)){FLIR.prepare(a);FLIR._replace_tree(a,c);continue}if(a.innerHTML==""){continue}if(!FLIR.isCraptastic){if(c.useBackgroundMethod){FLIR.replaceMethodBackground(a,c)}else{FLIR.replaceMethodOverlay(a,c)}}else{FLIR.replaceMethodCraptastic(a,c)}a.className+=" flir-replaced";a.flirReplaced=true;if(typeof FLIR.onreplacedchild=="function"){FLIR.onreplacedchild(e,c)}}},replaceMethodBackground:function(e,d){if(!(args=FLIR._call_plugin("replaceMethodBackground",arguments))){return}e=args[0];d=args[1];var c=this.saveObject(e);var a=d.generateURL(e);if(FLIR.getStyle(e,"display")!="block"){e.style.display="block"}var b=new Image();b.onload=function(){FLIR.flirElements[c].style.width=this.width+"px";FLIR.flirElements[c].style.height=this.height+"px";if(d!=d.hoverStyle){var f=new Image();e.flirHoverURL=f.src=d.hoverStyle.generateURL(e)}};b.src=a;e.style.background='url("'+a.replace(/ /g,"%20")+'") no-repeat';e.flirOrig=a;e.oldTextIndent=e.style.textIndent;e.style.textIndent="-9999px"},replaceMethodOverlay:function(d,c){if(!(args=FLIR._call_plugin("replaceMethodOverlay",arguments))){return}d=args[0];c=args[1];var b=this.saveObject(d);var a=document.createElement("IMG");a.alt=this.sanitizeHTML(d.innerHTML);if(c!=c.hoverStyle){a.onload=function(){var e=new Image();d.flirHoverURL=e.src=c.hoverStyle.generateURL(d,a.alt)}}if(a.onerror){a.onerror=function(){var e=document.createElement("SPAN");e.innerHTML=a.alt;try{d.replaceChild(e,a)}catch(f){}}}a.flirImage=true;a.className="flir-image";a.src=c.generateURL(d);a.style.border="none";d.flirOrig=a.src;d.innerHTML="";d.appendChild(a)},replaceMethodCraptastic:function(e,d){if(!(args=FLIR._call_plugin("replaceMethodCraptastic",arguments))){return}e=args[0];d=args[1];var c=this.saveObject(e);var b=d.generateURL(e);var a=document.createElement("IMG");a.alt=this.sanitizeHTML(e.innerHTML);if(d!=d.hoverStyle){a.onload=function(){var f=new Image();e.flirHoverURL=f.src=d.hoverStyle.generateURL(e,a.alt)}}a.flirImage=true;a.className="flir-image";a.src=this.options.path+"spacer.png";a.style.width=e.offsetWidth+"px";a.style.height=e.offsetHeight+"px";a.style.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+b+'", sizingMethod="image")';e.flirOrig=b;e.innerHTML="";e.appendChild(a)},saveObject:function(a){if(typeof a.flirId=="undefined"){a.flirId=this.getUID();this.flirElements[a.flirId]=a}return a.flirId},getUID:function(){var b="flir-";var c=b+Math.random().toString().split(".")[1];var a=0;while(typeof this.flirElements[c]!="undefined"){if(a>100000){console.error("Facelift: Unable to generate unique id.")}c=b+Math.random().toString().split(".")[1];a++}return c},getElements:function(r){if(!(args=FLIR._call_plugin("getElements",arguments))){return}switch(args.length){case 1:r=args[0];break;case 2:return args[0];break}var q=[];if(document.querySelectorAll){var e=false;try{q=document.querySelectorAll(r);e=true}catch(f){e=false}if(e){return q}}var i,n,l,j,r,d,h,o,k;d=r;o=false;if(d.indexOf(" ")>-1){var g=d.split(" ");d=g[0];o=g[1]}else{if(d[0]=="#"){return document.getElementById(d.substr(1))}}var c=false;if(d.indexOf("#")>-1){c=d.split("#")[1];r=d.split("#")[0]}var m=false;if(d.indexOf(".")>-1){m=d.split(".")[1];r=d.split(".")[0]}i=document.getElementsByTagName(r);for(var a=0;a-1){continue}n=false!=o?i[a].getElementsByTagName(o):[i[a]];for(var b=0;b-1){continue}q.push(k)}}return q},discoverEmbededFonts:function(){this.embededFonts={};for(var c in document.styleSheets){if(!document.styleSheets[c].cssRules){continue}for(var d in document.styleSheets[c].cssRules){if(!document.styleSheets[0].cssRules[d]){continue}var e=document.styleSheets[0].cssRules[d];if(e.type&&e.type==e.FONT_FACE_RULE){var a=e.style.getPropertyValue("src").match(/url\("?([^"\)]+\.[ot]tf)"?\)/i)[1];var b=e.style.getPropertyValue("font-family");if(b.indexOf(",")){b=b.split(",")[0]}b=b.replace(/['"]/g,"").toLowerCase();if(b!=""&&a!=""){this.embededFonts[b]=a}}}}},getStyle:function(a,c){if(a.currentStyle){if(c.indexOf("-")>-1){c=c.split("-")[0]+c.split("-")[1].substr(0,1).toUpperCase()+c.split("-")[1].substr(1)}var b=a.currentStyle[c]}else{if(window.getComputedStyle){var b=document.defaultView.getComputedStyle(a,"").getPropertyValue(c)}}return b},getChildren:function(c){var b=[];if(c&&c.hasChildNodes()){for(var a in c.childNodes){if(c.childNodes[a]&&c.childNodes[a].nodeType==1){b[b.length]=c.childNodes[a]}}}return b},getParentNode:function(b){var a=b.parentNode;while(a!=document&&a.nodeType!=1){a=a.parentNode}return a},hasClass:function(a,b){return(a&&a.className&&a.className.indexOf(b)>-1)},evsrc:function(a){var b;if(a.target){b=a.target}else{if(a.srcElement){b=a.srcElement}}if(b.nodeType==3){b=b.parentNode}return b},calcDPI:function(){if(screen.logicalXDPI){var a=screen.logicalXDPI}else{var c="flir-dpi-div-test";if(document.getElementById(c)){var b=document.getElementById(c)}else{var b=document.createElement("DIV");b.id=c;b.style.position="absolute";b.style.visibility="hidden";b.style.border=b.style.padding=b.style.margin="0";b.style.left=b.style.top="-1000px";b.style.height=b.style.width="1in";document.body.appendChild(b)}var a=b.offsetHeight}this.dpi=parseInt(a)},isIgnoredElement:function(b,a){return((","+this.options.ignoredElements).indexOf(","+b.nodeName)>-1)},sanitizeHTML:function(a){return a.replace(/<[^>]+>/g,"")},getFStyle:function(c,b){var a=this.getClassStyle(c);if(this.isFStyle(a)){b=a}if(this.isFStyle(b)){return b}else{if(this.isFStyle(c.flirStyle)){return c.flirStyle}else{return this.defaultStyle}}},setFStyle:function(b,a){b.flirStyle=a},isFStyle:function(a){if(!a){return false}return(a.toString()=="[FLIRStyle Object]")},addClassStyle:function(b,a){if(this.isFStyle(a)){this.classStyles[b]=a}},getClassStyle:function(d){if(!(args=FLIR._call_plugin("getClassStyle",arguments))){return}switch(args.length){case 1:d=args[0];break;case 2:return args[0];break}var e=d.className;if(this.classStyles.length==0||typeof e=="undefined"||e==""){return false}var b=e.split(" ");for(var a in this.classStyles){for(var c=0;c-1){pix=Math.round(parseFloat(raw))}else{if(raw.indexOf("pt")>-1){var pts=parseFloat(raw);pix=pts/(72/this.options.dpi)}else{if(raw.indexOf("em")>-1||raw.indexOf("%")>-1){pix=this.calcFontSize(o)}}}if(this.options.cSize&&"*/+-".indexOf(this.options.cSize[0])>-1){try{pix=this.roundFloat(parseFloat(eval(pix.toString().concat(this.options.cSize))))}catch(err){}}o.flirFontSize=pix;return pix};FLIRStyle.prototype.getSpacing=function(c){var e=FLIR.getStyle(c,"letter-spacing");var a;if(e!="normal"){if(e.indexOf("em")>-1){var d=c.flirFontSize?c.flirFontSize:this.getSize(c);a=(parseFloat(e)*d)}else{if(e.indexOf("px")>-1){a=parseFloat(e)}else{if(e.indexOf("pt")>-1){var b=parseFloat(e);a=b/(72/this.options.dpi)}}}return this.roundFloat(a)}return""};FLIRStyle.prototype.getLine=function(c){var e=FLIR.getStyle(c,"line-height");var b=parseFloat(e);var d=c.flirFontSize?c.flirFontSize:this.getSize(c);if(e.indexOf("em")>-1){ret=(b*d)/d}else{if(e.indexOf("px")>-1){ret=b/d}else{if(e.indexOf("pt")>-1){var a=b;ret=(a/(72/this.options.dpi))/d}else{if(e.indexOf("%")>-1){return 1}else{ret=b}}}}return this.roundFloat(ret)};FLIRStyle.prototype.roundFloat=function(a){return Math.round(a*10000)/10000};FLIRStyle.prototype.calcFontSize=function(b){var c=document.createElement("DIV");c.style.border="0";c.style.padding="0";c.style.position="absolute";c.style.visibility="hidden";c.style.left=c.style.top="-1000px";c.style.left=c.style.top="10px";c.style.lineHeight="100%";c.innerHTML="Flir_Test";b.appendChild(c);var a=c.offsetHeight;b.removeChild(c);return a};FLIRStyle.prototype.copyObject=function(b){var c={};for(var a in b){c[a]=b[a]}return c};FLIRStyle.prototype.toString=function(){return"[FLIRStyle Object]"};