var PatArray = new Array();
var PageEnd = "</TABLE>";
var TypeToDisplay = "all";
var PatDisplayCount = 0;
var Loaded = 1;
var PrevPatent = -1;
var NextPatent = 1;
var PatentNumber = 1;
var PageCount = 0;
var MaxPageLinkCount = 15;
var CatMatch = 0;
var MainPatentImage;
var MainPatentLayer;
var MainPreviousLayer;
var MainNextLayer;
var MainCaptionLayer;
var MainLogoLayer;
var MainLinkLayer;
var MainStartLayer;
var MainEndLayer;
var NotShown = 0;
var CurrentPatent = -1;
var patDoc;
var MainLayer;
var PageWidth;
var PageHeight;
var bw = new lib_bwcheck();
var PatentList = "";
var StartNumber = 0;
var EndNumber = ItemsPerPage-1;

// (C) 2001 Glenn MacStravic.  Use if you want.  No guarantees, and at
// least bother to thank me. 


function Patent(File, FileType, Date, Category, Caption, FullCaption) {
  this.File = File;
  this.FileType = FileType;
  this.Date = Date;
  this.Category = Category;
  this.Caption = Caption;
  this.FullCaption = FullCaption;
}

function StartPatents() {
  patDoc = findObj('MainLayer', self.document);
  if (patDoc) {
    MainLayer = patDoc;
    if ((bw.ns5) || (bw.ie)) {
      patDoc.innerHTML = "&nbsp;";
	if (MainLayer.style) {
          MainLayer = MainLayer.style;
	}
    }
    else {
      patDoc = patDoc.document;
      patDoc.open();
    }
  }
  MainPatentLayer = findObj('PatentLayer', self.document);
  if (MainPatentLayer) {
    MainPatentImage = findObj('PatentImage', MainPatentLayer.document);
    if (MainPatentLayer.style) {
      MainPatentLayer = MainPatentLayer.style;
    }
  }
  MainPreviousLayer = findObj('PreviousLayer', self.document);
  if (MainPreviousLayer) {
    if (MainPreviousLayer.style) {
      MainPreviousLayer = MainPreviousLayer.style;
    }
  }
  MainNextLayer = findObj('NextLayer', self.document);
  if (MainNextLayer) {
    if (MainNextLayer.style) {
      MainNextLayer = MainNextLayer.style;
    }
  }
  MainCaptionLayer = findObj('CaptionLayer', self.document);
  MainLogoLayer = findObj('LogoLayer', self.document);
  MainLinkLayer = findObj('LinkLayer', self.document);
  MainStartLayer = findObj('StartLayer', self.document);
  MainEndLayer = findObj('EndLayer', self.document);
  if ((self.document.location.search.length > 0) && (CurrentPatent == -1)) {
    if (self.document.location.search == "?TextOnly") {
    }
    else {
      setTimeout('NewLoadPatent("", -2)', 200);
    }
  }  
  if (CurrentPatent < 0) {
    CurrentPatent = 0;
  }
  CurrentPage = Math.floor(CurrentPatent/ItemsPerPage);
}

function MakePageLink(PageNumber) {
  var TempStr, NewEnd, NewStart, ItemCount, LocalPage;
  LocalPage = PageNumber;
  if (PageNumber == "<<") {
    PageNumber = CurrentPage-1;
  }
  else if (PageNumber == ">>") {
    PageNumber = CurrentPage+1;
  }
  PageNumber = parseInt(PageNumber);
  if ((PageNumber != CurrentPage) && ((PageNumber > 0) && (PageNumber <= PageCount)) ) {
    TempStr = '<FONT FACE="'+MainFontFace+'" SIZE="'+MainFontSize+'" COLOR="'+MainFontColor+'">';
    if (LocalPage != "<<") {
      TempStr += '|';
    }
    TempStr += '</FONT>&nbsp;<A HREF="javascript:doNothing();" onClick="CurrentPatent='+((PageNumber-1)*ItemsPerPage)+';NewRefreshList(); goToTop(); return false;" onMouseOver="self.status=\'Page '+PageNumber+'\';return true;" onMouseOut="self.status=\'\';return true;"><FONT FACE="'+MainFontFace+'" SIZE="'+MainFontSize+'" COLOR="'+MainFontColor+'">&nbsp;'+LocalPage+'&nbsp;</FONT></A>&nbsp;';
  }
  else {
    TempStr = '<B><FONT FACE="'+MainFontFace+'" SIZE="'+MainFontSize+'" COLOR="'+MainFontColor+'">';
    if (LocalPage != "<<") {
      TempStr += '|';
    }
    TempStr += '&nbsp;&nbsp;'+LocalPage+'&nbsp;&nbsp;</FONT></B>';
  }
  return TempStr;
}

