if (!window.SilverlightJSApplication1)
	window.SilverlightJSApplication1 = {};

SilverlightJSApplication1.Scene = function() 
{
}

SilverlightJSApplication1.Scene.prototype =
{
	handleLoad: function(plugIn, userContext, rootElement) 
	{
		this.plugIn = plugIn;
		
		// Sample button event hookup: Find the button and then attach event handlers
		this.button = rootElement.children.getItem(0);	
		
		this.button.addEventListener("MouseEnter", Silverlight.createDelegate(this, this.handleMouseEnter));
		this.button.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handleMouseDown));
		this.button.addEventListener("MouseLeftButtonUp", Silverlight.createDelegate(this, this.handleMouseUp));
		this.button.addEventListener("MouseLeave", Silverlight.createDelegate(this, this.handleMouseLeave));
	    this.button = rootElement.children.getItem(1);	
	},
	
	// Sample event handlers
	handleMouseEnter: function(sender, eventArgs) 
	{
		// The following code shows how to find an element by name and call a method on it.
		var mouseEnterAnimation = sender.findName("mouseEnter");
		mouseEnterAnimation.begin(); 
	},
	
	handleMouseDown: function(sender, eventArgs) 
	{
		var mouseDownAnimation = sender.findName("mouseDown");
		mouseDownAnimation.begin(); 
	},
	
	handleMouseUp: function(sender, eventArgs) 
	{
		var mouseUpAnimation = sender.findName("mouseUp");
		mouseUpAnimation.begin(); 
        var SP = sender.findName("StopPlay");	
        var strSP = SP.getValue("Text");
        var Metronome = sender.findName("Metroname");
        var Speed = Metronome.GetValue("Text");
        var AnimLancia = sender.findName("AnimLancia");
	    var LanciaAnimation = sender.findName("LanciaAnimation");    
        if (Speed < 40) {
        Speed = 40;
        }
        var Metron = 60 / Speed;
        FullTimeFormat = new String("0:0:" + Metron);
        var MyDuration = String(FullTimeFormat.substr(0,8));
	    if (strSP == "Stop") {
	        SP.setValue("Text", "Play");
	        LanciaAnimation["RepeatBehavior"] = "1";
	        AnimLancia.Stop();
	    } else {
	        SP.setValue("Text", "Stop");
	        LanciaAnimation["Duration"] = MyDuration;
	        LanciaAnimation["RepeatBehavior"] = "Forever";
            AnimLancia.Begin();
            Tempo(sender, Speed);
        }

	},
	
	handleMouseLeave: function(sender, eventArgs) 
	{
		var mouseLeaveAnimation = sender.findName("mouseLeave");
		mouseLeaveAnimation.begin(); 
	}
}
var mouseDownPosition = 0;
var mouseDownValue = -1;
var thumbCenter = 0;

function slider_Loaded(sender, args) {
    slider_SetValue(sender, 0);
}

function slider_MouseLeftButtonDown(sender, args) {
    
    var coordinate = args.getPosition(null).y;
    var slider = sender.findName("slider");
    coordinate -= slider["Canvas.top"];
    slider_SetValue(slider, coordinate - thumbCenter);  
}

function slider_thumb_MouseLeftButtonDown(sender, args) {
    var slider = sender.findName("slider");
    sender.captureMouse();
    mouseDownValue = slider_GetValue(slider);
    mouseDownPosition = args.getPosition(null).y;
}

function slider_thumb_MouseLeftButtonUp(sender, args) {
    var slider = sender.findName("slider");
    slider.releaseMouseCapture();
    mouseDownValue = -1;
}

function slider_thumb_MouseMove(sender, args) {
    var slider = sender.findName("slider");
    if (mouseDownValue != -1) {
        var newValue = mouseDownValue + (args.getPosition(null).y - mouseDownPosition);    
        slider_SetValue(slider, newValue);
    }   
}

function slider_GetValue(sender) {
    var thumb = sender.findName("slider_thumb");
    return thumb["Canvas.top"]; 
}

function slider_SetValue(sender, newValue) {
    
    if (newValue > sender.width ) {
        newValue = sender.width;
        mouseDownValue = -1;
    }
    if (newValue < - thumbCenter) {
        newValue = - thumbCenter;
        mouseDownValue = -1;
    }
    var thumb = sender.findName("slider_thumb");
    thumb["Canvas.top"] = newValue;
    var Metronome = sender.findName("Metroname");
    Metronome.setValue("Text", (thumb["Canvas.top"]+40).toString());
    var SP = sender.findName("StopPlay");	
    var strSP = SP.getValue("Text");
    var Ellipse = sender.findName("ellipse");
    var Metronome = sender.findName("Metroname");
    var Speed = Metronome.GetValue("Text");
    var AnimLancia = sender.findName("AnimLancia");
    var LanciaAnimation = sender.findName("LanciaAnimation");  
    var Metron = 60 / Speed;
    FullTimeFormat = new String("0:0:" + Metron);
    var MyDuration = String(FullTimeFormat.substr(0,8));
    Tempo(sender, Speed);
    if (strSP == "Stop") {
        SP.setValue("Text", "Stop");
        LanciaAnimation["Duration"] = MyDuration;
        LanciaAnimation["RepeatBehavior"] = "Forever";
        AnimLancia.Begin();

   }
}

function Tempo(sender, Speed) {

    var TempoName = sender.findName("TempoName");
    var TextSliderValue = sender.findName("TextSliderValue");
    var thumb = sender.findName("slider_thumb");
    var MetroName = sender.findName("Metroname");
    var txtSliderValue = thumb["Canvas.top"] - 5
	TempoName.setValue("Canvas.Top", txtSliderValue.toString());
    TextSliderValue.setValue("Canvas.Top", txtSliderValue.toString());
    TextSliderValue.setValue("Text", Speed.toString());
    if (Speed <= 40) {
        TempoName.setValue("Text", "LARGO");
    } else {
      if   (Speed <= 66)  {
      	   TempoName.setValue("Text", "LARGHETTO");
      } else {
          if   (Speed <= 76)  {
      	       TempoName.setValue("Text", "ADAGIO");
          } else {
              if ((Speed > 99)) {
                  MetroName.setValue("Canvas.Left", (-40).toString());
              } else {
                  MetroName.setValue("Canvas.Left", (-25).toString());
              }
              if   (Speed <= 104)  {
      	           TempoName.setValue("Text", "ANDANTE");
              } else {
                  if   (Speed <= 116)  {
      	               TempoName.setValue("Text", "MODERATO");
                  } else {
                      if   (Speed <= 168)  {
      	                   TempoName.setValue("Text", "ALLEGRO");
                      } else {
                          if   (Speed <= 200)  {
      	                       TempoName.setValue("Text", "PRESTO");
                          } else {
                              if   (Speed <= 208)  {
      	                           TempoName.setValue("Text", "PRESTISSIMO");
                              }
                          }
                       }
                   }
               }
           }
        }
    }
}
