function Fader(elementClass, options) {
    //Create the shell
    var element = $("." + elementClass).each(function(i) {
        var obj = this;
        var slideShell;
        var slideContainer;
        var largeImages;
	var currentIndex = 0;	
	var timer = null;



        this.initialize = function() {
            slideShell = document.createElement("div");
            slideContainer = document.createElement("div");
            largeImages = new Array();
	    timer = setInterval(function(){obj.transition();},options.interval);
        }

        this.parseLinks = function() {
            $("a", obj).each(function(i) {
                var inner = this

                var largeImage = document.createElement("img");
//                $(largeImage).attr("src", $(inner).attr("href"));
                     preload_img( $(inner).attr("href"),null,function(e) {
				  e.contl.attr("src", e.src);
			  },{contl:$(largeImage),src: $(inner).attr("href")});

		$(largeImage).css({
			position:"absolute",
			top:0,
			left:0
		});
                largeImages.push(largeImage);
            });
        }

        this.layout = function() {
            $(slideShell).css({
                overflow: "hidden",
                width: options.width,
                height: options.height,
                "background-color": "#000000",
		"position":"relative"
            });


            $(slideContainer).css({
                position: "relative"
            });

        }

        this.createControlHeirarchy = function() {
            slideShell.appendChild(slideContainer);
            obj.appendChild(slideShell);
		for(var i = 0; i < largeImages.length;i++){
			if(i > 0)
				$(largeImages[i]).hide();
            		slideContainer.appendChild(largeImages[i]);
		}
		
        }

	this.transition = function(){
		var oldIndex = currentIndex;
		var newIndex;

		if(oldIndex == largeImages.length - 1)
			currentIndex = 0;
		else
			currentIndex++;
	
		$(largeImages[oldIndex]).fadeOut(options.fadeInterval);
		$(largeImages[currentIndex]).fadeIn(options.fadeInterval);
	}

        this.initialize();
        this.parseLinks();
        this.createControlHeirarchy();
        this.layout();
    });
}