﻿
var rotate_lastPosition = 0;
var rotate_beginAngle = 0;
var rotate_isMouseDown = false;
var rotate_rotateCanvasName;
var rotate_rotateTransformName;
var rotate_imageZIndex = 0;
var rotate_rotateZIndex = 1;

function rotateEllipse_onMouseUp(sender, args)
{
/// <remarks>
/// http://paulosay.spaces.live.com/blog/cns!7CC9F2B7406F44D0!978.entry
/// En el evento MouseLeftButtonUp ,cambiamos el valor de la variable rotateMouseUp y liberamos al mouse.
/// </remarks>
    rotate_isMouseDown = false;
    sender.releaseMouseCapture();
    //alert ("beginAngle:" + rotate_beginAngle);
}


function rotateEllipse_onMouseDown(sender, args)
{
/// <remarks>
/// http://paulosay.spaces.live.com/blog/cns!7CC9F2B7406F44D0!978.entry
/// En MouseLeftButtonDown, activamos la captura del mouse, cambiamos el valor de la variable isMouseDown y registramos la última posición del cursor del mouse.
/// </remarks>
    sender.captureMouse();
    rotate_isMouseDown = true;
    rotate_lastPosition = args.getPosition(null);
    //objectName = sender.name;
    rotate_rotateCanvasName = "rotateCanvas";
    rotate_rotateTransformName = "rotateCanvasTransform"; 
}


function rotateEllipse_onMouseMove(sender, args)
{
/// <remarks>
/// http://paulosay.spaces.live.com/blog/cns!7CC9F2B7406F44D0!978.entry
/// Por último en el evento MouseMove capturamos la posición actual del cursor, seleccionamos la RotateTransform a utilizar, calculamos el CenterPoint y el ángulo dependiendo de los movimientos del mouse.
/// </remarks>
    var position = args.getPosition(null);
    if (rotate_isMouseDown)
    {  
        var plugin = document.getElementById("SilverlightControl");
        //var canvasArrows = plugin.content.findName("canvasArrows");
        //alert(plugin.clientWidth); 
    
        var rotate = sender.findName(rotate_rotateTransformName);
        var centerPoint = {};

        canvasLeft = sender.findName(rotate_rotateCanvasName)["Canvas.Left"]; // -12.5
        canvasTop = sender.findName(rotate_rotateCanvasName)["Canvas.Top"];   //  70
        canvasWidth = sender.findName(rotate_rotateCanvasName).width;
        canvasHeight = sender.findName(rotate_rotateCanvasName).height;

        centerPoint.X = plugin.clientWidth - 36; // canvasLeft + canvasWidth/2;
        centerPoint.Y = 36; //canvasTop + canvasHeight/2;                           //  22.5, 105

        var radiansToDegrees = 360 / (2 * Math.PI);
        var lastAngle = parseInt(Math.atan2(rotate_lastPosition.Y - centerPoint.Y, rotate_lastPosition.X - centerPoint.X) * radiansToDegrees);
        var currentAngle = parseInt(Math.atan2(position.Y - centerPoint.Y, position.X - centerPoint.X) * radiansToDegrees);
        var deltaAngle = currentAngle - lastAngle;
        rotate.Angle += deltaAngle;
        
//        var tempAngle = rotate.Angle; var tempSign = 1; if (rotate.Angle < 0) tempSign = -1;
//        tempAngle = Math.abs(tempAngle);
//        tempAngle = tempAngle % 360;
//        if  ( (0 < tempAngle ) && (tempAngle <= 5) || (355 < tempAngle ) && (tempAngle <= 360))
//        {
//            rotate.Angle = 0;
//            //document.all.q.value = "lock " + tempAngle;
//        }
//        else if  ( (85 < tempAngle ) && (tempAngle <= 95) )
//        {
//            rotate.Angle = 90 * tempSign;
//            //document.all.q.value = "lock " + tempAngle;
//        }
//        else if  ( (175 < tempAngle ) && (tempAngle <= 185) )
//        {
//            rotate.Angle = 180 * tempSign;
//            //document.all.q.value = "lock " + tempAngle;
//        }
//        else if  ( (265 < tempAngle ) && (tempAngle <= 275) )
//        {
//            rotate.Angle = 270 * tempSign;
//            //document.all.q.value = "lock " + tempAngle;
//        }
//        else
//        {
//            //document.all.q.value = "nolock " + tempAngle;
//        }
//        if (document.all)
//            document.all.q.value = rotate.Angle;
        
        rotate_beginAngle += deltaAngle;
        rotate_lastPosition = position;

        
        // Added to rotate map 
        var canvas = plugin.content.findName("canvas");
        var canvasR = canvas.findName("canvasRotate");
        var canvasMarkerR = plugin.content.findName("canvasMarkerRotate");
        canvasR.Angle = rotate.Angle;
        canvasMarkerR.Angle = rotate.Angle;
        
        // HACK: debug info in query box
        //document.all.q.value = centerPoint.X + ','+ centerPoint.Y + '  ' + lastAngle + ' ' + currentAngle + ' ' + deltaAngle;
    }
} 