/**
 * http://snipplr.com/view/8884/prototype-and-scriptaculous-slideshow/
 *
 */

function mran(ma,mi) {
    return(Math.round(Math.random()*(ma-mi))+mi);
}

var Slideshow = Class.create({
    initialize: function(delay, totalElmt, elmtName) {
	    this.name = elmtName;
	    this.delay = delay;
	    this.totalElmt = totalElmt;
	    this.paused = 0;
	    this.arrSlideElmt = [totalElmt];
	    this.arrDelayElmt = [totalElmt];
	    this.curElmtNum = 0; //mran(totalElmt, 1)-1; //randomize first element
	    for (var i = 0; i < totalElmt; i++) {
	        this.arrSlideElmt[i] = $(elmtName + i);
	        this.arrDelayElmt[i] = ($('DELAY-' + elmtName + i).getValue() >= 4) ? $('DELAY-' + elmtName + i).getValue() : this.delay;
	    }
    },

    start: function() {
        //show first element without effect
        this.arrSlideElmt[this.curElmtNum].setStyle({ display: 'block' });
        this.executor = new PeriodicalExecuter(function() {
            this.next(); //start slidehow
        }.bind(this), this.arrDelayElmt[0]);
    },

    next: function() {
        if (!this.paused) {
            this.update();
        }
    },

    update: function() {
    	try {
        var parent = $(this.name);
        if (parent != null) {
        new Effect.Fade(this.arrSlideElmt[this.curElmtNum],{duration: 2, afterFinish:function(){
            this.arrSlideElmt[this.curElmtNum].addClassName('news-banner-hidden');
            this.checkSlide();
            this.executor.stop();
        	this.executor.frequency = this.arrDelayElmt[this.curElmtNum];
        	this.executor.registerCallback();
            this.arrSlideElmt[this.curElmtNum].removeClassName('news-banner-hidden');
            parent.setStyle({height: this.arrSlideElmt[this.curElmtNum].getHeight() + 'px'});
            parent.setStyle({width: this.arrSlideElmt[this.curElmtNum].getWidth() + 'px'});
            new Effect.Appear(this.arrSlideElmt[this.curElmtNum],{duration: 2});
        }.bind(this)});
        }
        } catch(e) {}
    },

    checkSlide: function() {
       (this.curElmtNum == this.totalElmt-1) ? this.curElmtNum = 0 : this.curElmtNum++;
    }
});

var SlideBanners = function(name) {
    totalFeatures = $(name).childElements().size();
    if (totalFeatures > 1 ) {
        var slideshow = new Slideshow(8, totalFeatures, name);
        slideshow.start();
    }
};
