MOON
Server: Apache
System: Linux 54-179-220-51.cprapid.com 3.10.0-1160.144.1.el7.tuxcare.els4.x86_64 #1 SMP Tue Apr 7 08:40:40 UTC 2026 x86_64
User: thehunarfound (1001)
PHP: 7.4.29
Disabled: NONE
Upload Files
File: /home/thehunarfound/public_html/track/Redsys_files/RSisSelPagosNew.js.download
/****************************************************************************************************
* VARIABLES contenidas en RSisSelPagosNew.js :					COMUN 
*****************************************************************************************************/

// Para la traduccion de los errores. 
// Ver: anadirLiteral(etiqueta, valor)
//      getError(etiqueta)
var errores = new Array();

// Por defecto el más restrictivo. 3 = optativo, 4 = obligatorio. 
// Ver fijarCVV2(valor)
//     validaCVV2(tarjeta, campoCVV2)
var indicadorCVV2 = 4;
var threeDsMethodEnviado = false;

/****************************************************************************************************
* FUNCIONES contenidas en RSisSelPagosNew.js :										
* 											 										
* [Ref0001]:	MM_findObj(n, d)  					Referencia en utilSis		
* [Ref0002]:	MM_showHideLayers()  				Referencia en utilSis									
* [Ref0003]:	fijarInicioURLReferencia()			Referencia en utilSis									
* [Ref0004]:	fijarInicioURLReferencia2(url)	Referencia en utilSis									
* [Ref0005]:	fijarFinURLReferencia()				Referencia en utilSis								
* [Ref0006]:	fProcesandoPeticion(ver)			Referencia en utilSis									
* [Ref0007]:	anadirLiteral(etiqueta, valor)	Creamos una referencia v2 en utilSis
* [Ref0008]:	getError(etiqueta)					Creamos una referencia v2 en utilSis
* [Ref0009]:	fijarCVV2(valor)		
* [Ref0010]:	validarTarjetaEspaciosNumero()
* [Ref0010]:	validarTarjetaEspaciosNumeroUPI()
* [Ref0011]:	validar()
* [Ref0011]:	validarUPI()
* [Ref0012]:	validaFormTarjeta()		
* [Ref0012]:	validaFormTarjetaUPI()
* [Ref0013]:	cancelar()								Creamos una referencia v2 en utilSis
* [Ref0014]:	validaPagoConTarjeta()		
* [Ref0014]:	validaPagoConTarjetaUPI()
* [Ref0015]:	validaCVV2(tarjeta, campoCVV2)	
* [Ref0015]:	validaCVV2UPI(tarjeta, campoCVV2)
* [Ref0016]:	trim(cadena)		
* [Ref0017]:	esVisa(laTarjeta)		
* [Ref0018]:	esMaster(laTarjeta)		
* [Ref0019]:	esAMEX(laTarjeta)		
* [Ref0020]:	esDINERS(laTarjeta)		
* [Ref0021]:	esJCB(laTarjeta)		
* [Ref0022]:	load()		
* [Ref0023]:	ventanaInfoVisa1()		
* [Ref0024]:	ventanaInfoCVV2(idioma)		
* [Ref0025]:	getWindowHeight()			
* [Ref0026]:	resizeDiv()
* [Ref0027]:	validaIsNumerico_v2(campo,msgError)  Referencia en validations
* [Ref0028]:	dameValorTarjeta()
* [Ref0029]:	focoTarjeta(boolean)
* [Ref0030]:	PasarFoco(boolean)
* [Ref0031]:	es4B(laTarjeta) Indica que es una tarjeta marca 4B no privada
*
*****************************************************************************************************/


/************************************************************
* 												[Ref0001]								
* Funcion: MM_findObj										
* Parametros:												
*		n: identificador del objeto							
*		d: documento										
* Devuelve el objeto buscado dentro del documento			
************************************************************/
function MM_findObj(n, d)
{ 
	var p,i,x;
	
	if(!d)
		d=document;

	if((p=n.indexOf("?")) > 0 && parent.frames.length)
	{
 		d=parent.frames[n.substring(p+1)].document;
 	 	n=n.substring(0,p);
  	}
 	
	if(!(x=d[n]) && d.all)
		x=d.all[n];

	for (i=0;!x && i<d.forms.length;i++)
		x=d.forms[i][n];

	for(i=0;!x && d.layers && i<d.layers.length;i++)
		x=MM_findObj(n,d.layers[i].document);

	if(!x && d.getElementById)
		x=d.getElementById(n);
				
	return x;
}

/************************************************************
* 												[Ref0002]	
* Funcion: MM_showHideLayers								
* Devuelve:													
************************************************************/
function MM_showHideLayers() 
{
	var i,p,v,obj,args=MM_showHideLayers.arguments;
	
	for (i=0; i<(args.length-2); i+=3)
	{
		if ((obj=MM_findObj(args[i]))!=null)
		{
			v=args[i+2];
			if (obj.style) {
				obj=obj.style;
			 	v=(v=='show')?'visible':(v=='hide')?'hidden':v;
			}
			obj.visibility=v; 
		}	
	}
	return true;			
}

