/* 
* Name : iSlider
* Version : 1.0
* Author  : pivanov.com
* Author email: me@pivanov.com
*/

(function ($) {
    $.fn.iSlider = function (options) {

        var options = $.extend({}, $.fn.iSlider.defaults, options),
			slideElement = $(this),
			time = options.time,
			auto = options.auto,
			slideTime = options.slideTime,
			sliderButton = $(options.sliderButton),
			itemWidth = slideElement.children().outerWidth(),
			moveValue = itemWidth * (-1);

        slideElement.css({ 'width': slideElement.children().size() * itemWidth });
        slideElement.children(':first').before(slideElement.children(':last'));
        slideElement.css({ 'left': moveValue });

        //Buttons
        sliderButton.click(function () {

            switch ($(this).attr('rel')) {
                case 'prev':
                    var left_move = parseInt(slideElement.css('left')) + itemWidth;

					slideElement.not(':animated').animate({ 'left': left_move }, slideTime, function () {
						slideElement.children(':first').before(slideElement.children(':last'));
						slideElement.css({ 'left': moveValue });
					});

				break;
                case 'next':
                    var left_move = parseInt(slideElement.css('left')) - itemWidth;

					slideElement.not(':animated').animate({ 'left': left_move }, slideTime, function () {
						slideElement.children(':last').after(slideElement.children(':first'));
						slideElement.css({ 'left': moveValue });
					});

				break;
            }

            pause($('.slider'));
            return false;
        });

        /* functions */

        if (auto == true) {
            var timer = setInterval(function () {
                autoSlide();
            }, time);

            //Call functions
            pause($('.slider'));
        }

        function autoSlide() {
            sliderButton.filter('.next').click();
        }

        function pause(element) {
            element.mouseenter(function () {
                clearInterval(timer);
            }).mouseleave(function () {
                clearInterval(timer);
                timer = setInterval(function () {
                    autoSlide();
                }, time);
            });
        }
    };

    $.fn.iSlider.defaults = {
        sliderButton: '.iSlider-button',
        time: 2000,
        slideTime: 1000,
		auto: true
    };
})(jQuery);
