JS代码格式化和语法着色V2

      2019-10-25 23:16      编程语言
升级到第二版,开一贴以示庆贺,哈哈哈

自Ver1.1升级内容
1.增加函数列表
2.增加函数Export功能
3.增加函数依存关系分析(这个功能个人未见其他软件实现过,自己创意,问题多多,目前分析能力还是比较有限的,只能分析全局函数依存关系,可能在复杂代码的情况下出现bug)
4.修正for语句分析bug
5.修正语法折叠的bug
6.改进CollapseAll※ExpandAll函数工作方式,避免行数太大时的死机
7.改进行号分析机制,避免行数太大时的死机
复制代码 代码如下:
<html>
<head>
<title>JSerVer2.0</title>
<metahttp-equiv="content-type"content="text/html;charset=gb2312"/>
<style>
/*GlobalCSS*/

*{padding:0px;margin:0px;font-size:13px;font-family:arial宋体;}

body{overflow:auto;border:0pxnoneblack;background-color:buttonface;}

li{margin:0px0px0px40px;padding:2px4px;}

div{font-size:13px;line-height:14px;}

p{font-size:13px;line-height:14px;}

/*ClassCSS*/

.codeRoot{line-height:14px;}
.quote{color:#999;}
.comments{color:#009090;}
.indent{margin-left:25px;}
.regexp{color:#F000F0;}
.keyWord{color:blue;}
.object{color:red;}
.method_property{color:#FF8000;}
.operator{color:#004000;}

.colsp{font-size:12px;width:14px;height:14px;overflow:hidden;border:1pxoutsetbuttonface;text-align:center;
cursor:pointer;padding-left:2px;}
.colsp2{font-size:12px;width:14px;height:14px;overflow:hidden;border:1pxinsetbuttonface;text-align:center;
cursor:pointer;padding-left:2px;color:red!important;background-color:#E0FFF8!important;}

/*IdentifiedCSS*/

#divTools{height:20px;border-bottom:1pxsolid#555;padding-left:15px;}

#divToolsa{color:navy;text-decoration:none;height:20px;line-height:20px;padding:0px25px;}

#divToolsa:hover{color:white;background-color:navy;text-decoration:none;height:20px;line-height:20px;}

#divJSInput{display:none;width:600px;height:450px;border:2pxoutsetbuttonface;position:absolute;background-
color:buttonface;z-Index:2;}

#divJSInputTitle{color:white;background-color:navy;height:20px;line-height:20px;padding:0px10px;cursor:default;}

#txtJSInput{width:598px;height:406px;overflow:auto;padding:4px8px;background-color:white;}

#divJSInputBar{height:24px;padding:0px4px;}

#divJSInputBarinput{width:110px;height:22px;border:1pxsolid#555;line-height:20px;}

#divMain{width:100%;height:500;overflow:hidden;position:relative;}

#divJSOutputLineNo{width:32px;height:100%;overflow:hidden;background-color:#DDD;position:absolute;left:0px;top:0px;
text-align:right;}

#divJSOutputLineNop{font-size:12px;line-height:14px;}

#divJSOutputPlus{width:14px;height:100%;overflow:hidden;background-color:#EEE;position:absolute;left:32px;top:0px;z
-Index:2;}

#divJSOutputPlusp{font-size:12px;line-height:14px;}

#divJSOutput{background-color:white;border:1pxinsetbuttonface;height:100%;position:absolute;left:45px;top:0px;
overflow:scroll;}

#divWaiting{display:none;width:400px;height:60px;border:1pxsolidbuttonface;position:absolute;background-
color:#E0F0F0;z-Index:3;text-align:center;padding-top:10px;}

#divWaitinginput{width:140px;height:22px;border:1pxsolid#555;line-height:20px;cursor:default;margin-top:4px;}

#divJSExport{display:none;width:600px;height:450px;border:2pxoutsetbuttonface;position:absolute;background-
color:buttonface;z-Index:2;}

#divJSExportTitle{color:white;background-color:navy;height:20px;line-height:20px;padding:0px10px;cursor:default;}

#selJSExport{width:598px;height:406px;overflow:auto;padding:4px8px;background-color:white;}

#divJSExportContent{width:598px;height:406px;overflow:auto;padding:4px8px;background-color:white;display:none;}

#divJSExportBar{height:24px;padding:0px4px;}

#divJSExportBarinput{width:170px;height:22px;border:1pxsolid#555;line-height:20px;}

</style>
<scripttype="text/javascript">
/**********************
Author:Hutia

*********************/

window.onload=init;


//------------------
//StaticVariable
//------------------

varKEYWORDS="abstractbreakbytecasecatchcharclassconstcontinuedefaultdeletedodoubleelseextendsfalsefinal
finallyfloatforfunctiongotoifimplementsimportininstanceofintinterfacelongnativenullpackageprivateprotected
publicresetreturnshortstaticsuperswitchsynchronizedthisthrowtransienttruetryvarvoidwhilewith";
varOBJECTS="AnchorAppletAreaArgumentsArrayBooleanButtonCheckboxCollectionCryptoDateDictionaryDocumentDrive
DrivesElementEnumeratorEventFileFileObjectFileSystemObjectFileUploadFolderFoldersFormFrameFunctionGlobalHidden
HistoryHTMLElementImageInfinityInputJavaArrayJavaClassJavaObjectJavaPackageJSObjectLayerLinkMathMimeType
NavigatorNumberObjectOptionPackagesPasswordPluginPrivilegeManagerRandomRegExpScreenSelectStringSubmitText
TextareaURLVBArrayWindowWScript";
varMETHODS_PROPERTIES="aboveabsacosactionactiveElementalertalinkColorallaltKeyanchoranchorsappCodeNameapplets
applyappNameappVersionargumentsarityasinassignatanatan2atobavailHeightavailLeftavailTopavailWidthActiveXObject
backbackgroundbelowbgColorbigblinkblurboldborderborderWidthsbottombtoabuttoncallcalleecallercancelBubble
captureEventsceilcharAtcharCodeAtcharsetcheckedchildrenclassesclassNameclearclearIntervalclearTimeoutclick
clientInformationclientXclientYcloseclosedcolorDepthcompilecompleteconcatconfirmconstructircontainscontextual
cookiecoscryptoctrlKeycurrentdatadefaultCharsetdefaultCheckeddefaultSelecteddefaultStatusdefaultValuedescription
disableExternalCapturedisablePrivilegedocumentdomainEEchoelementelementsembedsenabledPluginenableExternalCapture
enablePrivilegeencodingescapeevaleventexecexpexpandoFromPointfgColorfileNamefindfixedfloorfocusfontColor
fontSizeformformsforwardframesfromCharCodefromElementgetAttributegetgetClassgetDategetDaygetFullYeargetHours
getMembergetMillisecondsgetMinutesgetMonthgetSecondsgetSelectiongetSlotgetTimegetTimezoneOffsetgetUTCDategetUTCDay
getUTCFullYeargetUTCHoursgetUTCMillisecondsgetUTCMinutesgetUTCMonthgetUTCSecondsgetWindowgetYearglobalgoHandleEvent
HeighthashhiddenhistoryhomehosthostNamehrefhspaceididsignoreCaseimagesindexindexOfinnerinnerHTMLinnerText
innerWidthinsertAdjacentHTMLinsertAdjacentTextisFiniteisNANitalicsjavajavaEnabledjoinkeyCodeLinksLN10LN2LOG10E
LOG2ElanglanguagelastIndexlastIndexOflastMatchlastModifiedlastParenlayerslayerXlayerYleftleftContextlengthlink
linkColorloadlocationlocationBarloglowsrcMAX_VALUEMIN_VALUEmarginsmatchmaxmenubarmethodmimeTypesminmodifiers
moveAbovemoveBelowmoveBymoveTomoveToAbsolutemultilineNaNNEGATIVE_INFINITYnamenavigatenavigatornetscapenext
numberoffscreenBufferingoffsetoffsetHeightoffsetLeftoffsetParentoffsetTopoffsetWidthoffsetXoffsetYonabortonblur
onchangeonclickondblclickondragdroponerroronfocusonHelponkeydownonkeypressonkeyuponloadonmousedownonmousemove
onmouseoutonmouseoveronmouseuponmoveonresetonresizeonsubmitonunloadopenopeneroptionsouterHeightouterHTML
outerTextouterWidthPOSITIVE_INFINITYPIpaddingspageXpageXOffsetpageYpageYOffsetparentparentElementparentLayer
parentWindowparseparseFloatparseIntpathnamepersonalbarpixelDepthplatformpluginspopportpowpreferenceprevious
printpromptprotocolprototypepushrandomreadyStatereasonreferrerrefreshreleaseEventsreloadremoveAttribute
removeMemberreplaceresizeByresizeToreturnValuereverserightrightcontextroundSQRT1_2SQRT2screenXscreenYscroll
scrollbarsscrollByscrollIntoViewscrollTosearchselectselectedselectedIndexselfsetAttributesetDaysetFullYear
setHotkeyssetHourssetIntervalsetMembersetMillisecondssetMinutessetMonthsetResizablesetSecondssetSlotsetTime
setTimeoutsetUTCDatesetUTCFullYearsetUTCHourssetUTCMillsecondssetUTCMinutessetUTCMonthsetUTCSecondssetYear
setZOptionsshiftshiftKeysiblingAbovesiblingBelowsignTextsinslicesmallsortsourcesourceIndexsplicesplitsqrtsrc
srcElementsrcFilterstatusstatusbarstopstrikestylesubsubmitsubstrsubstringsuffixessunsupsystemLanguageTYPE
tagNametagstainttaintEnabledtantargettesttexttitletoElementtoGMTStringtoLocaleStringtoLowerCasetoolbartop
toStringtoUpperCasetoUTCStringtypetypeOfUTCunescapeunshiftuntaintunwatchuserAgentuserLanguagevaluevalueOf
visibilityvlinkColorvspacewatchwhichwidthwindowwritewritelnxyzIndex";
varOPS="!$%&*+-///:<=>?[]^|~isnewsizeoftypeofunchecked";

varregKW=newRegExp("(\\W"+KEYWORDS.replace(//g,"$)|(\\W")+"$)","g");
varregObj=newRegExp("(\\W"+OBJECTS.replace(//g,"$)|(\\W")+"$)","g");
varregMP=newRegExp("(\\W"+METHODS_PROPERTIES.replace(//g,"$)|(\\W")+"$)","g");
//varregOP=newRegExp("(\\W"+OPS.replace(//g,"$)|(\\W")+"$)","g");

//------------------
//GlobalVariables
//------------------
vardivJSInput,txtJSInput,divMain,divJSOutputLineNo,divJSOutputPlus,divJSOutput,divWaiting;
varspnProcess,cmdStop,divJSExport,selJSExport,divJSExportContent;
varglbStr,glbP,glbRe,curRe,glbTimer,glbBusy,glbFuntionNames;


functioninit(){
//initglobalvariables
divJSInput=document.getElementById("divJSInput");
txtJSInput=document.getElementById("txtJSInput");
divMain=document.getElementById("divMain");
divJSOutputLineNo=document.getElementById("divJSOutputLineNo");
divJSOutputPlus=document.getElementById("divJSOutputPlus");
divJSOutput=document.getElementById("divJSOutput");
divWaiting=document.getElementById("divWaiting");
spnProcess=document.getElementById("spnProcess");
cmdStop=document.getElementById("cmdStop");
divJSExport=document.getElementById("divJSExport");
selJSExport=document.getElementById("selJSExport");
divJSExportContent=document.getElementById("divJSExportContent");

//initwindowstate
maximizeWindow();

divMain.style.width=document.body.clientWidth-4;
divMain.style.height=document.body.clientHeight-26;

divJSOutput.style.width=document.body.clientWidth-72;


//initglobalevents

divJSOutputLineNo.onselectstart=divJSOutputLineNo.onselect=divJSOutputPlus.onselectstart=divJSOutputPlus.onselect=cancelEvent

divJSOutput.onscroll=divJSOutput_onscroll;

divJSInput.onkeydown=divJSInput_keydown;
divJSExport.onkeydown=divJSExport_keydown;

}


//------------------
//eventscripts
//------------------

functioncancelEvents(e){
vare=window.event?window.event:e;
e.returnValue=false;
return(false);
}

functiondivJSInput_keydown(e){
vare=window.event?window.event:e;
varsrcEle=e.srcElement?e.srcElement:e.target;
varsel;
if(e.keyCode==27)hideJSInput();
if(e.keyCode==13&&e.ctrlKey)execJSInput();
if(e.keyCode==9&&srcEle==txtJSInput){
document.selection.createRange().text="\t";return(false);//notsupportFF
}
}

functiondivJSExport_keydown(e){
vare=window.event?window.event:e;
varsrcEle=e.srcElement?e.srcElement:e.target;
varsel;
if(e.keyCode==27)hideJSExport();
if(e.keyCode==13&&e.ctrlKey)hideJSExport();
}

functiondivJSOutput_onscroll(){
divJSOutputLineNo.scrollTop=divJSOutputPlus.scrollTop=divJSOutput.scrollTop;
}



//------------------
//functionalscripts
//------------------

functionshowJSInput(){
if(glbBusy)return;
hideJSExport();
with(divJSInput.style){
display="block";
left=(document.body.clientWidth-divJSInput.offsetWidth)/2;
top=(document.body.clientHeight-divJSInput.offsetHeight)/2;
}

txtJSInput.focus();

return(false);
}

functionshowJSExport(){
if(glbBusy)return;
hideJSInput();
with(divJSExport.style){
display="block";
left=(document.body.clientWidth-divJSExport.offsetWidth)/2;
top=(document.body.clientHeight-divJSExport.offsetHeight)/2;
}
divJSExportContent.style.display="none";
selJSExport.style.display="block";

selJSExport.focus();
return(false);
}

functionhideJSInput(){
divJSInput.style.display="none";
}

functionhideJSExport(){
divJSExport.style.display="none";
}

functionexecJSInput(){
hideJSInput();

divJSOutput.innerHTML="";
divJSOutputLineNo.innerHTML="";
divJSOutputPlus.innerHTML="";

glbStr=txtJSInput.innerText;//notsupportFF
glbP=0;
glbFuntionNames=newArray();
curRe=glbRe=document.createElement("div");

divJSOutput.appendChild(glbRe);
glbRe.className="codeRoot";

while(selJSExport.options.length>0)selJSExport.options[0]=null;

showWait(startRecalcLine);
core_analysis();
}

functionexecJSExport(){
varfns=newArray(),fcs=newArray(),str;

for(vari=0;i<selJSExport.options.length;i++){
if(selJSExport.options[i].selected){
fns.push(selJSExport.options[i].value);
str=selJSExport.options[i].obj.outerHTML;
try{
str+=selJSExport.options[i].obj.nextSibling.outerHTML;
str+=selJSExport.options[i].obj.nextSibling.nextSibling.outerHTML;
}catch(e){}
fcs.push(str);
}
}
if(fns.length==0)return;

divJSExportContent.style.display="block";
selJSExport.style.display="none";

divJSExportContent.innerHTML=fcs.join("\r\n<br>\r\n");
}

functionexecJSExport_Dep(){
varfns=newArray(),fcs=newArray(),str,regFNs=newArray(),needDepthTest;

for(vari=0;i<selJSExport.options.length;i++){
if(selJSExport.options[i].selected){
fns.push(selJSExport.options[i].value);
try{
str=selJSExport.options[i].obj.nextSibling.outerHTML;
}catch(e){}
fcs.push(str);
}
}
if(fns.length==0)return;

divJSExportContent.style.display="none";
selJSExport.style.display="block";

needDepthTest=false;
for(vari=0;i<glbFuntionNames.length;i+=1){
if(!selJSExport.options[i].selected){
for(j=0;j<fcs.length;j++){
if(html2txt(fcs[j]).match(glbFuntionNames[i].replace(/\./g,"\\."))){
selJSExport.options[i].selected=true;
needDepthTest=true;
break;
}
}
}
}
if(needDepthTest)execJSExport_Dep();
}


functionshowWait(onstop){
glbBusy=true;
document.body.style.cursor="wait";

with(divWaiting.style){
display="block";
left=(document.body.clientWidth-divWaiting.offsetWidth)/2;
top=(document.body.clientHeight-divWaiting.offsetHeight)/2;
}
spnProcess.innerHTML="0.00%(0/0)";
divWaiting.onstop=onstop;
cmdStop.focus();
return(false);
}

functionhideWait(){
glbBusy=false;
document.body.style.cursor="";
divWaiting.style.display="none";
try{clearTimeout(glbTimer);}catch(e){}
try{divWaiting.onstop();}catch(e){}
return(false);
}

functionstopExec(){hideWait();}

functionstartRecalcLine(){
varre="",re2="";
if(glbBusy)return;
glbBusy=true;

for(vari=0;i<parseInt(divJSOutput.scrollHeight/14+200);i++){
re+="<p>"+(i+1)+"</p>";
re2+="<p></p>";
}

divJSOutputLineNo.innerHTML=re;
divJSOutputPlus.innerHTML=re2;
divJSOutputPlus.buttons=newArray();

glbP=0;

showWait();
recalcLine();
return(false);

}


functionrecalcLine(){
varobjs,j;

objs=document.getElementsByTagName("div");
for(vari=glbP;i<objs.length&&(i-glbP<30);i++){
if(objs[i].className=="indent"){
j=parseInt(objs[i].offsetTop/14)-1;
divJSOutputPlus.childNodes[j].className="colsp";
divJSOutputPlus.childNodes[j].innerHTML="-";
divJSOutputPlus.childNodes[j].linkedDIV=objs[i];
divJSOutputPlus.childNodes[j].startIndex=j+1;
divJSOutputPlus.childNodes[j].endIndex=j+Math.round(objs[i].offsetHeight/14);
if(objs[i].innerHTML!="")divJSOutputPlus.childNodes[j].endIndex++;
divJSOutputPlus.childNodes[j].switchDIV=divJSOutputPlus.childNodes[j].onclick=switchDIV;
divJSOutputPlus.buttons.push(divJSOutputPlus.childNodes[j]);
}
}
spnProcess.innerHTML=parseFloat(glbP/objs.length*100).toFixed(2)+"%("+glbP+"/"+objs.length+")";
if(i<objs.length){glbP=i;glbTimer=setTimeout(recalcLine);return;}
stopExec();
divJSOutput_onscroll();
}

functionswitchDIV(disp){
vary,obj;
if((this.className=="colsp"||disp=="hide")&&disp!="show"){
this.className="colsp2";
this.innerHTML="+";
for(vari=this.startIndex;i<this.endIndex;i++){
divJSOutputLineNo.childNodes[i].style.display="none";
divJSOutputPlus.childNodes[i].style.display="none";
}
this.linkedDIV.style.display="none";
}else{
this.className="colsp";
this.innerHTML="-";
this.linkedDIV.style.display="block";
for(vari=this.startIndex;i<this.endIndex;i++){
divJSOutputLineNo.childNodes[i].style.display="block";
divJSOutputPlus.childNodes[i].style.display="block";
if(divJSOutputPlus.childNodes[i].className=="colsp2"){
i=divJSOutputPlus.childNodes[i].endIndex-1;
}
}
}
divJSOutput_onscroll();
}

functioncollapseAll(index){
index=isNaN(parseInt(index))?0:parseInt(index);
if(!divJSOutputPlus.buttons)return;
if(index<0)index=0;
if(index>divJSOutputPlus.buttons.length)return;
for(vari=index;i<divJSOutputPlus.buttons.length&&i-index<10;i++)divJSOutputPlus.buttons[i].switchDIV("hide");
setTimeout("collapseAll("+i+")");
}

functionexpandAll(index){
index=isNaN(parseInt(index))?0:parseInt(index);
if(!divJSOutputPlus.buttons)return;
if(index<0)index=0;
if(index>divJSOutputPlus.buttons.length)return;
for(vari=index;i<divJSOutputPlus.buttons.length&&i-index<10;i++)divJSOutputPlus.buttons[i].switchDIV("show");
setTimeout("expandAll("+i+")");
}


functioncore_analysis(){
varstr="",c="",lastState="",seq,intNextQuote,intTemp,intCount,intWordStart;
spnProcess.innerHTML=parseFloat(glbP/glbStr.length*100).toFixed(2)+"%("+glbP+"/"+glbStr.length+")";
for(vari=glbP;i<glbStr.length;i++){
c=glbStr.charAt(i);
str+=htmlEncode(c);
switch(c){
case"\r":case"":case"\t":
if(lastState=="\r\n"){str="";break;}
str=str.substring(0,str.length-htmlEncode(c).length);
if(lastState=="blank")break;
if(c.match(/\W/)&&glbStr.charAt(i-1).match(/\w/)){
str=str.replace(regKW,clKW).replace(regObj,clObj).replace(regMP,clMP);
}
str+=htmlEncode(c);
lastState="blank";
break;
case";":
if(str.match(/\Wfor.*?\(/i))break;
//attentionthere'snobreakhere
case"\n":
if(lastState=="\r\n"){str="";break;}
outputLn(str);
str="";
lastState="\r\n";
if(i-glbP>200){
glbP=i+1;
glbTimer=setTimeout(core_analysis);
return;
}
break;
case"\"":
intNextQuote=i;
while(intNextQuote!=-1&&intNextQuote<glbStr.length){
intNextQuote=glbStr.indexOf("\"",intNextQuote+1);
if(intNextQuote==-1||glbStr.charAt(intNextQuote-1)!="\\")break;
intCount=0;intTemp=intNextQuote;
while(glbStr.charAt(--intTemp)=="\\")intCount++;
if(intCount%2==0)break;
}
if(intNextQuote==-1)break;
str+="<spanclass=\"quote\">"+htmlEncode(glbStr.substring(i+1,intNextQuote))+"<\/span>\"";
i=intNextQuote;
lastState="";
break;
case"\'":
intNextQuote=i;
while(intNextQuote!=-1&&intNextQuote<glbStr.length){
intNextQuote=glbStr.indexOf("\'",intNextQuote+1);
if(intNextQuote==-1||glbStr.charAt(intNextQuote-1)!="\\")break;
intCount=0;intTemp=intNextQuote;
while(glbStr.charAt(--intTemp)=="\\")intCount++;
if(intCount%2==0)break;
}
if(intNextQuote==-1)break;
str+="<spanclass=\"quote\">"+htmlEncode(glbStr.substring(i+1,intNextQuote))+"<\/span>\'";
i=intNextQuote;
lastState="";
break;
case"\/":
if(glbStr.charAt(i+1)=="\/"){
intNextQuote=i;
intNextQuote=glbStr.indexOf("\r\n",intNextQuote+1);
if(intNextQuote==-1)intNextQuote=glbStr.length;
str=str.substring(0,str.length-1);
str+="<spanclass=\"comments\">\/"+htmlEncode(glbStr.substring(i+1,intNextQuote))
+"<\/span>";
i=intNextQuote;
}elseif(glbStr.charAt(i+1)=="*"){
intNextQuote=i;
intNextQuote=glbStr.indexOf("*\/",intNextQuote+1);
if(intNextQuote==-1)return;
str=str.substring(0,str.length-1);
str+="<spanclass=\"comments\">\/"+htmlEncode(glbStr.substring(i+1,intNextQuote))
+"*\/<\/span>";
i=intNextQuote+1;
}elseif(str.match(/[=(][\t]*\//)){
intNextQuote=i;
while(intNextQuote!=-1&&intNextQuote<glbStr.length){
intNextQuote=glbStr.indexOf("\/",intNextQuote+1);
if(intNextQuote==-1||glbStr.charAt(intNextQuote-1)!="\\")break;
intCount=0;intTemp=intNextQuote;
while(glbStr.charAt(--intTemp)=="\\")intCount++;
if(intCount%2==0)break;
}
if(intNextQuote==-1)break;
str+="<spanclass=\"regexp\">"+htmlEncode(glbStr.substring(i+1,intNextQuote))
+"<\/span>\/";
i=intNextQuote;
lastState="";
}
lastState="";
break;
case"{":
outputLn(str);
str="";
seq=document.createElement("div");
seq.className="indent";
curRe.appendChild(seq);
curRe=seq;
lastState="\r\n";
if(i-glbP>200){
glbP=i+1;
glbTimer=setTimeout(core_analysis);
return;
}
break;
case"}":
outputLn(str.substring(0,str.length-1));
str="}";
lastState="";
curRe=curRe.parentNode;
break;
default:
if(c.match(/\w/)&&glbStr.charAt(i-1).match(/\W/)){intWordStart=i;}
if(c.match(/\W/)&&glbStr.charAt(i-1).match(/\w/)){
str=str.substring(0,str.length-htmlEncode(c).length);
str=str.replace(regKW,clKW).replace(regObj,clObj).replace(regMP,clMP)+htmlEncode(c);
}
lastState="";
break;
}
}

if(i==glbStr.length){
if(str!=""){outputLn(str);str="";}
stopExec();
}

}

functionoutputLn(theStr){
varseq,txt,fn;
if(html2txt(theStr).match(/^[\t\r\n]*$/))return;
seq=document.createElement("p");
seq.innerHTML=theStr;
curRe.appendChild(seq);

txt=html2txt(theStr);
if(!txt)return;
fn=txt.match(/function[\t\r\n]+([\.\w]+?)[\t\r\n]*\(.*?\)[\t\r\n]*\{/);
if(fn){
glbFuntionNames.push(fn[1]);
selJSExport.options[selJSExport.options.length]=newOption(fn[0]+"}",fn[1]);
selJSExport.options[selJSExport.options.length-1].obj=seq;
}
fn=txt.match(/([\.\w]+?)[\t\r\n]*=[\t\r\n]*function\W*\(.*?\)[\t\r\n]*\{/);
if(fn){
glbFuntionNames.push(fn[1]);
selJSExport.options[selJSExport.options.length]=newOption(fn[0]+"}",fn[1]);
selJSExport.options[selJSExport.options.length-1].obj=seq;
}
}

functionclKW(str){return(str.charAt(0)+"<spanclass=\"keyWord\">"+str.substring(1)+"</span>");}

functionclObj(str){return(str.charAt(0)+"<spanclass=\"object\">"+str.substring(1)+"</span>");}

functionclMP(str){return(str.charAt(0)+"<spanclass=\"method_property\">"+str.substring(1)+"</span>");}

functionclOP(str){return(str.charAt(0)+"<spanclass=\"operator\">"+str.substring(1)+"</span>");}


//------------------
//globalscripts
//------------------

functionmaximizeWindow(){
window.moveTo(0,0);
window.resizeTo(screen.availWidth,screen.availHeight);
}

functionhtmlEncode(strS){
return(strS.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(//g,"").replace(/
\r\n/g,"<br\/>"));
}

functionhtml2txt(strS){
return(strS.replace(/<.+?>/g,"").replace(/</g,"<").replace(/>/g,">").replace(//g,"").replace(/<br\/?
>/g,"\r\n").replace(/&/g,"&"));
}

</script>
</head>
<body>
<!--Author:Hutia-->
<divid="divTools">
<ahref="#"onclick="showJSInput();return(false);">InputJS</a>
<ahref="#"onclick="collapseAll();return(false);">CollapseAll</a>
<ahref="#"onclick="expandAll();return(false);">ExpandAll</a>
<ahref="#"onclick="showJSExport();return(false);">ExportJS</a>
</div>

<divid="divJSInput">
<divid="divJSInputTitle">PleaseInputtheJS:</div>
<textareaid="txtJSInput">
/********************** Author:Hutia *********************/
window.onload=init; //------------------ //StaticVariable //-----
-------------
varKEYWORDS="abstractbreakbytecasecatchcharclasscons
tcontinuedefaultdeletedodoubleelseextendsfalsefinalfinallyf
loatforfunctiongotoifimplementsimportininstanceofintinterface&nbs
p;longnativenullpackageprivateprotectedpublicresetreturnshortstat
icsuperswitchsynchronizedthisthrowtransienttruetryvarvoidwh
ilewith"; varOBJECTS="AnchorAppletAreaArgumentsArrayBoolean 
;ButtonCheckboxCollectionCryptoDateDictionaryDocumentDriveDrivesElement
EnumeratorEventFileFileObjectFileSystemObjectFileUploadFolderFoldersFor
mFrameFunctionGlobalHiddenHistoryHTMLElementImageInfinityInputJav
aArrayJavaClassJavaObjectJavaPackageJSObjectLayerLinkMathMimeTypeNaviga
torNumberObjectOptionPackagesPasswordPluginPrivilegeManagerRandomRegExp
ScreenSelectStringSubmitTextTextareaURLVBArrayWindowWScript"
; varMETHODS_PROPERTIES="aboveabsacosactionactiveElementalertalinkCol
orallaltKeyanchoranchorsappCodeNameappletsapplyappNameappVersiona
rgumentsarityasinassignatanatan2atobavailHeightavailLeftavailTop&
nbsp;availWidthActiveXObjectbackbackgroundbelowbgColorbigblinkblurbold&
nbsp;borderborderWidthsbottombtoabuttoncallcalleecallercancelBubblecapt
ureEventsceilcharAtcharCodeAtcharsetcheckedchildrenclassesclassNameclea
rclearIntervalclearTimeoutclickclientInformationclientXclientYcloseclos
edcolorDepthcompilecompleteconcatconfirmconstructircontainscontextualco
okiecoscryptoctrlKeycurrentdatadefaultCharsetdefaultCheckeddefaultSelected&nb
sp;defaultStatusdefaultValuedescriptiondisableExternalCapturedisablePrivilegedocumentdoma
inEEchoelementelementsembedsenabledPluginenableExternalCaptureenablePri
vilegeencodingescapeevaleventexecexpexpandoFromPointfgColorfileNa
mefindfixedfloorfocusfontColorfontSizeformformsforwardframes 
;fromCharCodefromElementgetAttributegetgetClassgetDategetDaygetFullYear
getHoursgetMembergetMillisecondsgetMinutesgetMonthgetSecondsgetSelectiongetSlot&nbs
p;getTimegetTimezoneOffsetgetUTCDategetUTCDaygetUTCFullYeargetUTCHoursgetUTCMillise
condsgetUTCMinutesgetUTCMonthgetUTCSecondsgetWindowgetYearglobalgoHandleEvent
HeighthashhiddenhistoryhomehosthostNamehrefhspaceidid
signoreCaseimagesindexindexOfinnerinnerHTMLinnerTextinnerWidthinsertAdj
acentHTMLinsertAdjacentTextisFiniteisNANitalicsjavajavaEnabledjoinkeyCode&nbs
p;LinksLN10LN2LOG10ELOG2ElanglanguagelastIndexlastIndexOflastMatc
hlastModifiedlastParenlayerslayerXlayerYleftleftContextlengthlink
linkColorloadlocationlocationBarloglowsrcMAX_VALUEMIN_VALUEmargins 
;matchmaxmenubarmethodmimeTypesminmodifiersmoveAbovemoveBelowmoveBy&nbs
p;moveTomoveToAbsolutemultilineNaNNEGATIVE_INFINITYnamenavigatenavigator 
;netscapenextnumberoffscreenBufferingoffsetoffsetHeightoffsetLeftoffsetParent
offsetTopoffsetWidthoffsetXoffsetYonabortonbluronchangeonclickondblclick 
;ondragdroponerroronfocusonHelponkeydownonkeypressonkeyuponloadonmoused
ownonmousemoveonmouseoutonmouseoveronmouseuponmoveonresetonresizeonsubmit&nbs
p;onunloadopenopeneroptionsouterHeightouterHTMLouterTextouterWidthPOSIT
IVE_INFINITYPIpaddingspageXpageXOffsetpageYpageYOffsetparentparentEleme
ntparentLayerparentWindowparseparseFloatparseIntpathnamepersonalbarpixelDepth
platformpluginspopportpowpreferencepreviousprintpromptproto
colprototypepushrandomreadyStatereasonreferrerrefreshreleaseEventsreloa
dremoveAttributeremoveMemberreplaceresizeByresizeToreturnValuereverseright&nb
sp;rightcontextroundSQRT1_2SQRT2screenXscreenYscrollscrollbarsscrollBy&
nbsp;scrollIntoViewscrollTosearchselectselectedselectedIndexselfsetAttributes
etDaysetFullYearsetHotkeyssetHourssetIntervalsetMembersetMillisecondssetMinut
essetMonthsetResizablesetSecondssetSlotsetTimesetTimeoutsetUTCDatesetUTCFullY
earsetUTCHourssetUTCMillsecondssetUTCMinutessetUTCMonthsetUTCSecondssetYearse
tZOptionsshiftshiftKeysiblingAbovesiblingBelowsignTextsinslicesmallsort
sourcesourceIndexsplicesplitsqrtsrcsrcElementsrcFilterstatusstatu
sbarstopstrikestylesubsubmitsubstrsubstringsuffixessunsupsy
stemLanguageTYPEtagNametagstainttaintEnabledtantargettesttext&nbs
p;titletoElementtoGMTStringtoLocaleStringtoLowerCasetoolbartoptoStringtoUpper
CasetoUTCStringtypetypeOfUTCunescapeunshiftuntaintunwatchuserAgent 
;userLanguagevaluevalueOfvisibilityvlinkColorvspacewatchwhichwidth 
;windowwritewritelnxyzIndex"; varOPS="!$%
&*+-///:<=>?[]
^|~isnewsizeoftypeofunchecked"; var
regKW=newRegExp("(\\W"+KEYWORDS.replace(//g,"$)|(\\W")+"$)
","g"); varregObj=newRegExp("(\\W"+OBJECTS.replace(//g,"$)|
(\\W")+"$)","g"); varregMP=newRegExp("
(\\W"+METHODS_PROPERTIES.replace(//g,"$)|(\\W")+"$)
","g"); //varregOP=newRegExp("(\\W"+OPS.replace(//g,"$)|(\\W")
+"$)","g"); //------------------ //GlobalVariables //--
----------------
vardivJSInput,txtJSInput,divMain,divJSOutputLineNo,divJSOutputPlus,divJSOutput,
divWaiting; varspnProcess,cmdStop,divJSExport,selJSExport,divJSExportContent;
3; varglbStr,glbP,glbRe,curRe,glbTimer,glbBusy,glbFuntionNames; &
#10; functioninit()
{ //initglobalvariables divJSInput=document.getElementById
("divJSInput"); txtJSInput=document.getElementById
("txtJSInput"); divMain=document.getElementById
("divMain"); divJSOutputLineNo=document.getElementById
("divJSOutputLineNo"); divJSOutputPlus=document.getElementById
("divJSOutputPlus"); divJSOutput=document.getElementById
("divJSOutput"); divWaiting=document.getElementById
("divWaiting"); spnProcess=document.getElementById
("spnProcess"); cmdStop=document.getElementById
("cmdStop"); divJSExport=document.getElementById
("divJSExport"); selJSExport=document.getElementById
("selJSExport"); divJSExportContent=document.getElementById
("divJSExportContent"); //initwindowstate maximizeW
indow(); divMain.style.width=document.body.clientWidth-
4; divMain.style.height=document.body.clientHeight-
26; divJSOutput.style.width=document.body.clientWidth-
52; //initglobalevents divJSOutputLineNo.onse
lectstart=divJSOutputLineNo.onselect=divJSOutputPlus.onselectstart=divJSOutputPlus.onselect=cancelEvents; divJ
SOutput.onscroll=divJSOutput_onscroll; divJSInput.onkeydown=divJSInput_keydown;  
;divJSExport.onkeydown=divJSExport_keydown; } //------------------
//eventscripts //------------------ functioncancelEvents(e)
{ vare=window.event?window.event:e; e.returnValue=false; return
(false); } functiondivJSInput_keydown(e){ vare=window.event?
window.event:e; varsrcEle=e.srcElement?
e.srcElement:e.target; varsel; if(e.keyCode==27)hideJSInput(); if
(e.keyCode==13&&e.ctrlKey)execJSInput(); if(e.keyCode==9&&srcEle==txtJSInput)
{ document.selection.createRange().text="\t";return
(false);//notsupportFF } }
functiondivJSExport_keydown(e){ vare=window.event?
window.event:e; varsrcEle=e.srcElement?
e.srcElement:e.target; varsel; if(e.keyCode==27)hideJSExport(); if
(e.keyCode==13&&e.ctrlKey)hideJSExport(); } functiondivJSOutput_onscroll()
{ divJSOutputLineNo.scrollTop=divJSOutputPlus.scrollTop=divJSOutput.scrollTop; }
//------------------ //functionalscripts //-----------
------- functionshowJSInput(){ if(glbBusy)return; hideJSExport
(); with(divJSInput.style){ display="block"; left=
(document.body.clientWidth-divJSInput.offsetWidth)/2; top=(document.body.clientHeight-
divJSInput.offsetHeight)/2; } txtJSInput.focus
(); return(false); } functionshowJSExport()
{ if(glbBusy)return; hideJSInput(); with(divJSExport.style)
{ display="block"; left=(document.body.clientWidth-
divJSExport.offsetWidth)/2; top=(document.body.clientHeight-
divJSExport.offsetHeight)/2; }
divJSExportContent.style.display="none"; selJSExport.style.display="block"
; selJSExport.focus(); return(false); }
functionhideJSInput(){ divJSInput.style.display="none"; }
functionhideJSExport(){ divJSExport.style.display="none"; }
functionexecJSInput(){ hideJSInput
(); divJSOutput.innerHTML=""; divJSOutputLineNo.innerHTML=""
;; divJSOutputPlus.innerHTML=""; glbStr=txtJSInput.value; &n
bsp;glbP=0; glbFuntionNames=newArray(); curRe=glbRe=document.createElement
("div"); divJSOutput.appendChild
(glbRe); glbRe.className="codeRoot"; while
(selJSExport.options.length>0)selJSExport.options[0]=null; showWait
(startRecalcLine); core_analysis(); } functionexecJSExport()
{ varfns=newArray(),fcs=newArray(),str; for
(vari=0;i<selJSExport.options.length;i++){ if(selJSExport.options[i].selected)
{ fns.push(selJSExport.options[i].value); str=selJSExport.options
[i].obj.outerHTML; try{ str+=selJSExport.options
[i].obj.nextSibling.outerHTML; str+=selJSExport.options
[i].obj.nextSibling.nextSibling.outerHTML; }catch(e){} fcs.push
(str); } } if(fns.length==0)
return; divJSExportContent.style.display="block"; selJSExport.style.d
isplay="none"; divJSExportContent.innerHTML=fcs.join
("\r\n<br>\r\n"); } functionexecJSExport_Dep()
{ varfns=newArray(),fcs=newArray(),str,regFNs=newArray
(),needDepthTest; for(vari=0;i<selJSExport.options.length;i++)
{ if(selJSExport.options[i].selected){ fns.push(selJSExport.options
[i].value); try{ str=selJSExport.options
[i].obj.nextSibling.outerHTML; }catch(e){} fcs.push
(str); } } if(fns.length==0)
return; divJSExportContent.style.display="none"; selJSExport.style.di
splay="block"; needDepthTest=false; for
(vari=0;i<glbFuntionNames.length;i+=1){ if(!selJSExport.options[i].selected)
{ for(j=0;j<fcs.length;j++){ if(html2txt(fcs[j]).match
(glbFuntionNames[i].replace(/\./g,"\\."))){ selJSExport.options
[i].selected=true; needDepthTest=true; break;&#
13; } } } } if
(needDepthTest)execJSExport_Dep(); } functionshowWait(onstop)
{ glbBusy=true; document.body.style.cursor="wait"; wit
h(divWaiting.style){ display="block"; left=(document.body.clientWidth-
divWaiting.offsetWidth)/2; top=(document.body.clientHeight-divWaiting.offsetHeight)/2; }
spnProcess.innerHTML="0.00%(0/0)
"; divWaiting.onstop=onstop; cmdStop.focus(); return(false); }
functionhideWait()
{ glbBusy=false; document.body.style.cursor=""; divWaiting.style.displ
ay="none"; try{clearTimeout(glbTimer);}catch(e){} try{divWaiting.onstop();}catch(e)
{} return(false); } functionstopExec(){hideWait();}
functionstartRecalcLine()
{ varre="",re2=""; if(glbBusy)
return; glbBusy=true; for(vari=0;i<parseInt
(divJSOutput.scrollHeight/14+200);i++){ re+="<p>"+(i+1)
+"</p>"; re2+="<p>&nbsp;</p>"; }
divJSOutputLineNo.innerHTML=re; divJSOutputPlus.innerHTML=re2;
divJSOutputPlus.buttons=newArray(); glbP=0; showWait
(); recalcLine(); return(false); }
functionrecalcLine()
{ varobjs,j; objs=document.getElementsByTagName
("div"); for(vari=glbP;i<objs.length&&(i-glbP<30);i++){ if
(objs[i].className=="indent"){ j=parseInt(objs[i].offsetTop/14)-
1; divJSOutputPlus.childNodes
[j].className="colsp"; divJSOutputPlus.childNodes[j].innerHTML="-
"; divJSOutputPlus.childNodes[j].linkedDIV=objs
[i]; divJSOutputPlus.childNodes
[j].startIndex=j+1; divJSOutputPlus.childNodes[j].endIndex=j+Math.round(objs[i].offsetHeight/14)
+1; divJSOutputPlus.childNodes[j].switchDIV=divJSOutputPlus.childNodes
[j].onclick=switchDIV; divJSOutputPlus.buttons.push(divJSOutputPlus.childNodes
[j]); } } spnProcess.innerHTML=parseFloat(glbP/objs.length*100).toFixed
(2)+"%("+glbP+"/"+objs.length+")"; if
(i<objs.length){glbP=i;glbTimer=setTimeout(recalcLine);return;} stopExec
(); divJSOutput_onscroll(); } functionswitchDIV(disp)
{ vary,obj; if((this.className=="colsp"||disp=="hide")
&&disp!="show")
{ this.className="colsp2"; this.innerHTML="+"; &
nbsp;for(vari=this.startIndex;i<this.endIndex;i++){ divJSOutputLineNo.childNodes
[i].style.display="none"; divJSOutputPlus.childNodes
[i].style.display="none"; }
this.linkedDIV.style.display="none"; }else
{ this.className="colsp"; this.innerHTML="-
"; this.linkedDIV.style.display="block"; for
(vari=this.startIndex;i<this.endIndex;i++){ divJSOutputLineNo.childNodes
[i].style.display="block"; divJSOutputPlus.childNodes
[i].style.display="block"; if(divJSOutputPlus.childNodes
[i].className=="colsp2"){ i=divJSOutputPlus.childNodes[i].endIndex-
1; } } } divJSOutput_onscroll(); }
functioncollapseAll(index){ index=isNaN(parseInt(index))?0:parseInt
(index); if(!divJSOutputPlus.buttons)return; if(index<0)index=0; if
(index>divJSOutputPlus.buttons.length)return; for
(vari=index;i<divJSOutputPlus.buttons.length&&i-index<10;i++)divJSOutputPlus.buttons[i].switchDIV
("hide"); setTimeout("collapseAll("+i+")"); }
functionexpandAll(index){ index=isNaN(parseInt(index))?0:parseInt
(index); if(!divJSOutputPlus.buttons)return; if(index<0)index=0; if
(index>divJSOutputPlus.buttons.length)return; for
(vari=index;i<divJSOutputPlus.buttons.length&&i-index<10;i++)divJSOutputPlus.buttons[i].switchDIV
("show"); setTimeout("expandAll("+i+")"); }
functioncore_analysis()
{ varstr="",c="",lastState="",seq,intNextQuo
te,intTemp,intCount,intWordStart; spnProcess.innerHTML=parseFloat
(glbP/glbStr.length*100).toFixed(2)+"%
("+glbP+"/"+glbStr.length+")"; for
(vari=glbP;i<glbStr.length;i++){ c=glbStr.charAt(i); str+=htmlEncode
(c); switch(c)
{ case"\r":case"":case"\t":
if(lastState=="\r\n"){str="";break;}
str=str.substring(0,str.length-htmlEncode(c).length); if
(lastState=="blank")break; if(c.match(/\W/)&&glbStr.charAt(i-1).match(/
\w/)){ str=str.replace(regKW,clKW).replace(regObj,clObj).replace
(regMP,clMP); } str+=htmlEncode
(c); lastState="blank"; break; &nb
sp;case";": if(str.match(/\Wfor.*?\(/i))
break; //attentionthere'snobreakhere &nbs
p;case"\n": if(lastState=="\r\n"){str="";break;}
outputLn
(str); str=""; lastState="\r\n";&
#13; if(i-glbP>200)
{ glbP=i+1; glbTimer=setTimeout
(core_analysis); return; }
break; case"\"":  
;intNextQuote=i; while(intNextQuote!=-1&&intNextQuote<glbStr.length)
{ intNextQuote=glbStr.indexOf
("\"",intNextQuote+1); if(intNextQuote==-1||glbStr.charAt(intNextQuote
-1)!="\\")
break; intCount=0;intTemp=intNextQuote; w
hile(glbStr.charAt(--intTemp)=="\\")intCount++; if(intCount%2==0)
break; } if(intNextQuote==-1)
break; str+="<spanclass=\"quote\">"+htmlEncode
(glbStr.substring(i+1,intNextQuote))
+"<\/span>\""; i=intNextQuote; lastSta
te=""; break; case"\'":
intNextQuote=i; while(intNextQuote!=-1&&intNextQuote<glbStr.length)
{ intNextQuote=glbStr.indexOf
("\'",intNextQuote+1); if(intNextQuote==-1||glbStr.charAt(intNextQuote-1)!
="\\")
break; intCount=0;intTemp=intNextQuote; w
hile(glbStr.charAt(--intTemp)=="\\")intCount++; if(intCount%2==0)
break; } if(intNextQuote==-1)
break; str+="<spanclass=\"quote\">"+htmlEncode
(glbStr.substring(i+1,intNextQuote))
+"<\/span>\'"; i=intNextQuote; lastState=&q
uot;"; break; case"\/":  
;if(glbStr.charAt(i+1)=="\/")
{ intNextQuote=i; intNextQuote=glbStr.indexOf
("\r\n",intNextQuote+1); if(intNextQuote==-1)
intNextQuote=glbStr.length; str=str.substring(0,str.length-
1); str+="<spanclass=\"comments\">\/"+htmlEncode
(glbStr.substring(i+1,intNextQuote))
+"<\/span>"; i=intNextQuote; }
elseif(glbStr.charAt(i+1)=="*")
{ intNextQuote=i; intNextQuote=glbStr.indexOf
("*\/",intNextQuote+1); if(intNextQuote==-1)
return; str=str.substring(0,str.length-
1); str+="<spanclass=\"comments\">\/"+htmlEncode
(glbStr.substring(i+1,intNextQuote))
+"*\/<\/span>"; i=intNextQuote+1; }
elseif(str.match(/[=(][\t]*\//))
{ intNextQuote=i; while(intNextQuote!=-
1&&intNextQuote<glbStr.length){ intNextQuote=glbStr.indexOf
("\/",intNextQuote+1); if(intNextQuote==-1||glbStr.charAt
(intNextQuote-1)!="\\")
break; intCount=0;intTemp=intNextQuote; &
nbsp;while(glbStr.charAt(--intTemp)=="\\")intCount++; if
(intCount%2==0)break; } if(intNextQuote==-1)
break; str+="<spanclass=\"regexp\">"+htmlEncode
(glbStr.substring(i+1,intNextQuote))
+"<\/span>\/"; i=intNextQuote;
lastState=""; }
lastState=""; break; case&n
bsp;"{": outputLn
(str); str=""; seq=document.createElement
("div"); seq.className="indent"; curRe.
appendChild
(seq); curRe=seq; lastState="\r\n"; &nbs
p;if(i-glbP>200)
{ glbP=i+1; glbTimer=setTimeout
(core_analysis); return; }
break; case"}
": outputLn(str.substring(0,str.length-
1)); str="}
"; lastState=""; curRe=curRe.parentNod
e; break; default: if(c.match(/\w/)
&&glbStr.charAt(i-1).match(/\W/)){intWordStart=i;} if(c.match(/\W/)
&&glbStr.charAt(i-1).match(/\w/)){ str=str.substring(0,str.length-htmlEncode
(c).length); str=str.replace(regKW,clKW).replace(regObj,clObj).replace(regMP,clMP)
+htmlEncode(c); }
lastState=""; break; }
} if(i==glbStr.length){ if(str!="")
{outputLn(str);str="";} stopExec(); }
} functionoutputLn(theStr)
{ varseq,txt,fn; if(html2txt(theStr).match(/^[\t\r\n]*$/))
return; seq=document.createElement
("p"); seq.innerHTML=theStr; curRe.appendChild
(seq); txt=html2txt(theStr); if(!txt)return; fn=txt.match
(/function[\t\r\n]+([\.\w]+?)[\t\r\n]*\(.*?\)[\t\r\n]*\{/); if(fn)
{ glbFuntionNames.push(fn[1]); selJSExport.options[selJSExport.options.length]
=newOption(fn[0]+"}",fn[1]); selJSExport.options[selJSExport.options.length-
1].obj=seq; } fn=txt.match(/([\.\w]+?)[\t\r\n]*=[\t\r\n]*function\W*\(.*?\)
[\t\r\n]*\{/); if(fn){ glbFuntionNames.push(fn
[1]); selJSExport.options[selJSExport.options.length]=newOption(fn[0]+"}",fn
[1]); selJSExport.options[selJSExport.options.length-1].obj=seq; } }
functionclKW(str){return(str.charAt(0)
+"<spanclass=\"keyWord\">"+str.substring(1)+"</span>");}
functionclObj(str){return(str.charAt(0)
+"<spanclass=\"object\">"+str.substring(1)+"</span>");}
functionclMP(str){return(str.charAt(0)
+"<spanclass=\"method_property\">"+str.substring(1)+"</span>");}
functionclOP(str){return(str.charAt(0)
+"<spanclass=\"operator\">"+str.substring(1)+"</span>");}
//------------------ //globalscripts //------------------
functionmaximizeWindow(){ window.moveTo(0,0); window.resizeTo
(screen.availWidth,screen.availHeight); } functionhtmlEncode(strS){ return
(strS.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace
(/>/g,"&gt;").replace(//g,"&nbsp;").replace(/
\r\n/g,"<br\/>")); } functionhtml2txt(strS){ return
(strS.replace(/<.+?>/g,"").replace(/&lt;/g,"<").replace
(/&gt;/g,">").replace(/&nbsp;/g,"").replace(/<br\/?>/g,"\r\n").replace
(/&amp;/g,"&")); }
</textarea>
<divid="divJSInputBar">
<inputtype="button"value="OK"onclick="execJSInput();"/>
<inputtype="button"value="Cancel"onclick="hideJSInput();"/>
</div>
</div>

<divid="divJSExport">
<divid="divJSExportTitle">FunctionList:</div>
<selectid="selJSExport"multiplesize="2"></select>
<divid="divJSExportContent"></div>
<divid="divJSExportBar">
<inputtype="button"value="CalculateDependentce"onclick="execJSExport_Dep();"/>
<inputtype="button"value="ExportSelectedFunctions"onclick="execJSExport();"/>
<inputtype="button"value="Cancel"onclick="hideJSExport();"/>
</div>
</div>

<divid="divMain">
<divid="divJSOutputLineNo"></div>
<divid="divJSOutputPlus"></div>
<divid="divJSOutput"></div>
</div>

<divid="divWaiting">
Processing...<spanid="spnProcess"></span><br>
<inputtype="button"value="Stop"onclick="stopExec();"id="cmdStop"/>
</div>
</body>
</html>