/**
 * Fichero con utilidades y funciones de AJAX
 * 1. Por un lado tenemos AJAX implementado "de forma manual"
 * 2. Por otro, tenemos componentes AJAX libres
 */


/***********************************************
 * 1. AJAX MANUAL
 **********************************************/


/***********************************************
 * 1.1 AJAX MANUAL componentes comunes
 **********************************************/

function nuevoAjax() {
	/*
	 * Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por lo que se puede copiar tal como esta aqui
	 */
	var xmlhttp = false;
	try {
		// Creacion del objeto AJAX para navegadores no IE
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			// Creacion del objet AJAX para IE
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			xmlhttp = false;
		}
	}
	if (!xmlhttp && typeof XMLHttpRequest != "undefined") {
		xmlhttp = new XMLHttpRequest();
	}

	return xmlhttp;
}

/*
 * devuelve un valor de un nodo si lo tiene, caso contrario ''
 */
function dameNodeValue(element){		
	//alert (element);	
	if (element != null && element.firstChild != null){		
		return element.firstChild.data;
	}		
	else
		return '';	
}


function mostrarBuscando(elemento, elemDesactivar){	
	document.getElementById(elemento).innerHTML = '';
	document.getElementById(elemento).innerHTML = '<img src="/img/empresite/bigrotation16_16.gif" />';
	
	if (elemDesactivar != null && elemDesactivar != ''){		
		//document.getElementById(elemDesactivar).onclick = function (){alert('foo');};		
		if (document.getElementById(elemDesactivar) != null)
			document.getElementById(elemDesactivar).onclick = function (){};
	}
		 
}

function limpiarComponente(nombreGeneral, clase){
	//borra el td de mensaje
	//pone el class original	
	document.getElementById("td3" + nombreGeneral).innerHTML = '';
	document.getElementById(nombreGeneral).className = clase;	
}

function mostrarMensajeCampo(nombreGeneral, classContenedorMensaje, mensaje, cambiar){	
	document.getElementById("td3" + nombreGeneral).innerHTML = mensaje;
	if (cambiar){
		document.getElementById(nombreGeneral).className = classContenedorMensaje;		
	}	
}



 /***********************************************
 * 1.2 AJAX MANUAL componentes especificos
 **********************************************/
 
