2 <script language="javascript1.2" src="whver.js"></script>
\r
3 <script language="javascript1.2" src="whmozemu.js"></script>
\r
4 <script language="javascript1.2" src="whutils.js"></script>
\r
5 <script language="javascript1.2">
\r
9 document.write("<body></body>");
\r
13 document.write("<frameset rows=\"100%,*\"><frame name=\"data_frm\" src=\"about:blank\"><frame name=\"dumb_frm\" src=\"about:blank\"></frameset>");
\r
15 var gCSHFileName="whcshdata.htm";
\r
17 var gHomePage="geom.htm";
\r
18 var gaProj=new Array();
\r
19 gaProj[0]=new Object();
\r
20 gaProj[0].sProjPath=_replaceSlash(_getPath(document.location.href));
\r
21 gaProj[0].nLoadState=0;
\r
28 var CMD_SHOWINDEX=2;
\r
29 var CMD_SHOWSEARCH=3;
\r
30 var CMD_SHOWGLOSSARY=4;
\r
33 var RHWO_LOCATION=0x01; /*need location bar?*/
\r
34 var RHWO_MENUBAR=0x02; /*need menubar?*/
\r
35 var RHWO_RESIZABLE=0x04; /*resizable window?*/
\r
36 var RHWO_TOOLBAR=0x08; /*need toolbar?*/
\r
37 var RHWO_STATUS=0x10; /*need statusbar?*/
\r
38 var RHWO_SCROLLBARS=0x20; /*need scrollbars?*/
\r
45 var gbURLReady=false;
\r
46 var goWnd=new Object();
\r
47 goWnd.sName="whCshDefault";
\r
48 goWnd.nBOptions=RHWO_RESIZABLE|RHWO_SCROLLBARS;
\r
51 goWnd.sBWidth="49%";
\r
52 goWnd.sBHeight="49%";
\r
54 var goFullWnd=new Object();
\r
55 goFullWnd.sName="whDefault";
\r
56 goFullWnd.nBOptions=RHWO_RESIZABLE|RHWO_SCROLLBARS;
\r
57 goFullWnd.sBLeft="20%";
\r
58 goFullWnd.sBTop="0";
\r
59 goFullWnd.sBWidth="79%";
\r
60 goFullWnd.sBHeight="79%";
\r
64 var gbLoadWnd=false;
\r
67 function showCSH(sParam)
\r
73 //with the format #<a=xxx>>b=xxx>>c=xxx...
\r
78 function IsWndReady()
\r
80 if(gaProj[0].nLoadState==0)
\r
82 var sCshFile=_getFullPath(gaProj[0].sProjPath,gCSHFileName);
\r
83 gaProj[0].nLoadState=1;
\r
84 setTimeout("loadFail("+0+");",3000);
\r
85 loadDataCsh(sCshFile);
\r
93 function SwitchURL()
\r
101 sURL=_getPath(document.location.href)+gHomePage+"#"+gsTopicURL;
\r
107 sURL=_getPath(document.location.href)+gHomePage+"#>>cmd="+gnCommand;
\r
109 sURL=_getPath(document.location.href)+gHomePage;
\r
116 if(gaProj[gnCurProj].aWnd)
\r
118 var aWnd=gaProj[gnCurProj].aWnd;
\r
120 for(var i=0;i<aWnd.length;i++)
\r
122 if(aWnd[i].sName.toLowerCase()==gsWindow.toLowerCase())
\r
129 if(!bFound&&gnCurProj!=0)
\r
131 var aWnd=gaProj[0].aWnd;
\r
132 for(var j=0;j<aWnd.length;j++)
\r
134 if(aWnd[j].sName.toLowerCase()==gsWindow.toLowerCase())
\r
148 strURLOpt+=">>cap="+oWnd.sCaption;
\r
150 strURLOpt+=">>pan="+oWnd.nPanes;
\r
151 else if(oWnd.nPanes==2)
\r
153 strURLOpt+=">>pan="+oWnd.nPanes;
\r
155 strURLOpt+=">>pot="+oWnd.nPOptions;
\r
157 strURLOpt+=">>pbs="+oWnd.sPButtons;
\r
159 strURLOpt+=">>pdb="+oWnd.sPDefBtn;
\r
163 if(sURL.indexOf("#")==-1)
\r
167 if(gsJava=="false")
\r
169 var strOpt=getBrowserOptionString(oWnd);
\r
170 var sNewName=convertWindowName(oWnd.sName);
\r
176 goNewWnd=window.open("about:blank",sNewName,strOpt);
\r
177 setTimeout("postWindowNSOpen();",100);
\r
181 window.open("about:blank",sNewName,strOpt);
\r
182 var oNewWnd=window.open(sURL,sNewName);
\r
191 window.open("about:blank",sNewName,strOpt);
\r
192 goNewWnd=window.open(sURL,sNewName);
\r
196 gsURL = sURL; // IE4 had hard time to handle bookmark.
\r
197 goNewWnd=window.open("about:blank",sNewName,strOpt);
\r
199 setTimeout("postWindowOpen();",100);
\r
203 document.location=sURL;
\r
208 function convertWindowName(strName)
\r
210 var strNewName = strName;
\r
211 var strResultName = "";
\r
212 var re=new RegExp("_","g");
\r
213 strNewName = strName.replace(re,"__");
\r
214 for (var i=0;i<strNewName.length;i++)
\r
215 if (!(strNewName[i] == '_' ||
\r
216 (strNewName[i] <= '9' && strNewName[i] >= '0') ||
\r
217 (strNewName[i] <= 'z' && strNewName[i] >= 'a') ||
\r
218 (strNewName[i] <= 'Z' && strNewName[i] >= 'A')))
\r
220 strResultName += "_" + strNewName.charCodeAt(i);
\r
223 strResultName += strNewName[i];
\r
224 return strResultName;
\r
227 function postWindowNSOpen()
\r
232 goNewWnd.document.location.href=gsURL;
\r
238 function postWindowOpen()
\r
242 if (gsURL&&!gbIE5&&gbIE4)
\r
243 goNewWnd.document.location.href=gsURL;
\r
248 function parseParam(sParam)
\r
255 var nPos=sParam.indexOf(">>",nBPos);
\r
260 var sPart=sParam.substring(nBPos,nPos);
\r
267 var sPart=sParam.substring(nBPos);
\r
271 }while(nBPos<sParam.length);
\r
275 function parsePart(sPart)
\r
277 if(sPart.toLowerCase().indexOf("id=")==0)
\r
279 fetchURLById(sPart.substring(3));
\r
282 else if(sPart.toLowerCase().indexOf("str=")==0)
\r
284 fetchURLByStr(sPart.substring(4));
\r
287 else if(sPart.toLowerCase().indexOf("url=")==0)
\r
289 gsTopicURL=sPart.substring(4);
\r
292 else if(sPart.toLowerCase().indexOf("cmd=")==0)
\r
294 var sCmd=sPart.substring(4);
\r
295 if(sCmd.toLowerCase()=="toc")
\r
297 gnCommand=CMD_SHOWTOC;
\r
299 else if(sCmd.toLowerCase()=="idx")
\r
301 gnCommand=CMD_SHOWINDEX;
\r
303 else if(sCmd.toLowerCase()=="fts")
\r
305 gnCommand=CMD_SHOWSEARCH;
\r
307 else if(sCmd.toLowerCase()=="glo")
\r
309 gnCommand=CMD_SHOWGLOSSARY;
\r
311 else if(sCmd.toLowerCase()=="none")
\r
313 gnCommand=CMD_SHOWNONE;
\r
317 else if(sPart.toLowerCase().indexOf("wnd=")==0)
\r
319 gsWindow=_browserStringToText(sPart.substring(4));
\r
321 else if(sPart.toLowerCase().indexOf("java=")==0)
\r
323 gsJava=sPart.substring(5);
\r
327 function fetchURLById(sId)
\r
329 var nId=parseInt(sId);
\r
331 fetchURL("",nId,false);
\r
334 function fetchURLByStr(sStr)
\r
337 fetchURL(sStr,0,true);
\r
340 function fetchURL(sStr,nId,bUseStr)
\r
342 var bNeedLoad=false;
\r
344 for(var i=0;i<gaProj.length;i++)
\r
346 if(gaProj[i].nLoadState==3)
\r
350 for(var j=0;j<gaProj[i].aCsh.length;j++)
\r
355 if(gaProj[i].aCsh[j].strAliasId.toLowerCase()==sStr.toLowerCase())
\r
356 sTopicURL=gaProj[i].aCsh[j].strUrl;
\r
360 if(gaProj[i].aCsh[j].nTopicNum==nId)
\r
361 sTopicURL=gaProj[i].aCsh[j].strUrl;
\r
368 if(gaProj[i].sProjPath.indexOf(gaProj[0].sProjPath)==0)
\r
370 var sRelPath=gaProj[i].sProjPath.substring(gaProj[0].sProjPath.length);
\r
371 gsTopicURL=sRelPath+sTopicURL;
\r
374 gsTopicURL=gaProj[i].sProjPath+sTopicURL;
\r
377 gsTopicURL=sTopicURL;
\r
385 else if(gaProj[i].nLoadState==0)
\r
390 var sCshFile=_getFullPath(gaProj[i].sProjPath,gCSHFileName);
\r
391 gaProj[i].nLoadState=1;
\r
392 setTimeout("loadFail("+i+");",3000);
\r
393 loadDataCsh(sCshFile);
\r
396 if(bFound||bNeedLoad)
\r
406 function loadDataCsh(sFile)
\r
412 window.frames[0].location=sFile;
\r
416 function loadFail(nProj)
\r
418 if(gaProj[nProj].nLoadState==1)
\r
420 gaProj[nProj].nLoadState=2;
\r
422 fetchURL(gsStr,gnId,gbUseStr);
\r
428 function putCshData(strProj,aCsh,aWnd,aRmtProj)
\r
432 strProj=_replaceSlash(strProj);
\r
433 if(strProj.lastIndexOf("/")!=strProj.length-1)
\r
435 for(var i=0;i<gaProj.length;i++)
\r
437 if(gaProj[i].sProjPath)
\r
439 if(isSamePath(gaProj[i].sProjPath,strProj))
\r
441 gaProj[i].nLoadState=3;
\r
442 gaProj[i].aCsh=aCsh;
\r
443 gaProj[i].aWnd=aWnd;
\r
448 if(aRmtProj&&aRmtProj.length)
\r
450 for(var j=0;j<aRmtProj.length;j++)
\r
452 var strRPath=_getFullPath(strProj,aRmtProj[j]);
\r
454 for (var k=0;k<gaProj.length;k++)
\r
456 if(gaProj[k].sProjPath)
\r
458 if(isSamePath(gaProj[k].sProjPath,strRPath))
\r
467 var len=gaProj.length;
\r
468 gaProj[len]=new Object();
\r
469 gaProj[len].sProjPath=strRPath;
\r
470 gaProj[len].nLoadState=0;
\r
475 fetchURL(gsStr,gnId,gbUseStr);
\r
482 function isSamePath(strPath1,strPath2)
\r
484 return strPath1.toLowerCase()==strPath2.toLowerCase();
\r
487 function getRelHomePage(strLocation)
\r
489 var strCurPPath=_getPath(strLocation);
\r
490 var strOriPPath=_getPath(getHomePage());
\r
491 var strRelPath=_getRelativeFileName(strOriPPath,strCurPPath);
\r
492 var strURL=getHomePage()+"#"+strRelPath;
\r
496 function getHomePage()
\r
499 var strTmp=location.toString();
\r
500 var nPos=strTmp.indexOf("#");
\r
503 strHomePage=strTmp.substring(0,nPos);
\r
507 strHomePage=strTmp;
\r
509 return strHomePage;
\r
512 function getBrowserOptionString(oWnd)
\r
515 if(oWnd.bUseDefault)
\r
517 if(oWnd.nBOptions&RHWO_LOCATION)
\r
518 strOpts+="location=yes";
\r
520 strOpts+="location=no";
\r
521 if(oWnd.nBOptions&RHWO_TOOLBAR)
\r
522 strOpts+=",toolbar=yes";
\r
524 strOpts+=",toolbar=no";
\r
525 if(oWnd.nBOptions&RHWO_MENUBAR)
\r
526 strOpts+=",menubar=yes";
\r
528 strOpts+=",menubar=no";
\r
529 if(oWnd.nBOptions&RHWO_STATUS)
\r
530 strOpts+=",status=yes";
\r
532 strOpts+=",status=no";
\r
533 if(oWnd.nBOptions&RHWO_SCROLLBARS)
\r
534 strOpts+=",scrollbars=yes";
\r
536 strOpts+=",scrollbars=no";
\r
537 if(oWnd.nBOptions&RHWO_RESIZABLE)
\r
538 strOpts+=",resizable=yes";
\r
540 strOpts+=",resizable=no";
\r
543 var nTop=getSValue(oWnd.sBTop,screen.height);
\r
544 strOpts+=",top="+nTop;
\r
545 strOpts+=",screenY="+nTop;
\r
549 var nLeft=getSValue(oWnd.sBLeft,screen.width);
\r
550 strOpts+=",left="+nLeft;
\r
551 strOpts+=",screenX="+nLeft;
\r
555 var nWidth=getSValue(oWnd.sBWidth,screen.width);
\r
556 strOpts+=",width="+nWidth;
\r
557 strOpts+=",outerWidth="+nWidth;
\r
561 var nHeight=getSValue(oWnd.sBHeight,screen.height);
\r
562 strOpts+=",height="+nHeight;
\r
563 strOpts+=",outerHeight="+nHeight;
\r
568 function getSValue(sValue,nLength)
\r
571 var nPos=sValue.indexOf("%");
\r
576 var nPart=parseInt(sValue.substring(0,nPos));
\r
577 nValue=nLength*nPart/100;
\r
581 nValue=parseInt(sValue);
\r
586 window.onload=window_OnLoad;
\r
588 function window_OnLoad()
\r
590 if(document.location.hash.length>0)
\r
592 showCSH(document.location.hash.substring(1));
\r
595 if(gsJava=="false")
\r
596 window.moveTo(screen.width,screen.height);
\r