function createSilverlight()
{
	var scene = new Loading.Page();
	Silverlight.createObjectEx({
		source: "Loading.xaml",
		parentElement: document.getElementById("SilverlightControlHost"),
		id: "SilverlightControl",
		properties: {
			width: "100%",
			height: "100%",
			version: "1.0",
			background: "#320406"
		},
		events: {
			onLoad: onLoad //Silverlight.createDelegate(scene, scene.handleLoad)
		}
	});
}


if (!window.Silverlight) 
	window.Silverlight = {};

Silverlight.createDelegate = function(instance, method) {
	return function() {
		return method.apply(instance, arguments);
	}
}

// Loading event
var isLoadingBegin = false;
function onLoad(control, context, rootElement)
{
	var downloader = control.CreateObject("downloader");
	downloader.AddEventListener("DownloadProgressChanged", onLoadProgressChanged);
	downloader.AddEventListener("Completed", onLoadCompleted);
	downloader.Open("GET", "Trailers.xaml");
	downloader.Send();
}
function onLoadProgressChanged(sender, eventArgs)
{
	if (!isLoadingBegin)
	{
		sender.getHost().content.findName("Loading").Begin();
		isLoadingBegin = true;
	}
	
	sender.getHost().content.findName("Percentage").Text = Math.floor(sender.DownloadProgress * 100) + "%";
}
function onLoadCompleted(sender, eventArgs)
{
	sender.getHost().content.findName("Loading").Begin();

	var scene = new Trailers.Page();
	Silverlight.createObjectEx({
		source: "Trailers.xaml",
		parentElement: document.getElementById("SilverlightControlHost"),
		id: "SilverlightControl",
		properties: {
			width: "100%",
			height: "100%",
			version: "1.0",
			background: "#320406"
		},
		events: {
			onLoad: Silverlight.createDelegate(scene, scene.handleLoad)
		}
	});
}

// State varibles
var isTrailerStart = false;
var selectedIndex = null;


// Get the last two digital of the controls
function getObjectIndex(object){
	var idx = object.Name.substr(object.Name.length - 2);
	return idx;
}


// Handle SelectBars
function onMouseEnterSlctBar(sender, mouseEventArgs) {
	if (!isTrailerStart) {
		var idx = getObjectIndex(sender);
		sender.getHost().content.findName("slctBar" + idx).Opacity = 0.3;
		sender.getHost().content.findName("slctBullet" + idx).Opacity = 0.9;
	}
}
function onMouseLeaveSlctBar(sender, mouseEventArgs) {
	if (!isTrailerStart) {
		var idx = getObjectIndex(sender);
		sender.getHost().content.findName("slctBar" + idx).Opacity = 0;
		sender.getHost().content.findName("slctBullet" + idx).Opacity = 0.5;
	}
}


// Handle the Control button
function onMouseEnterControlButton(sender, mouseEventArgs){
	sender.getHost().content.findName(sender.Name + "In").Opacity = 1;
}
function onMouseLeaveControlButton(sender, mouseEventArgs){
	sender.getHost().content.findName(sender.Name + "In").Opacity = 0;
}


// Handle the stories of start/end trailer stage
function onSlctMouseLeftButtonDown(sender, mouseEventArgs){
	selectedIndex = getObjectIndex(sender);
	if (!isTrailerStart) {
		sender.getHost().content.findName("Trailer" + selectedIndex).Visibility = "Visible";
		sender.getHost().content.findName("TrailerStart").Begin();
		isTrailerStart = true;
	}
}
function onTrailerStartCompleted(sender, eventArgs){
	if (isTrailerStart) {
		sender.getHost().content.findName("PlayButtonFlash").Begin();
		sender.getHost().content.findName("ReturnButtonFlash").Begin();
	}
}
function onReturnButtonDown(sender, mouseEventArgs){
	if (isTrailerStart) {
		sender.getHost().content.findName("slctBar" + selectedIndex).Opacity = 0;
		sender.getHost().content.findName("slctBullet" + selectedIndex).Opacity = 0.5;
		
		var player = sender.getHost().content.findName("TrailerPlayer");
		player.Stop();
		sender.getHost().content.findName("TrailerEnd").Begin();
		sender.getHost().content.findName("Trailer" + selectedIndex).Visibility = "Collapsed";
		isTrailerStart = false;
		selectedIndex = null;
	}
}


// Handle controls of media
function onPlayButtonDown(sender, mouseEventArgs){
	if (isTrailerStart) {
		var player = sender.getHost().content.findName("TrailerPlayer");
		if (player) {
			player.Source = "Trail" + selectedIndex + ".mp3";
			player.Play();
		}
		sender.getHost().content.findName(sender.Name + "In").Opacity = 0;
	}
}
function onStopButtonDown(sender, mouseEventArgs){
	if (isTrailerStart) {
		var player = sender.getHost().content.findName("TrailerPlayer");
		if (player) {
			player.Stop();
		}
		sender.getHost().content.findName(sender.Name + "In").Opacity = 0;
	}
}
function handleLoading(sender, wantShow){
	if (wantShow) {
		sender.getHost().content.findName("LoadingIcon").Visibility = "Visible";
		sender.getHost().content.findName("LoadingText").Visibility = "Visible";
		sender.getHost().content.findName("Loading").Begin();
	}
	else{
		sender.getHost().content.findName("Loading").Stop();
		sender.getHost().content.findName("LoadingIcon").Visibility = "Collapsed";
		sender.getHost().content.findName("LoadingText").Visibility = "Collapsed";
	}
}
function onTrailerCurrentStateChanged(sender, eventArgs)
{
    switch(sender.CurrentState) {
        case "Opening":
        case "Buffering":
			handleLoading(sender, true);
			break;
        case "Playing":
			handleLoading(sender, false);
			sender.getHost().content.findName("PlayButtonFlash").Stop();
	        sender.getHost().content.findName("PlayButton").Visibility = "Collapsed";
        	sender.getHost().content.findName("StopButton").Visibility = "Visible";
	        break;
        default:
			handleLoading(sender, false);
        	sender.getHost().content.findName("PlayButton").Visibility = "Visible";
	        sender.getHost().content.findName("StopButton").Visibility = "Collapsed";
			sender.getHost().content.findName("ReturnButtonFlash").Begin();
        	break;
	}
}