function busquedaEmpresasCIF(nombreGeneral, classContenedor, classContenedorMensaje, cif, varios) {
	//alert('busque empresas CIF');
	
	//nombreGeneral = cajaBusquedaCIF
	
	/*
	alert('busquedaEmpresasCIF');
	alert(cif);
	*/
	if (cif == null || cif == '')
		return false;
	
	var aux = varios.split('!!'); //caracteres separador
	var host = aux[0];
	var rutaLogos = aux[1];
		
	mostrarBuscando('td3' + nombreGeneral, '');
	
	//checkeo previo del texto introducido por JS		
	if (checkJSEmpresaBusquedaCIF(cif, nombreGeneral, classContenedorMensaje) == false){		
		return false;
	}	
	
	var ajax = nuevoAjax();
	
	ajax.open("POST", "/servlet/app/portal/ENTP/prod/XML_AJAX_EMPRESAS_CIF/EMP_CIF/" + cif, true);
	ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	ajax.send("EMP_CIF=" + cif);
	
	ajax.onreadystatechange = function() {
		
		var objetoCambiar = document.getElementById('resultadosBusquedaCIF');
		
		objetoCambiar.innerHTML = '';
		limpiarComponente(nombreGeneral, classContenedor);
		
		if (ajax.readyState == 4) {
			//alert('readyState');			
		    var xmlDoc = ajax.responseXML;
			if(ajax.status == 200) {				
				//document.getElementById("rss").innerHTML = ajax.responseText;
				
				
				//muestra el XML que hemos recibido
				//alert(ajax.responseText);
				
				
				var xml  = ajax.responseXML.documentElement;
											
				var rdo = dameNodeValue(xml.getElementsByTagName('RESULTADO')[0]);
				var codRet = dameNodeValue(xml.getElementsByTagName('CODRETORNO')[0]);
				var desRet = dameNodeValue(xml.getElementsByTagName('DESRETORNO')[0]);
				
				/*
				alert(rdo);
				alert(codRet);
				alert(desRet);
				*/
				
				
				if (rdo != '1'){
					//if hemos obtenido error.
					//alert(desRet);
					mostrarMensajeCampo(nombreGeneral, classContenedorMensaje, desRet, true);
					return false;					
				}
				else{					
					if (codRet == '9991'){																	
						divMensajeGenericoCIF('2','resultadosBusquedaCIF','',
								'Lo sentimos, no hemos encotrado esta empresa en la base de datos de empresas espaņolas <br /><br />Solicita ayuda si tienes una empresa y quieres incluirla en la base de datos de empresas espaņolas. <u>Ayuda</u>', 
								host + '/img/empresite/cif_no_encontrado.png','','');
					}
					else{
						var listaEmpresas = xml.getElementsByTagName('EMPRESAS')[0];
						
						for (i = 0; i < listaEmpresas.getElementsByTagName('EMPRESA').length; i++){							
							var empresa = listaEmpresas.getElementsByTagName('EMPRESA')[i];
							
							var nombreNorm = dameNodeValue(empresa.getElementsByTagName('EMP_DENOMINACION_NORM')[0]);
							var nombre = dameNodeValue(empresa.getElementsByTagName('EMP_DENOMINACION')[0]);							
							var direccion = dameNodeValue(empresa.getElementsByTagName('EMP_DIRECCION')[0]);
							var numero = dameNodeValue(empresa.getElementsByTagName('EMP_NUMERO')[0]);							
							var provNombre = dameNodeValue(empresa.getElementsByTagName('PRO_NOMBRE')[0]);
							var cp = dameNodeValue(empresa.getElementsByTagName('EMP_CODIGOPOSTAL')[0]);
							var munNombre = dameNodeValue(empresa.getElementsByTagName('MUN_NOMBRE')[0]);
							var nombreImagen = dameNodeValue(empresa.getElementsByTagName('EMP_IMAGEN')[0]);
							var codModificable = dameNodeValue(empresa.getElementsByTagName('COD_MODIFICABLE')[0]);
							
							var login = dameNodeValue(empresa.getElementsByTagName('LOGIN')[0]);
														
							//if (codModificable == '0' || codModificable == '4'){																
							if (true){
								var rutaLogotipo = "";
								if (nombreImagen == null || nombreImagen == ''){
									rutaLogotipo = host + '/img/empresite/logo100x100.png';									
								}
								else{
									rutaLogotipo = host + rutaLogos + nombreImagen;									
								}
																
								var datosEmpresa = nombre + '<br /><br />' + direccion + ' ' + numero + '<br />' + cp + ' ' + munNombre  + ' ' + provNombre;								
								var linkCajaAux = '';
								
								if (codRet == '9992' && codModificable == '0'){
									linkCajaAux = host + '/servlet/app/prod/PANTALLA_VINCULACION/empCIF/' + cif;
								}																	
								else if ((codModificable == '0') && login == '0')
									linkCajaAux = host + '/servlet/app/prod/PANTALLA_VINCULACION/empCIF/' + cif;
								else if ((codModificable == '4') && login == '0')
									linkCajaAux = host + '/Modificar_Empresa/' + nombreNorm.replace(/ /g,"-");
								else if ((codModificable == '0' || codModificable == '4') && login == '1')
									linkCajaAux = host + '/Modificar_Empresa/' + nombreNorm.replace(/ /g,"-");
									
								var imagenDchaAux = '';
								if (codModificable == '0')
									imagenDchaAux = '/img/empresite/cif_encontrada_ok.png';
								else if (codModificable == '4')
									imagenDchaAux = '/img/empresite/cif_encontrada_login.png';
								else //1 2 3 5 (no modificable)
									imagenDchaAux = '/img/empresite/cif_encontrada_nook.png';
								
								divMensajeGenericoCIF('1', 'resultadosBusquedaCIF', nombre, datosEmpresa, 										
										imagenDchaAux, rutaLogotipo, linkCajaAux);
							}
							else{
								//codigos 1 2 3 5 (no modificable)
							}
							
						}					
					}
					
				}
			}else if (ajax.status == 404)
				alert("la pagina no existe");
			
		}
	}
		
	function divMensajeGenericoCIF(tipo, contenedor, titulo, texto, imagen, logo, link){
				
		/*
		alert(tipo);
		alert(contenedor);
		alert(titulo);
		alert(texto);
		alert(imagen);
		alert(logo);
		alert(link);
		*/
		
		// Creamos el contenedor de la informacion
		// Si es una caja de empresa
		if(tipo == 1){
			if (link != ''){
				/*
				document.getElementById(contenedor).innerHTML +='<br />Para continuar pincha en una de las empresas disponibles:<br /><br /><br /><a title="seleccionar empresa y continuar" href="'+ link +'" id="cajaCIFlink" class="opacity">';				
				document.getElementById('cajaCIFlink').innerHTML = '<div id="cajaCIF1" class="cajaCIFContenido"></div>';
				*/
			
				document.getElementById(contenedor).innerHTML +='<br />Para continuar pincha en una de las empresas disponibles:<br /><br /><br /><div id="cajaCIF1" class="cajaCIFContenido"></div>';
			}
			else
				document.getElementById(contenedor).innerHTML = '<div id="cajaCIF1" class="cajaCIFContenido"></div>';

			//var innerHTMLCaja = '<table height="80px" border="0" width="100%" class="tablaCajaCIF" id="tablaCajaCIF"><tr id="texto2"><td width="25%" valign="middle"><img border="0" width="50px" height="50px" src="--imagenLogo--"></td><td width="50%"><i></i>--texto1--</i></td><td width="25%"><img border="0" src="--imagenDcha--">';
			
			var innerHTMLCaja = "";
			if (link != '')
				innerHTMLCaja = '<table height="80px" border="0" width="100%" class="tablaCajaCIF" id="tablaCajaCIF"><tr id="texto2"><td width="25%" valign="middle"><img border="0" width="50px" height="50px" src="--imagenLogo--"></td><td width="50%"><a title="seleccionar empresa y continuar" href="'+ link +'" id="cajaCIFlink">--texto1--</a></td><td width="25%"><img border="0" src="--imagenDcha--">';
			else
				innerHTMLCaja = '<table height="80px" border="0" width="100%" class="tablaCajaCIF" id="tablaCajaCIF"><tr id="texto2"><td width="25%" valign="middle"><img border="0" width="50px" height="50px" src="--imagenLogo--"></td><td width="50%">--texto1--</td><td width="25%"><img border="0" src="--imagenDcha--">';
			
			innerHTMLCaja = innerHTMLCaja.replace(/--imagenLogo--/, logo);
			innerHTMLCaja = innerHTMLCaja.replace(/--imagenDcha--/, imagen);			
			innerHTMLCaja = innerHTMLCaja.replace(/--texto1--/, texto);
			
			document.getElementById('cajaCIF1').innerHTML = innerHTMLCaja;
		
		//Si es un panel de informacion
		}else{
			document.getElementById(contenedor).innerHTML = '<div id="cajaCIF1" class="cajaCIFContenido"></div>';			
			document.getElementById('cajaCIF1').innerHTML = '<table height="80px" border="0" width="100%" class="tablaCajaCIF" id="tablaCajaCIF"><tr id="texto2"><td><i>--texto1--</i></td><td><img src="--imagenDcha--"></td></tr></table>';
			
			//replaces			
			var innerHTMLCaja = document.getElementById('cajaCIF1').innerHTML;			
			innerHTMLCaja = innerHTMLCaja.replace(/--imagenDcha--/, imagen);
			innerHTMLCaja = innerHTMLCaja.replace(/--texto1--/, texto);
			document.getElementById('cajaCIF1').innerHTML = innerHTMLCaja;				
		}
		
	}
	
}//function busquedaEmpresasCIF




