//Funciones para la comprobación de formularios...
function generar_mensaje_form(v_input, v_texto, v_tipo, v_tiempo)
{
	if(v_input)
	{
		var texto=v_texto ? v_texto : null;
		var tipo=v_tipo ? v_tipo : null;
		var tiempo=v_tiempo ? v_tiempo : 10000;

		if(DOM_siguiente(v_input) !='HTMLSpanElement')
		{
			var span_mensaje=montar_elemento('span', null, null, null);
			v_input.parentNode.insertBefore(span_mensaje, DOM_siguiente(v_input));
		}
		else
		{
			var span_mensaje=DOM_siguiente(v_input);
		}

		var txt_original=span_mensaje.innerHTML==texto ? null : span_mensaje.innerHTML;
		var class_original=span_mensaje.className==tipo ? 'txt_titulo_form' : span_mensaje.className;
		
		span_mensaje.className=tipo;
		span_mensaje.innerHTML=texto;

		setTimeout
		(
			function()
			{	
				span_mensaje.className=class_original;
				span_mensaje.innerHTML=txt_original;
			},
			tiempo
		)
	}
}	

function validar_radio(radio)
{	
	var i=0;	
	var resultado = false;		
	for (i; (!resultado && i < radio.length); i++) 				
        if (radio[i].checked) 
			resultado=true;		
			
	return resultado;
}
function validar_NIF(nif) 
{
	//Este valida también NIE.
	if (!nif) return false;   
	var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';   
	if (nif.length != 9) return false;   
	else 
	{
		letra = nif.substr(8, 1); letra = letra.toUpperCase();   
		dni = nif.substr(0, 8);   
		dni = dni.toUpperCase(); dni = dni.replace('X','0');  
		dni -= parseInt(dni/23) * 23;  
		if (letras.charAt(dni) != letra) return false;  
		else return true;  
	} 
}

function validar_CIF(cif)
{
	var resultado = false;
	var temp = cif.toUpperCase(); // pasar a mayúsculas

	temp=temp.replace(/[ ,.-]/g,'');	//Eliminar caracteres inutiles
	cif.value=temp;

	if (!/^[A-Za-z0-9]{8,9}$/.test(temp))  // Son 9 dígitos? 
	{
		resultado = false;
	}
	else if (!/^[ABCDEFGHKLMNPQS]/.test(temp)) // Es una letra de las admitidas ?
	{
		resultado = false;
	}
	else 
	{
		resultado = true;
	}

	return resultado;
}

function limitar_longitud(total, area)
{	
	if(area.value.length > total)
	{
		area.value=area.value.substring(0, total);
	}
}


function validar_telefono(valor)
{
	if (valor.length==9 && parseInt(valor)==valor) return true;
	else return false;	
}

function validar_email(valor)
{	
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(valor)) return (true)
	else return (false);
}

function validar_cp(valor)
{
	if (valor.length==5 && parseInt(valor)==valor) return true;
	else return false;	
}

function validar_fecha(recibida) //Para formado dia/mes/anio...
{  
	var Fecha= new String(recibida);
	var Ano= new String(Fecha.substring(Fecha.lastIndexOf("-")+1,Fecha.length));
	var Mes= new String(Fecha.substring(Fecha.indexOf("-")+1,Fecha.lastIndexOf("-")));
	var Dia= new String(Fecha.substring(0,Fecha.indexOf("-")));

	if (isNaN(Ano) || Ano.length<4 || parseFloat(Ano)<1900) 
	{
		return false;
	}

	if (isNaN(Mes) || parseFloat(Mes)<1 || parseFloat(Mes)>12) 
	{
		return false;
	}

	if (isNaN(Dia) || parseInt(Dia, 10)<1 || parseInt(Dia, 10)>31) 
	{
		return false;
	}

	if (Mes==4 || Mes==6 || Mes==9 || Mes==11 || Mes==2)
	{
		if (Mes==2 && Dia > 28 || Dia>30)
		{
			return false;
		}
	}

	return true;
}  

function solo_numericos(event, v_habilitar_decimal, v_convertir_coma_a_punto)
{
	var codigo=event.keyCode;
//	var codigo=event.which;  
	var input=event.target;

	//Meter números...
	if( (codigo >= 48 && codigo <= 57) || (codigo >= 96 && codigo <= 105))
	{
		event.returnValue=true;
	}
	//Punto...
	else if(v_habilitar_decimal && codigo==190)
	{
		event.returnValue=true;
	}
	//Coma como punto...
	else if(v_habilitar_decimal && v_convertir_coma_a_punto && codigo==188)
	{
//		event.keyCode=190;
		input.value+='.';		
		event.returnValue=false;
	}
	//Borrar
	else if(codigo==8)
	{
		event.returnValue=true;
	}
	//Enter o tab
	else if(codigo==13 || codigo==9)
	{
		input.blur();
		event.returnValue=true;
	}
	else
	{
		event.returnValue=false;
	}

	return event.returnValue;
}

function tab_input(v_input) //Con MAYUS+Espacio añades tabs...
{
	v_input.onkeydown=function(evento)
	{
		if(!evento) evento=window.event;
		if(evento.which==32 && evento.shiftKey)
		{
			v_input.value+="\t";
			return false;
		}
	}
}

