// CONFIGURATION:
var slideWidth = 365;
var slideHeight = 252;
var slideSpeed = .5;
var slideWaitTime = 6000;

var isSliding = false;
var tmrSlideShowSlide;
var tmrSlideShowNext;
var delta;
var pauseSlideshow = false;
var slideData = [];
var currentSlide = 0;

function _slideShow(){
	this.slides = [];
	this.resetSlides = function(){
		// SETS INITIAL STATE OF SLIDES
				for(var i=0;i<this.slides.length;i++){
					$(this.slides[i].objSlide.id).style.left = this.slides[i].x + 'px';
				}
				this.setSlideDisplay();
	}
	this.setSlideDisplay = function(){
		// DISPLAYS INFORMATION BASED ON CURRENT SLIDE
		var oSlide = this.slides[currentSlide];
		$('slideShowOverlayCaption').update(oSlide.caption);
		$('slideshowOverlayFader').setAttribute('title',oSlide.tooltip);
		
		var slideshowOverlayLink = $('slideshowOverlayLink');
		slideshowOverlayLink.setAttribute('href','javascript:viewItem('+oSlide.jsonParams+',"portfolio/");void(0);');
		slideshowOverlayLink.setAttribute('title',oSlide.tooltip);
		//slideshowOverlayLink.setAttribute('onclick','');
		
	}
	this.showNext = function(){
		if(isSliding){

			// ACCELERATION
			var percentScrolled = Math.abs((this.slides[currentSlide].x / slideWidth) * 100);
			if(percentScrolled>50) percentScrolled = 100 - percentScrolled;
			delta = Math.abs(percentScrolled * slideSpeed);

			// CALCULATE NEW SLIDE POSITIONS
			for(var i=0;i<this.slides.length;i++){
				this.slides[i].x -= delta+3;
			}

			for(var i=0;i<this.slides.length;i++){

				// IF SLIDE IS SCROLLED OUT OF VIEW...
				if(this.slides[i].x<=-slideWidth){

					if(i==0){
					    // MOVE FIRST SLIDE TO BACK OF SLIDE...LINE. YEAH.
						this.slides[i].x = this.slides[this.slides.length-1].x + slideWidth;
					}else{
					    // MOVE 'EM ALONG
						this.slides[i].x = this.slides[i-1].x + slideWidth;
					}

					isSliding = false;
					
					// INCREMENT CURRENT SLIDE NUMBER
					currentSlide++;
					
					// IF THE LAST SLIDE IS NOW OUT OF VIEW, SET CURRENT SLIDE TO FIRST SLIDE
					if(currentSlide==this.slides.length) currentSlide = 0;

                    // MAKE SLIDESHOW STOP SLIDING
					window.clearInterval(tmrSlideShowSlide);

					// SNAP SLIDES TO GRID
					for(var i=0;i<this.slides.length;i++){
						this.slides[i].x = Math.round(this.slides[i].x / slideWidth) * slideWidth;
						$(this.slides[i].objSlide.id).style.left = this.slides[i].x + 'px';
					}

					// DISPLAY SLIDE INFO
					this.setSlideDisplay();

				}else{
					// POSITION SLIDE
					$(this.slides[i].objSlide.id).style.left = this.slides[i].x + 'px';
				}
			}
		}
	};
	this._slide = function(x,img,url,type,tooltip,caption,slideshowStrip,width,height){
		this.slideshowStrip = slideshowStrip;
		this.slideNumber = x;
		this.x = slideWidth * x;
		this.img = img;
		this.url = url;
		this.type = type;
		this.tooltip = tooltip;
		this.caption = caption;
		this.width = width;
		this.height = height;
	
		this.jsonParams = "{'url':'"+this.url+"','type':'"+this.type+"','width':'"+this.width+"','height':'"+this.height+"','caption':'"+this.caption+"'}";

			// CREATE HTML ELEMENTS

				var oSlide = document.createElement('div');
				oSlide.setAttribute('id','slide_div_'+x);

				var oImg = document.createElement('img');
				oImg.setAttribute('id','slide_img_'+x);
				oImg.setAttribute('src',img);
				oImg.setAttribute('border',"0");
				oImg.setAttribute('alt',this.tooltip);

				var oAnchor = document.createElement('a');
				oAnchor.setAttribute('id','slide_link_'+x);
				oAnchor.setAttribute('href','javascript:void(0);');
				
				$(this.slideshowStrip).appendChild(oSlide);
				$('slide_div_'+x).appendChild(oAnchor);
				this.objSlide = $('slide_div_'+x);
				this.objLink = $('slide_link_'+x);
				this.objLink.appendChild(oImg);
				this.objImg = $('slide_img_'+x);
				this.objSlide.style.position = 'absolute';
	}; // END FUNCTION _slide
};

function _showNext(){
	// SHOWS NEXT SLIDE
	if(!isSliding&&!pauseSlideshow){
		slideShow_stop();
		slideShow_start();
	}
}

function slideShow_start(){
	slideShow_stop();
	// IF MULTIPLE IMAGES, BEGIN SLIDESHOW
	if(slideShow.slides.length>=2){
		tmrSlideShowNext = window.setInterval(_showNext,slideWaitTime);
		tmrSlideShowSlide = window.setInterval("slideShow.showNext()",10);
		isSliding = true;
	}else{
	// IF ONE OR NONE, HIDE "Next >>"
		$('slideShowOverlayNext').innerHTML = '';
	}
}

function slideShow_stop(){
	if(!pauseSlideshow) window.clearInterval(tmrSlideShowSlide);
	window.clearInterval(tmrSlideShowNext);
}