// All right reserved.
// (C) Copyright 2002, Burk Prael
//
// bprael @ yahoo.com

/*

 Prototypes :

 public functions
 -----------------------------------------------
 function loadupFrames     ()
 function drawAlbum        ()
 function initAlbum        (albumPath, albumName)   // albumName = 'promoset.js'
 function drawSeparator    (separatorText, linkUrl, isAbove, isBlack, alignment)
 function showPicture      (linkOnClick, mouseOverText, picIndex)
 function outputAlbumHeader ()
 function outputAlbumFooter ()

 private functions
 -----------------------------------------------
 function showNameValue    (name, val)
 function getSetIndexFor   (displayMode)
 function newLineInTiles   (colCount, start, end, exitTable)
 function showCaptionsfrom (picIndexColStart, picIndexColEnd)
 function outputTitle      (titleStr,separatorPos,separatorColor,separatorWidth,showIndexLink,justification)
 function displayTiles     ()
 function enlargeSingle1Full (curPicIndex)
 function enlargeSingle1   (curPicIndex)
 function enlargeSingle2   (curPicIndex)
 function outputDocHeaderStart ()
 function outputDocHeaderEnd ()
 function outputDocFooter  (trackTitle)

*/


// enumerations - do not change
var cDisplayTiled       = 0;
var cDisplayEnlarged1   = 1;
var cDisplayEnlarged2   = 2;

var cTileSpacing        = 20;
var cTileMargin         = 10;

var cSeparatorAbove     = -1;
var cSeparatorNone      = 0;
var cSeparatorBelow     = 1;

var cSeparatorMedCol    = 0;
var cSeparatorThinBlack = 1;
var cSeparatorCustom    = 2;

var cAlignJustify       = -2;
var cAlignLeft          = -1;
var cAlignCenter        = 0;
var cAlignRight         = 1;

var cLayoutIndependent  = 0;
var cLayoutCell         = 1;

var cDefaultTitleFont    = '<span class="title">';


// private member variables
var gDisplayMode        = 0;
var gSetIndex           = 0;
var gCurrentPageIdx     = -1;
var gAlbumPath          = "";
var gAlbumName          = "";

var gSlideWindow, gEnlargeWindow1;

var gReturnIndexPage    = "index.htm";
var gPageTitle          = "";

var gSlideShowMode      = 0;
var gSlideShowDelay     = 3;

// user-definable variables
var gOwner               = '';
var gDisplayWidth        = 0;
var gDisplayHeight       = 0;

var gMarginWidth         = 80;
var gMarginTop           = 0;
var gMarginBottom        = 0;

var gPathToRoot          = '';
var gAlbumHeader         = '';
var gAlbumFooter         = '';
var gCopyrightStr        = '';
var gPathToStyle         = '/album/style1/';
var gPathToClipart       = '/album/clipart/';
var gCopyrightEmail      = '';
var gBackgroundColor     = '#ffffd0';

var gSeparatorLineColor    = '#000000';
var gSeparatorLineWidth    = 1;
var gSeparatorMarginTop    = 3;
var gSeparatorMarginBottom = 3;

var gScrollbarFaceColor      ='#f2f2c0';
var gScrollbarArrowColor     ='#000000';
var gScrollbarTrackColor     ='#cecea0';
var gScrollbarShadowColor    ='#8e8ea0';
var gScrollbarHighlightColor ='#ffffd0';
var gScrollbar3dlightColor   ='#9c9c70';
var gScrollbarDarkshadowColor='#8e8ea0';
var gGifIndex                ='arrows4b.gif';
var gOnloadStr               = '';
var gOnUnloadStr             = '';

var gDrawFooter          = 1;
var gIncludeIndexInFooter= 1;
var gIncludeCopyright    = 1;

function showNameValue (name, val)
{
   docAlbum.write (name + ' = [' + val + ']<BR>\n');
}

//----------------------------------------------------------------------------------

function outputDocHeaderEnd ()
{
  // alert ('showing doc header');
  docAlbum.write ('</HEAD>\n');
}

//----------------------------------------------------------------------------------

function getPrevPageIndex ( curLayoutIdx )
{
   var layout = curLayoutIdx;
   var done = 0;

   while (!done && layout > 0)
   {
     if ( Al.layoutItems[layout-1].itemDescr == 'pageBreak' )
       done = 1;
     else
       layout--;
   }
   return layout;
}

//----------------------------------------------------------------------------------

function getNextPageIndex ( curLayoutIdx )
{
   var layout = curLayoutIdx;
   var done = 0;

   while (!done && layout < layoutEnd)
   {
     if ( Al.layoutItems[layout].itemDescr == 'pageBreak' )
       done = 1;
     else
       layout++;
   }
   return layout;
}

//----------------------------------------------------------------------------------

