var soportadaResolucion; //Booleano que indica el resultado de verificar la resolución
var soportadoOperativo; //Booleano que indica el resultado de verificar el sistema operativo
var soportadoNavegador; //Booleano que indica el resultado de verificar el navegador
var soportadasCookies; //Booleano que indica el resultado de verificar las cookies
var instaladoPluginFlash; //Booleano que indica el resultado de verificar el plugin de flash
var versionPluginFlash; //Booleano que indica el resultado de verificar la version de flash
var instaladoPlugin3D; //Booleano que indica el resultado de verificar el plugin de 3D

var versionMinimaFlash = 8; //Variable que indica la versión mínima de flash

var nombreOperativo; //Variable que almacena el nombre del sistema operativo utilizado
var nombreNavegador; //Variable que almacena el nombre del navegador utilizado
var isIExplorer;  //Variable que indica si el navegador web utilizado es Internet Explorer
var isFirefox; //Variable que indica si el navegador web utilizado es Firefox
var anchoMensajeErrores; //Variable para personalizar el ancho de la lista de errores encontrados

function comprobaciones()
{
	anchoMensajeErrores = "550";
	setTimeout("iniciarComprobaciones()",1000);
}

function iniciarComprobaciones()
{
	testResolucion();
	testOperativo();
	testNavegador();
	testCookies();
	testFlash();
	if(instaladoPluginFlash) testVersionFlash();
	test3D();
	
	if((!soportadaResolucion)||(!soportadoOperativo)||(!soportadoNavegador)||(!soportadasCookies)||(!instaladoPluginFlash)||(!versionPluginFlash)||(!instaladoPlugin3D))
	{
		textoErrorInit = "<ul>";
		textoError = "";
		textoErrorFinal = "</ul>";
		color = "#FF0000";
		
		textoError1 = "<li><b style='color: " + color + "'>Resoluci&oacute;n m&iacute;nima no soportada</b>. Para ver de forma correcta la aplicaci&oacute;n es necesario tener una resoluci&oacute;n de pantalla igual o superior a 1024x768.</li>";
		textoError2 = "<li><b style='color: " + color + "'>Sistema operativo no soportado</b>. Para acceder a los contenidos 3D es necesario utilizar un sistema operativo <i>Microsoft Windows XP</i>, <i>Vista</i> o <i>7</i>.</li>";
		textoError3 = "<li><b style='color: " + color + "'>Navegador web no soportado</b>. Para acceder es necesario utilizar un navegador web actualizado (por ejemplo Microsoft Internet Explorer 7 o Mozilla Firefox 3).</li>";
		textoError4 = "<li><b style='color: " + color + "'>Cookies no permitidas</b>. Para acceder al contenido es necesario habilitar las cookies en su navegador web o utilizar un navegador con soporte para cookies.</li>";	
		textoError5 = "<li><b style='color: " + color + "'>Plugin Flash no instalado</b>. Para acceder al contenido es necesario tener instalado el plugin para visualizar contenido Flash de Adobe. Para proceder a su instalaci&oacute;n acceda a la siguiente <a href='http://get.adobe.com/es/flashplayer/' target='_blank' style='text-decoration: underline;'>direcci&oacute;n web</a>.</li>";
		if((instaladoPluginFlash)&&(!versionPluginFlash))
		textoError5 = "<li><b style='color: " + color + "'>Versi&oacute; de Flash anticuada</b>. Para acceder al contenido es necesario tener instalado una versi&oacute;n de Flash m&aacute;s actual (versi&oacute;n " + versionMinimaFlash + " o superior). Para proceder a su actualizaci&oacute;n acceda a la siguiente <a href='http://get.adobe.com/es/flashplayer/' target='_blank' style='text-decoration: underline;'>direcci&oacute;n web</a>.</li>";
		textoError6 = "<li><b style='color: " + color + "'>Plugin 3D no instalado</b>. Para acceder al contenido es necesario tener instalado el plugin para visualizar contenido 3D de Bitmanagement. Para proceder a su instalación descargue e instale la siguiene <a href='../plugins/BS_Contact.exe' target='_blank' style='text-decoration: underline;'>aplicacion</a>.</li>";
		
		textoIncorrecto = "Su sistema no cumple con los requisitos necesarios";
		if(!soportadaResolucion) textoError += textoError1;
		if(!soportadoOperativo) textoError += textoError2;
		if(!soportadoNavegador) textoError += textoError3;
		if(!soportadasCookies) textoError += textoError4;
		if((!instaladoPluginFlash)||(!versionPluginFlash)) textoError += textoError5;
		if(!instaladoPlugin3D) textoError += textoError6;
		
		texto = "<br /><div style='text-align: center; font-size: 12pt; color:" + color + "'><b>" + textoIncorrecto + "</b></div>" + "<div style='width:" + anchoMensajeErrores + "px; text-align:justify';'>" + textoErrorInit + textoError + textoErrorFinal + "</div>";
		jQuery( "#resultado" ).html(texto);
	}
	else
	{
		textoCorrecto = "Su sistema cumple con los requisitos necesarios";	
		color = "#339900";
		jQuery( "#resultado" ).html("<br /><div style='text-align: center; font-size: 12pt; color:" + color + "'><b>" + textoCorrecto + "</b></div>");
	}
}

