var Lighter=new Class({Implements:[Options],name:"Lighter",options:{altLines:"",container:null,editable:false,flame:"standard",fuel:"standard",id:null,indent:-1,jsStyles:true,matchType:"standard",mode:"pre",path:"./",strict:false},initialize:function(c,b){this.setOptions(b);b=this.options;this.id=b.id||this.name+"_"+$time();this.codeblock=$(c);this.code=c.get("html").chop().replace(/</gim,"<").replace(/>/gim,">").replace(/&/gim,"&");this.container=$(this.options.container);if(b.indent>-1){this.code=this.code.tabToSpaces(b.indent)}this.builder=new Hash({pre:this.createLighter.bind(this),ol:this.createLighterWithLines.pass([["ol"],["li"]],this),div:this.createLighterWithLines.pass([["div"],["div","span"],true,"span"],this),table:this.createLighterWithLines.pass([["table","tbody"],["tr","td"],true,"td"],this)});var a=this.codeblock.get("class").split(":");if(!a[0]){a[0]=this.options.fuel}if(!a[1]){a[1]=this.options.flame}this.loadFlameSrc(a)},loadFlameSrc:function(b){if(!$chk(Flame[b[1]])){var a=new Element("script",{src:this.options.path+"Flame."+b[1]+".js",type:"text/javascript"}).addEvents({load:function(){this.loadFlame(b)}.bind(this),error:function(){b[1]="standard";this.loadFlame(b)}.bind(this)}).inject(document.head)}else{this.loadFlame(b)}},loadFlame:function(a){this.flame=new Flame[a[1]](this);this.loadFuelSrc(a)},loadFuelSrc:function(a){if(!$chk(Fuel[a[0]])){var b=new Element("script",{src:this.options.path+"Fuel."+a[0]+".js",type:"text/javascript"}).addEvents({load:function(){this.loadFuel(a)}.bind(this),error:function(){a[0]="standard";this.loadFuel(a)}.bind(this)}).inject(document.head)}else{this.loadFuel(a)}},loadFuel:function(a){this.fuel=new Fuel[a[0]](this,this.flame,{matchType:this.options.matchType,strict:this.options.strict});this.light()},light:function(){this.element=this.toElement();if(this.container){this.container.empty();this.element.inject(this.container)}else{this.codeblock.setStyle("display","none");this.element.inject(this.codeblock,"after")}},createLighter:function(){var a=new Element("pre",{"class":this.flame.shortName+this.name}),b=0;if(!$defined(this.fuel.wicks[0])){a.appendText(this.code)}else{this.fuel.wicks.each(function(c){a.appendText(this.code.substring(b,c.index));this.insertAndKeepEl(a,c.text,c.type);b=c.index+c.text.length},this);if(b0){var b=new Element("span");b.set("text",d);if(a){b.addClass(this.flame.aliases[a])}b.inject(c)}},insertAndMakeEl:function(b,c,d,f,a){this.insertAndKeepEl(b,d,a);if(f[1]){b=b.getParent()}b.inject(c);var e=new Element(f[0]);if(f[1]){e=new Element(f[1]).inject(e)}e.addClass(this.flame.shortName+"line");return e},insertLineNum:function(b,d,a){var c=new Element(a,{text:d++,"class":this.flame.shortName+"num"});c.inject(b.getParent(),"top");return d},toElement:function(){if(!this.element){this.element=this.builder[this.options.mode]();if(this.options.editable){this.element.set("contenteditable","true")}}return this.element},replaces:function(a){a=$(a,true);a.parentNode.replaceChild(this.toElement(),a);return this}});Element.implement({light:function(a){return new Lighter(this,a)}});String.implement({chop:function(){return this.replace(/(^\s*\n|\n\s*$)/gi,"")},tabToSpaces:function(b){for(var c=0,a="";c=this.index&&a.index=a.end)},overlaps:function(a){return(this.index==a.index&&this.length>a.length)},toString:function(){return this.index+" - "+this.text+" - "+this.end}});var Flame=new Class({shortName:"lt",aliases:new Hash(),common:new Hash(),layout:new Hash(),styles:new Hash(),defaultCommon:new Hash({"font-family":"Monaco, Courier, Monospace","font-size":"12px","line-height":"1.5",overflow:"auto","white-space":"pre-wrap","word-wrap":"break-word"}),defaultLayout:new Hash({numBgColor:new Hash(),lineBgColor:new Hash(),lineNumStyles:new Hash(),lineStyles:new Hash(),altLineStyles:new Hash(),top:new Hash(),right:new Hash(),bottom:new Hash(),left:new Hash(),codeStyles:new Hash()}),fixes:new Hash({div:new Hash({div:new Hash({clear:"left",overflow:"auto"}),num:new Hash({display:"block","float":"left","text-align":"center",width:"30px"}),line:new Hash({display:"block","margin-left":"30px"})}),table:new Hash({num:new Hash({"text-align":"center",width:"30px"})}),ol:new Hash({ol:new Hash({"margin-top":"0","margin-bottom":"0","margin-left":"0","padding-left":"0"}),li:new Hash({"margin-left":"40px"})})}),initialize:function(a,b){this.lighter=a;this.fuel=b;this.common.combine(this.defaultCommon);this.layout.combine(this.defaultLayout);this.styles.each(function(d,c){this.addAlias(c)},this);if(this.lighter.options.jsStyles){this.injectTag()}},addAlias:function(b,a){this.aliases[b]=a||b},injectTag:function(){this.styleTag=new Element("style").setProperty("type","text/css").inject(document.head);this.styleText="";var c=this.lighter.options.mode,f=c+"."+this.shortName+this.lighter.name,d=f+" ."+this.shortName,b=this.layout.lineNumStyles.extend(this.layout.numBgColor),a=this.layout.lineStyles.extend(this.layout.lineBgColor),e=this.layout.left.extend(this.layout.right);this.addCSS(f,this.common);this.addCSS(f,new Hash({"white-space":"-moz-pre-wrap"}));this.addCSS(f,new Hash({"white-space":"-pre-wrap"}));this.addCSS(f,new Hash({"white-space":"-o-pre-wrap"}));switch(c){case"pre":e=e.extend(this.layout.top).extend(this.layout.bottom);this.addCSS(f,this.layout.lineBgColor.extend(e));this.addCSS(f+" span",this.layout.codeStyles);break;case"ol":this.addCSS(f,b.extend(this.fixes.ol["ol"]));this.addCSS(f+" li",a.extend(e).extend(this.fixes.ol["li"]));this.addCSS(d+"first",this.layout.top);this.addCSS(d+"last",this.layout.bottom);this.addCSS(f+" .alt",this.layout.altLineStyles);this.addCSS(f+" span",this.layout.codeStyles);break;case"div":this.addCSS(d+"num",b.extend(this.fixes.div.num));this.addCSS(d+"line",a.extend(e).extend(this.fixes.div.line));this.addCSS(f+" div",this.fixes.div["div"].extend(this.layout.numBgColor));this.addCSS(d+"first",this.layout.top);this.addCSS(d+"last",this.layout.bottom);this.addCSS(f+" .alt",this.layout.altLineStyles);this.addCSS(f+" span",this.layout.codeStyles);break;case"table":this.addCSS(d+"num",b.extend(this.fixes.table["num"]));this.addCSS(d+"line",a.extend(e));this.addCSS(d+"first",this.layout.top);this.addCSS(d+"last",this.layout.bottom);this.addCSS(f+" .alt",this.layout.altLineStyles);this.addCSS(f+" span",this.layout.codeStyles);break}this.styles.each(function(g,h){this.addCSS(f+" ."+h,g)},this);if(Browser.Engine.trident){this.styleTag.styleSheet.cssText+=this.styleText}else{this.styleTag.appendText(this.styleText)}},addCSS:function(b,a){var c="\n"+b+" {\n";if(a){a.each(function(e,d){c+="\t"+d+": "+e+";\n"})}c+="}\n";this.styleText+=c}});Flame.standard=new Class({Extends:Flame,styles:new Hash({de1:new Hash({}),de2:new Hash({}),kw1:new Hash({color:"#1b609a"}),kw2:new Hash({color:"#9a6f1b"}),kw3:new Hash({color:"#784e0c"}),kw4:new Hash({color:"#9a6f1b"}),co1:new Hash({color:"#888888"}),co2:new Hash({color:"#888888"}),st0:new Hash({color:"#489a1b"}),st1:new Hash({color:"#489a1b"}),st2:new Hash({color:"#489a1b"}),nu0:new Hash({color:"#70483d"}),me0:new Hash({color:"#666666"}),br0:new Hash({color:"#444444"}),sy0:new Hash({color:"#444444"}),es0:new Hash({color:"#444444"}),re0:new Hash({color:"#784e0c"})}),layout:new Hash({numBgColor:new Hash({"background-color":"#f2f2f2"}),lineBgColor:new Hash({"background-color":"#fff"}),lineNumStyles:new Hash({color:"#939393","font-size":"10px","list-style":"decimal-leading-zero"}),lineStyles:new Hash({"border-top":"1px solid #fff","border-bottom":"1px solid #fff","border-left":"1px solid #939393",padding:"0 3px 0 10px"}),altLineStyles:new Hash({"border-top":"1px solid #eee","border-bottom":"1px solid #eee","background-color":"#F4F8FC"}),top:new Hash({"padding-top":"5px"}),right:new Hash({"padding-right":"5px"}),bottom:new Hash({"padding-bottom":"5px"}),left:new Hash({"padding-left":"15px"}),codeStyles:new