function getSetIndexFor (displayMode)
{
  var setIndex = -1;

  for (a=0; a < Al.sets.length; a++)
  {
     if (Al.sets[a].displayMode == displayMode)
     {
       setIndex = a;
       break;
     }
  }
  return setIndex;
}

//----------------------------------------------------------------------------------

function newLineInTiles (colCount, start, end, exitTable)
{
   // alert ('inside newLineInTiles');

   if (colCount > 0)
   {
     docAlbum.write ('\n<!-- row end -->\n');
     docAlbum.write ('</TR>\n');
     showCaptionsfrom (start, end);
   }

   if (exitTable)
   {
     docAlbum.write ('\n<!-- tiles end -->\n');
     docAlbum.write ('</TABLE>\n');
   }
}

//----------------------------------------------------------------------------------

function showPicture (linkOnClick, mouseOverText, picIndex)
{
  outputStr = '\n    <TABLE align=center border=0 cellspadding=0 cellspacing=' + Al.sets[gSetIndex].borderWidth + ' background="">';

  if (Al.sets[gSetIndex].borderWidth != 0)
  {
    if (gDisplayMode == cDisplayEnlarged1)
      outputStr += '<TR><TD align=center bgcolor="#666666">';
    else
      outputStr += '<TR><TD align=center bgcolor="' + Al.sets[gSetIndex].borderColor + '">';
  }
  else
    outputStr += '<TR><TD align=center>';

  outputStr += '<TABLE border=0 cellpadding=0 cellspacing=0 bgcolor="#000000" width="'
                      + Al.dims[gSetIndex][picIndex].dimX + '" '
                      + 'height="' + Al.dims[gSetIndex][picIndex].dimY + '">'
                      +'<TR><TD align=center>';

  if (linkOnClick != "")
    outputStr += '<A href = "' + linkOnClick + '" onmouseover="self.status = \'\'; return true;"  onmouseout="self.status = \'\'; return true;">';

  outputStr +=  '<img border=0 hspace=0 vspace=0 ' +
                'src="' + Al.albumPath + Al.sets[gSetIndex].prefix + Al.pics[picIndex].picName + '" ';

  if (mouseOverText != "")
    outputStr +=  'alt = "' + mouseOverText + '" ';

  outputStr +=  'width="'  + Al.dims[gSetIndex][picIndex].dimX + '" ' +
                'height="' + Al.dims[gSetIndex][picIndex].dimY + '" ' + '>';

  if (linkOnClick != "")
     outputStr += '</A>';

  outputStr += '</TD></TR></TABLE>';
  outputStr += '</TD></TR></TABLE>';

  // alert ('outputstr = ' + outputStr);

  docAlbum.write (outputStr);
}

//----------------------------------------------------------------------------------

function showCaptionsfrom (picIndexColStart, picIndexColEnd)
{
  var tempStr = "&nbsp;";
  var alignStr = "";
  var picIndex = 0;

  docAlbum.write ('\n<!-- captions start -->\n');

  // alert ('showing captions between ' + picIndexColStart + ' and ' + picIndexColEnd );

  docAlbum.write ('<TR>');

   // for (a = picIndexColStart; a < picIndexColEnd; a++)
   //  alert ('Al.layoutItems[' + a + '].itemDescr = ' + Al.layoutItems[a].itemDescr);

  for (a = picIndexColStart; a <= picIndexColEnd; a++)
  {
    if (Al.layoutItems[a].itemDescr == 'pic')
    {
      index = Al.layoutItems[a].itemIndex;

      switch (Al.pics[index].capAlignment)
      {
        case cAlignLeft    : alignStr = "<p>"; break;
        case cAlignRight   : alignStr = "<p align=right>"; break;
        case cAlignJustify : alignStr = "<p align=justify>"; break;
        default            : alignStr = "<p align=center>"; break;
      }

      if (Al.pics[index].caption == '')
        tempStr = "&nbsp;"
      else
        tempStr = Al.pics[index].caption;

      // if (tempStr.indexOf("</p>") == -1)
      //  tempStr += '<BR><BR>';


      outputStr = '<TD align=center valign=top><TABLE cellspacing=0 cellpadding=0 width=' +
                            Al.dims[gSetIndex][index].dimX + '><TR><TD>' + alignStr + '<font face="verdana" size=1>' + tempStr + '<BR><BR></font></p></TD></TR></TABLE></TD>';

      docAlbum.write (outputStr);
    }
  }
  docAlbum.write ('</TR>\n');
}

//----------------------------------------------------------------------------------

