///////////////////////////////////////////////////////////////////////////////਍ഀ
//਍ഀ
//  Silverlight.js   			version 2.0.31030.0਍ഀ
//਍ഀ
//  This file is provided by Microsoft as a helper file for websites that਍ഀ
//  incorporate Silverlight Objects. This file is provided under the Microsoft਍ഀ
//  Public License available at ਍ഀ
//  http://code.msdn.microsoft.com/silverlightjs/Project/License.aspx.  ਍ഀ
//  You may not use or distribute this file or the code in this file except as ਍ഀ
//  expressly permitted under that license.਍ഀ
// ਍ഀ
//  Copyright (c) Microsoft Corporation. All rights reserved.਍ഀ
//਍ഀ
///////////////////////////////////////////////////////////////////////////////਍ഀ
਍ഀ
if (!window.Silverlight)਍ഀ
{਍ഀ
    window.Silverlight = { };਍ഀ
}਍ഀ
਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
//਍ഀ
// _silverlightCount:਍ഀ
//਍ഀ
// Counter of globalized event handlers਍ഀ
//਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
Silverlight._silverlightCount = 0;਍ഀ
਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
//਍ഀ
// __onSilverlightInstalledCalled:਍ഀ
//਍ഀ
// Prevents onSilverlightInstalled from being called multiple ਍ഀ
// times਍ഀ
//਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
Silverlight.__onSilverlightInstalledCalled = false;਍ഀ
਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
//਍ഀ
// fwlinkRoot:਍ഀ
//਍ഀ
// Prefix for fwlink URL's਍ഀ
//਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
Silverlight.fwlinkRoot='http://go2.microsoft.com/fwlink/?LinkID=';਍ഀ
਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
//਍ഀ
// __installationEventFired:਍ഀ
//਍ഀ
// Ensures that only one Installation State event is fired.਍ഀ
//਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
Silverlight.__installationEventFired = false;਍ഀ
਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
//  ਍ഀ
// onGetSilverlight:਍ഀ
//਍ഀ
// Called by Silverlight.GetSilverlight to notify the page that a user਍ഀ
// has requested the Silverlight installer਍ഀ
//਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
Silverlight.onGetSilverlight = null;਍ഀ
਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
//਍ഀ
// onSilverlightInstalled:਍ഀ
//਍ഀ
// Called by Silverlight.WaitForInstallCompletion when the page detects਍ഀ
// that Silverlight has been installed. The event handler is not called਍ഀ
// in upgrade scenarios.਍ഀ
//਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
Silverlight.onSilverlightInstalled = function () {window.location.reload(false);};਍ഀ
਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
//਍ഀ
// isInstalled:਍ഀ
//਍ഀ
// Checks to see if the correct version is installed਍ഀ
//਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
Silverlight.isInstalled = function(version)਍ഀ
{਍ഀ
    if (version == undefined)਍ഀ
        version = null;਍ഀ
        ਍ഀ
    var isVersionSupported = false;਍ഀ
    var container = null;਍ഀ
਍ഀ
    try਍ഀ
    {਍ഀ
        var control = null;਍ഀ
        var tryNS = false;਍ഀ
਍ഀ
        if (window.ActiveXObject)਍ഀ
        {਍ഀ
            try਍ഀ
            {਍ഀ
                control = new ActiveXObject('AgControl.AgControl');਍ഀ
                if (version === null)਍ഀ
                {਍ഀ
                    isVersionSupported = true;਍ഀ
                }਍ഀ
                else if (control.IsVersionSupported(version))਍ഀ
                {਍ഀ
                    isVersionSupported = true;਍ഀ
                }਍ഀ
                control = null;਍ഀ
            }਍ഀ
            catch (e)਍ഀ
            {਍ഀ
                tryNS = true;਍ഀ
            }਍ഀ
        }਍ഀ
        else਍ഀ
        {਍ഀ
            tryNS = true;਍ഀ
        }਍ഀ
        if (tryNS)਍ഀ
        {਍ഀ
            var plugin = navigator.plugins["Silverlight Plug-In"];਍ഀ
            if (plugin)਍ഀ
            {਍ഀ
                if (version === null)਍ഀ
                {਍ഀ
                    isVersionSupported = true;਍ഀ
                }਍ഀ
                else਍ഀ
                {਍ഀ
                    var actualVer = plugin.description;਍ഀ
                    if (actualVer === "1.0.30226.2")਍ഀ
                        actualVer = "2.0.30226.2";਍ഀ
                    var actualVerArray = actualVer.split(".");਍ഀ
                    while (actualVerArray.length > 3)਍ഀ
                    {਍ഀ
                        actualVerArray.pop();਍ഀ
                    }਍ഀ
                    while (actualVerArray.length < 4)਍ഀ
                    {਍ഀ
                        actualVerArray.push(0);਍ഀ
                    }਍ഀ
                    var reqVerArray = version.split(".");਍ഀ
                    while (reqVerArray.length > 4)਍ഀ
                    {਍ഀ
                        reqVerArray.pop();਍ഀ
                    }਍ഀ
਍ഀ
                    var requiredVersionPart;਍ഀ
                    var actualVersionPart;਍ഀ
                    var index = 0;਍ഀ
਍ഀ
਍ഀ
                    do਍ഀ
                    {਍ഀ
                        requiredVersionPart = parseInt(reqVerArray[index]);਍ഀ
                        actualVersionPart = parseInt(actualVerArray[index]);਍ഀ
                        index++;਍ഀ
                    }਍ഀ
                    while (index < reqVerArray.length && requiredVersionPart === actualVersionPart);਍ഀ
਍ഀ
                    if (requiredVersionPart <= actualVersionPart && !isNaN(requiredVersionPart))਍ഀ
                    {਍ഀ
                        isVersionSupported = true;਍ഀ
                    }਍ഀ
                }਍ഀ
            }਍ഀ
        }਍ഀ
    }਍ഀ
    catch (e)਍ഀ
    {਍ഀ
        isVersionSupported = false;਍ഀ
    }਍ഀ
    ਍ഀ
    return isVersionSupported;਍ഀ
};਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
//਍ഀ
// WaitForInstallCompletion:਍ഀ
//਍ഀ
// Occasionally checks for Silverlight installation status. If it਍ഀ
// detects that Silverlight has been installed then it calls਍ഀ
// Silverlight.onSilverlightInstalled();. This is only supported਍ഀ
// if Silverlight was not previously installed on this computer.਍ഀ
//਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
Silverlight.WaitForInstallCompletion = function()਍ഀ
{਍ഀ
    if ( ! Silverlight.isBrowserRestartRequired && Silverlight.onSilverlightInstalled )਍ഀ
    {਍ഀ
        try਍ഀ
        {਍ഀ
            navigator.plugins.refresh();਍ഀ
        }਍ഀ
        catch(e)਍ഀ
        {਍ഀ
        }਍ഀ
        if (Silverlight.isInstalled(null) && !Silverlight.__onSilverlightInstalledCalled)਍ഀ
        {਍ഀ
            Silverlight.onSilverlightInstalled();਍ഀ
            Silverlight.__onSilverlightInstalledCalled = true;਍ഀ
        }਍ഀ
        else਍ഀ
        {਍ഀ
              setTimeout(Silverlight.WaitForInstallCompletion, 3000);਍ഀ
        }    ਍ഀ
    }਍ഀ
};਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
//਍ഀ
// __startup:਍ഀ
//਍ഀ
// Performs startup tasks. ਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
Silverlight.__startup = function()਍ഀ
{਍ഀ
    navigator.plugins.refresh();਍ഀ
    Silverlight.isBrowserRestartRequired = Silverlight.isInstalled(null);਍ഀ
    if (!Silverlight.isBrowserRestartRequired)਍ഀ
    {਍ഀ
        Silverlight.WaitForInstallCompletion();਍ഀ
        if (!Silverlight.__installationEventFired)਍ഀ
        {਍ഀ
            Silverlight.onInstallRequired();਍ഀ
            Silverlight.__installationEventFired = true;਍ഀ
        }਍ഀ
    }਍ഀ
    else if (window.navigator.mimeTypes)਍ഀ
    {਍ഀ
        var mimeSL2 =   navigator.mimeTypes["application/x-silverlight-2"];਍ഀ
        var mimeSL2b2 = navigator.mimeTypes["application/x-silverlight-2-b2"];਍ഀ
        var mimeSL2b1 = navigator.mimeTypes["application/x-silverlight-2-b1"];਍ഀ
        var mimeHighestBeta = mimeSL2b1;਍ഀ
        if (mimeSL2b2)਍ഀ
            mimeHighestBeta = mimeSL2b2;਍ഀ
            ਍ഀ
        if (!mimeSL2 && (mimeSL2b1 || mimeSL2b2))਍ഀ
        {਍ഀ
            if (!Silverlight.__installationEventFired)਍ഀ
            {਍ഀ
                Silverlight.onUpgradeRequired();਍ഀ
                Silverlight.__installationEventFired = true;਍ഀ
            }਍ഀ
        }਍ഀ
        else if (mimeSL2 && mimeHighestBeta)਍ഀ
        {਍ഀ
            if (mimeSL2.enabledPlugin &&਍ഀ
                mimeHighestBeta.enabledPlugin)਍ഀ
            {਍ഀ
                if (mimeSL2.enabledPlugin.description !=਍ഀ
                    mimeHighestBeta.enabledPlugin.description)਍ഀ
                {਍ഀ
                    if (!Silverlight.__installationEventFired)਍ഀ
                    {਍ഀ
                        Silverlight.onRestartRequired();਍ഀ
                        Silverlight.__installationEventFired = true;਍ഀ
                    }਍ഀ
                }਍ഀ
            }਍ഀ
        }਍ഀ
    }਍ഀ
    if (!Silverlight.disableAutoStartup)਍ഀ
    {਍ഀ
        if (window.removeEventListener)਍ഀ
        {਍ഀ
            window.removeEventListener('load', Silverlight.__startup, false);਍ഀ
        }਍ഀ
        else਍ഀ
        {਍ഀ
            window.detachEvent('onload', Silverlight.__startup);਍ഀ
        }਍ഀ
    }਍ഀ
};਍ഀ
਍ഀ
///////////////////////////////////////////////////////////////////////////////਍ഀ
//਍ഀ
// This block wires up Silverlight.__startup to be executed once the page਍ഀ
// loads. This is the desired behavior for most sites. If, however, a site਍ഀ
// prefers to control the timing of the Silverlight.__startup call then it should਍ഀ
// put the following block of javascript into the webpage before this file is਍ഀ
// included:਍ഀ
//਍ഀ
//    <script type="text/javascript">਍ഀ
//        if (!window.Silverlight)਍ഀ
//        {਍ഀ
//            window.Silverlight = {};਍ഀ
//        }਍ഀ
//        Silverlight.disableAutoStartup = true;਍ഀ
//    </script> ਍ഀ
//਍ഀ
/////////////////////////////////////////////////////////////////////////////////਍ഀ
਍ഀ
if (!Silverlight.disableAutoStartup)਍ഀ
{਍ഀ
    if (window.addEventListener)਍ഀ
    {਍ഀ
        window.addEventListener('load', Silverlight.__startup, false);਍ഀ
    }਍ഀ
    else਍ഀ
    {਍ഀ
        window.attachEvent('onload', Silverlight.__startup);਍ഀ
    }਍ഀ
}਍ഀ
਍ഀ
///////////////////////////////////////////////////////////////////////////////਍ഀ
// createObject:਍ഀ
//਍ഀ
// Inserts a Silverlight <object> tag or installation experience into the HTML਍ഀ
// DOM based on the current installed state of Silverlight. ਍ഀ
//਍ഀ
/////////////////////////////////////////////////////////////////////////////////਍ഀ
਍ഀ
Silverlight.createObject = function(source, parentElement, id, properties, events, initParams, userContext)਍ഀ
{਍ഀ
    var slPluginHelper = new Object();਍ഀ
    var slProperties = properties;਍ഀ
    var slEvents = events;਍ഀ
    ਍ഀ
    slPluginHelper.version = slProperties.version;਍ഀ
    slProperties.source = source;    ਍ഀ
    slPluginHelper.alt = slProperties.alt;਍ഀ
    ਍ഀ
    //rename properties to their tag property names. For bacwards compatibility਍ഀ
    //with Silverlight.js version 1.0਍ഀ
    if ( initParams )਍ഀ
        slProperties.initParams = initParams;਍ഀ
    if ( slProperties.isWindowless && !slProperties.windowless)਍ഀ
        slProperties.windowless = slProperties.isWindowless;਍ഀ
    if ( slProperties.framerate && !slProperties.maxFramerate)਍ഀ
        slProperties.maxFramerate = slProperties.framerate;਍ഀ
    if ( id && !slProperties.id)਍ഀ
        slProperties.id = id;਍ഀ
    ਍ഀ
    // remove elements which are not to be added to the instantiation tag਍ഀ
    delete slProperties.ignoreBrowserVer;਍ഀ
    delete slProperties.inplaceInstallPrompt;਍ഀ
    delete slProperties.version;਍ഀ
    delete slProperties.isWindowless;਍ഀ
    delete slProperties.framerate;਍ഀ
    delete slProperties.data;਍ഀ
    delete slProperties.src;਍ഀ
    delete slProperties.alt;਍ഀ
਍ഀ
਍ഀ
    // detect that the correct version of Silverlight is installed, else display install਍ഀ
਍ഀ
    if (Silverlight.isInstalled(slPluginHelper.version))਍ഀ
    {਍ഀ
        //move unknown events to the slProperties array਍ഀ
        for (var name in slEvents)਍ഀ
        {਍ഀ
            if ( slEvents[name])਍ഀ
            {਍ഀ
                if ( name == "onLoad" && typeof slEvents[name] == "function" && slEvents[name].length != 1 )਍ഀ
                {਍ഀ
                    var onLoadHandler = slEvents[name];਍ഀ
                    slEvents[name]=function (sender){ return onLoadHandler(document.getElementById(id), userContext, sender)};਍ഀ
                }਍ഀ
                var handlerName = Silverlight.__getHandlerName(slEvents[name]);਍ഀ
                if ( handlerName != null )਍ഀ
                {਍ഀ
                    slProperties[name] = handlerName;਍ഀ
                    slEvents[name] = null;਍ഀ
                }਍ഀ
                else਍ഀ
                {਍ഀ
                    throw "typeof events."+name+" must be 'function' or 'string'";਍ഀ
                }਍ഀ
            }਍ഀ
        }਍ഀ
        slPluginHTML = Silverlight.buildHTML(slProperties);਍ഀ
    }਍ഀ
    //The control could not be instantiated. Show the installation prompt਍ഀ
    else ਍ഀ
    {਍ഀ
        slPluginHTML = Silverlight.buildPromptHTML(slPluginHelper);਍ഀ
    }਍ഀ
਍ഀ
    // insert or return the HTML਍ഀ
    if(parentElement)਍ഀ
    {਍ഀ
        parentElement.innerHTML = slPluginHTML;਍ഀ
    }਍ഀ
    else਍ഀ
    {਍ഀ
        return slPluginHTML;਍ഀ
    }਍ഀ
਍ഀ
};਍ഀ
਍ഀ
///////////////////////////////////////////////////////////////////////////////਍ഀ
//਍ഀ
//  buildHTML:਍ഀ
//਍ഀ
//  create HTML that instantiates the control਍ഀ
//਍ഀ
///////////////////////////////////////////////////////////////////////////////਍ഀ
Silverlight.buildHTML = function( slProperties)਍ഀ
{਍ഀ
    var htmlBuilder = [];਍ഀ
਍ഀ
    htmlBuilder.push('<object type=\"application/x-silverlight\" data="data:application/x-silverlight,"');਍ഀ
    if ( slProperties.id != null )਍ഀ
    {਍ഀ
        htmlBuilder.push(' id="' + Silverlight.HtmlAttributeEncode(slProperties.id) + '"');਍ഀ
    }਍ഀ
    if ( slProperties.width != null )਍ഀ
    {਍ഀ
        htmlBuilder.push(' width="' + slProperties.width+ '"');਍ഀ
    }਍ഀ
    if ( slProperties.height != null )਍ഀ
    {਍ഀ
        htmlBuilder.push(' height="' + slProperties.height + '"');਍ഀ
    }਍ഀ
    htmlBuilder.push(' >');਍ഀ
    ਍ഀ
    delete slProperties.id;਍ഀ
    delete slProperties.width;਍ഀ
    delete slProperties.height;਍ഀ
    ਍ഀ
    for (var name in slProperties)਍ഀ
    {਍ഀ
        if (slProperties[name])਍ഀ
        {਍ഀ
            htmlBuilder.push('<param name="'+Silverlight.HtmlAttributeEncode(name)+'" value="'+Silverlight.HtmlAttributeEncode(slProperties[name])+'" />');਍ഀ
        }਍ഀ
    }਍ഀ
    htmlBuilder.push('<\/object>');਍ഀ
    return htmlBuilder.join('');਍ഀ
};਍ഀ
਍ഀ
਍ഀ
਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
//਍ഀ
// createObjectEx:਍ഀ
//਍ഀ
// takes a single parameter of all createObject ਍ഀ
// parameters enclosed in {}਍ഀ
//਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
਍ഀ
Silverlight.createObjectEx = function(params)਍ഀ
{਍ഀ
    var parameters = params;਍ഀ
    var html = Silverlight.createObject(parameters.source, parameters.parentElement, parameters.id, parameters.properties, parameters.events, parameters.initParams, parameters.context);਍ഀ
    if (parameters.parentElement == null)਍ഀ
    {਍ഀ
        return html;਍ഀ
    }਍ഀ
};਍ഀ
਍ഀ
///////////////////////////////////////////////////////////////////////////////////////////////਍ഀ
//਍ഀ
// buildPromptHTML਍ഀ
//਍ഀ
// Builds the HTML to prompt the user to download and install Silverlight਍ഀ
//਍ഀ
///////////////////////////////////////////////////////////////////////////////////////////////਍ഀ
Silverlight.buildPromptHTML = function(slPluginHelper)਍ഀ
{਍ഀ
    var slPluginHTML = "";਍ഀ
    var urlRoot = Silverlight.fwlinkRoot;਍ഀ
    var version = slPluginHelper.version ;਍ഀ
    if ( slPluginHelper.alt )਍ഀ
    {਍ഀ
        slPluginHTML = slPluginHelper.alt;਍ഀ
    }਍ഀ
    else਍ഀ
    {਍ഀ
        if (! version)਍ഀ
        {਍ഀ
            version="";਍ഀ
        }਍ഀ
        slPluginHTML = "<a href='javascript:Silverlight.getSilverlight(\"{1}\");' style='text-decoration: none;'><img src='{2}' alt='Get Microsoft Silverlight' style='border-style: none'/></a>";਍ഀ
        slPluginHTML = slPluginHTML.replace('{1}', version);਍ഀ
        slPluginHTML = slPluginHTML.replace('{2}', urlRoot + '108181');਍ഀ
    }਍ഀ
    ਍ഀ
    return slPluginHTML;਍ഀ
};਍ഀ
਍ഀ
///////////////////////////////////////////////////////////////////////////////////////////////਍ഀ
//਍ഀ
// getSilverlight:਍ഀ
//਍ഀ
// Navigates the browser to the appropriate Silverlight installer਍ഀ
//਍ഀ
///////////////////////////////////////////////////////////////////////////////////////////////਍ഀ
Silverlight.getSilverlight = function(version)਍ഀ
{਍ഀ
    if (Silverlight.onGetSilverlight )਍ഀ
    {਍ഀ
        Silverlight.onGetSilverlight();਍ഀ
    }਍ഀ
    ਍ഀ
    var shortVer = "";਍ഀ
    var reqVerArray = String(version).split(".");਍ഀ
    if (reqVerArray.length > 1)਍ഀ
    {਍ഀ
        var majorNum = parseInt(reqVerArray[0] );਍ഀ
        if ( isNaN(majorNum) || majorNum < 2 )਍ഀ
        {਍ഀ
            shortVer = "1.0";਍ഀ
        }਍ഀ
        else਍ഀ
        {਍ഀ
            shortVer = reqVerArray[0]+'.'+reqVerArray[1];਍ഀ
        }਍ഀ
    }਍ഀ
    ਍ഀ
    var verArg = "";਍ഀ
    ਍ഀ
    if (shortVer.match(/^\d+\056\d+$/) )਍ഀ
    {਍ഀ
        verArg = "&v="+shortVer;਍ഀ
    }਍ഀ
    ਍ഀ
    Silverlight.followFWLink("114576" + verArg);਍ഀ
};਍ഀ
਍ഀ
਍ഀ
///////////////////////////////////////////////////////////////////////////////////////////////਍ഀ
//਍ഀ
// followFWLink:਍ഀ
//਍ഀ
// Navigates to a url based on fwlinkid਍ഀ
//਍ഀ
///////////////////////////////////////////////////////////////////////////////////////////////਍ഀ
Silverlight.followFWLink = function(linkid)਍ഀ
{਍ഀ
    top.location=Silverlight.fwlinkRoot+String(linkid);਍ഀ
};਍ഀ
਍ഀ
///////////////////////////////////////////////////////////////////////////////////////////////਍ഀ
//਍ഀ
// HtmlAttributeEncode:਍ഀ
//਍ഀ
// Encodes special characters in input strings as charcodes਍ഀ
//਍ഀ
///////////////////////////////////////////////////////////////////////////////////////////////਍ഀ
Silverlight.HtmlAttributeEncode = function( strInput )਍ഀ
{਍ഀ
      var c;਍ഀ
      var retVal = '';਍ഀ
਍ഀ
    if(strInput == null)਍ഀ
      {਍ഀ
          return null;਍ഀ
    }਍ഀ
      ਍ഀ
      for(var cnt = 0; cnt < strInput.length; cnt++)਍ഀ
      {਍ഀ
            c = strInput.charCodeAt(cnt);਍ഀ
਍ഀ
            if (( ( c > 96 ) && ( c < 123 ) ) ||਍ഀ
                  ( ( c > 64 ) && ( c < 91 ) ) ||਍ഀ
                  ( ( c > 43 ) && ( c < 58 ) && (c!=47)) ||਍ഀ
                  ( c == 95 ))਍ഀ
            {਍ഀ
                  retVal = retVal + String.fromCharCode(c);਍ഀ
            }਍ഀ
            else਍ഀ
            {਍ഀ
                  retVal = retVal + '&#' + c + ';';਍ഀ
            }਍ഀ
      }਍ഀ
      ਍ഀ
      return retVal;਍ഀ
};਍ഀ
///////////////////////////////////////////////////////////////////////////////਍ഀ
//਍ഀ
//  default_error_handler:਍ഀ
//਍ഀ
//  Default error handling function ਍ഀ
//਍ഀ
///////////////////////////////////////////////////////////////////////////////਍ഀ
਍ഀ
Silverlight.default_error_handler = function (sender, args)਍ഀ
{਍ഀ
    var iErrorCode;਍ഀ
    var errorType = args.ErrorType;਍ഀ
਍ഀ
    iErrorCode = args.ErrorCode;਍ഀ
਍ഀ
    var errMsg = "\nSilverlight error message     \n" ;਍ഀ
਍ഀ
    errMsg += "ErrorCode: "+ iErrorCode + "\n";਍ഀ
਍ഀ
਍ഀ
    errMsg += "ErrorType: " + errorType + "       \n";਍ഀ
    errMsg += "Message: " + args.ErrorMessage + "     \n";਍ഀ
਍ഀ
    if (errorType == "ParserError")਍ഀ
    {਍ഀ
        errMsg += "XamlFile: " + args.xamlFile + "     \n";਍ഀ
        errMsg += "Line: " + args.lineNumber + "     \n";਍ഀ
        errMsg += "Position: " + args.charPosition + "     \n";਍ഀ
    }਍ഀ
    else if (errorType == "RuntimeError")਍ഀ
    {਍ഀ
        if (args.lineNumber != 0)਍ഀ
        {਍ഀ
            errMsg += "Line: " + args.lineNumber + "     \n";਍ഀ
            errMsg += "Position: " +  args.charPosition + "     \n";਍ഀ
        }਍ഀ
        errMsg += "MethodName: " + args.methodName + "     \n";਍ഀ
    }਍ഀ
    alert (errMsg);਍ഀ
};਍ഀ
਍ഀ
///////////////////////////////////////////////////////////////////////////////////////////////਍ഀ
//਍ഀ
// __cleanup:਍ഀ
//਍ഀ
// Releases event handler resources when the page is unloaded਍ഀ
//਍ഀ
///////////////////////////////////////////////////////////////////////////////////////////////਍ഀ
Silverlight.__cleanup = function ()਍ഀ
{਍ഀ
    for (var i = Silverlight._silverlightCount - 1; i >= 0; i--) {਍ഀ
        window['__slEvent' + i] = null;਍ഀ
    }਍ഀ
    Silverlight._silverlightCount = 0;਍ഀ
    if (window.removeEventListener) { ਍ഀ
       window.removeEventListener('unload', Silverlight.__cleanup , false);਍ഀ
    }਍ഀ
    else { ਍ഀ
        window.detachEvent('onunload', Silverlight.__cleanup );਍ഀ
    }਍ഀ
};਍ഀ
਍ഀ
///////////////////////////////////////////////////////////////////////////////////////////////਍ഀ
//਍ഀ
// __getHandlerName:਍ഀ
//਍ഀ
// Generates named event handlers for delegates.਍ഀ
//਍ഀ
///////////////////////////////////////////////////////////////////////////////////////////////਍ഀ
Silverlight.__getHandlerName = function (handler)਍ഀ
{਍ഀ
    var handlerName = "";਍ഀ
    if ( typeof handler == "string")਍ഀ
    {਍ഀ
        handlerName = handler;਍ഀ
    }਍ഀ
    else if ( typeof handler == "function" )਍ഀ
    {਍ഀ
        if (Silverlight._silverlightCount == 0)਍ഀ
        {਍ഀ
            if (window.addEventListener) ਍ഀ
            {਍ഀ
                window.addEventListener('onunload', Silverlight.__cleanup , false);਍ഀ
            }਍ഀ
            else ਍ഀ
            {਍ഀ
                window.attachEvent('onunload', Silverlight.__cleanup );਍ഀ
            }਍ഀ
        }਍ഀ
        var count = Silverlight._silverlightCount++;਍ഀ
        handlerName = "__slEvent"+count;਍ഀ
        ਍ഀ
        window[handlerName]=handler;਍ഀ
    }਍ഀ
    else਍ഀ
    {਍ഀ
        handlerName = null;਍ഀ
    }਍ഀ
    return handlerName;਍ഀ
};਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
//  ਍ഀ
// onRequiredVersionAvailable:਍ഀ
//਍ഀ
// Called by version  verification control to notify the page that਍ഀ
// an appropriate build of Silverlight is available. The page ਍ഀ
// should respond by injecting the appropriate Silverlight control਍ഀ
//਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
Silverlight.onRequiredVersionAvailable = function() ਍ഀ
{਍ഀ
਍ഀ
};਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
//  ਍ഀ
// onRestartRequired:਍ഀ
//਍ഀ
// Called by version verification control to notify the page that਍ഀ
// an appropriate build of Silverlight is installed but not loaded. ਍ഀ
// The page should respond by injecting a clear and visible ਍ഀ
// "Thanks for installing. Please restart your browser and return਍ഀ
// to mysite.com" or equivalent into the browser DOM਍ഀ
//਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
Silverlight.onRestartRequired = function() ਍ഀ
{਍ഀ
਍ഀ
};਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
//  ਍ഀ
// onUpgradeRequired:਍ഀ
//਍ഀ
// Called by version verification control to notify the page that਍ഀ
// Silverlight must be upgraded. The page should respond by ਍ഀ
// injecting a clear, visible, and actionable upgrade message into਍ഀ
// the DOM. The message must inform the user that they need to ਍ഀ
// upgrade Silverlight to use the page. They are already somewhat਍ഀ
// familiar with the Silverlight product when they encounter this.਍ഀ
// Silverlight should be mentioned so the user expects to see that਍ഀ
// string in the installer UI. However, the Silverlight-powered਍ഀ
// application should be the focus of the solicitation. The user਍ഀ
// wants the app. Silverlight is a means to the app.਍ഀ
// ਍ഀ
// The upgrade solicitation will have a button that directs ਍ഀ
// the user to the Silverlight installer. Upon click the button਍ഀ
// should both kick off a download of the installer URL and replace਍ഀ
// the Upgrade text with "Thanks for downloading. When the upgarde਍ഀ
// is complete please restart your browser and return to ਍ഀ
// mysite.com" or equivalent.਍ഀ
//਍ഀ
// Note: For a more interesting upgrade UX we can use Silverlight਍ഀ
// 1.0-style XAML for this upgrade experience. Contact PiotrP for਍ഀ
// details.਍ഀ
//਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
Silverlight.onUpgradeRequired = function() ਍ഀ
{਍ഀ
਍ഀ
};਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
//  ਍ഀ
// onInstallRequired:਍ഀ
//਍ഀ
// Called by Silverlight.checkInstallStatus to notify the page਍ഀ
// that Silverlight has not been installed by this user.਍ഀ
// The page should respond by ਍ഀ
// injecting a clear, visible, and actionable upgrade message into਍ഀ
// the DOM. The message must inform the user that they need to ਍ഀ
// download and install components needed to use the page. ਍ഀ
// Silverlight should be mentioned so the user expects to see that਍ഀ
// string in the installer UI. However, the Silverlight-powered਍ഀ
// application should be the focus of the solicitation. The user਍ഀ
// wants the app. Silverlight is a means to the app.਍ഀ
// ਍ഀ
// The installation solicitation will have a button that directs ਍ഀ
// the user to the Silverlight installer. Upon click the button਍ഀ
// should both kick off a download of the installer URL and replace਍ഀ
// the Upgrade text with "Thanks for downloading. When installation਍ഀ
// is complete you may need to refresh the page to view this ਍ഀ
// content" or equivalent.਍ഀ
//਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
Silverlight.onInstallRequired = function() ਍ഀ
{਍ഀ
਍ഀ
};਍ഀ
਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
//  ਍ഀ
// IsVersionAvailableOnError:਍ഀ
//਍ഀ
// This function should be called at the beginning of a web page's਍ഀ
// Silverlight error handler. It will determine if the required ਍ഀ
// version of Silverlight is installed and available in the ਍ഀ
// current process.਍ഀ
//਍ഀ
// During its execution the function will trigger one of the ਍ഀ
// Silverlight installation state events, if appropriate.਍ഀ
//਍ഀ
// Sender and Args should be passed through from  the calling਍ഀ
// onError handler's parameters. ਍ഀ
//਍ഀ
// The associated Sivlerlight <object> tag must have਍ഀ
// minRuntimeVersion set and should have autoUpgrade set to false.਍ഀ
//਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
Silverlight.IsVersionAvailableOnError = function(sender, args)਍ഀ
{਍ഀ
    var retVal = false;਍ഀ
    try਍ഀ
    {਍ഀ
        if (args.ErrorCode == 8001 && !Silverlight.__installationEventFired)਍ഀ
        {਍ഀ
            Silverlight.onUpgradeRequired();਍ഀ
            Silverlight.__installationEventFired = true;਍ഀ
        }਍ഀ
        else if (args.ErrorCode == 8002 && !Silverlight.__installationEventFired)਍ഀ
        {਍ഀ
            Silverlight.onRestartRequired();਍ഀ
            Silverlight.__installationEventFired = true;਍ഀ
        }਍ഀ
        // this handles upgrades from 1.0. That control did not਍ഀ
        // understand the minRuntimeVerison parameter. It also਍ഀ
        // did not know how to parse XAP files, so would throw਍ഀ
        // Parse Error (5014). A Beta 2 control may throw 2106਍ഀ
        else if (args.ErrorCode == 5014 || args.ErrorCode == 2106)਍ഀ
        {਍ഀ
            if (Silverlight.__verifySilverlight2UpgradeSuccess(args.getHost()))਍ഀ
            {਍ഀ
                retVal = true;਍ഀ
            }਍ഀ
        }਍ഀ
        else਍ഀ
        {਍ഀ
            retVal = true;਍ഀ
        }਍ഀ
    }਍ഀ
    catch (e)਍ഀ
    {਍ഀ
    }਍ഀ
    return retVal;਍ഀ
};਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
//  ਍ഀ
// IsVersionAvailableOnLoad:਍ഀ
//਍ഀ
// This function should be called at the beginning of a web page's਍ഀ
// Silverlight onLoad handler. It will determine if the required ਍ഀ
// version of Silverlight is installed and available in the ਍ഀ
// current process.਍ഀ
//਍ഀ
// During its execution the function will trigger one of the ਍ഀ
// Silverlight installation state events, if appropriate.਍ഀ
//਍ഀ
// Sender should be passed through from  the calling਍ഀ
// onError handler's parameters. ਍ഀ
//਍ഀ
// The associated Sivlerlight <object> tag must have਍ഀ
// minRuntimeVersion set and should have autoUpgrade set to false.਍ഀ
//਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
Silverlight.IsVersionAvailableOnLoad = function(sender)਍ഀ
{਍ഀ
    var retVal = false;਍ഀ
    try਍ഀ
    {਍ഀ
        if (Silverlight.__verifySilverlight2UpgradeSuccess(sender.getHost()))਍ഀ
        {਍ഀ
            retVal = true;਍ഀ
        }਍ഀ
    }਍ഀ
    catch (e)਍ഀ
    {਍ഀ
    }਍ഀ
    return retVal;਍ഀ
};਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
//਍ഀ
// __verifySilverlight2UpgradeSuccess:਍ഀ
//਍ഀ
// This internal function helps identify installation state by਍ഀ
// taking advantage of behavioral differences between the਍ഀ
// 1.0 and 2.0 releases of Silverlight. ਍ഀ
//਍ഀ
//////////////////////////////////////////////////////////////////਍ഀ
Silverlight.__verifySilverlight2UpgradeSuccess = function(host)਍ഀ
{਍ഀ
    var retVal = false;਍ഀ
    var version = "2.0.31005";਍ഀ
    var installationEvent = null;਍ഀ
਍ഀ
    try਍ഀ
    {਍ഀ
        if (host.IsVersionSupported(version + ".99"))਍ഀ
        {਍ഀ
            installationEvent = Silverlight.onRequiredVersionAvailable;਍ഀ
            retVal = true;਍ഀ
        }਍ഀ
        else if (host.IsVersionSupported(version + ".0"))਍ഀ
        {਍ഀ
            installationEvent = Silverlight.onRestartRequired;਍ഀ
        }਍ഀ
        else਍ഀ
        {਍ഀ
            installationEvent = Silverlight.onUpgradeRequired;਍ഀ
        }਍ഀ
਍ഀ
        if (installationEvent && !Silverlight.__installationEventFired)਍ഀ
        {਍ഀ
            installationEvent();਍ഀ
            Silverlight.__installationEventFired = true;਍ഀ
        }਍ഀ
    }਍ഀ
    catch (e)਍ഀ
    {਍ഀ
    }਍ഀ
    return retVal;਍ഀ
};਍ഀ
