﻿// Javascript class that handles mouse events 
if (!window.EventHandler)
	window.EventHandler = {};

EventHandler = function() 
{
}

//Properties
EventHandler.prototype.target = this.target;

EventHandler.prototype.mouseEnterAnim = this.mouseEnterAnim;
EventHandler.prototype.mouseLeaveAnim = this.mouseLeaveAnim;
EventHandler.prototype.mouseDownAnim = this.mouseDownAnim;
EventHandler.prototype.mouseUpAnim = this.mouseUpAnim;

//Extra Mouse Event Handlers, if you don't want to use just animations
EventHandler.prototype.mouseDownHandler = this.mouseDownHandler;
EventHandler.prototype.mouseUpHandler = this.mouseUpHandler;
EventHandler.prototype.mouseEnterHandler = this.mouseEnterHandler;
EventHandler.prototype.mouseLeaveHandler = this.mouseLeaveHandler;



EventHandler.prototype =
{

    //Property Setters
    setTarget: function(theTarget)
    {
        this.target = theTarget;
    },

    setMouseEnterAnim: function(MouseEnterAnim)
    {
        this.mouseEnterAnim = MouseEnterAnim;
    },
    
    setMouseLeaveAnim: function(MouseLeaveAnim)
    {
        this.mouseLeaveAnim = MouseLeaveAnim;
    },
    
    setMouseDownAnim: function(MouseDownAnim)
    {
        this.mouseDownAnim = MouseDownAnim;
    },
    
    setMouseUpAnim: function(MouseUpAnim)
    {
        this.mouseUpAnim = MouseUpAnim;
    },
    
    setMouseDownHandler: function(MouseDownHandler)
    {
        this.mouseDownHandler = MouseDownHandler;
    },
    
    setMouseUpHandler: function(MouseUpHandler)
    {
        this.mouseUpHandler = MouseUpHandler;
    },
    
    setMouseEnterHandler: function(MouseEnterHandler)
    {
        this.mouseEnterHandler = MouseEnterHandler;
    },
    
    setMouseLeaveHandler: function(MouseLeaveHandler)
    {
        this.mouseLeaveHandler = MouseLeaveHandler;
    },

    handleLoad: function() 
	{
	    // Register event handlers
	    this.target.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.handleMouseEnter));
	    this.target.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.handleMouseLeave));
	    this.target.addEventListener("MouseLeftButtonUp", Silverlight.createDelegate(this, this.handleMouseUp));
        this.target.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handleMouseDown));
    },

    handleMouseEnter: function(sender, eventArgs) {
  	    var theMouseEnterAnim = sender.findName(this.mouseEnterAnim);
        if(theMouseEnterAnim)
            theMouseEnterAnim.Begin();
            
        if(this.mouseEnterHandler)
            this.mouseEnterHandler(sender, eventArgs);
        
    },

    handleMouseLeave: function(sender, eventArgs) {
        var theMouseLeaveAnim = sender.findName(this.mouseLeaveAnim);
        
        if (theMouseLeaveAnim)
            theMouseLeaveAnim.Begin();
            
        if(this.mouseLeaveHandler)
            this.mouseLeaveHandler(sender, eventArgs);
    },

    handleMouseUp: function(sender, eventArgs) {
        var theMouseUpAnim = sender.findName(this.mouseUpAnim);
        
        if (theMouseUpAnim)
            theMouseUpAnim.Begin();
        
        
        if(this.mouseUpHandler)
            this.mouseUpHandler(sender, eventArgs); 
    },

    handleMouseDown: function(sender, eventArgs) {
        var theMouseDownAnim = sender.findName(this.mouseDownAnim);
        
        if (theMouseDownAnim)
            theMouseDownAnim.Begin();
            
        if(this.mouseDownHandler)
            this.mouseDownHandler(sender, eventArgs);
    }
}