function validacionCaptcha(nombreGeneral, classContenedor, classContenedorMensaje, textoCaptcha, varios) {
	//alert('validacionCap');
	mostrarBuscando('td3' + nombreGeneral, '');
	
	//checkeo previo del texto introducido por JS		
	if (checkJSCampoCaptcha(textoCaptcha, nombreGeneral, classContenedorMensaje) == false){		
		return false;
	}		
	
	var ajax = nuevoAjax();	
	
	//ajax.open("POST", "/servlet/app/portal/ENTP/prod/XML_VALIDACION_CAPTCHA/j_security/" + textoCaptcha, true);
	//en este caso no queremos que sea asincrono
	ajax.open("POST", "/servlet/app/portal/ENTP/prod/XML_VALIDACION_CAPTCHA/j_security/" + textoCaptcha, true);
	ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	ajax.send("j_security=" + textoCaptcha);	
	
	ajax.onreadystatechange = function() {
		//alert('readyState');			
	    var xmlDoc = ajax.responseXML;
	    
	    limpiarComponente(nombreGeneral, classContenedor);
		
		if (ajax.readyState == 4) {			
			if(ajax.status == 200) {							
				
				//document.getElementById("rss").innerHTML = ajax.responseText;
							
				//muestra el XML que hemos recibido
				//alert(ajax.responseText);
				
				var xml  = ajax.responseXML.documentElement;			
				var correcto = dameNodeValue(xml.getElementsByTagName('CORRECTO')[0]);
				
				if (correcto != null && correcto == '1'){					
					mostrarMensajeCampo(nombreGeneral, classContenedorMensaje, "<b>Correcto</b>", false);
					//actualizaCaptcha("img" + nombreGeneral);
					postValidacionCaptcha();
				}
				else{										
					mostrarMensajeCampo(nombreGeneral, classContenedorMensaje, "<b>No es correcto</b>", true);
					actualizaCaptcha("img" + nombreGeneral);					
				}
				
			}
		}
	    
		return false;
	}
	
	
	function checkJSCampoCaptcha(textoCaptcha, nombreGeneral, classContenedorMensaje){	
		
		if (textoCaptcha == null || textoCaptcha == ''){			
			mostrarMensajeCampo(nombreGeneral, classContenedorMensaje, "<b>Este campo debe estar relleno</b>", true);
			return false;
		}
		
		return true;
	}
	
}//validacionCaptcha


