
var GALLERY_LIST = new Array();
var GALLERY_CURRENT = 0;
var GALLERY_PATH = "/bilder/galleries";
var GALLERY_BUTTON_NEXT;
var GALLERY_BUTTON_PREV;
var GALLERY_PICTURE;
var GALLERY_BACKGROUND;
var GALLERY_OPACITY = 100;
var GALLERY_FADE_TIME = 500;
var GALLERY_IS_LOADING = false;

var preload = new Array("prev1.png", "prev2.png", "next1.png", "next2.png");
for (var i = 0; i < preload.length; i++) {
   var p = new Image;
   p.src = preload[i];
   preload[i] = p;
}


function JSON_Post(strURL, strQUERY, callBackFunction) {
   var json = false;
   if (window.XMLHttpRequest) { // Mozilla, Safari,...
      json = new XMLHttpRequest();
      if (json.overrideMimeType) {
         json.overrideMimeType("text/plain");
      }
   }
   else if (window.ActiveXObject) { // IE
      try {
         json = new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch (e) {
         try {
            json = new ActiveXObject("Microsoft.XMLHTTP");
         }
         catch (e) { json = false; }
      }
   }
   if (!json) {
      window.alert("Cannot create XMLHTTP instance");
      return false;
   }
   json.open("POST", strURL, true);
   json.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
   json.setRequestHeader("Content-length", strQUERY.length);
   json.setRequestHeader("Connection", "close");
   json.onreadystatechange = function() {
      if (json.readyState == 4 && json.status == 200 && callBackFunction != "") {
         var data = eval("(" + json.responseText + ")");
         eval(callBackFunction + "(data)");
      }
   }
   json.send(strQUERY);
   return true;
}

function loadGallery(id) {
   if (id > 0 || id == -1) {
      var q = "&GalleryID=" + id;
      JSON_Post("gallery_picture_list.php", q, "loadGalleryCallback");
   }
   else {
      window.alert("Invalid Gallery ID");
   }
}

function loadGalleryCallback(json) {
   GALLERY_BUTTON_PREV = document.getElementById("btnPrev");
   GALLERY_BUTTON_NEXT = document.getElementById("btnNext");

   if (json == null) {
      window.alert("An error occured, recieved null data.");
   }
   else {
      GALLERY_LIST = json.Pictures;
      // Pre-load the pictures
      for(var i = 0; i < GALLERY_LIST.length; i++) {
         var c = GALLERY_LIST[i];
         var p = new Image;
         p.src = GALLERY_PATH + "/" + c.GalleryID + "/medium/" + c.Filename;
         c.Image = p;
      }
      GALLERY_IS_LOADING = false;
      loadPicture(0);
   }
}

function loadPicture(index) {
   if (!GALLERY_IS_LOADING) {
      GALLERY_IS_LOADING = true;
      changeOpac(0, "galleryPicture2");
      changeOpac(100, "galleryPicture1");
      var current = GALLERY_LIST[index];
      GALLERY_CURRENT = index;
      var gp2 = document.getElementById("galleryPicture2");
      gp2.style.backgroundImage = "url('" + current.Image.src + "')";
      opacity("galleryPicture1", 100, 0, GALLERY_FADE_TIME, "_loadPicture(" + index + ")");
      opacity("galleryPicture2", 0, 100, GALLERY_FADE_TIME);
   }
}


function _loadPicture(index) {
   var current = GALLERY_LIST[index];
   GALLERY_CURRENT = index;
   GALLERY_PICTURE = document.getElementById("galleryPicture1");
   var gp1 = GALLERY_PICTURE;
   gp1.style.backgroundImage = "url('" + current.Image.src + "')";
   
   GALLERY_IS_LOADING = false;
   if (index == 0) {
      GALLERY_BUTTON_PREV.style.display = "none";
   }
   else {
      GALLERY_BUTTON_PREV.style.display = "block";
   }
   if (index == (GALLERY_LIST.length -1)) {
      GALLERY_BUTTON_NEXT.style.display = "none";
   }
   else {
      GALLERY_BUTTON_NEXT.style.display = "block";
   }
}

function opacity(id, opacStart, opacEnd, millisec, ondone) {
   //speed for each frame
   var speed = Math.round(millisec / 100);
   var timer = 0;
   
   //determine the direction for the blending, if start and end are the same nothing happens
   if(opacStart > opacEnd) {
      for(i = opacStart; i >= opacEnd; i--) {
         setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
         timer++;
      }
   }
   else if(opacStart < opacEnd) {
      for(i = opacStart; i <= opacEnd; i++) {
         setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
         timer++;
      }
   }
   if (ondone) {
      setTimeout(ondone, (timer * speed))
   }
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
   var object = document.getElementById(id).style;
   object.opacity = (opacity / 100);
   object.MozOpacity = (opacity / 100);
   object.KhtmlOpacity = (opacity / 100);
   object.filter = "alpha(opacity=" + opacity + ")";
}

function galleryGo(direction) {
   if (direction == "prev" && GALLERY_CURRENT > 0) {
      loadPicture(GALLERY_CURRENT -1);
   }

   if (direction == "next" && GALLERY_CURRENT < (GALLERY_LIST.length -1)) {
      loadPicture(GALLERY_CURRENT +1);
   }
}

function swap(obj, mode) {
   var p = obj.name + mode;
   switch(p) {
      case "Previous1":
         obj.src = "prev1.png";
      break;
      case "Previous2":
         obj.src = "prev2.png";
      break;
      case "Next1":
         obj.src = "next1.png";
      break;
      case "Next2":
         obj.src = "next2.png";
      break;
   }
}