//
// CODIGO DE AYUDA PARA LA INSERCION AUTOMATICA DE UNA APLICACION DE GATO
// (C) ELIMCO SISTEMAS


//variable global usada para evitar el problema de que esta instruccion "InstallTrigger.install(xpi, final_Instalando_Firefox_callback);" 
//no permite mandar el parametro de la dirección a la que se redirige.
var skinurl;
var reqMayorVersion;
var reqMinorVersion;

 
// Datos recibidos desde Cóndor.
// Código = Comando
// Datos = Los parámetros (cada uno separado por "|")
function jsGatoEmitData (Codigo, Datos){
	// Aquí hay que colocar lo que interese para evaluar lo que ha mandado Cóndor
	//alert ("DEBUG: Codigo: " + Codigo + "     Datos: " + Datos);	
}

// Enviar datos a Cóndor.
// Código = Comando
// Datos = Los parámetros (cada uno separado por "|")
function jsGatoSetData (Codigo, Datos){
	if (isIE_gato ()){            
		GatoIE.GatoSetData (Codigo, Datos);		
	}
	else{
		//document.GatoIE.GatoSetData (Codigo, Datos);
  	var embed = document.Gato;
  	//alert ("document.Gato = " + embed + "  embed.GatoSetData = " + embed.GatoSetData);
		embed.GatoSetData (Codigo, Datos);  	
	}
}

// Pedir datos a Cóndor.
// Código = Comando
function jsGatoGetData (Codigo, Datos){
	if (isIE_gato ()){
		var retorno = GatoIE.GatoGetData (Codigo, Datos);
		return retorno;		
	}
	else{
  	var embed = document.Gato;
  	//alert ("document.Gato = " + embed + "  embed.GatoGetData = " + embed.GatoGetData);
  	var retorno = embed.GatoGetData (Codigo, Datos);  	
		return retorno  	
	}
}


// Varias..
function println (ln)
{
	document.writeln (ln);
}

function insertHTMLPage (page)
{
	if (isIE_gato())
	{
		println ('<object WIDTH=100% HEIGHT=100% align="center" valign="middle" classid="clsid:25336920-03F9-11CF-8FD0-00AA00686F13" data="' + page + '"></object>');
	}
	else
	{
		println ('<object width="100%" height="100%" align="center" valign="middle" type="text/html" data="' + page + '"></object>');
	}
}

// Funciones para reconocer el SO
function isWindows()
{
	return (navigator.userAgent.indexOf("Windows") != -1); 
}

function isVistaIE()
{
	// Win2k3 server por ahora no va
	if (navigator.userAgent.indexOf("NT 6") != -1 && gatoIsActiveX())
		return true;
	if (navigator.userAgent.indexOf("NT 7") != -1 && gatoIsActiveX())
		return true;
	
	return false;
}

function isWindowsCurrentVersionSupported()
{
	// Win2k3 server por ahora no va
	if (navigator.userAgent.indexOf("Windows NT 5.2") != -1)
		return false;
	else
		return true;
}

// Funciones para reconocer el navegador
function isIE_gato ()
{
	return (navigator.userAgent.indexOf("MSIE") != -1);
}

function isFirefox()
{
	return (navigator.userAgent.indexOf("Firefox") != -1);
}

function isOpera()
{
	return (navigator.userAgent.indexOf("Opera") != -1);
}

// Funciones para reconocer si hace falta un PLUGIN o UN ACTIVEX
function gatoIsPlugin()
{
	return (isFirefox());// || isOpera());
}

function gatoIsActiveX()
{
	return isIE_gato();
}

// Funciones para reconocer si hace falta instalar o ya esta instalado
function gatoPluginIsInstalled()
{
	return navigator.plugins["Gato Client/Server Framework"];
}

