//Valida una fecha
	//sFecha Fecha a validar 
function bValidar_Fecha(sFecha) {
	var err=0

	if (sFecha.length != 10) err=1
	
	d = sFecha.substring(0, 2)// day
	c = sFecha.substring(2, 3)// '/'
	b = sFecha.substring(3, 5)// month
	e = sFecha.substring(5, 6)// '/'
	f = sFecha.substring(6,10)// year

	if (!bValidar_Numero(1,d) || !bValidar_Numero(1,b) || !bValidar_Numero(1,f))
	{err=1}
	if (b<1 || b>12) err = 1
	if (c != '/') err = 1;
	if (d<1 || d>31) err = 1
	if (e != '/') err = 1
	if (f<1900 || f>3000) err = 1
	if (b==4 || b==6 || b==9 || b==11)
	{
		if (d==31) err=1
	}
	if (b==2)
	{
		var g=parseInt(f/4)
		if (isNaN(g))
		{
			err=1
		}
		if (d>29) err=1
		if (d==29 && ((f/4)!=parseInt(f/4))) err=1
	}
	
	if (err==1)
	{
		return false;
	}
	else 
	{
		return true;	
	}
}

//Valida un numero se llama con dos posibles formatos:
	//Numeros naturales iTipo=1
	//iNumero : Numero a validar
	//Ejemplo : bValidar_Numero(1,"1234")
	//Numeros decimales iTipo=2 
	//iNumero : Numero a validar
	//iParteentera: numero de enteros a la izq de la coma
	//iPartedecimal: numero de enteros a la derecha de la coma (numero de decimales)
	//Ejemplo : bValidar_Numero(2,"12.34",2,2)
function bValidar_Numero(iTipo, iNumero,iParteentera,iPartedecimal) {
	var numero1=new String(iNumero);
	
	if (iTipo == 1 || iTipo==2)		
	{
		if (iTipo == 1)
		{
			if (arguments.length<2)
				alert("Faltan parametros");
			else
				return bValidar_Natural(numero1);		
		}
		if (iTipo == 2)
		{				
			return bValidar_Decimal(numero1,iParteentera,iPartedecimal);
		}
	}
	else
	{
		alert("No es un iTipo numerico valido");
	}	
}

//Valida un numero entero(Sin decimales)
function bValidar_Natural(iNumero) {
	iNumero=sTrim(iNumero);	
	for (i=0;i<iNumero.length;i++)
	{
		valc=iNumero.charAt([i]);
		if ((valc > "9") || (valc < "0")) 
		{	
			return false;
		}
  	}	
  return true;
}

//Valida un numero decimal devuelve true si el numero es correcto y false en caso contrario
function bValidar_Decimal(rNumero,iParteentera,iPartedecimal) {		
	if(rNumero.length==0) return true;
	if (arguments.length<3 )
	{
		alert("Numero incorrecto de parametros1");
		return;
	}
	var err=0;
	var Card=new String(); 
	var Dec = new String();
	if (rNumero.indexOf(".",0) =="-1")	
	{		
		return bValidar_Natural(rNumero);
	}
	else
	{
		var Card= new String(rNumero.substring(0,rNumero.indexOf(".")));		
		var Dec=new String (rNumero.substring(rNumero.indexOf(".")+1));		
		if (Card.length>iParteentera ||Dec.length>iPartedecimal)		
		{		
			err=1;
		}
		if (!bValidar_Natural(Card))
		{			
			err=1;
		}
		if (!bValidar_Natural(Dec))
		{			
			err=1;
		}
		if (err==1)
			return false;
		else
		{
			return true;
		}
	}
}		
	
//Valida una cadena para que no sea nula (Ni espacios, ni intros..)
function bValidar_Cadena(sCadena) {
	for (i=0;i<sCadena.length;i++)
	{
		carac=sCadena.charAt([i]);
		if (carac != unescape("%20" ) && carac!= unescape("%0A") && carac!= unescape("%0D")&& carac!= unescape("%09")) 
		{	
			return true;
		}
	} 
	return false;
}

//Otra manera de validar una cadena. (Ningún carácter extraño, ver 'filteredValues'.)
function bValidar_Cadena_2(sCadena) {
	filteredValues ="¥µÂÃÄÅÆÇÊËÎÏÐÔÕÖØÛÜÝßâãäåæçêëîïðôõöøûüýÿ^Ç\/\"!$%()=?¿ªº[],}{¡+@#-;:'";
	var i;
	var returnString = "";
	var funcion = true;
	for (i = 0; i < sCadena.length; i++)
	{
		var c = sCadena.charAt(i);
		if (filteredValues.indexOf(c) != -1)
		{
			funcion = false;
			alert("Ha introducido un carácter no permitido : "+c);
			returnString += c;
		}
		else
		{
			funcion =true;
		}
	}
	return funcion;
}

//Visualiza un mensaje y posiciona el foco en el control pasado como parametro
	//element Elemnto del formulario donde se posicionara el foco
	//smessage Mensaje a visualizar
function vAlerta(element, smessage) {
	alert(smessage);
	element.focus();
}

