var pauseValue;
(function ($) {
    $.fn.Slider = function (options) {
        var defaults = {
            prevId: 'prevBtn',
            prevText: 'Previous',
            nextId: 'nextBtn',
            nextText: 'Next',
            controlsShow: true,
            controlsFade: true,
            speed: 800,
            auto: true,
            pause: pauseValue,
            continuous: true
        };

        var options = $.extend(defaults, options);

        this.each(function () {
            var animationStarted = false;
            var obj = $(this);
            var s = $("li", obj).length;
            var w = $("li", obj).width();
            var h = $("li", obj).height();
            obj.width(w);
            obj.height(h);
            obj.css("overflow", "hidden");
            var t = Math.ceil(s / 2);

            if (s > 2) {
                for (var i = 0; i < t; i++) {
                    $("li:first", obj).wrap("<ul class='wrapping'>");
                    var litag = $("ul.wrapping", obj).html();
                    $("ul.wrapping", obj).remove();
                    $('ul', obj).append(litag);
                };
                $("ul", obj).css('margin-left', (t - 1) * w * -1 + "px");
            }

            if (s == 2) {
                s = 4;
                t = 3;
                var litag = $("ul", obj).html();
                $('ul', obj).append(litag);
            }

            var ts = s - 1;
            var p = ((t - 1) * w * -1);

            $("ul", obj).css('width', s * w);
            $("li", obj).css('float', 'left');

            if (options.controlsShow) {
                var html = ' <span class="' + options.prevId + '"><a href=\"javascript:void(0);\">' + options.prevText + '</a></span>';
                html += ' <span class="' + options.nextId + '"><a href=\"javascript:void(0);\">' + options.nextText + '</a></span>';
                $(obj).after(html);
            };

            $("a", "." + options.nextId).click(function () {
                animate("next", true);
            });
            $("a", "." + options.prevId).click(function () {
                animate("prev", true);
            });

            function animate(dir, clicked) {
                if (s != 1 && !animationStarted) {
                    animationStarted = true;
                    switch (dir) {
                        case "next":
                            ot = t - 1;
                            $("li:first", obj).wrap("<ul class='wrapping'>");
                            var litag = $("ul.wrapping", obj).html();
                            $("ul.wrapping", obj).remove();
                            $('ul', obj).append(litag);
                            break;
                        case "prev":
                            var ot = t + 1;
                            $("li:last", obj).wrap("<ul class='wrapping'>");
                            var litag = $("ul.wrapping", obj).html();
                            $("ul.wrapping", obj).remove();
                            $("ul li:first", obj).before(litag);
                            break;
                        default:
                            break;
                    };

                    $("ul", obj).css('margin-left', (ot - 1) * w * -1 + "px");
                    var diff = Math.abs(ot - t);
                    var speed = diff * options.speed;

                    $("ul", obj).animate(
						{ marginLeft: p },
						speed, function () {
						    animationStarted = false;
						});

                    if (clicked) clearTimeout(timeout);
                    if (options.auto && dir == "next" && !clicked) {
                        timeout = setTimeout(function () {
                            animate("next", false);
                        }, diff * options.speed + options.pause);
                    };
                }
            };

            var timeout;
            if (options.auto) {
                ;
                timeout = setTimeout(function () {
                    animate("next", false);
                }, options.pause);
            };

        });
    };
})(jQuery);




