  folder.prototype.childrenToHTML = function(widthScaleFactor) {
    var str = '';
    str += ' <TABLE border="0" cellpadding="0" cellspacing="0" width="100%" height="100%">\r\n' +
           '  <TR><TD><IMG src="Include/Pix/leeg.gif" width="1" height="40"></TD></TR>\r\n';
    for(var i = 0; i < folders.length; i++) {
      if(folders[i].parentFolderGUID == this.folderGUID) {
        str += folders[i].toHTML(widthScaleFactor);
      }
    }
    str += '  <TR><TD><IMG src="Include/Pix/leeg.gif" width="1" height="20"></TD></TR>\r\n' +
           '</TABLE>\r\n';
    return str;
  }


  folder.prototype.toHTML = function(widthScaleFactor) {
    var str = '';
    var fontsize = parent.parent.c_defaultFontSize * widthScaleFactor;
    var strDescr = this.folderName.replace(/ /gi, '_');
    var strURL   = 'Fotoalbum.htm?folderGUID=' + this.folderGUID + '&strDescr=' + strDescr + '&page=1';
    str += '<TR>' +
           '  <TD align="center" valign="top" nowrap>' +
           '    <A href="' + strURL + '" class="menuItem">' +
                 '<FONT style="FONT-SIZE:' + fontsize + 'px;">' + this.folderName + '</FONT>' +
           '    </A>' +
           '  </TD>' +
           '</TR>\r\n';
    return str;
  }


  folder.prototype.dumpContents = function(page, navigationMode, widthScaleFactor, heightScaleFactor, showFotoName) {
    var totalPics = this.files.length;

    var str = '';
    str += '<TABLE border="0" cellpadding="0" cellspacing="0" width="100%" height="100%">';

    var startPos   = 1 + (c_picsPerPage * (page - 1));

    var totalPages = Math.round(totalPics / c_picsPerPage);
    if((totalPages * c_picsPerPage) < totalPics) totalPages++;

    var nav = '&nbsp;';
    var strDescr = this.folderName.replace(/ /gi, '_');
    if(navigationMode == parent.parent.c_PrevNextNavigation) {
      var prevBtn = '&nbsp;';
      var nextBtn = '&nbsp;';

      if(page > 1)                                       prevBtn = '<A href="Fotoalbum.htm?folderGUID=' + this.folderGUID + '&strDescr=' + strDescr + '&page=' + (page - 1) + '"><IMG src="Include/Pix/Button_Prev.gif" border="0"></A>';
      if(totalPics > c_picsPerPage && page < totalPages) nextBtn = '<A href="Fotoalbum.htm?folderGUID=' + this.folderGUID + '&strDescr=' + strDescr + '&page=' + (page + 1) + '"><IMG src="Include/Pix/Button_Next.gif" border="0"></A>';

      nav = prevBtn + '&nbsp;&nbsp;' + nextBtn;
    }
    if(navigationMode == parent.parent.c_PageNavigation) {
      if(totalPages > 1) {
        var fontsize = c_defaultPageNumberFontSize * widthScaleFactor;
        nav = '<DIV class="pageNavBackground">' +
                '<FONT style="FONT-SIZE:' + fontsize + 'px;">' +
                  'Selecteer een pagina: ' +
                '</FONT>';
        for(var i = 1; i <= totalPages; i++) {
          if(i == page)
            nav += '<FONT class="pageNavCurrPage" style="FONT-SIZE:' + fontsize + 'px;">' +
                     i +
                   '</FONT> ';
          else {
            nav += '<A class="pageNavLink" href="Fotoalbum.htm?folderGUID=' + this.folderGUID + '&strDescr=' + strDescr + '&page=' + i + '">' +
                     '<FONT style="FONT-SIZE:' + fontsize + 'px;">' +
                       i +
                     '</FONT> ' +
                   '</A> ';
          }
        }
        nav += '</DIV>';
      }
    }
    str += '<TR><TD colspan="4"><IMG src="Include/Pix/leeg.gif" width="1" height="2"></TD></TR>' +
           '<TR><TD colspan="4" height="10" align="center">' + nav + '</TD></TR>' +
           '<TR><TD colspan="4"><IMG src="Include/Pix/leeg.gif" width="1" height="2"></TD></TR>';

    var endPos       = c_picsPerPage * page;
    var rowHeight    = (100 / c_picPerColumn);
    for(var i = startPos; i <= endPos; i++) {
      var currFoto = this.files[i - 1];

      if(i > totalPics)
        str += writeDummyFoto(widthScaleFactor, heightScaleFactor, rowHeight);
      else
        str += currFoto.writeThumbFotoCell(widthScaleFactor, heightScaleFactor, rowHeight, showFotoName);

      if((i % c_picPerRow) == 0) str += '</TR><TR>';
    }

    str += '</TABLE>';
    return str;
  }


  var fotoCounter = 0;


  file.prototype.writeThumbFotoCell = function(widthScaleFactor, heightScaleFactor, rowHeight, showFotoName) {
    var str = '';
    var fotoName = (showFotoName) ? this.fileName : '';
    fotoCounter++;
    str += '<TD class="fotoName" height="' + rowHeight + '%"' +
              ' valign="middle" align="center">' +
             this.writeThumbFoto(widthScaleFactor, heightScaleFactor, 0, 1) +
             '<BR/>' +
             fotoName +
           '</TD>';
    return str;
  }


  function writeDummyFoto(widthScaleFactor, heightScaleFactor, rowHeight) {
    var str    = '';
    var width  = (c_picWidth * widthScaleFactor);
    str += '<TD height="' + rowHeight + '%" valign="middle" align="center" nowrap>' +
             '<IMG src="Include/Pix/leeg.gif" border="0"' +
                 ' width="' + width + '" height="' + width + '">' +
           '</TD>';
    return str;
  }


  file.prototype.writeScalableThumbImage = function(border, widthScaleFactor, fotoWidth) {
    var str = '';
    var w = (fotoWidth) ? (fotoWidth * widthScaleFactor) : (c_picWidthTOC * widthScaleFactor);
    str += '<IMG src="' + this.thumbURL + '"' +
               ' border="' + border + '"' +
               ' alt="' + this.fileName + '"' +
               ' width="' + w + '">';
    return str;
  }


  file.prototype.writeThumbFoto = function(widthScaleFactor, heightScaleFactor, fotoWidth, border) {
    var str = '';
    
    if(fotoWidth) {
      var strWidth  = ' width="' + (fotoWidth * widthScaleFactor)  + '" ';
      var strHeight = '';
    }
    else {
      if(this.thumbWidth > this.thumbHeight) {
        var scaleFac = (this.thumbWidth / c_picWidth);
        var thWidth  = c_picWidth;
        var thHeight = c_picWidth / scaleFac;
      }
      else {
        var scaleFac = (this.thumbHeight / c_picWidth);
        var thWidth  = c_picWidth / scaleFac;
        var thHeight = c_picWidth / scaleFac;
      }

      var strWidth  = '  width="' + (thWidth  * widthScaleFactor)  + '" ';
      var strHeight = ' height="' + (thHeight * heightScaleFactor) + '" ';
    }

    var strClass = 'foto' + (3 - (fotoCounter % 3));
    str += '<A href="javascript:void(0);" ' +
              'onclick="ToonThumb(\'' + this.fileURL + '\', \'' + this.fileName + '\');return false;">' +
           '<IMG src="' + this.thumbURL + '" class="' + strClass + '"' +
               ' border="' + border + '" alt="' + this.fileName  + '"' +
               strWidth + strHeight + '></A>';

    return str;
  }


  file.prototype.writeFile = function(widthScaleFactor, heightScaleFactor, fotoWidth) {
    var str = '';
    
    if(fotoWidth) {
      var strWidth  = ' width="' + (fotoWidth * widthScaleFactor)  + '" ';
      var strHeight = '';
    }
    else {
      if(this.thumbWidth > this.thumbHeight) {
        var scaleFac = (this.thumbWidth / c_picWidth);
        var thWidth  = c_picWidth;
        var thHeight = c_picWidth / scaleFac;
      }
      else {
        var scaleFac = (this.thumbHeight / c_picWidth);
        var thWidth  = c_picWidth / scaleFac;
        var thHeight = c_picWidth / scaleFac;
      }
  
      var strWidth  = '  width="' + (thWidth  * widthScaleFactor)  + '" ';
      var strHeight = ' height="' + (thHeight * heightScaleFactor) + '" ';
    }

    str += '<IMG src="' + this.fileURL + '" class="blackBorder" alt="' + this.fileName  + '"' +
                 strWidth + strHeight + '>';

    return str;
  }


  file.prototype.showZoomableThumbMovie = function(msg) {
    var args       = 'MMfile=' + (this.relFilePath + this.fileName + '.' + this.extension) + '&' +
                     'MMid='   + this.fileGUID + '&' +
                     'width=&height=';
    var strURL     = 'Movieplayer.htm?' + args;
    var wndName    = 'Movieplayer';
    var strAttrs   = 'width=300,height=330,status=no,toolbar=no,scrollbars=no,menubar=no,location=no,resizable=yes';
    var objJSEsc   = parent.parent.jsEsc;
    var strOnClick = 'window.open(' + [objJSEsc(strURL), objJSEsc(wndName), objJSEsc(strAttrs)] + ');';

    var strMovie = displayClickableImage(strOnClick, msg);
    return strMovie;
  }


  function displayClickableImage(strOnClick, msg) {
    var str = '';
    str += '<A href="javascript:void(0);" onclick="' + strOnClick + 'return false;">\r\n' +
             msg +
           '</A>\r\n';
    return str;
  }
