
TypingText=function(element,interval,cursor,finishedCallback){if((typeof document.getElementById=="undefined")||(typeof element.innerHTML=="undefined")){this.running=true;return;}
this.element=element;this.finishedCallback=(finishedCallback?finishedCallback:function(){return;});this.interval=(typeof interval=="undefined"?100:interval);this.origText=this.element.innerHTML;this.unparsedOrigText=this.origText;this.cursor=(cursor?cursor:"");this.currentText="";this.currentChar=0;this.element.typingText=this;if(this.element.id=="")this.element.id="typingtext"+TypingText.currentIndex++;TypingText.all.push(this);this.running=false;this.inTag=false;this.tagBuffer="";this.inHTMLEntity=false;this.HTMLEntityBuffer="";}
TypingText.all=new Array();TypingText.currentIndex=0;TypingText.runAll=function(){for(var i=0;i<TypingText.all.length;i++)TypingText.all[i].run();}
TypingText.prototype.run=function(){if(this.running)return;if(typeof this.origText=="undefined"){setTimeout("document.getElementById('"+this.element.id+"').typingText.run()",this.interval);return;}
if(this.currentText=="")this.element.innerHTML="";if(this.currentChar<this.origText.length){if(this.origText.charAt(this.currentChar)=="<"&&!this.inTag){this.tagBuffer="<";this.inTag=true;this.currentChar++;this.run();return;}else if(this.origText.charAt(this.currentChar)==">"&&this.inTag){this.tagBuffer+=">";this.inTag=false;this.currentText+=this.tagBuffer;this.currentChar++;this.run();return;}else if(this.inTag){this.tagBuffer+=this.origText.charAt(this.currentChar);this.currentChar++;this.run();return;}else if(this.origText.charAt(this.currentChar)=="&"&&!this.inHTMLEntity){this.HTMLEntityBuffer="&";this.inHTMLEntity=true;this.currentChar++;this.run();return;}else if(this.origText.charAt(this.currentChar)==";"&&this.inHTMLEntity){this.HTMLEntityBuffer+=";";this.inHTMLEntity=false;this.currentText+=this.HTMLEntityBuffer;this.currentChar++;this.run();return;}else if(this.inHTMLEntity){this.HTMLEntityBuffer+=this.origText.charAt(this.currentChar);this.currentChar++;this.run();return;}else{this.currentText+=this.origText.charAt(this.currentChar);}
this.element.innerHTML=this.currentText;this.element.innerHTML+=(this.currentChar<this.origText.length-1?(typeof this.cursor=="function"?this.cursor(this.currentText):this.cursor):"");this.currentChar++;setTimeout("document.getElementById('"+this.element.id+"').typingText.run()",this.interval);}else{this.currentText="";this.currentChar=0;this.running=false;this.finishedCallback();}}
