(function( $ ){

    var mainDiv;
    var container;
    var itemWidth;
    var itemHeight;
    var mainDivWidth;
    var itemsCount;
    var containerWidth;

    var settings = {
        'direction'         : 'right',
        'effectDelay'   :   '1000',
        'delay'                   : '1000',
        'autoslide'         : true,
        'toShow'                  : '3',
        'toMove'                  : '1',
         'moving'                : false
    };

    var methods = {
        init : function( options ) {

            mainDiv.css('width',mainDivWidth);
            mainDiv.css('height',itemHeight);
            mainDiv.css('overflow','hidden');
            mainDiv.css('position','relative');
            container.css('width',containerWidth);
            container.css('position','absolute');
            container.css('right','0');
            container.css('top','0');
        },

        nextItem : function() {
            var $this = $(this);
            var data = $this.data('aiSlider');

            maxPx = ((itemsCount - data.toShow) * itemWidth) * -1;
            moveToPx = parseFloat(container.css('right')) - (itemWidth * data.toMove);

            if (moveToPx >= maxPx) {
                if ( data.moving == false) {

                    data.moving = true;

                    container.animate({
                        right: moveToPx + 'px'
                    }, {
                        duration: 1000,
                        complete: function() {
                            data.moving = false;
                        }
                    });
                }
            }
        },
        prevItem : function() {
            var $this = $(this);
            var data = $this.data('aiSlider');
            moveToPx = parseFloat(container.css('right')) + (itemWidth * data.toMove);
            if (moveToPx <= 0) {
                if ( data.moving == false) {
                    data.moving = true;

                
                    container.animate({
                        right: moveToPx + 'px'
                    }, {
                        duration: 1000,
                        complete: function() {
                            data.moving = false;
                        }
                    });
                }
            }
        }
    };


    $.fn.aiSlider = function( method,options ) {
        return this.each(function() {
            if ( options ) {
                $.extend( settings, options );
            }
            mainDiv = $(this);
            container = $(this).find('.slideCont');

            itemWidth = parseFloat(container.find('.item').css('width')) + parseFloat(container.find('.item').css('margin-left')) + parseFloat(container.find('.item').css('margin-right')) + parseFloat(container.find('.item').css('padding-left')) + parseFloat(container.find('.item').css('padding-right')) + parseFloat(container.find('.item').css('border-right-width')) + parseFloat(container.find('.item').css('border-left-width'));
            itemHeight = parseFloat(container.find('.item').css('height')) + parseFloat(container.find('.item').css('margin-top')) + parseFloat(container.find('.item').css('margin-bottom')) + parseFloat(container.find('.item').css('padding-top')) + parseFloat(container.find('.item').css('padding-bottom')) + parseFloat(container.find('.item').css('border-top-width')) + parseFloat(container.find('.item').css('border-bottom-width'));
            mainDivWidth = parseFloat(settings['toShow']) * parseFloat(itemWidth);
            itemsCount = parseFloat(container.find('.item').length);
            containerWidth = parseFloat(itemWidth * itemsCount);
            var $this = $(this);
            var data = $this.data('aiSlider');
            if (!data) {
                $(this).data('aiSlider' , settings);
            }

            if ( methods[method] ) {
                return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
            } else if ( typeof method === 'object' || ! method ) {
                return methods.init.apply( this, settings );
            } else {
                $.error( 'Method ' +  method + ' does not exist on jQuery.aiSlider' );
            }    
        });

    };
})( jQuery );

