// Funcin que comprueba si hemos introducido algo
function isEmpty(inputStr) {
	if (inputStr == null || inputStr == "") {
		return true;
	}
	return false;
}

// Funcin que comprueba si es un nmero entero positivo
function isPosInteger(inputVal) {
	inputStr = "" + inputVal
	for (var i = 0; i < inputStr.length; i++) {
		var oneChar = inputStr.charAt(i);
		if (oneChar < "0" || oneChar > "9") {
			return false;	
		}
	}
	return true;
}	

// Funcin que comprueba si es un nmero entero que puede ser negativo
function isInteger(inputVal) {
	inputStr = "" + inputVal
	for (var i = 0; i < inputStr.length; i++) {
		var oneChar = inputStr.charAt(i);
		if (i == 0 && oneChar == "-") {
			continue;
		} 	
		if (oneChar < "0" || oneChar > "9") {
			return false;	
		}
	}
	return true;
}

// Funcin que comprueba si es un nmero, tanto si es entero como decimal o positivo como negativo
function isNumber(inputVal) {
	oneDecimal = false;
	inputStr = "" + inputVal;
	for (var i = 0; i < inputStr.length; i++) {
		var oneChar = inputStr.charAt(i);
		if (i == 0 && oneChar == "-") {
			continue;
		} 
		if (oneChar == "." && !oneDecimal) {
			oneDecimal = true;
			continue;
		}	
		if (oneChar < "0" || oneChar > "9") {
			return false;
		}
	}
	return true;
}

// Suma de funciones que solo acepta nmeros
function isCualquierNumero(inputStr) {
	if (isEmpty(inputStr)) {
		return false;
	} else {
		if (!isNumber(inputStr)) {
			return false;
		}
	}
	return true;
}

// Suma de funciones que solo acepta nmeros enteros positivos y descarta los negativos y los nmeros con decimales
function isNumeroEnteroPositivo(inputStr) {
	if (isEmpty(inputStr)) {
		return false;
	} else {
		if (!isPosInteger(inputStr)) {
			return false;
		}
	}
	return true;
}

function esVacio(val) {
    return ((val == null) || (val.length == 0));
}

function esNumerico(val) {
    num = parseFloat(val);
    if (val!=''+num) return false;
    return true;
}

function esLetra(val) {
    return ( ((val >= "a") && (val <= "z")) || ((val >= "a") && (val <= "Z")) || (val=" "));
}

function esLetras(val){
	for(i=0;i<val.length;i++){
		if(!esLetra(val.charAt(i))) return false;
	}
	return true;
}

function esDigito(val) {
    return (((val >= "0") && (val <= "9")) || (val=='.'));

}

function esNumero(val){
	 return (((val >= "0") && (val <= "9")) || (val==",") || (val==".") );
}

function esNumerico(val) {
    for(i=0;i<val.length;i++){
        if(!esNumero(val.charAt(i))) return false;
    }
    return true;
} 
   
function esDigitos(val) {
    for(i=0;i<val.length;i++){
        if(!esDigito(val.charAt(i))) return false;
    }
    return true;
}    

function minCaracteres(val,num) {
    return !(val.length<num);
}

function caracteres(val,num) {
    return (val.length==num);
}

function esEmail(val) {
    arroba = val.lastIndexOf('@');
    if ( arroba < 1 ){
        return false;
	}
    else {
    punto = val.indexOf('.', arroba);
      if ( punto < arroba + 2 || punto > val.length - 2 ) 
         return false;
     
   }
   return true;
}

function esCIFNIF(val) {
    val = val.toUpperCase();
    if (val.charAt(0) == 'X' || EsDigito(val.charAt(0)) )
        return esNIF(val);
    else
        return esCIF(val);
}

function esNIF(val) {
    val = val.toUpperCase();
    var LetrasNIF = "TRWAGMYFPDXBNJZSQVHLCKE";
    
    if (!minCaracteres(val,8)) return false;
    Letra = val.charAt(val.length-1);
    if (LetrasNIF.indexOf(Letra) == -1) return false;
    if (val.charAt(0) == 'X')
       Numero = val.substring(1,val.length-1);
    else
       Numero = val.substring(0,val.length-1);
    if (!esDigitos(Numero)) return false;
    Numero = parseInt(Numero,10);
    Indice = Numero-(parseInt(Numero/23,10)*23);
    if (Letra != LetrasNIF.charAt(Indice))
	return false;
	else
    return true;
}

