var status;
var isMouseDown = false;
var isMouseEnter = false;
var buttonCaptured = "";
var beginX;
var beginY;
var captured = "";
var state = "Default";


function MouseExitCanvas(sender, args){
    captured="";
    state = "";
}

function GBMouseEnter(sender, args){
    // don't forget these get fired on load as well
    var sndr = sender.Name.toString();
    // we get sent here from different objects on the button, based on state, shoudn't though, all objects get IsHitTestVisible = false except base object ??? ???
    if (sndr.indexOf("_glow_") == -1){
        sndr += "_glow_"
    }
    if(isMouseDown && buttonCaptured == sndr.toString()){
        // if we are re-entering the same button we clicked and held then we don't want
        //  to trigger a MouseLeave event in onGBMouseUp since we're in the same button (currently based on this flag)
        isMouseEnter = true;
    }
    
    if (!isMouseDown){
        var sb = sender.findName(sndr.toString() + "enter");
        sb.begin();
        sender.findName("moveMenuBackBorderReset").Begin();    // also reset (i.e. play) on every MouseEnter as well

        switch(sender.Name){
        case "GB_menu_LOM_glow_":
            //scene.menuLOM_MouseEnter(sender, args)
            scene.booksAfA_MouseEnter(sender, args)
            break;
        case "GB_menu_AfA_glow_":
            //scene.booksAfA_MouseEnter(sender, args)
            scene.menuLOM_MouseEnter(sender, args)
            break;
        case "GB_menu_PBest_glow_":
            scene.booksPBest_MouseEnter(sender, args)
            break;
        case "GB_menu_RATW_glow_":
            scene.booksRATW_MouseEnter(sender, args)
            break;
        case "GB_menu_BIO_glow_":
            scene.smallPic_MouseEnter(sender, args)
            break;
        }
    }
    //scene.booksLOM_MouseEnter(sender, args)
    //alert("GBMouseEnter");
}

function GBMouseLeave(sender, args){
    // don't forget these get fired on load as well
    isMouseEnter = false;

    if (!isMouseDown){
        var sndr = sender.Name.toString();
        if (sndr.indexOf("_glow_") == -1){
            sndr += "_glow_"
        }
        var sb = sender.findName(sndr.toString() + "leave");
        sb.begin();
        sender.findName("moveMenuBackBorder").Begin();    // also reset (i.e. play) on every MouseEnter as well

    //    alert("GBMouseLeave");
        switch(sender.Name.toString()){
        case "GB_menu_LOM_glow_":
            //scene.menuLOM_MouseLeave(sender, args)
            scene.booksAfA_MouseLeave(sender, args)
            break;
        case "GB_menu_AfA_glow_":
            //scene.booksAfA_MouseLeave(sender, args)
            scene.menuLOM_MouseLeave(sender, args)
            break;
        case "GB_menu_PBest_glow_":
            scene.booksPBest_MouseLeave(sender, args)
            break;
        case "GB_menu_RATW_glow_":
            scene.booksRATW_MouseLeave(sender, args)
            break;
        case "GB_menu_BIO_glow_":
            scene.smallPic_MouseLeave(sender, args)
            break;
        }
    }
}

