// javascript photo album variables
var JPA_Current = 1;

// extra fusker-like function
var JPA_FuskPart1 = '';
var JPA_FuskPart2 = '';
var JPA_FuskBgn = 0;
var JPA_FuskEnd = 0;
var JPA_FuskDig = -1;

// get URL parameter, example URL="index.html?4" will return 4
function JPAgetParameter() {
  var argstring = window.location.search;
  var i = -1;

  if (argstring.charAt (0) != '?')
    return(-1);

  argstring = argstring.substring(1, argstring.length);
  i = parseInt(argstring);
  if (isNaN(i)) {
      // try fusker-like method
      argstring = argstring.replace(/%5B/g, '['); // g=global, replace all
      argstring = argstring.replace(/%5D/g, ']');
      if (JPAFuskerDetermine(argstring) == true) {
         return(1);
      } else {
        return(-1);
      };
  };

  return(i);

  //next link has info on "command-line" arguments
  //http://sharkysoft.com/tutorials/jsa/content/043.html
}

// add text with last updated info to document
function JPALastUpdated() {
  var monthArray = new Array('jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec');

  myDate = new Date(document.lastModified);

  // bug in Netscape
  tmpYear = myDate.getYear();
  if (tmpYear < 1900) {tmpYear = tmpYear + 1900;};

  displayDate = 'last update: ' + myDate.getDate() + '/' + monthArray[myDate.getMonth()] + '/' + tmpYear;

  document.write(displayDate);
}

// for browser, update image element with current photo and description
function JPAshowImage() {
  var strDesc = '(' + JPA_Current + ' of ' + JPA_TotalPhotos + ') ';
  var strPhoto;

  if (JPA_FuskDig == -1) {
    strDesc = strDesc + JPA_aDesc[JPA_Current];
    strPhoto = JPA_Folder+JPA_aFile[JPA_Current]+JPA_Ext;
  } else {
    // first the number add zeros if needed
    strPhoto = (JPA_FuskBgn+JPA_Current)+'';
    while (strPhoto.length < JPA_FuskDig) {
      strPhoto = '0' + strPhoto;
    };
    strPhoto = JPA_FuskPart1+strPhoto+JPA_FuskPart2;
    strDesc = strDesc + strPhoto;
  };
  
  document.images["imgBrowse"].src = strPhoto;
  document.images["imgBrowse"].alt = strDesc;
  document.images["imgBrowse"].title = strDesc;
  document.getElementById("BrowseDescValue").firstChild.nodeValue = strDesc;
}

// for browser, go to next(+1) or previous(-1) and refresh photo
function JPAgoPrevNext(iPrevNext) {
  JPA_Current = JPA_Current + iPrevNext;
  // first or last
  if (iPrevNext == -99) {JPA_Current = 1};
  if (iPrevNext == +99) {JPA_Current = JPA_TotalPhotos};
  if (JPA_Current < 1) {
    alert('Already at first photo.');
    JPA_Current = 1;
  };
  if (JPA_Current > JPA_TotalPhotos) {
    alert('Already at last photo.');
    JPA_Current = JPA_TotalPhotos;
  };
  JPAshowImage();
}

// for index, generate table with thumbnail images
function JPAgenerateIndex() {
  var x;
  var y = 0;
  var i = 0;
  var strTemp;

  document.write('<TABLE>');

  while (i <= JPA_TotalPhotos) {
    document.write('<TR>');
    for (x = 0; x < JPA_Columns; x++) {
      i = i + 1;
      if (i <= JPA_TotalPhotos) {
        // index row element
        strTemp = JPA_Folder+JPA_aFile[i]+JPA_Thumb+JPA_Ext;
        strTemp = '<A HREF="' + window.location.pathname + '?' + i + '"><IMG SRC="' + strTemp + '"></A>';
      }else{
        // last row, spaces in remaining row elements
        strTemp = '&nbsp;';
      };
      document.write('<TD>' + strTemp + '</TD>');
    }
    document.write('</TR>');
  }
  document.write('</TABLE>');
}

