function esFechaValida(fecha){
    if (fecha != undefined && fecha != "" ){
        if (!/^\d{2}\/\d{2}\/\d{4}$/.test(fecha)){
            alert("formato de fecha no valido (dd/mm/aaaa)");
            return false;
        }
	}
}

function calcSS(cp, nss, dc, tipo){

	 if(cp >0){
	    var a = parseFloat(cp);
	    var b = parseFloat(nss);
		
		
			if(b > 999999){ var c = eval(String(a)+ String(b))}
			if(b <= 999999){ var c = (a * 1000000) + b}
	    var dc_calc = c - (parseInt(c / 97) * 97)
		

			if(b > 999999){ var c2 = eval(String(a)+ String(b))}
			if(b <= 999999){ var c2 = (a * 10000000) + b}
	    var dc_calc2 = c2 - (parseInt(c2 / 97) * 97)
				
		
	}
	
			if(tipo=="e" && dc!=dc_calc && dc!=dc_calc2){
				alert("La cuenta de cotizacion no es correcta");
				
			} else if(tipo!="e" && dc!=dc_calc2){
				alert("El numero de Seguridad Social no es correcto");
				
			} else {
				return true;
			}
}

function validarEmail(valor) {
  if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(valor)){
   //alert("La dirección de email " + valor    + " es correcta.") 
   return (true)
  } else {
   //alert("La dirección de email es incorrecta.");
   return (false);
  }
 }

//------------------------------------------------------------
// Rutina de validación del codigo cuenta cliente de un banco
// Justino Martinez, 2003
// http://www.webviva.com
// http://www.webviva.com/biblioteca
//------------------------------------------------------------

// Funcion que chequea los dos digitos de control
// Creada originalmente por Daniel Rodriguez y Joaquin
// Bravo y publicada en 
// http://programacion.com/html/articulo/tw_ccc/
function DigitoControl(cadena){
	var cifras = new Array(1,2,4,8,5,10,9,7,3,6);
    var chequeo = 0;
    for (var i=0; i < cifras.length; i++){
		chequeo += parseInt(cadena.charAt(i)) * cifras[i];
	}
    chequeo = 11 - (chequeo % 11);
	if (chequeo == 11) {chequeo = 0;}
	if (chequeo == 10) {chequeo = 1;}
    return chequeo;
}
// Funcion que valida el codigo de cuenta cliente
// Funcion que comprueba que "valor" es un numero entero
function EsNumeroEntero(valor){
    var cadena = valor.toString();
	var longitud = cadena.length;
	if (longitud == 0){return false;}
	var ascii = null;
    for (var i=0; i<longitud; i++) {
		ascii = cadena.charCodeAt(i);
        if (ascii < 48 || ascii > 57){return false;}
    }
	return true;
}

function ValidarCCC(entidad,oficina,dc,nc) {

	// Comprobamos que solo hemos introducido numeros
	if (!EsNumeroEntero(entidad)){
		alert("Debe introducir el numero de entidad bancaria");
		return false;
	}
	if (!EsNumeroEntero(oficina)){
		alert("Debe introducir el numero de oficina");
		return false;
	}
	if (!EsNumeroEntero(dc)){
		alert("Debe introducir los dos digitos de control");
		return false;
	}
	if (!EsNumeroEntero(nc)){
		alert("Debe introducir el numero de cuenta");
		return false;
	}
	// Comprobamos el primer digito de control
	var primer_control="00"+entidad+oficina;
	var primer_digito=DigitoControl(primer_control);
	if (primer_digito != dc.charAt(0)){
		alert("El codigo de cuenta cliente proporcionado no es valido");
		return false;
	}

	// Comprobamos el segundo digito de control
	var segundo_control=nc;
	var segundo_digito=DigitoControl(segundo_control);
	if (segundo_digito != dc.charAt(1)){
		alert("El codigo de cuenta cliente proporcionado no es valido");
		return false;
	}

	// Si todo es correcto enviamos el formulario
	//alert("El código parece correcto. Ahora se procedería al envio del formulario");
	//window.document.miformulario.submit();
	return true;
}
function validatlf(valor){
	
	if( !(/^\d{9}$/.test(valor)) ) {
	  alert("El telefono introducido no es correcto (formato de 9 digitos sin espacios ni guiones).");
	} else{
			return true;
	}
}
function str_replace(search, replace, subject) {
 
    var f = search, r = replace, s = subject;
    var ra = r instanceof Array, sa = s instanceof Array, f = [].concat(f), r = [].concat(r), i = (s = [].concat(s)).length;
 
    while (j = 0, i--) {
        if (s[i]) {
            while (s[i] = s[i].split(f[j]).join(ra ? r[j] || "" : r[0]), ++j in f){};
        }
    };
 
    return sa ? s : s[0];
}


