// Define state variables
var isMouseDown = false;
var lastPosition = 0;
var baseAngle = 0;
var rotateCanvasName;
var rotateTransformName;
var currentImageZIndex = 2;
var currentRotateZIndex = 3;

function rotateMouseDown(sender, args) {

    sender.captureMouse();
	isMouseDown = true;

    // get starting position
    lastPosition = args.getPosition(null);

	// variables for doing the object rotations	
	objectName = sender.name;
	rotateCanvasName = "rotateCanvas" + objectName.substring(12, objectName.length);
	rotateTransformName = "canvasRotate" + objectName.substring(12, objectName.length);
}


function rotateMouseMove(sender, args) {

	var _position = args.getPosition(null);

    // Determine whether the mouse button is down.
    // If so, rotate the object.
    if (isMouseDown)
    {	
		var _rotate = sender.findName(rotateTransformName);

       // calculate center
        var _center = {};
		canvasLeft = sender.findName(rotateCanvasName)["Canvas.Left"];
		canvasTop = sender.findName(rotateCanvasName)["Canvas.Top"];
		canvasWidth = sender.findName(rotateCanvasName).width;
		canvasHeight = sender.findName(rotateCanvasName).height;
    	
		_center.X = canvasLeft + canvasWidth/2;
		_center.Y = canvasTop + canvasHeight/2;
		
		// rotate algorithm ...+
        var radiansToDegrees = 360 / (2 * Math.PI);
        var lastAngle = parseInt(Math.atan2(lastPosition.Y - _center.Y, lastPosition.X - _center.X) * radiansToDegrees);
        var currentAngle = parseInt(Math.atan2(_position.Y - _center.Y, _position.X - _center.X) * radiansToDegrees);
        var deltaAngle = currentAngle - lastAngle;
        _rotate.Angle += deltaAngle;
		baseAngle += deltaAngle;
		
		// update lastPosition to reflect starting 
		// position for next rotation
		lastPosition = _position;
    }
}

function rotateMouseUp(sender, args) {
    isMouseDown = false;
    sender.releaseMouseCapture();
}
