//ImageFade by fiRefLy (2010-01-05)
//
//ImageFade.add(element,images,animation,timeout);
//
//element:
//The div-Tag in which images should pop-up, take care of setting its CSS-Position attribute, otherwise Images might go crazy =)
//
//images:
//this string contains the names of the images, seperated by ',', take care of not having white-space in it, even near the ','
//
//animation:
//duration of the animation between two images in ms
//
//timeout:
//the time between two animations



var ImageFade = new function(){
    function getTimestamp(){
    return new Date().getTime();
  }
    function randImage(ins){
        return Math.round(Math.random()*(instances[ins]['length']-1));
    }
    this.add = function (element, images, animation, timeout){
        var new_instance = new Array();
        document.getElementById(element).innerHTML = "<img style=\"display:block;position:absolute;left:0px;top:0px\" id=\""+element+"_1\" /><img style=\"display:block;position:absolute;left:0px;top:0px\" id=\""+element+"_2\" />";
      new_instance['element_1'] = document.getElementById(element+'_1');
      new_instance['element_2'] = document.getElementById(element+'_2');
        new_instance['timeout']   = timeout + animation;
        new_instance['animation'] = animation;
        new_instance['images']    = new Array();
      new_instance['images']    = images.split(',');
        new_instance['length']    = new_instance['images'].length;
      new_instance['current']   = Math.round(Math.random()*(new_instance['length']-1));
      new_instance['last']      = new_instance['current'];
        new_instance['refresh']   = getTimestamp();
        new_instance['element_1'].src = new_instance['images'][new_instance['current']];
      new_instance['element_1'].src = new_instance['images'][new_instance['current']];
        instances.push(new_instance);
        if(instances.length == 1){
            window.setInterval(function(){ImageFade.timer();},100);
        }
    }
    this.timer = function (){
        var op = 0;
        var i = 0;
        for(i=0;i<instances.length;i++){
      if(instances[i]['refresh'] < getTimestamp() - instances[i]['timeout']){
        instances[i]['last'] = instances[i]['current']
        instances[i]['current'] = randImage(i);
        instances[i]['refresh'] = getTimestamp();
      }
      if(instances[i]['refresh'] > getTimestamp() - instances[i]['animation']){
        if(instances[i]['last'] != instances[i]['current']){
          op = Math.round((getTimestamp() - instances[i]['refresh']) / instances[i]['animation'] * 100);   
          instances[i]['element_1'].src = instances[i]['images'][instances[i]['last']];
                  instances[i]['element_2'].src = instances[i]['images'][instances[i]['current']];
          if(document.all){
            instances[i]['element_2'].style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity='+(op)+')';
          }else{
            instances[i]['element_2'].style.opacity = op / 100;
          }
        }
      }else{
        instances[i]['element_1'].src = instances[i]['images'][instances[i]['current']];
        if(document.all){
          instances[i]['element_2'].style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=0)';
        }else{
          instances[i]['element_2'].style.opacity = 0;
        }
      }
        }
  }
    var instances = new Array();
};