/************************************************************
* 												[Ref0003]	
* Funcion: fijarInicioURLReferencia							
* Devuelve:													
************************************************************/
function fijarInicioURLReferencia()
{
	document.write("<a href='/sis/pantallaReferencia;jsessionid=3JTCFN5D02N4RKFELBIYIHA?param="+ new Date().getTime()+"'>");
}

/************************************************************
* 												[Ref0004]	
* Funcion: fijarInicioURLReferencia2						
* Parametros:												
*		url													
* Devuelve:													
************************************************************/
function fijarInicioURLReferencia2(url)
{
	document.write("<a href='"+url+"?param="+ new Date().getTime()+"'>");
}

/************************************************************
* 												[Ref0005]	
* Funcion: fijarFinURLReferencia							
* Devuelve:													
************************************************************/
function fijarFinURLReferencia()
{
	document.write("</a>");
}

/************************************************************
* 												[Ref0006]	
* Funcion: fProcesandoPeticion								
* Parametros:												
*		ver													
* Devuelve:													
************************************************************/
function fProcesandoPeticion(ver)
{
   if (ver == 'N')
   {
  		MM_showHideLayers('realizandoPeticion','','hide');
  		setTimeout("fProcesandoPeticion('S')",350);
  	}	
   else
   {
     	MM_showHideLayers('realizandoPeticion','','show');
     	setTimeout("fProcesandoPeticion('N')",350);
   }
}

/************************************************************
* 												[Ref0007]	
* Funcion: anadirLiteral								
* Parametros:												
*		etiqueta
*		valor													
* Funcion que guarda en una matriz los valores de los errores, el texto y los 
*	literales asociados a los mismos. Se hace una sola vez en la carga												
************************************************************/
function anadirLiteral(etiqueta, valor) {
	var error  = new Array();
	error[0]= etiqueta;
	error[1]= valor;
	errores[errores.length] = error;
}

/************************************************************
* 												[Ref0008]	
* Funcion: getError								
* Parametros:												
*		etiqueta													
* Devuelve:	el literal asociado la operacion seleccionada												
************************************************************/
function getError(etiqueta) {
	var noencontrado=true;
	var i =0;
	while(noencontrado &&  i < errores.length ) {
		if (errores[i][0] == etiqueta)
			return errores[i][1];
		i++;
	}
	return "";
}

/************************************************************
* 												[Ref0009]	
* Funcion: fijarCVV2								
* Parametros:												
*		valor													
* Fija el valor del CVV2												
************************************************************/
function fijarCVV2(valor) {
	indicadorCVV2 = valor;
}

/************************************************************
* 												[Ref0010]	
* Funcion: validarTarjetaEspaciosNumero																				
* Devuelve:													
************************************************************/
function validarTarjetaEspaciosNumero(){
	var laTarjeta = dameValorTarjeta();
	return (validaIsNumerico_v2(laTarjeta, getError("msg15")));
}

/************************************************************
* 												[Ref0010]	
* Funcion: validarTarjetaEspaciosNumeroUPI
* Devuelve:													
************************************************************/
function validarTarjetaEspaciosNumeroUPI(){
	var laTarjeta = dameValorTarjetaUPI();
	return (validaIsNumerico_v2(laTarjeta, getError("msg15")));
}


/************************************************************
* 												[Ref0011]	
* Funcion: validar																				
* Devuelve:													
************************************************************/
//@s6108jl: Se controla el doble envío del formulario
var enviandoDatos = false;
function validar()
{
	if (!enviandoDatos) {
		var datosTarjeta = 0;
	
		if (!validarTarjetaEspaciosNumero())
			return;

		if(document.formTarjeta)
		{
			if (dameValorTarjeta().length != 0 ||
			   document.formTarjeta.Sis_Caducidad_Tarjeta_Mes.value.length != 0 ||
			   document.formTarjeta.Sis_Caducidad_Tarjeta_Anno.value.length != 0)
			   datosTarjeta = 1;
		}
	
		if(datosTarjeta == 0)
		{
			alert(getError("msg1"));
			decideFoco();
			return;
		}
	
		if(datosTarjeta == 1){
			enviandoDatos = true;
			var valid = validaFormTarjeta();
			if(!valid)
				enviandoDatos = false;
		}
	}
}

/************************************************************
* 												[Ref0011]	
* Funcion: validar																				
* Devuelve:													
************************************************************/
var enviandoDatos = false;
function validar3DS(jSesionId)
{
	if (!enviandoDatos) {
		var datosTarjeta = 0;
	
		if (!validarTarjetaEspaciosNumero())
			return;

		if(document.formTarjeta)
		{
			if (dameValorTarjeta().length != 0 ||
			   document.formTarjeta.Sis_Caducidad_Tarjeta_Mes.value.length != 0 ||
			   document.formTarjeta.Sis_Caducidad_Tarjeta_Anno.value.length != 0)
			   datosTarjeta = 1;
		}
	
		if(datosTarjeta == 0)
		{
			alert(getError("msg1"));
			decideFoco();
			return;
		}
	
		if(datosTarjeta == 1){
			enviandoDatos = true;
			var valid = validaFormTarjeta3DS(jSesionId);
			if(!valid)
				enviandoDatos = false;
		}
	}
}

