﻿/// <reference path="scripts/Overlay.js" />

//var m_timeBarXaml = null;
function TimeBar(control, overlay, markerXaml, timeBarXaml)
{
    /// <summary>Create a time bar</summary>
    /// <param name="control" type="SilverlightControl">the Silverlight Control</param>
    /// <param name="overlay" type="Overlay">the overlay</param>
    /// <param name="markerXaml" type="String">the XAML for timebar markers</param>
    /// <param name="timeBarXaml" type="String">the XAML for the TimeBar</param>
    /// <return type="TimeBar">a new TimeBar object</return>
    
    this.Control = control;
    this.Overlay = overlay;
    this.Overlay.TimeBar = this;
    this.TimelineBars = this.Control.content.findName("TimelineBars");
    this.Media = this.Control.content.findName("Media");
    this.MarkerXaml = markerXaml;
    this.TimeBarXaml = timeBarXaml;
    this.CreateBar();
}

TimeBar.prototype.Delete = function()
{
    
}

function EnterMarker(sender, eventArgs)
{
    var timeCode = sender.findName("TimeCode");
    
    timeCode.Visibility = "Visible";
}

function LeaveMarker(sender, eventArgs)
{
    var timeCode = sender.findName("TimeCode");
    
    timeCode.Visibility = "Collapsed";
}

TimeBar.prototype.Add = function(keyFrame)
{
    var keyFrameMarker = this.Control.content.createFromXaml(this.MarkerXaml, true);
    
    var timeCode = keyFrameMarker.findName("TimeCode");
    
    var rectangle = keyFrameMarker.findName("Rectangle");
    
    rectangle.addEventListener("MouseEnter", EnterMarker);
    rectangle.addEventListener("MouseLeave", LeaveMarker);
    
    timeCode.Text = formatTime(keyFrame.TimeCode);
    
    timeCode.Visibility = "Collapsed";
    
    //var percentage = keyFrame.TimeCode / this.Media.NaturalDuration.seconds;
    
    var left = this.Timeline.Scale * keyFrame.TimeCode;//this.Media.NaturalDuration.seconds * this.Timeline.TimelineBars.Width * percentage;
    
    keyFrameMarker["Canvas.Left"] = left;
    
    this.KeyFrames.children.Add(keyFrameMarker);
    
    var min = this.TimelineBars.Width;
    var max = 0;
    
    for (var i = 0; i < this.KeyFrames.children.Count; i++)
    {
        left = this.KeyFrames.children.GetItem(i)["Canvas.Left"];
        
        min = Math.min(min, left);
        max = Math.max(max, left);
    }
    
    this.Span["Canvas.Left"] = min;
    this.Span.Width = max - min;
}

TimeBar.prototype.CreateBar = function()
{
    var timeBar = this.Control.content.createFromXaml(this.TimeBarXaml, true);
    timeBar.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.SelectOverlay));
    this.Shape = timeBar;
    this.KeyFrames = timeBar.findName("KeyFrames");
    this.Span = timeBar.findName("Span");
    this.Name = timeBar.findName("Name");
    
    this.Name.Text = this.Overlay.Name;

    //var timeCode = this.Overlay.TimeCode;
    
    
//    var keyFrame = this.Control.content.createFromXaml(m_timeBarKeyframeXaml, true);
//    
//    keyFrame["Canvas.Left"] = this.Span["Canvas.Left"];
//    this.Name["Canvas.Left"] = this.Span["Canvas.Left"] + 5;
//    this.KeyFrames.children.Add(keyFrame);
}

TimeBar.prototype.SelectOverlay = function(sender, eventArgs)
{
    var select = this.Shape.findName("Select");
    select.Begin();
    
    Page.DeselectOverlay();
    
    this.Overlay.Select(this.Control);
}