//Retorna: 1 = NIF ok, 2 = CIF ok, 3 = NIE ok, -1 = NIF error, -2 = CIF error, -3 = NIE error, 0 = ??? error
function valida_nif_cif_nie(a) 
{
	var temp=a.toUpperCase();
	var cadenadni="TRWAGMYFPDXBNJZSQVHLCKE";
 
	if (temp!==''){
		//si no tiene un formato valido devuelve error
		if ((!/^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$/.test(temp) && !/^[T]{1}[A-Z0-9]{8}$/.test(temp)) && !/^[0-9]{8}[A-Z]{1}$/.test(temp))
		{
			return 0;
		}
 
		//comprobacion de NIFs estandar
		if (/^[0-9]{8}[A-Z]{1}$/.test(temp))
		{
			posicion = a.substring(8,0) % 23;
			letra = cadenadni.charAt(posicion);
			var letradni=temp.charAt(8);
			if (letra == letradni)
			{
			   	return 1;
			}
			else
			{
				return -1;
			}
		}
 
		//algoritmo para comprobacion de codigos tipo CIF
		suma = parseInt(a[2])+parseInt(a[4])+parseInt(a[6]);
		for (i = 1; i < 8; i += 2)
		{
			temp1 = 2 * parseInt(a[i]);
			temp1 += '';
			temp1 = temp1.substring(0,1);
			temp2 = 2 * parseInt(a[i]);
			temp2 += '';
			temp2 = temp2.substring(1,2);
			if (temp2 == '')
			{
				temp2 = '0';
			}
 
			suma += (parseInt(temp1) + parseInt(temp2));
		}
		suma += '';
		n = 10 - parseInt(suma.substring(suma.length-1, suma.length));
 
		//comprobacion de NIFs especiales (se calculan como CIFs)
		if (/^[KLM]{1}/.test(temp))
		{
			if (a[8] == String.fromCharCode(64 + n))
			{
				return 1;
			}
			else
			{
				return -1;
			}
		}
 
		//comprobacion de CIFs
		if (/^[ABCDEFGHJNPQRSUVW]{1}/.test(temp))
		{
			if (!/^[A-Za-z0-9]{9}$/.test(temp)){ // Son 9 dígitos?
			   return -2;
			   
			 } else if (!/^[ABCDEFGHJNPQRSUVW]/.test(temp)) {
			   // Es una    letra de las admitidas ?
			/*  A. Sociedades anónimas. 
				B. Sociedades de responsabilidad limitada. 
				C. Sociedades colectivas. 
				D. Sociedades comanditarias. 
				E. Comunidades de bienes y herencias yacentes. 
				F. Sociedades cooperativas. 
				G. Asociaciones. 
				H. Comunidades de propietarios en régimen de propiedad horizontal. 
				J. Sociedades civiles, con o sin personalidad jurídica. 
				P. Corporaciones Locales. 
				Q. Organismos públicos. 
				R. Congregaciones e instituciones religiosas. 
				S. Órganos de la Administración del Estado y de las Comunidades Autónomas. 
				U. Uniones Temporales de Empresas. 
				V. Otros tipos no definidos en el resto de claves
				N. personas jurídicas y entidades sin personalidad jurídica que carezcan de la nacionalidad española, el número de identificación fiscal comenzará con la letra N, que indicará su carácter de entidad extranjera
				W. establecimientos permanentes de entidades no residentes en territorio español
				
				BOE Nº 49/2008
*/
			  return -2;
			  } else{
			   return 2;
   			}
			
		}
 
		//comprobacion de NIEs
		//T
		if (/^[T]{1}/.test(temp))
		{
			if (a[8] == /^[T]{1}[A-Z0-9]{8}$/.test(temp))
			{
				return 3;
			}
			else
			{
				return -3;
			}
		}
 
		//XYZ
		if (/^[XYZ]{1}/.test(temp))
		{
			temp2=temp.substring(0,8);
			
			a = str_replace(['X', 'Y', 'Z'], ['0','1','2'], temp2);

			posicion = a.substring(8,0) % 23;
			letra = cadenadni.charAt(posicion);
			var letradni=temp.charAt(8);
			if (letra == letradni)
			{
			   	return 3;
			}
			else
			{
				return -3;
			}		
		}
	}
 
	return 0;
}

function validanif(nif){
	var result=valida_nif_cif_nie(nif);
	if(result!=1 && result!=3){
		alert ("NIF incorrecto (Formato de 9 caracteres con 1 o 2 letras sin espacios ni guiones)");
	}else{
			return true;
	}
}
function validacif(cif){
	var result=valida_nif_cif_nie(cif);
	if(result!=1 && result!=3 && result!=2){
		alert ("CIF incorrecto (Formato de 9 caracteres con 1 o 2 letras sin espacios ni guiones)");
	}else{
			return true;
	}
}
function getradiovalue( ctrl ) { 

    for(i=0;i<ctrl.length;i++)
        if(ctrl[i].checked) return ctrl[i].value;
}