/************************************************************
* 												[Ref0011]	
* Funcion: validarUPI																				
* Devuelve:													
************************************************************/
//@s6108jl: Se controla el doble envío del formulario
function validarUPI()
{
	if (!enviandoDatos) {
		var datosTarjeta = 0;
	
		if (!validarTarjetaEspaciosNumeroUPI())
			return;

		if(document.formTarjeta)
		{
			if (dameValorTarjetaUPI().length != 0)
			   datosTarjeta = 1;
		}
	
		if(datosTarjeta == 0)
		{
			alert(getError("msg1"));
			decideFoco();
			return;
		}
	
		if(datosTarjeta == 1){
			enviandoDatos = true;
			var valid = validaFormTarjetaUPI();
			if(!valid)
				enviandoDatos = false;
		}
	}
}

/************************************************************
* 												[Ref0012]	
* Funcion: validaFormTarjeta								
* Devuelve:													
************************************************************/
function validaFormTarjeta()
{
	if (validaPagoConTarjeta())
	{
		ocultaBoton();
		fProcesandoPeticion('S');
		document.formTarjeta.submit();
	} else {
		return false;
	}
}

/************************************************************
* 												[Ref0012]	
* Funcion: validaFormTarjeta								
* Devuelve:													
************************************************************/
function validaFormTarjeta3DS(jSesionId)
{
	if (validaPagoConTarjeta())
	{	
		
		// Validamos que el nombre del titular de la tarjeta no esté vacío
		var nombreTitular = document.formTarjeta.cardholderName;
		
		// Validamos que el número de tarjeta no esté vacío
		if (nombreTitular != undefined) {
			nombreTitular = nombreTitular.value;
			if(nombreTitular == "") {
				alert(getError("msg18"));
				focoTarjetaTitular(false);
				return false;
			}
		}
	
		document.getElementById('divImgAceptar').innerHTML="<img style='width:20px;height:20px;'src=\'/sis/graficos/botones/cargando.gif\'>";
		document.getElementById('divImgAceptar').disabled = true;
		document.getElementById('divImgCancelar').disabled = true;
		consultaTarjetaY3DsMethod(jSesionId);
	} else {
		return false;
	}
}

/************************************************************
* 												[Ref0012]	
* Funcion: validaFormTarjeta								
* Devuelve:													
************************************************************/
function consultaTarjetaY3DsMethod(jSesionId)
{
	// Llamada Ajax para obtener URL 3DSMethod
	var url = "/sis/services/rest/rest3DS/consultaTarjeta3DSPantalla" + jSesionId;
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	req.onreadystatechange=function() {
		if (req.readyState==4) {
			var jsonObj = eval('(' + req.responseText +')');
			var url3DS=jsonObj.threeDSMethodURL;
			if (url3DS != undefined && url3DS != 'NO_3DSMethod' && url3DS != 'NO_3DS') {
				// Si hay URL del 3DSMethod mínimo sería una N
				document.getElementById("threeDSCompInd").value = "N";
				var threeDSMData = jsonObj.threeDSMethodData;
				var iframe = document.createElement('iframe');
				iframe.id="iframe3DSM";
				iframe.style.cssText="width:0;height:0;border:0;border:none;display:none;";
				var html = '<body onload="document.form3DSM.submit();">'
				+ '<form action="'+ url3DS +'" id="form3DSM" name="form3DSM" method="post" target="">' 
				+ '<input type="hidden" name="threeDSMethodData" id="threeDSMethodData" value="'+ threeDSMData +'">' 
				+ '</form></body>';
				var ua = window.navigator.userAgent;
				if (ua.indexOf("MSIE ") > -1 || ua.indexOf("Trident/") > -1 || ua.indexOf("Edge/") > -1) {
					document.getElementById("iframe3DSMethod").appendChild(iframe);
					iframe.contentWindow.document.open();
					iframe.contentWindow.document.write(html);
					iframe.contentWindow.document.close();
				} else {
					iframe.src = 'data:text/html;charset=utf-8,' + encodeURI(html);
					document.getElementById("iframe3DSMethod").appendChild(iframe);
				}
				setTimeout(function(){ finalizarOperacion3DS();},10000);
			} else {
				ocultaBoton();
				fProcesandoPeticion('S');
				document.formTarjeta.submit();
			}
		}
	}

	req.open("POST", url, true);
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	req.send("tarjeta=" + document.formTarjeta.Sis_Numero_Tarjeta.value);
}

/************************************************************
* 												[Ref0012]	
* Funcion: validaFormTarjeta								
* Devuelve:													
************************************************************/
function finalizarOperacion3DS()
{
	if (!threeDsMethodEnviado) {
		threeDsMethodEnviado = true;
		ocultaBoton();
		fProcesandoPeticion('S');
		document.formTarjeta.submit();
	}
}


