var Hover = new Class({ 
	initialize : function(eles,hclass,dim){
	
		this.hclass = hclass;		
		this.eles = eles;
		this.dim = dim;
		var self = this;
		
		this.eles.each(function(ele){
			if(!ele.oldstyles){
				ele.oldstyles = ele.getStyles('padding','background-color','color','border-color');
			}
			ele.hooverfx = new Fx.Morph(ele,{duration: 'normal'});				
			ele.hselected = false;
							
			//Start adding Events
			ele.addEvent('mouseenter',function(e){
				ele.hselected = true;
				self.startDim();					
			});	
			ele.addEvent('focus',function(e){
				ele.hselected = true;
				self.startDim();					
			});	
			ele.addEvent('mouseleave',function(e){
				self.unDim();
				ele.hselected = false;					
			});
			ele.addEvent('blur',function(e){
				self.unDim();
				ele.hselected = false;					
			});	
		});				
	},
	startDim : function(){ 
		var self = this;
		this.eles.each(function(ele){
			if(!ele.hselected){
				if(self.dim) ele.fade('0.2'); 
			}    
			else{
				ele.hooverfx.cancel();
				if(ele.fx){
					ele.fx.pause();
				}
				ele.hooverfx.start(self.hclass);				
			}
		});   	
	},
	unDim : function(){    		
		this.eles.each(function(ele){	
			if(!ele.hselected){
				ele.fade(1);				
			}
			else{
				ele.hooverfx.cancel();
    			ele.hooverfx.start(ele.oldstyles).chain(function(){
    				if(ele.fx){
    					ele.fx.resume();
    				}	
    			});
			}	
		});					    		  	
	}	
});