function goToTop() {
  if (bw.ie) {
    document.body.scrollTop = 0+"px";
  }
  if (bw.ns4) {
    //      window.pageYOffset = 0;
  }
  if (bw.ns5) {
//    window.pageYOffset = 0;//+"px";
  }
}

function EndPatents() {
  var i, TempLink, PageLinkCount;
  var StartPage, EndPage;
  EndPage = PageCount;
  TempLink = "";
  if (CatMatch > ItemsPerPage) {
    PageCount = Math.floor((CatMatch-1)/ItemsPerPage)+1;
    CurrentPage = Math.floor(EndNumber/ItemsPerPage);
    PageLinkCount = Math.floor(MaxPageLinkCount/2);
    StartPage = CurrentPage - PageLinkCount;
    TempLink = '<TR><TD COLSPAN="4" ALIGN="CENTER" VALIGN="MIDDLE">';
    if (StartPage <= 1) {
      StartPage = 1;
      EndPage = MaxPageLinkCount;
    }
    else {
      TempLink += '... ';
      EndPage = CurrentPage + PageLinkCount;
    }
    if (EndPage > PageCount) {
      EndPage = PageCount;
      StartPage = PageCount-MaxPageLinkCount;
    }
    if (StartPage < 1) {
      StartPage = 1;
    }
    TempLink += MakePageLink("<<");
    for (i = StartPage; i <= EndPage; i++) {
      TempLink += MakePageLink(i);
    }
    TempLink += '<FONT FACE="'+MainFontFace+'" SIZE="'+MainFontSize+'" COLOR="'+MainFontColor+'"></FONT>';
    TempLink += MakePageLink(">>");
    if (EndPage < PageCount) {
      TempLink += ' ...';
    }
    TempLink += '</TD></TR>';
  }
  if (bw.ns4) {
    patDoc.writeln(MainHeader);
    patDoc.writeln(TempLink);
    patDoc.writeln(PatentList);
    patDoc.writeln(TempLink);
    patDoc.writeln(PageEnd);
    patDoc.close();
  }
  else {
    // IE 'loses' the patdoc definition.  I dunno.
    self.document.getElementById('MainLayer').innerHTML = MainHeader+TempLink+PatentList+TempLink+PageEnd;
  }
}

function doNothing() {
}