function drawSeparator (separatorText, linkUrl, isAbove, isBlack, alignment)
{
  var sSpacer = '';
  var sContent = '';
  var sLine = '';

  // if (separatorText == '')
  // {
  //   separatorText = gCopyrightStr;
  //   alignment = '';
  // }

  var outputStr = '<TABLE align=center border=0 width=100% background="" cellspacing=0 cellpadding=0>\n';

  // build sContent
  if (alignment == 'centered')
    sContent = '<TR><TD width="10%" nowrap>&nbsp;</TD><TD align=center width="80%">' + separatorText + '</TD>' +
                   '<TD width="10%" nowrap align=right>&nbsp;';
  else
    sContent = '<TR><TD colspan=2 nowrap>' + separatorText + '</TD>' +
                   '<TD width="20%" nowrap align=right>&nbsp;';

  if (!IsEmpty (linkUrl) )
    sContent += '<a href="' + linkUrl + '" onmouseover="self.status = \'\'; return true;"  onmouseout="self.status = \'\'; return true;"><img border=0 alt="Index" vspace=1 hspace=3 src="' + gPathToClipart + gGifIndex + '" align=absmiddle></a>';

  sContent += '</TD></TR>\n';

  // line
  if (!isBlack)
    sLine    += '<TR><TD colspan=3 bgcolor="#cBc3b0" ><img src="' + gPathToClipart + 'blank.gif" width=10 height=2></TD></TR>\n';
  else
    sLine    += '<TR><TD colspan=3 bgcolor="#000000"><img src="' + gPathToClipart + 'blank.gif" width=10 height=1></TD></TR>\n';

  // spacer
  sSpacer = '<TR><TD colspan=3 ><img src="' + gPathToClipart + 'blank.gif" width=10 height=2></TD></TR>\n';

  if (isAbove) // header - index link above line
    outputStr += sSpacer + sLine + sContent;
  else
    outputStr += sContent + sLine + sSpacer;

  outputStr += '</TABLE><BR>\n';
  docAlbum.write (outputStr);
}

function outputTitle (titleStr,
                      separatorPos,
                      separatorColor,
                      separatorWidth,
                      showIndexLink,
                      justification)
{
  var outputStr;

  outputStr =  '<TABLE align=center border=0 width=100% background="" cellpadding=0 cellspacing=0>\n';

  if (gSeparatorMarginTop > 0)
    outputStr += '<TR><TD colspan=3 ><img src="' + gPathToClipart + 'blank.gif" width=10 height=' + gSeparatorMarginTop + '></TD></TR>\n';

  if (separatorPos == cSeparatorAbove)
    outputStr += '<TR><TD colspan=3 bgcolor="' + separatorColor + '"><img src="' + gPathToClipart + 'blank.gif" width=10 height=' + separatorWidth + '></TD></TR>\n';

  if (justification == cAlignCenter)
  {
    outputStr += '<TR><TD width="20%">&nbsp;</td>\n' +
                 '    <TD width="60%" align=center nowrap>' + titleStr + '</TD>\n' +
                 '    <TD width="20%" align=right>';
  }
  else
  {
    outputStr += '<TR><TD colspan=2 width="80%" nowrap>' + titleStr + '</TD>\n' +
                 '    <TD width="20%" nowrap align=right>';
  }

  if (showIndexLink == 1)
    outputStr += '<a href="' + gReturnIndexPage + '" onmouseover="self.status = \'\'; return true;"  onmouseout="self.status = \'\'; return true;"><img border=0 alt="Index" vspace=1 hspace=1 src="' + gPathToClipart + gGifIndex + '" align=absmiddle ></a>';

  outputStr += '</TD></TR>\n';

  if (separatorPos == cSeparatorBelow)
    outputStr += '<TR><TD colspan=3 bgcolor="' + separatorColor + '"><img src="' + gPathToClipart + 'blank.gif" width=10 height=' + separatorWidth + '></TD></TR>\n';

  if (gSeparatorMarginBottom > 0)
    outputStr += '<TR><TD colspan=3 ><img src="' + gPathToClipart + 'blank.gif" width=10 height=' + gSeparatorMarginBottom + '></TD></TR>\n';

  outputStr += '</TABLE>\n\n';

  docAlbum.write (outputStr);
}

//----------------------------------------------------------------------------------