function gatoActiveXIsInstalled()
{
	var ver =  parseInt(reqMayorVersion) * 10 + parseInt(reqMinorVersion);
	// Version 20.0 --> No queda ná...
	var maxVer = 200;
	while (maxVer >= ver)
	{
		var mayor = parseInt ((maxVer / 10));
		var minor = (maxVer % 10);
		try
		{
			// Esto es con JS
			var id = "ElimcoSistemas.GatoPluginForIE." + mayor + "." + minor;
			//alert (id);
			var o = new ActiveXObject("ElimcoSistemas.GatoPluginForIE." + mayor + "." + minor);
			//alert ("Detectada V." + mayor + "." + minor); 
			return true;
			
			// Esto es con VBS
			/*
			if (IsActiveXDetected (id))
			{
				alert ("Detectada V." + mayor + "." + minor); 
				return true;
			}
			*/
		}
		catch(e)
		{
		}
		maxVer--;		
	}	
	//alert ("No Detectada"); 
	return false;		
}

// Funciones finales, muestran una pagina según el estado...
function final_SO_nosoportado(skin)
{
	insertHTMLPage (skin +"GatoErrorSONoSoportado.html");
}

function final_SO_vistaIE(skin)
{
	insertHTMLPage (skin +"GatoErrorWindowsVistaIE.html");
}

function final_SO_Windows_nosoportado(skin)
{
	insertHTMLPage (skin + "GatoErrorWindowsNoSoportado.html");
}

function final_Navegador_nosoportado(skin)
{
	insertHTMLPage (skin + "GatoErrorNavegadorNoSoportado.html");
}

// El Timer que provoca que se recarge la pagina en Explorer...
function final_Instalando_IE_Timer ()
{
	if (gatoActiveXIsInstalled())
		window.location.reload( false );
	else
		setTimeout('final_Instalando_IE_Timer()', 1000);
}

function final_Instalando_IE (ip, puerto, skin)
{
	insertHTMLPage (skin + "GatoInstalandoIE.html");
	
	println ('<OBJECT ID="GatoIE" WIDTH=0% HEIGHT=0% CLASSID="CLSID:9DBA0300-592F-101B-85CE-00608CEC297B" VIEWASTEXT=" " CODEBASE="http://' + ip + ':' + puerto + '/GATOSERVER/GATOINSTALLER.CAB#version=' + reqMayorVersion + ',' + reqMinorVersion + ',0,0">');
	println ('</OBJECT>');
	
	setTimeout('final_Instalando_IE_Timer()', 1000);
}

function final_Ejecutando_IE (ip, puerto, catalogo, aplicacion, database, x0, y0, x1, y1, ficheroxml, lng)
{
	println ('<OBJECT ID="GatoIE" WIDTH=100% HEIGHT=100% CLASSID="CLSID:9DBA0300-592F-101B-85CE-00608CEC297B" VIEWASTEXT=" " CODEBASE="http://' + ip + ':' + puerto + '/GATOSERVER/GATOINSTALLER.CAB#version=' + reqMayorVersion + ',' + reqMinorVersion + ',0,0">');
	println ('<PARAM NAME="_Version" VALUE="65536">');
	println ('<PARAM NAME="_ExtentX" VALUE="2646">');
	println ('<PARAM NAME="_ExtentY" VALUE="2646">');
	println ('<PARAM NAME="_StockProps" VALUE="15">');
	println ('<PARAM NAME="Note" VALUE="Version 13">');				   		    
	println ('<PARAM NAME="application" VALUE="' + aplicacion + '">');
	println ('<PARAM NAME="ip" VALUE="' + ip +'">'); 
	println ('<PARAM NAME="port" VALUE="' + puerto + '">');
	println ('<PARAM NAME="catalog" VALUE="' + catalogo + '">');
	println ('<PARAM NAME="version" VALUE="recommended">');
	println ('<PARAM NAME="action" VALUE="download_execute">');
	println ('<PARAM NAME="log" VALUE="true">');
	
	parametros = new String ();
	barra = new String ();
	if (x0 != ""){
		parametros = 'x0=' + x0 + '|y0=' + y0 + '|x1=' + x1 + '|y1=' + y1;
		barra = '|';
	}
	if (database != ""){
		parametros = parametros + barra + "database=" + database;
		barra = '|';
	}
	
	if (ficheroxml != ""){
		parametros = parametros + barra + "cfg=" + ficheroxml;	
		barra = '|';
	}
	
	if (lng != ""){
		parametros = parametros + barra + "lng=" + lng;	
		barra = '|';
	}
	
	if (parametros != "")
		println ('<PARAM NAME="generic" VALUE="' + parametros + '">');
	
	println ('</OBJECT>');
}

