// =========================================================================
// klatte_global.js - global javascript functions and constants
// =========================================================================
// Author:
//    ParagonWeb
// Revision History:
//    03.25.2004 [am] file created
// =========================================================================

// =========================================================================
// GLOBAL VARIABLES
// =========================================================================
var gSTR_DEFAULT_PICTURE = "white.gif"
var gSTR_PAGE_STATUS     = "Klatte Photography";
var gSTR_PICTURE_ID      = "imgPicture";
var gIMG_ARRAY           = new Array();


// =========================================================================
// GLOBAL FUNCTIONS
// =========================================================================

// =================
// Function:    setStatus
// Description: set text of the window status bar
// Parameters:  msg -> text on status bar
// Return:      true
// =================
function setStatus(msg) {
   window.status = (msg != null) ? msg : gSTR_PAGE_STATUS;
   return true;
}

// =================
// Function:    newWindow
// Description: create a new browser window with specified features
// Parameters:  url           -> initial URL for window ("" if none)
//              name          -> name used for A TARGET 
//              width, height -> dimensions for window
//              left, top     -> location on screen
// Return:      name of window
// =================
function newWindow(url,name,width,height,left,top) {
   var options = "location=no,menubar=no,resizable=yes,scrollbars=yes,status=no,toolbar=no,width="+width+",height="+height+",left="+left+",top="+top;

   return (window.open(url,name,options));
}

// =================
// Function:    menuFlip
// Description: flip the menu buttons
// Parameters:  imgName -> name of button to swap
//              blnOn   -> 1 if should be highlighted, 0 otherwise 
// Return:      true
// =================
function menuFlip(imgName, blnOn) {
  var objImg = document.getElementById("img" + imgName);
  var strImg = imgName.toLowerCase();

  // swap the image
  if(objImg != null) {
     objImg.src = blnOn ? (gStrImgDir + strImg + "_b.gif") : (gStrImgDir + strImg + ".gif");
  }

  return setStatus((blnOn ? imgName : null)); 
}

// =================
// Function:    preloadImages
// Description: preload images for roll-over
// Parameters:  none
// Return:      none
// =================
function preloadImages() {
   var i;

   for(i = 1; i <= gIntNumImages; ++i) {
      gIMG_ARRAY[i] = new Image();
      gIMG_ARRAY[i].src = gStrPageLetter + i + ".jpg";
   }
}

// =================
// Function:    showImage
// Description: show larger version of image in display location
// Parameters:  intImgNum -> image number to display
// Return:      none
// =================
function showImage(intImgNum) {
   var objImg = document.getElementById(gSTR_PICTURE_ID);

   // Verify the picture image exists on the page
   if(objImg == null) return;

   // save the active highlighted image
   gIntActiveImg = intImgNum;

   // if zero, put back default image, otherwise use image from array
   objImg.src = (intImgNum == 0) ? gStrDefaultPicture : gIMG_ARRAY[intImgNum].src;

}


// =================
// Function:    showFullImage
// Description: launch pop-up window to display full version of image
// Parameters:  intImgNum -> image number to display
// Return:      none
// =================
function showFullImage(intImgNum) {
   intImgNum = (intImgNum == 0) ? gIntActiveImg : intImgNum;

   if(intImgNum == 0) return;

   newWindow(gStrPageLetter + intImgNum + "_full.jpg", "FullImage", 700, 500, 0, 0);
}

// =================
// Function:    writeImgPreview
// Description: write image preview squares
// Parameters:  none
// Return:      none
// =================
function writeImgPreview() {
   writeImgPreviewAll();
   //writeImgPreviewLimited(null);
   //writeImgPreviewLimited(1);
}