/************************************************************
* 												[Ref0012]	
* Funcion: validaFormTarjetaUPI								
* Devuelve:													
************************************************************/
function validaFormTarjetaUPI()
{
	if (validaPagoConTarjetaUPI())
	{
		ocultaBoton();
		fProcesandoPeticion('S');
		if (document.formTarjeta.ds_sis_pago_upi) {
			document.formTarjeta.ds_sis_pago_upi.value = 'true';
		}
		document.formTarjeta.submit();
	} else {
		return false;
	}
}


/************************************************************
* 												[Ref0013]	
* Funcion: cancelar								
* Devuelve:	
* Funcion para el botón de Cancelar para que llame y genere una 
* excepción con código SIS9915 -- 0915												
************************************************************/
function cancelar(){
		ocultaBoton();
		fProcesandoPeticion('S');
		document.formTarjeta.bcancel.value=1;
		document.formTarjeta.submit();
		
}
 
/************************************************************
* 												[Ref0014]	
* Funcion: validaPagoConTarjeta								
* Devuelve:		
* Validaciones del número de tarjeta y de la fecha de caducidad											
************************************************************/
function validaPagoConTarjeta() { 

	var laTarjeta = dameValorTarjeta();
	var mesCaduc  = document.formTarjeta.Sis_Caducidad_Tarjeta_Mes.value;
	var yearCaduc = document.formTarjeta.Sis_Caducidad_Tarjeta_Anno.value;
	
	// Validamos que el número de tarjeta no esté vacío
	if (laTarjeta == "") {
		alert(getError("msg2"));
		focoTarjeta(false);
		return false;
	}

	// Para validar si es numérico, primero se sustituyen los blancos por # y luego se valida
	laTarjeta = laTarjeta.replace(' ', '#');
	if (isNaN(laTarjeta)) {
		alert(getError("msg3"));
		focoTarjeta(true);
		return false;
	}

	// Se valida que la tarjeta no sea negativa
	if (laTarjeta < 0) {
		alert(getError("msg4"));
		focoTarjeta(true);
		return false;
	}

	// Validamos el digito de control
	if (!(validaEsTarjeta(laTarjeta))) {
		alert(getError("msg15"));
		document.formTarjeta.Sis_Numero_Tarjeta.select();
		document.formTarjeta.Sis_Numero_Tarjeta.focus();
		return false;
	}

	// Se valida la longitud minima y  máxima de la tarjeta (13-19 posiciones)
	if (laTarjeta.length < 13 || laTarjeta.length > 19) {
		alert(getError("msg15"));
		focoTarjeta(true);
		return false;
	}

	// Validamos que el mes de caducidad de la tarjeta no esté vacío
	if (mesCaduc == "") {
		alert(getError("msg5"));
		document.formTarjeta.Sis_Caducidad_Tarjeta_Mes.focus();
		return false;
	}

	// Para validar si es numérico, primero se sustituyen los blancos por # y luego se valida
	mesCaduc = mesCaduc.replace(' ','#');
	if (isNaN(mesCaduc)) {
		alert(getError("msg6"));
		document.formTarjeta.Sis_Caducidad_Tarjeta_Mes.select();
		document.formTarjeta.Sis_Caducidad_Tarjeta_Mes.focus();
		return false;
	}

	// Se valida que el mes de caducidad esté entre 1 y 12
	if (!(mesCaduc >= 1 && mesCaduc <= 12)) {
		alert(getError("msg7"));
		document.formTarjeta.Sis_Caducidad_Tarjeta_Mes.select();
		document.formTarjeta.Sis_Caducidad_Tarjeta_Mes.focus();
		return false;
	}

	//Se le ponen dos digitos al mes si el usuario no los ha puesto
	if (mesCaduc.length == 1) {
		document.formTarjeta.Sis_Caducidad_Tarjeta_Mes.value = "0" +
		document.formTarjeta.Sis_Caducidad_Tarjeta_Mes.value;
	}

	// Validamos que el año de caducidad de la tarjeta no esté vacío
	if (yearCaduc == "") {
		alert(getError("msg8"));
		document.formTarjeta.Sis_Caducidad_Tarjeta_Anno.focus();
		return false;
	}

	// Para validar si es numérico, primero se sustituyen los blancos por # y luego se valida
	yearCaduc = yearCaduc.replace(' ','#');
	if (isNaN(yearCaduc)) {
		alert(getError("msg9"));
		document.formTarjeta.Sis_Caducidad_Tarjeta_Anno.select();
		document.formTarjeta.Sis_Caducidad_Tarjeta_Anno.focus();
		return false;
	}

	// Se valida que el año de caducidad no sea negativo
	if (yearCaduc < 0) {
		alert(getError("msg10"));
		document.formTarjeta.Sis_Caducidad_Tarjeta_Anno.select();
		document.formTarjeta.Sis_Caducidad_Tarjeta_Anno.focus();
		return false;
	}

	//Se le ponen dos digitos al año si el usuario no los ha puesto
	if (yearCaduc.length == 1) {
		document.formTarjeta.Sis_Caducidad_Tarjeta_Anno.value = "0"
		+ document.formTarjeta.Sis_Caducidad_Tarjeta_Anno.value;
	}

	if(document.formTarjeta.Sis_Tarjeta_CVV2) {
		if(!validaCVV2(laTarjeta, document.formTarjeta.Sis_Tarjeta_CVV2))
			return false;
	}
	
	if(document.formTarjeta.numeroDocumento){
		if (document.formTarjeta.numeroDocumento.value.length != 9) {
			alert(getError("msg19"));
			return false;
		}
	}
	if(document.formTarjeta.expediente){
		if (document.formTarjeta.expediente.value.length != 12) {
			alert(getError("msg20"));
			return false;
		}
	}
	if(document.formTarjeta.fechaDevengo){
		if (document.formTarjeta.fechaDevengo.value.length != 8) {
			alert(getError("msg21"));
			return false;
		}
	}
	// Se fija el valor de la tarjeta si está en modo 4 posiciones
	if (document.formTarjeta.numTarjeta1) {
		document.formTarjeta.Sis_Numero_Tarjeta.value = laTarjeta;
	}

	return true;
}

