﻿
(function ($) {
    var defaults = {
        width: 200,
        height: 350,
        speed: 250,
        timer: 5,
        top: 0,
        left: 0
    };

    var iRotator = function (e, o) {
        var defaults = o;

        var me = {
            //local properties
            prop: {},

            //local methods
            init: function () {
                //ensure fade speed is less than timer
                var t = defaults.timer * 1000;

                if (defaults.speed >= t) {
                    defaults.speed = Math.floor(t / 2);
                }

                //set first slide
                me.prop.slides.eq(0).css({ 'top': defaults.top, 'left': defaults.left, 'opacity': 0 }).fadeTo(defaults.speed, 1);

                if (me.prop.slides.length > 1) {
                    me.prop.topSlide = 0;
                    me.prop.running = true;
                    me.prop.clock = setInterval(me.rotate, t);
                }
            },

            //rotate slides
            rotate: function (e) {
                var next = (me.prop.topSlide === me.prop.slides.length - 1) ? 0 : me.prop.topSlide + 1;
                me.prop.slides
                .eq(next)
                .css({
                    'left': defaults.left,
                    'top': defaults.top,
                    'opacity': 1,
                    'z-index': 10
                });

                me.prop.slides
                .eq(me.prop.topSlide)
                .css({ 'z-index': 20 })
                .fadeTo(defaults.speed, 0);

                me.prop.topSlide = next;

            }
        };

        me.prop.container = e;
        me.prop.slides = me.prop.container.children('img');
        me.prop.wrapper = me.prop.slides.wrapAll('<div id="iRotatorWrapper">').parent();

        me.prop.wrapper.css({
            'width': defaults.width,
            'height': defaults.height,
            'overflow': 'hidden',
            'position': 'relative'
        });

        me.prop.slides.css({
            'position': 'absolute',
            'top': 0,
            'left': (defaults.width + 10),
            'display': 'block'
        });

        if (me.prop.slides) {
            me.init();
        }

        return e;
    };

    $.fn.iRotator = function (options) {
        var op = $.extend(defaults, options);
        return this.each(function () {
            new iRotator($(this), op);
        });

    };

})(jQuery);