function onGBMouseDown(sender, mouseEventArgs)
{
    //return;
    // Set the beginning position of the mouse.
//    beginX = mouseEventArgs.getPosition(null).x;
//    beginY = mouseEventArgs.getPosition(null).y;

    isMouseDown = true;
    isMouseEnter = true;
        var sndr = sender.Name.toString();
        if (sndr.indexOf("_glow_") == -1){
            sndr += "_glow_"
        }
    buttonCaptured = sndr.toString();
    // Ensure this object is the only one receiving mouse events.
    sender.captureMouse();

    //alert("onGBMouseDown\r\n\r\n"+sender.Name.toString());    
    switch(sender.Name.toString()){
    case "GB_menu_LOM":
        sender.findName("GB_menu_LOM_glow").Visibility ='Collapsed';
        sender.findName("GB_menu_LOM_reflection").Visibility ='Collapsed';
        //scene.menuLOM_MouseClickDown(sender, mouseEventArgs)
        scene.menuAfA_MouseClickDown(sender, mouseEventArgs)
        break;
    case "GB_menu_AfA":
        sender.findName("GB_menu_AfA_glow").Visibility ='Collapsed';
        sender.findName("GB_menu_AfA_reflection").Visibility ='Collapsed';
        //scene.menuAfA_MouseClickDown(sender, mouseEventArgs)
        scene.menuLOM_MouseClickDown(sender, mouseEventArgs)
        break;
    case "GB_menu_PBest":
        sender.findName("GB_menu_PBest_glow").Visibility ='Collapsed';
        sender.findName("GB_menu_PBest_reflection").Visibility ='Collapsed';
        scene.menuPBest_MouseClickDown(sender, mouseEventArgs)
        break;
    case "GB_menu_RATW":
        sender.findName("GB_menu_RATW_glow").Visibility ='Collapsed';
        sender.findName("GB_menu_RATW_reflection").Visibility ='Collapsed';
        scene.menuRATW_MouseClickDown(sender, mouseEventArgs)
        break;
    case "GB_menu_BIO":
        sender.findName("GB_menu_BIO_glow").Visibility ='Collapsed';
        sender.findName("GB_menu_BIO_reflection").Visibility ='Collapsed';
        scene.menuBIO_MouseClickDown(sender, mouseEventArgs)
        //sender.findName("GB_menu_BIO_reflection").RenderTransform.TransformGroup.Children.getItem( 0, '180' );

        break;
    }

}

// Stop drag and drop operation.
function onGBMouseUp(sender, mouseEventArgs)
{
    //return;
    isMouseDown = false;
    buttonCaptured = "";

    // All all objects to receive mouse events.
    sender.releaseMouseCapture();
    switch(sender.Name.toString()){
    case "GB_menu_LOM":
        if (isMouseEnter){
            scene.menuLOM_MouseClick(sender, mouseEventArgs)
        }
        sender.findName("GB_menu_LOM_glow").Visibility ='Visible';
        sender.findName("GB_menu_LOM_reflection").Visibility ='Visible';
        //if (isMouseEnter){
        //scene.menuLOM_MouseClickUp(sender, mouseEventArgs)
        scene.menuAfA_MouseClickUp(sender, mouseEventArgs)
        //}
        break;
    case "GB_menu_AfA":
        if (isMouseEnter){
            scene.menuAfA_MouseClick(sender, mouseEventArgs)
        }
        sender.findName("GB_menu_AfA_glow").Visibility ='Visible';
        sender.findName("GB_menu_AfA_reflection").Visibility ='Visible';
        //scene.menuAfA_MouseClickUp(sender, mouseEventArgs)
        scene.menuLOM_MouseClickUp(sender, mouseEventArgs)
        break;
    case "GB_menu_PBest":
        if (isMouseEnter){
            scene.menuPBest_MouseClick(sender, mouseEventArgs)
        }
        sender.findName("GB_menu_PBest_glow").Visibility ='Visible';
        sender.findName("GB_menu_PBest_reflection").Visibility ='Visible';
        scene.menuPBest_MouseClickUp(sender, mouseEventArgs)
        break;
    case "GB_menu_RATW":
        if (isMouseEnter){
            scene.menuRATW_MouseClick(sender, mouseEventArgs)
        }
        sender.findName("GB_menu_RATW_glow").Visibility ='Visible';
        sender.findName("GB_menu_RATW_reflection").Visibility ='Visible';
        scene.menuRATW_MouseClickUp(sender, mouseEventArgs)
        break;
    case "GB_menu_BIO":
        if (isMouseEnter){
            scene.menuBIO_MouseClick(sender, mouseEventArgs)
        }
        sender.findName("GB_menu_BIO_glow").Visibility ='Visible';
        sender.findName("GB_menu_BIO_reflection").Visibility ='Visible';
        scene.menuBIO_MouseClickUp(sender, mouseEventArgs)
        break;
    }
    if (!isMouseEnter){
        GBMouseLeave(sender, mouseEventArgs);
    }
    
}

