﻿//if (!window.Silverlight)
//{
//    window.Silverlight = { };
//}

//// Silverlight control instance counter for memory mgt
//Silverlight._silverlightCount = 0;
//Silverlight.fwlinkRoot='http://go2.microsoft.com/fwlink/?LinkID=';  
//Silverlight.onGetSilverlight = null;
//Silverlight.onSilverlightInstalled = function () {window.location.reload(false);};

////////////////////////////////////////////////////////////////////
//// isInstalled, checks to see if the correct version is installed
////////////////////////////////////////////////////////////////////
//Silverlight.isInstalled = function(version)
//{
//    var isVersionSupported=false;
//    var container = null;
//    
//    try 
//    {
//        var control = null;
//        
//        try
//        {
//            control = new ActiveXObject('AgControl.AgControl');
//            if ( version == null )
//            {
//                isVersionSupported = true;
//            }
//            else if ( control.IsVersionSupported(version) )
//            {
//                isVersionSupported = true;
//            }
//            control = null;
//        }
//        catch (e)
//        {
//            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;
//    }
//    if (container) 
//    {
//        document.body.removeChild(container);
//    }
//    
//    return isVersionSupported;
//}
//Silverlight.WaitForInstallCompletion = function()
//{
//    if ( ! Silverlight.isBrowserRestartRequired && Silverlight.onSilverlightInstalled )
//    {
//        try
//        {
//            navigator.plugins.refresh();
//        }
//        catch(e)
//        {
//        }
//        if ( Silverlight.isInstalled(null) )
//        {
//            Silverlight.onSilverlightInstalled();
//        }
//        else
//        {
//              setTimeout(Silverlight.WaitForInstallCompletion, 3000);
//        }    
//    }
//}
//Silverlight.__startup = function()
//{
//    Silverlight.isBrowserRestartRequired = Silverlight.isInstalled(null);//(!window.ActiveXObject || Silverlight.isInstalled(null));
//    if ( !Silverlight.isBrowserRestartRequired)
//    {
//        Silverlight.WaitForInstallCompletion();
//    }
//    if (window.removeEventListener) { 
//       window.removeEventListener('load', Silverlight.__startup , false);
//    }
//    else { 
//        window.detachEvent('onload', Silverlight.__startup );
//    }
//}

//if (window.addEventListener) 
//{
//    window.addEventListener('load', Silverlight.__startup , false);
//}
//else 
//{
//    window.attachEvent('onload', Silverlight.__startup );
//}

/////////////////////////////////////////////////////////////////////////////////
//// createObject();  Params:
//// parentElement of type Element, the parent element of the Silverlight Control
//// source of type String
//// id of type string
//// properties of type String, object literal notation { name:value, name:value, name:value},
////     current properties are: width, height, background, framerate, isWindowless, enableHtmlAccess, inplaceInstallPrompt:  all are of type string
//// events of type String, object literal notation { name:value, name:value, name:value},
////     current events are onLoad onError, both are type string
//// initParams of type Object or object literal notation { name:value, name:value, name:value}
//// userContext of type Object
///////////////////////////////////////////////////////////////////////////////////

//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
//    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;
//    }

//}

/////////////////////////////////////////////////////////////////////////////////
////
////  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="' + 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;
//    }
//}

/////////////////////////////////////////////////////////////////////////////////////////////////
//// Builds the HTML to prompt the user to download and install Silverlight
/////////////////////////////////////////////////////////////////////////////////////////////////
//Silverlight.buildPromptHTML = function(slPluginHelper)
//{
//    var slPluginHTML = "";
//    var urlRoot = Silverlight.fwlinkRoot;
//    var shortVer = slPluginHelper.version ;
//    if ( slPluginHelper.alt )
//    {
//        slPluginHTML = slPluginHelper.alt;
//    }
//    else
//    {
//        if (! shortVer )
//        {
//            shortVer="";
//        }
//        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}', shortVer );
//        slPluginHTML = slPluginHTML.replace('{2}', urlRoot + '108181');
//    }
//    
//    return slPluginHTML;
//}


//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);
//}


/////////////////////////////////////////////////////////////////////////////////////////////////
///// Navigates to a url based on fwlinkid
/////////////////////////////////////////////////////////////////////////////////////////////////
//Silverlight.followFWLink = function(linkid)
//{
//    top.location=Silverlight.fwlinkRoot+String(linkid);
//}












/////////////////////////////////////////////////////////////////////////////////////////////////
///// 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 handling function to be used when a custom error handler is
////  not present
////
/////////////////////////////////////////////////////////////////////////////////

//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);
//}

/////////////////////////////////////////////////////////////////////////////////////////////////
///// 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 );
//    }
//}
/////////////////////////////////////////////////////////////////////////////////////////////////
///// Releases event handler resources when the page is unloaded
/////////////////////////////////////////////////////////////////////////////////////////////////
//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;
//}