﻿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 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";
	}

	throw new Error(errMsg);
}

Silverlight.inject = function (params) {
	new AgInstall.Installer(params);
}

Silverlight.onGetSilverlight = function () {
	for (var i in Silverlight.installControls)
		Silverlight.installControls[i].update(AgInstall.INSTALLING);
};

Silverlight.onRestartRequired = function () {
	for (var i in Silverlight.installControls)
		Silverlight.installControls[i].update(AgInstall.RESTART_REQUIRED);
};

Silverlight.onUpgradeRequired = function () {
	for (var i in Silverlight.installControls)
		Silverlight.installControls[i].update(AgInstall.UPGRADE_REQUIRED);
};

Silverlight.onInstallRequired = function () {
	for (var i in Silverlight.installControls)
		Silverlight.installControls[i].update(AgInstall.INSTALL_REQUIRED);
};

function pageLoaded() {
	if (Silverlight.supportedUserAgent()) {
		// silverlight is supported update any installers
		for (var i in Silverlight.installControls)
			Silverlight.installControls[i].update();
	}
	else {
		// silverlight is not supported, need to tell installers to report this
		for (var i in Silverlight.installControls)
			Silverlight.installControls[i].update(AgInstall.NOT_SUPPORTED);
	}
}