// Reposition object during drag and drop operation.
function onGBMouseMove(sender, mouseEventArgs)
{
    //return;
    
    if (!isMouseDown && !isMouseEnter){
        isMouseEnter = true;
        GBMouseEnter(sender, mouseEventArgs)
    }
    // Determine whether the mouse button is down.
    // If so, move the object.
    if (isMouseDown == true)
    {
        // Retrieve the current position of the mouse.
//        var currX = mouseEventArgs.getPosition(null).x;
//        var currY = mouseEventArgs.getPosition(null).y;

//        // Reset the location of the object.
//        sender["Canvas.Left"] += currX - beginX;
//        sender["Canvas.Top"] += currY - beginY;

//        // Update the beginning position of the mouse.
//        beginX = currX;
//        beginY = currY;
    }else{

    }
}

//function ClickMe(){
//    alert("ClickMe");
//}

//function ClickMe2(){
//    alert("ClickMe2");
//}

//function templateButton_Loaded(sender, args) {
//    var button = sender.findName("OriginalTemplateButton");
//    // button.MouseEnter = "handleMouseEnter";
//    button.addEventListener("mouseEnter", "handleMouseEnter");
//    button.addEventListener("mouseLeave", "handleMouseLeave");
//    button.addEventListener("mouseLeftButtonUp", "handleMouseUp");
//    button.addEventListener("mouseLeftButtonDown", "handleMouseDown");
//}

//function handleMouseEnter(sender, eventArgs) {
//    var gradientStop1 = sender.findName("gradientStop1");
//    var gradientStop2 = sender.findName("gradientStop2");
//    gradientStop1.offset = 1;
//    gradientStop2.offset = .403;
//}

//function handleMouseLeave(sender, eventArgs) {
//    var gradientStop1 = sender.findName("gradientStop1");
//    var gradientStop2 = sender.findName("gradientStop2");
//    gradientStop1.offset = 1;
//    gradientStop2.offset = .218;
//}

//function handleMouseUp(sender, eventArgs) {
//    var gradientStop1 = sender.findName("gradientStop1");
//    var gradientStop2 = sender.findName("gradientStop2");
//    gradientStop1.offset = 1;
//    gradientStop2.offset = .403;

//    alert("clicked");
//}

//function handleMouseDown(sender, eventArgs) {
//    var gradientStop1 = sender.findName("gradientStop1");
//    var gradientStop2 = sender.findName("gradientStop2");
//    gradientStop1.offset = .7;
//    gradientStop2.offset = .475;
//}

//function ButtonMouseEnter(sender, args){
//    switch(sender.Name.toString()){
//    case "SingleRectangleButton_":
//        var ctrl = sender.findName("SingleRectangleButton_text");
//        ctrl["Foreground"]="#FFFF0000";
//        if (captured == "SingleRectangleButton")
//        {
//            var ctrl2 = sender.findName("SingleRectangleButton");
//            ctrl2["Canvas.Left"]="1";
//            ctrl2["Canvas.Top"]="1";
//            state = "Pressed";
//        }
//        break;

//    case "RectangleButton_":
//        var ctrl = sender.findName("RectangleButton_text");
//        ctrl["Foreground"]="#FFFF0000";
//        if (captured == "RectangleButton")
//        {
//            var ctrl3 = sender.findName("RectangleButton");
//            ctrl3["Canvas.Left"]="1";
//            ctrl3["Canvas.Top"]="1";
//            state = "Pressed";
//        }
//        break;

//    case "TemplateButton":
//        var gradientStop1 = sender.findName("gradientStop1");
//        var gradientStop2 = sender.findName("gradientStop2");
//        if (captured == "TemplateButton")
//        {
//            gradientStop1.offset = .7;
//            gradientStop2.offset = .475;
//            state = "Pressed";
//        }
//        else
//        {
//            gradientStop1.offset = 1;
//            gradientStop2.offset = .403;
//        }
//        break;
//    }
//}

