// THIS CODE IS NOT APPROVED FOR USE IN/ON ANY OTHER UI ELEMENT OR PRODUCT COMPONENT. 
// Copyright (c) 2007 Renderspace. All rights reserved.


/************************************************/
// SilverLight plugin functions
/************************************************/


function compareVersions(ver1, ver2) {
    if (ver1.major < ver2.major) return -1;
    if (ver1.major > ver2.major) return +1;
    if (ver1.minor < ver2.minor) return -1;
    if (ver1.minor > ver2.minor) return +1;
    if (ver1.build < ver2.build) return -1;
    if (ver1.build > ver2.build) return +1;
    return 0;
}


// check if ActiveX or plugin is installed
function checkSilverlightPluginVersion(name, name2, mimeType, versionStruct, versionText) {
    var versionString = null;
	if (navigator.userAgent && (navigator.userAgent.indexOf("MSIE") >= 0)) {
		var plugin = null;
		try {
			plugin = new ActiveXObject(name);
		}
		catch (e) {
		}
		if (plugin == null) return -1;
		var isSupported = plugin.IsVersionSupported(versionText);
		delete plugin;
		return isSupported ? 1 : 0;
	}
	else { // Netscape, Mozilla, Firefox
	    if ((navigator.plugins != null) && (navigator.plugins.length > 0)) {
            if (navigator.plugins[name2]) {
                versionString = navigator.plugins[name2].description;
            }
        }
        
        if (versionString == null) return -1;
    	var versionArray = versionString.split(".");
        return compareVersions({major: versionArray[0], minor: versionArray[1], build: versionArray[2]}, versionStruct) >= 0 ? 1 : 0;
	}
}


// Silverlight control embedder
function silverlightHost(hostElementID, id, source, frameRate, backgroundColor, width, height) {
    var pluginVersionSupported = checkSilverlightPluginVersion(PLUGIN_NAME, PLUGIN_NAME2, PLUGIN_MIMETYPE, PLUGIN_VERSION_MIN, PLUGIN_VERSION_TEXT);
    
    if (pluginVersionSupported <= 0) {
	    return;
    }
	  
	var innerHTML = '\n';
	
	if (navigator.userAgent.indexOf("Macintosh") != -1) {
		innerHTML += '<embed id="' + id + '" width="' + width + '" height="' + height + '"';
		innerHTML += ' pluginspage="' + PLUGIN_PAGE + '" type="' + PLUGIN_MIMETYPE + '"';
		innerHTML += ' source="' + source + '"';
		innerHTML += ' maxFramerate="' + frameRate + '"';
		innerHTML += ' windowless="true"';
		innerHTML += ' background="' + backgroundColor + '"';
		innerHTML += ' onError="onPluginError"';
		innerHTML += ' />';
	}
	else {
		innerHTML += '<object id="' + id + '" width="' + width + '" height="' + height + '" type="' + PLUGIN_MIMETYPE + '" pluginspage="' + PLUGIN_PAGE + '">';
		innerHTML += ' <param name="source" value="' + source + '" />\n';
		innerHTML += ' <param name="maxFramerate" value="' + frameRate + '" />\n';
		innerHTML += ' <param name="windowless" value="true" />\n';
		innerHTML += ' <param name="background" value="'+ backgroundColor +'" />';
		innerHTML += ' <param name="onError" value="onPluginError" />';
		innerHTML += '</object>\n';
	}
	
	var hostElement = document.getElementById(hostElementID);
	if (hostElement != null) hostElement.innerHTML = innerHTML;
}
