function QuitarBlancos(Cadena) {

   var iIni;
   var iLen;
   var iPos=0;

   // Quitar los blancos iniciales
   while ((iPos <= Cadena.length-1) && (Cadena.charAt(iPos) == ' '))
      iPos++;

   // Si la posición inicial es menor que la longitud (hay algún carácter no blanco)
   if (iPos <= Cadena.length - 1)   {
      // Tenemos la posición inicial
      iIni = iPos;
      // Quitar los blancos finales
      iPos = Cadena.length - 1;
      while ((iPos > iIni) && (Cadena.charAt(iPos) == ' ')){
         iPos--;
      }
      return Cadena.substring(iIni, iPos + 1);
   }
   else
      // Todos los caracteres son blancos
      return "";

};


function checkFiscalID(field) {

   var numero;
   var result;
   var no_zeros;
   var i;

   numero = '0123456789';
   result = 0;
  // Se descartan los ceros de la izquierda
  for( i = 0; i < field.value.length; i++)
    if( field.value.charAt(i) != "0")
     break;
  no_zeros = field.value.substring(i);

  if( numero.indexOf( no_zeros.charAt(0)) != -1) 
  {
      // Entra aquí cuando el primer caracter es un número
      if (NIFLetter(no_zeros)) result=1;
  } 
  else {
  	if (no_zeros.charAt(0) == "X"){
		no_zeros2 = no_zeros.substring(1);
	 	if (NIFLetter(no_zeros2)) result=3;
     }
	else  if (ValidateCIF( no_zeros)) result=2;
  };

  return(result);
};

function NIFLetter(nif1)
{
   var cadena  = "";
   var letras='TRWAGMYFPDXBNJZSQVHLCKET'
   var NumDNI=0;
   var Indice=0;
   var divis = 0
   
   nif1 = nif1.toUpperCase();
   
   if( nif1.charAt(0) != 'X')	// Españoles
      cadena += nif1
   else 			// Extranjeros
      cadena += nif1.substring(1,11);
   
   
   correcto = cadena.charAt(cadena.length-1);
   correcto = correcto.toUpperCase();
   
   NumDNI = parseInt(cadena,10);
   
   divis = isNaN(parseInt(NumDNI/23,10))?0:parseInt(NumDNI/23,10);

   Indice = NumDNI - (23 * divis);
   
   if( (Indice >= 0) && (Indice < 24) ) {
      if( letras.charAt(Indice) == correcto) 
         return true
      else
         return false
   } 
   else
      return false;
};


function ValidateCIF(cif1)
{
   var Retorno = true;
   var Entidad;
   var StEntidad;
   var Provincia;
   var NumeroSec;
   var CaracterControl, CaracterControlEntrada;
   var TablaControl = 'JABCDEFGHI';
   var otras = 'ABCDEFGHSPQX';
   var numero = '0123456789';
   var Suma = 0;
   var Suma1 = 0;
   var Suma2 = 0;
   var nAux = 0;
   var tmp = '';
   tmp = "" + cif1;
   Entidad = tmp.charAt(0);
   Entidad = Entidad.toUpperCase();
   if( otras.indexOf( Entidad) == -1) {
      return false;
   }
   Provincia = tmp.substring(1,3);
   NumeroSec = tmp.substring(3,8);
   NumeroSec2 = tmp.substring(1,8);
   CaracterControlEntrada = tmp.substring( 8);
   CaracterControlEntrada = CaracterControlEntrada.toUpperCase();
   if( (Entidad >= "A") && (Entidad <= "H") ) {
         StEntidad = "JURIDICA";
   }
   else if( (Entidad == "S") || (Entidad == "Q") ) {
      StEntidad="ORGANISMO";
   }
   else if( Entidad == "X") //  Extranjero residente
   {
      return NIFLetter( tmp);
   }
   if( Retorno != false) {           // Entidad correcta
      for (var i = 0; i < NumeroSec2.length; i++) {
         if( numero.indexOf( NumeroSec2.charAt( i)) == -1) {
            return false;
         }
      }
      if( parseInt( NumeroSec, 10) == 0)
      {
         Retorno = false;
      }
      else if( (StEntidad == "JURIDICA") || (StEntidad == "ORGANISMO"))
      {
         Suma2 = 0;
         Suma1 = parseInt( NumeroSec2.charAt( 1), 10) + parseInt( NumeroSec2.charAt( 3), 10) + parseInt( NumeroSec2.charAt( 5), 10 );
         for( var i = 0; i < 7; i += 2) {
            nAux = parseInt( NumeroSec2.charAt( i), 10) * 2;
            if (nAux > 9) {
               Suma2 = Suma2 + parseInt( nAux / 10, 10) + nAux % 10;
            } else {
               Suma2 = Suma2 + nAux;
            }
         }
         Suma = Suma1 + Suma2;
         i = 10 - Suma % 10;
         if( i > 9) { 
            i = 0;
         };
         if( StEntidad == "JURIDICA") {
            CaracterControl = i;
         } else {
            CaracterControl = TablaControl.charAt( i);
         }
         if (CaracterControl != CaracterControlEntrada) {
            	CaracterControl = TablaControl.charAt( i);
         	if (CaracterControl != CaracterControlEntrada) 
  	     	 	  Retorno = false;                         
         };
      }
   }

   return Retorno;
};

// Checks is a string is numeric.
function isNumeric(cadena) {

   exp= new Array();
   exp[0]= /[\D]/	
   return !(exp[0].test(cadena));		//false si no coincide con el formato

};

function sReemplazaComillas(cadena)
{
  var iPos;
  var sal = "";
  var car;

  for (iPos = 0; iPos <= cadena.length-1; iPos++)
   {
      car = cadena.charAt(iPos);
      if (car == "'")
	sal += car.replace("'","`");
      else
	sal += car;
   }
   return sal;
};


