
/**
 * Copyright © 2001 Jacob Goldin (jake@fotoalbumz.com). All rights reserved.
 * To the best of my knowledge, the code below is the first and the only data-driven
 * photoalbum/image display tool and rotator where the client (browser) does all the work. This makes the
 * album/image rotator completely server-independent, and facilitates albums maintainance.
 *
 */

var count = 4;

  if(!isIE5())
  {
    if(commonHost == null || commonHost.length <= 0)
    {
      commonHost = netscapeHost;
    }
  }


/**
 * Popup a new browser window
 * @param url URL to navigate to
 */
function popup(url) 
{
//  return window.open(url, 'popup','toolbar=no,location=no,resizable=yes, directories=no,status=yrd,menubar=no,scrollbars=yes,width=800,height=640,x=0,y=0');
  var newWindow = window.open(url, 'popup','toolbar=no,location=no,resizable=yes, directories=no,status=yrd,menubar=no,scrollbars=yes,width=800,height=640,x=0,y=0');
  if(newWindow != null)
  {
    newWindow.focus();
  }
  else
  {
    alert("Popups are disabled. Please hold Ctrl button when clicking on the link");
  }
  return newWindow;
}


// debug
//function popup(url) {return window.open(url);
//}


/**
 * Popup a new small browser window
 * @param url URL to navigate to
 */
function popupSmall(url)
{
//  return window.open(url, 'popupSmall','toolbar=no,location=no,resizable=yes, directories=no,status=yrd,menubar=no,scrollbars=yes,width=640,height=480,x=0,y=0');
  var newWindow = window.open(url, 'popupSmall','toolbar=no,location=no,resizable=yes, directories=no,status=yrd,menubar=no,scrollbars=yes,width=640,height=480,x=0,y=0');

  if(newWindow != null)
  {
    newWindow.focus();
  }
  else
  {
    alert("Popups are disabled. Please hold Ctrl button when clicking on the link");
  }
  return newWindow;
}


/**
 * DEBUG 
 * Popup a new small browser window
 * @param url URL to navigate to
 */
//function popupSmall(url) {return window.open(url);
//}


/**
 * Popup a new browser window
 * @param url URL to navigate to
 */
function popupAll(url) {return window.open(url);}


function orderArray(array)
{
  var i=0;
  var j = 0;
  var orderedArray = new Array();

  for(i=0; i<array.length; i++)
  {
    if(array[i] == null || array[i] == 0) continue;
    orderedArray[j] = array[i];
    j++;
  }

//  for(i=0; i<orderedArray.length; i++)
//  {
//    alert("orderedArray[" + i + "] = " + orderedArray[i]);
//  }
  return orderedArray;
}


/**
 * Create an array of albums with consecutive indices
 */
function orderAlbums()
{
  var i=0;
  var j = 0;
  for(i=0; i<albums.length; i++)
  {
//    alert("looking at album[" + i + "] = " + albums[i]);
    if(albums[i] == null || albums[i] == 0) continue;
    orderedAlbums[j] = albums[i];
//    alert("album[" + j + "] = " + orderedAlbums[j]);
    j++;
  }
//  alert("orderedAlbums.length = " + orderedAlbums.length);
}


/**
 * Create an array of album file names with consecutive indices
 */
function orderAlbumFiles()
{
  var i=0;
  var j = 0;
  for(i=0; i<albumFiles.length; i++)
  {
    if(albumFiles[i] == null || albumFiles[i] == 0) continue;
    orderedAlbumFiles[j] = albumFiles[i];
    j++;
  }
//  alert("orderedAlbumFiles.length = " + orderedAlbumFiles.length);
}


/**
 * Create an array of images with consecutive indices
 */
function orderImages()
{
  var i=0;
  var j = 0;
  for(i=0; i<images.length; i++)
  {
    if(images[i] == null || images[i] == 0) continue;
    orderedImages[j] = images[i];
    j++;
  }
//  alert("orderedImages.length = " + orderedImages.length);
}


/**
 * Dynamically generate HTML page displaying all album names and thumbnail images.
 * Albums must be defined as string members of the "albums" array.
 * Images must be defined as pipe-delimited string members of the "images" array:
 * [ALBUM_NAME]|[THUMBNAIL_URL]|[IMAGE_URL]
 * @see "list.js" for details
 */
function display()
{
  var i=0;

  for(i=0; i<orderedAlbums.length; i++)
  {
    if(orderedAlbums[i] == null || orderedAlbums[i] == 0) continue;
    displaySingleAlbum(orderedAlbums[i]);
  } // albums
}