function NewLoadPatent(newLocation, newPatentNumber, flag) {
  var localDoc, secondTime, newImage;
  var PatentName, obj, PatNum, CaptionMessage;
  self.status = '';
  HideMain();
  if (!(MainPatentLayer&&MainLayer&&MainPreviousLayer&&MainNextLayer&&MainLinkLayer&&MainCaptionLayer&&MainStartLayer&&MainEndLayer)) {
    StartPatents();
    if (!flag) {
      setTimeOut('NewLoadPatent('+newLocation+', '+newPatentNumber+', true)', 200);
    }
  }
  if (newLocation.length == 0) {
    if (newPatentNumber == -1) {
      PatentName = "/include/trans";
      PatNum = -1;
    }
    else if (newPatentNumber == -2) {
      PatentName = unescape(self.document.location.search);
      PatentName = PatentName.substring(1, PatentName.length);
      PatNum = -1;
      for (i = 0; i < PatArray.length; i++) {
	if (PatArray[i].File == PatentName) {
	  PatNum = i;
	  break;
	}
      }
      PatentName = "patents/"+PatArray[PatNum].File;
    }
    else {
      PatentName = "patents/"+PatArray[newPatentNumber].File;
      PatNum = newPatentNumber;
    }
  }
  else {
    if (newLocation == "trans") {
      PatentName = "/include/";
    }
    else {
      PatentName = "patents/";
    }
    PatentName += newLocation;
    PatNum = newPatentNumber;
  }
  CurrentPatent = PatNum;
  PatentName += '.gif';

  if (PatentName.length > 0) {
    setVisibility(MainStartLayer, 0);
    setVisibility(MainEndLayer, 0);
    if (PatNum > 0) {
      setVisibility(MainPreviousLayer, 1);
    }
    else {
      setVisibility(MainPreviousLayer, 0);
    }
    if (PatNum < (PatArray.length-1)) {
      setVisibility(MainNextLayer, 1);
    }
    else if (PatNum > 0) {
      setVisibility(MainNextLayer, 0);
    }
    PatentName = Replace(PatentName, ' ', '_');
    MainPatentImage.src = PatentName;
  }
  if (CurrentPatent > -1) {
    setVisibility(MainPatentLayer, 1);
    goToTop();
    if (MainCaptionLayer) {
      setVisibility(MainLinkLayer, 1);
      if (PatArray[PatNum].FullCaption.length > 0) {
	CaptionMessage = PatArray[PatNum].FullCaption;
      }
      else {
	CaptionMessage = PatArray[PatNum].Caption;
      }
      if ((CaptionMessage.length == 0) || (CaptionMessage == "&nbsp;")) {
	CaptionMessage = 'Think you\'re clever? Then <A STYLE="background-image: none; background: transparent;" HREF="mailto:glenn@macstravic.com?subject=Caption_'+PatArray[PatNum].File+'"><FONT FACE="'+CaptionFontFace+'" COLOR="'+CaptionFontColor+'" SIZE="'+CaptionFontSize+'">suggest a caption</FONT></A> for this patent.';
      }
      setVisibility(MainLogoLayer, 0);	
      setVisibility(MainCaptionLayer, 1);
      if (bw.ns4) {
	MainCaptionLayer.document.open();
	MainCaptionLayer.document.write('<TABLE HEIGHT="'+CaptionHeight+'" WIDTH="'+CaptionWidth+'" CELLSPACING=0 CELLPADDING=0 BORDER=0 VSPACE=0 HSPACE=0 BACKGROUND="'+CaptionBack+'"><TR><TD VALIGN="TOP"><FONT FACE="'+CaptionFontFace+'" SIZE="'+CaptionFontSize+'" COLOR="'+CaptionFontColor+'">'+CaptionMessage+'</FONT></TD></TR></TABLE>');
	MainCaptionLayer.document.close();
      }
      else {
	MainCaptionLayer.innerHTML = '<FONT FACE="'+CaptionFontFace+'" SIZE="'+CaptionFontSize+'" COLOR="'+CaptionFontColor+'">'+CaptionMessage+'</FONT>';
      }    
    }
  }
}