function testResolucion()
{
	if ((screen.width>=1024) && (screen.height>=768))
	{
		soportadaResolucion = true;
	}
	else soportadaResolucion = false;
	
	if(soportadaResolucion)
	{
		color = "#339900";
		msg = "Resoluci&oacute;n: " + screen.width + "x" + screen.height;
	}
	else
	{
		color = "#FF0000";
		msg = "Resoluci&oacute;n m&iacute;nima: 1024x768";
	}
	
	jQuery( "#test1" ).html("<div style='font-weight: bold;color:" + color + "'>" + msg + "</div>");
	return soportadaResolucion;
}

function testOperativo()
{
	if (navigator.userAgent.indexOf('IRIX') != -1){
		nombreOperativo = "Irix";
		soportadoOperativo = false;
	}
	else if (navigator.userAgent.indexOf("NT 5.1") !=-1){
		nombreOperativo = "Windows XP";
		soportadoOperativo = true;
	}
	else if (navigator.userAgent.indexOf("NT 5.2") !=-1){
		nombreOperativo = "Windows 2003";
		soportadoOperativo = true;
	}
	else if (navigator.userAgent.indexOf("NT 5") !=-1){
		nombreOperativo = "Windows 2000";
		soportadoOperativo = false;
	}
	else if (navigator.userAgent.indexOf("NT 6.0") !=-1){
		nombreOperativo = "Windows Vista";
		soportadoOperativo = true;
	}
	else if (navigator.userAgent.indexOf("NT 6.1") !=-1){
		nombreOperativo = "Windows 7";
		soportadoOperativo = true;
	}
	else if (navigator.appVersion.indexOf("NT") !=-1){
		nombreOperativo = "Windows NT";
		soportadoOperativo = false;
	}
	else if ((navigator.userAgent.indexOf('Win') != -1) && (navigator.userAgent.indexOf('98') != -1)){
		nombreOperativo = "Windows 98";
		soportadoOperativo = false;
	}
	else if ((navigator.userAgent.indexOf('Win') != -1) && (navigator.userAgent.indexOf('95') != -1)){
		nombreOperativo = "Windows 95";
		soportadoOperativo = false;
	}
	else if (navigator.appVersion.indexOf("16") !=-1){
		nombreOperativo = "Windows 3.1";
		soportadoOperativo = false;
	}
	else if (navigator.appVersion.indexOf("SunOS") !=-1){
		nombreOperativo = "SunOS";
		soportadoOperativo = false;
	}
	else if (navigator.appVersion.indexOf("X11") !=-1){
		nombreOperativo = "Linux";
		soportadoOperativo = false;
	}
	else if (navigator.appVersion.indexOf("Linux") !=-1){
		nombreOperativo = "Linux";
		soportadoOperativo = false;
	}
	else if (navigator.userAgent.indexOf('Mac') != -1){
		nombreOperativo = "MacOS";
		soportadoOperativo = false;
	}
	else if (navigator.appName=="WebTV Internet Terminal"){
		nombreOperativo ="WebTV";
		soportadoOperativo = false;
	}
	else if (navigator.appVersion.indexOf("HP") !=-1){
		nombreOperativo ="HP-UX";
		soportadoOperativo = false;
	}
	else{
		nombreOperativo = "No identificado"
	}
	
	if(soportadoOperativo)
	{
		color = "#339900";
		msg = nombreOperativo;
	}
	else
	{
		color = "#FF0000";
		msg = nombreOperativo;
	}
	
	jQuery( "#test2" ).html("<div style='font-weight: bold;color:" + color + "'>" + msg + "</div>");
	return soportadoOperativo;
}