function displayTiles ()
{
  // determine gSetIndex for tiles

  if ( (displaySet = getSetIndexFor (cDisplayTiled) ) == -1)
    return;

  outputDocHeaderStart ();
  outputDocHeaderEnd ();
  outputAlbumHeader (); // function to call on resize

  gSetIndex    = displaySet;
  gDisplayMode = cDisplayTiled;

  var newDisplayWidth  = GetWinX() - cTileMargin;
  var maxColumns       = parseInt ( newDisplayWidth / (cTileSpacing + Al.sets[gSetIndex].maxDimX) );

  var titlesDisplayed  = 0;
  var insideTileTable  = 0;
  var done             = 0;
  var picIndexColStart = 0;
  var layoutEnd        = Al.layoutItems.length;
  var layoutCur;
  var columnCount      = 0;
  var rowCount         = 0;

  if ( gCurrentPageIdx == -1 )
    layoutCur = 0;
  else
    layoutCur = Al.pageIndexes [gCurrentPageIdx];

  indexColStart = layoutCur;


  // looking to go from layoutCur to either next page break or end of layout chain.

  while (!done && layoutCur < layoutEnd)  //  for (l = layoutStart; l < layoutEnd; l++)
  {
     if (Al.layoutItems[layoutCur].itemDescr == 'pageBreak')
     {
       done = 1;
     }
     else if (Al.layoutItems[layoutCur].itemDescr == 'title')
     {
       docAlbum.write ('\n<!-- title -->\n');

       titlesDisplayed++;

       var curTitleIndex = Al.layoutItems[layoutCur].itemIndex;

       // alert ('layout: ' + layoutCur + ' = title : ' + curTitleIndex);

       if (insideTileTable)
       {
         // alert ('layout item = title - exiting table first');
         newLineInTiles (columnCount, picIndexColStart, layoutCur, 1);
         columnCount = 0;
         insideTileTable = 0;
       }

       outputTitle (Al.titles[curTitleIndex].titleStr,
                    Al.titles[curTitleIndex].separatorPos,
                    Al.titles[curTitleIndex].separatorColor,
                    Al.titles[curTitleIndex].separatorWidth,
                    Al.titles[curTitleIndex].showIndexLink,
                    Al.titles[curTitleIndex].justification);
     }
     else if (Al.layoutItems[layoutCur].itemDescr == 'sepLine')
     {
       docAlbum.write ('\n<!-- sepLine -->\n');

       if (columnCount > 0)
       {
         // alert ('layout item = title - exiting table first');
         newLineInTiles (columnCount, picIndexColStart, layoutCur, 0);
         columnCount = 0;
       }
       docAlbum.write ('<TR><TD colspan=' + maxColumns + '><TABLE width="100%" align=center border=0 background="" cellspacing=0 cellpadding=0><TR><TD bgcolor="#cBc3b0"><img src="' + gPathToClipart + 'blank.gif" width=10 height=2></TD></TR></TABLE><BR><BR></TD></TR>\n');
     }
     else if (Al.layoutItems[layoutCur].itemDescr == 'htmlBlock')
     {
       docAlbum.write ('\n<!-- html block -->\n');

       var htmlIndex = Al.layoutItems[layoutCur].itemIndex;

       if ( Al.htmlBlocks[htmlIndex].layoutStyle == cLayoutIndependent )
       {
         docAlbum.write ('\n<!-- html block: independent -->\n');
         if (insideTileTable == 1)
         {
           newLineInTiles (columnCount, picIndexColStart, layoutCur, 1);
           columnCount = 0;
           insideTileTable = 0;
         }
       }

       if ( Al.htmlBlocks[htmlIndex].layoutStyle == cLayoutCell )
       {
         docAlbum.write ('\n<!-- html block: inCell -->\n');
         if (insideTileTable == 0)
         {
           docAlbum.write ('\n<!-- picture: tiles start 2 -->\n');

           docAlbum.write ('\n<TABLE align=center border=0 cellspacing=0 cellpadding=0 background="" >\n'); // test border
           insideTileTable = 1;
           columnCount = 0
         }

         if (columnCount == 0)
         {
           docAlbum.write ('<TR><TD>');
           picIndexColStart = layoutCur;  // need this for captions later
         }
         else
         {
           docAlbum.write ('<TD>');
         }

       }

       docAlbum.write (Al.htmlBlocks[htmlIndex].htmlBlock);

       if ( Al.htmlBlocks[htmlIndex].layoutStyle == cLayoutCell )
       {
         docAlbum.write ('</TD>');
         columnCount++;

         if (columnCount == maxColumns)         // potentially start new row
         {
           docAlbum.write ('</TR>\n');
           columnCount = 0;                     // trigger new column start on next cycle

           showCaptionsfrom (picIndexColStart, layoutCur);
         }
       }
     }
     else if (Al.layoutItems[layoutCur].itemDescr == 'pic')
     {
       var curPicIndex = Al.layoutItems[layoutCur].itemIndex;

       // start new set of tiles
       if (!insideTileTable)
       {
         docAlbum.write ('\n<!-- picture: tiles start 3 -->\n');

         docAlbum.write ('<TABLE align=center border=0 cellspacing=0 cellpadding=0 background="" >'); // test border
         insideTileTable = 1;
         columnCount = 0
       }

       // start new row
       if (columnCount == 0)
       {
         rowCount += 1;
         docAlbum.write ('\n<!-- picture: row start -->\n');
         docAlbum.write ('<TR>');
         picIndexColStart = layoutCur;  // need this for captions later
       }

       docAlbum.write ('\n<!-- picture -->\n');

       docAlbum.write ('<TD valign=bottom align=center width=' + parseInt (Al.sets[gSetIndex].maxDimX + cTileSpacing) + ' height=' + parseInt (Al.sets[gSetIndex].maxDimY + cTileSpacing) + '>'); // startNewCol
       columnCount++;

       if (getSetIndexFor (cDisplayEnlarged1) != -1)  // single display
         showPicture ('javascript:parent.enlargeSingle1(' + curPicIndex + ');', 'Click to enlarge', curPicIndex);
       else if (getSetIndexFor (cDisplayEnlarged2) != -1) // standalone enlargement
         showPicture ('javascript:parent.enlargeSingle2(' + curPicIndex + ');', 'Click for full size', curPicIndex);
       else
         showPicture ('', '', curPicIndex);

       docAlbum.write ('</TD>');            // close cell
       if (columnCount == maxColumns)         // potentially start new row
       {
         docAlbum.write ('\n<!-- picture: row end -->\n');
         docAlbum.write ('</TR>\n');
         columnCount = 0;                     // trigger new column start on next cycle

         showCaptionsfrom (picIndexColStart, layoutCur);
       }

     } // pic
     layoutCur++;
  }
  docAlbum.write ('\n<!-- end of album. columnCount = ' + columnCount + ', insideTileTable = ' + insideTileTable + ' -->\n');


  if (insideTileTable && columnCount > 0)
  {
    newLineInTiles (columnCount, picIndexColStart, layoutCur-1, 0);
    columnCount = 0;
  }

  if (insideTileTable)
    docAlbum.write ('</TABLE>\n');


  if (gDrawFooter && rowCount > 1)
  {
    var titleStr = '';

    if (gIncludeCopyright)
      titleStr = gCopyrightStr;

    outputTitle (titleStr,-1,'#000000',1,gIncludeIndexInFooter,-1);
  }

  outputAlbumFooter ();

  outputDocFooter (Al.albumFile);

  docAlbum.close ();
}