//function ButtonMouseLeave(sender, args){
//    switch(sender.Name.toString()){
//    case "SingleRectangleButton_":
//        var ctrl = sender.findName("SingleRectangleButton_text");
//        ctrl["Foreground"]="#FF000000";
//        if (captured == "SingleRectangleButton")
//        {
//            var ctrl = sender.findName("SingleRectangleButton");
//            ctrl["Canvas.Left"]="0";
//            ctrl["Canvas.Top"]="0";
//            state = "Default";
//        }
//        else
//        {
//            state = "";
//        }
//        break;

//    case "RectangleButton_":
//        var ctrl = sender.findName("RectangleButton_text");
//        ctrl["Foreground"]="#FF000000";
//        if (captured == "RectangleButton")
//        {
//            var ctrl = sender.findName("RectangleButton");
//            ctrl["Canvas.Left"]="0";
//            ctrl["Canvas.Top"]="0";
//            state = "Default";
//        }
//        else
//        {
//            state = "";
//        }
//        break;

//    case "TemplateButton":
//        var gradientStop1 = sender.findName("gradientStop1");
//        var gradientStop2 = sender.findName("gradientStop2");
//        gradientStop1.offset = 1;
//        gradientStop2.offset = .218;
//        if (captured == "TemplateButton")
//        {
//            state = "Default";
//        }
//        else
//        {
//            state = "";
//        }
//        break;
//    }
//}

//function ButtonDown(sender, args){
//    switch(sender.Name.toString()){
//    case "SingleRectangleButton_":
//        var ctrl = sender.findName("SingleRectangleButton");
//        ctrl["Canvas.Left"]="1";
//        ctrl["Canvas.Top"]="1";
//        sender.captureMouse();
//        captured = "SingleRectangleButton";
//        state = "Pressed";
//        break;

//    case "RectangleButton_":
//        var ctrl2 = sender.findName("RectangleButton");
//        ctrl2["Canvas.Left"]="1";
//        ctrl2["Canvas.Top"]="1";
//        sender.captureMouse();
//        captured = "RectangleButton";
//        state = "Pressed";
//        break;

//    case "TemplateButton":
//        var gradientStop1 = sender.findName("gradientStop1");
//        var gradientStop2 = sender.findName("gradientStop2");
//        gradientStop1.offset = .7;
//        gradientStop2.offset = .475;
//        sender.captureMouse();
//        captured = "TemplateButton";
//        state = "Pressed";
//        break;

//    }
//}

//function ButtonUp(sender, args){
//    switch(sender.Name.toString()){
//    case "SingleRectangleButton_":
//        var ctrl = sender.findName("SingleRectangleButton");
//        ctrl["Canvas.Left"]="0";
//        ctrl["Canvas.Top"]="0";
//        if ((captured == "SingleRectangleButton") && (state == "Pressed"))
//        {
//            sender.releaseMouseCapture();
//            captured = "";
//            alert("SingleRectangleButton Clicked");
//        }
//        else
//        {
//            sender.releaseMouseCapture();
//            captured = "";
//            state = "";
//        }
//        break;

//    case "RectangleButton_":
//        var ctrl = sender.findName("RectangleButton");
//        ctrl["Canvas.Left"]="0";
//        ctrl["Canvas.Top"]="0";
//        if ((captured == "RectangleButton") && (state == "Pressed"))
//        {
//            sender.releaseMouseCapture();
//            captured = "";
//            alert("RectangleButton Clicked");
//        }
//        else
//        {
//            sender.releaseMouseCapture();
//            captured = "";
//            state = "";
//        }
//        break;

//    case "TemplateButton":
//        var gradientStop1 = sender.findName("gradientStop1");
//        var gradientStop2 = sender.findName("gradientStop2");
//        gradientStop1.offset = 1;
//        gradientStop2.offset = .218;
//        if ((captured == "TemplateButton") && (state == "Pressed"))
//        {
//            sender.releaseMouseCapture();
//            captured = "";
//            alert("TemplateButton Clicked");
//        }
//        else
//        {
//            sender.releaseMouseCapture();
//            captured = "";
//            state = "";
//        }
//        break;

//    default:
//        captured = "";
//        state = "";
//        break;
//    }
//}

