function SlideShow(elementClass, options,id) {
    //Create the shell
    var element = $("." + elementClass).each(function(i) {
        var obj = this;
	  var mainid=id;
        var slideShell;
        var slideContainer;
        var controlBar;
        var largeImages;
        var thumbs;
        /*
        for (var i = 0; i < thumbs.length; i++) {

		$('<img />')
		    .attr('src', largeImages[i])
		    .load(function(){
		        $(slideContainer).append($(this) );
		}).css({	
			position: "absolute",
			left: 800 * i
		 }).click(function(e) {
        $(slideContainer).animate({
        "left": parseFloat($(slideContainer).offset().left) - 800
        }, "slow");
        });
        }
        */
        this.initialize = function() {
            slideShell = document.createElement("div");
            slideContainer = document.createElement("div");
            controlBar = document.createElement("div");
            largeImages = new Array();
            thumbs = new Array();
        }

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

                var thumb = document.createElement("img");
                var thumbContainer = document.createElement("div");

                $(thumbContainer).css({
                    overflow: "hidden",
                    width: options.thumbWidth,
                    height: options.thumbHeight
                });

                $(thumb).attr("src", $(inner).attr("rel"));

                thumbContainer.appendChild(thumb);

                thumbs.push(thumbContainer);
                largeImages.push($(inner).attr("href"));
            });
        }

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

            $(controlBar).css({
                overflow: "hidden",
                width: options.width,
                height: options.controlBarHeight,
                position: "relative",
                top: - (options.controlBarHeight + options.controlBarBottomOffset),
		"z-index":999
            });


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

        }

        this.createControlHeirarchy = function() {
            slideShell.appendChild(slideContainer);
            obj.appendChild(slideShell);
            obj.appendChild(controlBar);

            for (var i = 0; i < thumbs.length; i++) {

                $(thumbs[i]).css({
                    "position": "absolute",
                    "right": (i * (options.thumbWidth + options.thumbSpacing)) + options.thumbSpacing,
                    "top": (options.controlBarHeight - options.thumbHeight) / 2,
                    "z-index":1000
                });

                $(thumbs[i]).hover(function() {
                    $(this).animate({ "top": ((options.controlBarHeight - options.thumbHeight) / 2) - 10 }, "fast", "swing");
                }, function() {
                    $(this).animate({ "top": (options.controlBarHeight - options.thumbHeight) / 2 }, "fast", "swing");
                }).click(function(e) {
                    var obj = this;
			  var imgobj=$("#img_gal_"+mainid+$(obj).data("index"));
                    if (imgobj.attr("src")=="") imgobj.attr("src",imgobj.attr("rel"));
                    if (options.direction == "horizontal") {
                        $(slideContainer).animate({
                            left: $(obj).data("index") * options.width * -1
                        }, "slow", "swing");
                    }
                    else {
                        $(slideContainer).animate({
                            top: $(obj).data("index") * options.height * -1
                        }, "slow", "swing");
                    }
                }).data("index", i);

                controlBar.appendChild(thumbs[i]);

            }

            for (var i = 0; i < largeImages.length; i++) {
		   var  c;



                if (options.direction == "horizontal") {
                    c={
                        position: "absolute",
                        left: i * options.width
                    };
                } else {
                    c={
                        position: "absolute",
                        top: i * options.height
                    };
                }
			   var cont1=$('<div />').css(c);
			   $(slideContainer).append(cont1);
		//       var imgl= $('<img />')
		//	    .attr('src', largeImages[i]);
			   
		
                     preload_img(largeImages[i],null,function(e) {
				  var imgl= $('<img />').attr('src', e.src);
				  e.contl.append(imgl);
			  },{contl:cont1,src:largeImages[i]});
//			   imgl.bind("load",{ctl:cont1},function(e){
//		        e.data.ctl.append($(this) );
//		        });

            }
        }
	  img_timer=setTimeout('loadimg()',100);

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