function final_Instalando_Firefox_callback (_url, status)
{

	if (status == 0)
		window.location.reload( false );
	else
		window.location.href =  skinurl + "GatoErrorInstalandoFF.html";
}

function final_Instalando_Firefox_Timer (ip, puerto,skin)
{
	//variable global usada para evitar el problema  de que esta instrucción "InstallTrigger.install(xpi, final_Instalando_Firefox_callback);" 
	//no permite mandar el parametro de la dirección a la que se redirige.
	skinurl = skin;
	
  var xpi={'Cliente Gato':'http://' + ip + ':' + puerto + '/GATOSERVER/GATOINSTALLER.XPI'}; 
  InstallTrigger.install(xpi, final_Instalando_Firefox_callback);
}

function final_Instalando_Firefox(ip, puerto,skin)
{
	insertHTMLPage (skin + "GatoInstalandoFF.html");

	setTimeout('final_Instalando_Firefox_Timer ("' + ip + '", "' + puerto + '","' + skin + '")', 1000);
}

function final_Ejecutando_Firefox(ip, puerto, catalogo, aplicacion, database, x0, y0, x1, y1, ficheroxml, lng)
{
	println ('<embed name="Gato" type="application/gato-plugin"');
	println (' width=100%');
	println (' height=100%');
	println (' pluginspage="http://' + ip + ':' + puerto + '/GATOSERVER/GATOINSTALLER.XPI"');
	println (' application="' + aplicacion + '"');
	println (' ip="' + ip + '"');
	println (' port="' + puerto + '"');
	println (' catalog="' + catalogo + '"');
	println (' version="recommended"');
	println (' action="download_execute"');
	println (' log="true"');	
	if (database != "")
		println (' database="' + database + '"');
	if (x0 != "")
	{
		println (' x0="' + x0 + '"');	
		println (' y0="' + y0 + '"');	
		println (' x1="' + x1 + '"');	
		println (' y1="' + y1 + '"');	
	}
	if (lng != ""){
		println (' lng="' + lng + '"');	
	}
	if (ficheroxml != ""){
		println (' cfg="' + ficheroxml + '"');	
	}
	println ('>');
	println ('</embed>');
}

function gato (updaterMayorVersion, updaterMinorVersion, ip, puerto, catalogo, aplicacion, skin, database, x0, y0, x1, y1, ficheroxml, lng)
{	
	reqMayorVersion = updaterMayorVersion;
	reqMinorVersion = updaterMinorVersion;
	
	//ocultar("info");
	//si no se pasa ningún parametro de skin redirige a GatoSkin
	if (!skin)
	{
		skin = "GatoSkinCondor/";	
	}
	
	// Estamos en Windows??
	if (isWindows())
	{
		// Es una version de Windows que soportamos??
		if (isWindowsCurrentVersionSupported())
		{
			// Es Vista, 7 y IE?
			if (isVistaIE())
			{
				final_SO_vistaIE(skin);		
			}
			// Es FF, Opera o por el contrario es IE?
			else if (gatoIsPlugin())
			{
				// Es FF o Opera
				if (!gatoPluginIsInstalled())
					final_Instalando_Firefox (ip, puerto,skin);
				else
					final_Ejecutando_Firefox (ip, puerto, catalogo, aplicacion, database, x0, y0, x1, y1, ficheroxml, lng);
			}
			else if (gatoIsActiveX())
			{
				// Es IE
				if (!gatoActiveXIsInstalled())
					final_Instalando_IE (ip, puerto, skin);
				else
					final_Ejecutando_IE (ip, puerto, catalogo, aplicacion, database, x0, y0, x1, y1, ficheroxml, lng);
			}
			// Ni uno ni otro...No soportado...
			else
				final_Navegador_nosoportado(skin);
		}
		else
		{
			final_SO_Windows_nosoportado(skin);
		}
	}
	else
	{
		final_SO_nosoportado(skin);
	}
}