// for browser, generate html layout
function JPAgenerateBrowse() {
  // generate html
  document.write('<TABLE><TR BGCOLOR="#C0FFFF" ALIGN="CENTER">');
  document.write('<TD WIDTH=50><B><A HREF="javascript:JPAgoPrevNext(-99);">|&lt;</A></B></TD>');
  document.write('<TD WIDTH=50><B><A HREF="javascript:JPAgoPrevNext(-10);">&lt;&lt;</A></B></TD>');
  document.write('<TD WIDTH=100><B><A HREF="javascript:JPAgoPrevNext(-1);">&lt;&lt;previous</A></B></TD>');
  // no hyperlink to index when using fusker method
  if (JPA_FuskDig == -1) {
    document.write('<TD WIDTH=100><B><A HREF="' + window.location.pathname + '">index</A></B></TD>');
  };
  document.write('<TD WIDTH=100><B><A HREF="javascript:JPAgoPrevNext(+1);">next&gt;&gt;</A></B></TD>');
  document.write('<TD WIDTH=50><B><A HREF="javascript:JPAgoPrevNext(+10);">&gt;&gt;</A></B></TD>');
  document.write('<TD WIDTH=50><B><A HREF="javascript:JPAgoPrevNext(+99);">&gt;|</A></B></TD>');
  document.write('</TABLE>');
  document.write('<IMG NAME="imgBrowse"><BR>');
  document.write('<B ID="BrowseDescValue">text</B><BR>');
  
  // refresh photo
  JPAgoPrevNext(0);
}

// get parameter and generate index or browser content
function JPAgenerateContent() {
  JPA_Current = JPAgetParameter();
  if (JPA_Current == -1) {
    JPAgenerateIndex();
  } else{
    JPAgenerateBrowse();
  };
  JPALastUpdated();
}

// for fusker, remove zero's '0012' returns '12'
function JPAFuskerRemoveZero(strInput)
{
  // parseInt('0123') interprets as octal and returns decimal 83
  i = 0;
  while (strInput.substr(i, 1) == '0') {i++;};

  // incase all zero's then the string is empty now
  if (strInput.length == i) {
    return '0';
  } else {
    return strInput.substr(i);
  };
}

// for fusker, determine fusker variables, example: strURL='http://bla/test[01-10].jpg'
// bgn='http://bla/test' end='.jpg' cur=1 dig=2
function JPAFuskerDetermine(strURL)
{
  var iEndNr = -1;
  var strTemp;

  var strNumberPart = '';
  var i;

  //force typecast to string
  strURL = strURL + '';

  // check for '[01-10]' part
  var iBegin = strURL.indexOf('[');
  var iEnd   = strURL.indexOf(']');
  if (iBegin < 0 || iEnd < 0) {return false;}; // error

  // keep first and last part
  JPA_FuskPart1 = strURL.substr(0, iBegin);
  JPA_FuskPart2 = strURL.substr(iEnd+1, strURL.length-iEnd);

  // check for dash '-' part
  var strTemp = strURL.substr(iBegin+1, (iEnd-iBegin-1));
  var iDash  = strTemp.indexOf('-');
  if (iDash < 0) {
    return false; // error
  };

  // check if start and end number valid integers
  var strStartNr = strTemp.substr(0, iDash);
  JPA_FuskDig  = strStartNr.length;
  strStartNr = JPAFuskerRemoveZero(strStartNr);

  var strEndNr = strTemp.substr(iDash+1, strTemp.length-iDash-1);
  strEndNr = JPAFuskerRemoveZero(strEndNr);

  if (isNaN(strStartNr) == true || isNaN(strEndNr) == true) {
    return false; // error
  }
  
  // set fusker variables
  JPA_FuskBgn = parseInt(strStartNr) - 1;
  JPA_FuskEnd = parseInt(strEndNr) - 1;
  JPA_Current = JPA_FuskBgn;
  JPA_TotalPhotos = (JPA_FuskEnd - JPA_FuskBgn) + 1;
  
  return true;
}
