function createSilverlight()
{
	Silverlight.createObjectEx({
		source: 'Scene.xaml',
		parentElement: document.getElementById('SilverlightPlugInHost'),
		id: 'SilverlightPlugIn',
		properties: {
			width: '800',
			height: '800',
			background:'black',
            isWindowless: 'false',
			version: '1.0'
		},
		events: {
			onLoad: onPageLoad
		},		
		context: null 
	});
}

var _control;
var _token1, _token2;
var _progressUI, _progressBar;
var _ptf = null;

function onPageLoad(control, context, root)
{
    _control = control;
    _progressUI = _control.content.findName('ProgressUI');
    _progressBar = _control.content.findName('ProgressBar');
    
    // Begin asynchronous download of image assets
    var downloader = _control.createObject('downloader');
    _token1 = downloader.addEventListener('downloadProgressChanged', downloadProgressChanged);
    _token2 = downloader.addEventListener('completed', downloadCompleted);
    downloader.open('GET', 'Assets/Assets.zip');
    downloader.send();
}

function downloadProgressChanged(sender, args)
{
    var progress = sender.downloadProgress; // 0.0 to 1.0

    if (progress < 1.0)
        _progressUI.visibility = 'Visible';
        
    _progressBar.width = 600 * progress;
}

function downloadCompleted(sender, args)
{
    // Hide progress UI
    _progressUI.visibility = 'Collapsed';

    // Assign downloaded bits to images
    _control.content.findName('FrontCover').setSource(sender, 'FrontCover.jpg');
    _control.content.findName('Page00').setSource(sender, 'Page00.jpg');
    _control.content.findName('Page01').setSource(sender, 'Page01.jpg');
    _control.content.findName('Page02').setSource(sender, 'Page02.jpg');
    _control.content.findName('Page03').setSource(sender, 'Page03.jpg');
    _control.content.findName('Page04').setSource(sender, 'Page04.jpg');
    /*_control.content.findName('Page05').setSource(sender, 'Page05.jpg');
    _control.content.findName('Page06').setSource(sender, 'Page06.jpg');
    _control.content.findName('Page07').setSource(sender, 'Page07.jpg');
    _control.content.findName('Page08').setSource(sender, 'Page08.jpg');
    _control.content.findName('Page09').setSource(sender, 'Page09.jpg');
    _control.content.findName('Page10').setSource(sender, 'Page10.jpg');
    _control.content.findName('Page11').setSource(sender, 'Page11.jpg');
    _control.content.findName('Page12').setSource(sender, 'Page12.jpg');
    _control.content.findName('Page13').setSource(sender, 'Page13.jpg');*/
    _control.content.findName('BackCover').setSource(sender, 'BackCover.jpg');

    // Deregister downloader event handlers
    sender.removeEventListener('downloadProgressChanged', _token1);
    sender.removeEventListener('completed', _token2);

    // Instantiate the page-turn framework
    _ptf = new PageTurnFramework(_control, _control.content.findName('PageTurnCanvas'));

    // Add "pages" to the framework
    _ptf.addPage(_control.content.findName('EvenPage0'), _control.content.findName('OddPage0'));
    _ptf.addPage(_control.content.findName('EvenPage1'), _control.content.findName('OddPage1'));
    _ptf.addPage(_control.content.findName('EvenPage2'), _control.content.findName('OddPage2'));
    _ptf.addPage(_control.content.findName('EvenPage3'), _control.content.findName('OddPage3'));
    _ptf.addPage(_control.content.findName('EvenPage4'), _control.content.findName('OddPage4'));
    _ptf.addPage(_control.content.findName('EvenPage5'), _control.content.findName('OddPage5'));
    _ptf.addPage(_control.content.findName('EvenPage6'), _control.content.findName('OddPage6'));
    _ptf.addPage(_control.content.findName('EvenPage7'), _control.content.findName('OddPage7'));
    _ptf.addPage(_control.content.findName('EvenPage8'), _control.content.findName('OddPage8'));

    // Initialize the framework
    _ptf.initializeFramework();
}

function dispose()
{
    // Call framework's dispose method for proper cleanup
    if (_ptf != null)
        _ptf.dispose();
}
