﻿///////////////////////////////////////////////////////////////////////////////
//
//  Silverlight.js   			version 1.0
//
//  This file is provided by Microsoft as a helper file for websites that
//  incorporate Silverlight Objects. This file is provided under the Silverlight 
//  SDK 1.0 license available at http://go.microsoft.com/fwlink/?linkid=94240.  
//  You may not use or distribute this file or the code in this file except as 
//  expressly permitted under that license.
// 
//  Copyright (c) 2007 Microsoft Corporation. All rights reserved.
//
///////////////////////////////////////////////////////////////////////////////

if (!window.Silverlight) window.Silverlight = {};
Silverlight._silverlightCount = 0;
Silverlight.ua = null;
Silverlight.available = false;
//Silverlight.fwlinkRoot = "http://go.microsoft.com/fwlink/?LinkID=";
Silverlight.detectUserAgent = function(){
    var a = window.navigator.userAgent;
    Silverlight.ua = {
        OS: "Unsupported",
        Browser: "Unsupported"
    };
    if (a.indexOf("Windows NT") >= 0) Silverlight.ua.OS = "Windows";
    else if (a.indexOf("PPC Mac OS X") >= 0) Silverlight.ua.OS = "MacPPC";
    else if (a.indexOf("Intel Mac OS X") >= 0) Silverlight.ua.OS = "MacIntel";
    if (Silverlight.ua.OS != "Unsupported") if (a.indexOf("MSIE") >= 0) {
        if (navigator.userAgent.indexOf("Win64") == -1) if (parseInt(a.split("MSIE")[1]) >= 6) Silverlight.ua.Browser = "MSIE"
    } else if (a.indexOf("Firefox") >= 0) {
        var b = a.split("Firefox/")[1].split("."), c = parseInt(b[0]);
        if (c >= 2) Silverlight.ua.Browser = "Firefox";
        else {
            var d = parseInt(b[1]);
            if (c == 1 && d >= 5) Silverlight.ua.Browser = "Firefox"
        }
    } else if (a.indexOf("Safari") >= 0) Silverlight.ua.Browser = "Safari"
};
Silverlight.detectUserAgent();
Silverlight.isInstalled = function(d){
    var c = false, a = null;
    try {
        var b = null;
        if (Silverlight.ua.Browser == "MSIE") b = new ActiveXObject("AgControl.AgControl");
        else if (navigator.plugins["Silverlight Plug-In"]) {
            a = document.createElement("div");
            document.body.appendChild(a);
            if (Silverlight.ua.Browser == "Safari") a.innerHTML = '<embed type="application/x-silverlight" />';
            else a.innerHTML = '<object type="application/x-silverlight"  data="data:," />';
            b = a.childNodes[0]
        }
        document.body.innerHTML;
        if (b.IsVersionSupported(d)) c = true;
        b = null;
        Silverlight.available = true
    } catch (e) {
        c = false
    }
    if (a) document.body.removeChild(a);
    return c
};
Silverlight.createObject = function(l, g, m, j, k, i, h){
    var b = {}, a = j, c = k;
    a.source = l;
    b.parentElement = g;
    b.id = Silverlight.HtmlAttributeEncode(m);
    b.width = Silverlight.HtmlAttributeEncode(a.width);
    b.height = Silverlight.HtmlAttributeEncode(a.height);
    b.ignoreBrowserVer = Boolean(a.ignoreBrowserVer);
    b.inplaceInstallPrompt = Boolean(a.inplaceInstallPrompt);
    b.onGetSilverlightClick = Silverlight.HtmlAttributeEncode(c.onGetSilverlightClick);
    var e = a.version.split(".");
    b.shortVer = e[0] + "." + e[1];
    b.version = a.version;
    a.initParams = i;
    a.windowless = a.isWindowless;
    a.maxFramerate = a.framerate;
    for (var d in c) 
        if (c[d] && d != "onLoad" && d != "onError") {
            a[d] = c[d];
            c[d] = null
        }
    delete a.width;
    delete a.height;
    delete a.id;
    delete a.onLoad;
    delete a.onError;
    delete a.ignoreBrowserVer;
    delete a.inplaceInstallPrompt;
    delete a.version;
    delete a.isWindowless;
    delete a.framerate;
    delete a.data;
    delete a.src;
    delete c.onGetSilverlightClick;
    if (Silverlight.isInstalled(b.version)) {
        if (Silverlight._silverlightCount == 0) if (window.addEventListener) window.addEventListener("onunload", Silverlight.__cleanup, false);
        else window.attachEvent("onunload", Silverlight.__cleanup);
        var f = Silverlight._silverlightCount++;
        a.onLoad = "__slLoad" + f;
        a.onError = "__slError" + f;
        window[a.onLoad] = function(a){
            if (c.onLoad) c.onLoad(document.getElementById(b.id), h, a)
        };
        window[a.onError] = function(a, b){
            if (c.onError) c.onError(a, b);
            else Silverlight.default_error_handler(a, b)
        };
        slPluginHTML = Silverlight.buildHTML(b, a)
    } else return;
    if (b.parentElement) b.parentElement.innerHTML = slPluginHTML;
    else return slPluginHTML
};
Silverlight.supportedUserAgent = function(){
    var a = Silverlight.ua, b = a.OS == "Unsupported" || a.Browser == "Unsupported" || a.OS == "Windows" && a.Browser == "Safari" || a.OS.indexOf("Mac") >= 0 && a.Browser == "IE";
    return !b
};
Silverlight.buildHTML = function(c, d){
    var a = [], e, i, g, f, h;
    if (Silverlight.ua.Browser == "Safari") {
        a.push("<embed ");
        e = "";
        i = " ";
        g = '="';
        f = '"';
        h = ' type="application/x-silverlight"/>' + "<iframe style='visibility:hidden;height:0;width:0'/>"
    } else {
        a.push('<object type="application/x-silverlight" data="data:,"');
        e = ">";
        i = ' <param name="';
        g = '" value="';
        f = '" />';
        h = "</object>"
    }
    a.push(' id="' + c.id + '" width="' + c.width + '" height="' + c.height + '" ' + e);
    for (var b in d) 
        if (d[b]) a.push(i + Silverlight.HtmlAttributeEncode(b) + g + Silverlight.HtmlAttributeEncode(d[b]) + f);
    a.push(h);
    return a.join("")
};
Silverlight.default_error_handler = function(e, b){
    var d, c = b.ErrorType;
    d = b.ErrorCode;
    var a = "\nSilverlight error message     \n";
    a += "ErrorCode: " + d + "\n";
    a += "ErrorType: " + c + "       \n";
    a += "Message: " + b.ErrorMessage + "     \n";
    if (c == "ParserError") {
        a += "XamlFile: " + b.xamlFile + "     \n";
        a += "Line: " + b.lineNumber + "     \n";
        a += "Position: " + b.charPosition + "     \n"
    } else if (c == "RuntimeError") {
        if (b.lineNumber != 0) {
            a += "Line: " + b.lineNumber + "     \n";
            a += "Position: " + b.charPosition + "     \n"
        }
        a += "MethodName: " + b.methodName + "     \n"
    }
    alert(a)
};
Silverlight.createObjectEx = function(b){
    var a = b, c = Silverlight.createObject(a.source, a.parentElement, a.id, a.properties, a.events, a.initParams, a.context);
    if (a.parentElement == null) return c
};
//Silverlight.buildPromptHTML = function(j){
//    var a = null, h = Silverlight.fwlinkRoot, c = Silverlight.ua.OS, d = j.onGetSilverlightClick, b = "92822", e, f = "Get Microsoft Silverlight", m = "0x409";
//    if (!d) d = "";
//    else d += "();";
//    if (j.inplaceInstallPrompt) {
//        var n = "104745";
//        if (Silverlight.available) e = "104746";
//        else e = "104747";
//        var i = "93481", g = "93483";
//        if (c == "Windows") {
//            b = "92799";
//            i = "92803";
//            g = "92805"
//        } else if (c == "MacIntel") {
//            b = "92808";
//            i = "92804";
//            g = "92806"
//        } else if (c == "MacPPC") {
//            b = "92807";
//            i = "92815";
//            g = "92816"
//        }
//        var l = 'By clicking <b>"Get Microsoft Silverlight"</b> you accept the<br /><a title="Silverlight License Agreement" href="{2}" target="_blank" style="text-decoration: underline; color: #0000CC"><b>Silverlight license agreement</b></a>', k = 'Silverlight updates automatically, <a title="Silverlight Privacy Statement" href="{3}" target="_blank" style="text-decoration: underline; color: #0000CC"><b>learn more</b></a>';
//        a = '<table border="0" cellpadding="0" cellspacing="0" width="206px" style="font-size: 55%; font-family: Verdana;  color: #5E5D5D;"><tr><td><img style="display: block; cursor: pointer; border= 0;" title="' + f + '" alt="' + f + '" onclick="javascript:Silverlight.followFWLink({0});' + d + '" src="{1}" /></td></tr><tr><td style="width: 206px; margin: 0px; background: #FFFFFF; text-align: left; border-left-style: solid; border-right-style: solid; border-color: #c7c7bd;padding-left: 6px; padding-right: 6px; padding-top: 3px; padding-bottom: 10px; border-width: 2px; ">' + l + '</td></tr><tr><td style="width: 206px; margin: 0px; background: #FFFFFF; text-align: left; border-left-style: solid; border-right-style: solid; padding-left: 6px; padding-right: 6px; border-color: #c7c7bd;padding-top: 0px; padding-bottom: 2px; border-width: 2px; ">' + k + '</td></tr><tr><td><img alt="" src="{4}" /></td></tr></table>';
//        a = a.replace("{2}", h + i);
//        a = a.replace("{3}", h + g);
//        a = a.replace("{4}", h + n)
//    } else {
//        if (Silverlight.available) e = "94377";
//        else e = "92801";
//        if (c == "Windows") b = "92800";
//        else if (c == "MacIntel") b = "92812";
//        else if (c == "MacPPC") b = "92811";
//        a = '<div style="display:block; width: 205px; height: 67px;"><img onclick="javascript:Silverlight.followFWLink({0});' + d + '" style="border:0; cursor:pointer" src="{1}" title="' + f + '" alt="' + f + '"/></div>'
//    }
//    a = a.replace("{0}", b);
//    a = a.replace("{1}", h + e + "&amp;clcid=" + m);
//    return a
//};
Silverlight.__cleanup = function(){
    for (var a = Silverlight._silverlightCount - 1; a >= 0; a--) {
        window["__slLoad" + a] = null;
        window["__slError" + a] = null
    }
    if (window.removeEventListener) window.removeEventListener("unload", Silverlight.__cleanup, false);
    else window.detachEvent("onunload", Silverlight.__cleanup)
};
//Silverlight.followFWLink = function(a){
//    top.location = Silverlight.fwlinkRoot + String(a)
//};
Silverlight.HtmlAttributeEncode = function(c){
    var a, b = "";
    if (c == null) return null;
    for (var d = 0; d < c.length; d++) {
        a = c.charCodeAt(d);
        if (a > 96 && a < 123 || a > 64 && a < 91 || a > 43 && a < 58 && a != 47 || a == 95) b = b + String.fromCharCode(a);
        else b = b + "&#" + a + ";"
    }
    return b
}
  //        }
    //        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;
    };