﻿
(function ($) {
    var defaults = {
        width: 200,
        height: 350,
        speed: 250,
        timer: 5,
        top: 0,
        left: 0
    };

    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;

        }
    };

    $.fn.iRotator = function (op) {
        $.extend(defaults, op);

        me.prop.container = this;
        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 this;
    };

})(jQuery);