/**
 * Dynamically generate HTML page displaying a single album with thumbnail images.
 * Albums must be defined as string members of the "albums" array.
 * Images must be defined as pipe-delimited string members of the "images" array:
 * [ALBUM_NAME]|[THUMBNAIL_URL]|[IMAGE_URL]
 * @see "list.js" for details
 */
function displaySingleAlbum(album)
{
  var i=0;
  var j=0;
  var str;
  var picCount = 0;
  var startTag = false;

    if(album == null || album == 0) album = queryField("album");

    var albumInfo = album.split("|");
    var albumName = albumInfo[0];
    var albumDesc = albumInfo[1];
    if(albumName == null || albumName == 0) return;
    if(albumDesc == null || albumDesc == 0) albumDesc = "&nbsp;";

//alert("album name: " + albumName + "; description: " + albumDesc);

    document.write("<h2><center>" + albumName + "</center></h2>");
    document.write("<h3><center>" + albumDesc + "</center></h3>");
    document.write("<table background=\"parchment.jpg\" align=\"center\" border=\"3\" CELLSPACING=\"3\" CELLPADING=\"3\">");
    for(j=0; j<orderedImages.length; j++)
    {
      if(orderedImages[j] == null || orderedImages[j] == 0)
      {
        continue;
      }

      str = orderedImages[j];
      var info = str.split("|");
      if(info[0].toLowerCase() != albumName.toLowerCase()) continue;

      // description
      if(info[3] == null || info[3] == 0) info[3] = "&nbsp;";

//alert("0: " + info[0] + "; 1: " + info[1] + "; 2: " + info[2] + "; 3: " + info[3]);

      if(picCount == 0)
      {
        document.write("<tr>");
        startTag = true;
      }
      picCount++;

      document.write("<td align=\"center\" nowrap>");

      var albumUrl = replaceStandard(albumName);
      document.write("<a href=\"#dummy\" onClick=\"popup('picture.html?&albumName="
          + albumUrl
          + "&bgcolor="
          + bgcolor
          + "&list="
          + list
          + "&albums="
          + albumList
          + "&number="
          + j
          + "');\"><img src=\"" + getUrl(commonHost, info[1]) + "\" height=\"96\" border=\"0\""
          + " alt=" 
          + getUrl(commonHost, info[1])
          + "></a>");

      document.write("<br></br>" + info[3]);

      document.write("</td>");
      if(picCount == count || j >= orderedImages.length-1)
      {
        startTag = false;
        document.write("</tr>");
        picCount = 0;
      }  
    } // images

    if(startTag)
    {
      document.write("</tr>");
    }
    document.write("</table>");
    document.write("<br>");
    displaySlideshowButton(albumName);
}


/**
 * Select a random picture from the album
 * Albums must be defined as string members of the "albums" array.
 * Images must be defined as pipe-delimited string members of the "images" array:
 * [ALBUM_NAME]|[THUMBNAIL_URL]|[IMAGE_URL]
 * @see "list.js" for details
 */
function getRandomPicture(albumName)
{
  if(albumName == null || albumName == 0) albumName = queryField("albumName");
  if(albumName == null || albumName == 0) return;

  var imageNum = 0;
  while(true)
  {
    imageNum = rand(orderedImages.length);
//    alert("imageNum = " + imageNum + "; album = " + albumName);
    if(orderedImages[imageNum] == null || orderedImages[imageNum] == 0)
    {
      continue;
    }

    var str = orderedImages[imageNum];
    var info = str.split("|");

    var albumUrl = replaceStandard(albumName.toLowerCase());
    var albumNameFromInfo = replaceStandard(info[0].toLowerCase());
    if(albumUrl.toLowerCase() != albumNameFromInfo.toLowerCase()) continue;
    return getUrl(commonHost, info[2]);
  }
}


/**
 * Select a random picture number
 */
function getRandomPictureNumber()
{
  var imageNum = 0;
  while(true)
  {
    imageNum = rand(orderedImages.length);
    if(orderedImages[imageNum] == null || orderedImages[imageNum] == 0)
    {
      continue;
    }
    return imageNum;    
  }
}


/**
 * Select next picture number
 */
function getNextNumber(number)
{
  var imageNum = number;
  while(true)
  {
    imageNum++;
    if(imageNum >= orderedImages.length)
    {
      imageNum = 0;
    }

    if(orderedImages[imageNum] == null || orderedImages[imageNum] == 0)
    {
      continue;
    }
    return imageNum;    
  }
}


/**
 * Select previous picture number
 */
