function Gallery(imagePath, jsPath, jsonFile, objName, workingArea) {
  var pictures = new Array();
  var gallery = document.createElement("table");

  this.init = function() {
    var xmlHttp = getXmlHttpRequest();
    if (xmlHttp) {
      var jsonPath = imagePath + "/" + jsonFile;
      xmlHttp.open('GET', jsonPath, true);
      xmlHttp.onreadystatechange = function () {
        if (xmlHttp.readyState == 4) {
          var responseData = eval('(' + xmlHttp.responseText + ')');
          pictures = responseData.pictures;
          var pictures_sqrt = Math.ceil(
            Math.sqrt(responseData.pictures.length));
          var text = document.createTextNode(responseData.name);
          var pre = document.createElement("pre");
          var tblBody = document.createElement("tbody");
          var img_pos = 0;
          var row = document.createElement("tr");
          var cell = document.createElement("td");
          pre.appendChild(text);
          cell.colSpan = pictures_sqrt;
          cell.align = "center";
          cell.appendChild(pre);
          row.appendChild(cell);
          tblBody.appendChild(row);

          for (var j = 0;
            (j < pictures_sqrt) && (img_pos < responseData.pictures.length);
            j++) {
            row = document.createElement("tr");

            for (var i = 0;
              (i < pictures_sqrt) && (img_pos < responseData.pictures.length);
              i++) {
              cell = document.createElement("td");
              var img = document.createElement("img");
              img.className = "link";
              img.src = imagePath + "/" + responseData.pictures[img_pos][0];
              img.onclick = new Function(objName + ".showImage(" + img_pos
                + ")");
              img.align = "middle";
              cell.appendChild(img);
			  cell.align = "center";
			  cell.bgColor = "#000000";
              row.appendChild(cell);
              img_pos++;
            }

            tblBody.appendChild(row);
          }

          gallery.appendChild(tblBody);
          gallery.cellSpacing = 15;
        }
      }
      xmlHttp.send(null);
    }
  }

  this.show = function() {
    var div = document.getElementById("webgallery");
    if(div)
      workingArea.removeChild(div);

    div = document.createElement("div");
    div.id = "webgallery";
    div.appendChild(gallery);
    workingArea.appendChild(div);
  }
  
  this.showImage = function(pos) {
    var tbl = document.createElement("table");
    tbl.cellSpacing = 10;
    var tblBody = document.createElement("tbody");

    var row1 = document.createElement("tr");

    var cell1 = document.createElement("td");
    cell1.align = "left";
    if(((pos-1) >= 0) && pos < pictures.length)
    {
      var img1 = document.createElement("img");
      img1.src = jsPath + "/pfl.gif";
      img1.onclick = new Function(objName + ".showImage(" + (pos - 1) + ")");
      cell1.appendChild(img1);
    }
    row1.appendChild(cell1);

    var cell2 = document.createElement("td");
    cell2.align = "left";
    cell2.appendChild(document.createTextNode(pictures[pos][2]));
    row1.appendChild(cell2);
    tblBody.appendChild(row1);

    var cell3 = document.createElement("td");
    cell3.align = "right";
    if((pos+1) < pictures.length)
    {
      var img2 = document.createElement("img");
      img2.src = jsPath + "/pfr.gif";
      img2.onclick = new Function(objName + ".showImage(" + (pos + 1) + ")");
      cell3.appendChild(img2);
    }
    row1.appendChild(cell3);

    var row2 = document.createElement("tr");

    var cell4 = document.createElement("td");
    cell4.vAlign = "top";
    cell4.appendChild(document.createTextNode("Bild " + (pos+1)));
    cell4.appendChild(document.createElement("br"));
    cell4.appendChild(document.createTextNode("von " + pictures.length));
    row2.appendChild(cell4);

    var cell5 = document.createElement("td");
    cell5.colSpan = 2;
    if(pos < pictures.length)
    {
      var img3 = document.createElement("img");
      img3.className = "link";
      img3.src = imagePath + "/" + pictures[pos][1];
      img3.onclick = new Function(objName + ".show()");
      cell5.appendChild(img3);
    }
    row2.appendChild(cell5);

    tblBody.appendChild(row2);
    tbl.appendChild(tblBody);

    var div = document.getElementById("webgallery");
    if(div)
      workingArea.removeChild(div);

    div = document.createElement("div");
    div.id = "webgallery";
    div.appendChild(tbl);
    workingArea.appendChild(div);
  }
}
