﻿//===============================================================================
// ID		  : $Id: Codex.js 131 2008-03-31 13:56:30Z stefan.schult $
// Author     : $Author: stefan.schult $
// Description: JSClasses for Buttons
//===============================================================================

BookSelectionButton = function(Canvas, withClickedState){
	var thisClass = this;
    this.toString = function(){
        return "BookSelectionButton";
    };
    this.withClickedState = withClickedState;
    this.Canvas = Canvas;
	Canvas.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.handleButtonMouseEnter));
	Canvas.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.handleButtonMouseLeave));
	Canvas.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handleButtonMouseLeftButtonDown));
	Canvas.addEventListener("MouseLeftButtonUp", Silverlight.createDelegate(this, this.handleButtonMouseLeftButtonUp));
}
BookSelectionButton.prototype = {
	hasElementEntered: false,
	handleButtonMouseEnter: function(sender, eventArgs) 
	{
		this.hasElementEntered = true;
		sender.Children.getItem(0).Visibility = "Collapsed";
		sender.Children.getItem(1).Visibility = "Visible";
	},
	
	handleButtonMouseLeave: function(sender, eventArgs) 
	{
		this.hasElementEntered = false;
		sender.Children.getItem(0).Visibility = "Visible";
		sender.Children.getItem(1).Visibility = "Collapsed";
	},
	
	handleButtonMouseLeftButtonDown: function(sender, eventArgs) 
	{
		sender.Opacity = 0.7;
	},
	
	handleButtonMouseLeftButtonUp: function(sender, eventArgs) 
	{
		sender.Opacity = 1;
//		sender.Children.getItem(0).Visibility = "Visible";
//		sender.Children.getItem(1).Visibility = "Collapsed";
	}
	
}


ScaleButton = function(Canvas, withClickedState){
	var thisClass = this;
    this.toString = function(){
        return "TaskBarButton";
    };
    this.withClickedState = withClickedState;
    this.MouseState = {
		normal:		 '<LinearGradientBrush EndPoint="1,1" StartPoint="0.5,0"><GradientStop Color="#FFF6F6F6" Offset="0"/><GradientStop Color="#FF727272" Offset="0.8"/></LinearGradientBrush>',
		hover:		 '<LinearGradientBrush EndPoint="1,1" StartPoint="0.5,0"><GradientStop Color="#FFF6F6F6" Offset="0"/><GradientStop Color="#FF727272" Offset="0.8"/></LinearGradientBrush>',
		active:		 '<LinearGradientBrush EndPoint="1,1" StartPoint="0.5,0"><GradientStop Color="#FFF6F6F6" Offset="0"/><GradientStop Color="#FFA9A9A9" Offset="0.8"/></LinearGradientBrush>'
    }
    this.Canvas = Canvas;
	Canvas.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.handleButtonMouseEnter));
	Canvas.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.handleButtonMouseLeave));
	Canvas.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handleButtonMouseLeftButtonDown));
	Canvas.addEventListener("MouseLeftButtonUp", Silverlight.createDelegate(this, this.handleButtonMouseLeftButtonUp));
}
ScaleButton.prototype = {
	handleButtonMouseEnter: function(sender, eventArgs) 
	{
		this.handleButtonMouse("hover");
		this.Canvas.Children.getItem(0).Opacity = 1;
	},
	
	handleButtonMouseLeave: function(sender, eventArgs) 
	{
		this.handleButtonMouse("normal");
		this.Canvas.Children.getItem(0).Opacity = 0;
	},
	
	handleButtonMouseLeftButtonDown: function(sender, eventArgs) 
	{
		this.handleButtonMouse("active");
	},
	
	handleButtonMouseLeftButtonUp: function(sender, eventArgs) 
	{
		this.handleButtonMouse("hover");
	},
	
	handleButtonMouse: function(mouseState) 
	{
		var mouseStateXaml = this.Canvas.getHost().content.createFromXaml(this.MouseState[mouseState], false);
		this.Canvas.Children.getItem(1).fill = mouseStateXaml;
	}
}


SkipButton = function(Canvas, withClickedState){
	var thisClass = this;
    this.toString = function(){
        return "SkipButton";
    };
    this.withClickedState = withClickedState;
    this.Canvas = Canvas;
	Canvas.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.handleButtonMouseEnter));
	Canvas.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.handleButtonMouseLeave));
	Canvas.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handleButtonMouseLeftButtonDown));
	Canvas.addEventListener("MouseLeftButtonUp", Silverlight.createDelegate(this, this.handleButtonMouseLeftButtonUp));
}
SkipButton.prototype = {
	handleButtonMouseEnter: function(sender, eventArgs) 
	{
		sender.Children.getItem(1).Visibility = "Visible";
	},
	
	handleButtonMouseLeave: function(sender, eventArgs) 
	{
		sender.Children.getItem(1).Visibility = "Collapsed";
	},
	
	handleButtonMouseLeftButtonDown: function(sender, eventArgs) 
	{
		sender.Children.getItem(0).Opacity = 0.7;
	},
	
	handleButtonMouseLeftButtonUp: function(sender, eventArgs) 
	{
		sender.Children.getItem(0).Opacity = 1;
		sender.Children.getItem(1).Visibility = "Collapsed";
	}
	
}


