	function Slideshow(images, captions, screenElm, captionElm, speed, fade) {
		this.interval;
		this.screen = getElem(screenElm);
		this.caption = getElem(captionElm);
		this.current = 0;
		this.speed = speed;
		this.fade = fade;
		this.slides = images;
		this.captions = captions;
		
		return this;
	}
	
	
	Slideshow.prototype.change = function(direction) {
		this.current += direction;
		
		if (this.current < 0) this.current = this.slides.length - 1; else if (this.current >= this.slides.length) this.current = 0;
		
		if (this.screen.src != this.slides[this.current].src) { 
			if (document.all) {
				this.screen.style.filter = "blendTrans(duration=" + this.fade + ")";
				this.screen.filters.blendTrans.Apply();
			}
			
			this.screen.src = this.slides[this.current].src;
			if (document.all) this.screen.filters.blendTrans.Play();
		}
		this.caption.innerHTML = this.captions[this.current];
		
		var obj = getElem('currentSlide');
		obj.innerHTML = this.current + 1;
	}
	
	
	Slideshow.prototype.next = function() { this.change(1); }
	Slideshow.prototype.previous = function() { this.change(-1); }
	
	
	function loadSlide(length, loaded, processed) {
		var bar = getElem('slideBar');
		var obj = getElem('slideBarPercent');
		
		var total = bar.style.width.replace(/\D*/g, '');
		if (!isNaN(total)) {
			var width = Math.round(Number(total) * (processed / length));
			obj.style.width = width.toString() + 'px';
		}
	}
	
	function loadSlideshow(images, loaded, captions) {
		var slideScreen = "slideScreen";
		var slideCaption = "slideCaption";
		var speed = 10000;
		var duration = 1;
		
		show = new Slideshow(images, captions, slideScreen, slideCaption, speed, duration);

		var obj = getElem("currentSlide");
		obj.innerHTML = show.current + 1;
		
		var obj = getElem("totalSlides");
		obj.innerHTML = show.slides.length;
		
		var obj = getElem("slideScreen");
		show.change(getInitialSlideOffset(images));
		
		hide('slideBar');
		display('slideStats');
	}
	
	function loadInitialSlide() {
		var file = getQueryStringParam('slide');
		
		var img = new Image;
		img.src = (file.length > 0) ? file : '/@/images/slideshow.loading.gif';
		
		var obj = getElem('slideScreen');
		obj.src = img.src;
	}
	
	function getInitialSlideOffset(images) {
		var offset = 0;
		var slide = getQueryStringParam('slide');
		
		if (slide.length > 0) for (i = 0; i < images.length; i++) if (images[i].src.indexOf(slide) >= 0) offset = i;
		
		return offset;
	}
