﻿if (!window.CoreDevHead)
	window.CoreDevHead = {};

CoreDevHead.Page = function() 
{
	this.StoryBoards = new Array();
	this.StoryBoardMark = new Array();
}

CoreDevHead.Page.prototype =
{
	handleLoad: function(control, userContext, rootElement) 
	{
		this.control = control;
		var xmlDoc;
		
		// Load XAML and Copy out the storyboard xaml
		var xamlContent = document.getElementById("mainHeadContent").text;
		
		try //Internet Explorer
		{
			xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
			xmlDoc.async = false;
			xmlDoc.loadXML( xamlContent );
			
			// use xpath to extract storyboard
			var result = xmlDoc.selectNodes( "//Canvas.Resources/*" );
			
			// store them into array
			for( i = 0; i < result.length; i++ )
			{
				var name = result[i].attributes.getNamedItem("x:Name").value;
				this.StoryBoards[name] = result[i].xml;
			}
		}
		catch(e)
		{
			//try //Firefox, Mozilla, Opera, etc.
			//{
			//	xmlDoc = document.implementation.createDocument("","",null);
			//	parser = new DOMParser();
			//	xmlDoc = parser.parseFromString( xamlContent,"text/xml");
				
				// Do something
		    //}
			//catch(e) {alert(e.message)}
		}
		
		// Create a Downloader object.
	    var fontDownloader = control.createObject("downloader");

	    // Add Completed event.
	    fontDownloader.addEventListener("Completed", "Downloader_Completed");

	    // Initialize the Downloader request.
	    fontDownloader.open("GET", "http://coredeveloper.net/Silverlight/04-TH-Niramit-AS.zip");
	    fontDownloader.send();
		
	},
	
	// 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.
		// this.control.content.findName("Storyboard1").Begin();
	}
}

function Downloader_Completed(sender, eventArgs) 
{
	SLHead.control.content.root.FindName( "Subject" ).setFontSource( sender );
}

function VideoItem_MouseEnter(sender, eventArgs) 
{
	var storyBoard = 0;
	var id = sender.Name.substring( 6 );
	
	if ( SLHead.StoryBoardMark[id] == null )
	{
		// Create new StoryBoard for an item
		var copy = SLHead.StoryBoards["VideoOver"];
		
		copy = copy.replace( /VideoOver/g, "VideoOver" + id );
		copy = copy.replace( /VideoThumb_Explode/g, "VideoThumb_Explode" + id );
		copy = copy.replace( /FadeOver/g, "FadeOver" + id );
		copy = copy.replace( /VideoThumb\"/g, "VideoThumb" + id + '"' );
		copy = copy.replace( /canvas/g, "canvas" + id );
		copy = copy.replace( /player/g, "player" + id );
		
		storyBoard = SLHead.control.content.createFromXaml(copy, false);
		SLHead.control.content.root.Resources.Add( storyBoard );

		SLHead.StoryBoardMark[ id ] = 1;
	} 
	else
	{
		storyBoard = SLHead.control.content.root.FindName( "VideoOver" + id );
	}
	
	storyBoard.Begin();
	
	var videoMap = SLHead.VideoMap[id];
	var subject = SLHead.control.content.root.FindName( "Subject" );

	SLHead.control.content.root.FindName( "player" + id ).Source = videoMap.videoUrl;
	
	subject.Inlines.Clear();
	subject.Inlines.Add( SLHead.control.content.createFromXaml('<Run FontFamily="TH Niramit AS" FontSize="24" Text="' + videoMap.subject + '"/>', false) );
	subject.Inlines.Add( SLHead.control.content.createFromXaml('<LineBreak/>', false) );
	subject.Inlines.Add( SLHead.control.content.createFromXaml('<Run FontFamily="TH Niramit AS" FontSize="20" Foreground="#FFD4D4D4" Text="' + videoMap.excerpt + '"/>', false) );
	subject.Inlines.Add( SLHead.control.content.createFromXaml('<LineBreak/>', false) );
	subject.Inlines.Add( SLHead.control.content.createFromXaml('<Run FontFamily="TH Niramit AS" FontSize="20" Foreground="#FFFFFFFF" Text="คลิ๊กที่วีดีโอ เพื่อดูขนาดเต็ม"/>', false) );
}

function VideoItem_Click(sender, eventArgs) 
{
	var id = sender.Name.substring( 6 );
	var videoMap = SLHead.VideoMap[id];
	
	window.location.href = videoMap.postUrl;
}

function VideoItem_MouseLeave(sender, eventArgs) 
{
	var storyBoard = 0;
	var id = sender.Name.substring( 6 );
	
	if ( SLHead.StoryBoardMark[id] != 2 )
	{
		// Create new StoryBoard for an item
		var copy = SLHead.StoryBoards["VideoOut"];
		
		copy = copy.replace( /VideoOut/g, "VideoOut" + id );
		copy = copy.replace( /VideoThumb_Explode/g, "VideoThumb_Explode" + id );
		copy = copy.replace( /FadeOver/g, "FadeOver" + id );
		copy = copy.replace( /VideoThumb\"/g, "VideoThumb" + id + '"' );
		copy = copy.replace( /canvas/g, "canvas" + id );
		copy = copy.replace( /player/g, "player" + id );
		
		storyBoard = SLHead.control.content.createFromXaml(copy, false);
		SLHead.control.content.root.Resources.Add( storyBoard );
		
		storyBoard.AddEventListener( "Completed", "VideoOutAnimation_Completed" );
		
		SLHead.StoryBoardMark[ id ] = 2;
	} 
	else
	{
		storyBoard = SLHead.control.content.root.FindName( "VideoOut" + id );
	}
	
	storyBoard.Begin();
}


function VideoOutAnimation_Completed(sender, eventArgs) 
{
	var id = sender.Name.substring( 8 );
	var player = SLHead.control.content.root.FindName( "player" + id );
	
	player.Source = null;
}