function createSilverlight()
{
	var scene = new cpc.Page();
	Silverlight.createObjectEx({
		source: "Page.xaml",
		parentElement: document.getElementById("silverlight"),
		id: "silverlight",
		properties: {
			width: "100%",
			height: "100%",
			version: "1.0",
			isWindowless: "true",
			background: "#00FFFFFF"
		},
		events: {
			onLoad: Silverlight.createDelegate(scene, scene.handleLoad),
			onError: handleError
		}
	});
}


if (!window.Silverlight) 
	window.Silverlight = {};

Silverlight.createDelegate = function(instance, method) {
	return function() {
		return method.apply(instance, arguments);
	}
}

/*****************************
EXTENDED $ FUNCTION
Get DOM references easily
*****************************/
function $() {
	var elements = new Array();
	for (var i=0,len=arguments.length;i<len;i++) {
		var element = arguments[i];
		if (typeof element == 'string') {
			var matched = document.getElementById(element);
			if (matched) {
				elements.push(matched);
			} else {
				var allels = (document.all) ? document.all : document.getElementsByTagName('*');
				var regexp = new RegExp('(^| )'+element+'( |$)');
				for (var i=0,len=allels.length;i<len;i++) if (regexp.test(allels[i].className)) elements.push(allels[i]);
			}
			if (!elements.length) elements = document.getElementsByTagName(element);
			if (!elements.length) {
				elements = new Array();
				var allels = (document.all) ? document.all : document.getElementsByTagName('*');
				for (var i=0,len=allels.length;i<len;i++) if (allels[i].getAttribute(element)) elements.push(allels[i]);
			}
			if (!elements.length) {
				var allels = (document.all) ? document.all : document.getElementsByTagName('*');
				for (var i=0,len=allels.length;i<len;i++) if (allels[i].attributes) for (var j=0,lenn=allels[i].attributes.length;j<lenn;j++) if (allels[i].attributes[j].specified) if (allels[i].attributes[j].nodeValue == element) elements.push(allels[i]);
			}
		} else {
			elements.push(element);
		}
	}
	if (elements.length == 1) {
		return elements[0];
	} else {
		return elements;
	}
}


/*****************************
ERRORHANDLING FUNCTIONS
*****************************/
function handleError(sender, args){
	// The error message to display.
    var errorMsg = "Silverlight Error: \n\n";
    
    // Error information common to all errors.
    errorMsg += "Error Type:    " + args.errorType + "\n";
    errorMsg += "Error Message: " + args.errorMessage + "\n";
    errorMsg += "Error Code:    " + args.errorCode + "\n";
    
    // Determine the type of error and add specific error information.
    switch(args.errorType)
    {
        case "RuntimeError":
            // Display properties specific to RuntimeErrorEventArgs.
            if (args.lineNumber != 0)
            {
                errorMsg += "Line: " + args.lineNumber + "\n";
                errorMsg += "Position: " +  args.charPosition + "\n";
            }
            errorMsg += "MethodName: " + args.methodName + "\n";
            break;
        case "ParserError":
            // Display properties specific to ParserErrorEventArgs.
            errorMsg += "Xaml File:      " + args.xamlFile      + "\n";
            errorMsg += "Xml Element:    " + args.xmlElement    + "\n";
            errorMsg += "Xml Attribute:  " + args.xmlAttribute  + "\n";
            errorMsg += "Line:           " + args.lineNumber    + "\n";
            errorMsg += "Position:       " + args.charPosition  + "\n";
            break;
        default:
            break;
    }
    // Display the error message.
    //alert(errorMsg);

}