//----------------------------------------------------------------------------------


function enlargeSingle1 (curPicIndex)
{
  var paramList;

  var alignStr = "";
  var tempStr = "";

  if (curPicIndex < 0)
   curPicIndex = Al.pics.length-1;

  if (curPicIndex >= Al.pics.length)
    curPicIndex = 0;

  // determine gSetIndex
  if ( (displaySet = getSetIndexFor (cDisplayEnlarged1)) == -1)
    return;

  gSetIndex    = displaySet;
  gDisplayMode = cDisplayEnlarged1;

  // pictureFile, xSize, ySize, id, logname
  // var doc_height = Al.dims[gSetIndex][curPicIndex].dimY + 70;
  // var doc_width  = Al.dims[gSetIndex][curPicIndex].dimX + 30;

  var doc_height = Al.sets[gSetIndex].maxDimY + 100;
  var doc_width  = Al.sets[gSetIndex].maxDimX + 70;

  var winprops = "";
  var scrollbars = 'no';
  var screenHeight = screen.height;
  var outputStr = '';

  if (doc_height > (screen.height-100) )
  {
   screenHeight = screenHeight - 100;
   doc_height = screenHeight;
   doc_width  = doc_width + 17;
   scrollbars = 'yes';
  }
  if (doc_width > screen.width)
  {
   doc_width = screen.width - 20;

   if (scrollbars == 'no')
     doc_height = doc_height + 17;

   scrollbars = 'yes';
  }

  var winl = (screen.width - doc_width) / 2;
  var wint = (screenHeight - doc_height) / 2;

  if (winl < 0) winl = 0;
  if (wint < 0) wint = 0;


  winprops = 'height='+doc_height+
             ',width='+doc_width+
             ',top='+wint+
             ',left='+winl+
             ',scrollbars='+scrollbars+
             ',status=no,toolbar=no,location=no,directories=no,menubar=no,resizable=no';

  if (gSlideShowMode)
  {
    winprops += ',fullscreen';
    gSlideWindow = window.open('','slideShow',winprops);
    msgWindow = gSlideWindow;
  }
  else
  {
    gEnlargeWindow1=window.open('','enlarge1',winprops);
    msgWindow = gEnlargeWindow1;
  }

  msgWindow.document.write ('<html>\n');
  msgWindow.document.write ('<HEAD>\n');
  msgWindow.document.write (' <TITLE>Image ' + parseInt (curPicIndex+1) + '/' + Al.pics.length + '</TITLE>\n');

  if (gSlideShowMode)
  {
    msgWindow.document.write (' <LINK REL="STYLESHEET" TYPE="TEXT/CSS" HREF="' + gPathToStyle + 'albumStyleSlides.css"> \n');
    msgWindow.document.write ('  <META HTTP-EQUIV="Refresh" CONTENT="3; URL=javascript:opener.enlargeSingle1(' + parseInt(curPicIndex+1) + ')">\n');
    // msgWindow.document.write ('  <meta http-equiv="Page-Exit" content="revealTrans(Duration=1.0,Transition=23)">\n');
  }
  else
  {
    msgWindow.document.write (' <LINK REL="STYLESHEET" TYPE="TEXT/CSS" HREF="' + gPathToStyle + 'albumStyleEnl.css"> \n');
  }

  msgWindow.document.write ('</HEAD>\n');
  msgWindow.document.write ('<BODY> \n');

  if (Al.pics.length > 1)
  {
    outputStr =
    '<a href="javascript:opener.enlargeSingle1(' + (curPicIndex-1) + ');" onmouseover="self.status = \'\'; return true;"  onmouseout="self.status = \'\'; return true;"><u>previous</u></a>&nbsp;&nbsp;' +
    '<a href="javascript:opener.enlargeSingle1(' + (curPicIndex+1) + ');" onmouseover="self.status = \'\'; return true;"  onmouseout="self.status = \'\'; return true;"><u>next</u></a>&nbsp;&nbsp;';
  }

  msgWindow.document.write ('<TABLE border=0 cellspacing=0 cellpadding=2 width="100%" >\n<TR>');
  if (!gSlideShowMode)
  {
    if (getSetIndexFor (cDisplayEnlarged2) != -1) // standalone enlargement
      msgWindow.document.write ('  <TD width="33%">&nbsp;&nbsp;<a href="javascript:opener.enlargeSingle2(' + curPicIndex + ');"><u>Full Size</u></a></TD>\n');
    else
      msgWindow.document.write ('  <TD width="33%">&nbsp;</TD>\n');

    if (Al.pics.length > 3)
      msgWindow.document.write ('  <TD width="34%" align=center><a href="javascript:opener.gSlideShowMode=1;opener.enlargeSingle1(' + curPicIndex + ');"><u>Run Slideshow</u></a></TD>\n');
    else
      msgWindow.document.write ('  <TD width="34%" align=center>&nbsp;</TD>\n');

    msgWindow.document.write ('  <TD width="33%" align=right>' + outputStr + '</TD>\n');
  }
  else
  {
    msgWindow.document.write ('<TD align=center><a href="javascript:opener.gSlideShowMode=0;opener.gEnlargeWindow1.close();window.close();"><font size=3><u>Stop Slideshow</u></a></font></td>\n');
  }
  msgWindow.document.write ('</TR></TABLE><BR>\n');

  msgWindow.document.write ('<TABLE border=0 cellspacing=0 cellpadding=0 height="95%" align=center><TR><TD align=center>\n');

  docAlbum   = msgWindow.document;

  if (getSetIndexFor (cDisplayEnlarged2) != -1 && gSlideShowMode == 0) // standalone enlargement
    showPicture ('javascript:opener.enlargeSingle2(' + curPicIndex + ');', 'Click for full size', curPicIndex);
  else
    showPicture ('', '', curPicIndex);

  msgWindow.document.write ('  <TABLE width=' + Al.sets[gSetIndex].maxDimX + ' cellpadding=0 cellspacing=2 align=center>\n<TR>');

  if (gSlideShowMode)
    tempStr = '<font face=verdana, size=3>';
  else
    tempStr = '<font face=verdana, size=1>';

  if (Al.pics[curPicIndex].caption == '')
    tempStr += "&nbsp;"
  else
    tempStr += Al.pics[curPicIndex].caption;

  switch (Al.pics[curPicIndex].capAlignment)
  {
    case cAlignLeft    : alignStr = "<p>"; break;
    case cAlignRight   : alignStr = "<p align=right>"; break;
    case cAlignJustify : alignStr = "<p align=justify>"; break;
    default            : alignStr = "<p align=center>"; break;
  }

  msgWindow.document.write ('  <TD align=center valign=top><TABLE cellspacing=0 cellpadding=0 width=' + Al.dims[gSetIndex][curPicIndex].dimX + '><TR><TD>' + alignStr + tempStr + '</font></p></TD></TR></TABLE></TD>\n');

  msgWindow.document.write ('  </TR></TABLE>\n');

  msgWindow.document.write ('</TD></TR></TABLE>\n');

  gPageTitle = Al.albumFile + "." + curPicIndex;
  outputDocFooter (gPageTitle);

  msgWindow.document.close ();

  msgWindow.focus();

  docAlbum   = frames.albumcontent.document;
}

