function slideshow(elementId, slidesArray, slideDelay) {
	this.divId = elementId;
	this.slides = slidesArray;
	this.slideTimer = false;
	this.slideshowActive = false;
	if (typeof slideDelay != 'undefined') {
		this.slideshowDelay = slideDelay;
	} else {
		this.slideshowDelay = 10000;
	}
	this.preDelay = this.slideshowDelay;
	this.slideIdx = -1;
	this.slideOfferLink = false;
	this.slideOfferDiv = false;
	this.playBtn = false;
	this.slideBtns = [];
	
	this.preload = function() {
		var images = [];
		for (var i=0; i<this.slides.length; i++) {
			images[i] = this.slides[i].image;
		}
		var preloader = new preloadImages(images, false);
	}
	
	if (typeof preloadImages == 'function') {
		this.preload();
	}
	
	this.btnToggle = function(el) {
		if (el.className.indexOf('-on') >= 0) {
			el.className = el.className.replace('-on','');
		} else {
			el.className += '-on';
		}
		return false;
	}
	
	this.goToOffer = function(idx) {
		if (this.slideIdx > -1) this.btnToggle(this.slideBtns[this.slideIdx]);
		this.btnToggle(this.slideBtns[idx - 1]);
		this.slideIdx = idx - 1;
		this.slideOfferDiv.style.background = "url('" + this.slides[this.slideIdx].image + "') no-repeat";
		this.slideOfferLink.href = this.slides[this.slideIdx].link;
		if (this.slideshowActive) this.resetSlideTimer();
		return false;
	};

	this.toggleSlideshow = function() {
		if (this.slideshowActive) {
			this.slideshowActive = false;
			window.clearTimeout(this.slideTimer);
			this.btnToggle(this.playBtn);
		} else {
			this.slideshowActive = true;
			this.slideTimer = this.setCustomTimeout(this.preDelay);
			this.preDelay = 0;
			this.btnToggle(this.playBtn);
		}
		return false;
	};

	this.slide = function() {
		var num = this.slideIdx + 2;
		if (num > this.slides.length) num = 1;
		this.goToOffer(num);
	};

	this.resetSlideTimer = function () {
		window.clearTimeout(this.slideTimer);
		this.slideTimer = this.setCustomTimeout(this.slideshowDelay);
	};
	
	this.setCustomTimeout = function (delay) {
		var _self = this;
		return setTimeout(function(){_self.slide()}, delay);
	};
	
	this.cleanup = function () {
		var els = document.getElementsByTagName('a');
		for (var i=0; i<els.length; i++) {
			if (els[i].className.match(/playpause|number|number-on/)) {
				els[i].onclick = false;
			}
		}
	}
	
	this.initDisplay = function () {
		var _self = this;
		var div = document.getElementById(this.divId);
		var el = document.createElement('div');
		el.id = 'slideOffer';
		var linkEl = document.createElement('a');
		linkEl.id = 'slideOfferLink';
		linkEl.innerHTML = "View Offer";
		el.appendChild(linkEl);
		div.appendChild(el);
		this.slideOfferDiv = el;
		this.slideOfferLink = linkEl;
		
		var controlsEl = document.createElement('div');
		controlsEl.id = 'slidecontrols';
		
		linkEl = document.createElement('a');
		linkEl.href = document.URL + '#';
		linkEl.className = 'playpause';
		linkEl.id = 'playpause';
		linkEl.innerHTML = 'Play/Pause Slideshow';
		linkEl.onclick = function(){_self.toggleSlideshow(); return false;};
		controlsEl.appendChild(linkEl);
		this.playBtn = linkEl;
		
		var p = document.createElement('p');
		p.innerHTML = 'More Offers:';
		controlsEl.appendChild(p);
		
		for (var i=1; i<=this.slides.length; i++) {
			linkEl = document.createElement('a');
			linkEl.id = 'slide'+i;
			linkEl.href = document.URL + '#';
			linkEl.className = 'number';
			linkEl.innerHTML = i;
			linkEl.onclick = function(){_self.goToOffer(this.id.replace('slide','')); return false;};
			this.slideBtns[i-1] = linkEl;
			controlsEl.appendChild(linkEl);
		}
		div.appendChild(controlsEl);
		
		this.goToOffer(1);
		this.toggleSlideshow();
		
		window.onunload = function(){_self.cleanup()};
	};
}