function getPrevNumber(number)
{
  var imageNum = number;
  while(true)
  {
    imageNum--;
    if(imageNum < 0)
    {
      imageNum = orderedImages.length - 1;
    }

    if(orderedImages[imageNum] == null || orderedImages[imageNum] == 0)
    {
      continue;
    }
    return imageNum;    
  }
}

/**
 * Get picture URL by number
 */
function getPictureByNumber(number)
{
  var str = orderedImages[number];
  var info = str.split("|");
  var albumUrl = replaceStandard(albumName.toLowerCase());
  var albumNameFromInfo = replaceStandard(info[0].toLowerCase());
  return getUrl(commonHost, info[2]);
}


/**
 * Get picture index by URL
 */
function getPictureInfoByUrl(pictureUrl)
{
  var i;
  for(i=0; i<orderedImages.length; i++)
  {
    var str = orderedImages[i];
    var info = str.split("|");
    if(pictureUrl.toLowerCase() == info[2].toLowerCase())
    {
      return i;
    }
  }
  return -1;
}


/**
 * Get picture index by thumbnail URL
 */
function getPictureInfoByUrl(thumbnailUrl)
{
  var i;
  for(i=0; i<orderedImages.length; i++)
  {
    var str = orderedImages[i];
    var info = str.split("|");
    if(thumbnailUrl.toLowerCase() == info[1].toLowerCase())
    {
      return i;
    }
  }
  return -1;
}


/**
 * Select a particular picture from the album
 * Albums must be defined as string members of the "albums" array.
 * Images must be defined as pipe-delimited string members of the "images" array:
 * [ALBUM_NAME]|[THUMBNAIL_URL]|[IMAGE_URL]
 * @see "list.js" for details
 */
function getNextPicture(imageNum)
{
  if(albumName == null || albumName == 0) albumName = queryField("albumName");
  if(albumName == null || albumName == 0) return;

  if(orderedImages[imageNum] == null || orderedImages[imageNum] == 0)
  {
    return "";
  }

  var str = orderedImages[imageNum];
  var info = str.split("|");

//  var albumUrl = replaceStandard(albumName.toLowerCase());
//  var albumNameFromInfo = replaceStandard(info[0].toLowerCase());
//  if(albumUrl.toLowerCase() != albumNameFromInfo.toLowerCase()) return "";
  return getUrl(commonHost, info[2]);
  
}



/**
 * Dynamically generate HTML page displaying all albums represented by a random thumbnail image.
 * Albums must be defined as string members of the "albums" array.
 * Images must be defined as pipe-delimited string members of the "images" array:
 * [ALBUM_NAME]|[THUMBNAIL_URL]|[IMAGE_URL]
 * @see "list.js" for details
 */
function displayAlbums()
{
  var i=0;
  var j=0;
  var str;
  var albumCount = 0;
  var startTag = false;


  document.write("<table background=\"parchment.jpg\" align=\"center\" border=\"3\" CELLSPACING=\"3\" CELLPADING=\"3\">");
  for(i=0; i<orderedAlbums.length; i++)
  {
    if(orderedAlbums[i] == null || orderedAlbums[i] == 0)
    {
      continue;
    }
    var albumInfo = orderedAlbums[i].split("|");
    var albumName = albumInfo[0];
    var albumDesc = albumInfo[1];
    if(albumDesc == null || albumDesc == 0)
    {
      albumDesc = "&nbsp;";
    }

    if(albumName == null || albumName == 0)
    {
      continue;
    }
    var num = 0;
    var photos = new Array();
    for(j=0; j<orderedImages.length; j++)
    {
      if(orderedImages[j] == null || orderedImages[j] == 0)
      {
        continue;
      }
      str = orderedImages[j];
      var info = str.split("|");
      if(info[0].toLowerCase() != albumName.toLowerCase()) continue;

//      alert("album " + albumName + "; photo " + str + "; num = " + num);

      photos[num++] = str;
    } // images
    
    if(num <= 0)
    {
      continue;
    }

    var randomInfo = rand(num);

//    alert("random = " + randomInfo);

    var info = photos[randomInfo].split("|");

//    alert("random = " + randomInfo + "; info = " + info);

    if(albumCount == 0)
    {
      document.write("<tr>");
      startTag = true;
    }
    albumCount++;
    
//    var urlAlbum = replace(orderedAlbums[i], " ", "%20");
    var urlAlbum = escape(orderedAlbums[i]);
   
    document.write("<td nowrap align=\"center\">");
    document.write("<h2><center>" + albumName + "</center></h2>");
    var photoUrl = "<a href=\"singlealbum.html?album="
          + urlAlbum
          + "&bgcolor="
          + bgcolor
          + "&list="
          + list
          + "&albums="
          + albumList
          + "\"><img src=\"" + getUrl(commonHost, info[1]) + "\" height=\"96\" border=\"0\""
          + " alt="
          + getUrl(commonHost, info[1])
          + "></a>";

    document.write(photoUrl);

//    alert(photoUrl);

    document.write("<br></br>" + albumDesc);

    document.write("</td>");

    if(albumCount == count || i >= orderedAlbums.length-1)
    {
      startTag = false;
      document.write("</tr>");
      albumCount = 0;
    }  
  } // albums

  if(startTag)
  {
    document.write("</tr>");
  }
  document.write("</table>");
}




