function createSilverlight()
{
	Silverlight.createObjectEx({
		source: 'Scene.xaml',
		parentElement: document.getElementById('SilverlightPlugInHost'),
		id: 'SilverlightPlugIn',
		properties: {
			width: '550',
			height: '250',
			background:'black',
            isWindowless: false,
            inplaceInstallPrompt: true,
			version: '1.0'
		},
		events: {
		    onError: null,
			onLoad: null
		},		
		context: null 
	});
}

var _zoom = 1;                  // Zoom factor
var _index = 0;                 // Image index
var _progressBar;               // Progress bar
var _progressBarContainer;      // Progress bar container
var _progressBarCanvas;         // Progress bar canvas
var _progressBarWidth;          // Full width of progress bar
var _control                    // Silverlight control
var _transform;                 // Zoom transform
var _timer;                     // Timer storyboard
var _token1, _token2;           // Event handler tokens
var _images = new Array(36);    // References to XAML images
var _photos = 105;              // Number of photos

function onLoaded(sender)
{
    // Initialize XAML references and other variables
    _transform = sender.findName('ZoomTransform');
    _timer = sender.findName('TimerStoryboard');
    _progressBar = sender.findName('ProgressBar');
    _progressBarContainer = sender.findName('ProgressBarContainer');
    _progressBarCanvas = sender.findName('ProgressBarCanvas');
    _progressBarWidth = _progressBarContainer.width - 4;
    _control = sender.getHost();
    
    var downloader = _control.createObject('downloader');
    _token1 = downloader.addEventListener('downloadProgressChanged', downloadProgressChanged);
    _token2 = downloader.addEventListener('completed', downloadCompleted);
    downloader.open('GET', 'Assets/AutoPhotos.zip');
    downloader.send();
}

function downloadProgressChanged(sender, args)
{
    // Update the progress bar
    _progressBar.width = _progressBarWidth * sender.downloadProgress;
}

function downloadCompleted(sender, args)
{
    // Hide the progress bar
    _progressBarCanvas.visibility = 'Collapsed';

    // Deregister downloader event handlers
    sender.removeEventListener('downloadProgressChanged', _token1);
    sender.removeEventListener('completed', _token2);

    // Create XAML images and assign downloaded bits to them
    var canvas = sender.findName('AutoCanvas');

    for (i=0; i<_photos; i++)
    {
        var xaml = '<Image Canvas.Left="225" Width="450" Visibility="Collapsed" />';
        var image = _control.content.createFromXaml(xaml);
        image.setSource(sender, (i + 1).toString() + '.JPG');
        canvas.children.add(image);
        _images[i] = image;
    }

    // Register mousewheel event handler
    if (window.addEventListener)
        window.addEventListener('DOMMouseScroll', onMouseWheelTurned, false); // Mozilla
    else
        window.onmousewheel = document.onmousewheel = onMouseWheelTurned; // IE
        
    // Make the first image visible
    _images[0].visibility = 'Visible';

    // Start rotating
    _timer.begin();
}

function onTick(sender, args)
{
    // Hide the current image
    _images[_index].visibility = 'Collapsed';

    // Update the image index
    if (++_index == _photos)
        _index = 0; // Wrap around

    // Show the new image
    _images[_index].visibility = 'Visible';    

    // Restart the timer
    _timer.begin();
}

function onMouseWheelTurned(event)
{
    var delta = 0;
    if (!event) // IE
        event = window.event;

    if (event.wheelDelta) // IE
    {
        delta = event.wheelDelta;
        if (window.opera)
            delta = -delta;
    }
    else if (event.detail) // Mozilla
        delta = -event.detail;

    if (delta != 0)
    {
        if (delta > 0)
        {
            // Zoom in
            _zoom = Math.min(2, _zoom + 0.05);
        }
        else
        {
            // Zoom out
            _zoom = Math.max(1, _zoom - 0.05);
        }
        _transform.scaleX = _transform.scaleY = _zoom;
    }

    if (event.preventDefault)
        event.preventDefault();

    event.returnValue = false;
}
