var esAlfa = "aáàäâbcçdeéèëêfghiíìïîjklmnñoóòöôpqrstuúùüûvwxyzAÁÀÄÂBCÇDEÉÈËÊFGHIÍÌÏÎJKLMNÑOÓÒÖÔPQRSTUÚÙÜÛVWXYZ'`´./ºª # |,-()_:";
var esLetra = "abcçdefghijklmnñopqrstuvwxyzABCÇDEFGHIJKLMNÑOPQRSTUVWXYZ.-";
var esNum = "+0123456789()";
var esAlfaNum = esNum + esLetra;
var esAlfaNumCon = esNum + esAlfa;
	

//Funciones Numericas
function toNum(cadena) 
{
  var caracter;
  var cadena2= new String();
  
  cadena=String(cadena);
  for (var i=0; i < cadena.length; i++)
  {
    caracter=cadena.substring(i,i+1);
    if (esNum.indexOf(caracter,0)!=-1)   
    cadena2=cadena2+caracter;
  }
  return(cadena2) 
}
   
function toEntero(cadena) 
{
 var entero="";
 var j=0;
 
 cadena=toNum(cadena);
 while (cadena.substring(j,j+1)==0)
   j++; 

 for (var i=j; i < cadena.length; i++) 
 {
   entero=entero+cadena.substring(i,i+1);
 }
 entero=parseInt(entero);
 return(entero); 
}   

function estaEnIntervalo(valor, minimo, maximo) 
{
  if ((toEntero(valor)>=toEntero(minimo)) && (toEntero(valor)<=toEntero(maximo)))
    return(true)
  else
    return(false);
}

//Funciones de Cadena
function posicion(Cadena, Caracter) 
{
  return (Cadena.indexOf(Caracter,0));
}

function ultimaPosicion(Cadena, Caracter) 
{
  return (Cadena.lastIndexOf(Caracter));
}

function obtieneSubcadena1(Cadena, Caracter) 
{
  var i=ultimaPosicion(Cadena, Caracter);
  return(Cadena.substring(0,i));
}

function obtieneSubcadena2(Cadena, Caracter) 
{
  var i=ultimaPosicion(Cadena, Caracter);
  var j=Cadena.length;
  return(Cadena.substring(i+1,j));
}

function trim(cadena)
{
  var cadena2 = String("");
  cadena=String(cadena);
  for (var i=0; i < cadena.length; i++)
  {
    caracter=cadena.substring(i,i+1);
	cadena2=cadena2 + caracter;
	if (caracter == ' ')
	 {
	  caracter=cadena.substring(i,i+1);
	  while (caracter == ' ') 
	   {
	    i++;
		caracter=cadena.substring(i,i+1);
	   }
	  i--;
     }
   }
  return cadena2;
}

function vacia(cadena) 
{
  cadena=trim(cadena);
  if (cadena=='') return(true);
  for (var i=0; i < cadena.length; i++) 
  { 
    if (cadena.substring(i,i+1) != " ") 
      return(false);
  }
  return(true);
} 

function esSubSet(cadena, lcaracteres)
{
  var caracter;
  var contador=0;
  
  cadena=trim(cadena);
  for (var i=0; i < cadena.length; i++) 
  { 
    caracter=cadena.substring(i,i+1);
    if (lcaracteres.indexOf(caracter,0)!=-1) 
      contador++;
  }
  return(contador==cadena.length)
}   

function esAlfabeticaConAcentos(cadena) 
{
  return(esSubSet(cadena, esAlfa))
}   

function esAlfabetica(cadena) 
{
  return(esSubSet(cadena, esLetra))
}   

function esNumerica(cadena) 
{
  return(esSubSet(cadena, esNum))
}   


function esAlfaNumerica(cadena) 
{
  return(esSubSet(cadena, esAlfaNum));
}   

function esAlfaNumericaConAcentos(cadena)
{
	return(esSubSet(cadena, esAlfaNumCon));
}

function ocurrencias(cadena, caracter)
{
  var contador=0;

  for (var i=0; i < cadena.length; i++) 
  { 
    if (caracter==cadena.substring(i,i+1)) 
      contador++;
  }
  return(contador);
}


//Funciones email

function esCorrectoUsuario(U)
{
 var j = ocurrencias(U,".");
 var Sub1 = new String();
 var Sub2 = new String();

 if ( (vacia(U)) || (!(estaEnIntervalo(U.length,2,30))) )
   return(false);
 else  
 {
   Sub1=U;
   for (var i=0; i <= j; i++) 
   {
     Sub2=obtieneSubcadena2(Sub1,".");
     if ( !(esAlfaNumerica(Sub2)) || (vacia(Sub2)) )
      {
	   return(false);
       }
     else 
       Sub1=obtieneSubcadena1(Sub1,".");
   }
   return(true);
 }
}



