//N4C2.JS is used in PE, FIND-NCB, and MORPHER!
// debug #'s in use thru #5

// must match protexpl/version.js (used to detect bad installations)
//var shared_version = "1.982 Beta";
var shared_version = "2.25 Alfa";

//- - - - - - - - - - - - - - - - - - - - - - - - - - - 
NP = navigator.plugins;
var chii = -1;
var chimeVersionCookieName = "chi_ver";
var chimeVersion = ""; // string, e.g. "2.6 SP4"
var chimeVersionFP = 0; // floating point
var chimeVersionSP; // integer, e.g. 4, or 0 if no SP

var compatible_browser_list =
"<center><big><b>Buscadores compatibles con Protein Explorer</b></big></center>\
<big><font color='orange'><b>Windows</b></font></big>: \
<ul> \
<a href='ie_v_ns.htm'> \
Recomendado</a>: \
<li><font color='green'><b>Netscape Communicator</b></font> 4.7X or 4.8x con <b>Chime 2.6 SP4</b> o posterior. \
<br>(Chime 2.0 no permite la opci&oacute;n <i>Caracter&iacute;sticas de la mol&eacute;cula</i>de PE\'s  .) \
<p><a href='ie_v_ns.htm'> \
Aceptable</a>: \
<li><font color='green'><b>Netscape Navigator</b></font> 4.08 con <b>Chime 2.6 SP4</b> o posterior. \
<li><font color='green'><b>Netscape Navigator</b></font> 4.5-4.69 con <b>Chime 2.6 SP4</b> o posterior. \
<li><font color='brown'><b>Internet Explorer</b></font> Versi&oacute;n 5.5, Update Version SP2 con <b>Chime 2.6 SP4</b> \
o posterior. \
<li><font color='brown'><b>Internet Explorer</b></font> versi&oacute;n 6 con <b>Chime 2.6 SP4</b> o posterior.\
<p> \
<li><a href='ie_v_ns.htm'>&iquest;Por qu&eacute; es Netscape 4.7x/4.8  mejor que IE para Protein Explorer?</a> \
<li>Buscadores Incompatibles/Sin Soporte t&eacute;cnico: vea la lista abajo. \
</ul> \
<big><font color='magenta'><b>Macintosh</b></font></big>: \
<ul> \
<li>Recomendado: <font color='green'><b>Netscape Communicator</b></font> 4.7X/4.8x con <b>Chime 2.6 SP3</b> o posterior. \
<li> <i>Sin soporte t&eacute;cnico: Netscape 4.08-4.6, Internet Explorer, Safari, Opera: vea la lista abajo</i>.\
</ul> \
C&oacute;mo usar PE con <big><a href='needplat.htm'>linux y otras plataformas</a></big>.\
<p><hr noshade> \
<center><big><b>Buscadores Incompatibles/Sin soporte</b></big> \
<br>Con el tiempo esperamos poder dar soporte a un mayor rango de buscadores y plataformas  -- \
vea <a href='vers_pe.htm#jmol'>planes futuros</a>. \
</center> \
<p>Buscadores incompatibles: \
<ul> \
<li>Windows: Internet Explorer, versiones anteriores a 5.5 SP2. \
<li>Macintosh: Internet Explorer. \
<li>Macintosh: Safari. \
<li>Netscape versi&oacute;n 6. (Contiene fallos en lso conectores que impiden usar Chime.) \
<li>Netscape Navigator versiones anteriores a 4.08. \
</ul> \
Buscadores sin soporte: \
<br><small>(Puesto que el Instalador de Chime no los reconoce, deber&iacute;a \
copiar los archivos de Chime manualmente en la carpeta de conectores. \
Si bien puede que Chime funcione en estos buscadores, \
Protein Explorer no ha sido probado o adaptado para estos buscadores!) \
</small> \
<ul> \
<li>Netscape versi&oacute;n 7.1. \
<li>Mozilla (www.mozilla.org). \
<li>Opera. \
</ul> \
<hr noshade><center><big><b>Comprobaci&oacute;n de la Versi&oacute;n</b></big></center>\
La versi&oacute;n indicada en la parte superior de esta p&aacute;gina deber&iacute;a ser correcta. \
Para averiguar la versi&oacute;n de su buscador: \
<ul> \
<li><font color='green'>Netscape</font>: abra el men&uacute; de ayuda en la parte superior, y haga click en \"Acerca de \
Netscape\" o \"Acerca del Communicator\". \
<li><font color='brown'>Internet Explorer</font>: abra el men&uacute; de ayuda en la parte superior, y haga click sobre \"Acerca de \
Internet Explorer\". Preste atenci&oacute;n a la versi&oacute;n y a la actualizaci&oacute;n. \
</ul> \
Determinar la versi&oacute;n de <b>Chime</b> instalada en su buscador: \
<ul> \
 \
<li><font color='green'>Netscape</font>: abra el men&uacute; de ayuda en la parte superior, y haga click en \"Acerca de los \
conectores\". Baje hasta encontrar Chime. Si Chime no est&aacute; en la lista \
de conectores, no est&aacute; instalado en <i>este</i> buscador. (Puede que est&eacute; instalado \
en otro buscador u otra versi&oacute;n de su buscado en su sistema.) \
 \
<li><font color='brown'>Internet Explorer</font>: Si est&aacute; conectado a Internet, haga click en  \
<a href='http://www.umass.edu/microbio/chime/atp.pdb'>ATP</a>. \
Si la ventana no se pone negra y muestra la mol&eacute;cula de ATP, \
vea <a href='troubles.htm'>Problemas</a>. \
En otro caso, haga click en MDL en la parte inferior derecha, y a continuaci&oacute;n sobre el men&uacute; \
que se despliega, haga click sobre \"About...\". Si no est&aacute; conectado y posee alg&uacute;n archivo \
PDB (con un archivo cuyo nombre acabe en <b>.pdb</b>) en su disco duro, \
abra el men&uacute; archivo en la parte superior, haga click en abrir, y use el bot&oacute;n de su \
buscador para ver la mol&eacute;cula. A continuaci&oacute;n siga las instrucciones previas. \
 \
</ul> \
Si tiene problemas a pesar de contar con un buscador compatible \
y con Chime bien instalado vea\
 <a href='troubles.htm'>Problemas</a>. \
";

