var nemRotator = new Class({
    initialize: function(el){
        this.rotator = el;
        this.elements = new Array();
        this.counter=0;
        this.elements = this.rotator.getChildren("div");
        this.delay = this.rotator.getProperty("delay") ? this.rotator.getProperty("delay"):12000;
        
        if(this.rotator.hasClass('nemFade')){//fade in/out option specified
            this.elements.each(function(el,index){//hide all elements except the first
                                                    if(index!=0){
                                                        el.set('opacity',0);
                                                        el.setStyle('display','none');
                                                    }else{
                                                        el.setStyle('display','');
                                                    } 
                                                    el.set('tween',{property: 'opacity',duration:750});
                                                 });   
            if(this.elements.length>1){(function(){this.doFade(0);}).delay(this.delay,this);}
        }else if(el.hasClass('nemSlideVertical')){
            this.elements.each(function(el,index){
                el.set('slide',{duration:600});
                if(index!=0){
                    el.slide('hide');
                }
            });
            if(this.elements.length>1){(function(){this.doSlide(0);}).delay(this.delay,this);}
        }else if(el.hasClass('nemSlideHorizontal')){
            this.elements.each(function(el,index){
                el.set('slide',{duration:500,mode:'horizontal'});
                if(index!=0){
                    el.slide('hide');
                    el.setStyle('display','none');
                }
            });
            if(this.elements.length>1){(function(){this.doSlide(0);}).delay(this.delay,this);}
        }
    },
    doFade:function(index){
        var nextIndex=index+1;
        if(nextIndex>=this.elements.length)nextIndex=0;
        
        this.elements[index].get('tween').start(1,0).chain((function(){this.elements[index].setStyle('display','none');this.elements[nextIndex].setStyle('display','');this.elements[nextIndex].get('tween').start(0,1);}).bind(this)); 
        (function(){this.doFade(nextIndex);}).delay(this.delay,this);//recursive call to fade next elements
    },
    doSlide:function(index){
        Element.implement(Chain);
        Fx.Slide.implement(Chain);

        var nextIndex=index+1;
        if(nextIndex>=this.elements.length)nextIndex=0;
        
        if(this.rotator.hasClass('nemSlideHorizontal'))//if horizontal then set display form the elements otherwise don't
            this.elements[index].get('slide').start('out').chain((function(){this.elements[index].setStyle('display','none');this.elements[nextIndex].setStyle('display','');this.elements[nextIndex].slide('in');}).bind(this));
        else{
            this.elements[index].get('slide').start('out');
            this.elements[nextIndex].slide('in');
        }
        
        (function(){this.doSlide(nextIndex);}).delay(this.delay,this);//recursive call to fade next elements
    }
});