
var _zipFile;
function createSilverlight(zipFile) {
    _zipFile = zipFile;
	Silverlight.createObjectEx({
		source: 'Scene.xaml',
		parentElement: document.getElementById('SilverlightPlugInHost'),
		id: 'SilverlightPlugIn',
		properties: {
			width: '800',
			height: '800',
			background: '#1F1F82',
            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', '/PhotoBooks/' + _zipFile);
    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('Page14').setSource(sender, 'Page14.jpg');
    _control.content.findName('Page15').setSource(sender, 'Page15.jpg');
    _control.content.findName('Page16').setSource(sender, 'Page16.jpg');
    _control.content.findName('Page17').setSource(sender, 'Page17.jpg');
    _control.content.findName('Page18').setSource(sender, 'Page18.jpg');
    _control.content.findName('Page19').setSource(sender, 'Page19.jpg');
    _control.content.findName('Page20').setSource(sender, 'Page20.jpg');
    _control.content.findName('Page21').setSource(sender, 'Page21.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'));
    _ptf.addPage(_control.content.findName('EvenPage9'), _control.content.findName('OddPage9'));
    _ptf.addPage(_control.content.findName('EvenPage10'), _control.content.findName('OddPage10'));
    _ptf.addPage(_control.content.findName('EvenPage11'), _control.content.findName('OddPage11'));
    _ptf.addPage(_control.content.findName('EvenPage12'), _control.content.findName('OddPage12'));

    // Initialize the framework
    _ptf.initializeFramework();
}

function dispose()
{
    // Call framework's dispose method for proper cleanup
    if (_ptf != null)
        _ptf.dispose();
}


