function Slideshow(options) {
	var slidetime = "3.0";
	$('loadingdiv').style.top = '240px';
	$('loadingdiv').style.left = '290px';

	var slidemsg = document.createElement('span');
	slidemsg.id = "slidemsg";
	slidemsg.className = "smaller";
	slidemsg.innerHTML = '&nbsp;&nbsp; <a href="#" onclick="return stopshow();" id="slidetoggle" class="lightlink">' + slidestopmsg + '</a> &nbsp;&nbsp; ';
	$('LB_titletext').appendChild(slidemsg);

	var sscontrols = document.createElement('span');
	sscontrols.id = "sscontrols";
	sscontrols.className = "smaller";
	var dims = 'width="9" height="9" hspace="0" vspace="0" border="0"';
	var controls;
	controls = slidesecsmsg + '\n<a href="#" title="' + minussecsmsg + '" onclick="return changeSlideTime(-500)"><img src="' + cmstngpath + 'img/tng_minus.gif" ' + dims + ' alt="' + minussecsmsg + '" name="minus" /></a>\n';
	controls += '<span id="sssecs">' + slidetime + '</span>\n';
	controls += '<a href="#" title="' + plussecsmsg + '" onclick="return changeSlideTime(500)"><img src="' + cmstngpath + 'img/tng_plus.gif" ' + dims + ' alt="' + plussecsmsg + '" name="plus" /></a>\n';
	sscontrols.innerHTML = controls;
	$('LB_titletext').appendChild(sscontrols);

	this.slides = [];
	this.slides.push($('div0'));
	this.slides.push($('div1'));

	this.timeout = options.timeout;
	this.front = 1;
	this.back = 0;
	this.ready = 0;
	this.paused = false;

	this.startingID = options.startingID;
	this.previousID = options.mediaID;
	this.mediaID = options.mediaID;
	this.medialinkID = options.medialinkID;
	this.albumlinkID = options.albumlinkID;
	this.cemeteryID = options.cemeteryID;

	this.slides[this.front].style.zIndex = 1;
	this.slides[this.back].style.zIndex = 0;

	this.next();
}
Slideshow.prototype = {
	next: function() {
		if(this.slides[this.back].innerHTML) {
			this.slides[this.back].style.display = '';

            if($('div0')) {
    			var slideheight = $('div' + this.back).offsetHeight;
    			var ssheight = parseInt($('slideshow').style.height);
    			if(!ssheight || ssheight < slideheight) {
    				$('div' + this.front).style.height = slideheight + 'px';
    				$('slideshow').style.height = slideheight + 'px';
    			}
    			var slidewidth = $('div' + this.back).offsetWidth;
    			var sswidth = parseInt($('slideshow').style.width);
    			if(!sswidth || sswidth < slidewidth) {
    				$('div' + this.front).style.width = slidewidth + 'px';
    				$('slideshow').style.width = slidewidth + 'px';
    			}

    			this.slides[this.front].style.zIndex = 2;
    			this.slides[this.back].style.zIndex = 1;

    			Effect.Fade(this.slides[this.front], {
    				duration: .3,
    				beforeStart: function(effect) {
    					$('loadingdiv').style.display='none';
    				},
    				afterFinish: function(effect) {
    					effect.element.style.zIndex = 0;
    					Element.setOpacity(effect.element, 1);
						if(!myslides.paused)
	    					adjustTimeout(myslides);
    					myslides.front = (myslides.front + 1) % 2;
    					myslides.back = (myslides.back + 1) % 2;
    					myslides.ready = 0;
    					myslides.loadslide();
    				}
    			});
            }
		}
		else {
			adjustTimeout(this);
			this.loadslide();
		}
	},
	loadslide: function() {
		var strParams = 'mediaID=' + this.mediaID + '&medialinkID=' + this.medialinkID + '&albumlinkID=' + this.albumlinkID + '&cemeteryID=' + this.cemeteryID;
		//alert(strParams);
		var loader1 = new net.ContentLoader(showmediaxmlfile,getNextSlide,null,"POST",strParams);
	}
}

function adjustTimeout(slide) {
	clearTimeout(timeoutID);
    timeoutID = setTimeout((function(){slide.next();}).bind(slide), slide.timeout + 500);
}

function getNextSlide() {
	var pair;
	var mediaID = "";
	var medialinkID = "";
	var albumlinkID = "";

	var contentstart = this.req.responseText.indexOf('<');
	var arglist = this.req.responseText.substr(0,contentstart);
	var content = this.req.responseText.substr(contentstart);

	arglist.replace('&amp;','&');
	var args = arglist.split("&");
	for(i = 0; i < args.length; i++) {
		pair = args[i].split("=");
		if(pair[0] == "mediaID")
			mediaID = pair[1];
		else if(pair[0] == "medialinkID")
			medialinkID = pair[1];
		else if(pair[0] == "albumlinkID")
			albumlinkID = pair[1];
	}

	if(!repeat && myslides.previousID == myslides.startingID) {
		stopshow(startmsg);
	}

	myslides.previousID = myslides.mediaID;
	myslides.mediaID = mediaID;
	myslides.medialinkID = medialinkID;
	myslides.albumlinkID = albumlinkID;

    if($('div0')) {
    	$('div' + myslides.back).style.display = 'none';
    	$('div' + myslides.back).innerHTML = content;
    }
	myslides.ready = 1;
}

function stopshow(msg) {
	if(myslides.paused) {
		$('slidetoggle').innerHTML = slidestopmsg;
		myslides.paused = false;
       	new Effect.Appear('sscontrols',{duration:.3});
		timeoutID = setTimeout((function(){myslides.next();}).bind(myslides), myslides.timeout + 500);
	}
	else {
		clearTimeout(timeoutID);
		timeoutID = false;
		myslides.paused = true;
		if(!msg) msg = resumemsg;
		$('slidetoggle').innerHTML = msg;
	   	new Effect.Fade('sscontrols',{duration:.3});
	}
	return false;
}

function jump(mediaID,medialinkID,albumlinkID) {
	if(timeoutID || tnglitbox) {
		clearTimeout(timeoutID);
		timeoutID = false;
		$('div' + myslides.back).innerHTML = '';
		new Effect.Opacity($('div' + myslides.front), {
			from:1,to:.4,duration:.2,
			afterFinish: function(effect) {
				$('loadingdiv').style.display = 'block';
			}
		});

		myslides.previousID = myslides.mediaID;
		myslides.mediaID = mediaID;
		myslides.medialinkID = medialinkID;
		myslides.albumlinkID = albumlinkID;

		adjustTimeout(myslides);
		myslides.loadslide();
		return false;
	}
	else
		return true;
}

function jumpnext(mediaID,medialinkID,albumlinkID) {
	if(timeoutID || tnglitbox) {
		if(myslides.ready) {
			clearTimeout(timeoutID);
			timeoutID = false;
			myslides.next();
			return false;
		}
		else
			return jump(mediaID,medialinkID,albumlinkID);
	}
	else
		return true;
}

function changeSlideTime(delta) {
	if((myslides.timeout > 1000 && delta < 0) || (myslides.timeout < 10000 && delta > 0))
		myslides.timeout += delta;
	var secs = myslides.timeout / 1000;
	$('sssecs').innerHTML = secs.toPrecision(2);
	return false;
}