function getFader(listId, params){
	var	aFader = function(){
		var slides = null;
		var counter = 0;
		var paused = false;
		var inited = false;
		var settings = params || {};
		var slideClassName = settings.slideClassName || "slide";
		var fadeBoxId = settings.fadeBoxId || "fadeBox";
		var fadeBoxIdCover = fadeBoxId + "Cover";
		var fadeTo = settings.fadeTo || "#FFF";
		var durationIn = settings.duration || .5 ;
		var pausedBGColor = settings.pausedBGColor || fadeTo;
		
		function getNext(){
			counter++;
			if(counter >= slides.length){
				counter = 0;
			}
			return counter;
		}
		
		function getPrevious(){
			counter--;
			if(counter < 0){
				counter = slides.length - 1;
			}
			return counter;
		}
		
		return{
			paused : function(doPause) { paused = doPause; },			
			autoSlide : function(){
				if(!inited){
					inited = true;
					slides = jQuery("#"+listId).find("."+slideClassName);
					slides[0].style.display = "block";
					var coverElem = document.createElement("DIV");
					coverElem.style.position = "absolute";
					coverElem.style.display = "none";
					coverElem.style.backgroundColor = fadeTo;
					coverElem.id = fadeBoxIdCover;
					var coords = jQuery("#"+fadeBoxId).position();
					coverElem.style.left = coords.left + "px";
					coverElem.style.top = coords.top + "px";
					coverElem.style.width = jQuery("#"+fadeBoxId).width() + "px";
					coverElem.style.height = jQuery("#"+fadeBoxId).height() + "px";
					document.getElementsByTagName("BODY")[0].appendChild(coverElem);
				}
				return (function() {
					if(!paused){
						jQuery("#"+fadeBoxIdCover).fadeIn(durationIn, function(){
							jQuery(slides[counter]).hide();
							jQuery(slides[getNext()]).show();
							jQuery("#"+fadeBoxIdCover).fadeOut(durationIn);
						});
					}
				});
			},
			previousSlide : function(){
				paused = true;
				jQuery("#"+fadeBoxId).hide();
				jQuery(slides[counter]).hide();
				slides[getPrevious()].show();
				jQuery("#"+fadeBoxId).show();
			},			
			nextSlide : function(){
				paused = true;
				jQuery("#"+fadeBoxId).hide();
				jQuery(slides[counter]).hide();
				slides[getNext()].show();
				jQuery("#"+fadeBoxId).show();
			},			
			setSlide : function(whichSlide){
				paused = true;
				jQuery("#"+fadeBoxId).hide();
				jQuery(slides[counter]).hide();
				counter = whichSlide;
				jQuery(slides[counter]).show();
				jQuery("#"+fadeBoxId).show();
			},				
			pause : function(pause){
				paused = pause;
					if(paused){
						jQuery("#"+fadeBoxId).fadeTo(0, 0.5);
					}else{
						jQuery("#"+fadeBoxId).fadeTo(0,1.0);
					}
			}
		};
	}();
	return aFader;
}