function actualizaCaptcha(imgCaptcha){
    obj=document.getElementById(imgCaptcha);													    
    if (!obj){													    														    	
    	eval("obj=window.document.all." + imgCaptcha);
    }													     
    if (obj){															
		var aleatorio = Math.random() 
      	obj.src="/servlet/jcaptcha#" + aleatorio;													      	
    }
}//actualizaCaptcha


function checkeoCIFSencillo(nombreGeneral, classContenedor, classContenedorMensaje, cif, varios) {

	/*
	<xsl:with-param name="nombreGeneral">cajaBusquedaCIF</xsl:with-param>
	<xsl:with-param name="classContenedor">cajaAjax1</xsl:with-param>
	<xsl:with-param name="classContenedorMensaje">cajaAjax1Mensaje</xsl:with-param>
	<xsl:with-param name="textoCampo">CIF</xsl:with-param>
	<xsl:with-param name="idInput">EMP_CIF</xsl:with-param>
	<xsl:with-param name="inputSize">10</xsl:with-param>
	<xsl:with-param name="inputMaxLength">10</xsl:with-param>
	<xsl:with-param name="imgInput">bot/bot_buscar_rojo_peq.gif</xsl:with-param>
	<xsl:with-param name="funcionNombre">checkeoCIFSencillo</xsl:with-param>
	<xsl:with-param name="paramVarios"><xsl:value-of select="//INTERNO/HOST"/></xsl:with-param>
	*/
	
	//alert('check cif sencillo');

	if (cif == null || cif == '')
		return false;
	
	var aux = varios.split('!!'); //caracteres separador
	var host = aux[0];
	
	mostrarBuscando('td3' + nombreGeneral, '');
	
	//checkeo previo del texto introducido por JS		
	if (checkJSEmpresaBusquedaCIF(cif, nombreGeneral, classContenedorMensaje) == false){				
		return false;
	}	
	
	//llegados aqui, el cif es correcto, lanzamos producto busqueda
	document.location.href = host + "/servlet/app/prod/BUSQUEDA_EMPRESAS_CIF/cifBuscar/" + cif;
}

function checkJSEmpresaBusquedaCIF(cif, nombreGeneral, classContenedorMensaje){
	//alert('checkJSEmpresaBusquedaCIF');
	
	//mostrar aqui
	var esOK = esCIFoNIF(cif);
	
	esOK = esCIF(cif);
	
	if (!esOK){
		//alert('no ok');
		var objetoCambiar = document.getElementById('resultadosBusquedaCIF');
		objetoCambiar.innerHTML = '';
		mostrarMensajeCampo(nombreGeneral, classContenedorMensaje, "El cif introducido no es correcto", true);
		return false;
	}		
	
	return true;
}