// =================
// Function:    writeImgPreviewLimited
// Description: write image preview squares with a maximum column count of 10
// Parameters:  intStartImg -> 1st image to show; if null, start with a random image
// Return:      none
// =================
function writeImgPreviewLimited(intStartImg) {

   imgNum = (intStartImg == null ? Math.floor(Math.random() * (gIntNumImages - 1)) + 1 : intStartImg);

   colCnt = Math.min(10, gIntNumImages);

   document.write("<tr>");
   for(c = 1; c <= colCnt; ++c) {
      document.write("<td><a href=\"javascript:showFullImage(" + imgNum + ")\" onmouseover=\"showImage(" + imgNum + "); return setStatus('View Full Image')\" onmouseout=\"return setStatus(null)\"><img src=\"small/" + gStrPageLetter + imgNum + ".jpg\" width=\"15\" height=\"27\"></a></td>");

      if(c != colCnt) {
         document.write("<td><img src=\"" + gStrImgDir + "white.gif\" width=\"19\" height=\"27\"</td>");
      }

      imgNum = (imgNum + 1) % (gIntNumImages + 1);
      imgNum = (imgNum == 0 ? 1 : imgNum);
   }

   if(colCnt < 10) {
      document.write("<td><img src=\"" + gStrImgDir + "white.gif\" width=\"" + (321 - (34*colCnt)) + "\" height=\"27\"</td>");
   }

   document.write("</tr>");
}

// =================
// Function:    writeImgPreviewAll
// Description: write image preview squares for all images
// Parameters:  none
// Return:      none
// =================
function writeImgPreviewAll() {
   var r, c;
   var imgNum;
   var rowCnt;
   var colCnt;
   var totColCnt;
 
   /* rowCnt = number of rows with pictures in the table */
   rowCnt = Math.ceil(gIntNumImages / 10);

   /* totColCnt = number of columns as defined in first row.  used for colspan in blank rows */
   totColCnt = 0;

   for(r = 0; r < rowCnt; ++r) {
      document.write("<tr>");

      /* colCnt = number of columns in this picture row which is usually 10 but less if less pictures still to show */
      colCnt = Math.min(10, (gIntNumImages - (10 * r)));

      for(c = 1; c <= colCnt; ++c) {
         imgNum = (10 * r) + c;
         if(r == 0) totColCnt++;

         document.write("<td><a href=\"javascript:showFullImage(" + imgNum + ")\" onmouseover=\"showImage(" + imgNum + "); return setStatus('View Full Image')\" onmouseout=\"return setStatus(null)\"><img src=\"small/" + gStrPageLetter + imgNum + ".jpg\" width=\"15\" height=\"27\"></a></td>");

         /* write a blank column after each picture except the last one */
         if(c != colCnt) {
            if(r == 0) totColCnt++;
            document.write("<td><img src=\"" + gStrImgDir + "white.gif\" width=\"19\" height=\"27\"</td>");
         }
    
         /* handle case of 1 picture row by adding in a wide blank cell -- need to be 321px wide */
         if((imgNum == gIntNumImages) && (rowCnt == 1)) {
            document.write("<td><img src=\"" + gStrImgDir + "white.gif\" width=\"" + (321 - (34*c)) + "\" height=\"27\"</td>");
         }
      } 
      document.write("</tr>");

      /* write a thin blank line between picture rows */
      if(r < (rowCnt - 1)) {
         document.write("<tr><td colspan=\"" + totColCnt + "\"><img src=\"" + gStrImgDir + "white.gif\" width=\"321\" height=\"10\"</td></tr>");
      }
   }
}

// =================
// Function:    writePictureDetail
// Description: write details for detailed picture image
// Parameters:  none
// Return:      none
// =================
function writePictureDetail() {
   document.write("<a href=\"javascript:showFullImage(0)\" onmouseover=\"return setStatus('View Full Image')\" onmouseout=\"return setStatus(null)\"><img src=\"" + gStrDefaultPicture + "\" width=\"338\" height=\"338\" id=\"" + gSTR_PICTURE_ID + "\"></a>");
}

// =================
// Function:    serviceWindow
// Description: open pop-up window with service information
// Parameters:  url -> URL to open in new window
// Return:      none
// =================
function serviceWindow(url) {
   newWindow(url, "servicewin", 800, 600, 25, 25);
}

// =================
// Function:    popWindow
// Description: open pop-up window
// Parameters:  url    -> URL to open in new window
//              width  -> width of window in pixels
//              height -> height of window in pixels
// Return:      none
// =================
function popWindow(url, width, height) {
   newWindow(url, "popwin", width, height, 25, 25);
}
