function abrirPopup(Url, ObjLlamante, w, h)
{
    var l = (window.screen.width / 2) - 170
	var t = (window.screen.height / 2) - 180
	mywindow= window.open(Url,ObjLlamante,"height= " + h +"px; width= "+ w+ "px; screenY= "+ l +"px; screenX= "+t+"px; resizable=yes; scrollbars=yes");
}

function quitarChar(Texto)
{
	var i=0;
	//var texto_corregido = "";
	var caracteres_validos = "0123456789ABCDEFGHIJKLMNÑOPQRSTUVWXYZ.-;:ºª ";
	for (i=0;i<Texto.length ;i++ )
	{
		//alert(Texto.charCodeAt(i));
		if (caracteres_validos.indexOf(Texto.charAt(i).toUpperCase()) == -1) // Si no tiene caracteres validos devuelvo false
		{
			//alert("Entro a almacenar " + Texto.charAt(i));
			return false;
			//texto_corregido = texto_corregido + Texto.charAt(i);
		}
	}
	return true;
	//return texto_corregido;
}

function CalcularNIF(DNI)
{
  var Lista_Letras_NIF = 'TRWAGMYFPDXBNJZSQVHLCKET';//, aNIF=''; 
  return Lista_Letras_NIF.charAt((DNI-0)%23)
}

function CalcularCIF(CIF)
{
  var suma=0, dc,j;
  if (CIF.charAt(0)=='X' || !isNaN(CIF.charAt(0)))
    return CalcularNIF(CIF);
  suma = parseInt(CIF.substring(2,3))+parseInt(CIF.substring(4,5))+parseInt(CIF.substring(6,7));
  for(j=0;j<4;j++)
  {
      p = 2*parseInt(CIF.substring(2*j+1,2*j+2));
      suma+= parseInt((p/10)) + (p %10);
  }
  dc = suma % 10;
  dc = (dc==0) ? 0 : 10 - dc;
  if ('PQ'.indexOf(CIF.charAt(0))!=-1) return String.fromCharCode(64+dc);
  return dc;
}


/* Realiza la comprobacion para tener un correo valido XXX@XXXX.XXXX */
function ValidarCorreo(Email)
{
	var OK=true;
	if (Email!='' && !(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(Email)))
		OK=false;
	return OK;
 }

function ValidarNombre(Nombre)
{
	var i=0;
	var valido=true;
	var Letras = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚ 'ÄËÏÖÜ-ÀÈÌÒÙÂÊÎÔÛÇ";
	for (i=0;i<Nombre.length ;i++ )
	{
		if (Letras.indexOf(Nombre.charAt(i).toUpperCase()) == -1) //No es una letra
		{
			valido = false;
			break;
		}
	}
	return valido;
}

function ValidarNIF(NIF)
{
	
    var aNIF = NIF.split("-");
    if (aNIF[0].charAt(0).toUpperCase() != 'X') //Entonces es un DNI
	{ 
        var Letra = CalcularNIF(aNIF[0]);
        if (aNIF.length==2)
        { 
            if (Letra != aNIF[1].charAt(0).toUpperCase())
            {
                alert('La Letra del DNI no concuerda. El formato debe ser NUMERO_DNI-LETRA');
                return false;
            }
        }
        else
        {
            alert('La Letra del DNI no concuerda. El formato debe ser NUMERO_DNI-LETRA');
            return false;
        }
    }
    else //Tarjeta de residencia.... se valida como el NIF pero empieza por X
    {
        var TarjetaResidencia = aNIF[0].substring(1,aNIF[0].length);
        var Letra = CalcularNIF(TarjetaResidencia);
        if (aNIF.length==2)
        {
            if (Letra != aNIF[1].charAt(0).toUpperCase())
            {
                alert('La Letra de la tarjeta de residencia no concuerda. El formato debe ser NUMERO-LETRA y empezar por X');
                return false;
            }
        }
        else
        {
            alert('La Letra de la tarjeta de residencia no concuerda. El formato debe ser NUMERO-LETRA y empezar por X');
            return false;
        }
    }
    return true;
}