/************************************************************
* 												[Ref0014]	
* Funcion: validaPagoConTarjetaUPI								
* Devuelve:		
* Validaciones del número de tarjeta y de la fecha de caducidad (opcional)
************************************************************/
function validaPagoConTarjetaUPI() { 

	var laTarjeta = dameValorTarjetaUPI();
	var mesCaduc  = document.formTarjeta.Sis_Caducidad_Tarjeta_Mes_UPI.value;
	var yearCaduc = document.formTarjeta.Sis_Caducidad_Tarjeta_Anno_UPI.value;
	
	// Validamos que el número de tarjeta no esté vacío
	if (laTarjeta == "") {
		alert(getError("msg2"));
		focoTarjetaUPI(false);
		return false;
	}

	// Para validar si es numérico, primero se sustituyen los blancos por # y luego se valida
	laTarjeta = laTarjeta.replace(' ', '#');
	if (isNaN(laTarjeta)) {
		alert(getError("msg3"));
		focoTarjetaUPI(true);
		return false;
	}

	// Se valida que la tarjeta no sea negativa
	if (laTarjeta < 0) {
		alert(getError("msg4"));
		focoTarjetaUPI(true);
		return false;
	}

	// Validamos el digito de control
	if (!(validaEsTarjeta(laTarjeta))) {
		alert(getError("msg15"));
		document.formTarjeta.Sis_Numero_Tarjeta_UPI.select();
		document.formTarjeta.Sis_Numero_Tarjeta_UPI.focus();
		return false;
	}

	// Se valida la longitud minima y  máxima de la tarjeta (13-19 posiciones)
	if (laTarjeta.length < 13 || laTarjeta.length > 19) {
		alert(getError("msg15"));
		focoTarjetaUPI(true);
		return false;
	}
	
	// Se validan los datos de caducidad y CVV2 sólo si se informan, porque son opcionales
	if (mesCaduc != "" || yearCaduc != "") {
		// Validamos que el mes de caducidad de la tarjeta no esté vacío
		if (mesCaduc == "") {
			alert(getError("msg5"));
			document.formTarjeta.Sis_Caducidad_Tarjeta_Mes_UPI.focus();
			return false;
		}
	
		// Para validar si es numérico, primero se sustituyen los blancos por # y luego se valida
		mesCaduc = mesCaduc.replace(' ','#');
		if (isNaN(mesCaduc)) {
			alert(getError("msg6"));
			document.formTarjeta.Sis_Caducidad_Tarjeta_Mes_UPI.select();
			document.formTarjeta.Sis_Caducidad_Tarjeta_Mes_UPI.focus();
			return false;
		}
	
		// Se valida que el mes de caducidad esté entre 1 y 12
		if (!(mesCaduc >= 1 && mesCaduc <= 12)) {
			alert(getError("msg7"));
			document.formTarjeta.Sis_Caducidad_Tarjeta_Mes_UPI.select();
			document.formTarjeta.Sis_Caducidad_Tarjeta_Mes_UPI.focus();
			return false;
		}
	
		//Se le ponen dos digitos al mes si el usuario no los ha puesto
		if (mesCaduc.length == 1) {
			document.formTarjeta.Sis_Caducidad_Tarjeta_Mes_UPI.value = "0" +
			document.formTarjeta.Sis_Caducidad_Tarjeta_Mes_UPI.value;
		}
	
		// Validamos que el año de caducidad de la tarjeta no esté vacío
		if (yearCaduc == "") {
			alert(getError("msg8"));
			document.formTarjeta.Sis_Caducidad_Tarjeta_Anno_UPI.focus();
			return false;
		}
	
		// Para validar si es numérico, primero se sustituyen los blancos por # y luego se valida
		yearCaduc = yearCaduc.replace(' ','#');
		if (isNaN(yearCaduc)) {
			alert(getError("msg9"));
			document.formTarjeta.Sis_Caducidad_Tarjeta_Anno_UPI.select();
			document.formTarjeta.Sis_Caducidad_Tarjeta_Anno_UPI.focus();
			return false;
		}
	
		// Se valida que el año de caducidad no sea negativo
		if (yearCaduc < 0) {
			alert(getError("msg10"));
			document.formTarjeta.Sis_Caducidad_Tarjeta_Anno_UPI.select();
			document.formTarjeta.Sis_Caducidad_Tarjeta_Anno_UPI.focus();
			return false;
		}
	
		//Se le ponen dos digitos al año si el usuario no los ha puesto
		if (yearCaduc.length == 1) {
			document.formTarjeta.Sis_Caducidad_Tarjeta_Anno_UPI.value = "0"
			+ document.formTarjeta.Sis_Caducidad_Tarjeta_Anno_UPI.value;
		}
	}
	
	// Si se informa el CVV2, se comprueba
	if(document.formTarjeta.Sis_Tarjeta_CVV2_UPI) {
		if(!validaCVV2UPI(laTarjeta, document.formTarjeta.Sis_Tarjeta_CVV2_UPI))
			return false;
	}

	return true;
}