function esCorrectoNombreDominio(N)
{

 var j = ocurrencias(N,".");
 var Sub1 = new String();
 var Sub2 = new String();

 if ( (vacia(N)) || (!(estaEnIntervalo(N.length,2,30))) )
   return(false);
 else  
 {
   Sub1=N;
   for (var i=0; i <= j; i++) 
   {
     Sub2=obtieneSubcadena2(Sub1,".");
     if ( !(esAlfaNumerica(Sub2)) || (Sub2.length<2) || (vacia(Sub2)) )
       return(false);
     else 
       Sub1=obtieneSubcadena1(Sub1,".");
   }
   return(true);
 }
}


function esCorrectaExtension(E) 
{
  if ( !(esAlfabetica(E)) || ((vacia(E))) || (!(estaEnIntervalo(E.length,2,3))) )

    return(false);
  else
    return(true);
}



function emailOK(element) 
{
  var Usuario = new String();
  var Dominio = new String();
  var NombreDominio = new String();
  var Extension = new String();
  var UsuarioOK;
  var NombreDominioOK;
  var ExtensionOK;

  if ( (posicion(element,"@")==-1) || (posicion(element,".")==-1) || (ocurrencias(element,"@")>1)) 
  {
    return(false);
  }
  else 
  {
    Usuario=obtieneSubcadena1(element,"@");
    Dominio=obtieneSubcadena2(element,"@");
    NombreDominio=obtieneSubcadena1(Dominio,".");
    Extension=obtieneSubcadena2(Dominio,".");
    UsuarioOK=esCorrectoUsuario(Usuario); 
    NombreDominioOK=esCorrectoNombreDominio(NombreDominio);
    ExtensionOK=esCorrectaExtension(Extension); 

    if ( (!UsuarioOK) || (!NombreDominioOK) || (!ExtensionOK) ) 
	{
      return(false);
    }
    else 
	{
      return(true)
    }
  }
}



// Tratamiento de Cadenas
function comillaSimpleToComillaDoble(variable) 
{
  ComaSimple = /\'/;
  var salida = new Array();
  salida = variable.value;
  //Compruebo si existe ese match
  while(ComaSimple.test(salida))
  {
    salida = salida.replace(ComaSimple,"\"");
  }
  return(salida);
}

function formatear(cad,numero)
{
	//devuelve la cadena(cad) bien formateada
	//el numero es hasta donde quiero añadir o a la izquierda

	var resultado="";
	var aux="";
	var caracterescadena=cad.length;
	for (i=0; i<numero; i++)
	{
		aux=aux+"0";
	}
	resultado=aux+cad;
	return resultado;
}

// Swap Html txt

function insertBR(variable,carro,fin) 
{
	 //Sustituye el caracter de retorno carro y fin de linea por los parametros carro y fin 
	 retornoCarro = /\r/;
	 finlinea = /\n/
	 var salida = new Array();
	 salida = variable.value;
	//Compruebo si existe ese match

	while(retornoCarro.test(salida))
	{
		salida = salida.replace(retornoCarro,carro);
		salida = salida.replace(finlinea,fin);
	}
	variable.value = salida;
}


function substQuotes(variable) 
{
	 //Sustituye el caracter de dobles comillas por el caracter nulo
	 dCom = /"/
	 sCom = "";
	 var salida = new Array();
	 salida = variable.value;

	//Compruebo si existe ese match

	while(dCom.test(salida))
	{
		salida = salida.replace(dCom,sCom);
	}
	variable.value = salida;
}