//----------------------------------------------------------------------------------

function enlargeSingle2 (curPicIndex)
{
  var paramList;

  if (curPicIndex < 0)
   curPicIndex = Al.pics.length-1;

  if (curPicIndex >= Al.pics.length)
    curPicIndex = 0;

  // determine gSetIndex
  if ( (displaySet = getSetIndexFor (cDisplayEnlarged2)) == -1)
    return;

  gSetIndex    = displaySet;
  gDisplayMode = cDisplayEnlarged2;

  // pictureFile, xSize, ySize, id, logname
  var doc_height = Al.dims[gSetIndex][curPicIndex].dimY;
  var doc_width  = Al.dims[gSetIndex][curPicIndex].dimX;
  var winprops = "";
  var scrollbars = 'no';
  var screenHeight = screen.height;

  if (doc_height > (screen.height-100) )
  {
   screenHeight = screenHeight - 100;
   doc_height = screenHeight;
   doc_width  = doc_width + 17;
   scrollbars = 'yes';
  }
  if (doc_width > screen.width)
  {
   doc_width = screen.width - 20;

   if (scrollbars == 'no')
     doc_height = doc_height + 17;

   scrollbars = 'yes';
  }

  var winl = (screen.width - doc_width) / 2;
  var wint = ((screenHeight - doc_height) / 2) - 30;

  if (winl < 0) winl = 0;
  if (wint < 0) wint = 0;

  winprops = 'height='+doc_height+
             ',width='+doc_width+
             ',top='+wint+
             ',left='+winl+
             ',scrollbars='+scrollbars+
             ',status=no,toolbar=no,location=no,directories=no,menubar=no,resizable';
  msgWindow=window.open('','enlarge2',winprops);

  msgWindow.document.write ('<HTML>');
  msgWindow.document.write ('<BODY topmargin=0 marginheight=0 leftmargin=0 marginwidth=0 onload=\'window.focus()\'>');

  docAlbum   = msgWindow.document;
  showPicture ('','', curPicIndex);

  gPageTitle = Al.albumFile + "." + curPicIndex + ".enl";
  outputDocFooter (gPageTitle);

  msgWindow.document.close ();

  docAlbum   = frames.albumcontent.document;

  // msgWindow.document.write ('<img src='+pictureFile +'>');
  // msgWindow.document.write ('<BR><img src="http://208.181.164.109/cgi-bin/ac.exe?oi=2&ps=WAT:X:QRS:RXYRS?S9S7SPS;SBSB&pn='+logname+'&ua='+escape(navigator.userAgent)+'" width=1 height=1 border=0>');
  // msgWindow.document.write ('</BODY></HTML>');
  // msgWindow.document.close ();
}
//----------------------------------------------------------------------------------

