window.LB || (LB={});
LB.slideshow = function(selector, showFor, fadeLength, fadeSteps){
	var doit = function(container, showFor, fadeLength, fadeSteps){
		showFor = showFor ? showFor * 1000 : 5000;
		fadeLength = fadeLength ? fadeLength * 1000 : 1000;
		fadeSteps || (fadeSteps = 10);
		var cur = 0, nex, i, nodes = [], doFade, setOp, doShow, step = 1;
		for (i = 0; i < container.childNodes.length; i++) {
			if (container.childNodes[i].nodeType == 1) {
				nodes[nodes.length] = container.childNodes[i];
				container.childNodes[i].style.visibility = 'hidden';
				container.childNodes[i].style.zoom = 1;
			}
		}
		nodes[cur] && (nodes[cur].style.visibility = 'visible'); // make first child visible regardless
		if (nodes.length < 2) 
			return; // bail if one or zero children
		setOp = function(el, op){
			el.style.opacity = op / 100;
			el.style.filter = 'alpha(opacity=' + Math.round(op) + ')';
			op && (el.style.visibility = 'visible');
		};
		doFade = function(){
			setOp(nodes[nex], 100 / fadeSteps * step);
			if (step++ < fadeSteps) 
				setTimeout(doFade, fadeLength / fadeSteps);
			else {
				step = 1;
				setOp(nodes[cur], 0);
				cur = nex;
				setTimeout(doShow, showFor);
			}
		};
		doShow = function(){
			nex = (cur + 1) % nodes.length;
			nodes[nex].style.zIndex = 100;
			nodes[cur].style.zIndex = 10;
			doFade();
		};
		setTimeout(doShow, showFor);
	}
	
	var selType = selector.charAt(0);
	selector = selector.substr(1);
	if('.'==selType) {
		var containers = [];
		if(document.getElementsByClassName) containers = document.getElementsByClassName(selector);
		else {
			var all = document.getElementsByTagName('*');
			for(var i=all.length; --i>=0;)
				if(all[i].className && all[i].className.indexOf(selector)!=-1)
					containers.push(all[i]);
		}
		for(var i=containers.length; --i>=0;) doit(containers[i],showFor,fadeLength,fadeSteps);
	} else
	if('#'==selType) {
		var container = document.getElementById(selector);
		container && doit(container,showFor,fadeLength,fadeSteps);
	} else alert('LB.slideshow says: bad selector type.')
};