TaskBarButton = function(Canvas, withClickedState){
	var thisClass = this;
    this.toString = function(){
        return "TaskBarButton";
    };
    this.withClickedState = withClickedState || null;
    this.MouseState = {
		normal:		 '<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"><GradientStop Color="#FF9F9797" Offset="0"/><GradientStop Color="#FF776767" Offset="0.5"/><GradientStop Color="#FF1B1B1B" Offset="0.5"/><GradientStop Color="#FF2B2B2B" Offset="1"/></LinearGradientBrush>',
		hover:		 '<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"><GradientStop Color="#FFd8d8d8" Offset="0"/><GradientStop Color="#FF969696" Offset="0.5"/><GradientStop Color="#FF797676" Offset="0.5"/><GradientStop Color="#FF373737" Offset="1"/></LinearGradientBrush>',
		active:		 '<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"><GradientStop Color="#FF374da4" Offset="0"/><GradientStop Color="#FF4947ff" Offset="0.5"/><GradientStop Color="#FF2a12da" Offset="0.5"/><GradientStop Color="#FF201c3e" Offset="1"/></LinearGradientBrush>',
		activeHover: '<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"><GradientStop Color="#FF5a70df" Offset="0"/><GradientStop Color="#FF5a70df" Offset="0.5"/><GradientStop Color="#FF4a35e0" Offset="0.5"/><GradientStop Color="#FF34269d" Offset="1"/></LinearGradientBrush>'
    }
    this.Canvas = Canvas;
    this.isDisabled = (Canvas.Tag == "disabled");
    if(!this.isDisabled){
		Canvas.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.handleButtonMouseEnter));
		Canvas.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.handleButtonMouseLeave));
		Canvas.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handleButtonMouseClick));
	} else {
		if(Canvas.Children.GetItem(Canvas.Children.Count-1).ForeGround){
			Canvas.Children.GetItem(Canvas.Children.Count-1).ForeGround = "#BBD7D7D7";
		}
	}
}
TaskBarButton.prototype = {
	handleButtonMouseEnter: function(sender, eventArgs) 
	{
		this.handleButtonMouse(true);
	},
	
	handleButtonMouseLeave: function(sender, eventArgs) 
	{
		this.handleButtonMouse(false);
	},
	
	handleButtonMouse: function(hasEntered) 
	{
		var mouseState = "";
		if(hasEntered){
			mouseState = (this.buttonMouseStateClicked) ? "activeHover" : "hover" ;
		} else {
			mouseState = (this.buttonMouseStateClicked) ? "active" : "normal" ;
		}
		var mouseStateXaml = this.Canvas.getHost().content.createFromXaml(this.MouseState[mouseState], false);
		this.Canvas.Children.getItem(0).fill = mouseStateXaml;
	},
	
	buttonMouseStateClicked: false,
	handleButtonMouseClick: function(sender, eventArgs) 
	{
		if(this.withClickedState){
			this.buttonMouseStateClicked = !this.buttonMouseStateClicked;
			if(this.buttonMouseStateClicked){
				this.Canvas.Children.getItem(1).Opacity = 1;
			} else {
				this.Canvas.Children.getItem(1).Opacity = 0;
			}
			this.handleButtonMouse(true);
		}
	},
	addClickEvent: function(eventHandler){
		if(!this.isDisabled){
			this.Canvas.addEventListener("MouseLeftButtonDown", eventHandler);
		}
	},
	cancelClickedState: function(){
			this.buttonMouseStateClicked = false;
			this.Canvas.Children.getItem(1).Opacity = 0;
			this.handleButtonMouse(false);
	}
}

LinkButton = function(Canvas, url){
	var thisClass = this;
    this.toString = function(){
        return "LinkButton";
    };
    this.Url = url
    this.Canvas = Canvas;
	Canvas.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.handleButtonMouseEnter));
	Canvas.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.handleButtonMouseLeave));
	Canvas.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handleButtonMouseClick));
}
LinkButton.prototype = {
	handleButtonMouseEnter: function(sender, eventArgs) 
	{
		this.handleButtonMouse(true);
	},
	
	handleButtonMouseLeave: function(sender, eventArgs) 
	{
		this.handleButtonMouse(false);
	},
	
	handleButtonMouse: function(hasEntered) 
	{
		if(hasEntered){
			this.Canvas.Children.getItem(0).TextDecorations = "Underline";
		} else {
			this.Canvas.Children.getItem(0).TextDecorations = "None";
		}
	},
	handleButtonMouseClick: function(sender, eventArgs) 
	{
		window.open(this.Url, "_blank");
	}
}