// DETECT BROWSER TYPE AND VERSION
//- - - - - - - - - - - - - - - - - - - - - - - - - - - 
function get_IE_version()
{
	var vi = navigator.appVersion.indexOf('MSIE ') + 5;
	var iev = parseFloat(navigator.appVersion.substring(vi));
//	alert("n4c2.js get_IE_version() returns " + iev);
	return iev;
}
function get_IE_SP() // ";SP2;Q306121;Q312461;"
{
	var isp = navigator.appMinorVersion.indexOf("SP");
	if (isp == -1)
		return null;
	var iesp = parseFloat(navigator.appMinorVersion.substring(isp + 2));
//	alert("n4c2.js get_IE_SP() returns " + iesp);
	return iesp;
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - 

//pp modified by em
var thisBrowser = "unknown";
var isNetscape = false;
var isIE = false;

if (navigator.appName=='Netscape') // not "Navigator"!
{
	// isNetscape is true for 4.8, 6, 7, ...
	// See Notes, Browser Detection:
	// "OS X" eliminates Safari and Netscape 7 on OSX
	// Opera has pref settings to emulate many browsers
	if (navigator.userAgent.indexOf("OS X") == -1 &&
		navigator.userAgent.indexOf("Safari") == -1 &&
		navigator.userAgent.indexOf("Opera") == -1)
	{
		thisBrowser = "ns";
		isNetscape = true;		
	}
}

if (navigator.appName=='Microsoft Internet Explorer')
{
	// Opera has an MSIE emulation mode
	// in case Safari has an MSIE emulation mode
	if (navigator.userAgent.indexOf("Opera") == -1 &&
		navigator.userAgent.indexOf("Safari") == -1)
	{
		thisBrowser = "ie";
		isIE = true;		
	}
}

var browserVersion;
if (isNetscape)
	browserVersion = parseFloat(navigator.appVersion);
if (isIE)
	browserVersion = get_IE_version();
var IE_SP;
if (isIE)
	IE_SP = get_IE_SP();

//alert("n4c2 #4:\n" +
//	"thisBrowser = " + thisBrowser + "\n" +
//	"isIE = " + isIE + "\n" +
//	"isNetscape = " + isNetscape + "\n" +
//	"browserVersion = " + browserVersion + "\n" +
//	"IE_SP = " + IE_SP + "\n");

/*
alert("n4c2.js debug#1:\n" +
	"navigator.appCodeName " + navigator.appCodeName + "\n" +
	"navigator.appName " + navigator.appName + "\n" +
	"navigator.appVersion " + navigator.appVersion + "\n" +
	"navigator.appMinorVersion " + navigator.appMinorVersion + "\n" +
	"navigator.browserLanguage " + navigator.browserLanguage + "\n" +
	"navigator.cookieEnabled " + navigator.cookieEnabled + "\n" +
	"navigator.javaEnabled() " + navigator.javaEnabled() + "\n" +
	"navigator.cpuClass " + navigator.cpuClass + "\n" +
	"navigator.language " + navigator.language + "\n" +
	"navigator.onLine " + navigator.onLine + "\n" +
	"navigator.platform " + navigator.platform + "\n" +
	"navigator.systemLanguage " + navigator.systemLanguage + "\n" +
	"navigator.userAgent " + navigator.userAgent + "\n" +
	"navigator.userLanguage " + navigator.Language + "\n" +
	"navigator.userProfile " + navigator.Profile + "\n");
*/

// IE appVersion = "4.0 (compatible; MSIE 5.5; Windows 98; T312461)"
// IE appMinorVersion = ";SP2;Q306121;Q312461;"
// IE About reports "Update Versions:; SP2; Q306121; Q312461;
// NS appVersion = "4.77 [en] (Win98; U)"
// NS appMinorVersion = "undefined"
//- - - - - - - - - - - - - - - - - - - - - - - - - - - 
// any_navigator() is no longer used in PE, but is here for FIND-NCB, MORPHER!
function any_navigator()
{
	return (top.isNetscape);
}

//- - - - - - - - - - - - - - - - - - - - - - - - - - - 

function navv408()
{
	if (!top.isNetscape)
		return false;
//pp
	if (4.08 <= browserVersion)
		return true;
	return false;
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - 
function navv406()
{
	if (!top.isNetscape)
		return false;
	if (4.06 <= browserVersion)
		return true;
	return false;
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - 
function navv404()
{
	if (!top.isNetscape)
		return false;
	if (4.04 <= browserVersion)
		return true;
	return false;
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - 
function navv6()
{
	if (!top.isNetscape)
		return false;
	if (browserVersion > 4.999)
		return true;
	return false;
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - 
function findNP(match)
{
	var nplen = NP.length;
	var piname;

	for (i = 0; i < nplen; i++)
	{
		piname = NP[i].name.toLowerCase();
	
		if (piname.indexOf(match) != -1)
			return(i);
	}
	return (-1);
}

//- - - - - - - - - - - - - - - - - - - - - - - - - - - 
function any_chime()
{
	if (chii != -1)
		return(true); // any_chime has already been called
	chii = findNP("chemscape chime");
	if (chii == -1)
	{
		// Beginning Version 2.6SP4 "MDL* Chime 2.6 SP4" where * is circled R.
		var i = findNP("chime");
		var j = findNP("mdl");
		if (i == j)
			chii = i;		
	}

	if (chii == -1)
		return false;

	chime_version(); // sets chimeVersion, chimeVersionFP, chimeVersionSP
	return true;
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - 
function chiv2()
{
	// chii = CHIme Index in plugin array
	if (!any_chime()) // sets chimeVersion, chimeVersionFP, chimeVersionSP
		return false;

//	alert(NP[chii].name);

	var chok = false; // chime upgrade needed
	var maybe = false; // user must confirm
	
	// MAC
	if (navigator.appVersion.toLowerCase().indexOf("mac") != -1)
	{
		if ((chimeVersionFP >= 2.6) && (chimeVersionSP >= 3))
			chok = true;
	}
	else // Windows
	{
		if ((chimeVersionFP == 2.6) && (chimeVersionSP >= 4))
			chok = true;
	}

//@@

// There haven't been any 'betas' since 2.6
	// IF 2.X BETA, MAYBE OK
//	if (NP[chii].name.toLowerCase().indexOf("beta") != -1)
//		maybe = true;

	// IF NOT 2.X, IF >2.6, GIVE IT A TRY (V3?)
	if (!chok)
	{
		if (chimeVersionFP > 2.6)
		{
			chok = true;
			maybe = true;
		}
	}
	if (maybe)
		chime_maybe();

	return (chok);
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - 
// Returns version number of Chime (Netscape only)
function chime_version()
{
	// chii = CHIme Index in plugin array
	if (!any_chime())
		return "";

//	alert(NP[chii].name);

// <= 2.6 SP3 "Chemscape Chime N.NN"
// >= 2.6 SP4 "MDLr Chime n.n SPn"
	var cvi = NP[chii].name.toLowerCase().indexOf("chime");
	chimeVersion = NP[chii].name.substring(cvi + 6); // skip "chime "
	chimeVersionFP = parseFloat(chimeVersion);
	cvi = NP[chii].name.indexOf(" SP");
	if (cvi == -1)
		chimeVersionSP = 0;
	else
		chimeVersionSP = parseInt(NP[chii].name.substring(cvi + 3));

//	alert("n4c2.js #5 chimeVersion=|" + chimeVersion + "|\n" +
//		"chimeVersionSP=|" + chimeVersionSP + "|");
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - 
function chime_maybe()
{
//	alert("debug #2 n4c2.js: chimeVersion = " + chimeVersion);
	var cvc = getCookie(chimeVersionCookieName);
	if (chimeVersion == cvc)
		return; // user has set cookie to stop warning.

	var m = "The Chime version with this browser,\n\"" +
		NP[chii].name +
		"\"\nis unexpected and may not work properly.\n" +
		"Cancel if you never want this warning again.";

	if (confirm(m))
		return;

	if (!confirm("You will never again be warned about this\n" +
		"version of Chime if you press OK.\n" +
		"OK only if you have verified that it works!\n" +
		"Cancel to be warned in your next PE session."))
			return;

	// Set cookie to avoid annoying user with warning.
	putCookie_year(chimeVersionCookieName, chimeVersion);
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - 
// chime_version_ok() is called only after a suitable browser is verified,
// and only for Netscape. Returns true/false.
function chime_version_ok()
{
	if (!chiv2())  // determines if chime version is satisfactory
		return false;
	else return true;
}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - 
//- - - - - - - - - - - - - - - - - - - - - - - - - - - 
//- - - - - - - - - - - - - - - - - - - - - - - - - - - 
//- - - - - - - - - - - - - - - - - - - - - - - - - - - 