/************************************************************
* 												[Ref0015]	
* Funcion: validaCVV2								
* Parametros:												
*		tarjeta
*		campoCVV2												
* Devuelve:													
************************************************************/
function validaCVV2(tarjeta, campoCVV2) {
	var isAMEX = esAMEX(tarjeta);
	var isDINERS = esDINERS(tarjeta);
	var isBINEspecial = esBinEspecial(tarjeta);
	var longitudMin = 3;
	var longitudMax = 3;
	var isValidable = false;
	var isJCB = esJCB(tarjeta);
	//alert('validaCVV2');
	isValidable = (isAMEX || isDINERS || isJCB || isBINEspecial || esMaster(tarjeta) || esVisa(tarjeta) || es4B(tarjeta));
	
	if(isAMEX) // Para AMEX son 3 o 4 posiciones en el CVV2
		longitudMax = 4;
	
	var cvv2 = trim(campoCVV2.value);
	
	// Se valida el código de seguridad
	if(isValidable) {
		if(indicadorCVV2 == 4 || cvv2 != "") {
			if (cvv2.length < longitudMin || cvv2.length > longitudMax) {
				alert(getError("msg11a") + " " + longitudMax + " " + getError("msg11b"));
				campoCVV2.select();
				campoCVV2.focus();
				return false;
			}
			
			cvv2 = cvv2.replace(' ','#');
			if (isNaN(cvv2)) {
				alert(getError("msg12"));
				campoCVV2.select();
				campoCVV2.focus();
				return false;
			}
			// Se valida que el código de seguridad no sea negativo
			if (cvv2 < 0) {
				alert(getError("msg13"));
				campoCVV2.select();
				campoCVV2.focus();
				return false;
			}
		}
	} else if(!isValidable && cvv2 != "") {
		alert(getError("msg14"));
		campoCVV2.select();
		campoCVV2.focus();
		return false;	
	}
	
	campoCVV2.value = cvv2;
	return true;
}

/************************************************************
* 												[Ref0015]	
* Funcion: validaCVV2UPI								
* Parametros:												
*		tarjeta
*		campoCVV2												
* Devuelve:													
************************************************************/
function validaCVV2UPI(tarjeta, campoCVV2) {
	var longitudMin = 3;
	var longitudMax = 4;
	var isValidable = true;
	var cvv2 = trim(campoCVV2.value);
	
	// Se valida el código de seguridad
	if(isValidable) {
		if(indicadorCVV2 == 4 || cvv2 != "") {
			if (cvv2.length < longitudMin || cvv2.length > longitudMax) {
				alert(getError("msg11a") + " " + longitudMin + " " + getError("msg11b"));
				campoCVV2.select();
				campoCVV2.focus();
				return false;
			}
			
			cvv2 = cvv2.replace(' ','#');
			if (isNaN(cvv2)) {
				alert(getError("msg12"));
				campoCVV2.select();
				campoCVV2.focus();
				return false;
			}
			// Se valida que el código de seguridad no sea negativo
			if (cvv2 < 0) {
				alert(getError("msg13"));
				campoCVV2.select();
				campoCVV2.focus();
				return false;
			}
		}
	} else if(!isValidable && cvv2 != "") {
		alert(getError("msg14"));
		campoCVV2.select();
		campoCVV2.focus();
		return false;	
	}
	
	campoCVV2.value = cvv2;
	return true;
}

