

// ------------------------------------- GLOBAL DATA -------------------------------------------
// Global data. VERY IMPORTANT: never never change these.
var CD_CONTROL120CLSID	= "clsid:4A6F3C59-D184-49FA-9189-AF42BEDFE5E4";
var CD_CONTROL110CLSID	= "clsid:45C31980-E065-49A1-A3D7-E69CD40DAF66";
var CD_CONTROL100CLSID	= "clsid:7EF697A4-D9F3-4303-9161-BBBEA1C30097";
var CD_CONTROL90CLSID	= "clsid:60257C74-D60B-41D6-9296-A08BD51F15B5";
var CD_CONTROL80CLSID	= "clsid:51A649C4-3E3D-4557-9BD8-B14C0AD44B0C";
var CD_CONTROL70CLSID	= "clsid:AF2D2DC1-75E4-4123-BC0B-A57BD5C5C5D2";
var CD_CONTROL60CLSID	= "clsid:FA549D21-6F54-11D2-B61B-00C04F736BDF";

var CD_CONTROL_CLSID	= CD_CONTROL110CLSID;


// MOST IMPORTANT!!! To indicate which Plugin/ActiveX to use
// 1 - Control/ActiveX;  2 - old Plugin;  3 - new Plugin.

var cd_currentUsing = 0;
var js_canUseTry = true;

// Default threshold can be overridden by declaring it previously in page
if (!cd_plugin_threshold) var cd_plugin_threshold = 5.0;



function cd_figureOutUsing() {
	if (cd_IsMacWithIE()) {
		cd_currentUsing = 0;
		return;
	}
	var version = cd_getBrowserVersion();
	if (cd_testBrowserType("Microsoft Internet Explorer")) {
		if (version < cd_plugin_threshold)
			cd_currentUsing = 2;
		else
			cd_currentUsing = 1;
		if (version >= 5.5)
			js_canUseTry = true;
	}
	else if (cd_testBrowserType("Netscape")) {
		if (version < 5.0)
			cd_currentUsing = 2;
		else if (version >= 5.0)
			cd_currentUsing = 3;
		if (version >= 5.0)
			js_canUseTry = true;
	}
	else
		cd_currentUsing = 0;

		
}



cd_figureOutUsing();


/////////////////////////////////////////////////////////////////////////////////////////////
// To get Browser's version.

function cd_getBrowserVersion() {
	if (cd_testBrowserType("Microsoft Internet Explorer")) {
		var str = navigator.appVersion;
		var i = str.indexOf("MSIE");
		if (i >= 0) {
			str = str.substr(i + 4);
			return parseFloat(str);
		}
		else
			return 0;
	}
	else
		return parseFloat(navigator.appVersion);
}


/////////////////////////////////////////////////////////////////////////////////////////////
// To test Browser's type.

function cd_testBrowserType(brwType) {
	return (navigator.appName.indexOf(brwType) != -1);
}


/////////////////////////////////////////////////////////////////////////////////////////////
// To test if IE runs on MAC.

function cd_IsMacWithIE() {
	return cd_testBrowserType("Microsoft Internet Explorer") && (navigator.platform.indexOf("Mac") != -1 || navigator.platform.indexOf("MAC") != -1);
}



/////////////////////////////////////////////////////////////////////////////////////////////
// To test whether ActiveX is installed on local machine.

