function removeSpaces(string) {
	var tstring = "";
	string = '' + string;
	splitstring = string.split(" ");
	for(i = 0; i < splitstring.length; i++)
	tstring += splitstring[i];
	return tstring;
}

function validator() {
	if (!document.getElementById("formulario_registro")) { return false; }
	var form = document.getElementById("formulario_registro");
	
	form.onsubmit = function() {
		var errors = 0;
		
		$$('#formulario_registro div.error_formulario span').each(function(item){
			item.remove();
		});
		$$('#formulario_registro div').each(function(item){
			item.removeClassName("error_formulario");
		});
		
		$$('#formulario_registro li.error_formulario span').each(function(item){
			item.remove();
		});
		
		$$('#formulario_registro li').each(function(item){
			item.removeClassName("error_formulario");
		});
		
		var nombre = document.getElementById("nombre");
		if(nombre.value === '') {
			errors[errors++]
			$('nombre').up('li').addClassName("error_formulario").insert('<span>El nombre es obligatorio</span>');
			}
		
		var apellidos = document.getElementById("apellidos");
		if(apellidos.value === '') {
			errors[errors++]
			$('apellidos').up('li').addClassName("error_formulario").insert('<span>El primer apellido es obligatorio</span>');
			}
			
		var apellido2 = document.getElementById("apellido2");
		if(apellido2.value === '') {
			errors[errors++]
			$('apellido2').up('li').addClassName("error_formulario").insert('<span>El segundo apellido es obligatorio</span>');
			}
		
		var observaciones = document.getElementById("observaciones");
		if(observaciones.value === '') {
			errors[errors++]
			$('observaciones').up('li').addClassName("error_formulario").insert('<span>La observaci&oacute;n es obligatoria</span>');
			}
		
		var email = document.getElementById("email");	
		if(email.value === '') {
			errors[errors++]
			$('email').up('li').addClassName("error_formulario").insert('<span>El e-mail es obligatorio</span>');
			}
		else{
			val=email.value;
			p=val.indexOf('@');
			d=val.indexOf('.',p);
			if (p<1 || p>(val.length-5) || d<1 || d>(val.length-3)){
				errors[errors++]
				$('email').up('li').addClassName("error_formulario").insert('<span>No es una direcci&oacute;n de email v&aacute;lida</span>');
			}
		}
		
		var telefono = document.getElementById("telefono");
		if(telefono.value === ''){
			errors[errors++]
			$('telefono').up('li').addClassName("error_formulario").insert('<span>El tel&eacute;fono es obligatorio</span>');
		} 
		else{
			val=removeSpaces(telefono.value);
			num = parseFloat(val);
			if (isNaN(val)||num<600000000){
				errors[errors++]
				$('telefono').up('li').addClassName("error_formulario").insert('<span>No es un n&uacute;mero de tel&eacute;fono</span>');
			} 
		}
		/*
		var fiscal = document.getElementById("fiscal");
		
		if(fiscal!=null){
		
			var radioGrp = document['forms']['formulario_registro']['data[Usuario][tipo_fiscal]'];
			var tipo_fiscal='';
			
			for(i=0; i < radioGrp.length; i++){
	    		if (radioGrp[i].checked == true) {
	        		tipo_fiscal = radioGrp[i].value;
	    		}
			}
			//alert(tipo_fiscal);
			if(tipo_fiscal===''){
				errors[errors++]
				$('tipo_fiscal_1').up('li').addClassName("error_formulario").insert('<span>No se ha especificado el tipo</span>');
			}
			else{
				if(fiscal.value === '') {
				errors[errors++]
				$('fiscal').up('li').addClassName("error_formulario").insert('<span>No se ha especificado el c&oacute;digo</span>');
				}
				else{
					switch(tipo_fiscal){
						case '1': if(validarNIF(fiscal.value)!==true){
										errors[errors++]
										$('fiscal').up('li').addClassName("error_formulario").insert('<span>El c&oacute;digo no es un NIF v&aacute;lido</span>');
									}
								break;
						case '2': if(validarCIF(fiscal.value)!==true){
									errors[errors++]
									$('fiscal').up('li').addClassName("error_formulario").insert('<span>El c&oacute;digo no es un CIF v&aacute;lido</span>');
									}
								break;
						default: break;
					}
				}
			}
		}*/
		
		
		/*if(fiscal.value === '') {
			errors[errors++]
			$('fiscal').up('li').addClassName("error_formulario").insert('<span>Los apellidos son obligatorio['+tipo_fiscal+']</span>');
			}*/
		
		/*var fecha_dia = document.getElementById("fecha_nacimientoDay");
		
		if(fecha_dia.value === '') {
			errors[errors++]
			$('fecha_nacimientoDay').up('li').addClassName("error_formulario").insert('<span>No se ha elegido el d&iacute;a</span>');
			}
		var fecha_mes = document.getElementById("fecha_nacimientoMonth");
		if(fecha_mes.value === '') {
			errors[errors++]
			$('fecha_nacimientoMonth').up('li').addClassName("error_formulario").insert('<span>No se ha elegido el mes</span>');
			}
		var fecha_anyo = document.getElementById("fecha_nacimientoYear");
		if(fecha_anyo.value === '') {
			errors[errors++]
			$('fecha_nacimientoYear').up('li').addClassName("error_formulario").insert('<span>No se ha elegido el a&ntilde;o</span>');
			}
		if((fecha_anyo.value !== '')&&(fecha_mes.value !== '')&&(fecha_dia.value !== '')){
			var fecha_nacimiento = new Date();
			var mes=fecha_mes.value - 1;
			fecha_nacimiento.setFullYear( fecha_anyo.value, mes, fecha_dia.value);
			if ( fecha_nacimiento.getMonth() != mes ) {
				errors[errors++]
				$('fecha_nacimientoYear').up('li').addClassName("error_formulario").insert('<span>La fecha no es v&aacute;lida</span>');			
			}
			var hoy=new Date();
			if(	hoy<fecha_nacimiento){
			//if((hoy.getFullYear() >= fecha_nacimiento.getFullYear()) && ((hoy.getMonth() < fecha_nacimiento.getMonth()) || ((hoy.getMonth() == fecha_nacimiento.getMonth()) && (hoy.getDate() < fecha_nacimiento.getDate()) ) ))  {
				errors[errors++]
				$('fecha_nacimientoYear').up('li').addClassName("error_formulario").insert('<span>La fecha de nacimiento es posterior a hoy</span>');
			}	
		}
		*/

		var validacion = document.getElementById("validacion");
		if(validacion!=null){
			if(validacion.value === '') {
				errors[errors++]
				$('validacion').up('li').addClassName("error_formulario").insert('<span>La validaci&oacute;n no coincide con la imagen</span>');
			}
		}
		
		/*
		var terminos = document.getElementById("UsuarioTerminos");
		if(terminos!=null){
			if(!terminos.checked) {
				errors[errors++]
				$('UsuarioTerminos').up('li').addClassName("error_formulario").insert('<span>No se han aceptado los t&eacute;rminos y condiciones de Kr&eacute;alo</span>');
			}
		}*/
		if (errors != 0) {
			$('boton').up('div').addClassName("error_formulario").insert('<span>Hay errores en el formulario</span>');		
			return false;
		}
		
	}
}
function validarNIF(texto){

	var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
	
	longitud=texto.length;
	
	var letra=texto.substring(longitud-1);
	var dni=new Number(texto.substring(0,longitud-1));
	
	var numero = dni%23;
	
	if(letra!=letras.substring(numero,numero+1))
		return false;
	else
		return true;
}

function validarCIF(texto){
        
        var pares = 0;
        var impares = 0;
        var suma;
        var ultima;
        var unumero;
        var uletra = new Array("J", "A", "B", "C", "D", "E", "F", "G", "H", "I");
        var xxx;
        
        texto = texto.toUpperCase();
        
        var regular = new RegExp(/^[ABCDEFGHKLMNPQS]\d\d\d\d\d\d\d[0-9,A-J]$/g);
         if (!regular.exec(texto)) return false;
             
         ultima = texto.substr(8,1);

         for (var cont = 1 ; cont < 7 ; cont ++){
             xxx = (2 * parseInt(texto.substr(cont++,1))).toString() + "0";
             impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));
             pares += parseInt(texto.substr(cont,1));
         }
         xxx = (2 * parseInt(texto.substr(cont,1))).toString() + "0";
         impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));
         
         suma = (pares + impares).toString();
         unumero = parseInt(suma.substr(suma.length - 1, 1));
         unumero = (10 - unumero).toString();
         if(unumero == 10) unumero = 0;
         
         if ((ultima == unumero) || (ultima == uletra[unumero]))
             return true;
         else
             return false;

} 

document.observe('dom:loaded',function(){
	validator();
});

