var slideshow = {	
	
	currentItem : 0,
	nextItem : 1,
	currentOpac : 100,
	timeout: 0,
	
	init:function(){		
		var self = slideshow;
		var imgs = id('gallery-album').getElementsByTagName('img');
		slideshow.max  = imgs.length-1;
		slideshow.imgs = imgs;
		slideshow.prevItem = slideshow.max;
		
		// SET UP IMAGES, OPACITIES, ETC
		slideshow.setUpImages();
		
		// SET UP FIRST IMAGE		
		slideshow.imgs[0].xOpacity = 100;
		slideshow.setOpacity(slideshow.imgs[0]);
		slideshow.imgs[0].style.display = 'block';
		slideshow.imgs[0].style.className = 'current';	
		//id('more-info').innerHTML = slideshow.imgs[0].alt;	
		
		slideshow.interval = 7000; // SET INTERVAL
		slideshow.timer = slideshow.fade.delay(slideshow.interval);
		slideshow.slideControls();	// INITIATE SLIDESHOW CONTROLS		
	},	
	
	setUpImages:function(){
		for(var b=0; b<slideshow.imgs.length; b++){
			//slideshow.imgs[b].style.display = 'block';
			slideshow.imgs[b].xOpacity = 0;
			slideshow.imgs[b].id = 'image-'+b;
		}
	},	
	

	slideControls:function(){
		id('prev').onclick = function(){
			clearTimeout(slideshow.timer);
			slideshow.previousSlide();
			return false;
		}	
		
		id('next').onclick = function(){			
			clearTimeout(slideshow.timer);
			slideshow.fade();
			return false;
		}
		
	},		
	
	previousSlide:function(){
		
		// give previous slide opacity
		slideshow.imgs[slideshow.prevItem].xOpacity = 0;		
		slideshow.imgs[slideshow.prevItem].style.display = 'block';
		slideshow.setOpacity(slideshow.imgs[slideshow.prevItem]);
		
		// fade out current slide		
		var outtie = 0;
		for(var i=100; i>=0; i--){
			setTimeout("changeOpac("+i+", '"+id(slideshow.imgs[slideshow.currentItem]).id+"')", (outtie*(slideshow.interval/1000)));
			outtie++;
		}
		
		// fade in previous slide
		var innie = 0;
		for(var a=0; a<=100; a++){
			setTimeout("changeOpac("+a+", '"+id(slideshow.imgs[slideshow.prevItem]).id+"')", (innie*(slideshow.interval/1000)));
			innie++;
		}		
		//id('more-info').innerHTML = id(slideshow.imgs[slideshow.prevItem].id).alt
		
		// when there finished fading, update the current/past items
		var cur = slideshow.currentItem;
		var prev = slideshow.prevItem;
		var next = slideshow.nextItem;
		
		slideshow.nextItem = slideshow.currentItem;
		slideshow.currentItem = slideshow.prevItem;
		slideshow.prevItem = (prev == 0) ? slideshow.max : prev-1;
		slideshow.timer = slideshow.fade.delay(slideshow.interval);
	},	
	
	fade:function(slides){
		slideshow.nextItem = (slideshow.currentItem == slideshow.max) ? 0 : slideshow.currentItem+1;		
		
		slideshow.imgs[slideshow.nextItem].xOpacity = 0;
		slideshow.setOpacity(slideshow.imgs[slideshow.nextItem]);
		slideshow.imgs[slideshow.nextItem].style.display = 'block';
		
				
		// FADE OUT
		var timer = 0;
	    for(i = 100; i >= 0; i--) {
	        setTimeout("changeOpac("+i+", '"+id(slideshow.imgs[slideshow.currentItem]).id+"')", (timer*(slideshow.interval/1000)));
	        timer++;
	    }	    
	    
	    // FADE NEXT ITEM IN
	    var innie = 0;
	    for(a = 0; a<=100; a++){
	    	setTimeout("changeOpac("+a+", '"+id(slideshow.imgs[slideshow.nextItem]).id+"')", (innie*(slideshow.interval/1000)));
	    	innie++;
	    }
	   	
	    slideshow.prepNextSlide();
	    slideshow.timer = slideshow.fade.delay(slideshow.interval);	    	
	},	
	
	prepNextSlide:function(){
		//id('more-info').innerHTML = id(slideshow.imgs[slideshow.currentItem]).alt;
		slideshow.currentItem = slideshow.nextItem;
		slideshow.nextItem = (slideshow.imgs[slideshow.currentItem+1]) ? slideshow.currentItem+1 : 0;
		slideshow.prevItem = (slideshow.currentItem == 0) ? slideshow.max : slideshow.currentItem-1;		
	},
		
	setOpacity:function(obj){
		obj.style.opacity = (obj.xOpacity/100);
		obj.style.MozOpacity = (obj.xOpacity/100)
		obj.style.filter = 'alpha(opacity=' + obj.xOpacity + ')';		
	}
	
}

function changeOpac(opacity, el) {
    var object = id(el).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
}

addEvent(window, 'load', slideshow.init);