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

升级到第二版,开一贴以示庆贺,哈哈哈

自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>&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);
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,"&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,"&"));
}

</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">
/**********************&#13;&#10;&nbsp;Author:&nbsp;Hutia&#13;&#10;&nbsp;&#13;&#10;*********************/&#13;&#10;&#13;&#10;
window.onload=init;&#13;&#10;&#13;&#10;&#13;&#10;//------------------&#13;&#10;//&nbsp;Static&nbsp;Variable&#13;&#10;//-----
-------------
&#13;&#10;&#13;&#10;var&nbsp;KEYWORDS=&quot;abstract&nbsp;break&nbsp;byte&nbsp;case&nbsp;catch&nbsp;char&nbsp;class&nbsp;cons
t&nbsp;continue&nbsp;default&nbsp;delete&nbsp;do&nbsp;double&nbsp;else&nbsp;extends&nbsp;false&nbsp;final&nbsp;finally&nbsp;f
loat&nbsp;for&nbsp;function&nbsp;goto&nbsp;if&nbsp;implements&nbsp;import&nbsp;in&nbsp;instanceof&nbsp;int&nbsp;interface&nbs
p;long&nbsp;native&nbsp;null&nbsp;package&nbsp;private&nbsp;protected&nbsp;public&nbsp;reset&nbsp;return&nbsp;short&nbsp;stat
ic&nbsp;super&nbsp;switch&nbsp;synchronized&nbsp;this&nbsp;throw&nbsp;transient&nbsp;true&nbsp;try&nbsp;var&nbsp;void&nbsp;wh
ile&nbsp;with&quot;;&#13;&#10;var&nbsp;OBJECTS=&quot;Anchor&nbsp;Applet&nbsp;Area&nbsp;Arguments&nbsp;Array&nbsp;Boolean&nbsp
;Button&nbsp;Checkbox&nbsp;Collection&nbsp;Crypto&nbsp;Date&nbsp;Dictionary&nbsp;Document&nbsp;Drive&nbsp;Drives&nbsp;Element
&nbsp;Enumerator&nbsp;Event&nbsp;File&nbsp;FileObject&nbsp;FileSystemObject&nbsp;FileUpload&nbsp;Folder&nbsp;Folders&nbsp;For
m&nbsp;Frame&nbsp;Function&nbsp;Global&nbsp;Hidden&nbsp;History&nbsp;HTMLElement&nbsp;Image&nbsp;Infinity&nbsp;Input&nbsp;Jav
aArray&nbsp;JavaClass&nbsp;JavaObject&nbsp;JavaPackage&nbsp;JSObject&nbsp;Layer&nbsp;Link&nbsp;Math&nbsp;MimeType&nbsp;Naviga
tor&nbsp;Number&nbsp;Object&nbsp;Option&nbsp;Packages&nbsp;Password&nbsp;Plugin&nbsp;PrivilegeManager&nbsp;Random&nbsp;RegExp
&nbsp;Screen&nbsp;Select&nbsp;String&nbsp;Submit&nbsp;Text&nbsp;Textarea&nbsp;URL&nbsp;VBArray&nbsp;Window&nbsp;WScript&quot;
;&#13;&#10;var&nbsp;METHODS_PROPERTIES=&quot;above&nbsp;abs&nbsp;acos&nbsp;action&nbsp;activeElement&nbsp;alert&nbsp;alinkCol
or&nbsp;all&nbsp;altKey&nbsp;anchor&nbsp;anchors&nbsp;appCodeName&nbsp;applets&nbsp;apply&nbsp;appName&nbsp;appVersion&nbsp;a
rguments&nbsp;arity&nbsp;asin&nbsp;assign&nbsp;atan&nbsp;atan2&nbsp;atob&nbsp;&nbsp;availHeight&nbsp;availLeft&nbsp;availTop&
nbsp;availWidth&nbsp;ActiveXObject&nbsp;back&nbsp;background&nbsp;below&nbsp;bgColor&nbsp;big&nbsp;blink&nbsp;blur&nbsp;bold&
nbsp;border&nbsp;borderWidths&nbsp;bottom&nbsp;btoa&nbsp;button&nbsp;call&nbsp;callee&nbsp;caller&nbsp;cancelBubble&nbsp;capt
ureEvents&nbsp;ceil&nbsp;charAt&nbsp;charCodeAt&nbsp;charset&nbsp;checked&nbsp;children&nbsp;classes&nbsp;className&nbsp;clea
r&nbsp;clearInterval&nbsp;clearTimeout&nbsp;click&nbsp;clientInformation&nbsp;&nbsp;clientX&nbsp;clientY&nbsp;close&nbsp;clos
ed&nbsp;colorDepth&nbsp;compile&nbsp;complete&nbsp;concat&nbsp;confirm&nbsp;constructir&nbsp;contains&nbsp;contextual&nbsp;co
okie&nbsp;cos&nbsp;crypto&nbsp;ctrlKey&nbsp;current&nbsp;data&nbsp;defaultCharset&nbsp;defaultChecked&nbsp;defaultSelected&nb
sp;defaultStatus&nbsp;defaultValue&nbsp;description&nbsp;disableExternalCapture&nbsp;disablePrivilege&nbsp;document&nbsp;doma
in&nbsp;E&nbsp;Echo&nbsp;&nbsp;element&nbsp;elements&nbsp;embeds&nbsp;enabledPlugin&nbsp;enableExternalCapture&nbsp;enablePri
vilege&nbsp;encoding&nbsp;escape&nbsp;eval&nbsp;event&nbsp;exec&nbsp;exp&nbsp;expando&nbsp;FromPoint&nbsp;fgColor&nbsp;fileNa
me&nbsp;find&nbsp;fixed&nbsp;floor&nbsp;focus&nbsp;fontColor&nbsp;fontSize&nbsp;form&nbsp;forms&nbsp;forward&nbsp;frames&nbsp
;fromCharCode&nbsp;fromElement&nbsp;&nbsp;getAttribute&nbsp;get&nbsp;getClass&nbsp;getDate&nbsp;getDay&nbsp;getFullYear&nbsp;
getHours&nbsp;getMember&nbsp;getMilliseconds&nbsp;getMinutes&nbsp;getMonth&nbsp;getSeconds&nbsp;getSelection&nbsp;getSlot&nbs
p;getTime&nbsp;getTimezoneOffset&nbsp;&nbsp;getUTCDate&nbsp;getUTCDay&nbsp;getUTCFullYear&nbsp;getUTCHours&nbsp;getUTCMillise
conds&nbsp;getUTCMinutes&nbsp;getUTCMonth&nbsp;getUTCSeconds&nbsp;getWindow&nbsp;getYear&nbsp;global&nbsp;go&nbsp;HandleEvent
&nbsp;Height&nbsp;&nbsp;hash&nbsp;hidden&nbsp;history&nbsp;home&nbsp;host&nbsp;hostName&nbsp;href&nbsp;hspace&nbsp;id&nbsp;id
s&nbsp;ignoreCase&nbsp;images&nbsp;index&nbsp;indexOf&nbsp;inner&nbsp;innerHTML&nbsp;innerText&nbsp;innerWidth&nbsp;insertAdj
acentHTML&nbsp;insertAdjacentText&nbsp;isFinite&nbsp;isNAN&nbsp;italics&nbsp;java&nbsp;javaEnabled&nbsp;join&nbsp;keyCode&nbs
p;Links&nbsp;LN10&nbsp;LN2&nbsp;LOG10E&nbsp;LOG2E&nbsp;&nbsp;lang&nbsp;language&nbsp;lastIndex&nbsp;lastIndexOf&nbsp;lastMatc
h&nbsp;lastModified&nbsp;lastParen&nbsp;layers&nbsp;layerX&nbsp;layerY&nbsp;left&nbsp;leftContext&nbsp;length&nbsp;link&nbsp;
linkColor&nbsp;load&nbsp;location&nbsp;locationBar&nbsp;log&nbsp;lowsrc&nbsp;MAX_VALUE&nbsp;MIN_VALUE&nbsp;&nbsp;margins&nbsp
;match&nbsp;max&nbsp;menubar&nbsp;method&nbsp;mimeTypes&nbsp;min&nbsp;modifiers&nbsp;moveAbove&nbsp;moveBelow&nbsp;moveBy&nbs
p;moveTo&nbsp;moveToAbsolute&nbsp;multiline&nbsp;NaN&nbsp;NEGATIVE_INFINITY&nbsp;&nbsp;name&nbsp;navigate&nbsp;navigator&nbsp
;netscape&nbsp;next&nbsp;number&nbsp;offscreenBuffering&nbsp;offset&nbsp;offsetHeight&nbsp;offsetLeft&nbsp;offsetParent&nbsp;
offsetTop&nbsp;offsetWidth&nbsp;offsetX&nbsp;offsetY&nbsp;onabort&nbsp;onblur&nbsp;onchange&nbsp;onclick&nbsp;ondblclick&nbsp
;ondragdrop&nbsp;onerror&nbsp;onfocus&nbsp;&nbsp;onHelp&nbsp;onkeydown&nbsp;onkeypress&nbsp;onkeyup&nbsp;onload&nbsp;onmoused
own&nbsp;onmousemove&nbsp;onmouseout&nbsp;onmouseover&nbsp;onmouseup&nbsp;onmove&nbsp;onreset&nbsp;onresize&nbsp;onsubmit&nbs
p;onunload&nbsp;open&nbsp;opener&nbsp;options&nbsp;outerHeight&nbsp;&nbsp;outerHTML&nbsp;outerText&nbsp;outerWidth&nbsp;POSIT
IVE_INFINITY&nbsp;PI&nbsp;&nbsp;paddings&nbsp;pageX&nbsp;pageXOffset&nbsp;pageY&nbsp;pageYOffset&nbsp;parent&nbsp;parentEleme
nt&nbsp;parentLayer&nbsp;parentWindow&nbsp;parse&nbsp;parseFloat&nbsp;parseInt&nbsp;pathname&nbsp;personalbar&nbsp;pixelDepth
&nbsp;platform&nbsp;plugins&nbsp;pop&nbsp;&nbsp;port&nbsp;pow&nbsp;preference&nbsp;previous&nbsp;print&nbsp;prompt&nbsp;proto
col&nbsp;prototype&nbsp;push&nbsp;random&nbsp;readyState&nbsp;reason&nbsp;referrer&nbsp;refresh&nbsp;releaseEvents&nbsp;reloa
d&nbsp;removeAttribute&nbsp;removeMember&nbsp;replace&nbsp;resizeBy&nbsp;resizeTo&nbsp;returnValue&nbsp;reverse&nbsp;right&nb
sp;rightcontext&nbsp;round&nbsp;SQRT1_2&nbsp;SQRT2&nbsp;&nbsp;screenX&nbsp;screenY&nbsp;scroll&nbsp;scrollbars&nbsp;scrollBy&
nbsp;scrollIntoView&nbsp;scrollTo&nbsp;search&nbsp;select&nbsp;selected&nbsp;selectedIndex&nbsp;self&nbsp;setAttribute&nbsp;s
etDay&nbsp;setFullYear&nbsp;setHotkeys&nbsp;setHours&nbsp;setInterval&nbsp;&nbsp;setMember&nbsp;setMilliseconds&nbsp;setMinut
es&nbsp;setMonth&nbsp;setResizable&nbsp;setSeconds&nbsp;setSlot&nbsp;setTime&nbsp;setTimeout&nbsp;setUTCDate&nbsp;setUTCFullY
ear&nbsp;setUTCHours&nbsp;setUTCMillseconds&nbsp;setUTCMinutes&nbsp;&nbsp;setUTCMonth&nbsp;setUTCSeconds&nbsp;setYear&nbsp;se
tZOptions&nbsp;shift&nbsp;shiftKey&nbsp;siblingAbove&nbsp;siblingBelow&nbsp;signText&nbsp;sin&nbsp;slice&nbsp;smallsort&nbsp;
source&nbsp;sourceIndex&nbsp;splice&nbsp;split&nbsp;sqrt&nbsp;src&nbsp;&nbsp;srcElement&nbsp;srcFilter&nbsp;status&nbsp;statu
sbar&nbsp;stop&nbsp;strike&nbsp;style&nbsp;sub&nbsp;submit&nbsp;substr&nbsp;substring&nbsp;suffixes&nbsp;sun&nbsp;sup&nbsp;sy
stemLanguage&nbsp;TYPE&nbsp;&nbsp;tagName&nbsp;tags&nbsp;taint&nbsp;taintEnabled&nbsp;tan&nbsp;target&nbsp;test&nbsp;text&nbs
p;title&nbsp;toElement&nbsp;toGMTString&nbsp;toLocaleString&nbsp;toLowerCase&nbsp;toolbar&nbsp;top&nbsp;toString&nbsp;toUpper
Case&nbsp;toUTCString&nbsp;type&nbsp;typeOf&nbsp;UTC&nbsp;unescape&nbsp;unshift&nbsp;untaint&nbsp;unwatch&nbsp;userAgent&nbsp
;userLanguage&nbsp;&nbsp;value&nbsp;valueOf&nbsp;visibility&nbsp;vlinkColor&nbsp;vspace&nbsp;watch&nbsp;which&nbsp;width&nbsp
;window&nbsp;write&nbsp;writeln&nbsp;x&nbsp;y&nbsp;zIndex&quot;;&#13;&#10;var&nbsp;OPS=&quot;!&nbsp;$&nbsp;%
&nbsp;&amp;&nbsp;*&nbsp;+&nbsp;-&nbsp;//&nbsp;/&nbsp;:&nbsp;&lt;&nbsp;=&nbsp;&gt;&nbsp;?&nbsp;[&nbsp;]
&nbsp;^&nbsp;|&nbsp;~&nbsp;is&nbsp;&nbsp;new&nbsp;sizeof&nbsp;&nbsp;typeof&nbsp;unchecked&quot;;&#13;&#10;&#13;&#10;var&nbsp;
regKW=new&nbsp;RegExp(&quot;(\\W&quot;+KEYWORDS.replace(/&nbsp;/g,&quot;$)|(\\W&quot;)+&quot;$)
&quot;,&quot;g&quot;);&#13;&#10;var&nbsp;regObj=new&nbsp;RegExp(&quot;(\\W&quot;+OBJECTS.replace(/&nbsp;/g,&quot;$)|
(\\W&quot;)+&quot;$)&quot;,&quot;g&quot;);&#13;&#10;var&nbsp;regMP=new&nbsp;RegExp(&quot;
(\\W&quot;+METHODS_PROPERTIES.replace(/&nbsp;/g,&quot;$)|(\\W&quot;)+&quot;$)
&quot;,&quot;g&quot;);&#13;&#10;//var&nbsp;regOP=new&nbsp;RegExp(&quot;(\\W&quot;+OPS.replace(/&nbsp;/g,&quot;$)|(\\W&quot;)
+&quot;$)&quot;,&quot;g&quot;);&#13;&#10;&#13;&#10;//------------------&#13;&#10;//&nbsp;Global&nbsp;Variables&#13;&#10;//--
----------------
&#13;&#10;var&nbsp;divJSInput,&nbsp;txtJSInput,&nbsp;divMain,&nbsp;divJSOutputLineNo,&nbsp;divJSOutputPlus,&nbsp;divJSOutput,
&nbsp;divWaiting;&#13;&#10;var&nbsp;spnProcess,&nbsp;cmdStop,&nbsp;divJSExport,&nbsp;selJSExport,&nbsp;divJSExportContent;&#1
3;&#10;var&nbsp;glbStr,&nbsp;glbP,&nbsp;glbRe,&nbsp;curRe,&nbsp;glbTimer,&nbsp;glbBusy,&nbsp;glbFuntionNames;&#13;&#10;&#13;&
#10;&#13;&#10;function&nbsp;init()
{&#13;&#10;&nbsp;//&nbsp;init&nbsp;global&nbsp;variables&#13;&#10;&nbsp;divJSInput=document.getElementById
(&quot;divJSInput&quot;);&#13;&#10;&nbsp;txtJSInput=document.getElementById
(&quot;txtJSInput&quot;);&#13;&#10;&nbsp;divMain=document.getElementById
(&quot;divMain&quot;);&#13;&#10;&nbsp;divJSOutputLineNo=document.getElementById
(&quot;divJSOutputLineNo&quot;);&#13;&#10;&nbsp;divJSOutputPlus=document.getElementById
(&quot;divJSOutputPlus&quot;);&#13;&#10;&nbsp;divJSOutput=document.getElementById
(&quot;divJSOutput&quot;);&#13;&#10;&nbsp;divWaiting=document.getElementById
(&quot;divWaiting&quot;);&#13;&#10;&nbsp;spnProcess=document.getElementById
(&quot;spnProcess&quot;);&#13;&#10;&nbsp;cmdStop=document.getElementById
(&quot;cmdStop&quot;);&#13;&#10;&nbsp;divJSExport=document.getElementById
(&quot;divJSExport&quot;);&#13;&#10;&nbsp;selJSExport=document.getElementById
(&quot;selJSExport&quot;);&#13;&#10;&nbsp;divJSExportContent=document.getElementById
(&quot;divJSExportContent&quot;);&#13;&#10;&nbsp;&#13;&#10;&nbsp;//&nbsp;init&nbsp;window&nbsp;state&#13;&#10;&nbsp;maximizeW
indow();&#13;&#10;&nbsp;&#13;&#10;&nbsp;divMain.style.width=document.body.clientWidth-
4;&#13;&#10;&nbsp;divMain.style.height=document.body.clientHeight-
26;&#13;&#10;&nbsp;&#13;&#10;&nbsp;divJSOutput.style.width=document.body.clientWidth-
52;&#13;&#10;&nbsp;&#13;&#10;&nbsp;&#13;&#10;&nbsp;//&nbsp;init&nbsp;global&nbsp;events&#13;&#10;&nbsp;divJSOutputLineNo.onse
lectstart=divJSOutputLineNo.onselect=divJSOutputPlus.onselectstart=divJSOutputPlus.onselect=cancelEvents;&#13;&#10;&nbsp;divJ
SOutput.onscroll=divJSOutput_onscroll;&#13;&#10;&nbsp;&#13;&#10;&nbsp;divJSInput.onkeydown=divJSInput_keydown;&#13;&#10;&nbsp
;divJSExport.onkeydown=divJSExport_keydown;&#13;&#10;&nbsp;&#13;&#10;}&#13;&#10;&#13;&#10;&#13;&#10;//------------------
&#13;&#10;//&nbsp;event&nbsp;scripts&#13;&#10;//------------------&#13;&#10;&#13;&#10;function&nbsp;cancelEvents(e)
{&#13;&#10;&nbsp;var&nbsp;e=window.event?window.event:e;&#13;&#10;&nbsp;e.returnValue=false;&#13;&#10;&nbsp;return
(false);&#13;&#10;}&#13;&#10;&#13;&#10;function&nbsp;divJSInput_keydown(e){&#13;&#10;&nbsp;var&nbsp;e=window.event?
window.event:e;&#13;&#10;&nbsp;var&nbsp;srcEle=e.srcElement?
e.srcElement:e.target;&#13;&#10;&nbsp;var&nbsp;sel;&#13;&#10;&nbsp;if(e.keyCode==27)hideJSInput();&#13;&#10;&nbsp;if
(e.keyCode==13&amp;&amp;e.ctrlKey)execJSInput();&#13;&#10;&nbsp;if(e.keyCode==9&amp;&amp;srcEle==txtJSInput)
{&#13;&#10;&nbsp;&nbsp;document.selection.createRange().text=&quot;\t&quot;;return
(false);&nbsp;//&nbsp;not&nbsp;support&nbsp;FF&nbsp;&#13;&#10;&nbsp;}&#13;&#10;}
&#13;&#10;&#13;&#10;function&nbsp;divJSExport_keydown(e){&#13;&#10;&nbsp;var&nbsp;e=window.event?
window.event:e;&#13;&#10;&nbsp;var&nbsp;srcEle=e.srcElement?
e.srcElement:e.target;&#13;&#10;&nbsp;var&nbsp;sel;&#13;&#10;&nbsp;if(e.keyCode==27)hideJSExport();&#13;&#10;&nbsp;if
(e.keyCode==13&amp;&amp;e.ctrlKey)hideJSExport();&#13;&#10;}&#13;&#10;&#13;&#10;function&nbsp;divJSOutput_onscroll()
{&#13;&#10;&nbsp;divJSOutputLineNo.scrollTop=divJSOutputPlus.scrollTop=divJSOutput.scrollTop;&#13;&#10;}
&#13;&#10;&#13;&#10;&#13;&#10;&#13;&#10;//------------------&#13;&#10;//&nbsp;functional&nbsp;scripts&#13;&#10;//-----------
-------&#13;&#10;&#13;&#10;function&nbsp;showJSInput(){&#13;&#10;&nbsp;if(glbBusy)return;&#13;&#10;&nbsp;hideJSExport
();&#13;&#10;&nbsp;with(divJSInput.style){&#13;&#10;&nbsp;&nbsp;display=&quot;block&quot;;&#13;&#10;&nbsp;&nbsp;left=
(document.body.clientWidth-divJSInput.offsetWidth)/2;&#13;&#10;&nbsp;&nbsp;top=(document.body.clientHeight-
divJSInput.offsetHeight)/2;&#13;&#10;&nbsp;}&#13;&#10;&nbsp;&#13;&#10;&nbsp;txtJSInput.focus
();&#13;&#10;&nbsp;&#13;&#10;&nbsp;return(false);&#13;&#10;}&#13;&#10;&#13;&#10;function&nbsp;showJSExport()
{&#13;&#10;&nbsp;if(glbBusy)return;&#13;&#10;&nbsp;hideJSInput();&#13;&#10;&nbsp;with(divJSExport.style)
{&#13;&#10;&nbsp;&nbsp;display=&quot;block&quot;;&#13;&#10;&nbsp;&nbsp;left=(document.body.clientWidth-
divJSExport.offsetWidth)/2;&#13;&#10;&nbsp;&nbsp;top=(document.body.clientHeight-
divJSExport.offsetHeight)/2;&#13;&#10;&nbsp;}
&#13;&#10;&nbsp;divJSExportContent.style.display=&quot;none&quot;;&#13;&#10;&nbsp;selJSExport.style.display=&quot;block&quot;
;&#13;&#10;&nbsp;&#13;&#10;&nbsp;selJSExport.focus();&#13;&#10;&nbsp;return(false);&#13;&#10;}
&#13;&#10;&#13;&#10;function&nbsp;hideJSInput(){&#13;&#10;&nbsp;divJSInput.style.display=&quot;none&quot;;&#13;&#10;}
&#13;&#10;&#13;&#10;function&nbsp;hideJSExport(){&#13;&#10;&nbsp;divJSExport.style.display=&quot;none&quot;;&#13;&#10;}
&#13;&#10;&#13;&#10;function&nbsp;execJSInput(){&#13;&#10;&nbsp;hideJSInput
();&#13;&#10;&nbsp;&#13;&#10;&nbsp;divJSOutput.innerHTML=&quot;&quot;;&#13;&#10;&nbsp;divJSOutputLineNo.innerHTML=&quot;&quot
;;&#13;&#10;&nbsp;divJSOutputPlus.innerHTML=&quot;&quot;;&#13;&#10;&nbsp;&#13;&#10;&nbsp;glbStr=txtJSInput.value;&#13;&#10;&n
bsp;glbP=0;&#13;&#10;&nbsp;glbFuntionNames=new&nbsp;Array();&#13;&#10;&nbsp;curRe=glbRe=document.createElement
(&quot;div&quot;);&#13;&#10;&nbsp;&#13;&#10;&nbsp;divJSOutput.appendChild
(glbRe);&#13;&#10;&nbsp;glbRe.className=&quot;codeRoot&quot;;&#13;&#10;&nbsp;&#13;&#10;&nbsp;while
(selJSExport.options.length&gt;0)selJSExport.options[0]=null;&#13;&#10;&nbsp;&#13;&#10;&nbsp;showWait
(startRecalcLine);&#13;&#10;&nbsp;core_analysis();&#13;&#10;}&#13;&#10;&#13;&#10;function&nbsp;execJSExport()
{&#13;&#10;&nbsp;var&nbsp;fns=new&nbsp;Array(),&nbsp;fcs=new&nbsp;Array(),&nbsp;str;&#13;&#10;&nbsp;&#13;&#10;&nbsp;for
(var&nbsp;i=0;&nbsp;i&lt;selJSExport.options.length;&nbsp;i++){&#13;&#10;&nbsp;&nbsp;if(selJSExport.options[i].selected)
{&#13;&#10;&nbsp;&nbsp;&nbsp;fns.push(selJSExport.options[i].value);&#13;&#10;&nbsp;&nbsp;&nbsp;str=selJSExport.options
[i].obj.outerHTML;&#13;&#10;&nbsp;&nbsp;&nbsp;try{&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;str+=selJSExport.options
[i].obj.nextSibling.outerHTML;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;str+=selJSExport.options
[i].obj.nextSibling.nextSibling.outerHTML;&#13;&#10;&nbsp;&nbsp;&nbsp;}catch(e){}&#13;&#10;&nbsp;&nbsp;&nbsp;fcs.push
(str);&#13;&#10;&nbsp;&nbsp;}&#13;&#10;&nbsp;}&#13;&#10;&nbsp;if(fns.length==0)
return;&#13;&#10;&nbsp;&#13;&#10;&nbsp;divJSExportContent.style.display=&quot;block&quot;;&#13;&#10;&nbsp;selJSExport.style.d
isplay=&quot;none&quot;;&#13;&#10;&nbsp;&#13;&#10;&nbsp;divJSExportContent.innerHTML=fcs.join
(&quot;\r\n&lt;br&gt;\r\n&quot;);&#13;&#10;}&#13;&#10;&#13;&#10;function&nbsp;execJSExport_Dep()
{&#13;&#10;&nbsp;var&nbsp;fns=new&nbsp;Array(),&nbsp;fcs=new&nbsp;Array(),&nbsp;str,&nbsp;regFNs=new&nbsp;Array
(),&nbsp;needDepthTest;&#13;&#10;&nbsp;&#13;&#10;&nbsp;for(var&nbsp;i=0;&nbsp;i&lt;selJSExport.options.length;&nbsp;i++)
{&#13;&#10;&nbsp;&nbsp;if(selJSExport.options[i].selected){&#13;&#10;&nbsp;&nbsp;&nbsp;fns.push(selJSExport.options
[i].value);&#13;&#10;&nbsp;&nbsp;&nbsp;try{&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;str=selJSExport.options
[i].obj.nextSibling.outerHTML;&#13;&#10;&nbsp;&nbsp;&nbsp;}catch(e){}&#13;&#10;&nbsp;&nbsp;&nbsp;fcs.push
(str);&#13;&#10;&nbsp;&nbsp;}&#13;&#10;&nbsp;}&#13;&#10;&nbsp;if(fns.length==0)
return;&#13;&#10;&nbsp;&#13;&#10;&nbsp;divJSExportContent.style.display=&quot;none&quot;;&#13;&#10;&nbsp;selJSExport.style.di
splay=&quot;block&quot;;&#13;&#10;&nbsp;&#13;&#10;&nbsp;needDepthTest=false;&#13;&#10;&nbsp;for
(var&nbsp;i=0;i&lt;glbFuntionNames.length;i+=1){&#13;&#10;&nbsp;&nbsp;if(!selJSExport.options[i].selected)
{&#13;&#10;&nbsp;&nbsp;&nbsp;for(j=0;j&lt;fcs.length;j++){&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;if(html2txt(fcs[j]).match
(glbFuntionNames[i].replace(/\./g,&quot;\\.&quot;))){&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selJSExport.options
[i].selected=true;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;needDepthTest=true;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&#
13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;}&#13;&#10;&nbsp;&nbsp;&nbsp;}&#13;&#10;&nbsp;&nbsp;}&#13;&#10;&nbsp;}&#13;&#10;&nbsp;if
(needDepthTest)execJSExport_Dep();&#13;&#10;}&#13;&#10;&#13;&#10;&#13;&#10;function&nbsp;showWait(onstop)
{&#13;&#10;&nbsp;glbBusy=true;&#13;&#10;&nbsp;document.body.style.cursor=&quot;wait&quot;;&#13;&#10;&nbsp;&#13;&#10;&nbsp;wit
h(divWaiting.style){&#13;&#10;&nbsp;&nbsp;display=&quot;block&quot;;&#13;&#10;&nbsp;&nbsp;left=(document.body.clientWidth-
divWaiting.offsetWidth)/2;&#13;&#10;&nbsp;&nbsp;top=(document.body.clientHeight-divWaiting.offsetHeight)/2;&#13;&#10;&nbsp;}
&#13;&#10;&nbsp;spnProcess.innerHTML=&quot;0.00%&nbsp;&nbsp;(&nbsp;0&nbsp;/&nbsp;0&nbsp;)
&quot;;&#13;&#10;&nbsp;divWaiting.onstop=onstop;&#13;&#10;&nbsp;cmdStop.focus();&#13;&#10;&nbsp;return(false);&#13;&#10;}
&#13;&#10;&#13;&#10;function&nbsp;hideWait()
{&#13;&#10;&nbsp;glbBusy=false;&#13;&#10;&nbsp;document.body.style.cursor=&quot;&quot;;&#13;&#10;&nbsp;divWaiting.style.displ
ay=&quot;none&quot;;&#13;&#10;&nbsp;try{clearTimeout(glbTimer);}catch(e){}&#13;&#10;&nbsp;try{divWaiting.onstop();}catch(e)
{}&#13;&#10;&nbsp;return(false);&#13;&#10;}&#13;&#10;&#13;&#10;function&nbsp;stopExec(){&nbsp;hideWait();&nbsp;}
&#13;&#10;&#13;&#10;function&nbsp;startRecalcLine()
{&#13;&#10;&nbsp;var&nbsp;re=&quot;&quot;,&nbsp;re2=&quot;&quot;;&#13;&#10;&nbsp;if(glbBusy)
return;&#13;&#10;&nbsp;glbBusy=true;&#13;&#10;&nbsp;&#13;&#10;&nbsp;for(var&nbsp;i=0;i&lt;parseInt
(divJSOutput.scrollHeight/14+200);i++){&#13;&#10;&nbsp;&nbsp;re+=&quot;&lt;p&gt;&quot;+(i+1)
+&quot;&lt;/p&gt;&quot;;&#13;&#10;&nbsp;&nbsp;re2+=&quot;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&quot;;&#13;&#10;&nbsp;}
&#13;&#10;&nbsp;&#13;&#10;&nbsp;divJSOutputLineNo.innerHTML=re;&#13;&#10;&nbsp;divJSOutputPlus.innerHTML=re2;&#13;&#10;&nbsp;
divJSOutputPlus.buttons=new&nbsp;Array();&#13;&#10;&nbsp;&#13;&#10;&nbsp;glbP=0;&#13;&#10;&nbsp;&#13;&#10;&nbsp;showWait
();&#13;&#10;&nbsp;recalcLine();&#13;&#10;&nbsp;return(false);&#13;&#10;&#13;&#10;}
&#13;&#10;&#13;&#10;&#13;&#10;function&nbsp;recalcLine()
{&#13;&#10;&nbsp;var&nbsp;objs,&nbsp;j;&#13;&#10;&nbsp;&#13;&#10;&nbsp;objs=document.getElementsByTagName
(&quot;div&quot;);&#13;&#10;&nbsp;for(var&nbsp;i=glbP;i&lt;objs.length&amp;&amp;(i-glbP&lt;30);i++){&#13;&#10;&nbsp;&nbsp;if
(objs[i].className==&quot;indent&quot;){&#13;&#10;&nbsp;&nbsp;&nbsp;j=parseInt(objs[i].offsetTop/14)-
1;&#13;&#10;&nbsp;&nbsp;&nbsp;divJSOutputPlus.childNodes
[j].className=&quot;colsp&quot;;&#13;&#10;&nbsp;&nbsp;&nbsp;divJSOutputPlus.childNodes[j].innerHTML=&quot;-
&quot;;&#13;&#10;&nbsp;&nbsp;&nbsp;divJSOutputPlus.childNodes[j].linkedDIV=objs
[i];&#13;&#10;&nbsp;&nbsp;&nbsp;divJSOutputPlus.childNodes
[j].startIndex=j+1;&#13;&#10;&nbsp;&nbsp;&nbsp;divJSOutputPlus.childNodes[j].endIndex=j+Math.round(objs[i].offsetHeight/14)
+1;&#13;&#10;&nbsp;&nbsp;&nbsp;divJSOutputPlus.childNodes[j].switchDIV=divJSOutputPlus.childNodes
[j].onclick=switchDIV;&#13;&#10;&nbsp;&nbsp;&nbsp;divJSOutputPlus.buttons.push(divJSOutputPlus.childNodes
[j]);&#13;&#10;&nbsp;&nbsp;}&#13;&#10;&nbsp;}&#13;&#10;&nbsp;spnProcess.innerHTML=parseFloat(glbP/objs.length*100).toFixed
(2)+&quot;%&nbsp;&nbsp;(&nbsp;&quot;+glbP+&quot;&nbsp;/&nbsp;&quot;+objs.length+&quot;&nbsp;)&quot;;&#13;&#10;&nbsp;if
(i&lt;objs.length){glbP=i;&nbsp;glbTimer=setTimeout(recalcLine);&nbsp;return;}&#13;&#10;&nbsp;stopExec
();&#13;&#10;&nbsp;divJSOutput_onscroll();&#13;&#10;}&#13;&#10;&#13;&#10;function&nbsp;switchDIV(disp)
{&#13;&#10;&nbsp;var&nbsp;y,&nbsp;obj;&#13;&#10;&nbsp;if((this.className==&quot;colsp&quot;||disp==&quot;hide&quot;)
&amp;&amp;disp!=&quot;show&quot;)
{&#13;&#10;&nbsp;&nbsp;this.className=&quot;colsp2&quot;;&#13;&#10;&nbsp;&nbsp;this.innerHTML=&quot;+&quot;;&#13;&#10;&nbsp;&
nbsp;for(var&nbsp;i=this.startIndex;i&lt;this.endIndex;i++){&#13;&#10;&nbsp;&nbsp;&nbsp;divJSOutputLineNo.childNodes
[i].style.display=&quot;none&quot;;&#13;&#10;&nbsp;&nbsp;&nbsp;divJSOutputPlus.childNodes
[i].style.display=&quot;none&quot;;&#13;&#10;&nbsp;&nbsp;}
&#13;&#10;&nbsp;&nbsp;this.linkedDIV.style.display=&quot;none&quot;;&#13;&#10;&nbsp;}else
{&#13;&#10;&nbsp;&nbsp;this.className=&quot;colsp&quot;;&#13;&#10;&nbsp;&nbsp;this.innerHTML=&quot;-
&quot;;&#13;&#10;&nbsp;&nbsp;this.linkedDIV.style.display=&quot;block&quot;;&#13;&#10;&nbsp;&nbsp;for
(var&nbsp;i=this.startIndex;i&lt;this.endIndex;i++){&#13;&#10;&nbsp;&nbsp;&nbsp;divJSOutputLineNo.childNodes
[i].style.display=&quot;block&quot;;&#13;&#10;&nbsp;&nbsp;&nbsp;divJSOutputPlus.childNodes
[i].style.display=&quot;block&quot;;&#13;&#10;&nbsp;&nbsp;&nbsp;if(divJSOutputPlus.childNodes
[i].className==&quot;colsp2&quot;){&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;i=divJSOutputPlus.childNodes[i].endIndex-
1;&#13;&#10;&nbsp;&nbsp;&nbsp;}&#13;&#10;&nbsp;&nbsp;}&#13;&#10;&nbsp;}&#13;&#10;&nbsp;divJSOutput_onscroll();&#13;&#10;}
&#13;&#10;&#13;&#10;function&nbsp;collapseAll(index){&#13;&#10;&nbsp;index=isNaN(parseInt(index))?0:parseInt
(index);&#13;&#10;&nbsp;if(!divJSOutputPlus.buttons)return;&#13;&#10;&nbsp;if(index&lt;0)index=0;&#13;&#10;&nbsp;if
(index&gt;divJSOutputPlus.buttons.length)return;&#13;&#10;&nbsp;for
(var&nbsp;i=index;i&lt;divJSOutputPlus.buttons.length&amp;&amp;i-index&lt;10;i++)divJSOutputPlus.buttons[i].switchDIV
(&quot;hide&quot;);&#13;&#10;&nbsp;setTimeout(&quot;collapseAll(&quot;+i+&quot;)&quot;);&#13;&#10;}
&#13;&#10;&#13;&#10;function&nbsp;expandAll(index){&#13;&#10;&nbsp;index=isNaN(parseInt(index))?0:parseInt
(index);&#13;&#10;&nbsp;if(!divJSOutputPlus.buttons)return;&#13;&#10;&nbsp;if(index&lt;0)index=0;&#13;&#10;&nbsp;if
(index&gt;divJSOutputPlus.buttons.length)return;&#13;&#10;&nbsp;for
(var&nbsp;i=index;i&lt;divJSOutputPlus.buttons.length&amp;&amp;i-index&lt;10;i++)divJSOutputPlus.buttons[i].switchDIV
(&quot;show&quot;);&#13;&#10;&nbsp;setTimeout(&quot;expandAll(&quot;+i+&quot;)&quot;);&#13;&#10;}
&#13;&#10;&#13;&#10;&#13;&#10;function&nbsp;core_analysis()
{&#13;&#10;&nbsp;var&nbsp;str=&quot;&nbsp;&quot;,&nbsp;c=&quot;&quot;,&nbsp;lastState=&quot;&quot;,&nbsp;seq,&nbsp;intNextQuo
te,&nbsp;intTemp,&nbsp;intCount,&nbsp;intWordStart;&#13;&#10;&nbsp;spnProcess.innerHTML=parseFloat
(glbP/glbStr.length*100).toFixed(2)+&quot;%&nbsp;&nbsp;
(&nbsp;&quot;+glbP+&quot;&nbsp;/&nbsp;&quot;+glbStr.length+&quot;&nbsp;)&quot;;&#13;&#10;&nbsp;for
(var&nbsp;i=glbP;i&lt;glbStr.length;i++){&#13;&#10;&nbsp;&nbsp;c=glbStr.charAt(i);&#13;&#10;&nbsp;&nbsp;str+=htmlEncode
(c);&#13;&#10;&nbsp;&nbsp;switch(c)
{&#13;&#10;&nbsp;&nbsp;&nbsp;case&nbsp;&quot;\r&quot;:&nbsp;case&nbsp;&quot;&nbsp;&quot;:&nbsp;case&nbsp;&quot;\t&quot;:&#13;
&#10;&nbsp;&nbsp;&nbsp;&nbsp;if(lastState==&quot;\r\n&quot;){str=&quot;&nbsp;&quot;;break;}
&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;str=str.substring(0,str.length-htmlEncode(c).length);&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;if
(lastState==&quot;blank&quot;)break;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;if(c.match(/\W/)&amp;&amp;glbStr.charAt(i-1).match(/
\w/)){&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str=str.replace(regKW,clKW).replace(regObj,clObj).replace
(regMP,clMP);&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;}&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;str+=htmlEncode
(c);&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;lastState=&quot;blank&quot;;&#13;&#10;&nbsp;&nbsp;&nbsp;break;&#13;&#10;&nbsp;&nbsp;&nb
sp;case&nbsp;&quot;;&quot;:&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;if(str.match(/\Wfor.*?\(/i))
break;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;attention&nbsp;there's&nbsp;no&nbsp;break&nbsp;here&#13;&#10;&nbsp;&nbsp;&nbs
p;case&nbsp;&quot;\n&quot;:&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;if(lastState==&quot;\r\n&quot;){str=&quot;&nbsp;&quot;;break;}
&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;outputLn
(str);&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;str=&quot;&nbsp;&quot;;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;lastState=&quot;\r\n&quot;;&
#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;if(i-glbP&gt;200)
{&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;glbP=i+1;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;glbTimer=setTimeout
(core_analysis);&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;}
&#13;&#10;&nbsp;&nbsp;&nbsp;break;&#13;&#10;&nbsp;&nbsp;&nbsp;case&nbsp;&quot;\&quot;&quot;:&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp
;intNextQuote=i;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;while(intNextQuote!=-1&amp;&amp;intNextQuote&lt;glbStr.length)
{&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intNextQuote=glbStr.indexOf
(&quot;\&quot;&quot;,intNextQuote+1);&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(intNextQuote==-1||glbStr.charAt(intNextQuote
-1)!=&quot;\\&quot;)
break;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intCount=0;&nbsp;intTemp=intNextQuote;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w
hile(glbStr.charAt(--intTemp)==&quot;\\&quot;)intCount++;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(intCount%2==0)
break;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;}&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;if(intNextQuote==-1)
break;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;str+=&quot;&lt;span&nbsp;class=\&quot;quote\&quot;&gt;&quot;+htmlEncode
(glbStr.substring(i+1,intNextQuote))
+&quot;&lt;\/span&gt;\&quot;&quot;;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;i=intNextQuote;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;lastSta
te=&quot;&quot;;&#13;&#10;&nbsp;&nbsp;&nbsp;break;&#13;&#10;&nbsp;&nbsp;&nbsp;case&nbsp;&quot;\'&quot;:&#13;&#10;&nbsp;&nbsp;
&nbsp;&nbsp;intNextQuote=i;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;while(intNextQuote!=-1&amp;&amp;intNextQuote&lt;glbStr.length)
{&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intNextQuote=glbStr.indexOf
(&quot;\'&quot;,intNextQuote+1);&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(intNextQuote==-1||glbStr.charAt(intNextQuote-1)!
=&quot;\\&quot;)
break;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intCount=0;&nbsp;intTemp=intNextQuote;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w
hile(glbStr.charAt(--intTemp)==&quot;\\&quot;)intCount++;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(intCount%2==0)
break;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;}&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;if(intNextQuote==-1)
break;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;str+=&quot;&lt;span&nbsp;class=\&quot;quote\&quot;&gt;&quot;+htmlEncode
(glbStr.substring(i+1,intNextQuote))
+&quot;&lt;\/span&gt;\'&quot;;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;i=intNextQuote;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;lastState=&q
uot;&quot;;&#13;&#10;&nbsp;&nbsp;&nbsp;break;&#13;&#10;&nbsp;&nbsp;&nbsp;case&nbsp;&quot;\/&quot;:&#13;&#10;&nbsp;&nbsp;&nbsp
;&nbsp;if(glbStr.charAt(i+1)==&quot;\/&quot;)
{&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intNextQuote=i;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intNextQuote=glbStr.indexOf
(&quot;\r\n&quot;,intNextQuote+1);&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(intNextQuote==-1)
intNextQuote=glbStr.length;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str=str.substring(0,str.length-
1);&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str+=&quot;&lt;span&nbsp;class=\&quot;comments\&quot;&gt;\/&quot;+htmlEncode
(glbStr.substring(i+1,intNextQuote))
+&quot;&lt;\/span&gt;&quot;;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i=intNextQuote;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;}
else&nbsp;if(glbStr.charAt(i+1)==&quot;*&quot;)
{&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intNextQuote=i;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intNextQuote=glbStr.indexOf
(&quot;*\/&quot;,intNextQuote+1);&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(intNextQuote==-1)
return;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str=str.substring(0,str.length-
1);&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str+=&quot;&lt;span&nbsp;class=\&quot;comments\&quot;&gt;\/&quot;+htmlEncode
(glbStr.substring(i+1,intNextQuote))
+&quot;*\/&lt;\/span&gt;&quot;;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i=intNextQuote+1;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;}
else&nbsp;if(str.match(/[=(][&nbsp;\t]*\//))
{&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intNextQuote=i;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(intNextQuote!=-
1&amp;&amp;intNextQuote&lt;glbStr.length){&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intNextQuote=glbStr.indexOf
(&quot;\/&quot;,intNextQuote+1);&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(intNextQuote==-1||glbStr.charAt
(intNextQuote-1)!=&quot;\\&quot;)
break;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intCount=0;&nbsp;intTemp=intNextQuote;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&
nbsp;&nbsp;while(glbStr.charAt(--intTemp)==&quot;\\&quot;)intCount++;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if
(intCount%2==0)break;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(intNextQuote==-1)
break;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str+=&quot;&lt;span&nbsp;class=\&quot;regexp\&quot;&gt;&quot;+htmlEncode
(glbStr.substring(i+1,intNextQuote))
+&quot;&lt;\/span&gt;\/&quot;;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i=intNextQuote;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lastState=&quot;&quot;;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;}
&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;lastState=&quot;&quot;;&#13;&#10;&nbsp;&nbsp;&nbsp;break;&#13;&#10;&nbsp;&nbsp;&nbsp;case&n
bsp;&quot;{&quot;:&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;outputLn
(str);&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;str=&quot;&nbsp;&quot;;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;seq=document.createElement
(&quot;div&quot;);&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;seq.className=&quot;indent&quot;;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;curRe.
appendChild
(seq);&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;curRe=seq;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;lastState=&quot;\r\n&quot;;&#13;&#10;&nbs
p;&nbsp;&nbsp;&nbsp;if(i-glbP&gt;200)
{&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;glbP=i+1;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;glbTimer=setTimeout
(core_analysis);&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;}
&#13;&#10;&nbsp;&nbsp;&nbsp;break;&#13;&#10;&nbsp;&nbsp;&nbsp;case&nbsp;&quot;}
&quot;:&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;outputLn(str.substring(0,str.length-
1));&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;str=&quot;}
&nbsp;&quot;;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;lastState=&quot;&quot;;&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;curRe=curRe.parentNod
e;&#13;&#10;&nbsp;&nbsp;&nbsp;break;&#13;&#10;&nbsp;&nbsp;&nbsp;default:&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;if(c.match(/\w/)
&amp;&amp;glbStr.charAt(i-1).match(/\W/)){intWordStart=i;}&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;if(c.match(/\W/)
&amp;&amp;glbStr.charAt(i-1).match(/\w/)){&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str=str.substring(0,str.length-htmlEncode
(c).length);&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str=str.replace(regKW,clKW).replace(regObj,clObj).replace(regMP,clMP)
+htmlEncode(c);&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;}
&#13;&#10;&nbsp;&nbsp;&nbsp;&nbsp;lastState=&quot;&quot;;&#13;&#10;&nbsp;&nbsp;&nbsp;break;&#13;&#10;&nbsp;&nbsp;}
&#13;&#10;&nbsp;}&#13;&#10;&nbsp;&#13;&#10;&nbsp;if(i==glbStr.length){&#13;&#10;&nbsp;&nbsp;if(str!=&quot;&quot;)
{&nbsp;outputLn(str);&nbsp;str=&quot;&nbsp;&quot;;&nbsp;}&#13;&#10;&nbsp;&nbsp;stopExec();&#13;&#10;&nbsp;}
&#13;&#10;&#13;&#10;}&#13;&#10;&#13;&#10;function&nbsp;outputLn(theStr)
{&#13;&#10;&nbsp;var&nbsp;seq,&nbsp;txt,&nbsp;fn;&#13;&#10;&nbsp;if(html2txt(theStr).match(/^[&nbsp;\t\r\n]*$/))
return;&#13;&#10;&nbsp;seq=document.createElement
(&quot;p&quot;);&#13;&#10;&nbsp;seq.innerHTML=theStr;&#13;&#10;&nbsp;curRe.appendChild
(seq);&#13;&#10;&nbsp;&#13;&#10;&nbsp;txt=html2txt(theStr);&#13;&#10;&nbsp;if(!txt)return;&#13;&#10;&nbsp;fn=txt.match
(/function[&nbsp;\t\r\n]+([\.\w]+?)[&nbsp;\t\r\n]*\(.*?\)[&nbsp;\t\r\n]*\{/);&#13;&#10;&nbsp;if(fn)
{&#13;&#10;&nbsp;&nbsp;glbFuntionNames.push(fn[1]);&#13;&#10;&nbsp;&nbsp;selJSExport.options[selJSExport.options.length]
=new&nbsp;Option(fn[0]+&quot;}&quot;,fn[1]);&#13;&#10;&nbsp;&nbsp;selJSExport.options[selJSExport.options.length-
1].obj=seq;&#13;&#10;&nbsp;}&#13;&#10;&nbsp;fn=txt.match(/([\.\w]+?)[&nbsp;\t\r\n]*=[&nbsp;\t\r\n]*function\W*\(.*?\)
[&nbsp;\t\r\n]*\{/);&#13;&#10;&nbsp;if(fn){&#13;&#10;&nbsp;&nbsp;glbFuntionNames.push(fn
[1]);&#13;&#10;&nbsp;&nbsp;selJSExport.options[selJSExport.options.length]=new&nbsp;Option(fn[0]+&quot;}&quot;,fn
[1]);&#13;&#10;&nbsp;&nbsp;selJSExport.options[selJSExport.options.length-1].obj=seq;&#13;&#10;&nbsp;}&#13;&#10;}
&#13;&#10;&#13;&#10;function&nbsp;clKW(str){&nbsp;return(str.charAt(0)
+&quot;&lt;span&nbsp;class=\&quot;keyWord\&quot;&gt;&quot;+str.substring(1)+&quot;&lt;/span&gt;&quot;);&nbsp;}
&#13;&#10;&#13;&#10;function&nbsp;clObj(str){&nbsp;return(str.charAt(0)
+&quot;&lt;span&nbsp;class=\&quot;object\&quot;&gt;&quot;+str.substring(1)+&quot;&lt;/span&gt;&quot;);&nbsp;}
&#13;&#10;&#13;&#10;function&nbsp;clMP(str){&nbsp;return(str.charAt(0)
+&quot;&lt;span&nbsp;class=\&quot;method_property\&quot;&gt;&quot;+str.substring(1)+&quot;&lt;/span&gt;&quot;);&nbsp;}
&#13;&#10;&#13;&#10;function&nbsp;clOP(str){&nbsp;return(str.charAt(0)
+&quot;&lt;span&nbsp;class=\&quot;operator\&quot;&gt;&quot;+str.substring(1)+&quot;&lt;/span&gt;&quot;);&nbsp;}
&#13;&#10;&#13;&#10;&#13;&#10;//------------------&#13;&#10;//&nbsp;global&nbsp;scripts&#13;&#10;//------------------
&#13;&#10;&#13;&#10;function&nbsp;maximizeWindow(){&#13;&#10;&nbsp;window.moveTo(0,0);&#13;&#10;&nbsp;window.resizeTo
(screen.availWidth,screen.availHeight);&#13;&#10;}&#13;&#10;&#13;&#10;function&nbsp;htmlEncode(strS){&#13;&#10;&nbsp;return
(strS.replace(/&amp;/g,&quot;&amp;amp;&quot;).replace(/&lt;/g,&quot;&amp;lt;&quot;).replace
(/&gt;/g,&quot;&amp;gt;&quot;).replace(/&nbsp;/g,&quot;&amp;nbsp;&quot;).replace(/
\r\n/g,&quot;&lt;br\/&gt;&quot;));&#13;&#10;}&#13;&#10;&#13;&#10;function&nbsp;html2txt(strS){&#13;&#10;&nbsp;return
(strS.replace(/&lt;.+?&gt;/g,&quot;&quot;).replace(/&amp;lt;/g,&quot;&lt;&quot;).replace
(/&amp;gt;/g,&quot;&gt;&quot;).replace(/&amp;nbsp;/g,&quot;&nbsp;&quot;).replace(/&lt;br\/?&gt;/g,&quot;\r\n&quot;).replace
(/&amp;amp;/g,&quot;&amp;&quot;));&#13;&#10;}&#13;&#10;
</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>

相关推荐

评论

展开