﻿

var playticketReported = null;

function ReportOpen(ticket, player, status, embedded) {
	try {
		if (playticketReported != null) {
			ReportClose();
		}
		else {
			MediasiteReporting.ReportViewOpen(ticket, player, status, embedded);

			playticketReported = ticket;
		}
	}
	catch (err) {
		//alert('Reporting service failure on Open' + err.description);
	}
}

function ReportClose() {
	try {
		if (playticketReported != null) {

		    //MediasiteReporting.ReportViewClose(playticketReported);
			
			// save a reference to the request, we have to get staticInstance of proxy that actually returns the request object
			var reportCloseRequest = MediasiteReporting._staticInstance.ReportViewClose(playticketReported);

			KillRequest(reportCloseRequest);

			playticketReported = null;
		}
	}
	catch (err) {
		//alert('Reporting service failure on Close' + err.description);
	}
}

function KillRequest(request) {
    // BUG28026 -- If we don't kill the async web request onunload will get "Sys is undefined" error.
    // This is actually a FireFox bug since it is still trying to access a javascript object that was
    // already unloaded... since we don't care about the web request result all we can do is check
    // to make sure the request got started and then abort it.
    // see http://siderite.blogspot.com/2008/02/how-to-abort-asynchronous-ajax-method.html
    if (request != null) {
        var executor = request.get_executor();
        if (executor.get_started()) {
            executor.abort();
        }
    }
}

function SetPageTitle(title) {
	try {
		document.title = title;
	}
	catch (err) {
		// Shed a tear and move on.
	}
}

function onSilverlightError(sender, args) {

	var appSource = "";
	if (sender != null && sender != 0) {
		appSource = sender.getHost().Source;
	}
	var errorType = args.ErrorType;
	var iErrorCode = args.ErrorCode;

	if (errorType == "ImageError" || errorType == "MediaError")
		return;

	var errMsg = "Unhandled Error in Silverlight 2 Application " + appSource + "\n";

	errMsg += "Code: " + iErrorCode + "    \n";
	errMsg += "Category: " + errorType + "       \n";
	errMsg += "Message: " + args.ErrorMessage + "     \n";

	if (errorType == "ParserError") {
		errMsg += "File: " + args.xamlFile + "     \n";
		errMsg += "Line: " + args.lineNumber + "     \n";
		errMsg += "Position: " + args.charPosition + "     \n";
	}
	else if (errorType == "RuntimeError") {
		if (args.lineNumber != 0) {
			errMsg += "Line: " + args.lineNumber + "     \n";
			errMsg += "Position: " + args.charPosition + "     \n";
		}
		errMsg += "MethodName: " + args.methodName + "     \n";
	}

	try {
		var silverlightObject = document.getElementById('player');

		if (silverlightObject.content.PlayerScriptApi) {
			silverlightObject.content.PlayerScriptApi.ReportError(errorType, errMsg, iErrorCode);
		}
		else {
			//    			alert(
			//    				"Error Type: " + errorType + "\n" +
			//    				"Error Message: " + errMsg + "\n" +
			//    				"Error Code: " + iErrorCode + "\n"
			//    			);    			
		}
	}
	catch (error) { }

	//throw new Error(errMsg);
}

function focusPlugInDelayed() {
	setTimeout('focusPlugIn()', 500);
}

function focusPlugIn() {
	// Don't mess with focus if our page is within a frame.
	if (window != window.top) {
		return;
	}
	
	// Attempt to give the Silverlight object focus.
	var silverlightObject = document.getElementById('player');
	if (silverlightObject) {
		silverlightObject.focus();
	}
}


