var FT_SOLOLETRAS = 1;
var FT_SOLONUMEROS = 2;
var FT_NUMEROSLETRAS = 3;

var OPCIONAL = 1;
var REQUERIDO = 2;

var numeros = '0123456789';
var letras = 'ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚ'

var error = 'Ok';

function validarParametro(parametro, formato, tipo, min, max, adi, men, req){

  var miParametro = parametro.toUpperCase();
  var miAdi = adi.toUpperCase();
  var miMen = men.toUpperCase();

  var longitud = miParametro.length;
  var longitudAdi = adi.length;
  var longitudMen = men.length;
  var longitudReq = req.length;

  if(tipo == OPCIONAL & longitud < 1)
    return true;
  
  if(longitud < min || longitud > max){
    error =  'Longitud Incorrecta' + ' (' + min + ' - ' + max + ')';
    return false;
  }
  
  if(miParametro.indexOf("'") != -1 || miParametro.indexOf("=") != -1){
    error =  'Caracteres no permitidos';
    return false;
  }

  var referencia;
  
  if(formato == FT_SOLONUMEROS)
  {
    referencia = numeros;
    error = 'Unicamente números';
  }
  else if(formato == FT_SOLOLETRAS)
  {
    referencia = letras;
    error = 'Unicamente letras';
    if(longitudAdi > 0)
      error = error + ' + ( ' + miAdi + ' )';
  }
  else if(formato == FT_NUMEROSLETRAS){
    referencia = numeros + letras;
    error = 'Unicamente números + letras';
  }

  if(longitudAdi > 0){
      referencia = referencia + miAdi;
      error = error + ' + ( ' + miAdi + ' )';
  }
    
  var c;
  for(var i = 0; i < longitud ; i++){
    c = miParametro.charAt(i);
    if(referencia.indexOf(c) == -1){
      return false;
    }
    else if(longitudMen > 0){
      if(men.indexOf(c) != -1){
        error = error + ' - ( ' + miMen + ' )';
        return false;
      }
    }
  }

  for(var i = 0; i < longitudReq ; i++){
    c = req.charAt(i);
    if(miParametro.indexOf(c) == -1){
      error = 'Se requiere ' + c;
      return false;
    }
  }
  return true;
}