﻿/// <reference path="Utility.js" />
/// <reference path="RectangleTool.js" />

function RectangleOverlay()
{
    ///<summary>Create a RectangleOverlay</summary>
    ///<return type="RectangleOverlay">a new RectangleOverlay</return>
    
    this.ToolName = "Rectangle";
}

RectangleOverlay.prototype.Activate = function(visual, keyFrame)
{
    this.Page.Tools["Rectangle"].Select(visual, keyFrame);
}

RectangleOverlay.prototype.CreateKeyFrame = function(page)
{
    this.Page = page;
    
    var keyFrame = new RectangleKeyFrame(page.Media.Position.seconds, page.Tool.Shape["Canvas.Left"], 
        page.Tool.Shape["Canvas.Top"], page.Tool.Rectangle.Width, page.Tool.Rectangle.Height);
        
    return keyFrame;
}

RectangleOverlay.prototype.GetShapeXaml = function(name, keyframes, hyperlink)
{
    var xaml = '\t<Rectangle Loaded="OverlayLoaded" Canvas.Left="0" Width="0" Height="0" x:Name="' + name + '" Stroke="Gold" Opacity="0" Fill="#33FFFFFF" Tag="' + hyperlink + '" MouseLeftButtonDown="OpenLink" Cursor="Hand" />\n';
    
    return xaml;
}

RectangleOverlay.prototype.GetAnimationXaml = function(overlay)
{
    overlay.KeyFrames.sort(SortKeyFrames);
    
    var xaml = '\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName="' + overlay.Name + '" Storyboard.TargetProperty="Opacity">\n';
    
    xaml += '\t\t\t<DiscreteDoubleKeyFrame Value="1" KeyTime="' + formatTime(overlay.KeyFrames[0].TimeCode) + '"/>\n';
    xaml += '\t\t\t<DiscreteDoubleKeyFrame Value="0" KeyTime="' + formatTime(overlay.KeyFrames[overlay.KeyFrames.length - 1].TimeCode) + '"/>\n';
    
    xaml += '\t\t</DoubleAnimationUsingKeyFrames>\n';
    
    xaml += '\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName="' + overlay.Name + '" Storyboard.TargetProperty="(Canvas.Left)">\n';
    for (var i = 0; i < overlay.KeyFrames.length; i++)
    {
        xaml += GetKeyFrameXaml("Canvas.Left", i == 0, overlay.KeyFrames[i]);
    }
    
    xaml += '\t\t</DoubleAnimationUsingKeyFrames>\n';

    xaml += '\t\t<DoubleAnimationUsingKeyFrames Storyboard.TargetName="' + overlay.Name + '" Storyboard.TargetProperty="(Canvas.Top)">\n';
    for (var i = 0; i < overlay.KeyFrames.length; i++)
    {
        xaml += GetKeyFrameXaml("Canvas.Top", i == 0, overlay.KeyFrames[i]);
    }
    
    xaml += '\t\t</DoubleAnimationUsingKeyFrames>\n';

    xaml += '\t\t<DoubleAnimationUsingKeyFrames FillBehavior="Stop" Storyboard.TargetName="' + overlay.Name + '" Storyboard.TargetProperty="Width">\n';
    for (i = 0; i < overlay.KeyFrames.length; i++)
    {
        xaml += GetKeyFrameXaml("Width", i == 0, overlay.KeyFrames[i]);
    }
    
    xaml += '\t\t</DoubleAnimationUsingKeyFrames>\n';
    
    xaml += '\t\t<DoubleAnimationUsingKeyFrames FillBehavior="Stop" Storyboard.TargetName="' + overlay.Name + '" Storyboard.TargetProperty="Height">\n';
    
    for (i = 0; i < overlay.KeyFrames.length; i++)
    {
        xaml += GetKeyFrameXaml("Height", i == 0, overlay.KeyFrames[i]);
    }
    
    xaml += '\t\t</DoubleAnimationUsingKeyFrames>\n';
    
    return xaml;
}
