///////////////////////////////////////////////////////////////////////////////
//
//  pageBrowserButton.js
//
// 
// © 2007 Microsoft Corporation. All Rights Reserved.
//
// This file is licensed as part of the Silverlight 1.0 SDK, for details look here: http://go.microsoft.com/fwlink/?LinkID=89144&clcid=0x409
//
///////////////////////////////////////////////////////////////////////////////

// Controls the Button that Opens/Closes Page Browser
PageBrowserButton = function(target, checkedHandler, uncheckedHandler) {
    this.target = target;
    this.checkedHandler = checkedHandler;
    this.uncheckedHandler = uncheckedHandler;
    
    this.pageBrowserButtonCurrentState = "unchecked";
    this.isMouseOver = false;
    this.isMouseDown = false;
    
    // Register eventhandlers
    target.addEventListener("mouseEnter", Silverlight.createDelegate(this, this.handleMouseEnter));
    target.addEventListener("mouseLeave", Silverlight.createDelegate(this, this.handleMouseLeave));
    target.addEventListener("mouseLeftButtonDown", Silverlight.createDelegate(this, this.handleMouseDown));
    target.addEventListener("mouseLeftButtonUp", Silverlight.createDelegate(this, this.handleMouseUp));
}

PageBrowserButton.prototype.handleMouseEnter = function(s,e) {
    var over = this.target.findName(this.pageBrowserButtonCurrentState + "_over");
    var normal = this.target.findName(this.pageBrowserButtonCurrentState + "_normal");
    var down = this.target.findName(this.pageBrowserButtonCurrentState + "_down");

    if (this.isMouseDown == true)
    {
      normal.opacity = 0;
      over.opacity = 0;      
      down.opacity = 1;
    }
    else
    {
      normal.opacity = 0;
      over.opacity = 1;
    }

    this.isMouseOver = true;
}

PageBrowserButton.prototype.handleMouseLeave = function(s,e) {
    var over = this.target.findName(this.pageBrowserButtonCurrentState + "_over");
    var normal = this.target.findName(this.pageBrowserButtonCurrentState + "_normal");
    var down = this.target.findName(this.pageBrowserButtonCurrentState + "_down");

    if (this.isMouseDown == true)
    {
      normal.opacity = 0;
      over.opacity = 1;
      down.opacity = 0;
    }
    else
    {
      normal.opacity = 1;
      over.opacity = 0;
    }

    this.isMouseOver = false;
}

PageBrowserButton.prototype.handleMouseDown = function(s,e) {
    var over = this.target.findName(this.pageBrowserButtonCurrentState + "_over");
    var down = this.target.findName(this.pageBrowserButtonCurrentState + "_down");

    down.opacity = 1;
    over.opacity = 0;

    this.isMouseDown = true;
    this.target.captureMouse();
}

PageBrowserButton.prototype.handleMouseUp = function(sender, eventArgs) {
    var over = this.target.findName(this.pageBrowserButtonCurrentState + "_over");
    var normal = this.target.findName(this.pageBrowserButtonCurrentState + "_normal");
    var down = this.target.findName(this.pageBrowserButtonCurrentState + "_down");

    if (this.isMouseOver == true)
    {
      // change button state
      if (this.pageBrowserButtonCurrentState == "unchecked")
      {
        this.pageBrowserButtonCurrentState = "checked";
        
        if (this.checkedHandler) {
            this.checkedHandler(sender, eventArgs);
        }
      }
      else
      {
        this.pageBrowserButtonCurrentState = "unchecked";
        
        if (this.uncheckedHandler) {
            this.uncheckedHandler(sender, eventArgs);
        }
      }

      newover = this.target.findName(this.pageBrowserButtonCurrentState + "_over");

      newover.opacity = 1;      
      down.opacity = 0;
    }
    else
    {
      normal.opacity = 1;
      down.opacity = 0;
      over.opacity = 0;
    }

    this.isMouseDown = false;
    this.target.releaseMouseCapture();
}