function OldPatRow(Index) {
  var obj, i;
  var TempStr, TempStr2;
  TempStr = "";
  if (Index < PatArray.length) {
    TempStr+="<TR CLASS='NormalText'><TD CLASS='NormalText' ALIGN=\"LEFT\" VALIGN=\"TOP\" WIDTH=\"100\"><A CLASS=\"PatentLink\" HREF=\"javascript:NewLoadPatent('', "+Index+")\" onMouseOver=\"self.status='Click to Load Patent';return true;\" onMouseOut=\"self.status='';return true;\"><IMG BORDER=0 SRC=\"patents/"+PatArray[Index].File+"-th.gif\" WIDTH=100 HEIGHT=100></A></TD><TD>&nbsp;</TD><TD CLASS='NormalText' ALIGN=\"LEFT\" WIDTH=\"88%\" VALIGN=\"TOP\">";
    TempStr2 = Replace(PatArray[Index].File, "_-_", "_");
    TempStr2 = Replace(TempStr2, "_", " ");
    TempStr += "&nbsp;<BR><A CLASS=\"PatentLink\" HREF=\"javascript:NewLoadPatent('', "+Index+")\" onMouseOver=\"self.status='Click to Load Patent';return true;\" onMouseOut=\"self.status='';return true\">";
    if (bw.bs4) {
      TempStr += '<FONT FACE="'+MainFontFace+'" SIZE="'+MainFontSize+'" COLOR="'+MainFontColor+'">'+TempStr2+'</FONT>';
    }
    else {
      TempStr += TempStr2;
    }
    TempStr += "</A>";
    if (PatArray[Index].Caption && (PatArray[Index].Caption.length > 0)) {
      TempStr += '<BR>';
      if (bw.ns4) {
	TempStr += '<FONT FACE="'+MainFontFace+'" SIZE="'+MainFontSize+'" COLOR="'+MainFontColor+'">'+PatArray[Index].Caption+'</FONT>';
      }
      else {
	TempStr += PatArray[Index].Caption;
      }
    }
    TempStr += "</TD><TD WIDTH=\"20\">&nbsp;</TD></TR>";
    PatentList += TempStr;
  }
}

function HideMain() {
  setVisibility(MainLayer, 0);
}

function NewRefreshList() {
  var LocalCount;
  PatentNumber = 1;
  NotShown = 0;

  if (top.currentPatentType) {
    TypeToDisplay = top.currentPatentType;
  }
  else {
    TypeToDisplay = "all";
  }

  if (TypeToDisplay == "all") {
    CatMatch = PatArray.length;
  }
  else {
    CatMatch = 0;
    for (i = 0; i < PatArray.length; i++) {
      if (PatArray[i].Category == TypeToDisplay) {
	CatMatch++;
      }
    }
  }
  StartPatents();
  PatentList = "";
  if (CurrentPatent > 0) {
    StartNumber = CurrentPage*ItemsPerPage;
  }
  else {
    StartNumber = 0;
  }
  EndNumber = StartNumber + ItemsPerPage
  setVisibility(MainCaptionLayer, 0);
  setVisibility(MainLinkLayer, 0);
  setVisibility(MainPreviousLayer, 0);
  setVisibility(MainNextLayer, 0);
  setVisibility(MainLogoLayer, 1);
  for (i = StartNumber; i < EndNumber; i++) {
    OldPatRow(i);
  }
  EndPatents();
}

function MainPage() {
  var obj;
  setVisibility(MainPatentLayer, 0);
  setVisibility(MainStartLayer, 1);
  setVisibility(MainEndLayer, 1);
  setVisibility(MainLayer, 1);
}

function SwapPrevImage(On) {
  var obj, thumb;
  obj = findObj('PrevImage', self.document);
  if (obj) {
    if (On) {
      obj.src = PrevHighlight;
    }
    else {
      obj.src = PrevNorm;
    }
  }
  obj = findObj('PrevThumbLayer', self.document);
  if (obj) {
    if (bw.ns4) {
      thumb = findObj('PrevThumb', obj.document);
    }
    else {
      thumb = findObj('PrevThumb', self.document);
    }
    if ((thumb) && (CurrentPatent > 0)) {
      thumb.src = "patents/"+PatArray[CurrentPatent-1].File+"-th.gif";
    }
    if (obj.style) {
      obj = obj.style;
    }
    setVisibility(obj, On);
  }
}

function SwapNextImage(On) {
  obj = findObj('NextImage', self.document);
  if (obj) {
    if (On) {
      obj.src = NextHighlight;
    }
    else {
      obj.src = NextNorm;
    }
  }
  obj = findObj('NextThumbLayer', self.document);
  if (obj) {
    if (bw.ns4) {
      thumb = findObj('NextThumb', obj.document);
    }
    else {
      thumb = findObj('NextThumb', self.document);
    }
    if ((thumb) && (CurrentPatent < PatArray.length-1)) {
      thumb.src = "patents/"+PatArray[CurrentPatent+1].File+"-th.gif";
    }
    if (obj.style) {
      obj = obj.style;
    }
    setVisibility(obj, On);
  }
}

