if (!window.Ticker)
	window.Ticker = {};

Ticker.Page = function() 
{
}

assets = ["Sunset.jpg", "Blue hills.jpg", "1356261152_cbe92ed43a.jpg", "1362154543_e4f5b90cbf.jpg", "1368140047_f11242c26a.jpg", "1388143248_3404912d0a.jpg",
	"1353876174_defbdfc4fc.jpg", "1382095098_1f60727d48.jpg", "1371597337_3ac26c292f.jpg"];
current_asset = 0;
story_board_count = 0;
var _rootElement = null;

function nextImage()
{
    if (current_asset == (assets.length - 1))
        current_asset = 0;
    else   
        current_asset++;
    
    return "assets/" + assets[current_asset];
}

function spinNewPhoto(sender, eventArgs)
{
    addStoryBoard(_rootElement, null);
}

Ticker.Page.prototype =
{
	handleLoad: function(control, userContext, rootElement) 
	{
		this.control = control;
		
		_rootElement = rootElement;
		rootElement.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handleMouseDown));
		
		if ( (assets) && (assets.length > 0) )
		    addStoryBoard(rootElement, null);
		else   
		    this.control.content.findName("Error").Opacity = 100;
	},
	
	// Sample event handler
	handleMouseDown: function(sender, eventArgs) 
	{
		// The following line of code shows how to find an element by name and call a method on it.
	}
}

function addStoryBoard(sender, eventArgs)
{
    story_board_count++;
	var plugin = sender.getHost();
    var start_y = Math.floor(Math.random() * 100);
    var start_x = Math.floor(Math.random() * 200);	
    var transform_x = Math.floor(Math.random() * 400);
    var transform_y = Math.floor(Math.random() * 200);
    var rotate_to = Math.floor(Math.random() * 60);
    
    if (Math.random() < 0.5)
    {
        transform_x = (transform_x * -1);
    }
    if (Math.random() < 0.5)
    {
        start_y = (start_y * -1);
    }
    if (Math.random() > 0.5)
    {
        start_y = (start_y * -1);
    }
    if (Math.random() > 0.5)
    {
        transform_y = (transform_y * -1);
    }
    
    if (story_board_count > 15)
    {
        _rootElement.children.Clear();
        story_board_count = 0;
    }
    
	var new_board = '<Storyboard xmlns="http://schemas.microsoft.com/client/2007" ' +
	    'xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Name="Transition_' + story_board_count + '" ' +
	    'Completed="spinNewPhoto">' +
		'	<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Frame_' + story_board_count + '" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">' +
		'		<SplineDoubleKeyFrame KeyTime="00:00:00" Value="1.3"/>' +
		'		<SplineDoubleKeyFrame KeyTime="00:00:01.300000" Value="0.6"/>' +
		'	</DoubleAnimationUsingKeyFrames>' + 
		'	<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Frame_' + story_board_count + '" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">' +
		'		<SplineDoubleKeyFrame KeyTime="00:00:00" Value="' + transform_x + '"/>' +
		'	</DoubleAnimationUsingKeyFrames>' +
		'	<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Frame_' + story_board_count + '" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">' +
		'		<SplineDoubleKeyFrame KeyTime="00:00:00" Value="1.3"/>' +
		'		<SplineDoubleKeyFrame KeyTime="00:00:01.3000000" Value="0.6"/>' +
		'	</DoubleAnimationUsingKeyFrames>' +
		'	<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Frame_' + story_board_count + '" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">' +
		'		<SplineDoubleKeyFrame KeyTime="00:00:00" Value="' + transform_y + '" />' +
		'	</DoubleAnimationUsingKeyFrames>' +
		'	<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Frame_' + story_board_count + '" Storyboard.TargetProperty="(UIElement.Opacity)">' +
		'		<SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/>' +
		'		<SplineDoubleKeyFrame KeyTime="00:00:01.300000" Value="1"/>' +
		'	</DoubleAnimationUsingKeyFrames>' +
		'	<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Frame_' + story_board_count + '" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)">' +
		'		<SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/>' +
		'		<SplineDoubleKeyFrame KeyTime="00:00:01.3000000" Value="' + rotate_to + '"/>' +
		'	</DoubleAnimationUsingKeyFrames>' +
		'</Storyboard>';
		
	var new_image = '<Canvas xmlns="http://schemas.microsoft.com/client/2007" ' +
	    'xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="359.333" Height="266.667" ' +
	    'Canvas.Left="' + start_x + '" Canvas.Top="' + start_y + '" RenderTransformOrigin="0.5,0.5" ' +
	    'x:Name="Frame_' + story_board_count + '" Opacity="0" MouseEnter="imageMouseEnter" MouseLeave="imageMouseLeave" MouseLeftButtonDown="imageMouseClick">' +
		'<Canvas.RenderTransform>' +
		'	<TransformGroup>' +
		'		<ScaleTransform ScaleX="1" ScaleY="1"/>' +
		'		<SkewTransform AngleX="0" AngleY="0"/>' +
		'		<RotateTransform Angle="0"/>' +
		'		<TranslateTransform X="0" Y="0"/>' +
		'	</TransformGroup>' +
		'</Canvas.RenderTransform>' +
		'<Rectangle Width="359.333" Height="266.667" Fill="#FFFFFFFF" Stroke="#FF000000"/>' +
		'<Image Width="337.778" Height="253.331" Source="' + nextImage() + '" Stretch="Fill" ' +
		'RenderTransformOrigin="0.5,0.5" x:Name="Image_' + story_board_count + '" Opacity="1" ' +
		'Visibility="Visible" Canvas.Left="10.224" Canvas.Top="8.002">' +
		'	<Image.RenderTransform>' +
		'		<TransformGroup>' +
		'			<ScaleTransform ScaleX="-1" ScaleY="1"/>' +
		'			<SkewTransform AngleX="0" AngleY="0"/>' +
		'			<RotateTransform Angle="0"/>' +
		'			<TranslateTransform X="0" Y="0"/>' +
		'		</TransformGroup>' +
		'	</Image.RenderTransform>' +
		'</Image>' +
		'<Rectangle Width="340" Height="255" Fill="#FFFFFFFF" Stroke="#FFFFFF" Opacity="0" Canvas.Left="10.224" Canvas.Top="8.002" x:Name="Frame_' + story_board_count + '_Overlay"/>' +
	'</Canvas>';
	
	var board_xaml = plugin.content.createFromXaml(new_board);
	var image_xaml = plugin.content.createFromXaml(new_image);
	
	sender.resources.Add(board_xaml);
	sender.children.Add(image_xaml);
	
	sender.findName("Transition_" + story_board_count).Begin();
}

function imageMouseEnter(sender, args) 
{
	var overlay = sender.findName(sender.name + "_Overlay");
	overlay.Opacity = 0.65;
}

function imageMouseLeave(sender, args) 
{
	var overlay = sender.findName(sender.name + "_Overlay");
	overlay.Opacity = 0;
}

function imageMouseClick(sender, args)
{
	alert("ROFL! YOU CLICKED AN IMAGE!");
}