/**    
 * lCMS version 1.0 (c) 2005-2010 Hannes Friederich. All rights reserved. 
 **/

var Imageswap = new Object();
Imageswap.currentID = 0;
Imageswap.locations = new Array();

Imageswap.SwapPeriodically = function(image, hiddenImage, images) {
  alert(images)
}

Imageswap.CreateSwapLocation = function(id) {
  var swapLocation = new Object();
  swapLocation.image = getElement(id);
  swapLocation.hiddenImage = getElement(id + '_hidden');
  swapLocation.hiddenDiv = getElement(id + '_hidden_div');
  swapLocation.id = this.currentID;
  this.currentID++;
  this.locations[swapLocation.id] = swapLocation;
  
  /* Dummy function */
  swapLocation._done = function() { }
  
  return swapLocation;
}

Imageswap.ChangeImage = function(swapLocation, newSrc) {
  swapLocation.hiddenImage.src = newSrc;
  Imageswap._setTransparency(swapLocation, 0);
}

Imageswap.SwapPeriodically = function(swapLocation, pics, duration) {

  /* create images of all pics */
  var images = new Array();
  for (i = 0; i < pics.length; i++) {
    var image = new Image();
    image.src = pics[i];
    images[i] = image;
  }
  swapLocation.images = images;
  swapLocation.imageIndex = 0;
  swapLocation.duration = duration * 1000; /* move to milliseconds */

  /* register custom callbacks */
  swapLocation._done = function() {
    var argument = 'Imageswap._periodicSwapTimeout(' + this.id + ')';
    window.setTimeout(argument, this.duration);
  }
  swapLocation._timeout = function() {
    /* go to next image */
    this.imageIndex = (this.imageIndex + 1) % this.images.length;
    this.hiddenImage.src = this.images[this.imageIndex].src;
    
    /* swap images */
    Imageswap._setTransparency(this, 0);
  }
  
  /* schedule first image swap */
  swapLocation._done();
}

Imageswap._setTransparency = function(swapLocation, value) {
  var image = swapLocation.image;
  var newImage = swapLocation.hiddenImage;
  var element = swapLocation.hiddenDiv;
  
  value += 4;
  
  if (value == 100) {
    image.src = newImage.src;
    Imageswap._applyTransparency(image, 100);
    Imageswap._applyTransparency(element, 0);
    
    swapLocation._done();
  } else {
    var opValue = 100-value;
    var newOpValue = value;
    
    Imageswap._applyTransparency(image, opValue);
    Imageswap._applyTransparency(element, newOpValue);
    
    var argument = 'Imageswap._updateTransparency(' + swapLocation.id + ', ' + value + ')';
    window.setTimeout(argument, 40);
  }
}

Imageswap._applyTransparency = function(obj, opacity) {
  opacity = (opacity == 100)?99.999:opacity;
  
  // IE/Win
  obj.style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity=" + opacity + ");";
  
  // Safari<1.2, Konqueror
  obj.style.KHTMLOpacity = opacity/100;
  
  // Older Mozilla and Firefox
  obj.style.MozOpacity = opacity/100;
  
  // Safari 1.2, newer Firefox and Mozilla, CSS3
  obj.style.opacity = opacity/100;
}

Imageswap._updateTransparency = function(id, value) {
  var swapLocation = this.locations[id];
  Imageswap._setTransparency(swapLocation, value);
}

Imageswap._periodicSwapTimeout = function(id) {
  var swapLocation = this.locations[id];
  swapLocation._timeout();
}