/**
 * Construct query string containing pipe-delimited numbers of images,
 * pass it to the "slideshow.html" and pop it up
 */
function startSlideShow(album)
{
//  alert("Start slideshow: " + album);
  var i=0;
  var j=0;
  var str;
  var result = "";
  for(i=0; i<orderedImages.length; i++)
  {
    if(orderedImages[i] == null || orderedImages[i] == 0) continue;  
    str = orderedImages[i];
    var info = str.split("|");
    var strAlbum = info[0];

//alert("album = " + album + "; strAlbum = " + strAlbum);

    if(strAlbum.toLowerCase() != album.toLowerCase()) continue;

    if(j==0)
    {
      result = i;
    }
    else
    {  
      result += ("|" + i);
    }  
    j++;
  }

    var url = "slideshow.html?photos="
      + result 
      + "&bgcolor=" 
      + bgcolor
      + "&list="
      + list
      + "&albums="
      + albumList;

//alert(url);

    popup(url);
}


/**
 * Rotate images in a certain time interval
 * For this method to work, the HTML template must have a form called "options" and a control called "interval"
 * which would hold rotation time interval in seconds
 */
function changeAllPhotos()
{
//  interval = document.options.interval.value*1000;
  interval = document.options.interval[document.options.interval.selectedIndex].value * 1000;
//  alert("current interval is " + interval + " sec");

  var imageNum = rand(orderedImages.length);

//  alert("size is " + orderedImages.length + "; random number is " + imageNum);  
//  alert("current image is " + orderedImages[imageNum]);

  if(orderedImages[imageNum] == null || orderedImages[imageNum] == 0)
  {
    window.setTimeout('changeAllPhotos();', interval);
    return;
  }

  var info = orderedImages[imageNum].split("|"); 

//  alert("info[0] = " + info[0]);
//  alert("info[1] = " + info[1]);  
//  alert("info[2] = " + info[2]);  

  // check whether the valid photo
  var i = 0;
  var valid = false;


//  alert("orderedAlbums length = " + orderedAlbums.length);

  for(i=0; i<orderedAlbums.length; i++)
  {
//    alert("albums[" + i + "] = " + orderedAlbums[i]);

    if(orderedAlbums[i] == null || orderedAlbums[i] == 0) continue;
//    alert("album = " + orderedAlbums[i]);

    var albumName = orderedAlbums[i].split("|");
//    alert("info[0] = " + info[0].toLowerCase() + "; album = " + orderedAlbums[i].toLowerCase());

    if(info[0].toLowerCase() != albumName[0].toLowerCase()) continue;
    
//    alert("album found!!!");

    valid = true;
    break;
  }
  if(valid)
  {
    var url = getUrl(commonHost, info[2]);
    document.images["banner"].src = url;
    document.images["banner"].alt = info[2];
//    alert("URL = " + url);
  }
  window.setTimeout('changeAllPhotos();', interval);
}





/**
 * Rotate thumbnails in a certain time interval
 * For this method to work, the HTML template must have a form called "options" and a control called "interval"
 * which would hold rotation time interval in seconds
 */
function changeAllThumbnails()
{
  interval = document.options.interval[document.options.interval.selectedIndex].value * 1000;
  var imageNum = rand(orderedImages.length);

  if(orderedImages[imageNum] == null || orderedImages[imageNum] == 0)
  {
    window.setTimeout('changeAllPhotos();', interval);
    return;
  }

  var info = orderedImages[imageNum].split("|"); 

  // check whether the valid photo
  var i = 0;
  var valid = false;

  for(i=0; i<orderedAlbums.length; i++)
  {
    if(orderedAlbums[i] == null || orderedAlbums[i] == 0) continue;

    var albumName = orderedAlbums[i].split("|");
    if(info[0].toLowerCase() != albumName[0].toLowerCase()) continue;
    valid = true;
    break;
  }
  if(valid)
  {
    var url = getUrl(commonHost, info[1]);
    document.images["banner"].src = url;
    document.images["banner"].alt = info[1];
  }
  window.setTimeout('changeAllThumbnails();', interval);
}



