﻿if (!window.Silverlight){
    window.Silverlight = { };
}
Silverlight._silverlightCount = 0;
Silverlight.onSilverlightInstalled = function () {window.location.reload(false);};

Silverlight.isInstalled = function(){
	var plugin = false;
	try{
		plugin = new ActiveXObject('AgControl.AgControl');
	}
	catch (e){
		plugin = navigator.plugins["Silverlight Plug-In"];
	}
	if (plugin){
		return true;
	} else{
		return false;
	}
}

Silverlight.WaitForInstallCompletion = function(){
	try{
		navigator.plugins.refresh();
	} catch(e){}
	if (Silverlight.isInstalled()){
		Silverlight.onSilverlightInstalled();
	} else{
		setTimeout(Silverlight.WaitForInstallCompletion, 3000);
	}
}

Silverlight.__startup = function(){ 
	if(!Silverlight.isInstalled()){
		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 );
}

Silverlight.createObject = function(e){
	var slProperties = e.properties;
	var slEvents = e.events;
	var slContext = e.context;

    if (Silverlight.isInstalled()){
        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){ onLoadHandler("", slContext, 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'";
                }
            }
        }
        Silverlight.buildHTML(slProperties);
    } else{
        Silverlight.buildPromptHTML(slProperties);
    }
}
Silverlight.dom = function(id,tg){
	var a = document.createElement(tg);
	this.attr = function(t,v){
		a.setAttribute(t,v);
	}
	this.child = function(o){
		a.appendChild(o);
	}
	this.param = function(n,v){
		var p = document.createElement("param");
		p.setAttribute("name",n);
		p.setAttribute("value",v);
		this.child(p);
	}
	var st = new Array();
	this.style = function(n,v){
		st.push(n+":"+v);
	}
	var nt = new Array();
	this.init = function(n,v){
		nt.push(n+"="+v);
	}
	this.write = function(){
		if(nt.length){
			this.param("initParams",nt.join());
		} if(st.length){
			this.attr("style",st.join(";"));
		}
		if(!id){
			return a;
		} else{
			id.appendChild(a);
		}
	}
}

Silverlight.buildHTML = function(e)
{
    var Build = new Silverlight.dom(e.id,"object")
	Build.attr("type","application/x-silverlight");
	Build.attr("data","data:application/x-silverlight,");
	if(e.width || e.height){
		if (e.width){
			var wd = e.width+"";
			if(wd.indexOf("%") == -1){
				wd += "px";
			}
			Build.style("width",wd);
		}
		if (e.height){
			var hg = e.height+"";
			if(hg.indexOf("%") == -1){
				hg += "px";
			}
			Build.style("height",hg);
		}
	}
    for (var name in e.initParams){
        if (e.initParams[name]){
            Build.init(name,e.initParams[name]);
        }
    }
	delete e.id;
    delete e.width;
    delete e.height;
	delete e.initParams;

    for (var name in e){
        if (e[name]){
            Build.param(name,e[name]);
        }
    }
	Build.write();
}


Silverlight.buildPromptHTML = function(e){
	var url='http://go2.microsoft.com/fwlink/?LinkID=';
    var Build = new Silverlight.dom(e.id,"a")
	Build.attr("href",url+"114576");
	Build.style("text-decoration","none");
		var img = new domelement(false,"img");
		img.attr("src",url+"108181");
		img.attr("alt","Get Microsoft Silverlight")
		img.style("border-style","none");
	Build.child(img.write());
	Build.write()
}

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 );
    }
}

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;
}
