// Silverlight instantiation file
function XbcCreateHostedSilverlight(accountId, applicationName, parentElement, initParams)
{
    if(Silverlight.isInstalled(XbcSilverlightRuntimeVersion))
    {
        Silverlight.createHostedObjectEx({source: "streaming:/" + accountId + "/" + applicationName, parentElement: parentElement, initParams: initParams});
    }
    else
    {
        XbcCreateSilverlightBootstrapInstaller(parentElement);
    }
}

function XbcCreateSilverlight(xaml, parentElement, id, properties, events, initParams)
{
    if(Silverlight.isInstalled(XbcSilverlightRuntimeVersion))
    {
        Silverlight.createObjectEx( {   source: xaml, 
                                        parentElement: parentElement, 
                                        id: id, 
                                        properties: properties, 
                                        events: events, initParams: initParams } );
    }
    else
    {
        XbcCreateSilverlightBootstrapInstaller(parentElement);
    }
}

function XbcVerifySilverlightInstallation(parentElement, alternateExperienceElement)
{
    if (typeof(parentElement) == "string")
    {
        parentElement = document.getElementById(parentElement);
    }
    if (alternateExperienceElement != null)
    {
        if (typeof (alternateExperienceElement) == "string")
        {
            alternateExperienceElement = document.getElementById(alternateExperienceElement);
        }
    }

    if(!Silverlight.isInstalled(XbcSilverlightRuntimeVersion) && parentElement != null)
    {
        var bootstrapElement = parentElement;
        if (alternateExperienceElement != null)
        {
            bootstrapElement = document.createElement("div");
            bootstrapElement.className = "XbcWpSilverlightBootstrap";
            alternateExperienceElement.appendChild(bootstrapElement);
            alternateExperienceElement.style.display = "";
            parentElement.style.display = "none";
        }
        XbcCreateSilverlightBootstrapInstaller(bootstrapElement);
    }
}

function XbcCreateSilverlightBootstrapInstaller(parentElement)
{
    Silverlight.createObjectEx({ source:"", parentElement: parentElement, id: parentElement + "Control", properties: { width: "100%", height: "100%", version: "1.0", inplaceInstallPrompt: true}, events:{}});

    // We have server-side code to render the correct thing depending if your browser supports silverlight.  Don't need client-side check anymore
    parentElement.onclick = function()
    {
        try
        {
            dcsMultiTrack('DCS.dcsuri', 'http://www.xbox.com/en-US/SilverLightInstall.htm', 'WT.ti', 'Installing Silverlight', 'WT.dl', '0');
        }
        catch (Error)
        {}
    }
    window.setInterval('XbcCheckSilverlightInstall()', 3000);
}

function XbcCheckSilverlightInstall()
{
    if(Silverlight.isInstalled(XbcSilverlightRuntimeVersion))
    {
        try
        {
            dcsMultiTrack('DCS.dcsuri', 'http://www.xbox.com/en-US/SilverLightInstallionSucceeded.htm', 'WT.ti', 'Silverlight Install Succeeded', 'WT.dl', '0');
        }
        catch (Error)
        {}
        window.location = window.location;
    }
}