/**
 * For this method to work, the HTML template must have a form called "options" and a control called "interval"
 * which would hold rotation time interval in seconds
 */
function changePhoto()
{
//  interval = document.options.interval.value*1000;

  interval = document.options.interval[document.options.interval.selectedIndex].value * 1000;

//  alert("interval = " + interval);

  var photos = queryField("photos").split("|");
  var imageNum = rand(photos.length);
  var photoNum = photos[imageNum];

  if(orderedImages[photoNum] == null || orderedImages[photoNum] == 0)
  {
//    alert("photo # " + photoNum + " is null");
    window.setTimeout('changePhoto();', 0);
    return;
  }

  var info = orderedImages[photoNum].split("|");
  var url = getUrl(commonHost, info[2]);
  document.images["banner"].src = url;
  document.images["banner"].alt = info[2];
  window.setTimeout('changePhoto();', interval);
}


/**
 * Display navigation hyperlinks
 */
function displayNavigationBar()
{
  document.write("<table border=\"3\" align=\"center\" bgcolor=\"#C0C0C0\" cellspacing=\"0\" cellpadding=\"0\">");
  document.write("<tr>");
  document.write("<td width=\"100%\" nowrap><p align=\"center\">");
  document.write("<font face=\"Arial\" size=\"3\">");


  document.write("&nbsp;");
  
  document.write("<a href=\"index.html?bgcolor="
    + bgcolor
    + "&list="
    + list
    + "&albums="
    + albumList
    + "\">Home</a>");

  document.write("&nbsp;");
  document.write("|");
  document.write("&nbsp;");

  document.write("<a href=\"allalbums.html?bgcolor="
    + bgcolor
    + "&list="
    + list
    + "&albums="
    + albumList
    + "\">View all thumbnails</a>");

  document.write("&nbsp;");
  document.write("|");
  document.write("&nbsp;");


  document.write("<a href=\"#\" onClick=\"javascript:popupSmall('colors1.html?bgcolor="
    + bgcolor
    + "&list="
    + list
    + "&albums="
    + albumList
    + "');"
    + "\">Change background color</a>");

  document.write("&nbsp;");
  document.write("|");
  document.write("&nbsp;");
    
  document.write("<a href=\"#\" onClick=\"return popup('all_slideshow.html?bgcolor="
    + bgcolor
    + "&list="
    + list
    + "&albums="
    + albumList
    + "');\">Total Slideshow<\a>");

  document.write("&nbsp;");
  document.write("|");
  document.write("&nbsp;");

  document.write("<a href=\"start.html?bgcolor="
    + bgcolor
    + "&list="
    + list
    + "&albums="
    + albumList
    + "\">Shuffle pictures</a>");

  document.write("&nbsp;");
  document.write("</font>");  
  document.write("</td>");
  document.write("</tr>");
  document.write("</table>");
}



/**
 * Display slideshow button
 */
function displaySlideshowButton(album)
{
// display hyperlink instead

//  var strAlbum = replace(album, "'", "%27");
  var strAlbum = escape(album);
  document.write("<center>");


  document.write("<table border=\"3\" bgcolor=\"#C0C0C0\" cellspacing=\"0\" cellpadding=\"0\">");
  document.write("<tr>");
  document.write("<td width=\"100%\" nowrap><p align=\"center\">");
  document.write("<font face=\"Arial\" size=\"3\">");


  document.write("<a href=\"javascript:startSlideShow('"
      + strAlbum
      + "');\">&nbsp;Start Slideshow&nbsp;</a>");


  document.write("</font></td></tr></table>");
  document.write("</center><br></br>");

/*
  if (!isIE3Mac && is.gecko)
  {
     // JavaScript here for user agents implementing Gecko layout engine
     displayNavSlideshowButton(album);
  }
  else if  (!isIE3Mac && is.nav4)
  {
     // JavaScript here for Navigator 4
     displayNavSlideshowButton(album);
  }
  else if (!isIE3Mac && is.ie5up)
  {
     // JavaScript here for IE 4 and later
     displayIeSlideshowButton(album);
  }
  else if (!isIE3Mac && (is.nav3 || is.opera))
  {
     // JavaScript here for Nav3 and Opera 
     displayNavSlideshowButton(album);
  }
  else 
  {
     // JavaScript here for Nav2 and IE 3 
     displayNavSlideshowButton(album);
  }
*/
}


/**
 * Display slideshow button for IE
 */
