// Hero Rotator v0.1

(function($j) {

    // pass in path to images and array of images (params are optional)
    $j.fn.heroRotator = function(path, images, params) {
        var imgPath = path;
        var imgArray = images;

        // default values if not entered above
        var defaults = {
            delay: 3000,
            duration: 1000,
            easing: 'easeOutQuint',
            origPos: 0
        };
        var params = $j.extend(defaults, params);

        // check for previous rotator containers
        if (rotatorCt) {
            rotatorCt++;
        } else {
            var rotatorCt = 1;
        }

        // set styles
        var containerCSS = {
            'margin': '0',
            'position': 'relative',
            'overflow': 'hidden'
        };

        var origPos = defaults.origPos + 'px';
        var slidesCSS = {
            'position': 'relative',
            'left': origPos
        };

        // create containers

        return this.each(function() {
            $j(this).append('<div id="rotator' + rotatorCt + '"><div class="slides"></div></div>');
            var rotatorContainer = $j('#rotator' + rotatorCt);
            $j(rotatorContainer).css(containerCSS);
            var slides = $j(rotatorContainer).find('div:first');
            $j(slides).css(slidesCSS);
            var width = 0;
            var imgWidth;
            var loadedImgCt = 0;

            // add images to container
            for (var i = 0; i < imgArray.length; i++) {
                if (!imgArray[i][1]) {
                    $j(slides).append('<a></a>');
                } else {
                    $j(slides).append('<a name="' + imgArray[i][2] + '" href="' + imgArray[i][1] + '"></a>');
                }
                var img = $j('<img/>').load(function() {
                    imgWidth = $j(this).attr('width');
                    $j(this).css('float', 'left');
                    loadedImgCt++;

                    // check if all images are loaded
                    if (loadedImgCt == imgArray.length) {
                        width = (imgWidth * imgArray.length);
                        $j(slides).css('width', width + 'px');
                        // activate animation
                        setInterval(cycle, defaults.delay);
                        return false;
                    }
                }).attr('src', imgPath + imgArray[i][0]);

                $j(slides).children('a:nth-child(' + (i + 1) + ')').append(img);
            }

            // rotator animation
            var currImg = 1;
            var img;
            var cycle = function() {
                $j(slides).animate({ left: '-=' + imgWidth + 'px' }, defaults.duration, defaults.easing,
                        function() {
                            // move viewed slide to back of the line
                            img = $j(slides).children('a:nth-child(' + currImg + ')').remove();
                            img.appendTo($j(slides));
                            $j(slides).css('left', origPos);
                            //alert("I ran!");
                        });
            }
        });
    };

})(jQuery);