//Quita espacios por la izquierda
	//sCadena:Cadena de la que se quitaran espacios
function sLTrim(sCadena) {
	var whitespace = new String(" \t\n\r");
	var s = new String(sCadena);
	if (whitespace.indexOf(s.charAt(0)) != -1) 
	{
		var j=0, i = s.length;
		while (j <= i && whitespace.indexOf(s.charAt(j)) != -1)
		{
			s = s.substring(j, i);
			j++;
		}
	}
	return s;
}


//Quita espacios por la derecha
	//sCadena:Cadena de la que se quitaran espacios
function sRTrim(sCadena) {
	var whitespace = new String(" \t\n\r");
	var s = new String(sCadena);
	if (whitespace.indexOf(s.charAt(s.length-1)) != -1) 
	{
		var i = s.length - 1;       
		while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
		{
			i--;
			s = s.substring(0, i+1);
		}
	}
	return s;
}


//Quita espacios
	//sCadena:Cadena de la que se quitaran espacios
function sTrim(sCadena) {
	return sRTrim(sLTrim(sCadena));	
}
 
//Valida un correo siguiendo la norma ISO 
	//sCadena:Direccion de mail a validar
function bValidar_Correo(sCadena) {
	sCadena=sTrim(sCadena)		
	if (sCadena.indexOf(".") == -1 //Comprobamos que tiene puntos
	|| sCadena.indexOf("@") == -1 //Comprobamos si tiene arroba
	|| sCadena.indexOf("@") == 0 ||  sCadena.indexOf(".") == 0 //Comprobamos que no están en la posición inicial
	|| sCadena.indexOf("@") == sCadena.length - 1 //Comprobamos que la @ no ocupa la última posicion
	|| sCadena.indexOf(".", sCadena.length - 1) != - 1//Comprobamos que el . no ocupa la última posicion
	|| sCadena.indexOf(".", sCadena.indexOf("@") + 2) == -1 //Comprobamos que hay una arroba detras del punto
	|| sCadena.indexOf(".", sCadena.indexOf("@") + 1) == sCadena.indexOf("@") + 1 //El punto no puede ser el siguiente cáracter que la arroba
	|| sCadena.indexOf(".", sCadena.indexOf("@") - 1) == sCadena.indexOf("@") - 1 //El punto no puede ser el anterior cáracter que la arroba
	|| sCadena.indexOf("@", sCadena.indexOf("@") + 1) != -1 //Solo puede haber una arroba
	|| sCadena.indexOf(" ", sCadena.indexOf("@") + 1) == sCadena.indexOf("@") + 1 //No puede haber un espacio en blanco después de la arroba
	|| sCadena.indexOf(" ", sCadena.indexOf("@") - 1) == sCadena.indexOf("@") - 1 //No puede haber un espacio en blanco antes de la arroba
	|| sCadena.indexOf(" ", sCadena.indexOf(".") + 1) == sCadena.indexOf(".") + 1 //No puede haber un espacio en blanco después del punto
	|| sCadena.indexOf(" ", sCadena.indexOf(".") + 1) == sCadena.indexOf(".") + 1 //No puede haber un espacio en blanco después del punto
	|| sCadena.indexOf("..") != - 1) //No puede haber dos puntos seguidos
	{
		return false;
	}
	else
	{
	for (i=0; i < sCadena.length - 1; i++) //Comprobamos que no hay dos blancos seguidos
		{
		if (sCadena.charAt([i]) == unescape("%20") && sCadena.charAt([i]) == sCadena.charAt([i + 1]))
			{
				return false;
			}
		}
	return true;
	}
}
function esInteger(e) {
var charCode;
if (navigator.appName == "Netscape") // Veo si es Netscape o Explorer (mas adelante lo explicamos)
	var charCode = e.which; // leo la tecla que ingreso
else
	var charCode = e.keyCode; // leo la tecla que ingreso
	
var status = charCode;

if (charCode > 31 && (charCode < 48 || charCode > 57)) { // Chequeamos que sea un numero comparandolo con los valores ASCII
		alert("Debe introducir números !!");
		return false;
}				
return true;
}		


function error_campo(nom_campo, val_campo, lon_campo, cad_error, in_ob){
	var lon_cad_error = cad_error.length;
	var lon_real = val_campo.length;
	var i = 0;
	var char_campo = "";
	if (lon_real > 0){
		if (lon_real > lon_campo) {
			alert("Ha introducido más caracteres de los permitidos. La longitud máxima para el campo '" + nom_campo + "' es de " + lon_campo + " caracteres.");				
			//return false;
		}
		for (i = 0; i <  lon_real; i++) {
			var char_campo =  val_campo.charAt(i);
				if (cad_error.indexOf(char_campo) != -1) {
					alert("Ha introducido, en el campo '" + nom_campo + "', un carácter no permitido: [" + char_campo + "]");
					//returnString += d;
					//return false;
				}
		}		
	} else if (in_ob == "S") {
			alert("Debe de introducir un valor. Campo obligatorio: " + nom_campo);				
			//return false;	
	}
	//return true;
}
		
		
		