function drawAlbum ()
{
  gCurrentPageIdx  = -1;
  gSetIndex        = 0;

  // alert ('moving ahead - displaymode = ' + Al.sets[gSetIndex].displayMode);

  switch (Al.sets[gSetIndex].displayMode)
  {
    case 0  : displayTiles (); break;     // cDisplayTiled
    case 1  : enlargeSingle1 (0); break;  // cDisplayEnlarged1
    case 2  : enlargeSingle2 (0); break;  // cDisplayEnlarged2
  }
}

//----------------------------------------------------------------------------------

function initAlbum (albumPath, albumName)   // albumName = 'promoset.js'
{
  gSetIndex           = 0;
  gAlbumPath          = albumPath;
  gAlbumName          = albumName;

  if (initAlbum.arguments.length == 3) gReturnIndexPage = initAlbum.arguments[2];
  else                                 gReturnIndexPage = 'albumindex.htm';

  docDetails = frames.albumdetails.document;

  Al.init(gAlbumPath, gAlbumName);

  var fullPath = "" + gAlbumPath + gAlbumName;

  var outStr = '<HTML>\n' +
               '<HEAD>\n' +
               '  <LINK REL=STYLESHEET  HREF="' + gPathToStyle + 'albumStyleReg.css" TYPE="text/css">\n' +
               '  <script language="javascript" src="' + fullPath + '"></sc' + 'ript>\n' +
               '</HEAD>\n' +
               '<BODY bgcolor=' + gBackgroundColor + '>\n' +
               '&nbsp;\n' +
               '</BODY>\n' +
               '</HTML>\n';

  // alert ('outputStr = ' + outStr);

  docDetails.write (outStr); // doc - global variable pointing to child frame

  docDetails.close();
}

//----------------------------------------------------------------------------------

function outputDocHeaderStart ()
{
  docAlbum   = frames.albumcontent.document;


  var outputStr = '';
  var isNS = document.layers;

  // if (isNS)
  outputStr = '<HTML>\n' +
              '<HEAD>\n' +
              '  <LINK REL=STYLESHEET  HREF="' + gPathToStyle + 'albumStyleReg.css" TYPE="text/css">\n';

  docAlbum.write (outputStr);
}

//----------------------------------------------------------------------------------