/************************************************************
* 												[Ref0016]	
* Funcion: trim								
* Parametros:												
*		cadena													
* Devuelve:													
************************************************************/
function trim(cadena) {
	for(i=0; i<cadena.length; ) {
		if(cadena.charAt(i)==" ")
			cadena=cadena.substring(i+1, cadena.length);
		else
			break;
	}
	for(i=cadena.length-1; i>=0; i=cadena.length-1) {
		if(cadena.charAt(i)==" ")
			cadena=cadena.substring(0,i);
		else
			break;
	}
	return cadena;
}
 
/************************************************************
* 												[Ref0017]	
* Funcion: esVisa								
* Parametros:												
*		laTarjeta													
* Devuelve:		
* VISAs empiezan por 4											
************************************************************/
function esVisa(laTarjeta) {
	var tipoTarjeta = laTarjeta.substr(0,1);
	if(tipoTarjeta == 4)
		return true;
	else
		return false;
}

/************************************************************
* 												[Ref0018]	
* Funcion: esMaster								
* Parametros:												
*		laTarjeta													
* Devuelve:	
* MASTERs empiezan por 5 y 6 o estan dentro de rango especial												
************************************************************/
function esMaster(laTarjeta) {
	var tipoTarjeta = laTarjeta.substr(0,1);
	var bin = laTarjeta.substr(0,6);
	if(tipoTarjeta == 5 || tipoTarjeta == 6 || (bin >= 222100 && bin <= 272099))
		return true;
	else
		return false;
}

/************************************************************
* 												[Ref0019]	
* Funcion: esAMEX								
* Parametros:												
*		laTarjeta													
* Devuelve:		
* AMEX son de 15 digitos y empiezan por 34 o 37											
************************************************************/
function esAMEX(laTarjeta) {
	laTarjeta = trim(laTarjeta);
	var tipoTarjeta = laTarjeta.substr(0,2);
	if((tipoTarjeta == 34 || tipoTarjeta == 37) && laTarjeta.length == 15)
		return true;
	else
		return false;
}

/************************************************************
* 												[Ref0020]	
* Funcion: esDINERS								
* Parametros:												
*		laTarjeta													
* Devuelve:			
* DINERS son de 14 digitos y empiezan por 36										
************************************************************/
function esDINERS(laTarjeta) {
	laTarjeta = trim(laTarjeta);
	var tipoTarjeta = laTarjeta.substr(0,2);
	if(tipoTarjeta == 36 && laTarjeta.length == 14)
		return true;
	else
		return false;
}

/************************************************************
* 												[Ref0020]	
* Funcion: esBinEspecial								
* Parametros:												
*		laTarjeta																				
************************************************************/
function esBinEspecial(laTarjeta) {
	laTarjeta = trim(laTarjeta);
	var tipoTarjeta = laTarjeta.substr(0,6);
	if(tipoTarjeta == 972437)
		return true;
	else
		return false;
}

/************************************************************
* 												[Ref0021]	
* Funcion: esJCB								
* Parametros:												
*		laTarjeta													
* Devuelve:		
* JCB son de 16 digitos y empiezan por 35											
************************************************************/
function esJCB(laTarjeta) {
	laTarjeta = trim(laTarjeta);
	var tipoTarjeta = laTarjeta.substr(0,2);
	if(tipoTarjeta == 35 && laTarjeta.length == 16)
		return true;
	else
		return false;
}

/************************************************************
* 												[Ref0022]	
* Funcion: load		
* Funcion que se ejecuta cuando se termina de cargar la página													
************************************************************/
function load() {
	if(document.getElementById("divImgAceptar")){
		document.getElementById("divImgAceptar").style.visibility="visible";
	}
	if(document.getElementById("divImgAceptarNoScript")){
		document.getElementById("divImgAceptarNoScript").style.visibility="hidden";
	}
	
	if(document.getElementById("divImgCancelar")){
		document.getElementById("divImgCancelar").style.visibility="visible";
	}
	if(document.getElementById("divImgCancelarNoScript")){
		document.getElementById("divImgCancelarNoScript").style.visibility="hidden";	
	}

	if (document.formTarjeta) {
		fLoad(this);
	}
	//resizeDiv();
}

/************************************************************
* 												[Ref0023]	
* Funcion: ventanaInfoVisa1									
* Devuelve:													
************************************************************/
function ventanaInfoVisa1() {
	window.open("/sis/html/verifiedByVisa1.html","Info","width=500,height=500");	
}

/************************************************************
* 												[Ref0024]	
* Funcion: ventanaInfoCVV2								
* Parametros:												
*		idioma													
* Devuelve:													
************************************************************/
function ventanaInfoCVV2(idioma) {
	if(idioma==undefined){
		window.open("/sis/html/ayudaCVV2_1.html","Info","width=430,height=370");
	}
	else{
		var a = "/sis/html/ayudaCVV2_" + idioma + ".html";
		window.open(a,"Info","width=430,height=370");
	}	
}

/************************************************************
* 												[Ref0025]	
* Funcion: getWindowHeight								
* Parametros:												
*		ver													
* Devuelve:	
* colocar los div correctamente											
************************************************************/
function getWindowHeight(){
	if (navigator.appName.indexOf("Microsoft")!=-1) {
		return document.body.offsetHeight;
	}
	else{
		return window.innerHeight;
	}
}

