function llx3_slideShow(container, interval, startTimeout, waitImageLoad, effect, fadeInDuration, fadeOutDuration, autoStart, randomStart) {

	var SlideShow = this;
	var slides;
	this.currentSlide = -1;
	var imagesLoaded = 0;
	var slideShowStarted = false;
	this.OnShowEvents = new Array();
	var slideIntv = 0;

	function slideSwitch(i) {
		if (init() == false) return;
		var oldSlide = SlideShow.currentSlide;
		SlideShow.currentSlide++;
		if (i) SlideShow.currentSlide = i;
		if (SlideShow.currentSlide >= slides.length) SlideShow.currentSlide = 0;
		var newSlide = SlideShow.currentSlide;
		if (SlideShow.OnShowEvents[newSlide]) SlideShow.OnShowEvents[newSlide]();
		switch (effect) {
			case "Fade":
				$(slides[oldSlide]).fadeOut(fadeOutDuration, function () {
					$(slides[newSlide]).fadeIn(fadeInDuration);
				});
				break;
			default:
				$(slides[oldSlide]).css("display", "none");
				$(slides[newSlide]).css("display", "block");
				break;
		}
		for (var i = 0; i < SlideShow.onMoveEvents.length; i++) { SlideShow.onMoveEvents[i](); }
	}

	function init() {
		if (slides) return;
		var c = document.getElementById(container);
		if (c == undefined) return false;
		slides = new Array();
		var foundSlides = c.children;
		for (var i = 0; i < foundSlides.length; i++) {
			if (foundSlides[i].className.indexOf("llxSlide") >= 0) slides.push(foundSlides[i]);
		}
		SlideShow.currentSlide = slides.length - 1
		return true;
	}


	function startSlideShow() {
		if (slideShowStarted) return;
		slideShowStarted = true;
		if (randomStart) {
			var r = Math.floor(Math.random() * slides.length);
			slideSwitch(r);
		} else {
			slideSwitch();
		}
		slideIntv = setInterval(slideSwitch, interval);
	}

	this.moveTo = function (i) {
		slideSwitch(i);
		if (slideIntv > 0) { clearInterval(slideIntv); slideIntv = setInterval(slideSwitch, interval); }
	}

	this.moveNext = function () {
		slideSwitch();
		if (slideIntv > 0) { clearInterval(slideIntv); slideIntv = setInterval(slideSwitch, interval); }
	}
	this.movePrev = function () {
		var cs = SlideShow.currentSlide - 1;
		if (cs < 0) cs = slides.length - 1;
		slideSwitch(cs);
		if (slideIntv > 0) { clearInterval(slideIntv); slideIntv = setInterval(slideSwitch, interval); }
	}

	this.onMoveEvents = new Array();

	if (autoStart) {
		$(document).ready(function () {
			if (init() == false) return;
			if (waitImageLoad) {
				var images = document.getElementById(container).getElementsByTagName("IMG");
				for (var i = 0; i < images.length; i++) {
					$(images[i]).load(function () {
						imagesLoaded++;
						if (imagesLoaded == images.length) { setTimeout(startSlideShow, startTimeout); }

					});
				}

			} else {
				setTimeout(startSlideShow, startTimeout);
			}
		});
	}
}
