home *** CD-ROM | disk | FTP | other *** search
- /////////////////////////////////////////////////////////////////////////////
- // RoboHELP« WebHelp 4 Dynamic HTML Effects Script
- // Copyright ⌐ 1998-2000 eHelp Corporation. All rights reserved.
-
- // Version= 4.10
-
- // Warning: Do not modify this file. It is generated by RoboHELP« and changes will be overwritten.
-
- //{{WH3_SYMBOL_SECTION
- var gstrNavFrmst = "navpane1.htm";
- var gstrTocDhtml = "tocdhtml.htm";
- var gstrIdxDhtml = "idxdhtml.htm";
- var gstrFtsDhtml = "ftsdhtml.htm";
- var gstrIniDhtml = "tocdhtml.htm";
- var gstrBlankhtml = "_blank.htm";
-
- //}}WH3_SYMBOL_SECTION
-
- var gnPageWidth = 0;
- var gnPageHeight = 0;
- var gstrColl = "";
- var gstrStyle = ""
- var gbNav4 = false;
- var gbIE4 = false;
- var gbIE = false;
- var gbIE5 = false;
- var gbIE55 = false;
- var gbTocLoaded = false;
- var gbIndexLoaded = false;
- var gbFtsLoaded = false;
- var gAgent = navigator.userAgent.toLowerCase();
- var gbMac = (gAgent.indexOf("mac") != -1);
-
- var gbIndexInputEnable = false;
- var gIndexTopicArray = new Array();
- var gIndexKeywordArray = new Array();
- var gIndexLetterArray = new Array();
-
- var gbFtsInputEnable = false;
- var gFtsKeywordArray = new Array();
- var gFtsTopicArray = new Array();
- var gFtsStopArray = new Array();
-
- gbIE = (navigator.appName.indexOf("Microsoft") != -1);
- if (parseInt(navigator.appVersion) >= 4) {
- gbNav4 = (navigator.appName == "Netscape");
- gbIE4 = (navigator.appName.indexOf("Microsoft") != -1);
- }
- if (gbNav4) {
- document.gnPageWidth = innerWidth;
- document.gnPageHeight = innerHeight;
- // document.captureEvents(Event.RESIZE);
- // document.onresize = HandleResize;
- } else if (gbIE4) {
- gstrStyle = ".style";
- gstrColl = "all.";
- if (gAgent.indexOf("msie 5") != -1) {
- gbIE5 = true;
- }
- if (gAgent.indexOf("msie 5.5") != -1) {
- gbIE55 = true;
- }
- }
-
- function HandleResize()
- {
- if (innerWidth != window.document.gnPageWidth || innerHeight != window.document.gnPageHeight) {
- if (window.document.gnPageWidth == 0) {
- window.document.gnPageWidth = innerWidth;
- window.document.gnPageHeight = innerHeight;
- } else {
- window.document.gnPageWidth = innerWidth;
- window.document.gnPageHeight = innerHeight;
- window.document.location.reload();
- }
- return false;
- }
- }
-
-
- function FindTopLevelLayer(strID)
- {
- if (gbNav4) {
- return FindTopLevelLayerNS(strID);
- } else if (gbIE4) {
- var obj = eval("document.all." + strID);
- return obj;
- }
- return null;
- }
-
- function FindTopLevelLayerNS(strID)
- {
- for (var iLayer = 0; iLayer < window.document.layers.length; iLayer++) {
- if (window.document.layers[iLayer].id == strID) {
- return window.document.layers[iLayer];
- }
- }
-
- // This section is added to the search because when the scrollbar is
- // added, Netscape messes up the layer list. This is another way
- // of getting to the layers
- if (window.document.layers.length > 0) {
- var iLayer = 0;
- var objLayer = window.document.layers[0];
- while ((iLayer < 20) && (objLayer != null)) {
- if (objLayer.id == strID) {
- return objLayer;
- }
- iLayer++;
- objLayer = objLayer.above;
- }
- }
- return null;
- }
-
- function GetAttribObject(obj)
- {
- var objAttrib = null;
- if (typeof obj == "string") {
- objAttrib = eval("document." + gstrColl + obj + gstrStyle);
- } else {
- objAttrib = obj;
- }
- return objAttrib;
- }
-
-
- function TabFrame()
- {
- if (gbNav4) {
- return Tabs;
- } else {
- return document.frames['Tabs'];
- }
- }
-
- function NavFrame()
- {
- if (gbNav4) {
- return Navigation;
- } else {
- return document.frames['Navigation'];
- }
- }
-
- function GetIFrameByDiv(div)
- {
- var cIframe;
- if ((frames.length > 0) &&
- (div != null) &&
- (div.id != null))
- {
- if (div.id == "TocNav")
- cIframe = frames[0];
- else if (div.id == "IndexNav")
- cIframe = frames[1];
- else if (div.id == "FtsNav")
- cIframe = frames[2];
- }
- return cIframe;
- }
-
-
- function ShowDiv(strDiv, bShow)
- {
- var Div = FindTopLevelLayer(strDiv);
- if (Div == null) {
- return;
- }
-
- if (gbNav4) {
- if (bShow == true) {
- Div.visibility = 'show';
- // Div.left = 0;
- Div.moveToAbsolute(0, 0);
- } else {
- Div.visibility = 'hide';
- // Div.left = -2000;
- Div.moveToAbsolute(-2000, 0);
- }
- } else {
- if (gbIE55)
- {
- var curIframe = GetIFrameByDiv(Div);
- if (bShow)
- {
- Div.style.zIndex = 3;
- if (curIframe != null)
- {
- curIframe.frameElement.style.zIndex=3;
- curIframe.frameElement.style.visibility = "visible";
- }
- }
- else
- {
- Div.style.zIndex = 2;
- if (curIframe != null)
- {
- curIframe.frameElement.style.zIndex= 2;
- curIframe.frameElement.style.visibility = "hidden";
- }
- }
- }
-
- Div.style.visibility = (bShow == true) ? 'visible' : 'hidden';
- }
- return;
- }
-
- function LoadTocContent(TocDiv)
- {
- gbTocLoaded = true;
- return;
- }
-
- function SyncTocContent(strtocURL)
- {
- var TocDiv = this.FindTopLevelLayer('TocNav');
- if (TocDiv.document.all.TocIFrame == null) return;
-
- var strFile = TocDiv.document.all.TocIFrame.document.location.href;
- var strHash = TocDiv.document.all.TocIFrame.document.location.hash;
- if (strHash.length > 0) {
- strFile = strFile.substring(0, strFile.length - strHash.length);
- }
-
- var strHash = "";
- if (strtocURL.length > 0) {
- strHash = "#" + strtocURL;
- }
- if (strHash.length > 0) {
- strFile += strHash;
- }
- if (gbNav4) {
- TocDiv.src = strFile;
- } else if (gbIE4) {
- // no refresh.
- // but we need to switch div , if need.
- if (parent.TabFrame().document.images['TocTab'] != null) {
- parent.TabFrame().document.images['TocTab'].src='bssctab1.gif';
- }
- if (parent.TabFrame().document.images['IndexTab'] != null) {
- parent.TabFrame().document.images['IndexTab'].src='bssctab4.gif';
- }
- if (parent.TabFrame().document.images['FtsTab'] != null) {
- parent.TabFrame().document.images['FtsTab'].src='bssctab6.gif';
- }
- ShowDiv('TocNav', true);
- ShowDiv('IndexNav', false);
- ShowDiv('FtsNav', false);
- TOCFocusA();
- if (document.frames['TocIFrame'] != null) // sure. we can access this iframe.
- document.frames['TocIFrame'].window.NavBar_SyncToc(strtocURL);
-
- // parent.document.strtocURL = strtocURL;
- // TocDiv.document.location.reload();
- }
- gbTocLoaded = true;
- return;
- }
-
- function TOCFocusA()
- {
- if (gbIE55)
- {
- var TocDiv = FindTopLevelLayer('TocNav');
- if (TocDiv && TocDiv.document && TocDiv.document.frames['TocIFrame'])
- {
- TocDiv = TocDiv.document.frames['TocIFrame'];
- if (TocDiv)
- TocDiv.focus();
- }
- }
- }
-
- function LoadIndexContent(IndexDiv)
- {
- var strFile = location.href;
- var nPosFile = strFile.indexOf(gstrNavFrmst);
- strFile = strFile.substring(0, nPosFile);
- strFile += gstrIdxDhtml;
- if (gbNav4) {
- IndexDiv.src = strFile;
- } else if (gbIE4) {
- // IndexDiv.document.frames['IndexIFrame'].location.href = strFile;
- IndexDiv.document.all.IndexIFrame.src = strFile;
- }
- gbIndexLoaded = true;
- return;
- }
-
- function LoadFtsContent(FtsDiv)
- {
- var strFile = location.href;
- var nPosFile = strFile.indexOf(gstrNavFrmst);
- strFile = strFile.substring(0, nPosFile);
- strFile += gstrFtsDhtml;
- if (gbNav4) {
- FtsDiv.src = strFile;
- } else if (gbIE4) {
- // FtsDiv.document.frames['FtsIFrame'].location.href = strFile;
- FtsDiv.document.all.FtsIFrame.src = strFile;
- }
- gbFtsLoaded = true;
- return;
- }
-
-
- function TimeoutChangeToTOC()
- {
- if (!gbTocLoaded) {
- var TocDiv = window.NavFrame().FindTopLevelLayer('TocNav');
- if (TocDiv != null) {
- LoadTocContent(TocDiv);
- }
- }
- if (window.TabFrame().document.images['TocTab'] != null) {
- window.TabFrame().document.images['TocTab'].src='bssctab1.gif';
- }
- if (window.TabFrame().document.images['IndexTab'] != null) {
- window.TabFrame().document.images['IndexTab'].src='bssctab4.gif';
- }
- if (window.TabFrame().document.images['FtsTab'] != null) {
- window.TabFrame().document.images['FtsTab'].src='bssctab6.gif';
- }
- window.NavFrame().ShowDiv('TocNav', true);
- window.NavFrame().ShowDiv('IndexNav', false);
- window.NavFrame().ShowDiv('FtsNav', false);
- if (gbNav4 && window.NavFrame().window.NSscrollbar) {
- NavFrame().window.NSscrollbar.SetActiveLayer(NavFrame().FindTopLevelLayer('TocNav'));
- }
- }
-
-
- function ChangeToTOC()
- {
- setTimeout("TimeoutChangeToTOC();", 50);
- return;
- }
-
- function SelectTOC()
- {
- if (!gbTocLoaded) {
- var TocDiv = NavFrame().FindTopLevelLayer('TocNav');
- if (TocDiv != null) {
- LoadTocContent(TocDiv);
- }
- }
- if (TabFrame().document.images['TocTab'] != null) {
- TabFrame().document.images['TocTab'].src='bssctab1.gif';
- }
- if (TabFrame().document.images['IndexTab'] != null) {
- TabFrame().document.images['IndexTab'].src='bssctab4.gif';
- }
- if (TabFrame().document.images['FtsTab'] != null) {
- TabFrame().document.images['FtsTab'].src='bssctab6.gif';
- }
- NavFrame().ShowDiv('TocNav', true);
- NavFrame().ShowDiv('IndexNav', false);
- NavFrame().ShowDiv('FtsNav', false);
- if (gbNav4 && NavFrame().window.NSscrollbar) {
- NavFrame().window.NSscrollbar.SetActiveLayer(NavFrame().FindTopLevelLayer('TocNav'));
- }
-
- setTimeout("TOCFocus()", 200);
- }
-
- function TimeoutChangeToIndex()
- {
- if (!gbIndexLoaded) {
- var IndexDiv = window.NavFrame().FindTopLevelLayer('IndexNav');
- if (IndexDiv != null) {
- LoadIndexContent(IndexDiv);
- }
- }
- if (window.TabFrame().document.images['TocTab'] != null) {
- window.TabFrame().document.images['TocTab'].src='bssctab2.gif';
- }
- if (window.TabFrame().document.images['IndexTab'] != null) {
- window.TabFrame().document.images['IndexTab'].src='bssctab3.gif';
- }
- if (window.TabFrame().document.images['FtsTab'] != null) {
- window.TabFrame().document.images['FtsTab'].src='bssctab6.gif';
- }
- window.NavFrame().ShowDiv('TocNav', false);
- window.NavFrame().ShowDiv('IndexNav', true);
- window.NavFrame().ShowDiv('FtsNav', false);
- if (gbNav4 && window.NavFrame().window.NSscrollbar) {
- NavFrame().window.NSscrollbar.SetActiveLayer(NavFrame().FindTopLevelLayer('IndexNav'));
- }
- }
-
-
- function ChangeToIndex()
- {
- setTimeout("TimeoutChangeToIndex();", 50);
- }
-
- function SelectIndex()
- {
- if (!gbIndexLoaded) {
- var IndexDiv = NavFrame().FindTopLevelLayer('IndexNav');
- if (IndexDiv != null) {
- LoadIndexContent(IndexDiv);
- }
- }
- if (TabFrame().document.images['TocTab'] != null) {
- TabFrame().document.images['TocTab'].src='bssctab2.gif';
- }
- if (TabFrame().document.images['IndexTab'] != null) {
- TabFrame().document.images['IndexTab'].src='bssctab3.gif';
- }
- if (TabFrame().document.images['FtsTab'] != null) {
- TabFrame().document.images['FtsTab'].src='bssctab6.gif';
- }
- NavFrame().ShowDiv('TocNav', false);
- NavFrame().ShowDiv('IndexNav', true);
- NavFrame().ShowDiv('FtsNav', false);
- if (gbNav4 && NavFrame().window.NSscrollbar) {
- NavFrame().window.NSscrollbar.SetActiveLayer(NavFrame().FindTopLevelLayer('IndexNav') );
- }
-
- setTimeout("IndexFocus()", 200);
- }
-
-
- function SelectFTS()
- {
- var FtsDiv = NavFrame().FindTopLevelLayer('FtsNav');
- if (!gbFtsLoaded) {
- if (FtsDiv != null) {
- LoadFtsContent(FtsDiv);
- }
- }
- if (TabFrame().document.images['TocTab'] != null) {
- TabFrame().document.images['TocTab'].src='bssctab2.gif';
- }
- if (TabFrame().document.images['IndexTab'] != null) {
- TabFrame().document.images['IndexTab'].src='bssctab4.gif';
- }
- if (TabFrame().document.images['FtsTab'] != null) {
- TabFrame().document.images['FtsTab'].src='bssctab5.gif';
- }
- NavFrame().ShowDiv('TocNav', false);
- NavFrame().ShowDiv('IndexNav', false);
- NavFrame().ShowDiv('FtsNav', true);
- if (gbNav4 && NavFrame().window.NSscrollbar) {
- NavFrame().window.NSscrollbar.SetActiveLayer(NavFrame().FindTopLevelLayer('FtsNav'));
- }
-
- setTimeout("FTSFocus()", 200);
- }
-
- function TOCFocus()
- {
- if (gbIE55)
- {
- var TocDiv = NavFrame().FindTopLevelLayer('TocNav');
- if (TocDiv && TocDiv.document && TocDiv.document.frames['TocIFrame'])
- {
- TocDiv = TocDiv.document.frames['TocIFrame'];
- if (TocDiv)
- TocDiv.focus();
- }
- }
- }
-
-
- function FTSFocus()
- {
- var FtsDiv = NavFrame().FindTopLevelLayer('FtsNav');
- if (gbIE4) {
- if (FtsDiv && FtsDiv.document && FtsDiv.document.frames['FtsIFrame'] &&
- FtsDiv.document.frames['FtsIFrame'].frames['ftsform'])
- FtsDiv = FtsDiv.document.frames['FtsIFrame'].frames['ftsform'];
- }
-
- if (FtsDiv && FtsDiv.FtsInputForm != null) {
- FtsDiv.FtsInputForm.ftsField.focus();
- }
- }
-
- function IndexFocus()
- {
-
- var IndexDiv = NavFrame().FindTopLevelLayer('IndexNav');
- if (gbIE4) {
- if (IndexDiv && IndexDiv.document && IndexDiv.document.frames['IndexIFrame'] &&
- IndexDiv.document.frames['IndexIFrame'].frames['idxform'])
- IndexDiv = IndexDiv.document.frames['IndexIFrame'].frames['idxform'];
- }
- if (IndexDiv && IndexDiv.IndexInputForm != null) {
- IndexDiv.IndexInputForm.keywordField.focus();
- }
- }
-
- function SelectInitialTab()
- {
- // Create the necessary IFrames for IE
- if (gbIE4) {
- if (FindTopLevelLayer('TocNav') != null) {
- var nIFrameHeight = FindTopLevelLayer('TocNav').style.pixelHeight - 10;
- var strIFrame = '<IFRAME ID="TocIFrame" SRC="' + gstrTocDhtml + '" BORDER=0 FRAMEBORDER=no STYLE="position:absolute; left:2%; width:92%; height:';
- if (gbMac) {
- strIFrame += nIFrameHeight + 'px;"></IFRAME>';
- } else {
- strIFrame += '100%;"></IFRAME>';
- }
- FindTopLevelLayer('TocNav').innerHTML = strIFrame;
- }
- if (FindTopLevelLayer('IndexNav') != null) {
- var nIFrameHeight = FindTopLevelLayer('IndexNav').style.pixelHeight - 10;
- var strIFrame = '<IFRAME ID="IndexIFrame" SRC="' + gstrBlankhtml + '" BORDER=0 FRAMEBORDER=no STYLE="position:absolute; left:2%; width:92%; height:';
- if (gbMac) {
- strIFrame += nIFrameHeight + 'px;"></IFRAME>';
- } else {
- strIFrame += '100%;"></IFRAME>';
- }
- FindTopLevelLayer('IndexNav').innerHTML = strIFrame;
- }
-
- if (FindTopLevelLayer('FtsNav') != null) {
- var nIFrameHeight = FindTopLevelLayer('FtsNav').style.pixelHeight - 10;
- var strIFrame = '<IFRAME ID="FtsIFrame" SRC="' + gstrBlankhtml + '" BORDER=0 FRAMEBORDER=no STYLE="position:absolute; left:2%; width:92%; height:';
- if (gbMac) {
- strIFrame += nIFrameHeight + 'px;"></IFRAME>';
- } else {
- strIFrame += '100%;"></IFRAME>';
- }
- FindTopLevelLayer('FtsNav').innerHTML = strIFrame;
- }
- }
-
- // Call the real selection function
- setTimeout("SelectInitTabReal()", 50);
- }
-
- function SelectInitTabReal()
- {
- parent.gbTocLoaded = false;
- parent.gbIndexLoaded = false;
- parent.gbFtsLoaded = false;
-
- if (gstrIniDhtml == gstrTocDhtml) {
- parent.SelectTOC();
- } else if (gstrIniDhtml == gstrIdxDhtml) {
- parent.SelectIndex();
- } else if (gstrIniDhtml == gstrFtsDhtml) {
- parent.SelectFTS();
- }
-
- // if (FindTopLevelLayer('TocNav') != null) {
- // parent.SelectTOC();
- // } else if (FindTopLevelLayer('IndexNav') != null) {
- // parent.SelectIndex();
- // } else if (FindTopLevelLayer('FtsNav') != null) {
- // parent.SelectFTS();
- // }
- }
-
-
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- //
- // Index code
- //
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- var gbIndexLayerInit = false;
- function IndexInitPage()
- {
- parent.gbIndexLayerInit = false;
- if (gbNav4) {
- TocBuildLayerArrayNS();
- onLoad = TocArrangeAllLayerNS();
- } else if (gbIE4) {
-
- // Mark all Index blocks as "expanded"
- var tempColl = document.all.tags("DIV");
- for (var i = 0; i < tempColl.length; i++) {
- if (tempColl(i).className == "child") tempColl(i).style.display = "block";
- }
-
- // Make an array of parents so we can access them directly
- var tempColl = document.all.tags("DIV");
- var iLetterIndex = 0;
- var nACharCode = "A".charCodeAt(0);
- for (var i = 0; i < tempColl.length; i++) {
- if (tempColl(i).className == "parent") {
- if (tempColl(i).innerText == "#") {
- gIndexLetterArray[0] = tempColl(i);
- } else {
- iLetterIndex = tempColl(i).innerText.charCodeAt(0);
- iLetterIndex -= nACharCode;
- iLetterIndex += 1;
- gIndexLetterArray[iLetterIndex] = tempColl(i);
- }
- }
- }
- }
- setTimeout("parent.gbIndexLayerInit = true;",1000);
- return;
- }
-
- function IndexWriteClassStyle()
- {
- document.write("<STYLE TYPE='text/css'>");
- if (gbNav4) {
- document.write(".IndexItem {visibility:inherit; font-size:9pt;}");
- document.write(".parent {font-size:10pt; position:absolute; visibility:hidden}");
- document.write(".child {font-size:10pt; position:absolute; visibility:hidden}");
- document.write("BLOCKQUOTE {margin-top:0pt; margin-bottom:0pt; margin-left:-15pt;}");
- document.write("DIV {margin-left:10pt; margin-top:0pt; margin-bottom:0pt}");
- document.write("P {margin-top:0pt; margin-bottom:0pt}");
- document.write("A:link {text-decoration: none; color: 000000}");
- document.write("A:visited {text-decoration: none; color: 333333}");
- document.write("A:active {text-decoration: none; background-color: #cccccc}");
- document.write("A:hover {text-decoration: underline; color: 007f00}");
- } else if (gbIE4) {
- if (gbMac) {
- if (gbIE5) {
- document.write(".IndexItem {visibility:inherit; font-size:10pt;}");
- document.write(".parent {font-size:10pt;}");
- document.write("BLOCKQUOTE {margin-top:0pt; margin-bottom:0pt; margin-left:15pt;}");
- document.write("P {font-family:'Arial'; color:#cccccc; font-size:10pt; margin-top:0pt; margin-bottom:0pt;}");
- document.write("H6 {font-family:'Arial'; color:#cccccc; font-size:10pt; margin-top:0pt; margin-bottom:0pt; font-style:normal;font-weight:normal;}");
- document.write("H6.firstsub {font-family:'Arial'; color:#cccccc; font-size:10pt; margin-top:0pt; margin-bottom:0pt; font-style:normal;font-weight:normal;}");
- } else {
-
- document.write(".IndexItem {visibility:inherit; font-size:12pt;}");
- document.write(".parent {font-size:14pt;}");
- document.write("BLOCKQUOTE {margin-top:0pt; margin-bottom:0pt; margin-left:15pt;}");
- document.write("P {font-family:'Arial'; color:#cccccc; font-size:12pt; margin-top:0pt; margin-bottom:0pt;}");
- document.write("H6 {font-family:'Arial'; color:#cccccc; font-size:12pt; margin-top:0pt; margin-bottom:0pt; font-style:normal;font-weight:normal;}");
- document.write("H6.firstsub {font-family:'Arial'; color:#cccccc; font-size:12pt; margin-top:-10pt; margin-bottom:0pt; font-style:normal;font-weight:normal;}");
- }
- } else {
- document.write(".IndexItem {visibility:inherit; font-size:8pt;}");
- document.write(".parent {font-size:10pt;}");
- document.write("BLOCKQUOTE {margin-top:0pt; margin-bottom:0pt; margin-left:15pt;}");
- document.write("P {font-family:'Arial'; color:#cccccc; font-size:9pt; margin-top:0pt; margin-bottom:0pt;}");
- document.write("H6 {font-family:'Arial'; color:#cccccc; font-size:9pt; margin-top:0pt; margin-bottom:0pt; font-style:normal;font-weight:normal;}");
- }
- document.write(".child {display:block}");
- document.write("DIV {margin-top:0pt; margin-bottom:0pt}");
- document.write("A:link {text-decoration: none; color: 000000}");
- document.write("A:visited {text-decoration: none; color: 333333}");
- document.write("A:active {text-decoration: none; background-color: #cccccc}");
- document.write("A:hover {text-decoration: underline; color: 007f00}");
- }
- document.write("</STYLE>");
- return;
- }
-
- //Define variable arguments as: strTitle, strUrl
- function TopicEntry()
- {
- var argLen = TopicEntry.arguments.length;
- this.strTitle = TopicEntry.arguments[0];
- this.strURL = TopicEntry.arguments[1];
- }
-
- //Define variable arguments as: strKeyword [,strTopicIndex]*
- function IndexKeywordEntry()
- {
- var argLen = IndexKeywordEntry.arguments.length;
- this.strKeyword = IndexKeywordEntry.arguments[0];
- this.arrayTopics = new Array();
-
- // Now add all of the topic entries
- for (var i=0; i < argLen - 1; i++) {
- this.arrayTopics[i] = IndexKeywordEntry.arguments[i + 1];
- }
- }
-
-
- function IndexBody()
- {
- // Get the appropriate item to add items to
- var layerFind = null;
- if (gbIE4) {
- layerFind = parent.document.frames['idxbody'];
- } else if (gbNav4) {
- layerFind = parent.document.idxbody.document;
- }
-
- return layerFind;
- }
-
- function IndexForm()
- {
- // Get the appropriate item to add items to
- var layerFind = null;
- if (gbIE4) {
- layerFind = parent.document.frames['idxform'];
- } else if (gbNav4) {
- layerFind = parent.document.idxform.document;
- }
-
- return layerFind;
- }
-
- function IndexExpandIt(elId, bForceOpen)
- {
- var layerChild = null;
- if (gbIE4) {
- layerChild = TocExpandIE(elId, false, bForceOpen);
-
- if (!bForceOpen) {
- var nNewScroll = document.body.scrollTop;
- if (layerChild.style.display == "block") {
- var nItemTop = layerChild.offsetTop;
- var nItemBottom = nItemTop + layerChild.offsetHeight;
- // Make sure the bottom is visible if possible
- if (document.body.scrollTop + document.body.clientHeight < nItemBottom) {
- nNewScroll = nItemBottom - document.body.clientHeight;
- }
- // If expanded item is bigger than the client area, scroll the item to the top
- if (nItemBottom - nItemTop > document.body.clientHeight) {
- nNewScroll = nItemTop - 20;
- }
- }
- document.body.scrollTop = nNewScroll;
- }
- } else if (gbNav4) {
- layerChild = TocExpandNS(elId, false, bForceOpen);
- if (window.NSscrollbar != null) {
- window.NSscrollbar.SetContentHeight(nextY);
- window.NSscrollbar.SetContentWidth(nextX);
- }
- }
- return layerChild;
- }
-
-
- function IndexInputEnable(bEnable)
- {
- gbIndexInputEnable = bEnable;
- return;
- }
-
- function IndexInputSubmit()
- {
- IndexLookup(true);
- return;
- }
-
- //Initize the site
- function IndexSiteInit()
- {
- if (!window.Array) return;
-
- if (gbNav4) document.captureEvents(Event.KEYUP);
- document.onkeyup = IndexLookupKeydown;
- }
-
- function IndexLookupKeydown()
- {
- IndexLookup(false);
- }
-
- function IndexLookup(bCR)
- {
- if (!parent.gbIndexLayerInit) {
- return;
- }
-
- if (!gbIndexInputEnable && !gbMac) {
- return;
- }
-
- var strInput = document.IndexInputForm.keywordField.value.toUpperCase();
- if (strInput != "") {
- IndexSiteDisplay(strInput, bCR);
- }
-
- if (gbMac) {
- document.IndexInputForm.keywordField.focus();
- }
-
- return;
- }
-
- function IndexSiteDisplay(strInput, bCR)
- {
- // Get the topmost Index layer
- var IndexDiv = IndexBody();
-
- // Get the layer for the first letter
- var cFirst = strInput.charAt(0);
- cFirst.toUpperCase();
- var layerFirst = null;
- if (gbNav4) {
- for (var iLayer = 0; iLayer < document.layers.length; iLayer++) {
- if ((document.layers[iLayer].id.indexOf("Parent") != -1) &&
- (document.layers[iLayer].id.charAt(0) == cFirst)) {
- layerFirst = document.layers[iLayer];
- break;
- }
- }
- if (layerFirst == null) {
- layerFirst = document.BookR0000000Parent;
- }
- } else if (gbIE4) {
-
- var iLetterIndex = cFirst.charCodeAt(0) - "A".charCodeAt(0) + 1;
- if ((iLetterIndex < 1) || (iLetterIndex > 26)) {
- layerFirst = IndexDiv.gIndexLetterArray[0];
- } else {
- layerFirst = IndexDiv.gIndexLetterArray[iLetterIndex];
- }
- }
-
- // If we didn't find anything then return - something went terribly wrong
- if (layerFirst == null) {
- return;
- }
-
- // Expand the first layer
- var strLayerID = layerFirst.id;
- var iParent = strLayerID.indexOf("Parent");
- strLayerID = strLayerID.substr(0, iParent);
-
- var layerChild = IndexDiv.IndexExpandIt(strLayerID, true);
-
- // Find the first child that "matches" the item we are searchig for
- var MatchingItem = null;
- if (gbNav4) {
- } else if (gbIE4) {
-
- var tempColl = layerChild.all.tags("P");
- if (tempColl.length == 0) {
- MatchingItem = layerChild;
- } else {
- var iStart = 0;
- var iEnd = tempColl.length - 1;
- var iMid = 0;
- var strItemUpper = "";
- while (iStart <= iEnd) {
- iMid = iStart + iEnd;
- iMid >>= 1;
- strItemUpper = tempColl(iMid).innerText;
- strItemUpper = strItemUpper.toUpperCase();
- if (strItemUpper.indexOf(strInput) == 0) {
- break;
- } else if (strItemUpper > strInput) {
- iEnd = iMid - 1;
- } else {
- iStart = iMid + 1;
- }
- }
-
- // Search backward to find the first one that partially matches
- var iMatch = 0;
- for (var iMatch = iMid; iMatch >= 0; iMatch--) {
- strItemUpper = tempColl(iMatch).innerText;
- strItemUpper = strItemUpper.toUpperCase();
- if (strItemUpper.indexOf(strInput) != 0) {
- break;
- }
- }
- if (iMatch != iMid) {
- if (iMatch >= 0) {
- if (iMatch < tempColl.length - 1) {
- iMid = iMatch + 1;
- } else {
- iMid = iMatch;
- }
- } else {
- iMid = 0;
- }
- }
- MatchingItem = tempColl(iMid);
- }
- }
-
- // Scroll to the closest matching item
- if (MatchingItem) {
- if (gbNav4) {
- } else if (gbIE4) {
- IndexDiv.document.body.scrollTop = MatchingItem.offsetTop;
-
- // Set the focus on the selected hyperlink (if there is one)
- if (gbIE5) {
- tempColl = MatchingItem.all.tags("A");
- if (tempColl.length > 0) {
- // If a carriage return was used then simulate a click
- if (bCR) {
- tempColl(0).click();
- } else {
- // Simply set the focus to the hyperlink
- if (gbIE55) {
- HighLightElement(tempColl(0));
- } else {
- tempColl(0).focus();
- }
- }
- IndexForm().document.IndexInputForm.keywordField.focus();
- }
- }
- }
- }
-
- return;
- }
-
- var gBsLastHighLightElement = null;
- var gBsOrgBackgroundColor = null;
-
- function HighLightElement(objAnchor)
- {
- if (gBsOrgBackgroundColor == null)
- gBsOrgBackgroundColor = objAnchor.currentStyle.backgroundcolor;
-
- resetHighLight();
- objAnchor.style.backgroundColor = "lightgrey";
- gBsLastHighLightElement = objAnchor;
- }
-
- function resetHighLight()
- {
- if (gBsLastHighLightElement != null)
- {
- if (gBsOrgBackgroundColor != null)
- gBsLastHighLightElement.style.backgroundColor = gBsOrgBackgroundColor ;
- else
- gBsLastHighLightElement.style.backgroundColor = "transparent" ;
- }
- }
-
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- //
- // TOC code
- //
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- var imgBookClose ="bssctoc1.gif";
- var imgBookOpen ="bssctoc2.gif";
-
- var elTocArray = new Array();
- var elTocArrayNum = 0;
-
- function TocWriteClassStyle()
- {
- document.write("<STYLE TYPE='text/css'>");
- if (gbNav4) {
- document.write(".parent {position:absolute; visibility:hidden}");
- document.write(".child {position:absolute; visibility:hidden}");
- document.write("BLOCKQUOTE {margin-top:0pt; margin-bottom:0pt; margin-left:-15pt;}");
- document.write("DIV {margin-top:0pt; margin-bottom:0pt}");
- document.write("P {margin-top:0pt; margin-bottom:0pt}");
- document.write("PRE {margin-top:0pt; margin-bottom:0pt}");
- } else if (gbIE4) {
- if (gbMac) {
- if (gbIE5){
- document.write(".parent {font-size:10pt;}");
- document.write("P {font-family:'Arial'; font-size:10pt; margin-top:0pt; margin-bottom:0pt;}");
- document.write("PRE {font-family:'Arial'; font-size:10pt; margin-top:0pt; margin-bottom:0pt;}");
- document.write("BLOCKQUOTE {margin-top:0pt; margin-bottom:0pt; margin-left:15pt;}");
- document.write("DIV {margin-top:0pt; margin-bottom:0pt}");
- } else {
- document.write(".parent {font-size:14pt;}");
- document.write("P {font-family:'Arial'; font-size:12pt; margin-top:0pt; margin-bottom:0pt;}");
- document.write("PRE {font-family:'Arial'; font-size:12pt; margin-top:0pt; margin-bottom:0pt;}");
- document.write("BLOCKQUOTE {margin-top:0pt; margin-bottom:0pt; margin-left:15pt;}");
- document.write("DIV {margin-top:0pt; margin-bottom:0pt;}");
- }
- } else {
- document.write(".parent {font-size:10pt;}");
- document.write("BLOCKQUOTE {margin-top:0pt; margin-bottom:0pt; margin-left:15pt;}");
- document.write("P {font-family:'Arial'; font-size:8pt; margin-top:0pt; margin-bottom:0pt;}");
- document.write("PRE {font-family:'Arial'; font-size:8pt; margin-top:0pt; margin-bottom:0pt;}");
- document.write("DIV {margin-top:0pt; margin-bottom:0pt}");
- }
- document.write(".child {display:none}");
- document.write("A:link {text-decoration: none; color: 000000}");
- document.write("A:visited {text-decoration: none; color: 333333}");
- document.write("A:active {text-decoration: none; background-color: #cccccc}");
- document.write("A:hover {text-decoration: underline; color: 007f00}");
- }
- document.write("</STYLE>");
- return;
- }
-
- function TocWriteFixedWidth(bBegin, nWidth)
- {
- //Avoid the wrap of text after book/page, make a invisble outter table is approch (for IE4 iMac only)
- // This will make IE4 DHTML Sync Toc DO NOT WORK.
- if ((gbIE4) && (gbMac) && (!gbIE5)) {
- if (bBegin) {
- document.write("<table width=" + nWidth +" border=0><tr><td>");
- } else {
- document.write("</td></tr></table>");
- }
- }
- }
-
- //Assign the layer's visibility at initialize the Page
- function TocInitPage()
- {
- // var TocDiv = NavFrame().FindTopLevelLayer('TocNav');
- // if (TocDiv != null) {
- // return;
- // }
- if (gbNav4) {
- // for (var i=0; i < document.layers.length; i++) {
- // var whichEl = document.layers[i];
- // if (whichEl.id.indexOf("Child") != -1) {
- // whichEl.visibility = "hide";
- // } else {
- // whichEl.visibility = "show";
- // }
- // }
- TocBuildLayerArrayNS();
- onLoad = TocArrangeAllLayerNS();
- } else if (gbIE4) {
-
- // Select the first hyperlink
- var tempColl = document.all.tags("A");
- if (tempColl.length > 0) {
- tempColl(0).focus();
- }
- }
- return;
- }
-
- function TocShowLayer(whichEl, bShow)
- {
- if (bShow) {
- whichEl.visibility = "show";
- } else {
- whichEl.visibility = "hide";
- }
- for (var i=0; i<whichEl.document.layers.length; i++) {
- var whichChildEl = whichEl.document.layers[i];
- ShowLayer(whichChildEl, bShow);
- }
- }
-
- function TocExpandAll()
- {
- for (var i=0; i<document.layers.length; i++) {
- var whichEl = document.layers[i];
- TocShowLayer(whichEl, true);
- }
- TocBuildLayerArrayNS();
- TocArrangeAllLayerNS();
-
- return;
- }
-
- function TocCollapseAll()
- {
- for (var i=0; i<document.layers.length; i++) {
- var whichEl = document.layers[i];
- ShowLayer(whichEl, false);
- if (whichEl.id.indexOf("Child") != -1) {
- whichEl.visibility = "hide";
- } else {
- whichEl.visibility = "show";
- }
- }
- TocBuildLayerArrayNS();
- TocArrangeAllLayerNS();
-
- return;
- }
-
- //Expand a layer
- function TocExpandIt(elId)
- {
- TocExpandIt2(elId, false);
- }
-
- //Expand a layer
- function TocExpandIt2(elId, bForceOpen)
- {
- if (gbIE4) {
- var child = TocExpandIE(elId, true, bForceOpen);
- var nNewScroll = document.body.scrollTop;
- if (child.style.display == "block") {
- var nItemTop = child.offsetTop;
- var nItemBottom = nItemTop + child.offsetHeight;
- // Make sure the bottom is visible if possible
- if (document.body.scrollTop + document.body.clientHeight < nItemBottom) {
- nNewScroll = nItemBottom - document.body.clientHeight;
- }
- // If expanded item is bigger than the client area, scroll the item to the top
- if (nItemBottom - nItemTop > document.body.clientHeight) {
- nNewScroll = nItemTop - 20;
- }
- }
- document.body.scrollTop = nNewScroll;
- } else if (gbNav4) {
- TocExpandNS(elId, true, false);
- if (window.NSscrollbar != null) {
- window.NSscrollbar.SetContentHeight(nextY);
- window.NSscrollbar.SetContentWidth(nextX);
- }
- }
- return;
- }
-
-
- ////////////////////////////////////////////////////////////////
- //Functions for IE
- function TocExpandIE(elId, bChangeImg, bForceOpen)
- {
- var whichEl = eval(elId + "Child");
- var whichIm = document.images[elId];
-
- if (whichEl == null) {
- return null;
- }
-
- if ((whichEl.style.display != "block") || bForceOpen) {
- whichEl.style.display = "block";
- if (bChangeImg) {
- whichIm.src = imgBookOpen;
- }
- } else {
- whichEl.style.display = "none";
- if (bChangeImg) {
- whichIm.src = imgBookClose;
- }
- if (gbMac) {
- //YJ: ?? can not scroll into view, if div has fixed width, it will scroll horizal to the very end.
- //whichEl.scrollIntoView(false);
- }
- }
- return whichEl;
- }
-
- ////////////////////////////////////////////////////////////////
- //Functions for NS
- function TocExpandNS(elId, bChangeImg, bForceOpen)
- {
- var whichParent = null;
- var whichChild = null;
- var idParent = elId + "Parent";
- var idChild = elId + "Child";
- for (var i=0; i<elTocArrayNum ;i++) {
- if (idParent == elTocArray[i].id) {
- whichParent = elTocArray[i].el;
-
- if ((i+1 < elTocArrayNum) && (idChild == elTocArray[i+1].id))
- {
- whichChild = elTocArray[i+1].el;
- }
- break;
- }
- }
- if (whichParent == null) return null;
- var imgParent = whichParent.document.images[0];
- if (whichChild == null) return null;
-
- if (whichChild.visibility == "hide")
- {
- whichChild.visibility = "show";
- if (bChangeImg) {
- imgParent.src = imgBookOpen;
- }
- for (var i=0; i<whichChild.layers.length; i++)
- {
- var whichEl = whichChild.layers[i];
- if (whichEl.id.indexOf("Parent") != -1)
- whichEl.visibility = "show";
- }
- }
- else if (bForceOpen)
- {
- return whichChild;
- }
- else
- {
- whichChild.visibility = "hide";
- if (bChangeImg) {
- imgParent.src = imgBookClose;
- }
- for (var i=0; i<whichChild.layers.length; i++)
- {
- var whichEl = whichChild.layers[i];
- whichEl.visibility = "hide";
- }
- }
- TocArrangeAllLayerNS(bChangeImg);
- return whichChild;
- }
-
- function elTocLayerNS(elLayer, elLayerId)
- {
- this.el = elLayer;
- this.id = elLayerId;
- return;
- }
-
- function TocFindLayerNS(elLayer)
- {
- for (var i = 0; i < elLayer.layers.length; i++) {
- var whichEl = elLayer.layers[i];
- // if (typeof whichEl != "undefined") {
- if ((whichEl.id.indexOf("Parent") != -1) ||
- (whichEl.id.indexOf("Child") != -1)) {
- elTocArray[elTocArrayNum] = new elTocLayerNS(whichEl,whichEl.id);
- elTocArrayNum++;
- TocFindLayerNS(whichEl);
- }
- }
- return;
- }
-
- function TocBuildLayerArrayNS()
- {
- elTocArrayNum = 0;
- TocFindLayerNS(document);
- return;
- }
-
- var nextY = 0;
- var nextX = 0; // real means : the maxium width of sub-layers' width
- function TocArrangeLayerNS(elLayer, bShowLayer, iLevel, bChangeImg)
- {
- var i = 0;
- while (i < elLayer.layers.length)
- {
- var whichParent = elLayer.layers[i];
-
- if (whichParent.id.indexOf("Parent") == -1)
- i++; // Check to make sure this is a "parent" because we do have extra layers on the page
- else
- {
- var whichChild = elLayer.layers[i+1];
- if (bShowLayer)
- { // Check to see if we have a second (or lower level) block with pages
- // on top of books. If so, Netscape would ordinarily add space for the
- // BLOCKQUOTE, but we don't want one - so remove the space.
- if( (i == 0) && (iLevel > 0) &&
- (null != whichParent.parentLayer) &&
- (whichParent.parentLayer.document.images.length > 0))
- nextY -= whichParent.document.height;
-
- whichParent.pageY = nextY;
- whichParent.visibility = "show";
-
- whichParent.clip.bottom = whichParent.document.height;
- whichParent.clip.right = whichParent.document.width + iLevel*20;// plus indent width
- if( whichParent.clip.right > nextX )
- nextX = whichParent.clip.right;
-
- nextY += whichParent.document.height;
- if (whichChild.visibility == "show")
- {
- if (bChangeImg)
- whichParent.document.images[0].src = imgBookOpen;
-
- whichChild.pageY = nextY;
- nextY += whichChild.document.height;
-
- whichChild.clip.right = whichChild.document.width + iLevel*20;// plus indent width
- if( whichChild.clip.right > nextX )
- nextX = whichChild.clip.right;
-
- TocArrangeLayerNS(whichChild, true, iLevel + 1, bChangeImg);
- whichChild.clip.bottom = nextY - window.NSscrollbar.GetContentVerticalPos();
- if( nextX > whichChild.clip.right )
- whichChild.clip.right = nextX;
- }
- else
- {
- if (bChangeImg)
- whichParent.document.images[0].src = imgBookClose;
-
- TocArrangeLayerNS(whichChild, false, iLevel + 1, bChangeImg);
- }
- }
- else
- {
- if (bChangeImg)
- whichParent.document.images[0].src = imgBookClose;
- whichParent.visibility = "hide";
- whichParent.clip.bottom = 0;
- whichParent.clip.right = 0;
-
- whichChild.visibility = "hide";
- whichChild.clip.bottom = 0;
- whichChild.clip.right = 0;
- TocArrangeLayerNS(whichChild, false, iLevel, bChangeImg);
- }
- i += 2;
- }
- }
- return;
- }
-
- function TocArrangeAllLayerNS(bChangeImg)
- {
- if (document.layers.length > 0) {
- nextX = document.layers[0].pageX;
- nextY = document.layers[0].pageY;
- TocArrangeLayerNS(document, true, 0, bChangeImg);
- }
- return;
- }
-
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- //
- // FTS code
- //
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- function FtsWriteClassStyle()
- {
- document.write("<STYLE TYPE='text/css'>");
- if (gbNav4) {
- document.write("P {font-family:'Arial'; font-size:9pt;}");
- document.write("A:link {text-decoration: none; color: 000000}");
- document.write("A:visited {text-decoration: none; color: 333333}");
- document.write("A:active {text-decoration: none; background-color: #cccccc}");
- document.write("A:hover {text-decoration: underline; color: 007f00}");
- } else if (gbIE4) {
- if (gbMac) {
- if (gbIE5) {
- document.write("P {font-family:'Arial'; font-size:10pt;}");
- document.write("dt {font-family:'Arial'; font-size:10pt;}");
- } else {
- document.write("P {font-family:'Arial'; font-size:12pt;}");
- document.write("dt {font-family:'Arial'; font-size:12pt;}");
- }
- } else {
- document.write("P {font-family:'Arial'; font-size:9pt;}");
- document.write("dt {font-family:'Arial'; font-size:9pt;}");
- }
- document.write("A:link {text-decoration: none; color: 000000}");
- document.write("A:visited {text-decoration: none; color: 333333}");
- document.write("A:active {text-decoration: none; background-color: #cccccc}");
- document.write("A:hover {text-decoration: underline; color: 007f00}");
- }
- document.write("</STYLE>");
- return;
- }
-
- //Define variable arguments as: strKeyword [,strTopicIndex]*
- //function KeywordEntry()
- function FtsKeywordEntry()
- {
- var argLen = FtsKeywordEntry.arguments.length;
- this.strKeyword = FtsKeywordEntry.arguments[0];
- this.arrayTopics = new Array();
-
- // Now add all of the topic entries
- for (var i=0; i < argLen - 1; i++) {
- this.arrayTopics[i] = FtsKeywordEntry.arguments[i + 1];
- }
- }
-
- function FtsStopWord()
- {
- this.strStopWord = FtsStopWord.arguments[0];
- }
-
- function FtsInputEnable(bEnable)
- {
- gbFtsInputEnable = bEnable;
- return;
- }
-
- function FtsInputSubmit()
- {
- //Hack for IE, have to use keydown to get enter event,
- //Embedding WebHelp to WinHelp2000 will fail to fire the submit the form.
- if (!gbIE4)
- {
- FtsLookup();
- }
- return false;
- }
-
- //Initize the site
- function FtsInit()
- {
- if (!window.Array) return;
-
- if (gbNav4) document.captureEvents(Event.KEYUP);
- document.onkeyup = FtsLookupKeydown;
- }
-
- function FtsLookupKeydown()
- {
- if (gbIE4)
- {
- if (event.keyCode == 13) //Enter key
- {
- FtsLookup();
- }
- }
- }
-
- function FtsLookup()
- {
- if (!gbFtsInputEnable && !gbMac)
- return;
-
- var strInput = document.FtsInputForm.ftsField.value.toLowerCase();
- if (strInput != "") {
- FtsDisplay(strInput);
- }
-
- if (gbMac) {
- document.FtsInputForm.ftsField.focus();
- }
- }
-
- var gstrDisplayInput = "";
-
- function FtsFindTable()
- {
- // Get the appropriate item to add items to
- var layerFind = null;
- if (gbIE4) {
- layerFind = parent.document.frames['ftsbody'].document.all.FtsFindTable;
- } else if (gbNav4) {
- layerFind = parent.document.ftsbody.document.FtsFindTable.document;
- }
-
- return layerFind;
- }
-
- function FtsBody()
- {
- // Get the appropriate item to add items to
- var layerFind = null;
- if (gbIE4) {
- layerFind = parent.document.frames['ftsbody'];
- } else if (gbNav4) {
- layerFind = parent.document.ftsbody.document;
- }
-
- return layerFind;
- }
-
- function FtsDisplay(strInput)
- {
- var layerFind = FtsFindTable();
- if (layerFind == null) {
- return;
- }
-
- // Let the user know we are busy
- var strHtm = "<P><B><FONT SIZE=2>Finding topics...</FONT></B></P>"
- if (gbIE4) {
- layerFind.innerHTML = strHtm;
- } else if (gbNav4) {
- layerFind.write(strHtm);
- layerFind.close();
- }
- window.gstrDisplayInput = strInput;
- setTimeout("FtsDisplayReal()", 50);
-
- return;
- }
-
- function FtsDisplayReal()
- {
- var FtsDiv = FtsBody();
- // if (gbNav4) {
- // FtsDiv = FindTopLevelLayer('FtsNav');
- // } else if (gbIE4) {
- // FtsDiv = parent.parent.FindTopLevelLayer('FtsNav');
- // FtsDiv = FtsDiv.document.frames['FtsIFrame'].document.all.ftsbody;
- // }
-
- var strInput = window.gstrDisplayInput;
- var nKeywordArrayLen = FtsDiv.gFtsKeywordArray.length;
- var nTopicArrayLen = FtsDiv.gFtsTopicArray.length;
- var nStopArrayLen = FtsDiv.gFtsStopArray.length;
-
- // Get the appropriate item to add items to
- var layerFind = FtsFindTable();
- if (layerFind == null) {
- return;
- }
-
- // Keep track of which operation we are currently in
- // 0 = OR; 1 = AND
- var nCurrentOp = 0;
- var bNot = false;
-
- // Loop through the words in the input string
- var bFinished = false;
- var bFirstKeyword = true;
- var strCurrentWord = "";
- var strCurrentStem = "";
- var strKeyword = "";
- var strHtm = "";
- var nFirstMatch = -1;
- var nLastMatch = -1;
- var i=0;
- var iSpace = 0;
- var iFound = 0;
- var SearchTopicArray = new Array();
- var iSearch = 0;
- // If you change this Word Break string make sure you also change it in FtsDataBase.CPP
- var FTS_WORD_BREAK_CHARS = "\t\r\n\"\\ .,!@#$%^&*()~'`:;<>?/{}[]|+-=\x85\x92\x93\x94\x95\x96\x97\x99\xA9\xAE\xB7";
- var nNumWordBreakChars = FTS_WORD_BREAK_CHARS.length;
-
- // Clear the flags for each of the topics
- var iTopic = 0;
- for (iTopic = 0; iTopic < nTopicArrayLen; iTopic++) {
- SearchTopicArray[iTopic] = 0;
- }
-
- while (!bFinished) {
-
- // Get the next word
- iSpace = -1;
- iChar = 0;
- iSep = -1;
- for (var iChar = 0; iChar < nNumWordBreakChars; iChar++) {
- iFound = strInput.indexOf(FTS_WORD_BREAK_CHARS.charAt(iChar));
- if ((iFound != -1) && ((iSpace == -1) || (iFound < iSpace))) {
- iSpace = iFound;
- iSep = iChar;
- }
- }
- if (iSpace == -1) {
- strCurrentWord = strInput;
- strInput = "";
- } else {
- strCurrentWord = strInput.substr(0, iSpace);
- strInput = strInput.substr(iSpace + 1);
- }
-
- // Check for operators or a blank word
- if ((strCurrentWord == "or") ||
- ((iSep >= 0) && (FTS_WORD_BREAK_CHARS.charAt(iSep) == "|"))) {
- nCurrentOp = 0;
- bNot = false;
- } else if ((strCurrentWord == "and") ||
- ((iSep >= 0) && (FTS_WORD_BREAK_CHARS.charAt(iSep) == "&"))) {
- nCurrentOp = 1;
- bNot = false;
- } else if ((strCurrentWord == "not") ||
- ((iSep >= 0) && (FTS_WORD_BREAK_CHARS.charAt(iSep) == "~"))) {
- bNot = true;
- } else if (strCurrentWord == "") {
- if (strInput == "") {
- break;
- } else {
- continue;
- }
- } else if (!IsStopWord(strCurrentWord, FtsDiv.gFtsStopArray, nStopArrayLen)){
-
- // See if this is has a NOT at the beginning
- if (strCurrentWord.substr(0, 1) == "~") {
- bNot = true;
- strCurrentWord = strCurrentWord.substr(1);
- }
-
- // Get the stemmed version of the word
- strCurrentStem = GetStem(strCurrentWord);
-
- // See if the stemmed word is found in the list
- iFound = -1;
- iFound = FtsFindKeyword(strCurrentStem, FtsDiv.gFtsKeywordArray, nKeywordArrayLen);
-
- // Did we find the keyword?
- if (iFound != -1) {
-
- // See if we are performing an OR operation
- var nNumTopics = FtsDiv.gFtsKeywordArray[iFound].arrayTopics.length;
- if (nCurrentOp == 0) {
- if (bNot) {
- var cFoundArrayTopics = FtsDiv.gFtsKeywordArray[iFound].arrayTopics;
- // Add all topics that are not in the list for this keyword
- for (iTopic = 0; iTopic < nTopicArrayLen; iTopic++) {
- // See if the topic is in the list for this keyword
- for (iListTopic = 0; iListTopic < nNumTopics; iListTopic++) {
- if (cFoundArrayTopics[iListTopic] == iTopic) {
- break;
- }
- }
- if (iListTopic == nNumTopics) {
- // The topic is not in the list for the current keyword, so add it
- SearchTopicArray[iTopic] = 1;
- }
- }
-
- } else {
- // Loop through the topics that have the keyword and add them to the list
- for (iTopic = 0; iTopic < nNumTopics; iTopic++) {
- var nTopicNum = FtsDiv.gFtsKeywordArray[iFound].arrayTopics[iTopic];
- // Add the topic to the list
- SearchTopicArray[nTopicNum] = 1;
- }
- }
- // See if this is an AND operation
- } else if (nCurrentOp == 1) {
-
- if (bNot) {
- // Loop through the topics for the current word and remove them from the list
- for (iTopic = 0; iTopic < nNumTopics; iTopic++) {
- SearchTopicArray[FtsDiv.gFtsKeywordArray[iFound].arrayTopics[iTopic]] = 0;
- }
- } else {
- // Loop through the topics already in the list and remove them if they are not
- // in the list for the current word
- for (iTopic = 0; iTopic < nNumTopics; iTopic++) {
- if (SearchTopicArray[FtsDiv.gFtsKeywordArray[iFound].arrayTopics[iTopic]] == 1) {
- SearchTopicArray[FtsDiv.gFtsKeywordArray[iFound].arrayTopics[iTopic]] = -1;
- }
- }
- for (iTopic = 0; iTopic < nTopicArrayLen; iTopic++) {
- if (SearchTopicArray[iTopic] == -1) {
- SearchTopicArray[iTopic] = 1;
- } else {
- SearchTopicArray[iTopic] = 0;
- }
- }
- }
- }
- } else {
- // Word was not found
-
- // Clear the list if this is an AND operation
- if ((nCurrentOp == 1) && (!bNot)) {
- for (iSearch = 0; iSearch < nTopicArrayLen; iSearch++) {
- SearchTopicArray[iSearch] = 0;
- }
-
- // Add all items to the list if this is an OR operation with a NOT operator
- } else if ((nCurrentOp == 0) && (bNot)) {
-
- // Add all topics that are not in the list for this keyword
-
- // First set all flags to -1 if they are not already set
- for (iTopic = 0; iTopic < nTopicArrayLen; iTopic++) {
- if (SearchTopicArray[iTopic] == 0) {
- SearchTopicArray[iTopic] = -1;
- }
- }
-
- // Now clear all -1s for topics associated with this keyword
- for (iTopic = 0; iTopic < nNumTopics; iTopic++) {
- if (SearchTopicArray[FtsDiv.gFtsKeywordArray[iFound].arrayTopics[iTopic]] == -1) {
- SearchTopicArray[FtsDiv.gFtsKeywordArray[iFound].arrayTopics[iTopic]] = 0;
- }
- }
-
- // Finally change all -1s to 1s
- for (iTopic = 0; iTopic < nTopicArrayLen; iTopic++) {
- if (SearchTopicArray[iTopic] == -1) {
- SearchTopicArray[iTopic] = 1;
- }
- }
- }
- }
-
- // If this was the first word change the operation to "and". We need to have it be
- // an "or" for the first keyword so we would add the items for the first search word.
- if (bFirstKeyword) {
- bFirstKeyword = false;
- nCurrentOp = 1;
- }
- }
- }
-
- var aSortedTopics = new Array();
- var nNumSortTopics = 0;
- for (iSearch = 0; iSearch < nTopicArrayLen; iSearch++) {
- if (SearchTopicArray[iSearch]) {
- aSortedTopics[nNumSortTopics++] = iSearch;
- }
- }
-
- // Limit the number of topics in the result set
- if (nNumSortTopics > 75) {
- nNumSortTopics = 75;
- }
-
- // Sort the topics by title
- SortTopics(FtsDiv, aSortedTopics, 0, nNumSortTopics - 1);
-
- // Add hyperlinks for all of the found topics
- var strLine = "";
- for (iSearch = 0; iSearch < nNumSortTopics; iSearch++) {
- i = aSortedTopics[iSearch];
- if (i != -1) {
- strLine = "<dt><nobr><a href='" + FtsDiv.gFtsTopicArray[i].strURL + "'>";
- strLine += FtsDiv.gFtsTopicArray[i].strTitle;
- strLine += "</a></nobr></dt>";
- strHtm += strLine;
- }
- }
-
- // Give a special message if none were found
- if (strHtm == "") {
- strHtm = "<P><B>No topics found.</B></P>"
- } else {
- strHtm = "<dl>" + strHtm + "</dl>";
- }
-
- if (gbIE4) {
- layerFind.innerHTML = strHtm;
- } else if (gbNav4) {
- layerFind.write(strHtm);
- layerFind.close();
- }
-
- return;
- }
-
-
- function FtsFindKeyword(strCurrentWord, aFtsKeywordArray, nKeywordArrayLen)
- {
- // Search for the current word in the array (binary search)
- var nLow = 0;
- var nHigh = nKeywordArrayLen - 1;
- var nMid = 0;
- var bFound = false;
- var strKeyword = "";
- while (nLow <= nHigh) {
- nMid = (nLow + nHigh);
- nMid >>= 1;
- strKeyword = aFtsKeywordArray[nMid].strKeyword;
- if (strCurrentWord > strKeyword) {
- nLow = (nLow == nMid) ? nMid + 1 : nMid;
- } else {
- if (strCurrentWord < strKeyword) {
- nHigh = (nHigh == nMid) ? nMid - 1: nMid;
- } else {
- bFound = true;
- break;
- }
- }
- }
-
- if (bFound) {
- return nMid;
- } else {
- return -1;
- }
- }
-
-
- // QuickSort
- function SortTopics(FtsDiv, SearchTopicArray, nStart, nEnd)
- {
- if (nEnd - nStart > 0) {
- var nLastLow = nStart;
-
- // Get the first value into its proper spot
- for (var i = nStart + 1; i <= nEnd; i++) {
- if ((SearchTopicArray[i] != -1) && (SearchTopicArray[nStart] != -1) &&
- (FtsDiv.gFtsTopicArray[SearchTopicArray[i]].strTitle < FtsDiv.gFtsTopicArray[SearchTopicArray[nStart]].strTitle)) {
- nLastLow++;
- temp = SearchTopicArray[i];
- SearchTopicArray[i] = SearchTopicArray[nLastLow];
- SearchTopicArray[nLastLow] = temp;
- }
- }
- temp = SearchTopicArray[nStart];
- SearchTopicArray[nStart] = SearchTopicArray[nLastLow];
- SearchTopicArray[nLastLow] = temp;
-
- // Sort the two halves of this array surrounding the new spot for the first value
- SortTopics(FtsDiv, SearchTopicArray, nStart, nLastLow);
- SortTopics(FtsDiv, SearchTopicArray, nLastLow + 1, nEnd);
- }
- }
-
- function IsStopWord(strCurrentWord, aFtsStopArray, nStopArrayLen)
- {
- // Search for the current word in the array (binary search)
- var nLow = 0;
- var nHigh = nStopArrayLen - 1;
- var nMid = 0;
- var bFound = false;
- var strStopWord = "";
- while (nLow <= nHigh) {
- nMid = (nLow + nHigh);
- nMid >>= 1;
- strStopWord = aFtsStopArray[nMid].strStopWord;
- if (strCurrentWord > strStopWord) {
- nLow = (nLow == nMid) ? nMid + 1 : nMid;
- } else {
- if (strCurrentWord < strStopWord) {
- nHigh = (nHigh == nMid) ? nMid - 1: nMid;
- } else {
- bFound = true;
- break;
- }
- }
- }
-
- if (bFound) {
- return true;
- } else {
- return false;
- }
- }
-
-
- /////////////////////////////////////////////////////////////
- //
- // NOTE: If you change this function, you should also change
- // it in the FtsDatabase.CPP file
- //
- /////////////////////////////////////////////////////////////
- function GetStem(szWord)
- {
- var aStems = new Array();
- aStems[0] = "ed";
- aStems[1] = "es";
- aStems[2] = "er";
- aStems[3] = "e";
- aStems[4] = "s";
- aStems[5] = "ingly";
- aStems[6] = "ing";
- aStems[7] = "ly";
-
- // Loop through all the stems
- var nNumStems = aStems.length;
- var nStemPos = 0;
- var csStem = "";
- var csSubString = "";
- for (var iStem = 0; iStem < nNumStems; iStem++) {
-
- // Get the "would be" position of the stem in the word and see
- // if this word has the stem
- nStemPos = szWord.lastIndexOf(aStems[iStem]);
- if (nStemPos > 0) {
- csSubString = szWord.substring(nStemPos);
- if (csSubString == aStems[iStem]) {
-
- // Found a stem
-
- // Check for double consonant
- csStem = szWord;
- if (szWord.charAt(nStemPos - 2) == szWord.charAt(nStemPos - 1)) {
- csStem = csStem.substring(0, nStemPos - 1);
- } else {
- csStem = csStem.substring(0, nStemPos);
- }
- return csStem;
- }
- }
- }
-
- // No stem found
- csStem = szWord;
- return csStem;
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////
- //
- // Navgation Bar Code
- //
- ////////////////////////////////////////////////////////////////////////////////////////////////
-
- function NavBar_SelectTOC()
- {
- var frameLeft = null
- if (gbNav4) {
- frameLeft = window.parent.left;
- } else {
- frameLeft = window.parent.frames("left");
- }
- frameLeft.ChangeToTOC();
- }
-
- function NavBar_SelectIndex()
- {
- var frameLeft = null
- if (gbNav4) {
- frameLeft = window.parent.left;
- } else {
- frameLeft = window.parent.frames("left");
- }
- frameLeft.ChangeToIndex();
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////
- //
- // Function support sync toc for DHTML
- //
- ////////////////////////////////////////////////////////////////////////////////////////////////
-
- function NavBar_SyncToc(strRelURL)
- {
- var strHomeURL = location.href;
- if (location.hash.length > 0)
- strHomeURL = location.href.substring(0, location.href.indexOf("#"));
-
- var strHomePath = strHomeURL.substring(0, strHomeURL.lastIndexOf("/"));
- var strAbsURL = strHomePath + "/" + strRelURL;
-
- var containTags = new Array();
- strAbsURL = NavBar_ReplaceSlash(strAbsURL);
- var res = NavBar_SearchToc(document.body, strAbsURL, containTags, 0);
- if (res >= 0)
- {
- for (i = 0; i < res; i ++ ) {
- var elId = containTags[i].id;
- elId = elId.substring(0, elId.indexOf("Child"));
- TocExpandIt2(elId, true);
- }
- containTags[res].focus();
- }
- }
-
- // if the DHTML structure changed . the following code MUST MODIFY.
- // Currently do not support IE4.5 on Mac. because on iMac we will capsulate all the contents in a <TABLE>.
- // for IE 4.5 will wrap text which is not good for us.
- // so if want to enable IE4.5. something need to take care here.
- // now we are using Applet for IE 4.5 instead of DHTML for some other reasons.
- function NavBar_SearchToc(tagsObject, strAbsURL, containTags, level)
- {
- var i = 0;
- var j = 0;
- var collBlock = tagsObject.children.tags("BLOCKQUOTE");
- if (collBlock != null) {
- for (i = 0; i < collBlock.length ; i ++ )
- {
- // here we assume each BLOCKQUOTE has one and only one DIV
- containTags[level] = collBlock[i].children.tags("DIV")[0];
- var res = NavBar_SearchToc(containTags[level], strAbsURL, containTags, level + 1);
- if (res != -1)
- return res;
- }
-
- }
- var collA = tagsObject.all.tags("A");
- if (collA != null) {
- for (j = 0; j < collA.length; j ++ )
- {
- var hrefURL = NavBar_ReplaceSlash(collA[j].href);
- if (hrefURL == strAbsURL)
- {
- containTags[level] = collA[j];
- return level;
- }
- }
-
- }
- return -1;
- }
-
- // replace \\ to /
- function NavBar_ReplaceSlash(strURL)
- {
- var strReplacedURL = "";
- for (i = 0; i < strURL.length; i ++ )
- {
- if (strURL.charAt(i) == '\\')
- strReplacedURL = strReplacedURL + "/"
- else
- strReplacedURL = strReplacedURL + strURL.charAt(i);
- }
- return strReplacedURL;
- }
-