﻿if (!window.helloSecureWorld)
	window.helloSecureWorld = {};

Silverlight.createDelegate = function(instance, method) {
	return function() {
		return method.apply(instance, arguments);
	}
}

function createHelloSecureWorldPage()
{
	var scene = new helloSecureWorld.Page();
	Silverlight.createObjectEx({
		source: "HelloSecureWorldPage.xaml",
		parentElement: document.getElementById("div_Content"),
		id: "SilverlightControl",
		properties: {
			width: "100%",
			height: "100%",
			version: "1.0",
			isWindowless: 'true',
			background: "black", //NO ALPHA =)
            framerate: "24"    //only as much as needed
        },
		events: {
			onLoad: Silverlight.createDelegate(scene, scene.handleLoad),
			onError: function(sender, args) {
				var errorDiv = document.getElementById("errorLocation");
				if (errorDiv != null) {
					var errorText = args.errorType + "- " + args.errorMessage;
							
					if (args.ErrorType == "ParserError") {
						errorText += "<br>File: " + args.xamlFile;
						errorText += ", line " + args.lineNumber;
						errorText += " character " + args.charPosition;
					}
					else if (args.ErrorType == "RuntimeError") {
						errorText += "<br>line " + args.lineNumber;
						errorText += " character " +  args.charPosition;
					}
					errorDiv.innerHTML = errorText;
				}	
			}
		}
	});
}

var initDownloaders = new Array();
helloSecureWorld.Page = function() 
{
}

helloSecureWorld.Page.prototype =
{   
	handleLoad: function(control, userContext, rootElement) 
	{
	    recordDebugMessage("HelloSecureWorld.js:helloSecureWorld.handleLoad: control=" + control + ", userContext=" + userContext + ", rootElement=" + rootElement, 9);

		this.control = control;
		
		// Diagnostic settings
		control.settings.EnableFrameRateCounter = false;     
		control.settings.EnableRedrawRegions = false; 

        //  Load intro video
        var downloader = control.createObject("downloader");
        downloader.addEventListener("completed", initDownloader_Completed);
        downloader.open("GET", "overlay_intro.xaml");
        initDownloaders[initDownloaders.length] = {uri:downloader.uri,percent:0};
        downloader.send();
	}
}

// called from overlay_intro.js:onIntroLoad
function MainContentDownload(sender, eventArgs)
{
    var control = sender.getHost();
    
    //  Load main background
    var downloader = control.createObject("downloader");
    downloader.addEventListener("completed", initDownloader_Completed);
    downloader.open("GET", "main.xaml");
    initDownloaders[initDownloaders.length] = {uri:downloader.uri,percent:0};
    downloader.send();

    //  Load console
    downloader = control.createObject("downloader");
    downloader.addEventListener("completed", initDownloader_Completed);
    downloader.open("GET", "console.xaml");
    initDownloaders[initDownloaders.length] = {uri:downloader.uri,percent:0};
    downloader.send();
    
     //Load strips
    downloader = control.createObject("downloader");
    downloader.addEventListener("completed", initDownloader_Completed);
    downloader.open("GET", "bs_strip.xaml");
    initDownloaders[initDownloaders.length] = {uri:downloader.uri,percent:0};
    downloader.send();

    downloader = control.createObject("downloader");
    downloader.addEventListener("completed", initDownloader_Completed);
    downloader.open("GET", "cs_strip.xaml");
    initDownloaders[initDownloaders.length] = {uri:downloader.uri,percent:0};
    downloader.send();

    downloader = control.createObject("downloader");
    downloader.addEventListener("completed", initDownloader_Completed);
    downloader.open("GET", "fs_strip.xaml");
    initDownloaders[initDownloaders.length] = {uri:downloader.uri,percent:0};
    downloader.send();
    
    downloader = control.createObject("downloader");
    downloader.addEventListener("completed", initDownloader_Completed);
    downloader.open("GET", "ts_strip.xaml");
    initDownloaders[initDownloaders.length] = {uri:downloader.uri,percent:0};
    downloader.send();
    
    // Load C1
    downloader = control.createObject("downloader");
    downloader.addEventListener("completed", initDownloader_Completed);
    downloader.open("GET", "C1.xaml");
    initDownloaders[initDownloaders.length] = {uri:downloader.uri,percent:0};
    downloader.send();
    
    // Load C2
    downloader = control.createObject("downloader");
    downloader.addEventListener("completed", initDownloader_Completed);
    downloader.open("GET", "C2.xaml");
    initDownloaders[initDownloaders.length] = {uri:downloader.uri,percent:0};
    downloader.send();
    
    // Load C3
    downloader = control.createObject("downloader");
    downloader.addEventListener("completed", initDownloader_Completed);
    downloader.open("GET", "C3.xaml");
    initDownloaders[initDownloaders.length] = {uri:downloader.uri,percent:0};
    downloader.send();
    
    //Load overlay
    downloader = control.createObject("downloader");
    downloader.addEventListener("completed", initDownloader_Completed);
    downloader.open("GET", "overlay.xaml");
    initDownloaders[initDownloaders.length] = {uri:downloader.uri,percent:0};
    downloader.send();

    //Load movie player
    downloader = control.createObject("downloader");
    downloader.addEventListener("completed", initDownloader_Completed);
    downloader.open("GET", "moviePlayer.xaml");
    initDownloaders[initDownloaders.length] = {uri:downloader.uri,percent:0};
    downloader.send();
}

//Trace function for helping with debugging.
function recordDebugMessage(message, eventLevel)
{
    var debuggingEnabled = false;
    var eventThreshold = 1;
    
    var debugDiv = document.getElementById("debugLocation");
    if (debugDiv != null) {
        if (debuggingEnabled) {
            if (eventThreshold >= eventLevel) {
                var debugText = "Debug Message(" + getCurrentTime() + ") : " + message + "<br />";

                var currentDebugText = debugDiv.innerHTML;
                debugDiv.innerHTML = debugText + currentDebugText;
            }
        }
    }	
}

//Helper function to pull current time.
function getCurrentTime() {
    var now = new Date();
    var hours = now.getHours();
    var minutes = now.getMinutes();
    var seconds = now.getSeconds()
    var milliseconds = now.getMilliseconds();
    var timeValue = "" + hours
    timeValue += ((minutes < 10) ? ":0" : ":") + minutes
    timeValue += ((seconds < 10) ? ":0" : ":") + seconds
    timeValue += "." + milliseconds
    return timeValue;
}