function outputDocFooter (trackTitle)
{
  track  (docAlbum, gOwner, trackTitle, '');

  var outputStr = '</BODY>\n' +
                  '</HTML>\n';

  docAlbum.write (outputStr);
}

//----------------------------------------------------------------------------------

function calcDimensions ()
{
  gDisplayWidth  = GetWinX() - gMarginWidth;
  gDisplayHeight = GetWinY() - gMarginTop - gMarginBottom;
}

function outputAlbumHeader ()
{
  var outputStr;
  var a=outputAlbumHeader.arguments;

  calcDimensions ();
  InitUserDefaults ();

  docAlbum.write ('\n<!-- gAlbumHeader Start -->\n');

  docAlbum.write ('<BODY onResize="window.location.href=window.location.href" bgcolor="' + gBackgroundColor + '" ');

  if (a.length > 0 )
    if (a[0] != '')
      docAlbum.write ('onload= "' + a[0] + '" ');

  if (a.length > 1)
    if (a[1] != '')
      docAlbum.write ('onunload= "' + a[1] + '" ');

  if (gOnloadStr != '')
    docAlbum.write ('onload= "' + gOnloadStr + '" ');

  if (gOnUnloadStr != '')
    docAlbum.write ('onUnload= "' + gOnUnloadStr + '" ');

  docAlbum.write ('>\n');


  docAlbum.write (gAlbumHeader);
  docAlbum.write ('\n<!-- gAlbumHeader End -->\n');

  if (document.all)
  {
    outputStr = '<SCRIP' + 'T language="Javascript">\n' +
                '   document.body.style.scrollbarFaceColor      = "' + gScrollbarFaceColor      + '";\n' +
                '   document.body.style.scrollbarArrowColor     = "' + gScrollbarArrowColor     + '";\n' +
                '   document.body.style.scrollbarTrackColor     = "' + gScrollbarTrackColor     + '";\n' +
                '   document.body.style.scrollbarShadowColor    = "' + gScrollbarShadowColor    + '";\n' +
                '   document.body.style.scrollbarHighlightColor = "' + gScrollbarHighlightColor + '";\n' +
                '   document.body.style.scrollbar3dlightColor   = "' + gScrollbar3dlightColor   + '";\n' +
                '   document.body.style.scrollbarDarkshadowColor= "' + gScrollbarDarkshadowColor+ '";\n' +
                '</SCRIP' + 'T>\n';
    docAlbum.write (outputStr);
  }
}

//----------------------------------------------------------------------------------

function outputAlbumFooter ()
{
  docAlbum.write ('\n<!-- gAlbumFooter Start -->\n');
  docAlbum.write (gAlbumFooter);
  docAlbum.write ('\n<!-- gAlbumFooter End -->\n');
}

//----------------------------------------------------------------------------------

function initAlbumContentFrame ()
{
  var sOutput = '<HTML>\n' +
                '  <HEAD>\n' +
                '    <LINK REL=STYLESHEET  HREF="' + gPathToStyle + 'albumStyleReg.css" TYPE="text/css">\n' +
                '  </HEAD>\n' +
                '  <BODY bgcolor=' + gBackgroundColor + '>&nbsp;</BODY>\n' +
                '</HTML>\n';

  self.albumcontent.document.write (sOutput);
  self.albumcontent.document.close ();
}


function initAlbumDetailFrame ()
{
  var sOutput = '<HTML>\n' +
                '  <HEAD>\n' +
                '    <LINK REL=STYLESHEET  HREF="' + gPathToStyle + 'albumStyleReg.css" TYPE="text/css">\n' +
                '  </HEAD>\n' +
                '  <BODY bgcolor=' + gBackgroundColor + '>&nbsp;</BODY>\n' +
                '</HTML>\n';

  self.albumdetails.document.write (sOutput);
  self.albumdetails.document.close ();
}


function loadupFrames ()
{
  calcDimensions ();
  InitUserDefaults ();

  var formData = createRequestObject();
  var albumPath   = formData['albumPath'];
  var albumName   = formData['albumName'];
  var indexURL    = formData['indexURL'];
  var returnURL   = formData['returnURL'];

  initAlbumDetailFrame ();

  // self.albumdetails.window.location.href = "albumdetails.htm";

  if (!IsEmpty (indexURL) )
  {
    self.albumcontent.window.location.href = indexURL;
  }
  else
  {
    if (!IsEmpty (albumPath) && !IsEmpty (albumName) )
    {
      if (IsEmpty (returnURL) )
        returnURL = gPathToRoot + 'albumindex.htm';

      // alert ('albumLoc = ' + albumPath + ' albumName = ' + albumName + ' returnURL= ' + returnURL);
      initAlbum (albumPath, albumName, returnURL);
    }
    else
    {
      self.albumcontent.window.location.href = "albumindex.htm";
    }
  }
}


var Al = new Album ();



