function jsFlow(idImage,reflection,light,angle,deep,imageSource){
  imageSource=(!imageSource)?idImage:imageSource;
  var image = document.getElementById(imageSource);
  var reflexCanvas = document.createElement("canvas"); 
  var reflexCanvasContext = reflexCanvas.getContext("2d");
  
  var w = image.width;
  var h = image.height;
 
  reflexCanvas.width = w;
  reflexCanvas.height = h + reflection;
  
  radianes = ((90+angle) * (Math.PI/180));
  w2 = Math.abs(parseInt(Math.sin(radianes)*w));

  reflexCanvasContext.drawImage(image,0,0,w,h,0,0,w2,h);
  var imageData = reflexCanvasContext.getImageData(0,0, w, h+reflection);

  // Aplicamos el reflejo
  for (y = 0; y <= reflection; y++){
   	  for (x = 0; x <= w2; x++){	 				 
		  origen = (w*(h-y)+x)*4; // = ((h-y)*4)*w+(x*4)
		  destino = (w*(h+y)+x)*4; // = ((h+y)*4)*w+(x*4)

		  imageData.data[destino] = imageData.data[origen];
		  imageData.data[destino+1] = imageData.data[origen+1];
		  imageData.data[destino+2] = imageData.data[origen+2];
		  imageData.data[destino+3] = light-(y*light)/reflection;	   
		  }
  	   }
			
// Guardamos el resultado en myCanvasContext
   reflexCanvasContext.putImageData(imageData,0,0);

// Reemplazamos la imagen original por la imagen con reflejo, comprimida y asignamos el ID original	 
   document.getElementById(idImage).parentNode.replaceChild(reflexCanvas,document.getElementById(idImage));
   reflexCanvas.id = idImage;

// Creamos el canvas donde guardaremos la imagen con perspectiva
   var perspectiveCanvas = document.createElement("canvas"); 
   var perspectiveCanvasContext = perspectiveCanvas.getContext("2d");
	
   perspectiveCanvas.width = w2;
   perspectiveCanvas.height = h + reflection;

// Aplicamos la perspectiva		 
   h2 = Math.abs(parseInt (Math.cos(radianes) * deep));
			 
   for (x = 0; x <= w2; x++){
     	 crop=(x * h2) / w2;
	   	 size=h + reflection - crop;
			 pos=( angle > 90)?w2 - x:x;
   		 perspectiveCanvasContext.drawImage(reflexCanvas,pos,0,1,h+reflection,pos,crop/2,1,size);
	   	 }
			 			 
// Reemplazamos la imagen anterior por nueva en perspectiva y asignamos el ID original 
   document.getElementById(idImage).parentNode.replaceChild(perspectiveCanvas,reflexCanvas);
   perspectiveCanvas.id = idImage;
}

