function randord() {return(Math.round(Math.random())-0.5);};

function getElementsByClassName(className,tag,elm) {
 var testClass=new RegExp("(^|\s)"+className+"(\s|$)");
 var tag=tag || "*";
 var elm=elm || document;
 var elements=(tag=="*" && elm.all) ? elm.all : elm.getElementsByTagName(tag);
 var returnElements=[];
 var current;
 var length=elements.length;
 for (var i=0; i<length; i++) {
  current=elements[i];
  if (testClass.test(current.className)) {returnElements.push(current);};
  };
 return returnElements;
 };

function slideshow(host,frameLength) {
 if (!(this.host=host)) {return false;};
 this.host.style.overflow='hidden';
 this.frame=frameLength;
 var p=host.id.split(':');
 this.stay=Math.round(parseFloat(p[1])*1000);
 this.step=100*frameLength/(parseFloat(p[2])*1000);
 this.random=(p[3].toLowerCase()=='rand');
 var arr=host.getElementsByTagName('img');
 if (!arr.length) {return false;};
 this.imgurls=new Array();
 for (x=0; x<arr.length; x++) {if (arr[x].src!='') {this.imgurls[x]=arr[x].src;};};
 if (this.random) {this.imgurls.sort(randord);};
 var cell=host;
 if (host.hasChildNodes()) {while (host.childNodes.length>=1) {host.removeChild(cell.firstChild);};};
 this.img=document.createElement('img');
 this.img.setAttribute('src',this.imgurls[0]);
 host.appendChild(this.img);
 this.fadeIn(0,0);
 };

slideshow.prototype.fadeIn=function(p,n) {
 var self=this;
 if (!this.img.complete) {
  setTimeout(function() {self.fadeIn(0,n);},200);
  return false;
  };
 var my=Math.round((this.host.offsetHeight-this.img.height)/2);
 var mx=Math.round((this.host.offsetWidth-this.img.width)/2);
 if (p==0) {
  this.img.style.marginTop=my+'px';
  this.img.style.marginLeft=mx+'px';
  };
 var rp=Math.round(p);
 this.img.style.filter='alpha(opacity='+rp+')';
 this.img.style.opacity=''+(rp/100);
 this.img.style.visibility='visible';
 if (p<100) {
  p+=this.step;
  if (p>100) {p=100;};
  setTimeout(function() {self.fadeIn(p,n);},this.frame);
  }
 else {
  this.host.style.backgroundImage='url('+this.imgurls[n]+')';
  this.host.style.backgroundPosition=mx+'px '+my+'px';
  n++;
  if (n==this.imgurls.length) {n=0;};
  this.img.style.visibility='hidden';
  setTimeout(function() {self.img.src=self.imgurls[n];},this.frame);
  setTimeout(function() {self.fadeIn(0,n);},this.stay);
  };
 return true;
 };

var ssObjects=new Array();
var ssElements=getElementsByClassName('slideshow','*',document);
for (var i=0; i<ssElements.length; i++) {ssObjects.push(new slideshow(ssElements[i],40));};
