﻿// Contains BBOnline client side class definitions

var BBOnlineSession = {
  CURRENTDOCUMENTID: "currentdocumentid",
  CURRENTDOCUMENTORIGIN: "currentdocumentorigin",
  CURRENTDOCUMENTTITLE: "currentdocumenttitle"  
}

var BBOnlineOrigins = {
  TOC: "toc",
  INDEX: "index",
  QUEST: "quest",
  DOCUMENT: "document",
  UNKNOWN: "unknown"
}

var BBOnlineToc = {
  MAIN: "main"
}

var BBOnlineSiteMeasurements = {
  HEADERPANESIZER: 8,
  MENUMAXWIDTH: 928,
  MENUTOPRIGHTCORRECTION: 40,
  GWCONTENTTOP: 20,
  GWCONTENTLEFT: 4,
  GWCONTENTWIDTHMARGIN: 8,
  GWCONTENTHEIGHTMARGIN: 24,
  NENAVCONTENTTOP: 20,
  NENAVCONTENTLEFT: 4,
  NENAVCONTENTWIDTHMARGIN: 8,
  NENAVCONTENTHEIGHTMARGIN: 50
}

// Fixes documentid where | is used instead of /
function FixBBOnlineDocumentId(documentid) 
{   
  if (documentid != null)
  {
    docindex = documentid.lastIndexOf(".htm");
    if (docindex != -1) {
      replaceindex = documentid.indexOf('|', docindex);
      if (replaceindex != -1) {
        documentid = documentid.substr(0, replaceindex) + "/" + 
          documentid.substr(replaceindex+1);        
      }  
    }
  }
  
  return documentid;
}

// BBOnlineDocument class definition. title is optional.
function BBOnlineDocument(documentid, title, origin)
{
  this.id = "";
  this.locator = "";
  documentid = FixBBOnlineDocumentId(documentid);
  this.fullid = documentid;
  if (title) {
    this.title = title;
  } else {
    this.title = "";
  }
  if ((origin == null) || (origin == "")) {
    this.origin = BBOnlineOrigins.UNKNOWN;
  } else {
    this.origin = origin;
  }
      
  // Parse document id
  if (documentid != null) {
    docindex = documentid.lastIndexOf(".htm");
    if (docindex != -1) {
      docendindex = documentid.indexOf('/', docindex);
      if (docendindex != -1) {
        locindex = documentid.lastIndexOf('/');
        if ((locindex != -1) && (locindex < documentid.length)) {
          this.locator = documentid.substr(locindex + 1);
        }      
        this.id = documentid.substring(0, docendindex);                  
      } else {
        this.id = documentid;      
      }
    }  
  } 
}

BBOnlineDocument.prototype.getAssigned = function() {
  return ((this.id != null) && (this.id != ""));
}

BBOnlineDocument.prototype.setOrigin = function(origin) {
  if ((origin == null) || (origin == "")) {
    this.origin = BBOnlineOrigins.UNKNOWN;
  } else {
    this.origin = origin;
  }        
}

BBOnlineDocument.prototype.sameDocument = function(documentid) {
  if (!this.getAssigned()) {
    return false;
  } else {
    var testdoc = new BBOnlineDocument(documentid);
    if (!testdoc.getAssigned()) {
      return false;
    } else {
      return (this.id == testdoc.id);
    }
  }
}


