function opacity(id, opacStart, opacEnd, millisec) {
    var speed = Math.round(millisec / 100);
    var timer = 0;

    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++;
        }
    }
}

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 slideshow(speed,dd,height,width) {
  this.div=dd;
  this.speed=speed;
  this.pics = new Array();
  this.piclen=0;

  function slideimg(src, width, height, link, title) {
    this.src = src;
    this.width = width;
    this.height = height;
    this.link = link;
    this.title = title;
  };

  this.add = function(src, link, title){
    this.pics.push( new slideimg(src,link,title));
  };

  this.run = function() {
        this.piclen=this.pics.length;
        this.imgs = new Array(this.piclen);
        for(ii=0;ii<this.piclen;ii++) {
          this.imgs[ii]= new Image();
          this.imgs[ii].src = this.pics[ii].src;
          this.imgs[ii].width = this.pics[ii].width;
          this.imgs[ii].height = this.pics[ii].height;
        }
        var myself = this;
        function callMethod(){
          myself.loadwait();
        }
        this.waitinterval = setInterval(callMethod,250);
      };


  this.loadwait = function() {
       if( this.loaded() == true ) {
         window.clearInterval(this.waitinterval);
         this.popdiv();
         var myself = this;
         function callMethod(){
           myself.fade();
         }
         this.scrollinterval = setInterval(callMethod,this.speed);
       }
     };


  this.popdiv = function() {
    this.pos=0;
    hh='<img src="'+this.pics[0].src+'" style="width: '+this.pics[0].width+'px; height: '+this.pics[0].height+'px; border: 0 none; filter: alpha(opacity=0); -moz-opacity: 0; opacity: 0;" id="'+this.div+'in" alt="" />';
    d = document.getElementById(this.div);
    d.innerHTML=hh;
    d.style.width = this.pics[0].width+'px';
    d.style.height = this.pics[0].height+'px';
    d.style.backgroundImage = "url('"+this.pics[this.piclen-1].src+"')";
    d.style.backgroundRepeat = 'no-repeat';
    changeOpac(100,this.div+'in');
  };


  this.fade = function() {
    this.pos = this.pos+1;
    d = document.getElementById(this.div);
    if( this.pos == this.piclen ) {
      d.style.background = "url('"+this.pics[this.piclen-1].src+"')";
      this.pos=0;
    }
    else {
      d.style.background = "url('"+this.pics[this.pos-1].src+"')";
    }
    d.style.backgroundRepeat = 'no-repeat';
     
    changeOpac(0,this.div+'in');
    d = document.getElementById(this.div+'in');
    d.src = this.pics[this.pos].src;
    d = document.getElementById(this.div);
    d.style.width = this.pics[this.pos].width;
    d.style.height = this.pics[this.pos].height;
    timer=0;
    sp = Math.round(this.speed/350)+1;
    for(ii=0;ii<=100; ii++) {
      setTimeout("changeOpac("+ii+",'"+this.div+"in')",(timer*sp));
      timer++;
    }
  }


  this.loaded = function() {
    for(ii=0;ii<this.piclen;ii++) {
      if(this.imgs[ii].complete == false) {
        return false;
        break;
      }
    }
    return true;
  };
};
