/* Accordion for form page
----------------------------------------------------------------------------*/
function init_accordion() {
    var accordion = new Accordion("#accordion_frm dt", "#accordion_frm dd", {
        fixedHeight  : 379,
        opacity      : false,
        onActive: function(toggler, element){
            toggler.addClass("current");
        },

        onBackground: function(toggler, element){
            toggler.removeClass("current");
        }
    }, $("accordion_frm"));
};

/* Rotators
--------------------------------------------------------------------------- */
var Rotators = {
    fadeOut : function(el) {
        el.effect("opacity", {duration: 750}).start(1,0);
        el.setStyle("display", "none");
    },

    fadeIn : function(el) {
        el.setStyle("display", "block");
        el.effect("opacity", {duration: 1050}).start(0,1);
    },
    
    init : function() {
        $$(".has-ctrls").each(Rotators.initCtrls);
        $$(".rotator").each(Rotators.initLoop);
    },
    
    initCtrls : function(div) {
        // rotation items
        var items = div.getElementsBySelector(".rotation-items li");
        var count = items.length;
        
        // add ctrl cont
        var ctrlCont = new Element("ul", {"class": "ctrl-cont"}).injectTop(div);
        
        // insert ctrls
        items.each(function(li, i){
            var li = new Element("li").injectInside(ctrlCont);
            li.addEvent("click", function(){
                if(this.hasClass("on")) return;
                // clear rotation
                Rotators.clearLoop(div);
                // select ctrl
                Rotators.ctrlsSelect(div, i);
                // rotate item
                Rotators.rotate(div, i);
            });
            if(i == 0) li.addClass("on");
        });
    },

    initLoop : function(div) {
        var pace = (div.hasClass("has-ctrls") ? 10000 : 5000);
        
        div.periodical = Rotators.loop.periodical(pace, div);
    },

    clearLoop : function(div) {
        $clear(div.periodical);
    },
    
    loop : function() {
        var j;
        var div = this;
        var lis = div.getElementsBySelector(".rotation-items li");
        
        lis.each(function(li, i) {
            if(li.getStyle("display") == "none") return;
            j = [++i == lis.length ? 0 : i];
            if(div.hasClass("has-ctrls") && j == 0) Rotators.clearLoop(div);
        });
        
        Rotators.rotate(div, j);
    },

    ctrlsSelect : function(div, i) {
        // collect ctrl btns
        var ctrls = $$("#" + div.id + " .ctrl-cont li");
        
        // reset ctrl btns
        ctrls.each(function(ctrl){
            ctrl.removeClass("on"); 
        });
        
        // turn selected ctrl btn on
        ctrls[i].addClass("on");
    },

    rotate : function(div, i) {
        var hideMe;
        var items = div.getElementsBySelector(".rotation-items li");
        
        items.each(function(li) {
            if(li.getStyle("display") == "none") return;
            hideMe = li;
        });
        
        Rotators.fadeOut(hideMe); 
        Rotators.fadeIn(items[i]);
        if(div.hasClass("has-ctrls")) Rotators.ctrlsSelect(div, i);
    }
};

window.addEvent("domready", function() {
    init_accordion();
    Rotators.init();
});