//**---------------------------------------------------------------------------
//** - min: numero MINIMO de posiciones enteras
//** - max: numero MAXIMO de posiciones enteras
//** - decimal: numero MAXIMO de posiciones decimales
//** La longitud máxima del campo la sabe por la propiedad 'maxLength' del
//** campo
//**---------------------------------------------------------------------------
function esNumero (campo, min, max, decimal)
{
	if (decimal>0)
  	{
  		if (campo.value.indexOf(',') != -1) return false;
    	var re = new RegExp("^([0-9]{"+ min +","+ max +"})(\\.[0-9]{0,"+ decimal +"})?$");
  	}
  	else
  	{
    	var re = new RegExp("^([0-9]{"+ min +","+ max +"})$");
    }

  	return re.test(campo.value);
}

//**---------------------------------------------------------------------------
function numero (campo, descripcion, min, max, decimal)
{
	if (esNumero(campo, min, max, decimal))
	{
    	return true;
    }
  	else
  	{
    	var m = "El contenido del campo '" + descripcion + "' no es valido. "+"Por favor, introduzca un n\372mero";

    	if (decimal == 0) m += " entero";
    	if (min == max) m += ", de " + max + " d\355gitos";
    	else if (min == 0 || min == 1) m += ", de menos de " + max + " d\355gitos";
    	else if (min > 1) m += ", de " + min + " a " + max + " d\355gitos";
    	
    	m += ", sin separador de miles";
    	if (decimal > 0) m += " y con " + decimal + " decimales como m\341ximo (use como separador de decimales el punto)";

    	alert(m);

    	campo.focus();
    	return false;
  	}
}

//**---------------------------------------------------------------------------
//**- minEnt: numero MINIMO de posiciones enteras
//**- maxEnt: numero MAXIMO de posiciones enteras
//**- maxDec: numero MAXIMO de posiciones decimales
//**- minVal: valor mínimo
//**- maxVal: valor máximo (o null si el máximo lo define el tamaño del campo)

function vRangoNum(campo,desc,minEnt,maxEnt,maxDec,minVal,maxVal)
{
	if(!numero(campo,desc,minEnt,maxEnt,maxDec)) return false;

  	var num=parseFloat(campo.value,10);

  	if (maxVal!=null)
  	{
    	if (num<minVal || num>maxVal)
      	{
        	alert("El valor del campo "+desc+" es incorrecto. Introduzca un n\372mero entre "+minVal+" y "+maxVal);
        	campo.focus();
        	return false;
      	}
  	}
  	else
  	{
    	if (num < minVal)
      	{
        	alert("El valor del campo "+ desc +" es incorrecto. El valor m\355nimo es "+ minVal);
        	campo.focus();
        	return false;
      	}
  	}
  	
  	return true;
}