function swapAcentos(variable,que) 
{

	REAcentos=new Array();
    arrAcutes=new Array();
	arrAcentos=new Array();
    REAcutes=new Array();

	REAcentos[0]=/á/
    REAcentos[1]=/é/
	REAcentos[2]=/í/
	REAcentos[3]=/ó/
	REAcentos[4]=/ú/
	REAcentos[5]=/Á/
	REAcentos[6]=/É/
	REAcentos[7]=/Í/
	REAcentos[8]=/Ó/
	REAcentos[9]=/Ú/
	REAcentos[10]=/ñ/
	REAcentos[11]=/Ñ/
	REAcentos[12]=/ä/
	REAcentos[13]=/ë/
	REAcentos[14]=/ï/
	REAcentos[15]=/ö/
	REAcentos[16]=/ü/
	REAcentos[17]=/Ä/
	REAcentos[18]=/Ë/
	REAcentos[19]=/Ï/
	REAcentos[20]=/Ö/
	REAcentos[21]=/Ü/

	arrAcutes[0]='&aacute;';
	arrAcutes[1]='&eacute;';
	arrAcutes[2]='&iacute;';
	arrAcutes[3]='&oacute;';
	arrAcutes[4]='&uacute;';
	arrAcutes[5]='&Aacute;';
	arrAcutes[6]='&Eacute;';
	arrAcutes[7]='&Iacute;';
	arrAcutes[8]='&Oacute;';
	arrAcutes[9]='&Uacute;';
	arrAcutes[10]='&ntilde;';
	arrAcutes[11]='&Ntilde;';
	arrAcutes[12]='&auml;';
	arrAcutes[13]='&euml;';
	arrAcutes[14]='&iuml;';
	arrAcutes[15]='&ouml;';
	arrAcutes[16]='&uuml;';
	arrAcutes[17]='&Auml;';
	arrAcutes[18]='&Euml;';
	arrAcutes[19]='&Iuml;';
	arrAcutes[20]='&Ouml;';
	arrAcutes[21]='&Uuml;';

	arrAcentos[0]='á';
	arrAcentos[1]='é';
	arrAcentos[2]='í';
	arrAcentos[3]='ó';
	arrAcentos[4]='ú';
	arrAcentos[5]='Á';
	arrAcentos[6]='É';
	arrAcentos[7]='Í';
	arrAcentos[8]='Ó';
	arrAcentos[9]='Ú';
	arrAcentos[10]='ñ';
	arrAcentos[11]='Ñ';
	arrAcentos[12]='ä';
	arrAcentos[13]='ë';
	arrAcentos[14]='ï';
	arrAcentos[15]='ö';
	arrAcentos[16]='ü';
	arrAcentos[17]='Ä';
	arrAcentos[18]='Ë';
	arrAcentos[19]='Ï';
	arrAcentos[20]='Ö';
	arrAcentos[21]='Ü';
	

	REAcutes[0]=/&aacute;/;
	REAcutes[1]=/&eacute;/;
	REAcutes[2]=/&iacute;/;
	REAcutes[3]=/&oacute;/;
	REAcutes[4]=/&uacute;/;
	REAcutes[5]=/&Aacute;/;
	REAcutes[6]=/&Eacute;/;
	REAcutes[7]=/&Iacute;/;
	REAcutes[8]=/&Oacute;/;
	REAcutes[9]=/&Uacute;/;
	REAcutes[10]=/&ntilde;/;
	REAcutes[11]=/&Ntilde;/;
	REAcutes[12]=/&auml;/;
	REAcutes[13]=/&euml;/;
	REAcutes[14]=/&iuml;/;
	REAcutes[15]=/&ouml;/;
	REAcutes[16]=/&uuml;/;
	REAcutes[17]=/&Auml;/;
	REAcutes[18]=/&Euml;/;
	REAcutes[19]=/&Iuml;/;
	REAcutes[20]=/&Ouml;/;
	REAcutes[21]=/&Uuml;/;



	 //Sustituye el caracter de acento por "&"+ caracter + "acute;"

	 var salida = new Array();

	 salida = variable.value;
	//Compruebo si existe ese match
	
	//Sustituye el caracter de acento por "&"+ caracter + "acute;"
	if (que=="acutes")
	{
		for (var i=0;i<arrAcentos.length;i++)
		{
			while(REAcentos[i].test(salida))
			 {
				salida = salida.replace(REAcentos[i],arrAcutes[i]);
			}
		}
    }
	//Sustituye  "&"+ caracter + "acute;"  por el caracter de acento
	else
	{
		for (var i=0;i<arrAcutes.length;i++)
		{
		  
		  while(REAcutes[i].test(salida))
		  {
				salida = salida.replace(REAcutes[i],arrAcentos[i]);
		  }
		}
	}
	variable.value = salida;
}


function insertCR(variable) {

	 //Introduce los caracteres \r y \n cuando

	 // se encuentra el tag <br> que es salto de linea

	 saltoHtml = /<br>/

	 //es alt-126

	 // es alt-125

	 var salida = "";

	 //alert(variable);
	 salida=variable;
     
		j=0;

	while(saltoHtml.test(salida))
	{
		salida = salida.replace(saltoHtml,"\r\n");
	}
	return salida;
}


// Particulares
function identificador(cad)
{
 var d1=obtieneSubcadena2(cad,'-');
 var dominio=obtieneSubcadena1(d1,'.');
 return(dominio)
}

function tipoOK(cad,tipo)
{
var extension=obtieneSubcadena2(cad,'.');
extension=extension.toLowerCase();
tipo=tipo.toLowerCase();
return (tipo==extension);
}