/*
function displayIeSlideshowButton(album)
{
//  var strAlbum = replace(album, "'", "%27");
  var strAlbum = escape(album);
  document.write("<center><input type=\"button\" name=\"btnStart\" value=\"Start slideshow\" "
      + "onClick=\"return startSlideShow('"
      + strAlbum
      + "');\">"
      + "</center><br>"
      );

}
*/

/**
 * Display slideshow button for Netscape
 */
/*
function displayNavSlideshowButton(album)
{
  document.write("<center><a href=\"javascript:startSlideShow('"
      + album
      + "');\">"
      + "Start slideshow"
      + "</a></center><br>"
      );
}
*/

/**
 * Display navigation buttons
 */
function displayButtons()
{
/*
  if (!isIE3Mac && is.gecko)
  {
     // JavaScript here for user agents implementing Gecko layout engine
     displayNavButtons();
  }
  else if  (!isIE3Mac && is.nav4)
  {
     // JavaScript here for Navigator 4
     displayNavButtons();
  }
  else if (!isIE3Mac && is.ie5up)
  {
     // JavaScript here for IE 4 and later
    displayIeButtons();
  }
  else if (!isIE3Mac && (is.nav3 || is.opera))
  {
     // JavaScript here for Nav3 and Opera 
     displayNavButtons();
  }
  else 
  {
     // JavaScript here for Nav2 and IE 3 
     displayNavButtons();
  }
*/
}

/**
 * Display navigation buttons for IE
 */
function displayIeButtons()
{
  document.write("<center>");
  document.write("<input type=\"button\" name=\"btnChangeColor\" value=\"Change background color\" onClick=\"myNavigate('colors1.html?bgcolor="
    + bgcolor
    + "&list="
    + list
    + "&albums="
    + albumList
    + "');\">");
  
  document.write("&nbsp;");
  
  document.write("<input type=\"button\" name=\"btnAllPhotos\" value=\"Total slideshow\" onClick=\"return popup('all_slideshow.html?bgcolor="
    + bgcolor
    + "&list="
    + list
    + "&albums="
    + albumList
    + "');\">");

  document.write("&nbsp;");

  document.write("<input type=\"button\" name=\"btnAllPhotos\" value=\"Shuffle pictures\" onClick=\"myNavigate('start.html?bgcolor="
    + bgcolor
    + "&list="
    + list
    + "&albums="
    + albumList
    + "');\">");
  document.write("</center>");
  document.write("<br></br>");
}



/**
 * Display navigation buttons for Netscape
 */
function displayNavButtons()
{
  document.write("<br></br><center>");

  document.write("<a href=\"colors1.html?bgcolor="
    + bgcolor
    + "&list="
    + list
    + "&albums="
    + albumList
    + "\">");

  document.write("Change background color");
  document.write("</a>");

  document.write("&nbsp;");
  
  document.write("<a href=\"all_slideshow.html?bgcolor="
    + bgcolor
    + "&list="
    + list
    + "&albums="
    + albumList
    + "\">");
  document.write("Total slideshow");
  document.write("</a>");

  document.write("&nbsp;");

  document.write("<a href=\"start.html?bgcolor="
    + bgcolor
    + "&list="
    + list
    + "&albums="
    + albumList
    + "\">");
  document.write("Shuffle pictures");
  document.write("</a>");

  document.write("</center><br></br>");
}


/**
 * Display logo
 */
function displayLogo()
{
/*
  document.write("  <table>");
  document.write("    <tr>");
  document.write("      <td nowrap>");
  document.write("        <H3>This site<br>");
  document.write("        is brought to you by");
  document.write("      </td>");
  document.write("      <td>");
  document.write("        <IMG SRC=\"images/logo.gif\" WIDTH=\"45\" HEIGHT=\"45\" ALT=\"AZ Logo\">");
  document.write("      </td>");
  
  document.write("<td>&nbsp;&nbsp;</td>");

  document.write("      <td>");
  document.write("<center><a href=\"http://www.stockscan.net\" target=\"_blank\"><img src=\"http://www.stockscan.net/images/new_banner.gif\" alt=\"Please visit our sponsor!\">");
//  document.write("<br>We provide a concise report of the current stock market situation based on user-given criteria");
  document.write("</a></center>");
  document.write("      </td>");

  document.write("    </tr>");
  document.write("  </table>");
  document.write("  <hr>");
*/

  orderAlbumFiles();
  orderAlbums();
  orderImages();

//orderArray(orderedAlbums, albums);
//orderArray(orderedImages, images);

//orderedAlbums = orderArray_1(albums);
//orderedImages = orderArray_1(images);


//  document.write("<center><h2><font color=\"red\">Fotoalbumz.com -- the new smart way to share pictures!</font></h2></center>");
  document.write("<center><img src=\"banner.gif\" width=\"468\" height=\"60\"></center>");
}


