function SlideShow(numOfPictures, fileLocation, elID) {
	var imageTimeout = 2500;
	var nextImage = 1;
	var container;
	
	var setOpacity = function(el, opacity) {
		el.style.opacity = opacity;
		el.style.MozOpacity = opacity;
		el.style.filter = "alpha(opacity=" + (opacity * 100) + ")";
	};
	
	var startFading = function() {
		var imageNodes = container.childNodes;
		if(imageNodes.length <= nextImage) {
			// not finished loading that image, wait another half round
			window.setTimeout(startFading, imageTimeout / 2);
			return;
		}
		
		var el = imageNodes[nextImage];
		
		el.style.visibility = 'visible';
		el.style.zIndex = 2;
		
		setOpacity(el, 0);
		fadeImage(el, 0);
		
		nextImage = (nextImage + 1) % numOfPictures;
	};
	
	var fadeImage = function(el, currentOpacity) {
		currentOpacity += 0.05;
		
		if (currentOpacity > 1) {
			setOpacity(el, 1);
			var prevEl = el.previousSibling ? el.previousSibling : el.parentNode.lastChild;
			prevEl.style.visibility = 'hidden';
			el.style.zIndex = 1;
			window.setTimeout(startFading, imageTimeout);
		}
		else {
			setOpacity(el, currentOpacity);
			window.setTimeout(function() { fadeImage(el, currentOpacity); }, 50);
		}
	};
	
	var init = function() {
		elID = (typeof elID == 'undefined') ? 'SlideShow' : elID;
		var el = container = document.getElementById(elID);
		while (el.firstChild) {
			if( el.firstChild.nodeName == "IMG" ) {
				imageHeight = el.firstChild.height;
				imageWidth = el.firstChild.width;
			}
			el.removeChild(el.firstChild);
		}
		
		el.style.width = imageWidth + "px";
		el.style.height = imageHeight + "px";
		
		for( var i=0; i < numOfPictures; ++i ) {
			var t = document.createElement('IMG');
			t.setAttribute('src', fileLocation + "/image" + (i + 1) + ".jpg");
			t.setAttribute('width', imageWidth);
			t.setAttribute('height', imageHeight);
			t.style.position = 'absolute';
			t.style.visibility = 'hidden';
			el.appendChild(t);	
			if(i == 1) {
				window.setTimeout(startFading, imageTimeout); // start slideshow
			}
		}
		
		el.firstChild.style.visibility = 'visible';
	};
	
	this.start = function() {}; // depreciated
	
	init();
};