function ValidarCIF(CIF)
{
  	var aCIF = CIF.split("-"); //Formato X-00000000
	var Control = "";
	var Letras = "ABCDEFGHKLMNPQS";
	if (aCIF.length==2)
	{
		Control = CalcularCIF(aCIF[0]+aCIF[1]);
	}

	if (CIF.length != 10 || aCIF.length!=2)  //Compruebo el tamaño que tiene
	{
		alert("Longitud incorrecta, un CIF consta de 8 digitos y una letra. Formato: LETRA-NUMERO_CIF.");
		return false;
	}

	if (Letras.indexOf(aCIF[0].toUpperCase()) == -1) //No es una letra de las que tngo seleccionadas
	{
        alert("La letra es incorrecta, debe ser una letra de las siguientes: A,B,C,D,E,F,G,H,K,L,M,N,P,Q,S");
		return false;
	}

	if (Control != CIF.charAt(9))
	{
        //alert("El dígito de control (Ultimo número) no es válido -->"+Control);
		alert("La letra del CIF no es válido");
        return false;
	}
	return true;

}

function ValidarDocumento (Documento,Tipo)
{
  //Esta funcion valida si un DNI, CIF o Tarjeta de residente es valido, para eso llamo a las funciones que tenia antes, dependiendo del tipo compruebo NIF/Tarjeta o CIF
    if (Documento=='')
    {
		alert('Debe escribir el número de documento.');
		return false;
	}
    if (Tipo=='Residencial'){
        return ValidarNIF(Documento);
	} else{
        return ValidarCIF(Documento);
	}
}




function ValidarTelefono(Telefono)
{
    var indfac = Telefono.charAt(0);
    if (Telefono=='')
	{
		alert('Debe escribir el número de teléfono.');
		return false;
	}

	if (isNaN(Telefono))
	{
		alert("El número introducido no es número de teléfono válido.")
		return false;
	}

	if (Telefono.length != 9)
	{
		alert("La longitud del número de teléfono introducido es incorrecta.")
		return false;
	}

	if  ((indfac != "9") && (indfac != "8")&& (indfac != "6"))
	{
		alert("El número introducido no es número de teléfono válido.")
		return false;
	}

	if (Telefono.substring(0,2) == '90' || Telefono.substring(0,2) == '80')
	{
		alert("El prefijo del teléfono no es un prefijo válido.")
		return false;
	}
	return true;
}

function ValidarMovil(Movil)
{
    var indice = Movil.charAt(0);

	if (isNaN(Movil))
	{
		alert("El número introducido no es número de móvil válido.");
		return false;
	}

	if (Movil.length != 9)
	{
		alert("La longitud del número de móvil introducido es incorrecta.");
		return false;
	}

	if (indice != "6")
	{
		alert("El número introducido no es un móvil válido.");
		return false;
	}
	return true;
}

function ValidarCodPostal(CP,CP_ProvValido,CP_PoblValido)
{
//	alert(CP + '...' + CP_ProvValido + '..' + CP_PoblValido + '..');
	if (CP_PoblValido == 0 || CP_PoblValido == "0") //Uso el de la provincia
	{
		if ((CP.charAt(0) != CP_ProvValido.charAt(0)) || (CP.charAt(1) != CP_ProvValido.charAt(1)))
		{
	//		alert('Primero');
			return false;
		}
	}
	else //Uso el CP de la poblacion
	{
		if ((CP.charAt(0) != CP_PoblValido.charAt(0)) || (CP.charAt(1) != CP_PoblValido.charAt(1)))
		{
	//		alert('Segundo');
			return false;
		}
	}
	return true;
}
 /* Valida que el DC sea correcto */
