;(function($) {
	$.fn.extend({
		doBlackWhite: function(options) {
			options = $.extend({}, $.BlackWhite.defaults, options);			
			return this.each(function() {
				new $.BlackWhite(this, options);
			});
		}
	});
	$.BlackWhite = function(input,options) {
				
		var canvas = document.createElement('canvas');
		
	  	if(canvas.getContext) 
	  	{
	    	var im = new Image();
	    	im.src = input.src;
	    	im.onload=function() 
	    	{
	      		canvas.width = im.width;	      		
	      		canvas.height = im.height;
	      		var ctx = canvas.getContext('2d');
	      		ctx.drawImage(im,0,0,canvas.width,canvas.height);
	      		var d = ctx.getImageData(0,0,canvas.width,canvas.height);
	      		var data = d.data;
	      		for(var i=0;i<data.length;i+=4) 
	      		{
	        		var r = 0.299*data[i]+0.587*data[i+1]+0.114*data[i+2];
	        		data[i] = data[i+1] = data[i+2] = r;
	      		}
	      		ctx.putImageData(d,0,0);
	      		canvas.bb_input=input;
	      		
	      		// desactivation du filtre
	      		$(canvas).mousemove(function() {	      			
	      			this.parentNode.replaceChild(this.bb_input,this);
	      		});
	    	};
	  	} 	  
	  	input.bb_canvas=canvas;
  
  		// desactivation du filtre
		$(input).mousemove(function() {
			if($.browser.msie) {
      			this.style.filter = "";
      			$(this).css({ opacity: 1 });
    		}     		
		});
		
		var h3 = $(input).parent().prev("h3");
		h3.mousemove(function() {			
			if($.browser.msie) {
					$(this).next("a").find("img").trigger("mousemove");
			}	
			else
			{
				$(this).next("a").find("canvas").trigger("mousemove");
			}
	     });
	     
	      
	     h3.mouseout(function() {				
			$(this).next("a").find("img").trigger("mouseout");
	     });
	     
	     
	     var parg = $(input).parent().next("p");
	     parg.mousemove(function() {			
			if($.browser.msie) {
					$(this).prev("a").find("img").trigger("mousemove");
			}	
			else
			{
				$(this).prev("a").find("canvas").trigger("mousemove");
			}
	     });
	     
	     parg.mouseout(function() {				
			$(this).prev("a").find("img").trigger("mouseout");
	     });
	     
	     
		// application du filtre
		$(input).mouseout(function() {			
			if($.browser.msie) {								
      			this.style.filter = "progid:DXImageTransform.Microsoft.BasicImage(grayscale=1) progid:DXImageTransform.Microsoft.Alpha(opacity=50)";
    		} 
    		else 
    		{
    			if(this.parentNode!=null)
    			{
      				this.parentNode.replaceChild(this.bb_canvas,this);
      				$(this.bb_canvas).css({ opacity: 0.5 });
      			}
    		}    		    		
		});
		
		// application du filtre
		if($.browser.msie) {			
  			input.style.filter = "progid:DXImageTransform.Microsoft.BasicImage(grayscale=1) progid:DXImageTransform.Microsoft.Alpha(opacity=50)";
		} 
		else 
		{
  			input.parentNode.replaceChild(input.bb_canvas,input);
  			$(input.bb_canvas).css({ opacity: 0.5 });
		}		
	};
	// options par defaut
	$.BlackWhite.defaults = {};
})(jQuery);
