Slider.prototype.RootName = "SliderCanvas";
Slider.prototype.s = null;
Slider.prototype.thumbObj = null;

function Slider(s)
{
    this.s = s;
    this.plugin = s.getHost();
	this.MainCanvas = this.s.findname("MainCanvas");
    this.DebugBox = this.s.findname("DebugBox");
    this.xamlObject = this.s.findname(this.RootName);
    
    this.thumbObj = this.s.findname("SliderThumb");

    // Setup events.
    this.MouseMoveToken = this.xamlObject.addEventListener("MouseMove", this.OnMouseMove);
    this.MouseLeftButtonDownToken = this.xamlObject.addEventListener("MouseLeftButtonDown", this.OnMouseLeftButtonDown);
    this.MouseLeftButtonUpToken = this.xamlObject.addEventListener("MouseLeftButtonUp", this.OnMouseLeftButtonUp);
}

Slider.prototype.SetThumbPosition = function(frac)
{
    //Debug("pos = " + frac * slider.xamlObject["Width"] + "         w = " + slider.xamlObject["Width"]);
    slider.thumbObj["Canvas.Left"] = frac * slider.xamlObject["Width"];
}

Slider.prototype.MouseMoveToken = null;
Slider.prototype.MouseLeftButtonDownToken = null;
Slider.prototype.MouseLeftButtonUpToken = null;
Slider.prototype.lastX = 0;
Slider.prototype.lastT = (new Date()).getTime()/1000.0;

Slider.prototype.OnMouseMove = function(sender,e)
{
    //dd("MOVE: " + Math.random() + "mouse down = " + slider.mouseDown);
    
    if (!slider.mouseDown)
    {
        return;
    }
    
    var currX = e.GetPosition(slider.xamlObject).x;
    var currT = (new Date()).getTime()/1000.0;
    
    var frac = currX / slider.xamlObject["Width"];
    if (frac > 1) frac = 1;
    if (frac < 0) frac = 0;
    
    var img = backgroundMovie.GetInterpolatedImage(frac);
    
    var thumbPos = frac * slider.xamlObject["Width"];
    
    if (thumbPos < 0)
        thumbPos = 0;
        
    if (thumbPos > slider.xamlObject["Width"])
        thumbPos = slider.xamlObject["Width"];
        
    slider.thumbObj["Canvas.Left"] = thumbPos;

    MainCanvas.findname("ThumbGradMid")["Offset"] = frac;
    //MainCanvas.findname("NavBarGradStop2")["Offset"] = .563559 + 0.1 * frac;
    
    mainWindow.xamlObject["Opacity"] = 1;
    backgroundMovie.SetInterpolatedImage(frac);
    
    mainWindow.RepositionHUD(frac);
    
    /*
    var dX = (currX - this.lastX);
    var dT = (currT - this.lastT);
    if (dT > 0)
    {
        var dV = dX / dT;
        var topX = MainCanvas.findname("TopStrip")["Canvas.Left"];
        var newX = topX + dV/300;
        //Debug("   topX = " + topX + " newX = " + newX);
        MainCanvas.findname("TopStrip")["Canvas.Left"] = newX;//0.1 * (1 - frac) * 720;
    }
    */
    this.lastX = currX;
    this.lastT = currT;
}

Slider.prototype.mouseDown = false;

Slider.prototype.OnMouseLeftButtonDown = function(s,e)
{
    //dd("DOWN: mouse down = " + slider.mouseDown);
    slider.mouseDown = true;
}

Slider.prototype.OnMouseLeftButtonUp = function(s,e)
{
    //dd("UP: mouse down = " + slider.mouseDown);
    slider.mouseDown = false;
}

Slider.prototype.IsVisible = function()
{
    //Debug("opac = " + this.xamlObject.findname("RotatePanel")["Opacity"]);
    return (this.xamlObject.findname("RotatePanel")["Opacity"] == 1);
}