/*
 * Ротация дочерних div'ов элемента
 * <div class="rotator" fade="1000" delay="3000">...</div>
 * где fade - общее время затухания/появления дочернего элемента, delay - интервал ротации
 * Date: 14.04.2009
 * @author politov@gmail.com
 */
$(document).ready(function(){
    $('div.rotator').each(function(){
        $(this).children('div:first').show();
        if ($(this).children('div').length <= 1) { return; }
        $(this).keypress(); // initialize params delay,fade,effect (yes this is ugly)
        var div = $(this).get(0);
        var options = {
            delay: div.delay,
            effect: div.effect.toLowerCase().replace(/^\s+|\s+$/g,''),
            fade: div.fade,
            random: div.random.toLowerCase()
        };
        options.delay = (options.delay < 500) ? 2000 : options.delay;
        options.fade = Math.round(options.fade/2);
        $(this).everyTime(options.delay, 'rotator', function(i){
            var div2, div1 = $(this).children('div:visible');
            if (options.random == 'true') {
                var i2, i1 = $(this).children('div').index(div1);
                var n = $(this).children('div').size();
                do { i2 = Math.round(Math.random() * (n-1)); } while (i2 == i1);
                div2 = $(this).children('div:eq('+i2+')');
            } else {
                div2 = div1.next('div');
                if (div2.size() == 0) {
                    div2 = $(this).children('div:first');
                }
            }
            if (options.effect!='' && (options.effect in $.effects)) {
                div1.effect(options.effect, {mode:'hide'}, options.fade);
                div2.oneTime(options.fade, function(){
                    $(this).effect(options.effect, {mode:'show'}, options.fade);
                });
            } else {
                div1.fadeOut(options.fade);
                div2.oneTime(options.fade, function(){
                    $(this).fadeIn(options.fade);
                });
            }
        });
    });
});