function ValidarDC(Entidad, Oficina, DC, Cuenta)
{
	var vEntidad=Entidad;
	var vOficina=Oficina;
	var vDC=DC;
	var vCuenta=Cuenta;
	var vDC1=parseInt(vEntidad.substr(0, 1),10)*4 + 
		parseInt(vEntidad.substr(1,1),10)*8 + 
		parseInt(vEntidad.substr(2,1),10)*5 +
 		parseInt(vEntidad.substr(3,1),10)*10 +
		parseInt(vOficina.substr(0,1),10)*9 +
		parseInt(vOficina.substr(1,1),10)*7 +
		parseInt(vOficina.substr(2,1),10)*3 +
		parseInt(vOficina.substr(3,1),10)*6 ;
	var vDC2=parseInt(vCuenta.substr(0,1),10)*1 +
		parseInt(vCuenta.substr(1,1),10)*2 +
		parseInt(vCuenta.substr(2,1),10)*4 +
		parseInt(vCuenta.substr(3,1),10)*8 +
		parseInt(vCuenta.substr(4,1),10)*5 +
		parseInt(vCuenta.substr(5,1),10)*10 +
		parseInt(vCuenta.substr(6,1),10)*9 +
		parseInt(vCuenta.substr(7,1),10)*7+
		parseInt(vCuenta.substr(8,1),10)*3 +
		parseInt(vCuenta.substr(9,1),10)*6 ;
	var vDC1=vDC1 % 11;
	var vDC2=vDC2 % 11;
	if (vDC1!=0 && vDC1!=1) vDC1=11-vDC1;
	if (vDC2!=0 && vDC2!=1) vDC2=11-vDC2;
	var vDC3=vDC1.toString()+vDC2.toString();
	if (vDC=='') return DC;
	if (vDC==vDC3) return DC;
	alert('El n\372mero de cuenta del beneficiario NO es v\341lido. Revise los datos de la cuenta del beneficiario');
	return '';
}


function ValidarFecha(CampoFecha)
{	
	var ArrayDiasMes = new Array();

	ArrayDiasMes[0] = 31;  // Dias de Enero.
	ArrayDiasMes[1] = 0;   // Dias de Febrero. Los calculo despues
	ArrayDiasMes[2] = 31;  // Dias de Marzo
	ArrayDiasMes[3] = 30;  // Dias de Abril
	ArrayDiasMes[4] = 31;  // Dias de Mayo
	ArrayDiasMes[5] = 30;  // Dias de Junio
	ArrayDiasMes[6] = 31;  // Dias de Julio
	ArrayDiasMes[7] = 31;  // Dias de Agosto
	ArrayDiasMes[8] = 30;  // Dias de Septiembre
	ArrayDiasMes[9] = 31;  // Dias de Octubre
	ArrayDiasMes[10] = 30; // Dias de Noviembre
	ArrayDiasMes[11] = 31; // Dias de Diciembre

    var FechaFinal = CampoFecha.value+" 00:00:00";

	var ArrayFechaHora = FechaFinal.split(" "); //El dia, mes y año en el [0] y hora, min, seg enj el [1]

	var ArrayFecha, ArrayHora;
	if (ArrayFechaHora.length == 2)
	{
		ArrayFecha = ArrayFechaHora[0].split("/"); //Corto por dia, mes y año
		ArrayHora = ArrayFechaHora[1].split(":"); // Corto por horas, min y seg
	}
	else
	{
		alert("El campo fecha esta vacio, por favor inserte una fecha del tipo DD/MM/AAAA ");
		CampoFecha.focus();
		return false;
	}

	//Uso estas variables para mejor entendimiento.
	var Dia, Mes, Anyo;

	if (ArrayFecha.length == 3) //Tengo los tres parametros, dia, mes y año
	{
		Dia = ArrayFecha[0];
		Mes = ArrayFecha[1];
		Anyo = ArrayFecha[2];

	}
	else
	{
		alert("La fecha no es válida, debe tener dia, mes y año en el formato DD/MM/AAAA");
		CampoFecha.focus();
		return false;
	}

	var Horas, Minutos, Segundos;

	if (ArrayHora.length == 3)//Tengo los tres parametros, dia, mes y año
	{
		Horas = ArrayHora[0];
		Minutos = ArrayHora[1];
		Segundos = ArrayHora[2];

	}
	else
	{
		alert("La hora no es válida, debe tener horas, minutos y segundos en el formato HH:MM:SS");
		CampoFecha.focus();
		return false;
	}
	//Lo primero calculo los dias de febrero
	if (esBisiesto(Anyo))
		ArrayDiasMes[1] = 29;
	else
		ArrayDiasMes[1] = 28;

	// Compruebo si son numeros
	if (isNaN(Dia) || isNaN(Mes) || isNaN(Anyo))
	{
		alert("El año, el mes o el día no son números");
		CampoFecha.focus();
		return false;
	}

	// Compruebo que como mucho tenga los dias de ese mes.
	if (Dia > ArrayDiasMes[Mes-1])
	{
		alert("El mes escrito solo tiene "+ArrayDiasMes[Mes-1]);
		CampoFecha.focus();
		return false;
	}

	if ((Dia.length != 2) || (Mes.length != 2) || (Anyo.length != 4))
	{  
		alert("La fecha no es válida, debe ser del tipo DD/MM/AAAA y debe tener valores válidos");
		CampoFecha.focus();
		return false;
	}
	

	if ((Dia > 31) || (Dia < 1))
	{
		alert("Los dias deben estar entre 1 y 31");
		CampoFecha.focus();
		return false;
	}

	if ((Mes > 12) || (Mes < 1))
	{
		alert(Mes);
		alert("Los meses deben estar entre 1 y 12");
		CampoFecha.focus();
		return false;
	}
	if ((Anyo > devolverAnyoActual()) || (Anyo < 1))
	{
		alert("El año no puede ser mayor que el actual ni ser negativo o cero");
		CampoFecha.focus();
		return false;
	}


	// AHORA VALIDO LA HORA, QUE SIMPLEMENTE TIENE QUE SER DEL TIPO HH:MM:SS

	if ((Horas > 23 || Horas < 0) || (Minutos > 59 || Minutos < 0) || (Segundos > 59 || Segundos < 0))
	{
		alert("La hora no es una hora válida, por favor revisela. Debe ser un formato de 24 horas.");
		CampoFecha.focus();
		return false;
	}

	if (Horas.length != 2 || Minutos.length != 2 || Segundos.length != 2)
	{
		alert("Las horas, minutos y segundos deben estar en formato HH:MM:SS.");
		CampoFecha.focus();
		return false;
	}

	return true;
}

