﻿AnimatedRotators = function(){
    var rotators;
    
    return {
        init : function(){
            rotators = document.getElementsByClassName("AnimatedRotator");
            if(rotators && rotators.length > 0){
                for(var r=0;r<rotators.length;r++){
                    var rotator = new AnimatedRotator(rotators[r]);
                    rotator.start();
                }
            }
        }
    }
}();

AnimatedRotator = function(el){
    var self = this;
    var el = el;
    el.getElementsByClassName = getElementsByClassName;
    var z = 101;

    this.rotatingBlocks = [];
    this.rotatingBlocks.current = null;

    this.interval = 4000;
    var seconds = 0 + el.getAttribute("interval");
    if(seconds != 0) this.interval = seconds * 1000;

    var blocks = el.getElementsByClassName("AnimatedRotatorBlock");
    if(blocks && blocks.length){
        this.start = function(){
            if(this.rotatingBlocks && this.rotatingBlocks.length > 0){
                //el.style.display = "block";
                //this.rotatingBlocks[0].style.display = "block";
                this.rotatingBlocks.current = 0;
                window.setInterval(function(){self.rotate();}, this.interval);
            }
        }
        this.rotate = function(){
            var current = -1;
            if(this.rotatingBlocks.current != null){
                current = this.rotatingBlocks.current;
            }
            var next = current + 1;
            if(next >= this.rotatingBlocks.length) next = 0;
            
            var c = this.rotatingBlocks[current];
            c.style.zIndex = z;

            var n = this.rotatingBlocks[next];
            n.currentOpacity = 0;
            n.style.zIndex = z + 1;
         
			n.timer = window.setInterval(function(){self.fade(c, n, next);}, 100);
        }

	    this.fade = function (c, n, next) {
	        var interval = 10;

	        if(n.currentOpacity < 100)
	        {
		        var newOpacity = n.currentOpacity + interval;
		        n.style.opacity = newOpacity/100;
		        n.style.filter = "alpha(opacity=" + newOpacity + ")";
		        n.currentOpacity = newOpacity;
	        }
	        else
	        {
	            window.clearInterval(n.timer);
	            n.timer = null;
	            c.style.opacity = 0;
	            c.style.filter = "alpha(opacity=" + 0 + ")";
	            c.currentOpacity = 0;
	            this.rotatingBlocks.current = next;
		        return;
	        }
        }

        for(var i=0;i<blocks.length;i++){
            var block = blocks[i];
            this.rotatingBlocks[this.rotatingBlocks.length] = block;
            if(i>0){
		        block.style.opacity = 0;
		        block.style.filter = "alpha(opacity=" + 0 + ")";
            }
        }
    }
}

AnimatedRotators.init();