﻿/// <reference path="Utility.js" />
function PolygonOverlay()
{
    this.ToolName = "Polygon";
}

PolygonOverlay.prototype.toString = function()
{
    return "PolygonOverlay";
}

PolygonOverlay.prototype.CreateKeyFrame = function(page)
{
    var keyFrame = new PolygonKeyFrame(page.Media.Position.seconds, page.Tool.Points, page.Tool.Tool);
        
    return keyFrame;
}


PolygonOverlay.prototype.GetShapeXaml = function(name, keyFrames, hyperlink)
{
    keyFrames.sort(SortKeyFrames);
     
	var xaml = '<Path x:Name="' + name + '" Fill="#19FFFFFF" Stretch="None" Stroke="Gold" Tag="' + hyperlink + '" Cursor="Hand" Loaded="OverlayLoaded">\n';
		xaml+='<Path.Data>\n';
	    xaml+='<PathGeometry>\n';
				xaml+='<PathGeometry.Figures>\n';
					xaml+='<PathFigure x:Name="' + name + '_Path" IsClosed="true">\n';
						xaml+='<PathFigure.Segments>\n';
						for (var i = 1; i < keyFrames[0].Points.length; i++)
						{
						    xaml+= '<LineSegment x:Name="' + name + "_Segment" + i + '"/>\n';
						}
						xaml+='</PathFigure.Segments>\n';
					xaml+='</PathFigure>\n';
				xaml+='</PathGeometry.Figures>\n';
			xaml+='</PathGeometry>\n';
		xaml+='</Path.Data>\n';
	xaml+='</Path>\n';
	
	return xaml;
}

PolygonOverlay.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<PointAnimationUsingKeyFrames FillBehavior="Stop" Storyboard.TargetName="' + overlay.Name + '_Path" Storyboard.TargetProperty="StartPoint">\n';
    
    for (var i = 0; i < overlay.KeyFrames.length; i++)
    {
        xaml += overlay.KeyFrames[i].GetKeyFrameXaml(0, i == 0);
    }
    
    xaml += '\t\t</PointAnimationUsingKeyFrames>\n';
    
    for (var j = 1; j < overlay.KeyFrames[0].Points.length; j++)
    {
        xaml += '\t\t<PointAnimationUsingKeyFrames FillBehavior="Stop" Storyboard.TargetName="' + overlay.Name + '_Segment' + j +'" Storyboard.TargetProperty="Point">\n';
        
        for (i = 0; i < overlay.KeyFrames.length; i++)
        {
            xaml += overlay.KeyFrames[i].GetKeyFrameXaml(j, i==0);
        }
        
        xaml += '\t\t</PointAnimationUsingKeyFrames>\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';
    
    return xaml;
}