function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}


function SlideShow(numRot,intvl,name) {
    this.name = name;
    this.rotCount=0;  // slide position
    this.numRot = numRot;  // number of times to rotate
    this.numRotCounter=0;  // number of rotations complete
    this.intvl=intvl;  // time interval  between rotations
    this.rotIntvl;  // interval object
    this.fadeInterval // fade interval object
    this.fadeCounter=1;
    this.slideArray=new Array();  // array of slides to rotate
    this.isrunning=true;
    this.prevSlide=null;
    this.currSlide=null;
    this.fadeItem;

    this.preloader = preloader;
    this.fade = fade; 
    this.fadeSlide = fadeSlide;
    this.rotate = rotate;
    this.showImage = showImage;
    this.changeSlide = changeSlide;
    this.start_show = start_show;
    this.pause_show = pause_show;
    this.next_show = next_show;
    this.toggleNav = toggleNav;

    function preloader() {
       var galleryDiv = document.getElementById("gallery_table");
       var classElements = getElementsByClass("gallery-item",galleryDiv,"dl");
       for(var i=0;i<classElements.length;i++) {
          this.slideArray[i] = classElements[i];
       }
       this.slideArray[0].style.display="block";  
       this.currSlide = this.slideArray[0];
       this.prevSlide = this.slideArray[this.slideArray.length-1];
	   var thisObj = this;
	   this.rotIntvl = self.setInterval(function() { thisObj.rotate.call(thisObj); },this.intvl);
    }


    function fade(){
	this.currSlide.style.opacity = this.fadeCounter/10;
	this.currSlide.style.filter = 'alpha(opacity=' + this.fadeCounter*10 + ')';
        if(this.fadeCounter==10) {
           clearInterval(this.fadeInterval)
           this.fadeInterval=null;
           this.fadeCounter=0;
        }
        this.fadeCounter++;
    } 
    function fadeSlide() {
        this.currSlide.style.display="block";
        this.currSlide.style.opacity=0;	
        this.currSlide.style.filter = 'alpha(opacity=10)';
	var thisObj = this;
	   this.fadeInterval = setInterval(function() {eval(thisObj.name).fade();}, 50);

    }
    function changeSlide() {

          clearInterval(this.fadeInterval);
          this.fadeInterval=null;
        this.currSlide.style.display="block";
    }

	function rotate() {
		this.rotCount++;
		if(this.rotCount==parseInt(this.slideArray.length)) {
		   this.currSlide = this.slideArray[0];
		   this.prevSlide = this.slideArray[parseInt(this.slideArray.length)-1];
		} else {
		   this.prevSlide=this.currSlide;
		   this.currSlide=this.slideArray[this.rotCount];
		}
		
		this.prevSlide.style.display="none";
		this.fadeSlide();
		
		if(this.rotCount==parseInt(this.slideArray.length)) {
		  clearInterval(this.rotIntvl);
		  this.rotCount =0;
		  this.numRotCounter++;
		  var thisObj=this;
		  if(this.numRotCounter < this.numRot) {
			this.rotIntvl = self.setInterval(function() { eval(thisObj.name).rotate(); },this.intvl);
		  }
		}        
	}





	function showImage(id) {

          clearInterval(this.fadeInterval);
          this.fadeInterval=null;
	  if(this.isrunning == true)
		 pause_show(this);
	  this.prevSlide = this.currSlide;
	  this.prevSlide.style.display="none";
	  this.currSlide = document.getElementById("it-"+id);
	  //this.fadeSlide();	
	  this.changeSlide();
	  
	  this.isrunning = false;
	}
	function toggleNav() {
		
		var play_slideshow = document.getElementById("play_slideshow");
		var pause_slideshow = document.getElementById("pause_slideshow");
		if(play_slideshow.style.display=="inline") {
		   play_slideshow.style.display="none";
		} else {
		   play_slideshow.style.display="inline";
		}
		if(pause_slideshow.style.display=="none") {
		   pause_slideshow.style.display="inline";
		} else {
		   pause_slideshow.style.display="none";
		}
	}
	function start_show() {
          clearInterval(this.fadeInterval);
          this.fadeInterval=null;
		 var thisObj=this;
	     this.rotIntvl = self.setInterval(function() { eval(thisObj.name).rotate(); },this.intvl);
		 toggleNav();
		 this.isrunning = true;
	}
	function pause_show(ss) {
          clearInterval(ss.fadeInterval);
          ss.fadeInterval=null;
		 clearInterval(ss.rotIntvl);
		ss.toggleNav();
		ss.isrunning = false;
	}
	
	function next_show(incr) {
          clearInterval(this.fadeInterval);
          this.fadeInterval=null;
	  if(this.isrunning == true)
		 pause_show(this);
	
		this.prevSlide= this.currSlide;
		this.prevSlide.style.display="none";
		var currId = this.currSlide.id.substring(3);
		if(incr==-1) {
		  if(currId == 0) 
			 this.currSlide=this.slideArray[this.slideArray.length-1];
		  else 
			 this.currSlide=this.slideArray[parseInt(currId)-1];
		}  
		if(incr==1) {
		  if(currId == this.slideArray.length-1)  
			 this.currSlide=this.slideArray[0];
		  else
			 this.currSlide=this.slideArray[parseInt(currId)+1];
		} 
		this.changeSlide();
		this.isrunning = false;
	}
}