function cd_isCDActiveXInstalled() {
	// Note: try ... catch ... statement isn't available in JavaScript 1.4 (IE 4 uses js 1.4).
	// That means that try/catch code can't even exist if we're using an earlier version of JavaScript
	//  so we have to wrap it as a string.  If we're using a sufficiently-recent browser (that has
	//  a version of JavaScript 1.4 or later), we'll eval the string, which will end up doing a try/catch
	//  For older browsers, we'll just do things the old way, and suffer through any performance penalties.
	
	var retval = true;

	if (js_canUseTry) {
		var str = "";
		str = str + "try\n";
		str = str + "{\n";
		str = str + "	// Try 12.0\n";
		str = str + "	var obj12 = new ActiveXObject(\"ChemDrawControl12.ChemDrawCtl\");\n";
		str = str + "	CD_CONTROL_CLSID = CD_CONTROL120CLSID;\n";
		str = str + "} catch(e12)\n";
		str = str + "{\n";
		str = str + "	try\n";
		str = str + "	{\n";
		str = str + "		// Try 11.0\n";
		str = str + "		var obj11 = new ActiveXObject(\"ChemDrawControl11.ChemDrawCtl\");\n";
		str = str + "		CD_CONTROL_CLSID = CD_CONTROL110CLSID;\n";
		str = str + "	} catch(e11)\n";
		str = str + "	{\n";
		str = str + "		try\n";
		str = str + "		{\n";
		str = str + "			// Try 10.0\n";
		str = str + "			var obj10 = new ActiveXObject(\"ChemDrawControl10.ChemDrawCtl\");\n";
		str = str + "			CD_CONTROL_CLSID = CD_CONTROL100CLSID;\n";
		str = str + "		} catch(e10)\n";
		str = str + "		{\n";
		str = str + "			try\n";
		str = str + "			{\n";
		str = str + "				// Try 9.0\n";
		str = str + "				var obj9 = new ActiveXObject(\"ChemDrawControl9.ChemDrawCtl\");\n";
		str = str + "				CD_CONTROL_CLSID = CD_CONTROL90CLSID;\n";
		str = str + "			} catch(e9)\n";
		str = str + "			{\n";
		str = str + "				try\n";
		str = str + "				{\n";
		str = str + "					// Try 8.0\n";
		str = str + "					var obj8 = new ActiveXObject(\"ChemDrawControl8.ChemDrawCtl\");\n";
		str = str + "					CD_CONTROL_CLSID = CD_CONTROL80CLSID;\n";
		str = str + "				} catch(e8)\n";
		str = str + "				{\n";
		str = str + "					try\n";
		str = str + "					{\n";
		str = str + "						// try 7.0\n";
		str = str + "						// Something is wrong in 7.0 installers, which causes \"ChemDrawControl7.ChemDrawCtl\" cannot be used.\n";
		str = str + "						var obj7 = new ActiveXObject(\"ChemDrawControl7.ChemDrawCtl.7.0\");\n";
		str = str + "						CD_CONTROL_CLSID = CD_CONTROL70CLSID\n";
		str = str + "					} catch(e7)\n";
		str = str + "					{\n";
		str = str + "						try\n";
		str = str + "						{\n";
		str = str + "							// try 6.0\n";
		str = str + "							var obj6 = new ActiveXObject(\"ChemDrawLib.ChemDrawCtl6.0\");\n";
		str = str + "							CD_CONTROL_CLSID = CD_CONTROL60CLSID\n";
		str = str + "						} catch(e6)\n";
		str = str + "						{\n";
		str = str + "							// No version installed\n";
		str = str + "							retval = false;\n";
		str = str + "						}\n";
		str = str + "					}\n";
		str = str + "				}";
		str = str + "			}";
		str = str + "		}";
		str = str + "	}";
		str = str + "}";

		eval(str);
	}
	
	return retval;
}


/////////////////////////////////////////////////////////////////////////////////////////////
// To test whether Plugin is installed on locall machine.

function cd_isCDPluginInstalled() {
	if (cd_testBrowserType("Microsoft Internet Explorer")) {
		var str =
		"<div style='left:0;top:0;zIndex:1;position:absolute'><applet code='camsoft.cdp.CDPHelperAppSimple2' width=0 height=0 name='test_plugin'><param name=ID value=99999><param NAME=cabbase value='" + CD_PLUGIN_CAB2 + "'></applet></div>" +
		"<SCRIPT LANGUAGE=javascript>" +
		"	var testpluginonlyonce = false;" +
		"	function document_onmouseover() {" +
		"		if (!testpluginonlyonce) {" +
		"			testpluginonlyonce = true;" +
		"			var pluginstalled = false;" +
		"			pluginstalled = document.applets[\"test_plugin\"].isLoaded();" +
		"			if (!pluginstalled) {" +
		"				CD_PLUGIN_JAR = \"\";" +
		"				CD_PLUGIN_CAB = \"\";" +
		"				cd_installNetPlugin();" +
		"			}" +
		"		}" +
		"	}" +
		"</" + "SCRIPT>" +
		"<SCRIPT LANGUAGE=javascript FOR=document EVENT=onmouseover>document_onmouseover()</" + "SCRIPT>";
		
		document.write(str);
		
		return true;
	}
	
	for (var i = 0; i < navigator.plugins.length; ++i) {
		if (navigator.plugins[i].name.indexOf("ChemDraw") != -1)
			return true;
	}
	
	return false;
}



