/**
 * ImageSlider plugin.
 * Copyright (C) Tiki Web Inteligente 2010
 */
jQuery.fn.imageslider = (function(options) {

    var $ = jQuery;

    var options = $.extend(jQuery.fn.imageslider.defaults, options);

    return this.each(function() {

        var $slider = $(this);

        // gera os items da paginação
        if (options.enablePagination && options.paginationItemsSelector && options.pageSize > 0) {
            var totalItems = $slider.find('li').length
            var maxPage = options.pageSize >= totalItems
                ? 1
                : Math.ceil(totalItems / options.pageSize);

            if (maxPage > 1) {
                var html = '';
                for (var i = 0; i < maxPage; i++) {
                    html += '<li></li>';
                }
                $(options.paginationItemsSelector).parent().html(html);
                $(options.paginationItemsSelector).eq(0).addClass('current');
            }
        }
        
        if ($slider.find('li').length > 1) {
            itemWidth = $slider.find('li:nth-child(2)').outerWidth(true);
            itemsTotalWidth = itemWidth * $slider.find('li').length;
            itemMargin = $slider.find('li:nth-child(2)').css('marginLeft').replace(/px/, '');
            
            $slider.find('ul').css({ 'width': (itemsTotalWidth - itemMargin)+'px' });
            
            $slider.find('.slide_previous').click(function(){
                var target = {
                    top: 0,
                    left: '-=' + (itemWidth * options.step)
                }
                var settings = {
                    duration: options.speed,
                    easing: options.easing,
                    onAfter: function() {
                        var currentItem = Math.abs(parseInt($slider.find('li:nth(0)').position().left) / parseInt($slider.find('li:nth(1)').outerWidth(true)));
                        options.afterEachSlide.call($slider, currentItem);
                    }
                }
                $slider.find('.slide_crop').scrollTo(target, settings);
            });
            
            $slider.find('.slide_next').click(function(){
                var target = {
                    top: 0,
                    left: '+=' + (itemWidth * options.step)
                }
                var settings = {
                    duration: options.speed,
                    easing: options.easing,
                    onAfter: function() {
                        var currentItem = Math.abs(parseInt($slider.find('li:nth(0)').position().left) / parseInt($slider.find('li:nth(1)').outerWidth(true)));
                        options.afterEachSlide.call($slider, currentItem);
                    }
                }
                $slider.find('.slide_crop').scrollTo(target, settings);
            });
        }
    });
});

jQuery.fn.imageslider.defaults = {
    step: 1,
    speed: 1000,
    easing: 'easeInOutExpo',
    enablePagination: true,
    pageSize: 4,
    paginationItemsSelector: '.navegacao_esteira li',
    afterEachSlide: function(currentItem) {
        var $slider = $(this),
            enablePagination = jQuery.fn.imageslider.defaults.enablePagination,
            paginationItemsSelector = jQuery.fn.imageslider.defaults.paginationItemsSelector,
            pageSize = jQuery.fn.imageslider.defaults.pageSize,
            lastPossibleItem = $slider.find('li').length - pageSize;

        if (enablePagination && paginationItemsSelector && pageSize > 0) {
            $(paginationItemsSelector).removeClass('current');

            if (currentItem == lastPossibleItem) {
                $(paginationItemsSelector).last().addClass('current');
            } else {
                var currentPage = Math.ceil((currentItem + 1) / pageSize);
                $(paginationItemsSelector).eq(currentPage - 1).addClass('current');
            }
        }
    }
};

