if( typeof com == "undefined" ) com = {};
if( typeof com.rozengain == "undefined" ) com.rozengain = {};
if( typeof com.rozengain.silverlight == "undefined" ) com.rozengain.silverlight = {};

com.rozengain.silverlight.collada = {
	control : null,
	rootElement : null,
	
	/**
	 * Silverlight initialisation
	 */
	createSilverlight: function()
	{
		Silverlight.createObjectEx({
			source: "xml/SilverlightCollada.xaml",
			parentElement: document.getElementById("SilverlightControlHost"),
			id: "SilverlightControl",
			properties: {
				width: "100%",
				height: "100%",
				version: "1.0"
			},
			events: {
				onLoad: com.rozengain.silverlight.collada.handleLoad
			}
		});
	},
	
	/**
	 * Onload event handler
	 */
	handleLoad: function( cntrl, usrContext, rootElem )
	{
		var self = com.rozengain.silverlight.collada;
		
		self.control = cntrl;
		self.rootElement = rootElem;
		
		self.loadCollada( "xml/arrows.dae" );		
	},
	
	loadCollada: function( colladaFile )
	{
		var self = com.rozengain.silverlight.collada;
		var plugin = self.rootElement.getHost();
		var downloader = plugin.createObject( "downloader" );
		
		downloader.addEventListener( "completed", self.parseCollada );
		downloader.addEventListener( "downloadfailed", self.showErrorMessage );
		
		downloader.open( "GET", colladaFile );
		downloader.send();
	},
	
	parseCollada: function( sender, eventArgs )
	{
		var self = com.rozengain.silverlight.collada;
		var responseXML;
		
		if ( window.ActiveXObject )
		{
	        responseXML = new ActiveXObject( "Microsoft.XMLDOM" );
			responseXML.async = false;
			responseXML.loadXML( sender.responseText );
	    }
	    else
		{
	        var parser = new DOMParser();
	        responseXML = parser.parseFromString( sender.responseText, "text/xml" );
	    }

		collada = new Collada( responseXML, self.rootElement, self.control );
	},
	
	showErrorMessage: function( sender, eventArgs )
	{
		alert( "Downloading failed." );
	}
};

var self = com.rozengain.silverlight.collada;