/**
 * Display words logo
 */
function displayWordsLogo()
{
  orderAll();
  document.write("<center><h2><font color=\"red\">Fotoalbumz.com -- the new smart way to share pictures!</font></h2></center>");
}


/**
 * Order albums & images
 */
function orderAll()
{
  orderAlbums();
  orderImages();
}



/**
 * Display copyright information
 */
function displayCopyright()
{
//  document.write("<center><P>Copyright © 2001 <A HREF=\"mailto:jake@stockscan.net\">Jake of Fotoalbumz.com</A>.All rights reserved.</P></center>");
//  document.write("<center><P>All pictures are property of their respective owners.</P></center>");
//  document.write("<br></br>");
}

var codes = new Array();
codes[0] = "00";
codes[1] = "11";
codes[2] = "22";
codes[3] = "33";
codes[4] = "44";
codes[5] = "55";
codes[6] = "66";
codes[7] = "77";
codes[8] = "88";
codes[9] = "99";
codes[10] = "aa";
codes[11] = "bb";
codes[12] = "cc";
codes[13] = "dd";
codes[14] = "ee";
codes[15] = "ff";


/**
 * Display table of different colors
 */
function displayColorTable()
{
  var i=0;
  var j=0;
  var k=0;
  var numRow = 0;
  var color="";

  var incrementI = 2;
  var incrementJ = 1;
  var incrementK = 1;

  // Netscape is slow
  if(!isIE5())
  {
    incrementI = 2;
    incrementJ = 1;
    incrementK = 1;
  }

  document.write("<table border=\"0\" width=\"80%\" cellpadding=\"0\" cellspacing=\"0\">\r\n");

  for(k=0; k<codes.length; k+=incrementK)
  for(j=0; j<codes.length; j+=incrementJ)
  for(i=0; i<codes.length; i+=incrementI)
  {
    color = codes[i] + codes[j] + codes[k];
    if(numRow == 0) document.write("<tr>");
    numRow++;

    if(color == bgcolor)
    {
      var hexColor = codes[15-i] + codes[15-j] + codes[15-k];
      document.write("<td bgcolor=\"#"
        + hexColor
        + "\">\r\n"
        + "<a href=\"#\""
        + " onClick=\"window.close();\""
        + " onmouseover=\"showParentColor('#"
        + color
        + "');\""
        + ">"
        + "<img src=\"images/dot.gif\" height=\"15\" width=\"3\" border=\"0\" alt=\"#"
        + color
        + "\">"
        + "</a>\r\n</td>\r\n");
    }
    else
    {
      document.write("<td bgcolor=\"#"
        + color
        + "\">\r\n"
        + "<a href=\"#\""
        + " onClick=\"setParentColor('"
        + color
        + "');\""
        + " onmouseover=\"showParentColor('"
        + color
        + "');\""
        + ">"
        + "<img src=\"images/dot.gif\" height=\"15\" width=\"3\" border=\"0\" alt=\"#"
        + color
        + "\">"
        + "</a>\r\n</td>\r\n");
    }

    if(numRow >= 128 ||
      (i == codes.length - 1 && j == codes.length - 1 && k == codes.length - 1))
    {
      document.write("</tr>\r\n");
      numRow = 0;
    }
  }
  document.write("</table>\r\n");
  document.write("<br></br><table align=\"center\" cellpadding=\"0\" cellspacing=\"2\" border=\"0\">\r\n");

  document.write("<tr>\r\n");

  writeColorLink("FFFFFF");
  writeColorLink("E5E5E5");
  writeColorLink("CCCCCC");
  writeColorLink("B3B3B3");
  writeColorLink("999999");
  writeColorLink("808080");
  writeColorLink("666666");
  writeColorLink("4D4D4D");
  writeColorLink("333333");
  writeColorLink("1A1A1A");
  writeColorLink("000000");

  document.write("</tr></table>");
}


function writeColorLink(color)
{

  document.write("<td bgcolor=\"#"
    + color
    + "\"><a href=\"#\""
    + " onClick=\"setParentColor('"
    + color
    + "');\""
    + " onmouseover=\"showParentColor('"
    + color
    + "');\">"
    + "<img src=\"images/dot.gif\" height=\"20\" width=\"20\" border=\"1\" alt=\"#"
    + color
    + "\"></a></td>\r\n");
}


/**
 * Change background color of the parent window
 * @param color new color
 */
