28. Araxis Merge File Comparison Report

Produced by Araxis Merge on Sat May 2 08:30:15 2009 UTC. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a reasonably standards compliant browser such as the latest version of Firefox or Internet Explorer. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.

28.1 Files compared

# Location File Last Modified
1 C:\Documents and Settings\allums\Desktop\2008.4\Formats\WebWorks Help 5.0\Files\wwhelp\wwhimpl\js\scripts index.js Mon Jan 19 18:02:40 2009 UTC
2 C:\Documents and Settings\allums\Desktop\2009.1\Formats\WebWorks Help 5.0\Files\wwhelp\wwhimpl\js\scripts index.js Sat May 2 06:55:40 2009 UTC

28.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 5 3016
Changed 4 11
Inserted 0 0
Removed 0 0

28.3 Comparison options

Whitespace Differences in whitespace are significant
Character case Differences in character case are significant
Line endings Differences in line endings (CR and LF characters) are ignored
CR/LF characters Not shown in the comparison detail

28.4 Active regular expressions

Expression Description
\$(Author|Date|Header|Id|Locker|Name|RCSfile|Revision|Source|State):[^$]*\$ CVS comments

28.5 Comparison detail

1   // Copyrig ht (c) 200 0-2003 Qua dralay Cor poration.   All right s reserved .   1   // Copyrig ht (c) 200 0-2003 Qua dralay Cor poration.   All right s reserved .
2   //   2   //
3     3  
4   function   WWHIndex_O bject()   4   function   WWHIndex_O bject()
5   {   5   {
6     this.mbP anelInitia lized  = f alse;   6     this.mbP anelInitia lized  = f alse;
7     this.mPa nelAnchor         = n ull;   7     this.mPa nelAnchor         = n ull;
8     this.mPa nelTabTitl e      = W WHFrame.WW HJavaScrip t.mMessage s.mTabsInd exLabel;   8     this.mPa nelTabTitl e      = W WHFrame.WW HJavaScrip t.mMessage s.mTabsInd exLabel;
9     this.mPa nelTabInde x      = - 1;   9     this.mPa nelTabInde x      = - 1;
10     this.mPa nelFilenam e      = ( (WWHFrame. WWHBrowser .mBrowser  == 1) ? "p anelfni.ht m" : "pane lfsi.htm") ;   10     this.mPa nelFilenam e      = ( (WWHFrame. WWHBrowser .mBrowser  == 1) ? "p anelfni.ht m" : "pane lfsi.htm") ;
11     this.mIn itIndex           = 0 ;   11     this.mIn itIndex           = 0 ;
12     this.mOp tions             = n ew WWHInde xOptions_O bject();   12     this.mOp tions             = n ew WWHInde xOptions_O bject();
13     this.mTo pEntry            = n ew WWHInde xEntry_Obj ect(false,  -1, null) ;   13     this.mTo pEntry            = n ew WWHInde xEntry_Obj ect(false,  -1, null) ;
14     this.mMa xLevel            = 0 ;   14     this.mMa xLevel            = 0 ;
15     this.mEn tryCount          = 0 ;   15     this.mEn tryCount          = 0 ;
16     this.mSe eAlsoArray        = n ew Array() ;   16     this.mSe eAlsoArray        = n ew Array() ;
17     this.mSe ctionIndex        = 0 ;   17     this.mSe ctionIndex        = 0 ;
18     this.mbT hresholdEx ceeded = n ull;   18     this.mbT hresholdEx ceeded = n ull;
19     this.mSe ctionCache        = n ew WWHSect ionCache_O bject();   19     this.mSe ctionCache        = n ew WWHSect ionCache_O bject();
20     this.mIt erator            = n ew WWHInde xIterator_ Object();   20     this.mIt erator            = n ew WWHInde xIterator_ Object();
21     this.mHT MLSegment         = n ew WWHStri ngBuffer_O bject();   21     this.mHT MLSegment         = n ew WWHStri ngBuffer_O bject();
22     this.mEv entString         = W WHPopup_Ev entString( );   22     this.mEv entString         = W WHPopup_Ev entString( );
23     this.mCl ickedEntry        = n ull;   23     this.mCl ickedEntry        = n ull;
24     24  
25     this.fIn itHeadHTML            = WWHIndex _InitHeadH TML;   25     this.fIn itHeadHTML            = WWHIndex _InitHeadH TML;
26     this.fIn itBodyHTML            = WWHIndex _InitBodyH TML;   26     this.fIn itBodyHTML            = WWHIndex _InitBodyH TML;
27     this.fIn itLoadBook Index      = WWHIndex _InitLoadB ookIndex;   27     this.fIn itLoadBook Index      = WWHIndex _InitLoadB ookIndex;
28     this.fAd dSeeAlsoEn try        = WWHIndex _AddSeeAls oEntry;   28     this.fAd dSeeAlsoEn try        = WWHIndex _AddSeeAls oEntry;
29     this.fPr ocessSeeAl soEntries  = WWHIndex _ProcessSe eAlsoEntri es;   29     this.fPr ocessSeeAl soEntries  = WWHIndex _ProcessSe eAlsoEntri es;
30     this.fNa vigationHe adHTML     = WWHIndex _Navigatio nHeadHTML;   30     this.fNa vigationHe adHTML     = WWHIndex _Navigatio nHeadHTML;
31     this.fNa vigationBo dyHTML     = WWHIndex _Navigatio nBodyHTML;   31     this.fNa vigationBo dyHTML     = WWHIndex _Navigatio nBodyHTML;
32     this.fHe adHTML                = WWHIndex _HeadHTML;   32     this.fHe adHTML                = WWHIndex _HeadHTML;
33     this.fSt artHTMLSeg ments      = WWHIndex _StartHTML Segments;   33     this.fSt artHTMLSeg ments      = WWHIndex _StartHTML Segments;
34     this.fAd vanceHTMLS egment     = WWHIndex _AdvanceHT MLSegment;   34     this.fAd vanceHTMLS egment     = WWHIndex _AdvanceHT MLSegment;
35     this.fGe tHTMLSegme nt         = WWHIndex _GetHTMLSe gment;   35     this.fGe tHTMLSegme nt         = WWHIndex _GetHTMLSe gment;
36     this.fEn dHTMLSegme nts        = WWHIndex _EndHTMLSe gments;   36     this.fEn dHTMLSegme nts        = WWHIndex _EndHTMLSe gments;
37     this.fPa nelNavigat ionLoaded  = WWHIndex _PanelNavi gationLoad ed;   37     this.fPa nelNavigat ionLoaded  = WWHIndex _PanelNavi gationLoad ed;
38     this.fPa nelViewLoa ded        = WWHIndex _PanelView Loaded;   38     this.fPa nelViewLoa ded        = WWHIndex _PanelView Loaded;
39     this.fHo verTextTra nslate     = WWHIndex _HoverText Translate;   39     this.fHo verTextTra nslate     = WWHIndex _HoverText Translate;
40     this.fHo verTextFor mat        = WWHIndex _HoverText Format;   40     this.fHo verTextFor mat        = WWHIndex _HoverText Format;
41     this.fGe tPopupActi on         = WWHIndex _GetPopupA ction;   41     this.fGe tPopupActi on         = WWHIndex _GetPopupA ction;
42     this.fTh resholdExc eeded      = WWHIndex _Threshold Exceeded;   42     this.fTh resholdExc eeded      = WWHIndex _Threshold Exceeded;
43     this.fGe tSectionNa vigation   = WWHIndex _GetSectio nNavigatio n;   43     this.fGe tSectionNa vigation   = WWHIndex _GetSectio nNavigatio n;
44     this.fDi splaySecti on         = WWHIndex _DisplaySe ction;   44     this.fDi splaySecti on         = WWHIndex _DisplaySe ction;
45     this.fSe lectionLis tHeadHTML  = WWHIndex _Selection ListHeadHT ML;   45     this.fSe lectionLis tHeadHTML  = WWHIndex _Selection ListHeadHT ML;
46     this.fSe lectionLis tBodyHTML  = WWHIndex _Selection ListBodyHT ML;   46     this.fSe lectionLis tBodyHTML  = WWHIndex _Selection ListBodyHT ML;
47     this.fSe lectionLis tLoaded    = WWHIndex _Selection ListLoaded ;   47     this.fSe lectionLis tLoaded    = WWHIndex _Selection ListLoaded ;
48     this.fDi splayLink             = WWHIndex _DisplayLi nk;   48     this.fDi splayLink             = WWHIndex _DisplayLi nk;
49     this.fGe tEntry                = WWHIndex _GetEntry;   49     this.fGe tEntry                = WWHIndex _GetEntry;
50     this.fCl ickedEntry            = WWHIndex _ClickedEn try;   50     this.fCl ickedEntry            = WWHIndex _ClickedEn try;
51     this.fCl ickedSeeAl soEntry    = WWHIndex _ClickedSe eAlsoEntry ;   51     this.fCl ickedSeeAl soEntry    = WWHIndex _ClickedSe eAlsoEntry ;
52     52  
53     // Set o ptions   53     // Set o ptions
54     //   54     //
55     WWHJavaS criptSetti ngs_Index_ DisplayOpt ions(this. mOptions);   55     WWHJavaS criptSetti ngs_Index_ DisplayOpt ions(this. mOptions);
56   }   56   }
57     57  
58   function   WWHIndex_I nitHeadHTM L()   58   function   WWHIndex_I nitHeadHTM L()
59   {   59   {
60     var  Ini tHeadHTML  = "";   60     var  Ini tHeadHTML  = "";
61     61  
62     62  
63     return I nitHeadHTM L;   63     return I nitHeadHTM L;
64   }   64   }
65     65  
66   function   WWHIndex_I nitBodyHTM L()   66   function   WWHIndex_I nitBodyHTM L()
67   {   67   {
68     var  Var HTML = new  WWHString Buffer_Obj ect();   68     var  Var HTML = new  WWHString Buffer_Obj ect();
69     var  Var BookList =  WWHFrame. WWHHelp.mB ooks.mBook List;   69     var  Var BookList =  WWHFrame. WWHHelp.mB ooks.mBook List;
70     var  Var Parameters ;   70     var  Var Parameters ;
71     71  
72     72  
73     // Worka round Safa ri reload  bug   73     // Worka round Safa ri reload  bug
74     //   74     //
75     VarParam eters = "" ;   75     VarParam eters = "" ;
76     if (WWHF rame.WWHBr owser.mBro wser == 5)   // Short hhand for  Safari   76     if (WWHF rame.WWHBr owser.mBro wser == 5)   // Short hhand for  Safari
77     {   77     {
78       VarPar ameters =  "?" + (new  Date() *  1);   78       VarPar ameters =  "?" + (new  Date() *  1);
79     }   79     }
80     80  
81     // Displ ay initial izing mess age   81     // Displ ay initial izing mess age
82     //   82     //
83     VarHTML. fAppend("< h2>" + WWH Frame.WWHJ avaScript. mMessages. mInitializ ingMessage  + "</h2>\ n");   83     VarHTML. fAppend("< h2>" + WWH Frame.WWHJ avaScript. mMessages. mInitializ ingMessage  + "</h2>\ n");
84     84  
85     // Load  index data   85     // Load  index data
86     //   86     //
87     this.mIn itIndex =  0;   87     this.mIn itIndex =  0;
88     for (Max Index = Va rBookList. length, In dex = 0 ;  Index < Ma xIndex ; I ndex++)   88     for (Max Index = Va rBookList. length, In dex = 0 ;  Index < Ma xIndex ; I ndex++)
89     {   89     {
90       // Ref erence Ind ex data   90       // Ref erence Ind ex data
91       //   91       //
92       VarHTM L.fAppend( "<script l anguage=\" JavaScript 1.2\" src= \"" + WWHF rame.WWHHe lp.mHelpUR LPrefix +  VarBookLis t[Index].m Directory  + "wwhdata /js/index. js" + VarP arameters  + "\"></sc ript>\n");   92       VarHTM L.fAppend( "<script l anguage=\" JavaScript 1.2\" src= \"" + WWHF rame.WWHHe lp.mHelpUR LPrefix +  VarBookLis t[Index].m Directory  + "wwhdata /js/index. js" + VarP arameters  + "\"></sc ript>\n");
93     93  
94       // Loa d Index da ta for cur rent book   94       // Loa d Index da ta for cur rent book
95       //   95       //
96       VarHTM L.fAppend( "<script l anguage=\" JavaScript 1.2\" src= \"" + WWHF rame.WWHHe lp.mHelpUR LPrefix +  "wwhelp/ww himpl/js/s cripts/ind ex1s.js" +  VarParame ters + "\" ></script> \n");   96       VarHTM L.fAppend( "<script l anguage=\" JavaScript 1.2\" src= \"" + WWHF rame.WWHHe lp.mHelpUR LPrefix +  "wwhelp/ww himpl/js/s cripts/ind ex1s.js" +  VarParame ters + "\" ></script> \n");
97     }   97     }
98     98  
99     return V arHTML.fGe tBuffer();   99     return V arHTML.fGe tBuffer();
100   }   100   }
101     101  
102   function   WWHIndex_I nitLoadBoo kIndex(Par amAddIndex EntriesFun c)   102   function   WWHIndex_I nitLoadBoo kIndex(Par amAddIndex EntriesFun c)
103   {   103   {
104     var  Var MaxIndex;   104     var  Var MaxIndex;
105     var  Var Index;   105     var  Var Index;
106     106  
107     107  
108     // Load  Index   108     // Load  Index
109     //   109     //
110     ParamAdd IndexEntri esFunc(thi s.mTopEntr y);   110     ParamAdd IndexEntri esFunc(thi s.mTopEntr y);
111     111  
112     // Incre ment init  book index   112     // Incre ment init  book index
113     //   113     //
114     this.mIn itIndex++;   114     this.mIn itIndex++;
115     115  
116     // Check  if done   116     // Check  if done
117     //   117     //
118     if (this .mInitInde x == WWHFr ame.WWHHel p.mBooks.m BookList.l ength)   118     if (this .mInitInde x == WWHFr ame.WWHHel p.mBooks.m BookList.l ength)
119     {   119     {
120       // Pro cess see a lso entrie s to set u p links be tween sour ce and tar get   120       // Pro cess see a lso entrie s to set u p links be tween sour ce and tar get
121       // Do  this befor e the top  level hash es are cle ared by th e sort chi ldren call   121       // Do  this befor e the top  level hash es are cle ared by th e sort chi ldren call
122       //   122       //
123       this.f ProcessSee AlsoEntrie s();   123       this.f ProcessSee AlsoEntrie s();
124     124  
125       // Sor t top leve l entries   125       // Sor t top leve l entries
126       //   126       //
127       if (th is.mTopEnt ry.mChildr enSortArra y == null)   127       if (th is.mTopEnt ry.mChildr enSortArra y == null)
128       {   128       {
129         WWHI ndexEntry_ SortChildr en(this.mT opEntry);   129         WWHI ndexEntry_ SortChildr en(this.mT opEntry);
130       }   130       }
131     131  
132       // Ass ign sectio n indices   132       // Ass ign sectio n indices
133       //   133       //
134       for (V arMaxIndex  = this.mT opEntry.mC hildrenSor tArray.len gth, VarIn dex = 0 ;  VarIndex <  VarMaxInd ex ; VarIn dex++)   134       for (V arMaxIndex  = this.mT opEntry.mC hildrenSor tArray.len gth, VarIn dex = 0 ;  VarIndex <  VarMaxInd ex ; VarIn dex++)
135       {   135       {
136         this .mTopEntry .mChildren SortArray[ VarIndex]. mSectionIn dex = VarI ndex;   136         this .mTopEntry .mChildren SortArray[ VarIndex]. mSectionIn dex = VarI ndex;
137       }   137       }
138     138  
139       // Pan el is init ialized   139       // Pan el is init ialized
140       //   140       //
141       this.m bPanelInit ialized =  true;   141       this.m bPanelInit ialized =  true;
142     }   142     }
143   }   143   }
144     144  
145   function   WWHIndex_A ddSeeAlsoE ntry(Param Entry)   145   function   WWHIndex_A ddSeeAlsoE ntry(Param Entry)
146   {   146   {
147     this.mSe eAlsoArray [this.mSee AlsoArray. length] =  ParamEntry ;   147     this.mSe eAlsoArray [this.mSee AlsoArray. length] =  ParamEntry ;
148   }   148   }
149     149  
150   function   WWHIndex_P rocessSeeA lsoEntries ()   150   function   WWHIndex_P rocessSeeA lsoEntries ()
151   {   151   {
152     var  Var MaxIndex;   152     var  Var MaxIndex;
153     var  Var Index;   153     var  Var Index;
154     var  Var Entry;   154     var  Var Entry;
155     var  Var SeeAlsoGro upEntry;   155     var  Var SeeAlsoGro upEntry;
156     var  Var SeeAlsoEnt ry;   156     var  Var SeeAlsoEnt ry;
157     157  
158     158  
159     // Set s ee also re ferences   159     // Set s ee also re ferences
160     //   160     //
161     for (Var MaxIndex =  this.mSee AlsoArray. length, Va rIndex = 0  ; VarInde x < VarMax Index ; Va rIndex++)   161     for (Var MaxIndex =  this.mSee AlsoArray. length, Va rIndex = 0  ; VarInde x < VarMax Index ; Va rIndex++)
162     {   162     {
163       // Acc ess entry   163       // Acc ess entry
164       //   164       //
165       VarEnt ry = this. mSeeAlsoAr ray[VarInd ex];   165       VarEnt ry = this. mSeeAlsoAr ray[VarInd ex];
166     166  
167       // Acc ess group  entry   167       // Acc ess group  entry
168       //   168       //
169       VarSee AlsoGroupE ntry = thi s.mTopEntr y.mChildre n[VarEntry .mSeeAlsoG roupKey +  "~"];   169       VarSee AlsoGroupE ntry = thi s.mTopEntr y.mChildre n[VarEntry .mSeeAlsoG roupKey +  "~"];
170       if ((t ypeof(VarS eeAlsoGrou pEntry) !=  "undefine d") &&   170       if ((t ypeof(VarS eeAlsoGrou pEntry) !=  "undefine d") &&
171           (V arSeeAlsoG roupEntry  != null) & &   171           (V arSeeAlsoG roupEntry  != null) & &
172           (V arSeeAlsoG roupEntry. mChildren  != null))   172           (V arSeeAlsoG roupEntry. mChildren  != null))
173       {   173       {
174         // A ccess see  also entry   174         // A ccess see  also entry
175         //   175         //
176         VarS eeAlsoEntr y = VarSee AlsoGroupE ntry.mChil dren[VarEn try.mSeeAl soKey + "~ "];   176         VarS eeAlsoEntr y = VarSee AlsoGroupE ntry.mChil dren[VarEn try.mSeeAl soKey + "~ "];
177         if ( (typeof(Va rSeeAlsoEn try) != "u ndefined")  &&   177         if ( (typeof(Va rSeeAlsoEn try) != "u ndefined")  &&
178              (VarSeeAls oEntry !=  null))   178              (VarSeeAls oEntry !=  null))
179         {   179         {
180           //  Setup lin ks between  source an d destinat ion   180           //  Setup lin ks between  source an d destinat ion
181           //   181           //
182     182  
183           //  See if ta rget entry  is alread y tagged   183           //  See if ta rget entry  is alread y tagged
184           //   184           //
185           if  (typeof(V arSeeAlsoE ntry.mSeeA lsoTargetN ame) == "u ndefined")   185           if  (typeof(V arSeeAlsoE ntry.mSeeA lsoTargetN ame) == "u ndefined")
186           {   186           {
187              // Update  target ent ry   187              // Update  target ent ry
188              //   188              //
189              VarSeeAlso Entry.mSee AlsoTarget Name = "s"  + VarInde x;   189              VarSeeAlso Entry.mSee AlsoTarget Name = "s"  + VarInde x;
190           }   190           }
191     191  
192           //  Update so urce entry   192           //  Update so urce entry
193           //   193           //
194           Va rEntry.mSe eAlsoTarge tName = Va rSeeAlsoEn try.mSeeAl soTargetNa me;   194           Va rEntry.mSe eAlsoTarge tName = Va rSeeAlsoEn try.mSeeAl soTargetNa me;
195           Va rEntry.mSe eAlsoTarge tGroupID =  VarSeeAls oGroupEntr y.mGroupID ;   195           Va rEntry.mSe eAlsoTarge tGroupID =  VarSeeAls oGroupEntr y.mGroupID ;
196         }   196         }
197       }   197       }
198     }   198     }
199     199  
200     // Clear  see also  array   200     // Clear  see also  array
201     //   201     //
202     this.mSe eAlsoArray  = null;   202     this.mSe eAlsoArray  = null;
203   }   203   }
204     204  
205   function   WWHIndex_N avigationH eadHTML()   205   function   WWHIndex_N avigationH eadHTML()
206   {   206   {
207     var  HTM L = new WW HStringBuf fer_Object ();   207     var  HTM L = new WW HStringBuf fer_Object ();
208     208  
209     209  
210     // Gener ate style  section   210     // Gener ate style  section
211     //   211     //
212     HTML.fAp pend("<sty le type=\" text/css\" >\n");   212     HTML.fAp pend("<sty le type=\" text/css\" >\n");
213     HTML.fAp pend(" <!- -\n");   213     HTML.fAp pend(" <!- -\n");
214     HTML.fAp pend("  a. selected\n ");   214     HTML.fAp pend("  a. selected\n ");
215     HTML.fAp pend("  {\ n");   215     HTML.fAp pend("  {\ n");
216     HTML.fAp pend("     text-decor ation: non e;\n");   216     HTML.fAp pend("     text-decor ation: non e;\n");
217     HTML.fAp pend("     color: " +  WWHFrame. WWHJavaScr ipt.mSetti ngs.mIndex .mNavigati onCurrentC olor + ";\ n");   217     HTML.fAp pend("     color: " +  WWHFrame. WWHJavaScr ipt.mSetti ngs.mIndex .mNavigati onCurrentC olor + ";\ n");
218     HTML.fAp pend("  }\ n");   218     HTML.fAp pend("  }\ n");
219     HTML.fAp pend("  a. enabled\n" );   219     HTML.fAp pend("  a. enabled\n" );
220     HTML.fAp pend("  {\ n");   220     HTML.fAp pend("  {\ n");
221     HTML.fAp pend("     text-decor ation: non e;\n");   221     HTML.fAp pend("     text-decor ation: non e;\n");
222     HTML.fAp pend("     color: " +  WWHFrame. WWHJavaScr ipt.mSetti ngs.mIndex .mNavigati onEnabledC olor + ";\ n");   222     HTML.fAp pend("     color: " +  WWHFrame. WWHJavaScr ipt.mSetti ngs.mIndex .mNavigati onEnabledC olor + ";\ n");
223     HTML.fAp pend("  }\ n");   223     HTML.fAp pend("  }\ n");
224     HTML.fAp pend("  p. navigation \n");   224     HTML.fAp pend("  p. navigation \n");
225     HTML.fAp pend("  {\ n");   225     HTML.fAp pend("  {\ n");
226     HTML.fAp pend("     margin-top : 1pt;\n") ;   226     HTML.fAp pend("     margin-top : 1pt;\n") ;
227     HTML.fAp pend("     margin-bot tom: 1pt;\ n");   227     HTML.fAp pend("     margin-bot tom: 1pt;\ n");
228     HTML.fAp pend("     color: " +  WWHFrame. WWHJavaScr ipt.mSetti ngs.mIndex .mNavigati onDisabled Color + "; \n");   228     HTML.fAp pend("     color: " +  WWHFrame. WWHJavaScr ipt.mSetti ngs.mIndex .mNavigati onDisabled Color + "; \n");
229     HTML.fAp pend("     " + WWHFra me.WWHJava Script.mSe ttings.mIn dex.mNavig ationFontS tyle + ";\ n");   229     HTML.fAp pend("     " + WWHFra me.WWHJava Script.mSe ttings.mIn dex.mNavig ationFontS tyle + ";\ n");
230     HTML.fAp pend("  }\ n");   230     HTML.fAp pend("  }\ n");
231     HTML.fAp pend(" --> \n");   231     HTML.fAp pend(" --> \n");
232     HTML.fAp pend("</st yle>\n");   232     HTML.fAp pend("</st yle>\n");
233     233  
234     return H TML.fGetBu ffer();   234     return H TML.fGetBu ffer();
235   }   235   }
236     236  
237   function   WWHIndex_N avigationB odyHTML()   237   function   WWHIndex_N avigationB odyHTML()
238   {   238   {
239     var  HTM L = new WW HStringBuf fer_Object ();   239     var  HTM L = new WW HStringBuf fer_Object ();
240     var  Var CacheKey;   240     var  Var CacheKey;
241     241  
242     242  
243     // Defin e accessor  functions  to reduce  file size   243     // Defin e accessor  functions  to reduce  file size
244     //   244     //
245     HTML.fAp pend("<scr ipt type=\ "text/java script\" l anguage=\" JavaScript 1.2\">\n") ;   245     HTML.fAp pend("<scr ipt type=\ "text/java script\" l anguage=\" JavaScript 1.2\">\n") ;
246     HTML.fAp pend(" <!- -\n");   246     HTML.fAp pend(" <!- -\n");
247     HTML.fAp pend("  fu nction  fD (ParamSect ionIndex)\ n");   247     HTML.fAp pend("  fu nction  fD (ParamSect ionIndex)\ n");
248     HTML.fAp pend("  {\ n");   248     HTML.fAp pend("  {\ n");
249     HTML.fAp pend("     WWHFrame.W WHIndex.fD isplaySect ion(ParamS ectionInde x);\n");   249     HTML.fAp pend("     WWHFrame.W WHIndex.fD isplaySect ion(ParamS ectionInde x);\n");
250     HTML.fAp pend("  }\ n");   250     HTML.fAp pend("  }\ n");
251     HTML.fAp pend(" //  -->\n");   251     HTML.fAp pend(" //  -->\n");
252     HTML.fAp pend("</sc ript>\n");   252     HTML.fAp pend("</sc ript>\n");
253     253  
254     // Displ ay navigat ion shortc uts   254     // Displ ay navigat ion shortc uts
255     //   255     //
256     if (this .fThreshol dExceeded( ))   256     if (this .fThreshol dExceeded( ))
257     {   257     {
258       VarCac heKey = th is.mSectio nIndex;   258       VarCac heKey = th is.mSectio nIndex;
259     }   259     }
260     else   260     else
261     {   261     {
262       VarCac heKey = -1 ;   262       VarCac heKey = -1 ;
263     }   263     }
264     264  
265     // Calcu late secti on navigat ion if not  already c ached   265     // Calcu late secti on navigat ion if not  already c ached
266     //   266     //
267     if (type of(this.mS ectionCach e[VarCache Key]) == " undefined" )   267     if (type of(this.mS ectionCach e[VarCache Key]) == " undefined" )
268     {   268     {
269       this.m SectionCac he[VarCach eKey] = th is.fGetSec tionNaviga tion();   269       this.m SectionCac he[VarCach eKey] = th is.fGetSec tionNaviga tion();
270     }   270     }
271     271  
272     // Displ ay section  selection   272     // Displ ay section  selection
273     //   273     //
274     HTML.fAp pend(this. mSectionCa che[VarCac heKey]);   274     HTML.fAp pend(this. mSectionCa che[VarCac heKey]);
275     HTML.fAp pend("<p>& nbsp;</p>\ n");   275     HTML.fAp pend("<p>& nbsp;</p>\ n");
276     276  
277     return H TML.fGetBu ffer();   277     return H TML.fGetBu ffer();
278   }   278   }
279     279  
280   function   WWHIndex_H eadHTML()   280   function   WWHIndex_H eadHTML()
281   {   281   {
282     var  HTM L = new WW HStringBuf fer_Object ();   282     var  HTM L = new WW HStringBuf fer_Object ();
283     var  Max Level;   283     var  Max Level;
284     var  Lev el;   284     var  Lev el;
285     285  
286     // Gener ate style  section   286     // Gener ate style  section
287     //   287     //
288     HTML.fAp pend("<sty le type=\" text/css\" >\n");   288     HTML.fAp pend("<sty le type=\" text/css\" >\n");
289     HTML.fAp pend(" <!- -\n");   289     HTML.fAp pend(" <!- -\n");
290     HTML.fAp pend("  a. Section\n" );   290     HTML.fAp pend("  a. Section\n" );
291     HTML.fAp pend("  {\ n");   291     HTML.fAp pend("  {\ n");
292     HTML.fAp pend("     text-decor ation: non e;\n");   292     HTML.fAp pend("     text-decor ation: non e;\n");
293     HTML.fAp pend("     font-weigh t: bold;\n ");   293     HTML.fAp pend("     font-weigh t: bold;\n ");
294     HTML.fAp pend("  }\ n");   294     HTML.fAp pend("  }\ n");
295     HTML.fAp pend("  a: active\n") ;   295     HTML.fAp pend("  a: active\n") ;
296     HTML.fAp pend("  {\ n");   296     HTML.fAp pend("  {\ n");
297     HTML.fAp pend("     text-decor ation: non e;\n");   297     HTML.fAp pend("     text-decor ation: non e;\n");
298     HTML.fAp pend("     background -color: "  + WWHFrame .WWHJavaSc ript.mSett ings.mInde x.mHighlig htColor +  ";\n");   298     HTML.fAp pend("     background -color: "  + WWHFrame .WWHJavaSc ript.mSett ings.mInde x.mHighlig htColor +  ";\n");
299     HTML.fAp pend("  }\ n");   299     HTML.fAp pend("  }\ n");
300     HTML.fAp pend("  a: hover\n");   300     HTML.fAp pend("  a: hover\n");
301     HTML.fAp pend("  {\ n");   301     HTML.fAp pend("  {\ n");
302     HTML.fAp pend("     text-decor ation: und erline;\n" );   302     HTML.fAp pend("     text-decor ation: und erline;\n" );
303     HTML.fAp pend("     color: " +  WWHFrame. WWHJavaScr ipt.mSetti ngs.mIndex .mEnabledC olor + ";\ n");   303     HTML.fAp pend("     color: " +  WWHFrame. WWHJavaScr ipt.mSetti ngs.mIndex .mEnabledC olor + ";\ n");
304     HTML.fAp pend("  }\ n");   304     HTML.fAp pend("  }\ n");
305     HTML.fAp pend("  a\ n");   305     HTML.fAp pend("  a\ n");
306     HTML.fAp pend("  {\ n");   306     HTML.fAp pend("  {\ n");
307     HTML.fAp pend("     text-decor ation: non e;\n");   307     HTML.fAp pend("     text-decor ation: non e;\n");
308     HTML.fAp pend("     color: " +  WWHFrame. WWHJavaScr ipt.mSetti ngs.mIndex .mEnabledC olor + ";\ n");   308     HTML.fAp pend("     color: " +  WWHFrame. WWHJavaScr ipt.mSetti ngs.mIndex .mEnabledC olor + ";\ n");
309     HTML.fAp pend("  }\ n");   309     HTML.fAp pend("  }\ n");
310     HTML.fAp pend("  a. AnchorOnly \n");   310     HTML.fAp pend("  a. AnchorOnly \n");
311     HTML.fAp pend("  {\ n");   311     HTML.fAp pend("  {\ n");
312     HTML.fAp pend("     text-decor ation: non e;\n");   312     HTML.fAp pend("     text-decor ation: non e;\n");
313     HTML.fAp pend("     color: " +  WWHFrame. WWHJavaScr ipt.mSetti ngs.mIndex .mDisabled Color + "; \n");   313     HTML.fAp pend("     color: " +  WWHFrame. WWHJavaScr ipt.mSetti ngs.mIndex .mDisabled Color + "; \n");
314     HTML.fAp pend("  }\ n");   314     HTML.fAp pend("  }\ n");
315     HTML.fAp pend("  p\ n");   315     HTML.fAp pend("  p\ n");
316     HTML.fAp pend("  {\ n");   316     HTML.fAp pend("  {\ n");
317     HTML.fAp pend("     margin-top : 1pt;\n") ;   317     HTML.fAp pend("     margin-top : 1pt;\n") ;
318     HTML.fAp pend("     margin-bot tom: 1pt;\ n");   318     HTML.fAp pend("     margin-bot tom: 1pt;\ n");
319     HTML.fAp pend("     color: " +  WWHFrame. WWHJavaScr ipt.mSetti ngs.mIndex .mDisabled Color + "; \n");   319     HTML.fAp pend("     color: " +  WWHFrame. WWHJavaScr ipt.mSetti ngs.mIndex .mDisabled Color + "; \n");
320     HTML.fAp pend("     " + WWHFra me.WWHJava Script.mSe ttings.mIn dex.mFontS tyle + ";\ n");   320     HTML.fAp pend("     " + WWHFra me.WWHJava Script.mSe ttings.mIn dex.mFontS tyle + ";\ n");
321     HTML.fAp pend("  }\ n");   321     HTML.fAp pend("  }\ n");
322     322  
323     for (Max Level = th is.mMaxLev el + 1, Le vel = 0 ;  Level <= M axLevel ;  Level++)   323     for (Max Level = th is.mMaxLev el + 1, Le vel = 0 ;  Level <= M axLevel ;  Level++)
324     {   324     {
325       HTML.f Append("   p.l" + Lev el + "\n") ;   325       HTML.f Append("   p.l" + Lev el + "\n") ;
326       HTML.f Append("   {\n");   326       HTML.f Append("   {\n");
327       HTML.f Append("     margin-l eft: " + ( WWHFrame.W WHJavaScri pt.mSettin gs.mIndex. mIndent *  Level) + " pt;\n");   327       HTML.f Append("     margin-l eft: " + ( WWHFrame.W WHJavaScri pt.mSettin gs.mIndex. mIndent *  Level) + " pt;\n");
328       HTML.f Append("   }\n");   328       HTML.f Append("   }\n");
329     }   329     }
330     HTML.fAp pend(" --> \n");   330     HTML.fAp pend(" --> \n");
331     HTML.fAp pend("</st yle>\n");   331     HTML.fAp pend("</st yle>\n");
332     332  
333     return H TML.fGetBu ffer();   333     return H TML.fGetBu ffer();
334   }   334   }
335     335  
336   function   WWHIndex_S tartHTMLSe gments()   336   function   WWHIndex_S tartHTMLSe gments()
337   {   337   {
338     var  HTM L = new WW HStringBuf fer_Object ();   338     var  HTM L = new WW HStringBuf fer_Object ();
339     339  
340     340  
341     // Setup  iterator  for displa y   341     // Setup  iterator  for displa y
342     //   342     //
343     if (this .fThreshol dExceeded( ))   343     if (this .fThreshol dExceeded( ))
344     {   344     {
345       this.m Iterator.f Reset(this .mSectionI ndex);   345       this.m Iterator.f Reset(this .mSectionI ndex);
346     }   346     }
347     else   347     else
348     {   348     {
349       this.m Iterator.f Reset(-1);   349       this.m Iterator.f Reset(-1);
350     }   350     }
351     351  
352     // Defin e accessor  functions  to reduce  file size   352     // Defin e accessor  functions  to reduce  file size
353     //   353     //
354     HTML.fAp pend("<scr ipt type=\ "text/java script\" l anguage=\" JavaScript 1.2\">\n") ;   354     HTML.fAp pend("<scr ipt type=\ "text/java script\" l anguage=\" JavaScript 1.2\">\n") ;
355     HTML.fAp pend(" <!- -\n");   355     HTML.fAp pend(" <!- -\n");
356     HTML.fAp pend("  fu nction  fC (ParamEntr yInfo)\n") ;   356     HTML.fAp pend("  fu nction  fC (ParamEntr yInfo)\n") ;
357     HTML.fAp pend("  {\ n");   357     HTML.fAp pend("  {\ n");
358     HTML.fAp pend("     WWHFrame.W WHIndex.fC lickedEntr y(ParamEnt ryInfo);\n ");   358     HTML.fAp pend("     WWHFrame.W WHIndex.fC lickedEntr y(ParamEnt ryInfo);\n ");
359     HTML.fAp pend("  }\ n");   359     HTML.fAp pend("  }\ n");
360     HTML.fAp pend("\n") ;   360     HTML.fAp pend("\n") ;
361     HTML.fAp pend("  fu nction  fA (ParamEntr yInfo)\n") ;   361     HTML.fAp pend("  fu nction  fA (ParamEntr yInfo)\n") ;
362     HTML.fAp pend("  {\ n");   362     HTML.fAp pend("  {\ n");
363     HTML.fAp pend("     WWHFrame.W WHIndex.fC lickedSeeA lsoEntry(P aramEntryI nfo);\n");   363     HTML.fAp pend("     WWHFrame.W WHIndex.fC lickedSeeA lsoEntry(P aramEntryI nfo);\n");
364     HTML.fAp pend("  }\ n");   364     HTML.fAp pend("  }\ n");
365     HTML.fAp pend("\n") ;   365     HTML.fAp pend("\n") ;
366     HTML.fAp pend("  fu nction  fN ()\n");   366     HTML.fAp pend("  fu nction  fN ()\n");
367     HTML.fAp pend("  {\ n");   367     HTML.fAp pend("  {\ n");
368     HTML.fAp pend("     return fal se;\n");   368     HTML.fAp pend("     return fal se;\n");
369     HTML.fAp pend("  }\ n");   369     HTML.fAp pend("  }\ n");
370     HTML.fAp pend("\n") ;   370     HTML.fAp pend("\n") ;
371     HTML.fAp pend("  fu nction  fS (ParamEntr yID,\n");   371     HTML.fAp pend("  fu nction  fS (ParamEntr yID,\n");
372     HTML.fAp pend("                 ParamEven t)\n");   372     HTML.fAp pend("                 ParamEven t)\n");
373     HTML.fAp pend("  {\ n");   373     HTML.fAp pend("  {\ n");
374     HTML.fAp pend("     WWHFrame.W WHJavaScri pt.mPanels .mPopup.fS how(ParamE ntryID, Pa ramEvent); \n");   374     HTML.fAp pend("     WWHFrame.W WHJavaScri pt.mPanels .mPopup.fS how(ParamE ntryID, Pa ramEvent); \n");
375     HTML.fAp pend("  }\ n");   375     HTML.fAp pend("  }\ n");
376     HTML.fAp pend("\n") ;   376     HTML.fAp pend("\n") ;
377     HTML.fAp pend("  fu nction  fH ()\n");   377     HTML.fAp pend("  fu nction  fH ()\n");
378     HTML.fAp pend("  {\ n");   378     HTML.fAp pend("  {\ n");
379     HTML.fAp pend("     WWHFrame.W WHJavaScri pt.mPanels .mPopup.fH ide();\n") ;   379     HTML.fAp pend("     WWHFrame.W WHJavaScri pt.mPanels .mPopup.fH ide();\n") ;
380     HTML.fAp pend("  }\ n");   380     HTML.fAp pend("  }\ n");
381     HTML.fAp pend(" //  -->\n");   381     HTML.fAp pend(" //  -->\n");
382     HTML.fAp pend("</sc ript>\n");   382     HTML.fAp pend("</sc ript>\n");
383     383  
384     return H TML.fGetBu ffer();   384     return H TML.fGetBu ffer();
385   }   385   }
386     386  
387   function   WWHIndex_A dvanceHTML Segment()   387   function   WWHIndex_A dvanceHTML Segment()
388   {   388   {
389     var  Max HTMLSegmen tSize = WW HFrame.WWH JavaScript .mMaxHTMLS egmentSize ;   389     var  Max HTMLSegmen tSize = WW HFrame.WWH JavaScript .mMaxHTMLS egmentSize ;
390     var  mbA ccessible  = WWHFrame .WWHHelp.m bAccessibl e;   390     var  mbA ccessible  = WWHFrame .WWHHelp.m bAccessibl e;
391     var  Bas eEntryInfo  = "";   391     var  Bas eEntryInfo  = "";
392     var  Ent ry;   392     var  Ent ry;
393     var  Ent ryAnchorNa me;   393     var  Ent ryAnchorNa me;
394     var  Var Accessibil ityTitle =  "";   394     var  Var Accessibil ityTitle =  "";
395     var  Max Index;   395     var  Max Index;
396     var  Ind ex;   396     var  Ind ex;
397     var  Var ParentEntr y;   397     var  Var ParentEntr y;
398     var  Ent ryPrefix;   398     var  Ent ryPrefix;
399     var  Ent rySuffix;   399     var  Ent rySuffix;
400     var  Ent ryInfo;   400     var  Ent ryInfo;
401     401  
402     402  
403     // Add i ndex in to p entry to  entry inf o if Itera torScope ! = TopEntry   403     // Add i ndex in to p entry to  entry inf o if Itera torScope ! = TopEntry
404     //   404     //
405     if (this .fThreshol dExceeded( ))   405     if (this .fThreshol dExceeded( ))
406     {   406     {
407       BaseEn tryInfo +=  this.mSec tionIndex;   407       BaseEn tryInfo +=  this.mSec tionIndex;
408     }   408     }
409     409  
410     this.mHT MLSegment. fReset();   410     this.mHT MLSegment. fReset();
411     while (( this.mHTML Segment.fS ize() < Ma xHTMLSegme ntSize) &&   411     while (( this.mHTML Segment.fS ize() < Ma xHTMLSegme ntSize) &&
412            ( this.mIter ator.fAdva nce()))   412            ( this.mIter ator.fAdva nce()))
413     {   413     {
414       Entry  = this.mIt erator.mEn try;   414       Entry  = this.mIt erator.mEn try;
415     415  
416       // Ins ert breaks  between s ections   416       // Ins ert breaks  between s ections
417       //   417       //
418       if (En try.mbGrou p)   418       if (En try.mbGrou p)
419       {   419       {
420         // E mit spacin g, if nece ssary   420         // E mit spacin g, if nece ssary
421         //   421         //
422         if ( this.mHTML Segment.fS ize() == 0 )   422         if ( this.mHTML Segment.fS ize() == 0 )
423         {   423         {
424           //  No spacin g   424           //  No spacin g
425           //   425           //
426         }   426         }
427         else   427         else
428         {   428         {
429           //  Emit a sp ace   429           //  Emit a sp ace
430           //   430           //
431           th is.mHTMLSe gment.fApp end("<p>&n bsp;</p>\n ");   431           th is.mHTMLSe gment.fApp end("<p>&n bsp;</p>\n ");
432         }   432         }
433       }   433       }
434     434  
435       // Dis play the e ntry   435       // Dis play the e ntry
436       //   436       //
437     437  
438       // See  if entry  needs a na med anchor  target   438       // See  if entry  needs a na med anchor  target
439       //   439       //
440       if (ty peof(Entry .mSeeAlsoT argetName)  == "strin g")   440       if (ty peof(Entry .mSeeAlsoT argetName)  == "strin g")
441       {   441       {
442         Entr yAnchorNam e = " name =\"sa" + E ntry.mSeeA lsoTargetN ame + "\"" ;   442         Entr yAnchorNam e = " name =\"sa" + E ntry.mSeeA lsoTargetN ame + "\"" ;
443       }   443       }
444       else   444       else
445       {   445       {
446         Entr yAnchorNam e = "";   446         Entr yAnchorNam e = "";
447       }   447       }
448     448  
449       // Det ermine acc essibility  title   449       // Det ermine acc essibility  title
450       //   450       //
451       if (mb Accessible )   451       if (mb Accessible )
452       {   452       {
453         VarA ccessibili tyTitle =  "";   453         VarA ccessibili tyTitle =  "";
454         for  (MaxIndex  = this.mIt erator.mPa rentStack. length, In dex = 0 ;  Index < Ma xIndex ; I ndex++)   454         for  (MaxIndex  = this.mIt erator.mPa rentStack. length, In dex = 0 ;  Index < Ma xIndex ; I ndex++)
455         {   455         {
456           Va rParentEnt ry = this. mIterator. mParentSta ck[Index];   456           Va rParentEnt ry = this. mIterator. mParentSta ck[Index];
457     457  
458           if  ((VarPare ntEntry ==  this.mTop Entry) ||   458           if  ((VarPare ntEntry ==  this.mTop Entry) ||
459                (VarPare ntEntry.mb Group))   459                (VarPare ntEntry.mb Group))
460           {   460           {
461              // Nothing  to do   461              // Nothing  to do
462              //   462              //
463           }   463           }
464           el se   464           el se
465           {   465           {
466              VarAccessi bilityTitl e += VarPa rentEntry. mText + WW HFrame.WWH Help.mMess ages.mAcce ssibilityL istSeparat or + " ";   466              VarAccessi bilityTitl e += VarPa rentEntry. mText + WW HFrame.WWH Help.mMess ages.mAcce ssibilityL istSeparat or + " ";
467           }   467           }
468         }   468         }
469     469  
470         VarA ccessibili tyTitle +=  Entry.mTe xt;   470         VarA ccessibili tyTitle +=  Entry.mTe xt;
471     471  
472         VarA ccessibili tyTitle =  WWHStringU tilities_E scapeHTML( VarAccessi bilityTitl e);   472         VarA ccessibili tyTitle =  WWHStringU tilities_E scapeHTML( VarAccessi bilityTitl e);
473     473  
474         VarA ccessibili tyTitle =  " title=\" " + VarAcc essibility Title + "\ "";   474         VarA ccessibili tyTitle =  " title=\" " + VarAcc essibility Title + "\ "";
475       }   475       }
476     476  
477       // Det ermine ent ry type   477       // Det ermine ent ry type
478       //   478       //
479       if (En try.mbGrou p)   479       if (En try.mbGrou p)
480       {   480       {
481         Entr yPrefix =  "<b><a cla ss=\"Secti on\" name= \"section"  + Entry.m SectionInd ex + "\">" ;   481         Entr yPrefix =  "<b><a cla ss=\"Secti on\" name= \"section"  + Entry.m SectionInd ex + "\">" ;
482         Entr ySuffix =  "</a></b>" ;   482         Entr ySuffix =  "</a></b>" ;
483       }   483       }
484       else i f (typeof( Entry.mSee AlsoKey) = = "string" )   484       else i f (typeof( Entry.mSee AlsoKey) = = "string" )
485       {   485       {
486         if ( typeof(Ent ry.mSeeAls oTargetNam e) == "str ing")   486         if ( typeof(Ent ry.mSeeAls oTargetNam e) == "str ing")
487         {   487         {
488           //  Use posit ion stack  for link i nfo   488           //  Use posit ion stack  for link i nfo
489           //   489           //
490           En tryInfo =  BaseEntryI nfo;   490           En tryInfo =  BaseEntryI nfo;
491           fo r (MaxInde x = this.m Iterator.m PositionSt ack.length , Index =  0 ; Index  < MaxIndex  ; Index++ )   491           fo r (MaxInde x = this.m Iterator.m PositionSt ack.length , Index =  0 ; Index  < MaxIndex  ; Index++ )
492           {   492           {
493              if (EntryI nfo.length  > 0)   493              if (EntryI nfo.length  > 0)
494              {   494              {
495                EntryInf o += ":";   495                EntryInf o += ":";
496              }   496              }
497              EntryInfo  += this.mI terator.mP ositionSta ck[Index];   497              EntryInfo  += this.mI terator.mP ositionSta ck[Index];
498           }   498           }
499     499  
500           En tryPrefix  = "<i><a h ref=\"java script:fA( '" + Entry Info + "') ;\"" + thi s.fGetPopu pAction(En tryInfo) +  VarAccess ibilityTit le + ">";   500           En tryPrefix  = "<i><a h ref=\"java script:fA( '" + Entry Info + "') ;\"" + thi s.fGetPopu pAction(En tryInfo) +  VarAccess ibilityTit le + ">";
501           En trySuffix  = "</a></i >";   501           En trySuffix  = "</a></i >";
502         }   502         }
503         else   503         else
504         {   504         {
505           En tryPrefix  = "<i>";   505           En tryPrefix  = "<i>";
506           En trySuffix  = "</i>";   506           En trySuffix  = "</i>";
507         }   507         }
508       }   508       }
509       else i f (Entry.m BookLinks  != null)   509       else i f (Entry.m BookLinks  != null)
510       {   510       {
511         // U se positio n stack fo r link inf o   511         // U se positio n stack fo r link inf o
512         //   512         //
513         Entr yInfo = Ba seEntryInf o;   513         Entr yInfo = Ba seEntryInf o;
514         for  (MaxIndex  = this.mIt erator.mPo sitionStac k.length,  Index = 0  ; Index <  MaxIndex ;  Index++)   514         for  (MaxIndex  = this.mIt erator.mPo sitionStac k.length,  Index = 0  ; Index <  MaxIndex ;  Index++)
515         {   515         {
516           if  (EntryInf o.length >  0)   516           if  (EntryInf o.length >  0)
517           {   517           {
518              EntryInfo  += ":";   518              EntryInfo  += ":";
519           }   519           }
520           En tryInfo +=  this.mIte rator.mPos itionStack [Index];   520           En tryInfo +=  this.mIte rator.mPos itionStack [Index];
521         }   521         }
522     522  
523         Entr yPrefix =  "<a" + Ent ryAnchorNa me + " hre f=\"javasc ript:fC('"  + EntryIn fo + "');\ "" + this. fGetPopupA ction(Entr yInfo) + V arAccessib ilityTitle  + ">";   523         Entr yPrefix =  "<a" + Ent ryAnchorNa me + " hre f=\"javasc ript:fC('"  + EntryIn fo + "');\ "" + this. fGetPopupA ction(Entr yInfo) + V arAccessib ilityTitle  + ">";
524         Entr ySuffix =  "</a>";   524         Entr ySuffix =  "</a>";
525       }   525       }
526       else i f (EntryAn chorName.l ength > 0)   526       else i f (EntryAn chorName.l ength > 0)
527       {   527       {
528         Entr yPrefix =  "<a class= \"AnchorOn ly\"" + En tryAnchorN ame + VarA ccessibili tyTitle +  " href=\"j avascript: fN();\">";   528         Entr yPrefix =  "<a class= \"AnchorOn ly\"" + En tryAnchorN ame + VarA ccessibili tyTitle +  " href=\"j avascript: fN();\">";
529         Entr ySuffix =  "</a>";   529         Entr ySuffix =  "</a>";
530       }   530       }
531       else   531       else
532       {   532       {
533         Entr yPrefix =  "";   533         Entr yPrefix =  "";
534         Entr ySuffix =  "";   534         Entr ySuffix =  "";
535       }   535       }
536     536  
537       this.m HTMLSegmen t.fAppend( "<p class= l" + (this .mIterator .mPosition Stack.leng th - 1) +  "><nobr>"  + EntryPre fix + Entr y.mText +  EntrySuffi x + "</nob r></p>\n") ;   537       this.m HTMLSegmen t.fAppend( "<p class= l" + (this .mIterator .mPosition Stack.leng th - 1) +  "><nobr>"  + EntryPre fix + Entr y.mText +  EntrySuffi x + "</nob r></p>\n") ;
538     }   538     }
539     539  
540     return ( this.mHTML Segment.fS ize() > 0) ;   540     return ( this.mHTML Segment.fS ize() > 0) ;
541   }   541   }
542     542  
543   function   WWHIndex_G etHTMLSegm ent()   543   function   WWHIndex_G etHTMLSegm ent()
544   {   544   {
545     return t his.mHTMLS egment.fGe tBuffer();   545     return t his.mHTMLS egment.fGe tBuffer();
546   }   546   }
547     547  
548   function   WWHIndex_E ndHTMLSegm ents()   548   function   WWHIndex_E ndHTMLSegm ents()
549   {   549   {
550     return " ";   550     return " ";
551   }   551   }
552     552  
553   function   WWHIndex_P anelNaviga tionLoaded ()   553   function   WWHIndex_P anelNaviga tionLoaded ()
554   {   554   {
555     // Resto re focus   555     // Resto re focus
556     //   556     //
557     WWHFrame .WWHHelp.f Focus("WWH PanelNavig ationFrame ", "in" +  this.mSect ionIndex);   557     WWHFrame .WWHHelp.f Focus("WWH PanelNavig ationFrame ", "in" +  this.mSect ionIndex);
558   }   558   }
559     559  
560   function   WWHIndex_P anelViewLo aded()   560   function   WWHIndex_P anelViewLo aded()
561   {   561   {
562   }   562   }
563     563  
564   function   WWHIndex_H overTextTr anslate(Pa ramEntryIn fo)   564   function   WWHIndex_H overTextTr anslate(Pa ramEntryIn fo)
565   {   565   {
566     var  Ent ry;   566     var  Ent ry;
567     567  
568     568  
569     // Locat e specifie d entry   569     // Locat e specifie d entry
570     //   570     //
571     Entry =  this.fGetE ntry(Param EntryInfo) ;   571     Entry =  this.fGetE ntry(Param EntryInfo) ;
572     572  
573     return E ntry.mText ;   573     return E ntry.mText ;
574   }   574   }
575     575  
576   function   WWHIndex_H overTextFo rmat(Param Width,   576   function   WWHIndex_H overTextFo rmat(Param Width,
577                                         Param TextID,   577                                         Param TextID,
578                                         Param Text)   578                                         Param Text)
579   {   579   {
580     var  For mattedText    = "";   580     var  For mattedText    = "";
581     var  For egroundCol or = WWHFr ame.WWHJav aScript.mS ettings.mH overText.m Foreground Color;   581     var  For egroundCol or = WWHFr ame.WWHJav aScript.mS ettings.mH overText.m Foreground Color;
582     var  Bac kgroundCol or = WWHFr ame.WWHJav aScript.mS ettings.mH overText.m Background Color;   582     var  Bac kgroundCol or = WWHFr ame.WWHJav aScript.mS ettings.mH overText.m Background Color;
583     var  Bor derColor      = WWHFr ame.WWHJav aScript.mS ettings.mH overText.m BorderColo r;   583     var  Bor derColor      = WWHFr ame.WWHJav aScript.mS ettings.mH overText.m BorderColo r;
584     var  Ima geDir         = WWHFr ame.WWHHel p.mHelpURL Prefix + " wwhelp/wwh impl/commo n/images";   584     var  Ima geDir         = WWHFr ame.WWHHel p.mHelpURL Prefix + " wwhelp/wwh impl/commo n/images";
585     var  Req Spacer1w2h    = "<img  src=\"" +  ImageDir  + "/spc1w2 h.gif\" wi dth=1 heig ht=2 alt=\ "\">";   585     var  Req Spacer1w2h    = "<img  src=\"" +  ImageDir  + "/spc1w2 h.gif\" wi dth=1 heig ht=2 alt=\ "\">";
586     var  Req Spacer2w1h    = "<img  src=\"" +  ImageDir  + "/spc2w1 h.gif\" wi dth=2 heig ht=1 alt=\ "\">";   586     var  Req Spacer2w1h    = "<img  src=\"" +  ImageDir  + "/spc2w1 h.gif\" wi dth=2 heig ht=1 alt=\ "\">";
587     var  Req Spacer1w7h    = "<img  src=\"" +  ImageDir  + "/spc1w7 h.gif\" wi dth=1 heig ht=7 alt=\ "\">";   587     var  Req Spacer1w7h    = "<img  src=\"" +  ImageDir  + "/spc1w7 h.gif\" wi dth=1 heig ht=7 alt=\ "\">";
588     var  Req Spacer5w1h    = "<img  src=\"" +  ImageDir  + "/spc5w1 h.gif\" wi dth=5 heig ht=1 alt=\ "\">";   588     var  Req Spacer5w1h    = "<img  src=\"" +  ImageDir  + "/spc5w1 h.gif\" wi dth=5 heig ht=1 alt=\ "\">";
589     var  Spa cer1w2h       = ReqSp acer1w2h;   589     var  Spa cer1w2h       = ReqSp acer1w2h;
590     var  Spa cer2w1h       = ReqSp acer2w1h;   590     var  Spa cer2w1h       = ReqSp acer2w1h;
591     var  Spa cer1w7h       = ReqSp acer1w7h;   591     var  Spa cer1w7h       = ReqSp acer1w7h;
592     var  Spa cer5w1h       = ReqSp acer5w1h;   592     var  Spa cer5w1h       = ReqSp acer5w1h;
593     var  Sty leAtttribu te;   593     var  Sty leAtttribu te;
594     594  
595     595  
596     // Set s tyle attri bute to in sure small  image hei ght   596     // Set s tyle attri bute to in sure small  image hei ght
597     //   597     //
598     StyleAtt ribute = "  style=\"f ont-size:  1px; line- height: 1p x;\"";   598     StyleAtt ribute = "  style=\"f ont-size:  1px; line- height: 1p x;\"";
599     599  
600     Formatte dText += " <table wid th=\"" + P aramWidth  + "\" bord er=0 cells pacing=0 c ellpadding =0 bgcolor =\"" + Bac kgroundCol or + "\">" ;   600     Formatte dText += " <table wid th=\"" + P aramWidth  + "\" bord er=0 cells pacing=0 c ellpadding =0 bgcolor =\"" + Bac kgroundCol or + "\">" ;
601     Formatte dText += "  <tr>";   601     Formatte dText += "  <tr>";
602     Formatte dText += "   <td" + S tyleAttrib ute + " he ight=2 col span=5 bgc olor=\"" +  BorderCol or + "\">"  + Spacer1 w2h + "</t d>";   602     Formatte dText += "   <td" + S tyleAttrib ute + " he ight=2 col span=5 bgc olor=\"" +  BorderCol or + "\">"  + Spacer1 w2h + "</t d>";
603     Formatte dText += "  </tr>";   603     Formatte dText += "  </tr>";
604     604  
605     Formatte dText += "  <tr>";   605     Formatte dText += "  <tr>";
606     Formatte dText += "   <td" + S tyleAttrib ute + " he ight=7 bgc olor=\"" +  BorderCol or + "\">"  + Spacer2 w1h + "</t d>";   606     Formatte dText += "   <td" + S tyleAttrib ute + " he ight=7 bgc olor=\"" +  BorderCol or + "\">"  + Spacer2 w1h + "</t d>";
607     Formatte dText += "   <td" + S tyleAttrib ute + " he ight=7 col span=3>" +  Spacer1w7 h + "</td> ";   607     Formatte dText += "   <td" + S tyleAttrib ute + " he ight=7 col span=3>" +  Spacer1w7 h + "</td> ";
608     Formatte dText += "   <td" + S tyleAttrib ute + " he ight=7 bgc olor=\"" +  BorderCol or + "\">"  + Spacer2 w1h + "</t d>";   608     Formatte dText += "   <td" + S tyleAttrib ute + " he ight=7 bgc olor=\"" +  BorderCol or + "\">"  + Spacer2 w1h + "</t d>";
609     Formatte dText += "  </tr>";   609     Formatte dText += "  </tr>";
610     610  
611     Formatte dText += "  <tr>";   611     Formatte dText += "  <tr>";
612     Formatte dText += "   <td bgco lor=\"" +  BorderColo r + "\">"  + ReqSpace r2w1h + "< /td>";   612     Formatte dText += "   <td bgco lor=\"" +  BorderColo r + "\">"  + ReqSpace r2w1h + "< /td>";
613     Formatte dText += "   <td>" +  ReqSpacer5 w1h + "</t d>";   613     Formatte dText += "   <td>" +  ReqSpacer5 w1h + "</t d>";
614     Formatte dText += "   <td widt h=\"100%\"  id=\"" +  ParamTextI D + "\" st yle=\"colo r: " + For egroundCol or + " ; "  + WWHFram e.WWHJavaS cript.mSet tings.mHov erText.mFo ntStyle +  "\">" + Pa ramText +  "</td>";   614     Formatte dText += "   <td widt h=\"100%\"  id=\"" +  ParamTextI D + "\" st yle=\"colo r: " + For egroundCol or + " ; "  + WWHFram e.WWHJavaS cript.mSet tings.mHov erText.mFo ntStyle +  "\">" + Pa ramText +  "</td>";
615     Formatte dText += "   <td>" +  ReqSpacer5 w1h + "</t d>";   615     Formatte dText += "   <td>" +  ReqSpacer5 w1h + "</t d>";
616     Formatte dText += "   <td bgco lor=\"" +  BorderColo r + "\">"  + ReqSpace r2w1h + "< /td>";   616     Formatte dText += "   <td bgco lor=\"" +  BorderColo r + "\">"  + ReqSpace r2w1h + "< /td>";
617     Formatte dText += "  </tr>";   617     Formatte dText += "  </tr>";
618     618  
619     Formatte dText += "  <tr>";   619     Formatte dText += "  <tr>";
620     Formatte dText += "   <td" + S tyleAttrib ute + " he ight=7 bgc olor=\"" +  BorderCol or + "\">"  + Spacer2 w1h + "</t d>";   620     Formatte dText += "   <td" + S tyleAttrib ute + " he ight=7 bgc olor=\"" +  BorderCol or + "\">"  + Spacer2 w1h + "</t d>";
621     Formatte dText += "   <td" + S tyleAttrib ute + " he ight=7 col span=3>" +  Spacer1w7 h + "</td> ";   621     Formatte dText += "   <td" + S tyleAttrib ute + " he ight=7 col span=3>" +  Spacer1w7 h + "</td> ";
622     Formatte dText += "   <td" + S tyleAttrib ute + " he ight=7 bgc olor=\"" +  BorderCol or + "\">"  + Spacer2 w1h + "</t d>";   622     Formatte dText += "   <td" + S tyleAttrib ute + " he ight=7 bgc olor=\"" +  BorderCol or + "\">"  + Spacer2 w1h + "</t d>";
623     Formatte dText += "  </tr>";   623     Formatte dText += "  </tr>";
624     624  
625     Formatte dText += "  <tr>";   625     Formatte dText += "  <tr>";
626     Formatte dText += "   <td" + S tyleAttrib ute + " he ight=2 col span=5 bgc olor=\"" +  BorderCol or + "\">"  + Spacer1 w2h + "</t d>";   626     Formatte dText += "   <td" + S tyleAttrib ute + " he ight=2 col span=5 bgc olor=\"" +  BorderCol or + "\">"  + Spacer1 w2h + "</t d>";
627     Formatte dText += "  </tr>";   627     Formatte dText += "  </tr>";
628     Formatte dText += " </table>";   628     Formatte dText += " </table>";
629     629  
630     return F ormattedTe xt;   630     return F ormattedTe xt;
631   }   631   }
632     632  
633   function   WWHIndex_G etPopupAct ion(ParamE ntryInfo)   633   function   WWHIndex_G etPopupAct ion(ParamE ntryInfo)
634   {   634   {
635     var  Pop upAction =  "";   635     var  Pop upAction =  "";
636     636  
637     637  
638     if (WWHF rame.WWHJa vaScript.m Settings.m HoverText. mbEnabled)   638     if (WWHF rame.WWHJa vaScript.m Settings.m HoverText. mbEnabled)
639     {   639     {
640       PopupA ction += "  onmouseov er=\"fS('"  + ParamEn tryInfo +  "', " + th is.mEventS tring + ") ;\"";   640       PopupA ction += "  onmouseov er=\"fS('"  + ParamEn tryInfo +  "', " + th is.mEventS tring + ") ;\"";
641       PopupA ction += "  onmouseou t=\"fH();\ "";   641       PopupA ction += "  onmouseou t=\"fH();\ "";
642     }   642     }
643     643  
644     return P opupAction ;   644     return P opupAction ;
645   }   645   }
646     646  
647   function   WWHIndex_T hresholdEx ceeded()   647   function   WWHIndex_T hresholdEx ceeded()
648   {   648   {
649     if (this .mbThresho ldExceeded  == null)   649     if (this .mbThresho ldExceeded  == null)
650     {   650     {
651       if ((W WHFrame.WW HHelp.mbAc cessible)  ||   651       if ((W WHFrame.WW HHelp.mbAc cessible)  ||
652           (( this.mOpti ons.mThres hold > 0)  &&   652           (( this.mOpti ons.mThres hold > 0)  &&
653            ( this.mEntr yCount > t his.mOptio ns.mThresh old)))   653            ( this.mEntr yCount > t his.mOptio ns.mThresh old)))
654       {   654       {
655         this .mbThresho ldExceeded  = true;   655         this .mbThresho ldExceeded  = true;
656       }   656       }
657       else   657       else
658       {   658       {
659         this .mbThresho ldExceeded  = false;   659         this .mbThresho ldExceeded  = false;
660       }   660       }
661     }   661     }
662     662  
663     return t his.mbThre sholdExcee ded;   663     return t his.mbThre sholdExcee ded;
664   }   664   }
665     665  
666   function   WWHIndex_G etSectionN avigation( )   666   function   WWHIndex_G etSectionN avigation( )
667   {   667   {
668     var  Sec tionNavHTM L = "";   668     var  Sec tionNavHTM L = "";
669     var  Sec tionArray;   669     var  Sec tionArray;
670     var  Max Index;   670     var  Max Index;
671     var  Ind ex;   671     var  Ind ex;
672     672  
673     673  
674     SectionN avHTML +=  "<p class= \"navigati on\">";   674     SectionN avHTML +=  "<p class= \"navigati on\">";
675     675  
676     // Calcu late secti on selecti on   676     // Calcu late secti on selecti on
677     //   677     //
678     SectionA rray = thi s.mTopEntr y.mChildre nSortArray ;   678     SectionA rray = thi s.mTopEntr y.mChildre nSortArray ;
679     for (Max Index = Se ctionArray .length, I ndex = 0 ;  Index < M axIndex ;  Index++)   679     for (Max Index = Se ctionArray .length, I ndex = 0 ;  Index < M axIndex ;  Index++)
680     {   680     {
681       // Add  spacers i f necessar y   681       // Add  spacers i f necessar y
682       //   682       //
683       if (In dex > 0)   683       if (In dex > 0)
684       {   684       {
685         Sect ionNavHTML  += this.m Options.mS eperator;   685         Sect ionNavHTML  += this.m Options.mS eperator;
686       }   686       }
687     687  
688       // Dis play secti on with or  without l ink as nec essary   688       // Dis play secti on with or  without l ink as nec essary
689       //   689       //
690       if ((t his.fThres holdExceed ed()) &&   690       if ((t his.fThres holdExceed ed()) &&
691           (I ndex == th is.mSectio nIndex))   // Current ly being d isplayed   691           (I ndex == th is.mSectio nIndex))   // Current ly being d isplayed
692       {   692       {
693         Sect ionNavHTML  += "<a cl ass=\"sele cted\" nam e=\"in" +  Index + "\ " href=\"j avascript: void(0);\" >" + Secti onArray[In dex].mText  + "</a>";   693         Sect ionNavHTML  += "<a cl ass=\"sele cted\" nam e=\"in" +  Index + "\ " href=\"j avascript: void(0);\" >" + Secti onArray[In dex].mText  + "</a>";
694       }   694       }
695       else i f ((Sectio nArray[Ind ex].mChild ren == nul l) &&          // Alw ays displa y group   695       else i f ((Sectio nArray[Ind ex].mChild ren == nul l) &&          // Alw ays displa y group
696                 (Sectio nArray[Ind ex].mChild renSortArr ay == null ))  // Sor tArray nul l before s ort, hash  null after   696                 (Sectio nArray[Ind ex].mChild renSortArr ay == null ))  // Sor tArray nul l before s ort, hash  null after
697       {   697       {
698         Sect ionNavHTML  += Sectio nArray[Ind ex].mText;   698         Sect ionNavHTML  += Sectio nArray[Ind ex].mText;
699       }   699       }
700       else   700       else
701       {   701       {
702         Sect ionNavHTML  += "<a cl ass=\"enab led\" name =\"in" + I ndex + "\"  href=\"ja vascript:f D(" + Inde x + ");\"> " + Sectio nArray[Ind ex].mText  + "</a>";   702         Sect ionNavHTML  += "<a cl ass=\"enab led\" name =\"in" + I ndex + "\"  href=\"ja vascript:f D(" + Inde x + ");\"> " + Sectio nArray[Ind ex].mText  + "</a>";
703       }   703       }
704     }   704     }
705     705  
706     SectionN avHTML +=  "</p>";   706     SectionN avHTML +=  "</p>";
707     707  
708     return S ectionNavH TML;   708     return S ectionNavH TML;
709   }   709   }
710     710  
711   function   WWHIndex_D isplaySect ion(ParamS ectionInde x)   711   function   WWHIndex_D isplaySect ion(ParamS ectionInde x)
712   {   712   {
713     // Set s ection   713     // Set s ection
714     //   714     //
715     this.mSe ctionIndex  = ParamSe ctionIndex ;   715     this.mSe ctionIndex  = ParamSe ctionIndex ;
716     716  
717     if (this .fThreshol dExceeded( ))   717     if (this .fThreshol dExceeded( ))
718     {   718     {
719       // Rel oad panel   719       // Rel oad panel
720       //   720       //
721       WWHFra me.WWHJava Script.mPa nels.fClea rScrollPos ition();   721       WWHFra me.WWHJava Script.mPa nels.fClea rScrollPos ition();
722       WWHFra me.WWHJava Script.mPa nels.fRelo adPanel();   722       WWHFra me.WWHJava Script.mPa nels.fRelo adPanel();
723     }   723     }
724     else   724     else
725     {   725     {
726       // Foc us current  section   726       // Foc us current  section
727       //   727       //
728       WWHFra me.WWHHelp .fFocus("W WHPanelNav igationFra me", "in"  + this.mSe ctionIndex );   728       WWHFra me.WWHHelp .fFocus("W WHPanelNav igationFra me", "in"  + this.mSe ctionIndex );
729     729  
730       // Who le index a lready vis ible, just  jump to t he specifi ed entry   730       // Who le index a lready vis ible, just  jump to t he specifi ed entry
731       //   731       //
732       this.m PanelAncho r = "secti on" + this .mSectionI ndex;   732       this.m PanelAncho r = "secti on" + this .mSectionI ndex;
733     733  
734       // Wor karound fo r IE
 problems
  734       // Wor karound fo r IE /FireFox  problems
735       //   735       //
736       if (WW HFrame.WWH Browser.mb SupportsFo cus)   736       if (WW HFrame.WWH Browser.mb SupportsFo cus)
737       {   737       {
738          if ( WWHFrame.W WHBrowser. m B r
o w s er  = = 2)  // S horthand  f or IE
  738         
WWHFrame.W WHBrowser. m bSuppo r tsF o cu s
 =
 f alse;
739         {        
740           WW HFrame.WWH Browser.mb SupportsFo cus = fals e;        
741     739  
742             WWHFrame.W WHJavaScri pt.mPanels .fJumpToAn chor();   740         
WWHFrame.W WHJavaScri pt.mPanels .fJumpToAn chor();
743     741  
744             WWHFrame.W WHBrowser. mbSupports Focus = tr ue;   742         
WWHFrame.W WHBrowser. mbSupports Focus = tr ue;
745         }        
746       }   743       }
747     744  
748       WWHFra me.WWHJava Script.mPa nels.fJump ToAnchor() ;   745       WWHFra me.WWHJava Script.mPa nels.fJump ToAnchor() ;
749     }   746     }
750   }   747   }
751     748  
752   function   WWHIndex_S electionLi stHeadHTML ()   749   function   WWHIndex_S electionLi stHeadHTML ()
753   {   750   {
754     var  HTM L = new WW HStringBuf fer_Object ();   751     var  HTM L = new WW HStringBuf fer_Object ();
755     var  Lev el;   752     var  Lev el;
756     753  
757     754  
758     HTML.fAp pend("<sty le type=\" text/css\" >\n");   755     HTML.fAp pend("<sty le type=\" text/css\" >\n");
759     HTML.fAp pend(" <!- -\n");   756     HTML.fAp pend(" <!- -\n");
760     HTML.fAp pend("  a\ n");   757     HTML.fAp pend("  a\ n");
761     HTML.fAp pend("  {\ n");   758     HTML.fAp pend("  {\ n");
762     HTML.fAp pend("     text-decor ation: non e;\n");   759     HTML.fAp pend("     text-decor ation: non e;\n");
763     HTML.fAp pend("     color: " +  WWHFrame. WWHJavaScr ipt.mSetti ngs.mIndex .mEnabledC olor + ";\ n");   760     HTML.fAp pend("     color: " +  WWHFrame. WWHJavaScr ipt.mSetti ngs.mIndex .mEnabledC olor + ";\ n");
764     HTML.fAp pend("  }\ n");   761     HTML.fAp pend("  }\ n");
765     HTML.fAp pend("  p\ n");   762     HTML.fAp pend("  p\ n");
766     HTML.fAp pend("  {\ n");   763     HTML.fAp pend("  {\ n");
767     HTML.fAp pend("     margin-top : 1pt;\n") ;   764     HTML.fAp pend("     margin-top : 1pt;\n") ;
768     HTML.fAp pend("     margin-bot tom: 1pt;\ n");   765     HTML.fAp pend("     margin-bot tom: 1pt;\ n");
769     HTML.fAp pend("     color: " +  WWHFrame. WWHJavaScr ipt.mSetti ngs.mIndex .mDisabled Color + "; \n");   766     HTML.fAp pend("     color: " +  WWHFrame. WWHJavaScr ipt.mSetti ngs.mIndex .mDisabled Color + "; \n");
770     HTML.fAp pend("     " + WWHFra me.WWHJava Script.mSe ttings.mIn dex.mFontS tyle + ";\ n");   767     HTML.fAp pend("     " + WWHFra me.WWHJava Script.mSe ttings.mIn dex.mFontS tyle + ";\ n");
771     HTML.fAp pend("  }\ n");   768     HTML.fAp pend("  }\ n");
772     for (Lev el = 1 ; L evel < 3 ;  Level++)   769     for (Lev el = 1 ; L evel < 3 ;  Level++)
773     {   770     {
774       HTML.f Append("   p.l" + Lev el + "\n") ;   771       HTML.f Append("   p.l" + Lev el + "\n") ;
775       HTML.f Append("   {\n");   772       HTML.f Append("   {\n");
776       HTML.f Append("     margin-l eft: " + ( WWHFrame.W WHJavaScri pt.mSettin gs.mIndex. mIndent *  Level) + " pt;\n");   773       HTML.f Append("     margin-l eft: " + ( WWHFrame.W WHJavaScri pt.mSettin gs.mIndex. mIndent *  Level) + " pt;\n");
777       HTML.f Append("   }\n");   774       HTML.f Append("   }\n");
778     }   775     }
779     HTML.fAp pend("  h2 \n");   776     HTML.fAp pend("  h2 \n");
780     HTML.fAp pend("  {\ n");   777     HTML.fAp pend("  {\ n");
781     HTML.fAp pend("     " + WWHFra me.WWHJava Script.mSe ttings.mIn dex.mFontS tyle + ";\ n");   778     HTML.fAp pend("     " + WWHFra me.WWHJava Script.mSe ttings.mIn dex.mFontS tyle + ";\ n");
782     HTML.fAp pend("  }\ n");   779     HTML.fAp pend("  }\ n");
783     HTML.fAp pend(" --> \n");   780     HTML.fAp pend(" --> \n");
784     HTML.fAp pend("</st yle>\n");   781     HTML.fAp pend("</st yle>\n");
785     782  
786     return H TML.fGetBu ffer();   783     return H TML.fGetBu ffer();
787   }   784   }
788     785  
789   function   WWHIndex_S electionLi stBodyHTML ()   786   function   WWHIndex_S electionLi stBodyHTML ()
790   {   787   {
791     var  HTM L = new WW HStringBuf fer_Object ();   788     var  HTM L = new WW HStringBuf fer_Object ();
792     var  Boo kList = WW HFrame.WWH Help.mBook s.mBookLis t;   789     var  Boo kList = WW HFrame.WWH Help.mBook s.mBookLis t;
793     var  Ent ryClass;   790     var  Ent ryClass;
794     var  Max BookIndex;   791     var  Max BookIndex;
795     var  Boo kIndex;   792     var  Boo kIndex;
796     var  Boo kListEntry ;   793     var  Boo kListEntry ;
797     var  Lin kArray;   794     var  Lin kArray;
798     var  Max LinkIndex;   795     var  Max LinkIndex;
799     var  Lin kIndex;   796     var  Lin kIndex;
800     var  Par ts;   797     var  Par ts;
801     var  Pre vLinkFileI ndex;   798     var  Pre vLinkFileI ndex;
802     var  Lin kFileIndex ;   799     var  Lin kFileIndex ;
803     var  Lin kAnchor;   800     var  Lin kAnchor;
804     var  Var Accessibil ityTitle;   801     var  Var Accessibil ityTitle;
805     var  Num beredLinkC ounter;   802     var  Num beredLinkC ounter;
806     var  Doc umentURL;   803     var  Doc umentURL;
807     804  
808     805  
809     if (this .mClickedE ntry != nu ll)   806     if (this .mClickedE ntry != nu ll)
810     {   807     {
811       // Dis play multi ple entry  message   808       // Dis play multi ple entry  message
812       //   809       //
813       HTML.f Append("<h 2>");   810       HTML.f Append("<h 2>");
814       HTML.f Append(WWH Frame.WWHJ avaScript. mMessages. mIndexSele ctMessage1  + " ");   811       HTML.f Append(WWH Frame.WWHJ avaScript. mMessages. mIndexSele ctMessage1  + " ");
815       HTML.f Append(WWH Frame.WWHJ avaScript. mMessages. mIndexSele ctMessage2 );   812       HTML.f Append(WWH Frame.WWHJ avaScript. mMessages. mIndexSele ctMessage2 );
816       HTML.f Append("</ h2>\n");   813       HTML.f Append("</ h2>\n");
817     814  
818       // Dis play text  of entry c licked   815       // Dis play text  of entry c licked
819       //   816       //
820       HTML.f Append("<p ><b>" + th is.mClicke dEntry.mTe xt + "</b> </p>\n");   817       HTML.f Append("<p ><b>" + th is.mClicke dEntry.mTe xt + "</b> </p>\n");
821     818  
822       // Det ermine lev el at whic h to displ ay entries   819       // Det ermine lev el at whic h to displ ay entries
823       //   820       //
824       if (Bo okList.len gth == 1)   821       if (Bo okList.len gth == 1)
825       {   822       {
826         Entr yClass = " l1";   823         Entr yClass = " l1";
827       }   824       }
828       else   825       else
829       {   826       {
830         Entr yClass = " l2";   827         Entr yClass = " l2";
831       }   828       }
832     829  
833       // Dis play each  book's lin k for this  entry   830       // Dis play each  book's lin k for this  entry
834       //   831       //
835       for (M axBookInde x = BookLi st.length,  BookIndex  = 0 ; Boo kIndex < M axBookInde x ; BookIn dex++)   832       for (M axBookInde x = BookLi st.length,  BookIndex  = 0 ; Boo kIndex < M axBookInde x ; BookIn dex++)
836       {   833       {
837         if ( typeof(thi s.mClicked Entry.mBoo kLinks[Boo kIndex]) ! = "undefin ed")   834         if ( typeof(thi s.mClicked Entry.mBoo kLinks[Boo kIndex]) ! = "undefin ed")
838         {   835         {
839           Bo okListEntr y = BookLi st[BookInd ex];   836           Bo okListEntr y = BookLi st[BookInd ex];
840     837  
841           //  Write the  book's ti tle, if ne cessary   838           //  Write the  book's ti tle, if ne cessary
842           //   839           //
843           if  (BookList .length >  1)   840           if  (BookList .length >  1)
844           {   841           {
845              HTML.fAppe nd("<p>&nb sp;</p>\n" );   842              HTML.fAppe nd("<p>&nb sp;</p>\n" );
846              HTML.fAppe nd("<p cla ss=\"l1\"> <nobr><b>"  + BookLis tEntry.mTi tle + "</b >");   843              HTML.fAppe nd("<p cla ss=\"l1\"> <nobr><b>"  + BookLis tEntry.mTi tle + "</b >");
847           }   844           }
848     845  
849           //  Sort link  array to  group file s with anc hors   846           //  Sort link  array to  group file s with anc hors
850           //   847           //
851           //  Use for l oop to cop y entries  to workaro und bug/pr oblem in I E 5.0 on W indows   848           //  Use for l oop to cop y entries  to workaro und bug/pr oblem in I E 5.0 on W indows
852           //   849           //
853           Li nkArray =  new Array( );   850           Li nkArray =  new Array( );
854           fo r (MaxLink Index = th is.mClicke dEntry.mBo okLinks[Bo okIndex].l ength, Lin kIndex = 0  ; LinkInd ex < MaxLi nkIndex ;  LinkIndex+ +)   851           fo r (MaxLink Index = th is.mClicke dEntry.mBo okLinks[Bo okIndex].l ength, Lin kIndex = 0  ; LinkInd ex < MaxLi nkIndex ;  LinkIndex+ +)
855           {   852           {
856              LinkArray[ LinkIndex]  = this.mC lickedEntr y.mBookLin ks[BookInd ex][LinkIn dex];   853              LinkArray[ LinkIndex]  = this.mC lickedEntr y.mBookLin ks[BookInd ex][LinkIn dex];
857           }   854           }
858           Li nkArray =  LinkArray. sort();   855           Li nkArray =  LinkArray. sort();
859     856  
860           //  Now displ ay file li nks   857           //  Now displ ay file li nks
861           //   858           //
862           Pr evLinkFile Index = nu ll;   859           Pr evLinkFile Index = nu ll;
863           fo r (MaxLink Index = Li nkArray.le ngth, Link Index = 0  ; LinkInde x < MaxLin kIndex ; L inkIndex++ )   860           fo r (MaxLink Index = Li nkArray.le ngth, Link Index = 0  ; LinkInde x < MaxLin kIndex ; L inkIndex++ )
864           {   861           {
865              // Determi ne link fi le index a nd anchor   862              // Determi ne link fi le index a nd anchor
866              //   863              //
867              Parts = Li nkArray[Li nkIndex].s plit("#");   864              Parts = Li nkArray[Li nkIndex].s plit("#");
868              LinkFileIn dex = pars eInt(Parts [0]);   865              LinkFileIn dex = pars eInt(Parts [0]);
869              LinkAnchor  = null;   866              LinkAnchor  = null;
870              if (Parts. length > 1 )   867              if (Parts. length > 1 )
871              {   868              {
872                if (Part s[1].lengt h > 0)   869                if (Part s[1].lengt h > 0)
873                {   870                {
874                  LinkAn chor = Par ts[1];   871                  LinkAn chor = Par ts[1];
875                }   872                }
876              }   873              }
877     874  
878              // Determi ne if all  links for  a single d ocument ha ve been pr ocessed   875              // Determi ne if all  links for  a single d ocument ha ve been pr ocessed
879              //   876              //
880              if ((PrevL inkFileInd ex == null ) ||   877              if ((PrevL inkFileInd ex == null ) ||
881                  (LinkF ileIndex ! = PrevLink FileIndex) )   878                  (LinkF ileIndex ! = PrevLink FileIndex) )
882              {   879              {
883                Numbered LinkCounte r = 1;   880                Numbered LinkCounte r = 1;
884     881  
885                // Deter mine title  for acces sibility   882                // Deter mine title  for acces sibility
886                //   883                //
887                if (WWHF rame.WWHHe lp.mbAcces sible)   884                if (WWHF rame.WWHHe lp.mbAcces sible)
888                {   885                {
889                  VarAcc essibility Title = WW HStringUti lities_For matMessage (WWHFrame. WWHJavaScr ipt.mMessa ges.mAcces sibilityIn dexEntry,   886                  VarAcc essibility Title = WW HStringUti lities_For matMessage (WWHFrame. WWHJavaScr ipt.mMessa ges.mAcces sibilityIn dexEntry,
890                                                                                 BookListE ntry.mFile s.fFileInd exToTitle( LinkFileIn dex),   887                                                                                 BookListE ntry.mFile s.fFileInd exToTitle( LinkFileIn dex),
891                                                                                 BookListE ntry.mTitl e);   888                                                                                 BookListE ntry.mTitl e);
892                  VarAcc essibility Title = WW HStringUti lities_Esc apeHTML(Va rAccessibi lityTitle) ;   889                  VarAcc essibility Title = WW HStringUti lities_Esc apeHTML(Va rAccessibi lityTitle) ;
893                  VarAcc essibility Title = "  title=\""  + VarAcces sibilityTi tle + "\"" ;   890                  VarAcc essibility Title = "  title=\""  + VarAcces sibilityTi tle + "\"" ;
894                }   891                }
895     892  
896                HTML.fAp pend("</no br></p>\n" );   893                HTML.fAp pend("</no br></p>\n" );
897     894  
898                // Build  up absolu te link UR L   895                // Build  up absolu te link UR L
899                //   896                //
900                Document URL = WWHF rame.WWHHe lp.fGetBoo kIndexFile IndexURL(B ookIndex,  LinkFileIn dex, LinkA nchor);   897                Document URL = WWHF rame.WWHHe lp.fGetBoo kIndexFile IndexURL(B ookIndex,  LinkFileIn dex, LinkA nchor);
901                Document URL = WWHS tringUtili ties_Escap eURLForJav aScriptAnc hor(Docume ntURL);   898                Document URL = WWHS tringUtili ties_Escap eURLForJav aScriptAnc hor(Docume ntURL);
902     899  
903                // Handl e "double- indirectio n" issue   900                // Handl e "double- indirectio n" issue
904                //   901                //
905                Document URL = WWHS tringUtili ties_Searc hReplace(D ocumentURL , "%", "%2 5");   902                Document URL = WWHS tringUtili ties_Searc hReplace(D ocumentURL , "%", "%2 5");
906     903  
907                HTML.fAp pend("<p c lass=\"" +  EntryClas s + "\"><n obr>");   904                HTML.fAp pend("<p c lass=\"" +  EntryClas s + "\"><n obr>");
908                HTML.fAp pend("<a n ame=\"inde xselect\"  href=\"jav ascript:WW HFrame.WWH Index.fDis playLink(' " + Docume ntURL + "' );\"" + Va rAccessibi lityTitle  + ">");   905                HTML.fAp pend("<a n ame=\"inde xselect\"  href=\"jav ascript:WW HFrame.WWH Index.fDis playLink(' " + Docume ntURL + "' );\"" + Va rAccessibi lityTitle  + ">");
909                HTML.fAp pend(BookL istEntry.m Files.fFil eIndexToTi tle(LinkFi leIndex) +  "</a>");   906                HTML.fAp pend(BookL istEntry.m Files.fFil eIndexToTi tle(LinkFi leIndex) +  "</a>");
910              }   907              }
911              else   908              else
912              {   909              {
913                Numbered LinkCounte r += 1;   910                Numbered LinkCounte r += 1;
914     911  
915                // Deter mine title  for acces sibility   912                // Deter mine title  for acces sibility
916                //   913                //
917                if (WWHF rame.WWHHe lp.mbAcces sible)   914                if (WWHF rame.WWHHe lp.mbAcces sible)
918                {   915                {
919                  VarAcc essibility Title = WW HStringUti lities_For matMessage (WWHFrame. WWHJavaScr ipt.mMessa ges.mAcces sibilityIn dexSecondE ntry,   916                  VarAcc essibility Title = WW HStringUti lities_For matMessage (WWHFrame. WWHJavaScr ipt.mMessa ges.mAcces sibilityIn dexSecondE ntry,
920                                                                                 BookListE ntry.mFile s.fFileInd exToTitle( LinkFileIn dex),   917                                                                                 BookListE ntry.mFile s.fFileInd exToTitle( LinkFileIn dex),
921                                                                                 BookListE ntry.mTitl e,   918                                                                                 BookListE ntry.mTitl e,
922                                                                                 NumberedL inkCounter );   919                                                                                 NumberedL inkCounter );
923                  VarAcc essibility Title = WW HStringUti lities_Esc apeHTML(Va rAccessibi lityTitle) ;   920                  VarAcc essibility Title = WW HStringUti lities_Esc apeHTML(Va rAccessibi lityTitle) ;
924                  VarAcc essibility Title = "  title=\""  + VarAcces sibilityTi tle + "\"" ;   921                  VarAcc essibility Title = "  title=\""  + VarAcces sibilityTi tle + "\"" ;
925                }   922                }
926     923  
927                // Build  up absolu te link UR L   924                // Build  up absolu te link UR L
928                //   925                //
929                Document URL = WWHF rame.WWHHe lp.fGetBoo kIndexFile IndexURL(B ookIndex,  LinkFileIn dex, LinkA nchor);   926                Document URL = WWHF rame.WWHHe lp.fGetBoo kIndexFile IndexURL(B ookIndex,  LinkFileIn dex, LinkA nchor);
930                Document URL = WWHS tringUtili ties_Escap eURLForJav aScriptAnc hor(Docume ntURL);   927                Document URL = WWHS tringUtili ties_Escap eURLForJav aScriptAnc hor(Docume ntURL);
931     928  
932                // Handl e "double- indirectio n" issue   929                // Handl e "double- indirectio n" issue
933                //   930                //
934                Document URL = WWHS tringUtili ties_Searc hReplace(D ocumentURL , "%", "%2 5");   931                Document URL = WWHS tringUtili ties_Searc hReplace(D ocumentURL , "%", "%2 5");
935     932  
936                HTML.fAp pend(",&nb sp;");   933                HTML.fAp pend(",&nb sp;");
937                HTML.fAp pend("<a h ref=\"java script:WWH Frame.WWHI ndex.fDisp layLink('"  + Documen tURL + "') ;\"" + Var Accessibil ityTitle +  ">");   934                HTML.fAp pend("<a h ref=\"java script:WWH Frame.WWHI ndex.fDisp layLink('"  + Documen tURL + "') ;\"" + Var Accessibil ityTitle +  ">");
938                HTML.fAp pend(Numbe redLinkCou nter + "</ a>");   935                HTML.fAp pend(Numbe redLinkCou nter + "</ a>");
939              }   936              }
940     937  
941              PrevLinkFi leIndex =  LinkFileIn dex;   938              PrevLinkFi leIndex =  LinkFileIn dex;
942           }   939           }
943     940  
944           HT ML.fAppend ("</nobr>< /p>\n");   941           HT ML.fAppend ("</nobr>< /p>\n");
945         }   942         }
946       }   943       }
947     }   944     }
948     945  
949     return H TML.fGetBu ffer();   946     return H TML.fGetBu ffer();
950   }   947   }
951     948  
952   function   WWHIndex_S electionLi stLoaded()   949   function   WWHIndex_S electionLi stLoaded()
953   {   950   {
954     // Move  focus to d ocument se lection li st   951     // Move  focus to d ocument se lection li st
955     //   952     //
956     WWHFrame .WWHHelp.f Focus("WWH DocumentFr ame", "ind exselect") ;   953     WWHFrame .WWHHelp.f Focus("WWH DocumentFr ame", "ind exselect") ;
957   }   954   }
958     955  
959   function   WWHIndex_D isplayLink (ParamURL)   956   function   WWHIndex_D isplayLink (ParamURL)
960   {   957   {
961     WWHFrame .WWHHelp.f SetDocumen tHREF(Para mURL, fals e);   958     WWHFrame .WWHHelp.f SetDocumen tHREF(Para mURL, fals e);
962   }   959   }
963     960  
964   function   WWHIndex_G etEntry(Pa ramEntryIn fo)   961   function   WWHIndex_G etEntry(Pa ramEntryIn fo)
965   {   962   {
966     var  Ent ry = null;   963     var  Ent ry = null;
967     var  Ent ryInfoPart s;   964     var  Ent ryInfoPart s;
968     var  Max Index;   965     var  Max Index;
969     var  Ind ex;   966     var  Ind ex;
970     967  
971     968  
972     // Locat e specifie d entry   969     // Locat e specifie d entry
973     //   970     //
974     Entry =  this.mTopE ntry;   971     Entry =  this.mTopE ntry;
975     EntryInf oParts = P aramEntryI nfo.split( ":");   972     EntryInf oParts = P aramEntryI nfo.split( ":");
976     for (Max Index = En tryInfoPar ts.length,  Index = 0  ; Index <  MaxIndex  ; Index++)   973     for (Max Index = En tryInfoPar ts.length,  Index = 0  ; Index <  MaxIndex  ; Index++)
977     {   974     {
978       Entry  = Entry.mC hildrenSor tArray[Ent ryInfoPart s[Index]];   975       Entry  = Entry.mC hildrenSor tArray[Ent ryInfoPart s[Index]];
979     }   976     }
980     977  
981     return E ntry;   978     return E ntry;
982   }   979   }
983     980  
984   function   WWHIndex_C lickedEntr y(ParamEnt ryInfo)   981   function   WWHIndex_C lickedEntr y(ParamEnt ryInfo)
985   {   982   {
986     var  Ent ry;   983     var  Ent ry;
987     var  Boo kCount;   984     var  Boo kCount;
988     var  Boo kIndex;   985     var  Boo kIndex;
989     var  Boo kListEntry ;   986     var  Boo kListEntry ;
990     var  Par ts;   987     var  Par ts;
991     var  Lin kFileIndex ;   988     var  Lin kFileIndex ;
992     var  Lin kAnchor;   989     var  Lin kAnchor;
993     var  Doc umentURL;   990     var  Doc umentURL;
994     991  
995     992  
996     // Locat e specifie d entry   993     // Locat e specifie d entry
997     //   994     //
998     Entry =  this.fGetE ntry(Param EntryInfo) ;   995     Entry =  this.fGetE ntry(Param EntryInfo) ;
999     996  
1000     // Displ ay target  document o r selectio n list   997     // Displ ay target  document o r selectio n list
1001     //   998     //
1002     BookCoun t = 0;   999     BookCoun t = 0;
1003     for (Boo kIndex in  Entry.mBoo kLinks)   1000     for (Boo kIndex in  Entry.mBoo kLinks)
1004     {   1001     {
1005       BookCo unt++;   1002       BookCo unt++;
1006     }   1003     }
1007     1004  
1008     // See i f this is  a single e ntry   1005     // See i f this is  a single e ntry
1009     //   1006     //
1010     if ((Boo kCount ==  1) &&   1007     if ((Boo kCount ==  1) &&
1011         (Ent ry.mBookLi nks[BookIn dex].lengt h == 1))   1008         (Ent ry.mBookLi nks[BookIn dex].lengt h == 1))
1012     {   1009     {
1013       BookLi stEntry =  WWHFrame.W WHHelp.mBo oks.mBookL ist[BookIn dex];   1010       BookLi stEntry =  WWHFrame.W WHHelp.mBo oks.mBookL ist[BookIn dex];
1014     1011  
1015       // Det ermine lin k file ind ex and anc hor   1012       // Det ermine lin k file ind ex and anc hor
1016       //   1013       //
1017       Parts  = Entry.mB ookLinks[B ookIndex][ 0].split(" #");   1014       Parts  = Entry.mB ookLinks[B ookIndex][ 0].split(" #");
1018       LinkFi leIndex =  parseInt(P arts[0]);   1015       LinkFi leIndex =  parseInt(P arts[0]);
1019       LinkAn chor = nul l;   1016       LinkAn chor = nul l;
1020       if (Pa rts.length  > 1)   1017       if (Pa rts.length  > 1)
1021       {   1018       {
1022         if ( Parts[1].l ength > 0)   1019         if ( Parts[1].l ength > 0)
1023         {   1020         {
1024           Li nkAnchor =  Parts[1];   1021           Li nkAnchor =  Parts[1];
1025         }   1022         }
1026       }   1023       }
1027     1024  
1028       // Set  Document   1025       // Set  Document
1029       //   1026       //
1030       Docume ntURL = WW HFrame.WWH Help.fGetB ookIndexFi leIndexURL (BookIndex , LinkFile Index, Lin kAnchor);   1027       Docume ntURL = WW HFrame.WWH Help.fGetB ookIndexFi leIndexURL (BookIndex , LinkFile Index, Lin kAnchor);
1031     }   1028     }
1032     else   1029     else
1033     {   1030     {
1034       // Dis play selec tion list   1031       // Dis play selec tion list
1035       //   1032       //
1036       this.m ClickedEnt ry = Entry ;   1033       this.m ClickedEnt ry = Entry ;
1037       Docume ntURL = WW HFrame.WWH Help.mBase URL + "wwh elp/wwhimp l/js/html/ indexsel.h tm";   1034       Docume ntURL = WW HFrame.WWH Help.mBase URL + "wwh elp/wwhimp l/js/html/ indexsel.h tm";
1038     }   1035     }
1039     1036  
1040     this.fDi splayLink( DocumentUR L);   1037     this.fDi splayLink( DocumentUR L);
1041   }   1038   }
1042     1039  
1043   function   WWHIndex_C lickedSeeA lsoEntry(P aramEntryI nfo)   1040   function   WWHIndex_C lickedSeeA lsoEntry(P aramEntryI nfo)
1044   {   1041   {
1045     var  Ent ry;   1042     var  Ent ry;
1046     var  Tar getSection Index;   1043     var  Tar getSection Index;
1047     var  Max Index;   1044     var  Max Index;
1048     var  Ind ex;   1045     var  Ind ex;
1049     1046  
1050     1047  
1051     // Locat e specifie d entry   1048     // Locat e specifie d entry
1052     //   1049     //
1053     Entry =  this.fGetE ntry(Param EntryInfo) ;   1050     Entry =  this.fGetE ntry(Param EntryInfo) ;
1054     1051  
1055     // Confi rm entry h as target  informatio n   1052     // Confi rm entry h as target  informatio n
1056     //   1053     //
1057     if ((typ eof(Entry. mSeeAlsoTa rgetName)  == "string ") &&   1054     if ((typ eof(Entry. mSeeAlsoTa rgetName)  == "string ") &&
1058         (typ eof(Entry. mSeeAlsoTa rgetGroupI D) == "num ber"))   1055         (typ eof(Entry. mSeeAlsoTa rgetGroupI D) == "num ber"))
1059     {   1056     {
1060       // Det ermine if  we need to  jump to a nother pag e   1057       // Det ermine if  we need to  jump to a nother pag e
1061       //   1058       //
1062       Target SectionInd ex = -1;   1059       Target SectionInd ex = -1;
1063       for (M axIndex =  this.mTopE ntry.mChil drenSortAr ray.length , Index =  0 ; Index  < MaxIndex  ; Index++ )   1060       for (M axIndex =  this.mTopE ntry.mChil drenSortAr ray.length , Index =  0 ; Index  < MaxIndex  ; Index++ )
1064       {   1061       {
1065         if ( this.mTopE ntry.mChil drenSortAr ray[Index] .mGroupID  == Entry.m SeeAlsoTar getGroupID )   1062         if ( this.mTopE ntry.mChil drenSortAr ray[Index] .mGroupID  == Entry.m SeeAlsoTar getGroupID )
1066         {   1063         {
1067           Ta rgetSectio nIndex = I ndex;   1064           Ta rgetSectio nIndex = I ndex;
1068     1065  
1069           //  Exit for  loop   1066           //  Exit for  loop
1070           //   1067           //
1071           In dex = MaxI ndex;   1068           In dex = MaxI ndex;
1072         }   1069         }
1073       }   1070       }
1074     1071  
1075       // Con firm the t arget entr y was loca ted   1072       // Con firm the t arget entr y was loca ted
1076       //   1073       //
1077       if (Ta rgetSectio nIndex !=  -1)   1074       if (Ta rgetSectio nIndex !=  -1)
1078       {   1075       {
1079         // S et target  entry   1076         // S et target  entry
1080         //   1077         //
1081         this .mPanelAnc hor = "sa"  + Entry.m SeeAlsoTar getName;   1078         this .mPanelAnc hor = "sa"  + Entry.m SeeAlsoTar getName;
1082     1079  
1083         // C hange navi gation bar ?   1080         // C hange navi gation bar ?
1084         //   1081         //
1085         if ( (this.fThr esholdExce eded()) &&   1082         if ( (this.fThr esholdExce eded()) &&
1086              (TargetSec tionIndex  != this.mS ectionInde x))   1083              (TargetSec tionIndex  != this.mS ectionInde x))
1087         {   1084         {
1088           //  Need to s witch to p roper sect ion   1085           //  Need to s witch to p roper sect ion
1089           //   1086           //
1090           th is.fDispla ySection(T argetSecti onIndex);   1087           th is.fDispla ySection(T argetSecti onIndex);
1091         }   1088         }
1092         else   1089         else
1093         {   1090         {
1094           //  Focus cur rent secti on   1091           //  Focus cur rent secti on
1095           //   1092           //
1096           WW HFrame.WWH Help.fFocu s("WWHPane lNavigatio nFrame", " in" + this .mSectionI ndex);   1093           WW HFrame.WWH Help.fFocu s("WWHPane lNavigatio nFrame", " in" + this .mSectionI ndex);
1097     1094  
1098           //  We're on  the right  page, so j ust jump t o the corr ect entry   1095           //  We're on  the right  page, so j ust jump t o the corr ect entry
1099           //   1096           //
1100           WW HFrame.WWH JavaScript .mPanels.f JumpToAnch or();   1097           WW HFrame.WWH JavaScript .mPanels.f JumpToAnch or();
1101         }   1098         }
1102       }   1099       }
1103     }   1100     }
1104   }   1101   }
1105     1102  
1106   function   WWHIndexIt erator_Obj ect()   1103   function   WWHIndexIt erator_Obj ect()
1107   {   1104   {
1108     this.mIt eratorScop e      = n ull;   1105     this.mIt eratorScop e      = n ull;
1109     this.mEn try               = n ull;   1106     this.mEn try               = n ull;
1110     this.mPa rentStack         = n ew Array() ;   1107     this.mPa rentStack         = n ew Array() ;
1111     this.mPo sitionStac k      = n ew Array() ;   1108     this.mPo sitionStac k      = n ew Array() ;
1112     1109  
1113     this.fRe set   = WW HIndexIter ator_Reset ;   1110     this.fRe set   = WW HIndexIter ator_Reset ;
1114     this.fAd vance = WW HIndexIter ator_Advan ce;   1111     this.fAd vance = WW HIndexIter ator_Advan ce;
1115   }   1112   }
1116     1113  
1117   function   WWHIndexIt erator_Res et(ParamIn dex)   1114   function   WWHIndexIt erator_Res et(ParamIn dex)
1118   {   1115   {
1119     if (Para mIndex ==  -1)  // It erate buck ets as wel l!   1116     if (Para mIndex ==  -1)  // It erate buck ets as wel l!
1120     {   1117     {
1121       this.m IteratorSc ope = WWHF rame.WWHIn dex.mTopEn try;   1118       this.m IteratorSc ope = WWHF rame.WWHIn dex.mTopEn try;
1122     }   1119     }
1123     else if  ((WWHFrame .WWHIndex. mTopEntry. mChildrenS ortArray ! = null) &&   1120     else if  ((WWHFrame .WWHIndex. mTopEntry. mChildrenS ortArray ! = null) &&
1124               (WWHFrame .WWHIndex. mTopEntry. mChildrenS ortArray.l ength > 0) )   1121               (WWHFrame .WWHIndex. mTopEntry. mChildrenS ortArray.l ength > 0) )
1125     {   1122     {
1126       this.m IteratorSc ope = WWHF rame.WWHIn dex.mTopEn try.mChild renSortArr ay[ParamIn dex];   1123       this.m IteratorSc ope = WWHF rame.WWHIn dex.mTopEn try.mChild renSortArr ay[ParamIn dex];
1127     }   1124     }
1128     else   1125     else
1129     {   1126     {
1130       this.m IteratorSc ope = null ;   1127       this.m IteratorSc ope = null ;
1131     }   1128     }
1132     this.mEn try                 =  this.mIte ratorScope ;   1129     this.mEn try                 =  this.mIte ratorScope ;
1133     this.mPa rentStack. length   =  0;   1130     this.mPa rentStack. length   =  0;
1134     this.mPo sitionStac k.length =  0;   1131     this.mPo sitionStac k.length =  0;
1135   }   1132   }
1136     1133  
1137   function   WWHIndexIt erator_Adv ance()   1134   function   WWHIndexIt erator_Adv ance()
1138   {   1135   {
1139     var  Par entEntry;   1136     var  Par entEntry;
1140     var  Sta ckTop;   1137     var  Sta ckTop;
1141     1138  
1142     1139  
1143     // Advan ce to the  next visib le entry   1140     // Advan ce to the  next visib le entry
1144     //   1141     //
1145     if (this .mEntry !=  null)   1142     if (this .mEntry !=  null)
1146     {   1143     {
1147       // Che ck for chi ldren   1144       // Che ck for chi ldren
1148       //   1145       //
1149       if (th is.mEntry. mChildren  != null)   1146       if (th is.mEntry. mChildren  != null)
1150       {   1147       {
1151         // D etermine s ort order  if necessa ry   1148         // D etermine s ort order  if necessa ry
1152         //   1149         //
1153         if ( this.mEntr y.mChildre nSortArray  == null)   1150         if ( this.mEntr y.mChildre nSortArray  == null)
1154         {   1151         {
1155           WW HIndexEntr y_SortChil dren(this. mEntry);   1152           WW HIndexEntr y_SortChil dren(this. mEntry);
1156         }   1153         }
1157       }   1154       }
1158     1155  
1159       // Pro cess child ren   1156       // Pro cess child ren
1160       //   1157       //
1161       if ((t his.mEntry .mChildren SortArray  != null) & &   1158       if ((t his.mEntry .mChildren SortArray  != null) & &
1162           (t his.mEntry .mChildren SortArray. length > 0 ))   1159           (t his.mEntry .mChildren SortArray. length > 0 ))
1163       {   1160       {
1164         this .mParentSt ack[this.m ParentStac k.length]  = this.mEn try;   1161         this .mParentSt ack[this.m ParentStac k.length]  = this.mEn try;
1165         this .mPosition Stack[this .mPosition Stack.leng th] = 0;   1162         this .mPosition Stack[this .mPosition Stack.leng th] = 0;
1166         this .mEntry =  this.mEntr y.mChildre nSortArray [0];   1163         this .mEntry =  this.mEntr y.mChildre nSortArray [0];
1167       }   1164       }
1168       // If  we've reac hed the it erator sco pe, we're  done   1165       // If  we've reac hed the it erator sco pe, we're  done
1169       //   1166       //
1170       else i f (this.mE ntry == th is.mIterat orScope)   1167       else i f (this.mE ntry == th is.mIterat orScope)
1171       {   1168       {
1172         this .mEntry =  null;   1169         this .mEntry =  null;
1173       }   1170       }
1174       else   1171       else
1175       {   1172       {
1176         Pare ntEntry =  this.mPare ntStack[th is.mParent Stack.leng th - 1];   1173         Pare ntEntry =  this.mPare ntStack[th is.mParent Stack.leng th - 1];
1177         this .mEntry =  null;   1174         this .mEntry =  null;
1178     1175  
1179         // F ind next c hild of pa rent entry   1176         // F ind next c hild of pa rent entry
1180         //   1177         //
1181         whil e (ParentE ntry != nu ll)   1178         whil e (ParentE ntry != nu ll)
1182         {   1179         {
1183           //  Increment  position   1180           //  Increment  position
1184           //   1181           //
1185           St ackTop = t his.mPosit ionStack.l ength - 1;   1182           St ackTop = t his.mPosit ionStack.l ength - 1;
1186           th is.mPositi onStack[St ackTop]++;   1183           th is.mPositi onStack[St ackTop]++;
1187     1184  
1188           //  Confirm t his is a v alid entry   1185           //  Confirm t his is a v alid entry
1189           //   1186           //
1190           if  (this.mPo sitionStac k[StackTop ] < Parent Entry.mChi ldrenSortA rray.lengt h)   1187           if  (this.mPo sitionStac k[StackTop ] < Parent Entry.mChi ldrenSortA rray.lengt h)
1191           {   1188           {
1192              // Return  the parent 's next ch ild   1189              // Return  the parent 's next ch ild
1193              //   1190              //
1194              this.mEntr y = Parent Entry.mChi ldrenSortA rray[this. mPositionS tack[Stack Top]];   1191              this.mEntr y = Parent Entry.mChi ldrenSortA rray[this. mPositionS tack[Stack Top]];
1195     1192  
1196              // Signal  break from  loop   1193              // Signal  break from  loop
1197              //   1194              //
1198              ParentEntr y = null;   1195              ParentEntr y = null;
1199           }   1196           }
1200           el se   1197           el se
1201           {   1198           {
1202              // Last ch ild of par ent, try u p a level   1199              // Last ch ild of par ent, try u p a level
1203              //   1200              //
1204              if (Parent Entry == t his.mItera torScope)   1201              if (Parent Entry == t his.mItera torScope)
1205              {   1202              {
1206                ParentEn try = null ;   1203                ParentEn try = null ;
1207              }   1204              }
1208              else   1205              else
1209              {   1206              {
1210                this.mPa rentStack. length--;   1207                this.mPa rentStack. length--;
1211                this.mPo sitionStac k.length-- ;   1208                this.mPo sitionStac k.length-- ;
1212     1209  
1213                ParentEn try = this .mParentSt ack[this.m ParentStac k.length -  1];   1210                ParentEn try = this .mParentSt ack[this.m ParentStac k.length -  1];
1214              }   1211              }
1215           }   1212           }
1216         }   1213         }
1217       }   1214       }
1218     }   1215     }
1219     1216  
1220     return ( this.mEntr y != null) ;   1217     return ( this.mEntr y != null) ;
1221   }   1218   }
1222     1219  
1223   function   WWHIndexEn try_Object (bParamGro upHeading,   1220   function   WWHIndexEn try_Object (bParamGro upHeading,
1224                                     ParamBook Index,   1221                                     ParamBook Index,
1225                                     ParamText ,   1222                                     ParamText ,
1226                                     ParamLink s,   1223                                     ParamLink s,
1227                                     ParamSeeA lsoKey,   1224                                     ParamSeeA lsoKey,
1228                                     ParamSeeA lsoGroupKe y)   1225                                     ParamSeeA lsoGroupKe y)
1229   {   1226   {
1230     if (bPar amGroupHea ding)   1227     if (bPar amGroupHea ding)
1231     {   1228     {
1232       this.m bGroup  =  true;   1229       this.m bGroup  =  true;
1233       this.m GroupID =  WWHFrame.W WHIndex.mE ntryCount;   1230       this.m GroupID =  WWHFrame.W WHIndex.mE ntryCount;
1234     }   1231     }
1235     else   1232     else
1236     {   1233     {
1237       this.m bGroup = f alse;   1234       this.m bGroup = f alse;
1238     }   1235     }
1239     1236  
1240     this.mTe xt               = Pa ramText;   1237     this.mTe xt               = Pa ramText;
1241     this.mBo okLinks          = nu ll;   1238     this.mBo okLinks          = nu ll;
1242     this.mCh ildren           = nu ll;   1239     this.mCh ildren           = nu ll;
1243     this.mCh ildrenSort Array = nu ll;   1240     this.mCh ildrenSort Array = nu ll;
1244     1241  
1245     if (type of(ParamSe eAlsoKey)  == "string ")   1242     if (type of(ParamSe eAlsoKey)  == "string ")
1246     {   1243     {
1247       this.m SeeAlsoKey  = ParamSe eAlsoKey;   1244       this.m SeeAlsoKey  = ParamSe eAlsoKey;
1248     }   1245     }
1249     if (type of(ParamSe eAlsoGroup Key) == "s tring")   1246     if (type of(ParamSe eAlsoGroup Key) == "s tring")
1250     {   1247     {
1251       this.m SeeAlsoGro upKey = Pa ramSeeAlso GroupKey;   1248       this.m SeeAlsoGro upKey = Pa ramSeeAlso GroupKey;
1252     }   1249     }
1253     1250  
1254     this.fAd dEntry  =  WWHIndexEn try_AddEnt ry;   1251     this.fAd dEntry  =  WWHIndexEn try_AddEnt ry;
1255     this.fA          =  WWHIndexEn try_AddEnt ry;   1252     this.fA          =  WWHIndexEn try_AddEnt ry;
1256     1253  
1257     // Bump  entry coun t if not t he top lev el node   1254     // Bump  entry coun t if not t he top lev el node
1258     //   1255     //
1259     if (Para mBookIndex  != -1)   1256     if (Para mBookIndex  != -1)
1260     {   1257     {
1261       WWHFra me.WWHInde x.mEntryCo unt++;   1258       WWHFra me.WWHInde x.mEntryCo unt++;
1262     }   1259     }
1263     1260  
1264     // Add l inks   1261     // Add l inks
1265     //   1262     //
1266     if ((typ eof(ParamL inks) != " undefined" ) &&   1263     if ((typ eof(ParamL inks) != " undefined" ) &&
1267         (Par amLinks !=  null))   1264         (Par amLinks !=  null))
1268     {   1265     {
1269       this.m BookLinks  = new WWHI ndexEntryB ookHash_Ob ject();   1266       this.m BookLinks  = new WWHI ndexEntryB ookHash_Ob ject();
1270       this.m BookLinks[ ParamBookI ndex] = Pa ramLinks;   1267       this.m BookLinks[ ParamBookI ndex] = Pa ramLinks;
1271     }   1268     }
1272   }   1269   }
1273     1270  
1274   function   WWHIndexEn try_GetKey (ParamGrou pTag,   1271   function   WWHIndexEn try_GetKey (ParamGrou pTag,
1275                                     ParamText ,   1272                                     ParamText ,
1276                                     ParamSort )   1273                                     ParamSort )
1277   {   1274   {
1278     var  Var Key = null ;   1275     var  Var Key = null ;
1279     1276  
1280     1277  
1281     if ((typ eof(ParamT ext) != "u ndefined")  &&   1278     if ((typ eof(ParamT ext) != "u ndefined")  &&
1282         (Par amText !=  null) &&   1279         (Par amText !=  null) &&
1283         (Par amText.len gth > 0))   1280         (Par amText.len gth > 0))
1284     {   1281     {
1285       if ((t ypeof(Para mGroupTag)  != "undef ined") &&   1282       if ((t ypeof(Para mGroupTag)  != "undef ined") &&
1286           (P aramGroupT ag != null ) &&   1283           (P aramGroupT ag != null ) &&
1287           (P aramGroupT ag.length  > 0))   1284           (P aramGroupT ag.length  > 0))
1288       {   1285       {
1289         if ( VarKey ==  null)   1286         if ( VarKey ==  null)
1290         {   1287         {
1291           Va rKey = "";   1288           Va rKey = "";
1292         }   1289         }
1293     1290  
1294         VarK ey += Para mGroupTag;   1291         VarK ey += Para mGroupTag;
1295       }   1292       }
1296     1293  
1297       if ((t ypeof(Para mSort) !=  "undefined ") &&   1294       if ((t ypeof(Para mSort) !=  "undefined ") &&
1298           (P aramSort ! = null) &&   1295           (P aramSort ! = null) &&
1299           (P aramSort.l ength > 0)  &&   1296           (P aramSort.l ength > 0)  &&
1300           (P aramSort ! = ParamTex t))   1297           (P aramSort ! = ParamTex t))
1301       {   1298       {
1302         if ( VarKey ==  null)   1299         if ( VarKey ==  null)
1303         {   1300         {
1304           Va rKey = "";   1301           Va rKey = "";
1305         }   1302         }
1306     1303  
1307         VarK ey += ":"  + ParamSor t;   1304         VarK ey += ":"  + ParamSor t;
1308       }   1305       }
1309     1306  
1310       if (Va rKey == nu ll)   1307       if (Va rKey == nu ll)
1311       {   1308       {
1312         VarK ey = "";   1309         VarK ey = "";
1313       }   1310       }
1314     1311  
1315       VarKey  += ":" +  ParamText;   1312       VarKey  += ":" +  ParamText;
1316     }   1313     }
1317     1314  
1318     return V arKey;   1315     return V arKey;
1319   }   1316   }
1320     1317  
1321   function   WWHIndexEn try_AddEnt ry(ParamTe xt,   1318   function   WWHIndexEn try_AddEnt ry(ParamTe xt,
1322                                       ParamLi nks,   1319                                       ParamLi nks,
1323                                       ParamSo rt,   1320                                       ParamSo rt,
1324                                       ParamGr oupTag,   1321                                       ParamGr oupTag,
1325                                       ParamSe eAlso,   1322                                       ParamSe eAlso,
1326                                       ParamSe eAlsoSort,   1323                                       ParamSe eAlsoSort,
1327                                       ParamSe eAlsoGroup ,   1324                                       ParamSe eAlsoGroup ,
1328                                       ParamSe eAlsoGroup Sort,   1325                                       ParamSe eAlsoGroup Sort,
1329                                       ParamSe eAlsoGroup Tag)   1326                                       ParamSe eAlsoGroup Tag)
1330   {   1327   {
1331     var  bVa rGroupHead ing;   1328     var  bVa rGroupHead ing;
1332     var  Lin ks;   1329     var  Lin ks;
1333     var  Var Key;   1330     var  Var Key;
1334     var  Var SeeAlsoKey ;   1331     var  Var SeeAlsoKey ;
1335     var  Var SeeAlsoGro upKey;   1332     var  Var SeeAlsoGro upKey;
1336     var  Boo kIndex;   1333     var  Boo kIndex;
1337     var  Chi ldEntry;   1334     var  Chi ldEntry;
1338     var  Boo kLinks;   1335     var  Boo kLinks;
1339     var  Max Index;   1336     var  Max Index;
1340     var  Ind ex;   1337     var  Ind ex;
1341     1338  
1342     1339  
1343     // See i f this is  a group he ading   1340     // See i f this is  a group he ading
1344     //   1341     //
1345     if ((typ eof(ParamG roupTag) ! = "undefin ed") &&   1342     if ((typ eof(ParamG roupTag) ! = "undefin ed") &&
1346         (Par amGroupTag  != null)  &&   1343         (Par amGroupTag  != null)  &&
1347         (Par amGroupTag .length >  0))   1344         (Par amGroupTag .length >  0))
1348     {   1345     {
1349       bVarGr oupHeading  = true;   1346       bVarGr oupHeading  = true;
1350     }   1347     }
1351     1348  
1352     // Set l inks if en tries exis t   1349     // Set l inks if en tries exis t
1353     //   1350     //
1354     if ((typ eof(ParamL inks) != " undefined" ) &&   1351     if ((typ eof(ParamL inks) != " undefined" ) &&
1355         (Par amLinks !=  null) &&   1352         (Par amLinks !=  null) &&
1356         (Par amLinks.le ngth > 0))   1353         (Par amLinks.le ngth > 0))
1357     {   1354     {
1358       Links  = ParamLin ks;   1355       Links  = ParamLin ks;
1359     }   1356     }
1360     else   1357     else
1361     {   1358     {
1362       Links  = null;   1359       Links  = null;
1363     }   1360     }
1364     1361  
1365     // See i f this obj ect has an y children   1362     // See i f this obj ect has an y children
1366     //   1363     //
1367     if (this .mChildren  == null)   1364     if (this .mChildren  == null)
1368     {   1365     {
1369       this.m Children =  new WWHIn dexEntryHa sh_Object( );   1366       this.m Children =  new WWHIn dexEntryHa sh_Object( );
1370     }   1367     }
1371     1368  
1372     // Defin e keys   1369     // Defin e keys
1373     //   1370     //
1374     VarKey               = WWHInde xEntry_Get Key(ParamG roupTag, P aramText,  ParamSort) ;   1371     VarKey               = WWHInde xEntry_Get Key(ParamG roupTag, P aramText,  ParamSort) ;
1375     VarSeeAl soKey       = WWHInde xEntry_Get Key(null,  ParamSeeAl so, ParamS eeAlsoSort );   1372     VarSeeAl soKey       = WWHInde xEntry_Get Key(null,  ParamSeeAl so, ParamS eeAlsoSort );
1376     VarSeeAl soGroupKey  = WWHInde xEntry_Get Key(ParamS eeAlsoGrou pTag, Para mSeeAlsoGr oup, Param SeeAlsoGro upSort);   1373     VarSeeAl soGroupKey  = WWHInde xEntry_Get Key(ParamS eeAlsoGrou pTag, Para mSeeAlsoGr oup, Param SeeAlsoGro upSort);
1377     1374  
1378     // Acces s entry, c reating it  if it doe sn't exist   1375     // Acces s entry, c reating it  if it doe sn't exist
1379     //   1376     //
1380     BookInde x = WWHFra me.WWHInde x.mInitInd ex;   1377     BookInde x = WWHFra me.WWHInde x.mInitInd ex;
1381     ChildEnt ry = this. mChildren[ VarKey + " ~"];   1378     ChildEnt ry = this. mChildren[ VarKey + " ~"];
1382     if (type of(ChildEn try) == "u ndefined")   1379     if (type of(ChildEn try) == "u ndefined")
1383     {   1380     {
1384       ChildE ntry = new  WWHIndexE ntry_Objec t(bVarGrou pHeading,  BookIndex,  ParamText ,   1381       ChildE ntry = new  WWHIndexE ntry_Objec t(bVarGrou pHeading,  BookIndex,  ParamText ,
1385                                                 Links, V arSeeAlsoK ey, VarSee AlsoGroupK ey);   1382                                                 Links, V arSeeAlsoK ey, VarSee AlsoGroupK ey);
1386       this.m Children[V arKey + "~ "] = Child Entry;   1383       this.m Children[V arKey + "~ "] = Child Entry;
1387     1384  
1388       // Add  entry to  see also c ollection  if it is a  see also  entry   1385       // Add  entry to  see also c ollection  if it is a  see also  entry
1389       //   1386       //
1390       if (ty peof(VarSe eAlsoKey)  == "string ")   1387       if (ty peof(VarSe eAlsoKey)  == "string ")
1391       {   1388       {
1392         WWHF rame.WWHIn dex.fAddSe eAlsoEntry (ChildEntr y);   1389         WWHF rame.WWHIn dex.fAddSe eAlsoEntry (ChildEntr y);
1393       }   1390       }
1394     }   1391     }
1395     else  //  Child ent ry exists,  update wi th new inf ormation   1392     else  //  Child ent ry exists,  update wi th new inf ormation
1396     {   1393     {
1397       // Add  book link s   1394       // Add  book link s
1398       //   1395       //
1399       if (Li nks != nul l)   1396       if (Li nks != nul l)
1400       {   1397       {
1401         if ( ChildEntry .mBookLink s == null)   1398         if ( ChildEntry .mBookLink s == null)
1402         {   1399         {
1403           Ch ildEntry.m BookLinks  = new WWHI ndexEntryB ookHash_Ob ject();   1400           Ch ildEntry.m BookLinks  = new WWHI ndexEntryB ookHash_Ob ject();
1404         }   1401         }
1405     1402  
1406         if ( typeof(Chi ldEntry.mB ookLinks[B ookIndex])  == "undef ined")   1403         if ( typeof(Chi ldEntry.mB ookLinks[B ookIndex])  == "undef ined")
1407         {   1404         {
1408           Ch ildEntry.m BookLinks[ BookIndex]  = Links;   1405           Ch ildEntry.m BookLinks[ BookIndex]  = Links;
1409         }   1406         }
1410         else   1407         else
1411         {   1408         {
1412           //  Append ne w links   1409           //  Append ne w links
1413           //   1410           //
1414           Bo okLinks =  ChildEntry .mBookLink s[BookInde x];   1411           Bo okLinks =  ChildEntry .mBookLink s[BookInde x];
1415           fo r (MaxInde x = Links. length, In dex = 0 ;  Index < Ma xIndex ; I ndex++)   1412           fo r (MaxInde x = Links. length, In dex = 0 ;  Index < Ma xIndex ; I ndex++)
1416           {   1413           {
1417              BookLinks[ BookLinks. length] =  Links[Inde x];   1414              BookLinks[ BookLinks. length] =  Links[Inde x];
1418           }   1415           }
1419         }   1416         }
1420       }   1417       }
1421     }   1418     }
1422     1419  
1423     return C hildEntry;   1420     return C hildEntry;
1424   }   1421   }
1425     1422  
1426   function   WWHIndexEn try_SortCh ildren(Par amEntry)   1423   function   WWHIndexEn try_SortCh ildren(Par amEntry)
1427   {   1424   {
1428     var  Uns ortedArray ;   1425     var  Uns ortedArray ;
1429     var  Key Hash = new  Object();   1426     var  Key Hash = new  Object();
1430     var  Sor tedArray;   1427     var  Sor tedArray;
1431     var  Var Key;   1428     var  Var Key;
1432     var  Var KeyTrimmed ;   1429     var  Var KeyTrimmed ;
1433     var  Var KeyUpperCa se;   1430     var  Var KeyUpperCa se;
1434     var  Var SortKey;   1431     var  Var SortKey;
1435     var  Max Index;   1432     var  Max Index;
1436     var  Ind ex;   1433     var  Ind ex;
1437     1434  
1438     1435  
1439     // Accum ulate hash  keys   1436     // Accum ulate hash  keys
1440     //   1437     //
1441     Unsorted Array = ne w Array();   1438     Unsorted Array = ne w Array();
1442     for (Var Key in Par amEntry.mC hildren)   1439     for (Var Key in Par amEntry.mC hildren)
1443     {   1440     {
1444       VarKey Trimmed =  VarKey.sub string(1,  VarKey.len gth - 1);   1441       VarKey Trimmed =  VarKey.sub string(1,  VarKey.len gth - 1);
1445       VarKey UpperCase  = VarKeyTr immed.toUp perCase();   1442       VarKey UpperCase  = VarKeyTr immed.toUp perCase();
1446       VarSor tKey = Var KeyUpperCa se + ":" +  VarKey;   1443       VarSor tKey = Var KeyUpperCa se + ":" +  VarKey;
1447     1444  
1448       Unsort edArray[Un sortedArra y.length]  = VarSortK ey;   1445       Unsort edArray[Un sortedArra y.length]  = VarSortK ey;
1449       KeyHas h[VarSortK ey] = VarK ey;   1446       KeyHas h[VarSortK ey] = VarK ey;
1450     }   1447     }
1451     1448  
1452     // Insur e array ex ists   1449     // Insur e array ex ists
1453     //   1450     //
1454     if (Unso rtedArray. length > 0 )   1451     if (Unso rtedArray. length > 0 )
1455     {   1452     {
1456       // Sor t array   1453       // Sor t array
1457       //   1454       //
1458       Sorted Array = Un sortedArra y.sort();   1455       Sorted Array = Un sortedArra y.sort();
1459     1456  
1460       // Rep lace sort  keys with  entries   1457       // Rep lace sort  keys with  entries
1461       //   1458       //
1462       for (M axIndex =  SortedArra y.length,  Index = 0  ; Index <  MaxIndex ;  Index++)   1459       for (M axIndex =  SortedArra y.length,  Index = 0  ; Index <  MaxIndex ;  Index++)
1463       {   1460       {
1464         VarS ortKey = S ortedArray [Index];   1461         VarS ortKey = S ortedArray [Index];
1465         if ( (typeof(Ke yHash[VarS ortKey]) ! = "undefin ed") &&   1462         if ( (typeof(Ke yHash[VarS ortKey]) ! = "undefin ed") &&
1466              (KeyHash[V arSortKey]  != null))   1463              (KeyHash[V arSortKey]  != null))
1467         {   1464         {
1468           Va rKey = Key Hash[VarSo rtKey];   1465           Va rKey = Key Hash[VarSo rtKey];
1469           So rtedArray[ Index] = P aramEntry. mChildren[ VarKey];   1466           So rtedArray[ Index] = P aramEntry. mChildren[ VarKey];
1470         }   1467         }
1471       }   1468       }
1472     }   1469     }
1473     else   1470     else
1474     {   1471     {
1475       // No  children,  possible e rror occur red?   1472       // No  children,  possible e rror occur red?
1476       //   1473       //
1477       Sorted Array = ne w Array();   1474       Sorted Array = ne w Array();
1478     }   1475     }
1479     1476  
1480     // Set c hildren so rt array   1477     // Set c hildren so rt array
1481     // Clear  hash tabl e as it is  no longer  needed   1478     // Clear  hash tabl e as it is  no longer  needed
1482     //   1479     //
1483     ParamEnt ry.mChildr enSortArra y = Sorted Array;   1480     ParamEnt ry.mChildr enSortArra y = Sorted Array;
1484     ParamEnt ry.mChildr en = null;   1481     ParamEnt ry.mChildr en = null;
1485   }   1482   }
1486     1483  
1487   function   WWHIndexEn tryHash_Ob ject()   1484   function   WWHIndexEn tryHash_Ob ject()
1488   {   1485   {
1489   }   1486   }
1490     1487  
1491   function   WWHIndexEn tryBookHas h_Object()   1488   function   WWHIndexEn tryBookHas h_Object()
1492   {   1489   {
1493   }   1490   }
1494     1491  
1495   function   WWHSection Cache_Obje ct()   1492   function   WWHSection Cache_Obje ct()
1496   {   1493   {
1497   }   1494   }
1498     1495  
1499   function   WWHIndexOp tions_Obje ct()   1496   function   WWHIndexOp tions_Obje ct()
1500   {   1497   {
1501     this.mTh reshold      = 0;   1498     this.mTh reshold      = 0;
1502     1499  
1503     this.fSe tThreshold  = WWHInde xOptions_S etThreshol d;   1500     this.fSe tThreshold  = WWHInde xOptions_S etThreshol d;
1504     this.fSe tSeperator  = WWHInde xOptions_S etSeperato r;   1501     this.fSe tSeperator  = WWHInde xOptions_S etSeperato r;
1505   }   1502   }
1506     1503  
1507   function   WWHIndexOp tions_SetT hreshold(P aramThresh old)   1504   function   WWHIndexOp tions_SetT hreshold(P aramThresh old)
1508   {   1505   {
1509     this.mTh reshold =  ParamThres hold;   1506     this.mTh reshold =  ParamThres hold;
1510   }   1507   }
1511     1508  
1512   function   WWHIndexOp tions_SetS eperator(P aramSepera tor)   1509   function   WWHIndexOp tions_SetS eperator(P aramSepera tor)
1513   {   1510   {
1514     this.mSe perator =  ParamSeper ator;   1511     this.mSe perator =  ParamSeper ator;
1515   }   1512   }