function testNavegador()
{
	var color;
	
	if(testOpera());
	else if(testIExplorer());
	else if(testFirefox());
	else if(testChrome());
	else if(testSafari());
	else
	{
		nombreNavegador = "Navegador desconocido"
		soportadoNavegador = false;
	}
		
	if(soportadoNavegador) color = "#339900";
	else color = "#FF0000";
	
	jQuery( "#test3" ).html("<div style='font-weight: bold;color:" + color + "'>" + nombreNavegador + "</div>");
	return soportadoNavegador;
}

function testCookies()
{
	var tmpcookie = new Date();
	chkcookie = (tmpcookie.getTime() + '');
    document.cookie = "FACTORIAPHP_c=" + chkcookie + "; path=/";
	
	if (document.cookie.indexOf(chkcookie,0) < 0) soportadasCookies = false;
    else soportadasCookies = true;
	
	if(soportadasCookies)
	{
		color = "#339900";
		msg = "Cookies soportadas";
	}
	else
	{
		color = "#FF0000";
		msg = "Cookies no soportadas";
	}
	
	jQuery( "#test4" ).html("<div style='font-weight: bold;color:" + color + "'>" + msg + "</div>");
	return soportadasCookies;
}

function testFlash()
{
	instaladoPluginFlash = FlashDetect.installed;
	
	if(instaladoPluginFlash)
	{
		color = "#339900";
		msg = "Flash " + FlashDetect.major + " " + FlashDetect.revisionStr;
	}
	else
	{
		color = "#FF0000";
		msg = "Plugin Flash no instalado";
	}
	
	jQuery( "#test5" ).html("<div style='font-weight: bold;color:" + color + "'>" + msg + "</div>");
	return instaladoPluginFlash;
}

function testVersionFlash()
{
	versionPluginFlash = FlashDetect.majorAtLeast( versionMinimaFlash );
	
	if(versionPluginFlash)
	{
		color = "#339900";
		msg = "Flash " + FlashDetect.major + " " + FlashDetect.revisionStr;
	}
	else
	{
		color = "#FF0000";
		msg = "Flash " + FlashDetect.major + " " + FlashDetect.revisionStr;
	}
	
	jQuery( "#test5" ).html("<div style='font-weight: bold;color:" + color + "'>" + msg + "</div>");
	return versionPluginFlash;
}

function testIfFlash()
{
	var instaladoPluginFlash = false;
	instaladoPluginFlash = FlashDetect.installed;
	return instaladoPluginFlash;
}

function testIfVersionFlash( version )
{
	return FlashDetect.versionAtLeast( version );
}

function test3D()
{
	if(isIExplorer)
	{
		try {
			new ActiveXObject("bsContact.bsContact");
			instaladoPlugin3D = true;
		}
		catch (e) {
			instaladoPlugin3D = false;
		}
	}
	else
	{
		var numPlugins = navigator.plugins.length;
	
		for(var i = 0; i < numPlugins; i++ )
		{
			var plugin= navigator.plugins[i];
	
			if((plugin.name.substring(0, 11) == 'BS Contact ') || (plugin.name == 'BS Contact'))
			{
				instaladoPlugin3D = true;
				i = numPlugins;
			}
			else instaladoPlugin3D = false;
		}
	}
	
	if(instaladoPlugin3D)
	{
		color = "#339900";
		msg = "Plugin 3D instalado";
	}
	else
	{
		color = "#FF0000";
		msg = "Plugin 3D no instalado";
	}
	
	jQuery( "#test6" ).html("<div style='font-weight: bold;color:" + color + "'>" + msg + "</div>");
	return instaladoPlugin3D;
}

function testIExplorer()
{
	/*
	* Navegador Internet Explorer userAgent contiene: MSIE 0.0 
	* MSIE indica el navegador Internet Explorer.
	* 0.0 indica la versión del navegador.
	*
	* Ejemplo Internet Explorer 7.0 (Windows XP): Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
	*
	*/
	
	if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
	{
		var ieversion=new Number(RegExp.$1);
		if (ieversion>=9)
		{
			nombreNavegador="Internet Explorer";
			soportadoNavegador = true;
		}
		if (ieversion>=8)
		{
			nombreNavegador="Internet Explorer 8.x";
			soportadoNavegador = true;
		}
		else if (ieversion>=7)
		{
			nombreNavegador="Internet Explorer 7.x";
			soportadoNavegador = true;
		}
 		else if (ieversion>=6)
		{
			nombreNavegador="Internet Explorer 6.x";
			soportadoNavegador = false;
		}
 		else if (ieversion>=5)
		{
			nombreNavegador="Internet Explorer 5.x";
			soportadoNavegador = false;
		}
		else
		{
			nombreNavegador="Internet Explorer";
			soportadoNavegador = false;
		}
		isIExplorer = true;
		return true;
	}
	else return false;
}

