var Textile={};Textile.Theme={PLAIN:{background:"#000",color:"#FFF"},SELECTION:{background:"rgba(255, 255, 255, .2)"},HEADING:{background:"#622C10",color:"#FEDCC5"},PARAGRAPH:{background:"#100F0B"},STRONG:{color:"#E9C062",},EM:{color:"#E15F9F",fontStyle:"italic"},CITATION:{color:"#8BBBE1",fontStyle:"italic"},TODO:{color:"#F00",underline:true},BLOCKQUOTE:{color:"#DED4BA",fontStyle:"italic",background:"#100F0B"},DASH:{color:"#DE6112"},COPYRIGHT:{color:"#DE6112",fontStyle:"italic"},REGISTRED:{color:"#DE6112",fontStyle:"italic"},TRADEMARK:{color:"#DE6112",fontStyle:"italic"},IMAGE:{color:"#E7E51A",underline:true},BLOCK_START:{color:"#92BCFA"},ITEM_START:{color:"#9C0180"},BLOCK_STYLE:{color:"#92BCFA",underline:true},NOTE_MARK:{color:"#E900C0",underline:true},CODE:{color:"#7BDE09",fontStyle:"italic",background:"#100F0B"},LINK:{color:"#73AC45"},LINK_URL:{color:"#D48C6A",underline:true}};Textile.Utils={bind:function(a,b){return function(){a.apply(b,arguments)}},makeClass:function(a){var b=function(c){if(!(this instanceof arguments.callee)){return new arguments.callee(arguments)}if(typeof this.constructor=="function"){this.constructor.apply(this,c.callee?c:arguments)}};b.prototype=a;return b}};Textile.Editor=Textile.Utils.makeClass({model:null,ctx:null,el:null,cursor:null,lineHeight:17,first_line:1,gutterWidth:40,paddingTop:5,paddingLeft:5,font:"9pt Monaco, Lucida Console, monospace",hasFocus:false,selection:null,constructor:function(a){this.el=(typeof(a)=="string"?document.getElementById(a):a);if(!this.el.getContext){return}this.ctx=this.el.getContext("2d");if(!this.ctx.fillText){return}this.model=new Textile.Model(this.el.innerHTML,this);this.cursor=new Textile.Cursor(this);this.history=new Textile.History(this);this.clipboard=new Textile.Clipboard(this);this.gecko=(document.getBoxObjectFor==undefined)?false:true;this.el.addEventListener("dblclick",Textile.Utils.bind(this.onDblclick,this),true);window.addEventListener("mousedown",Textile.Utils.bind(this.onMousedown,this),true);window.addEventListener("mouseup",Textile.Utils.bind(this.onMouseup,this),true);window.addEventListener("mousemove",Textile.Utils.bind(this.onMousemove,this),true);window.addEventListener("keypress",Textile.Utils.bind(this.onKeypress,this),true);window.addEventListener("keydown",Textile.Utils.bind(this.onKeydown,this),true);this.el.addEventListener("mousewheel",Textile.Utils.bind(this.onMousewheel,this),true);this.el.addEventListener("DOMMouseScroll",Textile.Utils.bind(this.onMousewheelGecko,this),true);this.resize(this.el.width,this.el.height)},setContent:function(a){this.model.content=a;this.model.update();this.cursor.bound();this.paint()},getContent:function(){return this.model.content},getPosition:function(){var a=$(this.el).position();return{top:a.top+parseInt($(this.el).css("borderTopWidth"))+parseInt($(this.el).css("paddingTop"))+parseInt($(this.el).css("marginTop")),left:a.left+parseInt($(this.el).css("borderLeftWidth"))+ +parseInt($(this.el).css("paddingLeft"))+ +parseInt($(this.el).css("marginLeft"))}},resize:function(b,d){this.width=b;this.height=d;this.el.width=b;this.el.height=d;this.ctx.font=this.font;var a=" ";for(var c=0;c<500;c++){if(this.ctx.measureText(a).width<this.width-10-this.gutterWidth-2*this.paddingLeft){a+=" "}else{this.charWidth=this.ctx.measureText(a).width/a.length;break}}this.lineWidth=Math.round((this.width-10-this.gutterWidth-2*this.paddingLeft)/this.charWidth);this.lines=Math.round((this.height-this.paddingTop*3)/this.lineHeight);this.model.update();this.paint()},onMousedown:function(d){if(d.target==this.el){this.hasFocus=true}else{this.hasFocus=false}if(d.pageX>this.getPosition().left+this.width-20&&d.target==this.el){var a=this.lines*this.lineHeight;var c=a/this.model.lines.length;var b=this.lines*c;if(b<10){b=10}var f=(this.first_line-1)*c;var g=d.pageY-this.getPosition().top-this.paddingTop;if(g>f&&g<f+b){this.scrollBase=d.pageY;this.scrollBaseLine=this.first_line}else{if(g<f){this.onMousewheel({wheelDelta:1})}else{this.onMousewheel({wheelDelta:-1})}}}else{this.selection=null;this.bp=true;if(d.target==this.el){this.cursor.fromPointer(this.translate(d));this.paint()}else{this.paint()}}},onDblclick:function(b){var a=this.model.lines[this.cursor.line-1].content;var d=this.cursor.column;while(a.charAt(d).match(/\w/)&&d>-1){d--}d++;this.selection={anchor:this.cursor.getPosition(),from:d+this.model.lines[this.cursor.line-1].offset,to:null};d=this.cursor.column+1;while(a.charAt(d).match(/\w/)&&d<a.length){d++}this.selection.to=d+this.model.lines[this.cursor.line-1].offset;this.paint()},onMouseup:function(a){this.bp=false;this.scrollBase=null;clearTimeout(this.autoscroller);if(this.selection&&(this.selection.from==null||this.selection.to==null)){this.selection=null}},onMousemove:function(f){if(f.pageX>this.getPosition().left+this.width-20&&f.target==this.el){this.el.style.cursor="default"}else{this.el.style.cursor="text"}if(!this.hasFocus){return}if(this.scrollBase){var b=this.lines*this.lineHeight;var d=b/this.model.lines.length;var a=Math.round((f.pageY-this.scrollBase)/d)+this.scrollBaseLine;this.onMousewheel({},a);return}if(this.bp){if(!this.selection){this.selection={anchor:this.cursor.getPosition(),from:null,to:null}}else{this.cursor.fromPointer(this.translate(f));var c=this.cursor.getPosition();if(c<this.selection.anchor&&this.selection.from!=c){this.selection.from=c;this.selection.to=this.selection.anchor;this.paint()}if(c>this.selection.anchor&&this.selection.to!=c){this.selection.from=this.selection.anchor;this.selection.to=c;this.paint()}if(c==this.selection.anchor&&this.selection.from!=null){this.selection.from=null;this.selection.to=null;this.paint()}}}var g=false;if(this.bp){if(f.pageY<this.getPosition().top){this.onMousewheel({wheelDelta:1});g=true}if(f.pageY>this.getPosition().top+this.height){this.onMousewheel({wheelDelta:-1});g=true}}clearTimeout(this.autoscroller);if(g){this.autoscroller=setTimeout(Textile.Utils.bind(function(){this.onMousemove(f)},this),10)}},onMousewheel:function(a,b){if(b!=null){this.first_line=b}else{var c=a.wheelDelta;if(c>0){this.first_line--}else{this.first_line++}}if(a.preventDefault){a.preventDefault()}this.cursor.bound();this.paint()},onMousewheelGecko:function(a){if(a.axis==a.VERTICAL_AXIS){this.onMousewheel({wheelDelta:-a.detail});a.preventDefault()}},onKeypress:function(b){if(!b.charCode||b.charCode==13||b.keyCode==8){if(this.gecko){this.onKeydown(b,true)}return}if(this.hasFocus){this.cursor.show=true;var a=this.cursor.getPosition();if(b.metaKey||b.ctrlKey){if(b.charCode==97){b.preventDefault();this.selection={anchor:0,from:0,to:this.model.content.length};this.paint()}if(b.charCode==122){this.history.undo()}if(b.charCode==121){this.history.redo()}if(b.charCode==120){this.clipboard.cut()}if(b.charCode==118){this.clipboard.paste()}if(b.charCode==99){this.clipboard.copy()}return}var d=String.fromCharCode(b.charCode);b.preventDefault();if(this.selection){this.model.replace(this.selection.from,this.selection.to,d);this.cursor.toPosition(this.selection.from+1);this.selection=null}else{this.model.insert(a,d);this.cursor.toPosition(a+1)}this.cursor.focus()}},onKeydown:function(c,b){if(this.hasFocus&&(!this.gecko||b)){if(c.metaKey||c.ctrlKey){return}this.cursor.show=true;if(c.keyCode==40){c.preventDefault();this.cursor.lineDown();this.cursor.focus();return}if(c.keyCode==38){c.preventDefault();this.cursor.lineUp();this.cursor.focus();return}if(c.keyCode==37){c.preventDefault();this.cursor.left();this.cursor.focus();return}if(c.keyCode==39){c.preventDefault();this.cursor.right();this.cursor.focus();return}var a=this.cursor.getPosition();if(c.keyCode==13){c.preventDefault();if(this.selection){this.model.replace(this.selection.from,this.selection.to,"\n");this.cursor.toPosition(this.selection.from+1);this.selection=null}else{this.model.lineBreak(a);this.cursor.toPosition(a+1)}this.cursor.focus();return}if(c.keyCode==8){c.preventDefault();if(this.selection){this.model.replace(this.selection.from,this.selection.to,"");this.cursor.toPosition(this.selection.from);this.selection=null}else{this.model.deleteLeft(a);this.cursor.toPosition(a-1)}this.cursor.focus();return}if(c.keyCode==9){c.preventDefault();if(this.selection){this.model.replace(this.selection.from,this.selection.to,"    ");this.cursor.toPosition(this.selection.from+4);this.selection=null}else{this.model.insert(a,"    ");this.cursor.toPosition(a+4)}this.cursor.focus();return}if(c.keyCode==46){c.preventDefault();this.model.deleteRight(a);this.cursor.toPosition(a);this.cursor.focus();return}}},translate:function(a){var b=this.getPosition();return{x:a.pageX-b.left-this.gutterWidth-this.paddingLeft,y:a.pageY-b.top-this.paddingTop}},updateCursor:function(){this.showCursor=this.hasFocus&&!this.showCursor;this.paint()},paint:function(){this.paintBackground();this.paintLineNumbers();this.paintSelection();this.paintContent();this.paintScrollbar();this.paintCursor()},paintBackground:function(){var d=Textile.Theme.PLAIN;if(d&&d.background){this.ctx.fillStyle=d.background}else{this.ctx.fillStyle="#000"}this.ctx.fillRect(0,0,this.width,this.height);var f=new Textile.Parser(this.model,this.first_line,this.first_line+this.lines-1);var c=f.nextToken();var a=0,e=1;while(c.type!="EOF"){var d=Textile.Theme[c.type];if(d&&d.background){this.ctx.fillStyle=d.background;for(var b=c.startLine-this.first_line;b<=c.endLine-this.first_line;b++){this.ctx.fillRect(this.gutterWidth+this.paddingLeft,(b)*this.lineHeight+this.paddingTop,this.charWidth*(this.lineWidth-1),this.lineHeight)}}c=f.nextToken()}},paintSelection:function(){if(this.hasFocus){var e=Textile.Theme.SELECTION;if(e&&e.background){this.ctx.fillStyle=e.background}else{this.ctx.fillStyle="rgba(255,255,255,.2)"}if(!this.selection){if(this.cursor.isVisible()){this.ctx.fillRect(this.gutterWidth+1,(this.cursor.line-this.first_line)*this.lineHeight+this.paddingTop,this.width-this.gutterWidth,this.lineHeight)}}else{this.cursor.toPosition(this.selection.from);var f=this.cursor.line,d=this.cursor.column;this.cursor.toPosition(this.selection.to);var b=this.cursor.line,a=this.cursor.column;if(f==b){this.ctx.fillRect(this.gutterWidth+this.paddingLeft+d*this.charWidth,(f-this.first_line)*this.lineHeight+this.paddingTop,(a-d)*this.charWidth,this.lineHeight)}else{for(var c=f;c<=b;c++){if(this.cursor.isLineVisible(c)){if(c==f){this.ctx.fillRect(this.gutterWidth+this.paddingLeft+d*this.charWidth,(c-this.first_line)*this.lineHeight+this.paddingTop,(this.lineWidth-d-1)*this.charWidth,this.lineHeight);continue}if(c==b){this.ctx.fillRect(this.gutterWidth+this.paddingLeft,(c-this.first_line)*this.lineHeight+this.paddingTop,a*this.charWidth,this.lineHeight);continue}this.ctx.fillRect(this.gutterWidth+this.paddingLeft,(c-this.first_line)*this.lineHeight+this.paddingTop,(this.lineWidth-1)*this.charWidth,this.lineHeight)}}}}}},paintLineNumbers:function(){this.ctx.fillStyle="#DEDEDE";this.ctx.fillRect(0,0,this.gutterWidth,this.height);this.ctx.fillStyle="#8E8E8E";this.ctx.fillRect(this.gutterWidth,0,1,this.height);this.ctx.font=this.font;var d=null;var e=1;for(var b=this.first_line;b<this.first_line+this.lines;b++){if(b>this.model.lines.length){break}if(this.hasFocus&&!this.selection&&this.model.lines[b-1].line==this.model.lines[this.cursor.line-1].line){this.ctx.fillStyle="#000000"}else{this.ctx.fillStyle="#888888"}var c="";if(this.model.lines[b-1].line==d){c="\u00B7"}else{d=(this.model.lines[b-1].line);c=d+""}var a=c.length*8;this.ctx.fillText(c,this.gutterWidth-this.paddingLeft-a,e++*this.lineHeight+this.paddingTop-4)}},paintContent:function(){var g=new Textile.Parser(this.model,this.first_line,this.first_line+this.lines-1);var d=g.nextToken();var a=0,f=1;while(d.type!="EOF"){if(d.text){var e=Textile.Theme[d.type];if(e&&e.color){this.ctx.fillStyle=e.color}else{this.ctx.fillStyle="#FFF"}if(e&&e.fontStyle){this.ctx.font=e.fontStyle+" 12px Monaco, Lucida Console, monospace"}else{this.ctx.font="12px Monaco, Lucida Console, monospace"}if(d.text.indexOf("\n")>-1||d.text.indexOf("\r")>-1){var b=d.text.split(/[\n\r]/);for(var c=0;c<b.length;c++){if(d.startLine+c>=f+this.first_line-1&&d.startLine+c<=this.first_line+this.lines-1){this.ctx.fillText(b[c],this.gutterWidth+this.paddingLeft+a*this.charWidth,f*this.lineHeight+this.paddingTop-4);a+=b[c].length;if(c<b.length-1){a=0;f++}}}}else{if(d.startLine>=f+this.first_line-1&&d.startLine<=this.first_line+this.lines-1){this.ctx.fillText(d.text,this.gutterWidth+this.paddingLeft+a*this.charWidth,f*this.lineHeight+this.paddingTop-4);if(e&&e.underline){this.ctx.fillRect(this.gutterWidth+this.paddingLeft+a*this.charWidth,f*this.lineHeight+this.paddingTop-4+1,d.text.length*this.charWidth+1,1)}a+=d.text.length}}}d=g.nextToken()}},paintCursor:function(){if(this.hasFocus&&this.cursor.show&&!this.selection&&this.cursor.isVisible()){this.ctx.fillStyle="#FFF";this.ctx.fillRect(this.gutterWidth+this.paddingLeft+this.cursor.column*this.charWidth,this.paddingTop+((this.cursor.line-this.first_line)*this.lineHeight),1,this.lineHeight)}},paintScrollbar:function(){if(this.model.lines.length>this.lines){var a=this.lines*this.lineHeight;var c=a/this.model.lines.length;var b=this.lines*c;var d=(this.first_line-1)*c;this.ctx.strokeStyle="rgba(255, 255, 255, .5)";this.ctx.lineWidth=10;this.ctx.beginPath();this.ctx.moveTo(this.width-10,this.paddingTop+d);this.ctx.lineTo(this.width-10,this.paddingTop+d+b);this.ctx.stroke()}}});Textile.Clipboard=Textile.Utils.makeClass({constructor:function(a){this.editor=a;this.clipboard=document.createElement("textarea");document.body.appendChild(this.clipboard);this.clipboard.style.position="absolute";this.clipboard.style.width="100px";this.clipboard.style.height="100px";this.clipboard.style.top=this.editor.getPosition().top+"px";this.clipboard.style.left="-999em";this.clipboard.autocomplete="off";this.clipboard.tabIndex="-1"},cut:function(){var a=this.selected();if(a){this.copyToClipboard(a);this.editor.model.replace(this.editor.selection.from,this.editor.selection.to,"");this.editor.cursor.toPosition(this.editor.selection.from);this.editor.selection=null;this.editor.cursor.focus();this.editor.paint()}},copy:function(){var a=this.selected();if(a){this.copyToClipboard(a)}},paste:function(){this.clipboard.select();setTimeout(Textile.Utils.bind(function(){var a=this.clipboard.value;if(a){if(this.editor.selection){this.editor.model.replace(this.editor.selection.from,this.editor.selection.to,a);this.editor.cursor.toPosition(this.editor.selection.from+a.length);this.editor.selection=null}else{this.editor.model.insert(this.editor.cursor.getPosition(),a);this.editor.cursor.toPosition(this.editor.cursor.getPosition()+a.length)}this.editor.cursor.focus();this.editor.paint()}},this),0)},copyToClipboard:function(a){this.clipboard.value=a;this.clipboard.select()},selected:function(){if(!this.editor.selection){return""}return this.editor.model.content.substring(this.editor.selection.from,this.editor.selection.to)}});Textile.History=Textile.Utils.makeClass({commands:null,date:0,constructor:function(a){this.editor=a;this.commands=[]},add:function(a){this.commands=this.commands.slice(0,this.date+1);this.commands.push(a);this.date=this.commands.length-1},undo:function(){var a=this.commands[this.date--];if(this.date<-1){this.date=-1}if(!a){return}if(a.type=="i"){this.editor.model.deleteRight(a.at,true,a.txt.length);this.editor.cursor.toPosition(a.cursor)}if(a.type=="d"){this.editor.model.insert(a.at,a.txt,true);this.editor.cursor.toPosition(a.cursor)}if(a.type=="r"){this.editor.model.replace(a.from,a.from+a.newTxt.length,a.oldTxt,true);this.editor.cursor.toPosition(a.from);this.editor.selection=a.selection}this.editor.cursor.focus();this.editor.paint()},redo:function(){var a=this.commands[++this.date];if(this.date>this.commands.length-1){this.date=this.commands.length-1}if(!a){return}if(a.type=="i"){this.editor.model.insert(a.at,a.txt,true);this.editor.cursor.toPosition(a.cursor+a.txt.length)}if(a.type=="d"){this.editor.model.deleteRight(a.at,true);this.editor.cursor.toPosition(a.cursor-1)}if(a.type=="r"){this.editor.model.replace(a.from,a.from+a.oldTxt.length,a.newTxt,true);this.editor.cursor.toPosition(a.from);this.editor.selection=null}this.editor.cursor.focus();this.editor.paint()}});Textile.Cursor=Textile.Utils.makeClass({line:1,column:0,pref_column:0,show:false,editor:null,constructor:function(a){this.editor=a;setInterval(Textile.Utils.bind(this.toggle,this),500)},toggle:function(){if(this.editor.hasFocus){this.show=!this.show;this.editor.paint()}},fromPointer:function(a){this.line=Math.round((a.y+(this.editor.lineHeight/2))/this.editor.lineHeight)+this.editor.first_line-1;this.column=Math.round(a.x/this.editor.charWidth);this.pref_column=this.column;this.bound();this.show=true},isVisible:function(){return this.isLineVisible(this.line)},isLineVisible:function(a){return a>=this.editor.first_line&&a<this.editor.first_line+this.editor.lines},focus:function(){if(!this.isVisible()){if(this.line<this.editor.first_line){this.editor.first_line=this.line}else{this.editor.first_line=this.line-this.editor.lines+1}}this.editor.paint()},lineDown:function(){if(this.editor.selection){this.toPosition(this.editor.selection.to);this.editor.selection=null}this.line++;if(this.pref_column>this.column){this.column=this.pref_column}this.bound()},lineUp:function(){if(this.editor.selection){this.toPosition(this.editor.selection.from);this.editor.selection=null}this.line--;if(this.pref_column>this.column){this.column=this.pref_column}this.bound()},left:function(){if(this.editor.selection){this.toPosition(this.editor.selection.from);this.editor.selection=null}else{this.toPosition(this.getPosition()-1)}this.pref_column=this.column},right:function(a){if(!a&&this.editor.selection){this.toPosition(this.editor.selection.to);this.editor.selection=null}else{this.toPosition(this.getPosition()+1)}this.pref_column=this.column},bound:function(){if(this.line<1){this.line=1}if(this.editor.first_line<1){this.editor.first_line=1}if(this.line>this.editor.model.lines.length){this.line=this.editor.model.lines.length}if(this.editor.first_line>this.editor.model.lines.length-this.editor.lines+1){this.editor.first_line=this.editor.model.lines.length-this.editor.lines+1;if(this.editor.first_line<1){this.editor.first_line=1}}if(this.column<0){this.column=0}var a=this.editor.model.lines[this.line-1].content;if(this.column>a.length){this.column=a.length}},getPosition:function(){return this.editor.model.lines[this.line-1].offset+this.column},toPosition:function(a){if(!a||a<0){a=0}for(var b=0;b<this.editor.model.lines.length;b++){if(this.editor.model.lines[b].offset>a){this.line=b;this.column=a-this.editor.model.lines[b-1].offset;this.pref_column=this.column;if(this.line<1){return}this.bound();return}}this.line=this.editor.model.lines.length;this.column=a-this.editor.model.lines[b-1].offset;this.pref_column=this.column;if(this.line<1){return}this.bound()}});Textile.Model=Textile.Utils.makeClass({content:"",lines:[],editor:null,constructor:function(a,b){this.content=a;this.editor=b;this.update()},update:function(){this.lines=[];if(!this.editor.lineWidth){return}var e=0;var b=this.content.split("\n");for(var d=0;d<b.length;d++){var a=b[d];while(a!=null){var c=a.substring(0,this.editor.lineWidth);if(c.length==this.editor.lineWidth){if(c.indexOf(" ")>-1){c=c.substring(0,c.lastIndexOf(" ")+1)}else{c=c.substring(0,c.length)}}this.lines.push({line:d+1,content:c,offset:e});e+=c.length;if(a.length>c.length){a=a.substring(c.length);if(!a){a=null}}else{a=null}}e++}},insert:function(b,a,c){this.content=this.content.substring(0,b)+a+this.content.substring(b);if(!c){this.editor.history.add({type:"i",at:b,txt:a,cursor:this.editor.cursor.getPosition()})}this.update()},replace:function(e,d,b,c){var a=this.content.substring(e,d);if(!c){this.editor.history.add({type:"r",from:e,newTxt:b,oldTxt:a,selection:this.editor.selection})}this.content=this.content.substring(0,e)+b+this.content.substring(d);this.update()},lineBreak:function(a,b){this.insert(a,"\n")},deleteLeft:function(b,c){var a=this.content.substring(b-1,b);if(!c){this.editor.history.add({type:"d",at:b-1,txt:a,cursor:this.editor.cursor.getPosition()})}this.content=this.content.substring(0,b-1)+this.content.substring(b);this.update()},deleteRight:function(b,d,c){if(!c){c=1}var a=this.content.substring(b,b+c);if(!d){this.editor.history.add({type:"d",at:b,txt:a,cursor:this.editor.cursor.getPosition()})}this.content=this.content.substring(0,b)+this.content.substring(b+c);this.update()}});Textile.Parser=Textile.Utils.makeClass({constructor:function(a,d,c){this.model=a;this.from=d;this.to=c;if(!/^$/.test(this.model.lines[this.from-1].content)){while(this.from>1){if(!/^$/.test(this.model.lines[this.from-1].content)){this.from--}else{this.from++;break}}}this.text="";for(var b=this.from;b<=this.to;b++){if(b>this.model.lines.length){continue}this.text+=this.model.lines[b-1].content;if(this.model.lines[b]&&this.model.lines[b].line>this.model.lines[b-1].line){this.text+="\n"}else{this.text+="\r"}}this.len=this.text.length;this.end=this.begin=0;this.state="PLAIN"},found:function(e,d){var c=this.begin;var a=--this.end+d;this.lastState=this.state;var f=this.text.substring(c,a);var b=f.match(/[\n\r]/g);var h=this.from;var g=this.from+(b?b.length-1:0);this.from=this.from+(b?b.length:0);this.begin=this.end+=d;this.state=e;return{type:this.lastState,text:f,startLine:h,endLine:g,}},checkHas:function(d,c,b){var g=this.end+(c?c:0);while(g<this.text.length&&this.text.charAt(g)!="\n"){var f="";for(var a=0;a<d.length;a++){f+=this.text.charAt(g+a)}if(f==d){return true}if(b&&f.charAt(0).match(b)){return false}g++}return false},nextToken:function(){for(;;){var e=this.len-this.end;if(e<1||!e){this.end++;return this.found("EOF",0)}var f=this.text.charAt(this.end++);var d=e>1?this.text.charAt(this.end):0;var b=e>2?this.text.charAt(this.end+1):0;var a=e>3?this.text.charAt(this.end+2):0;if(this.state=="PLAIN"){if(f=="h"&&/[1-6]/.test(d)&&b=="."){this.nextBlock="HEADING";return this.found("BLOCK_START",0)}if(f=="h"&&/[1-6]/.test(d)&&b=="("&&this.checkHas(").",3," ")){this.nextBlock="HEADING";return this.found("BLOCK_START",0)}if(f=="p"&&d=="."){this.nextBlock="PARAGRAPH";return this.found("BLOCK_START",0)}if(f=="p"&&d=="("&&this.checkHas(").",2," ")){this.nextBlock="PARAGRAPH";return this.found("BLOCK_START",0)}if(f=="b"&&d=="q"&&b=="."){this.nextBlock="BLOCKQUOTE";return this.found("BLOCK_START",0)}if(f=="b"&&d=="q"&&b=="("&&this.checkHas(").",2," ")){this.nextBlock="BLOCKQUOTE";return this.found("BLOCK_START",0)}if(f=="b"&&d=="c"&&b=="."){this.nextBlock="CODE";return this.found("BLOCK_START",0)}if(f=="b"&&d=="c"&&b=="("&&this.checkHas(").",2," ")){this.nextBlock="CODE";return this.found("BLOCK_START",0)}if(f=="*"&&d==" "){return this.found("ITEM_START",0)}if(f=="*"&&d=="*"&&b==" "){return this.found("ITEM_START",0)}if(f=="*"&&d=="*"&&b=="*"&&a==" "){return this.found("ITEM_START",0)}if(f=="#"&&d==" "){return this.found("ITEM_START",0)}if(f=="#"&&d=="#"&&b==" "){return this.found("ITEM_START",0)}if(f=="#"&&d=="#"&&b=="#"&&a==" "){return this.found("ITEM_START",0)}if(f!="\n"){return this.found("PARAGRAPH",0)}}if(this.state=="BLOCK_START"){if(f=="."){return this.found(this.nextBlock,1)}if(f=="("&&this.checkHas(").",1)){return this.found("BLOCK_STYLE",0)}}if(this.state=="BLOCK_STYLE"){if(f==")"&&d=="."){return this.found("BLOCK_START",1)}}if(this.state=="ITEM"){if(f=="\n"&&d=="*"&&b==" "){return this.found("ITEM_START",0)}if(f=="\n"&&d=="*"&&b=="*"&&a==" "){return this.found("ITEM_START",0)}if(f=="\n"&&d=="*"&&b=="*"&&a=="*"){return this.found("ITEM_START",0)}if(f=="\n"&&d=="#"&&b==" "){return this.found("ITEM_START",0)}if(f=="\n"&&d=="#"&&b=="#"&&a==" "){return this.found("ITEM_START",0)}if(f=="\n"&&d=="#"&&b=="#"&&a=="#"){return this.found("ITEM_START",0)}}if(this.state=="ITEM_START"){if(f==" "){return this.found("ITEM",1)}}if(this.state=="PARAGRAPH"||this.state=="HEADING"||this.state=="BLOCKQUOTE"||this.state=="ITEM"){if(f=="*"&&d=="*"&&this.checkHas("**",2)){return this.found("STRONG",0)}if(f=="_"&&d=="_"&&this.checkHas("__",2)){return this.found("EM",0)}if(f=="-"&&d=="-"){return this.found("DASH",0)}if(f=="?"&&d=="?"&&this.checkHas("??",2)){return this.found("CITATION",0)}if(f=="("&&d=="c"&&b==")"){return this.found("COPYRIGHT",0)}if(f=="("&&d=="r"&&b==")"){return this.found("REGISTRED",0)}if(f=="("&&d=="t"&&b=="m"&&a==")"){return this.found("TRADEMARK",0)}if(f=="["&&d.match(/\d/)&&b=="]"){return this.found("NOTE_MARK",0)}if(f=="["&&d.match(/\d/)&&b.match(/\d/)&&a=="]"){return this.found("NOTE_MARK",0)}if(f=='"'&&this.checkHas('":',1,'"')){return this.found("LINK",0)}}if(this.state=="PARAGRAPH"||this.state=="BLOCKQUOTE"){if(f=="!"&&d.match(/\w/)&&this.checkHas("!",1)){return this.found("IMAGE",0)}}if(this.state=="STRONG"){if(f!="*"&&d=="*"&&b=="*"){return this.found(this.lastState||"PLAIN",3)}}if(this.state=="TODO"){return this.found(this.lastState||"PLAIN",4)}if(this.state=="LINK"){if(f=='"'&&d==":"){this.statePreviousLink=this.lastState;return this.found("LINK_URL",2)}}if(this.state=="LINK_URL"){if(f.match(/\s/)){return this.found(this.statePreviousLink||"PLAIN",0)}if(f.match(/[.,;]/)&&d.match(/\s/)){return this.found(this.statePreviousLink||"PLAIN",0)}}if(this.state=="EM"){if(f!="_"&&d=="_"&&b=="_"){return this.found(this.lastState||"PLAIN",3)}}if(this.state=="CITATION"){if(f!="?"&&d=="?"&&b=="?"){return this.found(this.lastState||"PLAIN",3)}}if(this.state=="IMAGE"){if(f!="!"&&d=="!"){return this.found(this.lastState||"PLAIN",2)}}if(this.state=="DASH"){return this.found(this.lastState||"PLAIN",2)}if(this.state=="COPYRIGHT"){return this.found(this.lastState||"PLAIN",3)}if(this.state=="REGISTRED"){return this.found(this.lastState||"PLAIN",3)}if(this.state=="TRADEMARK"){return this.found(this.lastState||"PLAIN",4)}if(this.state=="NOTE_MARK"){if(f=="]"){return this.found(this.lastState||"PLAIN",1)}}if(true){if(f=="\n"&&d=="\n"){return this.found("PLAIN",1)}if(f=="T"&&d=="O"&&b=="D"&&a=="O"){return this.found("TODO",0)}}}}});