﻿/// <reference path="jquery-1.4.2.min.js" />

(function ($) {

    $.fn.simpleSlider = function (options) {

        var opts = $.extend({}, $.fn.simpleSlider.defaults, options);

        return this.each(function () {

            var position = 1;

            $this = $(this);
            var items = $(opts.menuItems, $this);

            var sliderWrap;
            if (opts.wrapper != '') {
                sliderWrap = $(this).parents(opts.wrapper);
            }
            else {
                sliderWrap = $("html");
            }

            $this.css("width", opts.itemWidth);
            $this.css("overflow", "hidden");

            var wrapper = $("<div />")
            wrapper.css("width", opts.itemWidth * items.length + "px");
            wrapper.css("position", "relative");
            wrapper.appendTo($this);

            items.appendTo(wrapper);

            $($(opts.jumper, sliderWrap).get(0)).addClass("active");

            if (items.length > 1) {
                $(opts.rightButton, sliderWrap).addClass("active");
            }

            // Slider Timer

            if (opts.timer > 0) {
                window.setInterval(function () {
                    if (position < items.length) {
                        wrapper.animate({
                            left: "-=" + (opts.itemWidth)
                        }, 1000, "easeOutExpo");
                        position++;
                        $(opts.jumper, sliderWrap).removeClass("active");
                        $($(opts.jumper, sliderWrap).parent().get(position-1)).children(opts.jumper).addClass("active");
                    }
                    else {
                        wrapper.animate({
                            left: "+=" + (opts.itemWidth * (items.length - 1))
                        }, 1000, "easeOutExpo");
                        position = 1;

                        $(opts.jumper, sliderWrap).removeClass("active");
                        $($(opts.jumper, sliderWrap).parent().get(0)).children(opts.jumper).addClass("active");
                    }
                }, opts.timer * 1000);
            }

            $(opts.leftButton, sliderWrap).click(function () {
                if (position > 1) {
                    wrapper.animate({
                        left: "+=" + (opts.itemWidth)
                    }, 1000, "easeOutExpo");
                    position--;

                    $(opts.jumper, sliderWrap).removeClass("active");
                    $($(opts.jumper, sliderWrap).parent().get(position - opts.jumperPos)).children("a").addClass("active");

                    $(opts.rightButton, sliderWrap).addClass("active");
                    if (position <= 1) {
                        $(this).removeClass("active");
                    }
                }
            });

            $(opts.rightButton, sliderWrap).click(function () {
                if (position < items.length) {
                    wrapper.animate({
                        left: "-=" + (opts.itemWidth)
                    }, 1000, "easeOutExpo");
                    position++;

                    $(opts.jumper, sliderWrap).removeClass("active");
                    $($(opts.jumper, sliderWrap).parent().get(position - opts.jumperPos)).children("a").addClass("active");

                    $(opts.leftButton, sliderWrap).addClass("active");
                    if (position >= items.length) {
                        $(this).removeClass("active");
                    }
                }
            });

            $(opts.jumper, sliderWrap).click(function () {

                $(opts.jumper, sliderWrap).removeClass("active");
                $(this).addClass("active");

                var dif = position - ($(this).parent().index() + opts.jumperPos);

                if (dif != 0) {
                    if (dif < 0) {
                        wrapper.animate({
                            left: "-=" + (opts.itemWidth * dif * -1)
                        }, 1000, "easeOutExpo");
                        position = $(this).parent().index() + opts.jumperPos;

                        HandleButtons(position);
                    }
                    else {
                        wrapper.animate({
                            left: "+=" + (opts.itemWidth * dif)
                        }, 1000, "easeOutExpo");
                        position = $(this).parent().index() + opts.jumperPos;

                        HandleButtons(position);
                    }
                }
            });

            function HandleButtons(position) {
                if (position <= 1) {
                    $(opts.leftButton, sliderWrap).removeClass("active");
                }
                else {
                    $(opts.leftButton, sliderWrap).addClass("active");
                }

                if (position >= items.length) {
                    $(opts.rightButton, sliderWrap).removeClass("active");
                }
                else {
                    $(opts.rightButton, sliderWrap).addClass("active");
                }
            }

            //            markup = $.fn.hilight.format(markup);

        });

    };


    function debug($obj) {
        if (window.console && window.console.log)
            window.console.log($obj);
    };

    //    $.fn.pager.format = function (txt) {
    //        return '<strong>' + txt + '</strong>';
    //    };

    $.fn.simpleSlider.defaults = {
        itemWidth: 100,
        menuItems: '.menuItem',
        leftButton: '.leftButton',
        rightButton: '.rightButton',
        jumper: '.jumper',
        wrapper: '',
        jumperPos: 0,
        timer: 0
    };

})(jQuery);
