// Copyright (c) 2000-2003 Quadralay Corporation. All rights reserved. // function WWHBook_Object(ParamDirectory) { // Set values from callbacks // this.mDirectory = null; this.mTitle = null; this.mContext = null; this.mFiles = new WWHFileList_Object(); // Fix up directory // if (ParamDirectory == ".") { this.mDirectory = ""; } else { this.mDirectory = ParamDirectory + "/"; } this.fInit = WWHBook_Init; } function WWHBook_Init(ParamTitle, ParamContext, ParamFilesFunction, ParamALinksFunction) { this.mTitle = ParamTitle; this.mContext = ParamContext; // Load files // ParamFilesFunction(this.mFiles); // Load alinks // ParamALinksFunction(WWHFrame.WWHALinks); } function WWHBookList_Object() { this.mInitIndex = 0; this.mBookList = new Array(); this.mBookContextToIndex = new Object(); this.fInit_AddBookDir = WWHBookList_Init_AddBookDir; this.fInit_BookData_Script = WWHBookList_Init_BookData_Script; this.fInit_AddBook = WWHBookList_Init_AddBook; this.fInit_IncrementIndex = WWHBookList_Init_IncrementIndex; this.fGetBook = WWHBookList_GetBook; this.fGetBookTitle = WWHBookList_GetBookTitle; this.fHREFToFileIndex = WWHBookList_HREFToFileIndex; this.fHREFToTitle = WWHBookList_HREFToTitle; this.fBookIndexFileIndexToTitle = WWHBookList_BookIndexFileIndexToTitle; this.fGetBookIndexFileHREF = WWHBookList_GetBookIndexFileHREF; this.fBookFileIndiciesToHREF = WWHBookList_BookFileIndiciesToHREF; this.fHREFToBookIndexFileIndexAnchor = WWHBookList_HREFToBookIndexFileIndexAnchor; this.fGetSyncPrevNext = WWHBookList_GetSyncPrevNext; this.fGetContextIndex = WWHBookList_GetContextIndex; this.fGetContextBook = WWHBookList_GetContextBook; } function WWHBookList_Init_AddBookDir(ParamBookDir) { this.mBookList[this.mBookList.length] = new WWHBook_Object(ParamBookDir); } function WWHBookList_Init_BookData_Script() { var Scripts = new WWHStringBuffer_Object(); var VarParameters; var MaxIndex = 0; var Index = 0; var BookDirectory; // Workaround Safari reload bug // VarParameters = ""; if (WWHFrame.WWHBrowser.mBrowser == 5) // Shorthhand for Safari { VarParameters = "?" + (new Date() * 1); } this.mInitIndex = 0; for (MaxIndex = this.mBookList.length, Index = 0 ; Index < MaxIndex ; Index++) { BookDirectory = WWHFrame.WWHHelp.mHelpURLPrefix + this.mBookList[Index].mDirectory; Scripts.fAppend("\n"); Scripts.fAppend("\n"); Scripts.fAppend("\n"); Scripts.fAppend("\n"); Scripts.fAppend("\n"); } return Scripts.fGetBuffer(); } function WWHBookList_Init_AddBook(ParamTitle, ParamContext, ParamFilesFunction, ParamALinksFunction) { // Update book information // this.mBookList[this.mInitIndex].fInit(ParamTitle, ParamContext, ParamFilesFunction, ParamALinksFunction); this.mBookContextToIndex[ParamContext + "~"] = this.mInitIndex; } function WWHBookList_Init_IncrementIndex() { this.mInitIndex++; } function WWHBookList_GetBook(ParamIndex) { return this.mBookList[ParamIndex]; } function WWHBookList_GetBookTitle(ParamIndex) { return this.mBookList[ParamIndex].mTitle; } function WWHBookList_HREFToFileIndex(ParamIndex, ParamHREF) { return this.mBookList[ParamIndex].mFiles.fHREFToIndex(ParamHREF); } function WWHBookList_HREFToTitle(ParamIndex, ParamHREF) { return this.mBookList[ParamIndex].mFiles.fHREFToTitle(ParamHREF); } function WWHBookList_BookIndexFileIndexToTitle(ParamBookIndex, ParamFileIndex) { return this.mBookList[ParamBookIndex].mFiles.fFileIndexToTitle(ParamFileIndex); } function WWHBookList_GetBookIndexFileHREF(ParamHREF) { var ResultArray = new Array(-1, null); var LongestMatchIndex; var MaxIndex; var Index; var Parts; var FileHREF; // Find the book directory // LongestMatchIndex = -1; for (MaxIndex = this.mBookList.length, Index = 0 ; Index < MaxIndex ; Index++) { if (ParamHREF.indexOf(this.mBookList[Index].mDirectory) == 0) { if (LongestMatchIndex == -1) { LongestMatchIndex = Index; } else if (this.mBookList[Index].mDirectory.length > this.mBookList[LongestMatchIndex].mDirectory.length) { LongestMatchIndex = Index; } } } // If LongestMatchIndex is valid, we found our book directory // if (LongestMatchIndex != -1) { // Set FileHREF to be just the file portion // if (this.mBookList[LongestMatchIndex].mDirectory.length > 0) { FileHREF = ParamHREF.substring(this.mBookList[LongestMatchIndex].mDirectory.length, ParamHREF.length); } else { FileHREF = ParamHREF; } ResultArray[0] = LongestMatchIndex; ResultArray[1] = FileHREF; } return ResultArray; } function WWHBookList_BookFileIndiciesToHREF(ParamBookIndex, ParamFileIndex) { return this.mBookList[ParamBookIndex].mDirectory + this.mBookList[ParamBookIndex].mFiles.fFileIndexToHREF(ParamFileIndex); } function WWHBookList_HREFToBookIndexFileIndexAnchor(ParamHREF) { var ResultArray = new Array(-1, -1, ""); var Parts; var TrimmedHREF; var Anchor; var BookIndex; var FileIndex; // Record anchor // Parts = ParamHREF.split("#"); TrimmedHREF = Parts[0]; Anchor = ""; if (Parts.length > 1) { if (Parts[1].length > 0) { Anchor = Parts[1]; } } // Determine book index // Parts = this.fGetBookIndexFileHREF(TrimmedHREF); if (Parts[0] >= 0) { BookIndex = Parts[0]; FileIndex = this.fHREFToFileIndex(BookIndex, Parts[1]); if (FileIndex >= 0) { ResultArray[0] = BookIndex; ResultArray[1] = FileIndex; ResultArray[2] = Anchor; } } return ResultArray; } function WWHBookList_GetSyncPrevNext(ParamHREF) { var ResultArray = new Array(null, null, null); var Parts; var BookIndex; var FileIndex; // Determine current book index and file index // Parts = this.fHREFToBookIndexFileIndexAnchor(ParamHREF); BookIndex = Parts[0]; FileIndex = Parts[1]; // Set return results // if ((BookIndex >= 0) && (FileIndex >= 0)) { // Set sync // ResultArray[0] = ParamHREF; // Indicates file found, sync possible // Set previous // if (FileIndex > 0) { ResultArray[1] = this.fBookFileIndiciesToHREF(BookIndex, FileIndex - 1); } else { if (BookIndex > 0) { ResultArray[1] = this.fBookFileIndiciesToHREF(BookIndex - 1, this.mBookList[BookIndex - 1].mFiles.mFileList.length - 1); } } // Set next // if ((FileIndex + 1) < this.mBookList[BookIndex].mFiles.mFileList.length) { ResultArray[2] = this.fBookFileIndiciesToHREF(BookIndex, FileIndex + 1); } else { if (((BookIndex + 1) < this.mBookList.length) && (this.mBookList[BookIndex + 1].mFiles.mFileList.length > 0)) { ResultArray[2] = this.fBookFileIndiciesToHREF(BookIndex + 1, 0); } } } return ResultArray; } function WWHBookList_GetContextIndex(ParamContext) { var RetIndex = -1; if (typeof(this.mBookContextToIndex[ParamContext + "~"]) == "number") { RetIndex = this.mBookContextToIndex[ParamContext + "~"]; } return RetIndex; } function WWHBookList_GetContextBook(ParamContext) { var ResultBook = null; var MaxIndex; var Index; for (MaxIndex = this.mBookList.length, Index = 0 ; Index < MaxIndex ; Index++) { if (this.mBookList[Index].mContext == ParamContext) { ResultBook = this.mBookList[Index]; } } return ResultBook; }