function showParentColor(color)
{
//  window.close();
//  window.opener.focus();
  window.opener.document.bgColor = color;
}


function setParentColor(color)
{
  window.opener.location.search = replace(window.opener.location.search, bgcolor, color);
  window.close();
}

/*
function setBackgroundColor(color)
{
    bgcolor = color;
    document.bgColor = color;
}
*/


/**
 * Get album address name and show albums
 * @param formObj form, must have an input object called "list" whose value is the address
 */
function showMyAlbum(fileName, albumList)
{
  if(fileName != null && fileName != 0 && fileName.length > 0)
  {
    list = trim(fileName);
//      alert("trimmed: " + list);
  }
  list = replaceStandard(list);
  myNavigate("start.html?bgcolor=" 
    + bgcolor 
    + "&list=" 
    + list
    + "&albums="
    + albumList
    );
}


/**
 * Prints album address input box
 */
function printListForm()
{
  document.write("<center>");

  document.write("<form name=\"listForm\" method=GET onSubmit=\"return false;\">");
  document.write("  <table background=\"parchment.jpg\">");
  document.write("    <tr>");
  document.write("      <td nowrap>");

  document.write("          <input type=\"text\" name=\"list\" size=\"100\" value=\"" + list + "\">");
  document.write("        &nbsp;&nbsp;Type here link to your album file");

  document.write("      </td>");
  document.write("    </tr>");
  document.write("    <tr>");
  document.write("      <td nowrap>");
  document.write("        <input type=\"button\" value=\"Click here to see the albums\" onClick=\"return showMyAlbum(this.form.list.value, albumList);\">");
  document.write("&nbsp;&nbsp;");
  document.write("        <input type=\"button\" value=\"Click here to create an album file\" "
    + "onClick=\"return popup('create_file.html?bgcolor=" 
    + bgcolor 
    + "&list=" 
    + list
    + "&albums="
    + albumList
    + "');\">");


  if(orderedAlbumFiles != null && orderedAlbumFiles.length > 0)
  {
    document.write("<br><br><select name=\"filelist\" onChange=\"list.value=filelist[filelist.selectedIndex].value;newList(list.value);\">");

    document.write("<option value=\"\"> </option>");
    for(i=0; i<orderedAlbumFiles.length; i++)
    {
      var albumInfo = orderedAlbumFiles[i].split("|");
      if(albumInfo.length <= 1 || albumInfo[1] == null || albumInfo[1].length <= 0)
      {
        albumInfo[1] = albumInfo[0];
      }
      document.write("<option value=\"" + albumInfo[0] + "\">" + albumInfo[1] + "</option>");
    }
    document.write("</select>");  

    document.write("&nbsp;or choose from these albums");
  }

  document.write("      </td>");
  document.write("    </tr>");
  document.write("  </table>");
  document.write("</form>");

  document.write("</center>");
}


function newList(newList)
{
  myNavigate("index.html?list="
    + newList
    + "&bgcolor="
    + bgcolor
    + "&albums="
    + albumList
    );
}


/**
 * Construct URL from host name and absolute file name
 * @param host host name, like http://localhost/photos or http://localhost/photos/
 * @param name absolute file name, like C:\photos\1.jpg
 * @return valid URL, like http://localhost/photos/1.jpg
 */
function getFileUrl(host, name)
{
  return getValidHost(host) + getFileName(name);
}


/**
 * Construct URL from host name and relative file name
 * @param host host name, like http://localhost/photos or http://localhost/photos/
 * @param name relative file name, like photos\1.jpg
 * @return valid URL, like http://localhost/photos/1.jpg
 */
function getUrl(host, name)
{
  name = replace(name, "\\", "/");
  if(name.charAt(0) == "/")
  {
    name = name.substring(1, name.length);
  }
  return getValidHost(host) + name;
}


/**
 * Get valid host name, append forward slash if needed
 * @param host host name
 * @return valid host name
 */
function getValidHost(host)
{
  if(host != null && host.length > 0)
  {
    if(host.charAt(host.length - 1) != "/")
    {
      host += "/";
    }
  }
  return host;
}


/**
 * Get file name only, strip path
 * @param name full file name, may contain path
 * @return file name without path
 */
function getFileName(name)
{
  var fileName = "";
  name = replace(name, "\\", "/");
  if (name.lastIndexOf("/") !=-1)
  {
    var firstpos = name.lastIndexOf("/") + 1;
    var lastpos = name.length;
    fileName = name.substring(firstpos,lastpos);
  }
  else
  {
    fileName = name;
  }
  return fileName;
}