function esBisiesto(Anyo)
{
	 return ((Anyo % 4 == 0 && Anyo % 100 != 0) || (Anyo % 400 == 0)) ? true : false;
}

// Devuelve el año en el que nos encontremos
function devolverAnyoActual()
{
	var hoy = new Date();
	return hoy.getFullYear();
}


//Devuelve true si la fecha de inicio es menor que la de fin, false en caso contrario
function CompararFechas(CampoFechaIni,CampoFechaFin) 
{
	//El formato de las fechas es DD/MM/AAAA 

	//Divido la fecha de inicio
	var ArrayFechaIni;
	ArrayFechaIni = CampoFechaIni.value.split("/"); //Corto por dia, mes y año

	//Uso estas variables para mejor entendimiento.
	var DiaIni = ArrayFechaIni[0];
	var MesIni = ArrayFechaIni[1];
	var AnyoIni = ArrayFechaIni[2];
	
	//Divido la fecha de fin
	var ArrayFechaFin;

	ArrayFechaFin = CampoFechaFin.value.split("/"); //Corto por dia, mes y año

	//Uso estas variables para mejor entendimiento.
	var DiaFin = ArrayFechaFin[0];
	var MesFin = ArrayFechaFin[1];
	var AnyoFin = ArrayFechaFin[2];


	if ((AnyoIni==AnyoFin))
	{
		alert("El año de la fecha de nacimiento es igual al actual. Revise la fecha");
		return false;
	}	

	if ((AnyoIni > AnyoFin) || ((AnyoIni == AnyoFin) && (MesIni > MesFin)) || ((AnyoIni == AnyoFin) && (MesIni == MesFin) && (DiaIni > DiaFin)))
	{
		alert("La fecha de nacimiento es superior a la fecha de hoy. Revíse la fecha.");
		return false;
	} 
	var Anyo = AnyoFin - AnyoIni;
	if (Anyo < 18)
	{
		alert ("Debe ser mayor de edad para poder hacerse socio. Gracias por su interes");
		return false;
	} 	
	
	return true;
}