/************************************************************
* 												[Ref0026]	
* Funcion: resizeDiv									
* Devuelve:													
************************************************************/					  
function resizeDiv(){
	var height = getWindowHeight();
	alert(height);
	document.getElementById('divCuerpo').style.height=height-70;	
}

/************************************************************
* 												[Ref0027]	
* Funcion: validaIsNumerico_v2								
* Parametros:												
*		campo
*		msgError													
* Devuelve:	true si es numerico
* colocar los div correctamente											
************************************************************/
function validaIsNumerico_v2(campo,msgError){
	campo = campo.replace(' ','#');
	if (isNaN(campo))
	{
		campo= campo.replace('#',' ');
		alert(msgError);
		decideFoco();
		return false;
	}
	return true;
}

/************************************************************
* 												[Ref0028]	
* Funcion: dameValorTarjeta
* Devuelve:													
************************************************************/
function dameValorTarjeta()
{
	if (document.formTarjeta.numTarjeta1) {
		return new String("" + document.formTarjeta.numTarjeta1.value
			+ "" + document.formTarjeta.numTarjeta2.value
			+ "" + document.formTarjeta.numTarjeta3.value
			+ "" + document.formTarjeta.numTarjeta4.value);
	} else {
		return new String(document.formTarjeta.Sis_Numero_Tarjeta.value);
	}
}

/************************************************************
* 												[Ref0028]	
* Funcion: dameValorTarjetaUPI
* Devuelve:													
************************************************************/
function dameValorTarjetaUPI()
{
	if (document.formTarjeta.Sis_Numero_Tarjeta_UPI && document.formTarjeta.Sis_Numero_Tarjeta_UPI.value != "") {
		return new String(document.formTarjeta.Sis_Numero_Tarjeta_UPI.value);
	} else {
		return "";
	}
}

/************************************************************
* 													[Ref0029]	
* Funcion: focoTarjeta
* Parametros:
*		hacerSelect: booleano que indica si hacer select o no
* Devuelve:													
************************************************************/
function focoTarjeta(hacerSelect)
{
	if (document.formTarjeta.numTarjeta1) {
		if (hacerSelect) {
			document.formTarjeta.numTarjeta1.select();
		}
		document.formTarjeta.numTarjeta1.focus();
	} else {
		if (hacerSelect) {
			document.formTarjeta.Sis_Numero_Tarjeta.select();
		}
		document.formTarjeta.Sis_Numero_Tarjeta.focus();
	}
}

/************************************************************
* 												[Ref0029]	
* Funcion: focoTarjetaUPI
* Parametros:
*		hacerSelect: booleano que indica si hacer select o no
* Devuelve:													
************************************************************/
function focoTarjetaUPI(hacerSelect)
{
	if (hacerSelect) {
		document.formTarjeta.Sis_Numero_Tarjeta_UPI.select();
	}
	document.formTarjeta.Sis_Numero_Tarjeta_UPI.focus();
}

/************************************************************
* 												[Ref0030]	
* Funcion: PasarFoco
* Parametros:
*		caja: Objeto de tipo input que almacena la tarjeta de cuatro posiciones
* Devuelve:													
************************************************************/
function PasarFoco(caja)
{
	if (caja.value.length == 4) {
		if (caja == document.formTarjeta.numTarjeta1) {
			document.formTarjeta.numTarjeta2.select();
			document.formTarjeta.numTarjeta2.focus();
		} else if (caja == document.formTarjeta.numTarjeta2) {
			document.formTarjeta.numTarjeta3.select();
			document.formTarjeta.numTarjeta3.focus();	
		} else if (caja == document.formTarjeta.numTarjeta3) {
			document.formTarjeta.numTarjeta3.select();
			document.formTarjeta.numTarjeta4.focus();
		}
	}
}

/************************************************************
* 												[Ref0031]	
* Funcion: es4B								
* Parametros:												
*		laTarjeta													
* Devuelve:		
* 4B son los rangos entre 972464 y 972474 con longitud 16
************************************************************/
function es4B(laTarjeta) {
	laTarjeta = trim(laTarjeta);
	var binTarjeta = laTarjeta.substr(0,6);
	//alert('1-' + binTarjeta);
	if(binTarjeta >= 972464 && binTarjeta <= 972474 && laTarjeta.length == 16)
		return true;
	else
		return false;
}

/************************************************************
* Funcion: validaEsTarjeta
* Devuelve:													
************************************************************/
function validaEsTarjeta(st) {
	var sum = 0;
	var mul = 1;
	var l = st.length;
	for (i = 0; i < l; i++) {
		digit = st.substring(l-i-1,l-i);
		tproduct = parseInt(digit ,10)*mul;
		if (tproduct >= 10)
			sum += (tproduct % 10) + 1;
		else
			sum += tproduct;

		if (mul == 1)
			mul++;
		else
			mul--;
	}
	if ((sum % 10) == 0) {
		return (true);
	} else {
		return (false);
	}
}