| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70  | 
						jQuery.fn.rotate = function(angle,whence) {     var p = this.get(0);     // we store the angle inside the image tag for persistence     if (!whence) {         p.angle = ((p.angle==undefined?0:p.angle) + angle) % 360;     } else {         p.angle = angle;     }     if (p.angle >= 0) {         var rotation = Math.PI * p.angle / 180;     } else {         var rotation = Math.PI * (360+p.angle) / 180;     }     var costheta = Math.cos(rotation);     var sintheta = Math.sin(rotation);     if (document.all && !window.opera) {         var canvas = document.createElement('img');         canvas.src = p.src;         canvas.height = p.height;         canvas.width = p.width;         canvas.style.filter = "progid:DXImageTransform.Microsoft.Matrix(M11="+costheta+",M12="+(-sintheta)+",M21="+sintheta+",M22="+costheta+",SizingMethod='auto expand')";     } else {         var canvas = document.createElement('canvas');         if (!p.oImage) {             canvas.oImage = new Image(); // assigning following parameters to fix jquery-rotate.1-1 bug on FF2             canvas.oImage = p;             canvas.oImage.src = p.src;             canvas.oImage.width = p.width;             canvas.oImage.height = p.height; //end of modified         } else {             canvas.oImage = p.oImage;         }         canvas.style.width = canvas.width = Math.abs(costheta*canvas.oImage.width) + Math.abs(sintheta*canvas.oImage.height);         canvas.style.height = canvas.height = Math.abs(costheta*canvas.oImage.height) + Math.abs(sintheta*canvas.oImage.width);         var context = canvas.getContext('2d');         context.save();         if (rotation <= Math.PI/2) {             context.translate(sintheta*canvas.oImage.height,0);         } else if (rotation <= Math.PI) {             context.translate(canvas.width,-costheta*canvas.oImage.height);         } else if (rotation <= 1.5*Math.PI) {             context.translate(-costheta*canvas.oImage.width,canvas.height);         } else {             context.translate(0,-sintheta*canvas.oImage.width);         }         context.rotate(rotation);         context.drawImage(canvas.oImage, 0, 0, canvas.oImage.width, canvas.oImage.height);         context.restore();     }     canvas.id = p.id;     canvas.angle = p.angle;     p.parentNode.replaceChild(canvas, p); } jQuery.fn.rotateRight = function(angle) {     this.rotate(angle==undefined?90:angle); } jQuery.fn.rotateLeft = function(angle) {     this.rotate(angle==undefined?-90:-angle); }  |