var FLIR={version:'1.1.1',path:'/includes/textreplacement/',classnameIgnore:false,replaceLinks:true,flirElements:[],isCraptastic:true,defaultStyle:null,classStyles:{},init:function(options,fstyle){if(this.isFStyle(options)){this.defaultStyle=options;}else{if(typeof options!='undefined')this.loadOptions(options);if(typeof fstyle=='undefined'){this.defaultStyle=new FLIRStyle();}else{if(this.isFStyle(fstyle))this.defaultStyle=fstyle;else this.defaultStyle=new FLIRStyle(fstyle);}}this.isCraptastic=(typeof document.body.style.maxHeight=='undefined');},loadOptions:function(options){for(var i in options)if(typeof this[i]!='function')this[i]=options[i];},auto:function(els){var tags=typeof els=='undefined'?['h1','h2','h3','h4','h5']:els;var objs,cn,childs,tag,matches;for(var i=0;i<tags.length;i++){tag=tags[i];var grain_id=false;if(tags[i].indexOf('#')>-1){grain_id=tags[i].split('#')[1];tag=tags[i].split('#')[0];}var grain_cn=false;if(tags[i].indexOf('.')>-1){grain_cn=tags[i].split('.')[1];tag=tags[i].split('.')[0];}objs=document.getElementsByTagName(tag);for(var p=0;p<objs.length;p++){if(objs[p].nodeType!=1)continue;matches=false;cn=objs[p].className?objs[p].className:'';if(grain_id&&objs[p].id&&objs[p].id==grain_id){matches=true;}if(grain_cn&&FLIR.hasClass(objs[p],grain_cn)){matches=true;}if(!grain_id&&!grain_cn){matches=true;}if(!matches)continue;if(this.classnameIgnore&&cn.indexOf(this.classnameIgnore)>-1){continue;}if(!this.replaceLinks){childs=this.getChildren(objs[p]);if(childs.length>0&&childs[0].nodeName=='A')continue;if(this.getParentNode(objs[p]).nodeName=='A')continue;}if(!this.isFStyle(objs[p].FLIRStyleObj))objs[p].FLIRStyleObj=this.defaultStyle;this.replace(objs[p]);}}},replace:function(o,fstyle){var FStyle=this.getFStyle(o,fstyle);var objs;if((objs=FLIR.getChildren(o)).length==0){var objs=[o];}else if(objs.length==1){var subobjs=FLIR.getChildren(objs[0]);if(subobjs.length>0)objs=subobjs;}var rep_obj;for(var i=0;i<objs.length;i++){rep_obj=objs[i];if(FLIR.hasClass(rep_obj,'flir-replaced'))continue;if(!rep_obj.innerHTML)continue;if(!this.isCraptastic){if(FStyle.options.useBackgroundMethod&&this.getStyle(rep_obj,'display')=='block'){this.replaceMethodBackground(rep_obj,fstyle);if(this.getStyle(rep_obj,'background-image')=='none'){rep_obj.style.textIndent=rep_obj.oldTextIndent?rep_obj.oldTextIndent:'0px';this.replaceMethodOverlay(rep_obj,fstyle);}}else{this.replaceMethodOverlay(rep_obj,fstyle);}}else{this.replaceMethodCraptastic(rep_obj,fstyle);}rep_obj.className+=' flir-replaced';}},replaceMethodBackground:function(o,fstyle){var FStyle=this.getFStyle(o,fstyle);var oid=this.saveObject(o);var url=FStyle.generateURL(o);if(FStyle.options.resizeBox){var tmp=new Image();tmp.onload=function(){FLIR.flirElements[oid].style.width=this.width+'px';FLIR.flirElements[oid].style.height=this.height+'px';};tmp.src=url;}o.style.background='url('+url+') no-repeat';o.oldTextIndent=o.style.textIndent;o.style.textIndent='-9999px';},replaceMethodOverlay:function(o,fstyle){var FStyle=this.getFStyle(o,fstyle);var oid=this.saveObject(o);var img=document.createElement('IMG');img.alt=o.title=this.sanitizeHTML(o.innerHTML);img.src=FStyle.generateURL(o);o.innerHTML='';o.appendChild(img);},replaceMethodCraptastic:function(o,fstyle){var FStyle=this.getFStyle(o,fstyle);var oid=this.saveObject(o);var url=FStyle.generateURL(o)+'&ie6='+escape(Math.random());var img=document.createElement('IMG');if(FStyle.options.resizeBox){var tmp=new Image();tmp.onload=function(){var targ=FLIR.getChildren(FLIR.flirElements[oid])[0];if(targ.style){targ.style.width=this.width+'px';targ.style.height=this.height+'px';}else{}};tmp.src=url;}img.src=this.path+'spacer.png';img.style.width=o.offsetWidth+'px';img.style.height=o.offsetHeight+'px';img.style.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+url+'", sizingMethod="crop")';o.innerHTML='';o.appendChild(img);},saveObject:function(o){if(typeof o.flirId=='undefined'){o.flirId=this.getUID();this.flirElements[o.flirId]=o;}return o.flirId;},getUID:function(){var prefix='flir-';var id=prefix+Math.random().toString().split('.')[1];var i=0;while(typeof this.flirElements[id]!='undefined'){if(i>100000){console.error('Facelift: Unable to generate unique id.');}id=prefix+Math.random().toString().split('.')[1];i++;}return id;},getStyle:function(el,prop){if(el.currentStyle){if(prop.indexOf('-')>-1)prop=prop.split('-')[0]+prop.split('-')[1].substr(0,1).toUpperCase()+prop.split('-')[1].substr(1);var y=el.currentStyle[prop];}else if(window.getComputedStyle){var y=document.defaultView.getComputedStyle(el,'').getPropertyValue(prop);}return y;},getChildren:function(n){var children=[];if(n&&n.hasChildNodes())for(var i in n.childNodes)if(n.childNodes[i]&&n.childNodes[i].nodeType==1)children[children.length]=n.childNodes[i];return children;},getParentNode:function(n){var o=n.parentNode;while(o!=document&&o.nodeType!=1)o=o.parentNode;return o;},hasClass:function(o,cn){return(o.className&&o.className.indexOf(cn)>-1);},sanitizeHTML:function(html){return html.replace(/<[^>]+>/g,'');},getFStyle:function(o,fstyle){if(this.isFStyle(fstyle)){return fstyle;}else if(typeof fstyle!='undefined'){var cStyle=this.getClassStyle(o);return false!=cStyle?cStyle:new FLIRStyle(fstyle);}else if(!this.isFStyle(o.FLIRStyleObj)){var cStyle=this.getClassStyle(o);o.FLIRStyleObj=false!=cStyle?cStyle:this.defaultStyle;}return o.FLIRStyleObj;},setFStyle:function(o,fstyle){o.FLIRStyleObj=fstyle;},isFStyle:function(o){return(typeof o!='undefined'&&o.toString()=='FLIRStyle Object');},addClassStyle:function(classname,FStyle){if(this.isFStyle(FStyle))this.classStyles[classname]=FStyle;},getClassStyle:function(o){var cn=o.className;if(typeof cn=='undefined'||cn=='')return false;var classes=cn.split(' ');for(var i in this.classStyles){for(var ii=0;ii<classes.length;ii++){if(classes[ii]==i){return this.classStyles[i];}}}return false;}};function FLIRStyle(options){this.options={mode:'',resizeBox:true,useBackgroundMethod:false,inheritStyle:true,cssSize:'',cssColor:'',cssFont:'',cssAlign:'left',realFontHeight:false,dpi:96};for(var i in options)this.options[i]=options[i];this.calcDPI();}FLIRStyle.prototype.generateURL=function(o){if(this.options.inheritStyle&&typeof o=='undefined'){console.error('FLIRStyle.generateURL: Missing argument 2.');return false;}var enc_text=escape(o.innerHTML).replace(/&/g,'{amp}');return FLIR.path+'generate.php?text='+enc_text+'&h='+o.offsetHeight+'&w='+o.offsetWidth+'&fstyle='+this.serialize(o);};FLIRStyle.prototype.buildURL=function(text,o){if(this.options.inheritStyle&&typeof o=='undefined'){console.error('FLIRStyle.buildURL: Missing argument 2.');return false;}var enc_text=escape(text).replace(/&/g,'{amp}');return FLIR.path+'generate.php?text='+enc_text+'&h=800&w=800&fstyle='+this.serialize(o);};FLIRStyle.prototype.serialize=function(o,bDontEncode){var sdata='';var optdata='';var options=this.copyObject(this.options);if(this.options.inheritStyle){this.options.cssColor=this.getColor(o);this.options.cssSize=this.getFontSize(o);this.options.cssFont=this.getFont(o);this.options.cssAlign=FLIR.getStyle(o,'text-align');}for(var i in this.options){sdata+=',"'+i+'":"'+this.options[i].toString().replace(/"/g,'"')+'"';}sdata='{'+sdata.substr(1)+'}';this.options=options;return bDontEncode?sdata:escape(sdata);};FLIRStyle.prototype.getFont=function(o){var font=FLIR.getStyle(o,'font-family');if(font.indexOf(',')){font=font.split(',')[0];}return font.replace(/['"]/g,'').toLowerCase();};FLIRStyle.prototype.getColor=function(o){var color=FLIR.getStyle(o,'color');if(color.substr(0,1)=='#')color=color.substr(1);return color.replace(/['"]/g,'').toLowerCase();};FLIRStyle.prototype.getFontSize=function(o){var raw=FLIR.getStyle(o,'font-size');var pix;if(raw.indexOf('px')>-1){pix=Math.round(parseFloat(raw));}else{var dpi=this.dpi;if(raw.indexOf('pt')>-1){var pts=parseFloat(raw);pix=pts/(72/dpi);}else if(raw.indexOf('em')>-1||raw.indexOf('%')>-1){var junk=parseInt(this.getStyle(o,'padding-top'))+parseInt(this.getStyle(o,'padding-bottom'))+parseInt(this.getStyle(o,'border-top'))+parseInt(this.getStyle(o,'border-bottom'));pix=o.offsetHeight-junk;}}return pix;};FLIRStyle.prototype.calcDPI=function(){if(screen.logicalXDPI){var dpi=screen.logicalXDPI;}else{var id='flir-dpi-div-test';if(document.getElementById(id)){var test=document.getElementById(id);}else{var test=document.createElement('DIV');test.id=id;test.style.position='absolute';test.style.visibility='hidden';test.style.left=test.style.top='-1000px';test.style.height=test.style.width='1in';document.body.appendChild(test);}var dpi=test.offsetHeight;}this.dpi=dpi;};FLIRStyle.prototype.copyObject=function(obj){var copy={};for(var i in obj){copy[i]=obj[i];}return copy;};FLIRStyle.prototype.toString=function(){return 'FLIRStyle Object';};
