﻿$.fn.SlideShow = function(settings) {
    var defaults = { data: [], width: 300, height: 200, timeOut: 3000 };
    settings = $.extend(defaults, settings || {});

    var SlideShowCreate = function(el, settings) {
        var $slide = $('<div class="Slide" style="position:absolute;overflow:hidden;"></div>')
			.width(settings.width)
			.height(settings.height);
        var $slideimage = $('<div class="SlideImage" style="position:absolute;z-index:90;"></div>')
			.width(settings.width)
			.height(settings.height);
        var $slidenum = $('<div class="SlideNum" style="z-index:100;position:absolute;right:0px;bottom:0px;width:100%;text-align:right;padding:4px;"></div>');

        var $timer = null;
        var index = 0;
        var maxindex = settings.data.length;

        $.each(settings.data, function(dataindex, dataitem) {
            $a = $('<a href="' + dataitem.link + '" target="_blank" title="' + dataitem.text + '"></a>')
				.append($('<img src="' + dataitem.image + '" style="margin:0;border:0px;vertical-align:absmiddle;display:block;" />').width(settings.width).height(settings.height))
				.data("_slideshow_dataitem", dataitem);
            $m = $('<a class="num" href="javascript:;" style="display:block;float:right;">' + (dataindex + 1) + '</a>')
                .attr("index", dataindex)
				.data("_slideshow_num", dataindex);

            $slideimage.append($a);
            $slidenum.prepend($m);
        });

        $slidenum.find("a").click(function() {
            $slideimage.stop();
            MoveNext($(this).data("_slideshow_num"));
        });

        $slide.append($slideimage).append($slidenum);

        $(el)
			.append($slide)
			.data("_slideshow_settings", settings);


        var MoveNext = function(toindex) {
            if (toindex != null) index = toindex;
            clearTimeout($timer);
            $slidenum.children().removeClass("current");
            $slidenum.children("a[index=" + index + "]").addClass("current");
            $slideimage.animate({ top: index * settings.height * -1 }, 500, null, function() {
                index++;
                if (index == maxindex) index = 0;
                $timer = setTimeout(MoveNext, settings.timeOut);
            });
        }
        $timer = setTimeout(MoveNext, settings.timeOut);
        MoveNext(0);
    }

    return this.each(function() {
        SlideShowCreate(this, settings);
    });
}