function SlideShow(args) {
	var opts = $('options');
	var content = $('slideshow');
	var oTitle = $('media-title');
	var oPager = $('media-pager');

	function load() {
		delClass(content, 'customize');

		var so = new SWFObject('http://p.webshots.com/flash/slideshow.swf', 'ss', 640, 485, '8', '#000000');
		so.addParam('base', 'http://p.webshots.com/flash/');
		so.addParam('wmode', 'window');
		so.addParam('quality', 'best');
		so.addParam('allowScriptAccess', 'always');

		so.addVariable('audio', 'on');
		so.addVariable('audioVolume', '33');
		so.addVariable('autoPlay', 'true');
		so.addVariable('playList', encodeURIComponent(args.playList));
		so.addVariable('startIndex', '0');
		so.addVariable('deployed', 'true');

		if (args.musicList) so.addVariable('musicList', encodeURIComponent(args.musicList));
		if (args.transition) so.addVariable('transition', encodeURIComponent(args.transition));
		if (args.theme) so.addVariable('theme', encodeURIComponent(args.theme));
		if (args.preRollContent && args.preRollContent.indexOf(';jsessionid=')) so.addVariable('preRollContent', encodeURIComponent(args.preRollContent));
		if (args.postRollContent) so.addVariable('postRollContent', encodeURIComponent(args.postRollContent));
		if (args.madisonPre && args.madisonPre.indexOf(';jsessionid=')) so.addVariable('madisonPre', encodeURIComponent(args.madisonPre));
		if (args.madisonPost && args.madisonPost.indexOf(';jsessionid=')) so.addVariable('madisonPost', encodeURIComponent(args.madisonPost));
		if (args.shareUrl) so.addVariable('shareUrl', encodeURIComponent(args.shareUrl));
		if (args.inlineUrl) so.addVariable('inlineUrl', encodeURIComponent(args.inlineUrl));
		if (args.loop) so.addVariable('loop', args.loop);
		if (args.transitionSpeed) so.addVariable('transitionSpeed', args.transitionSpeed);
		if (args.panzoom) so.addVariable('panzoom', args.panzoom);
		if (args.jsObject) so.addVariable('jsObject', args.jsObject);

		if (so.write('flash-content')) {
			addClass(content, 'flash');
		} else {
			addClass(content, 'noflash');
			var obj = $('flash-content').getElementsByTagName('object')[0];
			if (obj) {
				var div = obj.getElementsByTagName('div')[0];
				if (div) {
					obj.parentNode.replaceChild(div, obj);
				} else {
					obj.parentNode.innerHTML = obj.innerHTML;
				}
			}
		}
	}

	var setText = 'innerText' in document.documentElement
		? function(oElement, sText) { oElement.innerText = sText; }
		: function(oElement, sText) { oElement.textContent = sText; };

	function customize() {
		addClass(content, 'customize');
	}

	this.updateTitle = function(sTitle) {
		setText(oTitle, sTitle);
	};

	this.updateCount = function(nCount, nTotal) {
		setText(oPager, nCount + '/' + nTotal);
	};

	load();

	addEvent(opts, 'click', function(e) {
		for (var el = e.srcElement || e.target; el; el = el.parentNode) {
			if (el.tagName == 'LABEL') {
				var li = el.parentNode;
				if (hasClass(li, 'collapsed')) {
					delClass(li, 'collapsed');
					delCookie('ss-collapse-' + li.id);
					var input = li.getElementsByTagName('input')[0];
					var txt = input.value;
					input.value = '';
					input.value = txt;
				} else {
					addClass(li, 'collapsed');
					setCookie('ss-collapse-' + li.id, 1);
				}
				return;
			} else if (el.tagName == 'A' && el.id == 'customize') {
				customize();
				haltEvent(e);
				return;
			}
		}
	});

	for (var inputs = opts.getElementsByTagName('input'), i = inputs.length; i--;) {
		addEvent(inputs[i], 'mouseup', function(e) {
			var el = e.srcElement || e.target;
			addClass(el, 'selected');
			el.select();
		});
		addEvent(inputs[i], 'blur', function(e) {
			delClass(e.srcElement || e.target, 'selected');
		});
	}

	/*@cc_on
	if (@_jscript && !window.XMLHttpRequest) {
		function onHover(e) {
			for (var el = e.srcElement; el && el.tagName != 'LABEL' && el.tagName != 'INPUT'; el = el.parentNode);
			if (el) setClass(el, 'hover', e.type == 'mouseover');
		}
		addEvent(opts, 'mouseover', onHover);
		addEvent(opts, 'mouseout', onHover);
	}
	@*/
}