function esCIF(val) {
    val = val.toUpperCase();
    var LetrasCIF = "ABCDEFGHNPSQ";
    var LetrasOrganismos = "JABCDEFGHI";
    var Organismo = false;
    
    if (!minCaracteres(val,9)) return false;
    var Letra = val.charAt(0);
    if (LetrasCIF.indexOf(Letra) == -1) return false;
    if (Letra == 'P' || Letra == 'Q' || Letra == 'S')
	Organismo = true;
    if (!esDigitos(val.substr(1,val.length-2))) return false;
    var CodigoControl = val.charAt(val.length-1);

    Suma1 = parseInt( val.charAt(2), 10) + parseInt( val.charAt(4), 10) + parseInt(val.charAt(6), 10 );
    Suma2 = 0;
    for( var i = 1; i < 8; i += 2) {
         Aux = parseInt(val.charAt(i), 10) * 2;
         if (Aux > 9) 
            Suma2 = Suma2 + parseInt(Aux / 10, 10) + Aux % 10;
         else
            Suma2 = Suma2 + Aux;
    }
    Suma = Suma1 + Suma2;
    Codigo = 10 - Suma % 10;
    if( Codigo > 9) Codigo = 0;
    
    if (!Organismo) {
       if (Codigo != parseInt(CodigoControl, 10)) return false; }
    else {
       if (LetrasOrganismos.charAt(Codigo) != CodigoControl ) return false; }
    
    return true;
}

function retChecked(field){
	var check="";
	for(var i=0;i<field.length;i++){
		if(field[i].checked){
			check+=field[i].value;
		}
	}
	return check;
}

function isChecked(field){
	var check=false;
	if(field.length){
		for(var i=0;i<field.length && check==false;i++){
			if(field[i].checked){
				check=true;
			}
		}
	}else{
		if(field.checked){
				check=true;
		}
	}
	return check;
}

function checkedValue(field){
	var check="";
	for(var i=0;i<field.length && check=="";i++){
		if(field[i].checked){
			check=field[i].value;
		}
	}
	return check;
}

function uncheck(field){
	for(var i=0;i<field.length;i++){
		field[i].checked=false;
	}
}

function validar(){
	
	if (document.formulario.nombre.value=="") {
		alert("Por favor, introduzca su nombre");
		document.formulario.nombre.focus();
	}
	else if (document.formulario.apellido1.value=="") {
		alert("Por favor, introduzca su primer apellido");
		document.formulario.apellido1.focus();
	}
	else if (document.formulario.nif.value=="") {
		alert("Por favor, introduzca su NIF");
		document.formulario.nif.focus();
		document.formulario.nif.select();
	}	
	else if (!esNIF(document.formulario.nif.value)) {
		alert("Por favor, introduzca un NIF correcto");
		document.formulario.nif.focus();
		document.formulario.nif.select();
	}	
	else if (document.formulario.telefono.value=="") {
		alert("Por favor, introduzca su teléfono");
		document.formulario.telefono.focus();
		document.formulario.telefono.select();
	}	
	else if (document.formulario.telefono.value!="" && (!esDigitos(document.formulario.telefono.value) || !caracteres(document.formulario.telefono.value,9) || (parseInt(document.formulario.telefono.value.charAt(0))!=9 && parseInt(document.formulario.telefono.value.charAt(0))!=6 && parseInt(document.formulario.telefono.value.charAt(0))!=7 && parseInt(document.formulario.telefono.value.charAt(0))!=8))) {
		alert("Por favor, introduzca un teléfono correcto.");
	}		
	else if (document.formulario.cpostal.value=="") {
		alert("Por favor, introduzca su código postal");
		document.formulario.cpostal.focus();
		document.formulario.cpostal.select();	
	}
	else if (!esDigitos(document.formulario.cpostal.value) || !caracteres(document.formulario.cpostal.value,5)) {
		alert("Por favor, introduzca un código postal correcto.");	
		document.formulario.cpostal.focus();
		document.formulario.cpostal.select();		
	}			
	else if (document.formulario.email.value!="" && !esEmail(document.formulario.email.value)) {
		alert("Por favor, introduzca un email correcto");
		document.formulario.email.focus();
		document.formulario.email.select();
	}	
	else if (document.formulario.aceptar.checked == false) {
		alert("Debe aceptar la Política de Privacidad");
	}		
	else {
		document.formulario.submit();
	}
}