function testFirefox()
{
	/*
	* Navegador Mozilla Firefox userAgent contiene: Firefox/0.0.0.0 
	* Firefox indica el navegador Mozilla Firefox.
	* 0.0.0.0 indica la versión del navegador.
	*
	* Ejemplo Mozilla Firefox 2.0 (Windows XP): Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13
	*
	*/
	
	if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent))
	{
 		var ffversion=new Number(RegExp.$1)
 		if (ffversion>=4)
		{
			nombreNavegador="Mozilla Firefox";
			soportadoNavegador = true;
		}
		else if (ffversion>=3)
		{
			nombreNavegador="Mozilla Firefox 3.x";
			soportadoNavegador = true;
		}
		else if (ffversion>=2)
		{
			nombreNavegador="Mozilla Firefox 2.x";
			soportadoNavegador = true;
		}
		else if (ffversion>=1)
		{
			nombreNavegador="Mozilla Firefox 1.x";
			soportadoNavegador = false;
		}
		else
		{
			nombreNavegador="Mozilla Firefox";
			soportadoNavegador = false;
		}
		isFirefox = true;
		return true;
	}
	else return false;
}

function testOpera()
{
	/*
	* Navegador Opera userAgent contiene: Opera/0.00 o Opera 0.00
	* Opera indica el navegador Opera.
	* 0.0 indica la versión del navegador.
	*
	* Ejemplo Opera 9.24 (Windows XP): Opera/9.24 (Windows NT 5.1; U; en)
	*
	* Opera 7.5 (MSIE 6.0) (Windows XP): Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.50 [en]
	* Puede contener MSIE asique realizar esta comprobación antes que la de Internet Explorer.
	*/
	
	if (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent))
	{
 		var oprversion=new Number(RegExp.$1)
		if (oprversion>=10)
		{
			nombreNavegador="Opera";
			soportadoNavegador = false;
		}
		else if (oprversion>=9)
		{
			nombreNavegador="Opera 9.x";
			soportadoNavegador = false;
		}
		else if (oprversion>=8)
		{
			nombreNavegador="Opera 8.x";
			soportadoNavegador = false;
		}
		else if (oprversion>=7)
		{
			nombreNavegador="Opera 7.x";
			soportadoNavegador = false;
		}
		else
		{
			nombreNavegador="Opera";
			soportadoNavegador = false;
		}
		return true;
	}
	else return false;
}

function testChrome()
{
	/*
	* Navegador Google Chrome userAgent contiene: Chrome 0.0.0.0
	* Chrome indica el navegador Google Chrome.
	* 0.0.0.0 indica la versión del navegador
	*
	* Ejemplo Google Chrome 0.2.149.30 (Windows XP): Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.30 
	* Safari/525.13
	* Puede contener Safari asique realizar esta comprobación antes que la de Safari.
	*/
	
	if (/Chrome[\/\s](\d+\.\d+)/.test(navigator.userAgent))
	{
		var chrversion=new Number(RegExp.$1)
		if (chrversion>=3)
		{
			nombreNavegador="Google Chrome";
			soportadoNavegador = true;
		}
		if (chrversion>=2)
		{
			nombreNavegador="Google Chrome 2.x";
			soportadoNavegador = true;
		}
		else if (chrversion>=1)
		{
			nombreNavegador="Google Chrome 1.x";
			soportadoNavegador = false;
		}
		else if (chrversion>=0)
		{
			nombreNavegador="Google Chrome 0.x";
			soportadoNavegador = false;
		}
		else
		{
			nombreNavegador="Google Chrome";
			soportadoNavegador = false;
		}
		return true;
	}
	else return false;
}

function testSafari()
{
	/*
	* Navegador Safari userAgent contiene: Safari
	* Safari indica el navegador Safari.
	*
	* Ejemplo Safari 3.1 (Windows XP): Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13
	*/
	
	if (/Safari/.test(navigator.userAgent))
	{
		nombreNavegador="Apple Safari";
		soportadoNavegador = true;
		return true;
	}
	else return false;
}
