if(typeof Prototype=="undefined"){throw ("Txt2img requires the Prototype JavaScript library")}var Txt2ImgConfig=Class.create({initialize:function(a,d,c){this.generatorUrl=a;this.pixelImage=new Image();this.pixelImage.src=d;this.selectors=c;this.afterSelectors=new Hash();try{this.createHoverRules()}catch(b){}document.observe("dom:loaded",this.insertImages.bind(this));document.observe("component:updated",this.insertImages.bind(this))},createHoverRules:function(){var c=function(f,d,g){var i="";try{if(f.insertRule){i="insertRule";f.insertRule(d+" {"+g+"}",f.cssRules.length)}else{if(f.addRule){i="addRule";f.addRule(d,g)}}}catch(h){}};var b=function(f,g){if(g.selectorText){g.selectorText.split(",").each(function(j){if(j.include(":hover")){if(g.style.color){var h=j.replace(/:hover/," .txt2imgHover");var i="color: "+g.style.color;c(f,h,i)}}if(j.include(":after")){if(g.style.content){var h=j.replace(/\:*after/,".txt2imgAfter:after");var i="content: "+"''";c(f,h,i);a.set(j.replace(/\:*after/,""),g.style.content)}}})}else{if(g.cssRules){var d=$A(g.cssRules);for(var e=0;e/i,"\n").stripTags()}this.text=a;if(this.config.afterSelectors.get(this.sel)){this.text=this.text+this.config.afterSelectors.get(this.sel).gsub(/\'|\"/i,"");this.el.addClassName("txt2imgAfter")}this.update()},updateSelector:function(){this.sel=this.config.selectors.find(this.el.match.bind(this.el));this.update()},update:function(){if(this.text.length>0){var c=this.el.getStyle("text-transform")||"";var f=0;var h=this.el.getStyle("display");var g=this.el.getStyle("float")!="none";if((h=="block"&&!g)||h=="inline-block"){f=this.el.offsetWidth-parseInt(this.el.getStyle("padding-left"))-parseInt(this.el.getStyle("padding-right"))}if(!f&&!g){f=parseInt(this.el.getStyle("width"))||0}var b=this.el.getStyle("color");var d=this.getHoverColor();var e=null;if(d!=b){e=new Image();e.src=this.getImageUrl(c,f,d,true)}var a=new Image();a.onload=this.insertImage.bind(this,a,e);a.src=this.getImageUrl(c,f,b)}},getHoverColor:function(){var b=document.createElement("span");b.className="txt2imgHover";this.el.appendChild(b);var a=Element.getStyle(b,"color");Element.remove(b);return a},getImageUrl:function(c,e,a,d){var b=this.config.generatorUrl;b+=b.include("?")?"&":"?";b+="text="+this.encode(this.text)+"&transform="+c+"&width="+e+"&selector="+this.encode(this.sel)+"&color="+this.encode(a);if(d){b+="&hover=true"}return b},encode:function(a){a=encodeURIComponent(a);a=escape(a.replace(/%/g,"/"));return a.replace(/[%\/]/g,"@")},setImageSrc:function(a,b){if(this.useFilter){a.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+b+"', sizingMethod='scale')"}else{a.src=b}},insertImage:function(f,e){var d;d=document.createElement("img");d.style.verticalAlign="top";d.style.border="none";if(this.useFilter){d.src=this.config.pixelImage.src;d.style.width=f.width+"px";d.style.height=f.height+"px"}this.setImageSrc(d,f.src);d.className="replacement";var b=this.el.up("a")||this.el;if(b._txt2ImgOver){b.stopObserving("mouseover",b._txt2ImgOver)}if(b._txt2ImgOut){b.stopObserving("mouseout",b._txt2ImgOut)}if(e){b._txt2ImgOver=this.setImageSrc.bind(this,d,e.src);b._txt2ImgOut=this.setImageSrc.bind(this,d,f.src);b.observe("mouseover",b._txt2ImgOver);b.observe("mouseout",b._txt2ImgOut);b.addClassName("txt2img")}var c=document.createElement("span");c.className="print-text";c.innerHTML=this.el.innerHTML;this.el.update();this.el.appendChild(d);this.el.appendChild(c);this.el.addClassName("txt2img");this.el.style.visibility="visible"}});var ElementMatcher=Class.create({initialize:function(b){var a=/([^.#]*)#?([^.]*)\.?(.*)/.exec(b);this.tagName=a[1]!=""?a[1].toUpperCase():null;this.id=a[2]!=""?a[2]:null;this.className=a[3]!=""?a[3]:null;this.classNameRegExp=new RegExp("(^|\\s)"+this.className+"(\\s|$)")},match:function(a){if(this.tagName&&this.tagName!=a.tagName){return false}if(this.id&&this.id!=a.id){return false}if(this.className&&!this.checkClassName(a)){return false}return true},checkClassName:function(a){var b=a.className;if(b.length==0){return false}return b==this.className||b.match(this.classNameRegExp)},inspect:function(){return this.tagName+"#"+this.id+"."+this.className}});var CssSelector=Class.create({initialize:function(c){this.text=c;this.matchers=[];var a=c.split(/\s+/);for(var b=0;b0){var d=this.stack.pop();for(var c=0;c