/*
 * Fading images with controll buttons.
 * 
 * 
 */

function ImageFading(interval, SliderId,  ButtonClassName,ButtonClassNameActive, ElementClassName, LeadTextClassName ){
	
    this.buttony=[];
    this.bannery = [];
    this.bEf = [];
    this.leady = $$('.'+LeadTextClassName)
    this.leadyEf =[];
    this.il = 0;
    this.slider = $(SliderId);
    var self = this;
    
    this.slider.getElements('.'+ButtonClassName).each(function(ele, index){
        self.buttony[index]= ele;
    });
	
    this.buttony.each(function(ele,index){
        x = Math.random();
        ele.addEvent('click',function(){
            self.zmienNa(index);
        })
    });
	
    $$('.'+ElementClassName).each(function(element,index){
        
        self.leady[index].setStyles({
            'opacity':0
        });
        
        element.setStyles({
            'opacity':0
        });
        
        self.leadyEf[index]  = new Fx.Morph(self.leady[index], {
            duration: 1000, 
            wait:'chain'
        });
        
        self.bEf[index]  = new Fx.Morph(element, {
            duration: 1000, 
            wait:'chain'
        });
        self.il++;
    });

    document.getElement('.'+ElementClassName).setStyles({
        'opacity':1
    });
    document.getElement('.'+LeadTextClassName).setStyles({
        'opacity':1
    });
    document.getElement('.'+ButtonClassName).set('class',ButtonClassNameActive)
	
    this.zmienBaner= function(){
		
        if((self.akt+1) ==self.il){
            self.next = 0;	
        }else{
            self.next = self.akt+1;	
        }	

        self.bEf.each(function(ele,ind){
            if(ind!=self.next){
                ele.start({
                    'opacity':0		 
                }); 
            }
        })
        self.leadyEf.each(function(ele,ind){
            if(ind!=self.next){
                ele.start({
                    'opacity':0		 
                }); 
            }
        })
        self.buttony.each(function(ele){
            ele.set('class',ButtonClassName) 
        })
		
        self.buttony[self.akt].set('class',ButtonClassName) 		 
					
        self.buttony[self.next].set('class',ButtonClassNameActive) 	
        
        
        self.leadyEf[self.akt].start({
            'opacity':0		 
        });
		
        self.bEf[self.akt].start({
            'opacity':0		 
        });
		
        
        self.leadyEf[self.next].start({
            'opacity':[0,1]
        });
        self.bEf[self.next].start({
            'opacity':[0,1]
        });
		
        if(self.akt>=(self.il-1)){
            self.akt=0;	
        }else{
            self.akt++;	
        }
    }
	
    this.akt=0;
    this.interval = self.zmienBaner.periodical(interval);
	
    this.startSliding = function(i){
        clearInterval(self.interval);
        self.interval = self.zmienBaner.periodical(interval);			
    };
	
    this.zmienNa = function(index){
        
        clearInterval(self.interval);
        
        self.bEf.each(function(ele,ind){
            if(ind!=index){
                ele.start({
                    'opacity':0		 
                }); 
            }
        })
        self.leadyEf.each(function(ele,ind){
            if(ind!=index){
                ele.start({
                    'opacity':0		 
                }); 
            }
        })
        
        self.buttony.each(function(ele){
            ele.set('class',ButtonClassName) 		 	
        })
        self.buttony[index].set('class',ButtonClassNameActive) 	
       
        
        self.bEf[index].start({
            'opacity':1		 
        });
        self.leadyEf[index].start({
            'opacity':1		 
        });
        self.akt = index;
        self.buttony[index].addEvent('mouseleave', function(){
            self.startSliding(index);
        });
		
    }
    this.stop = function(){
        clearInterval(self.interval);
        self.buttony.each(function(e){
            e.removeEvents();
        })  
    }
}	
