
var pf = "Por favor, ";
var messEMAILVAC = pf+"indique la dirección de E-MAIL. (Si no tiene deje el campo en blanco).";
var messEMAILINC = "La dirección de E-MAIL tiene un formato incorrecto.";
var esLetra = "aáàäâbcçdeéèëêfghiíìïîjklmnñoóòöôpqrstuúùüûvwxyzAÁÀÄÂBCÇDEÉÈËÊFGHIÍÌÏÎJKLMNÑOÓÒÖÔPQRSTUÚÙÜÛVWXYZ'`´./ºª # |,-()";
var esLetra2 = "abcçdefghijklmnñopqrstuvwxyzABCÇDEFGHIJKLMNÑOPQRSTUVWXYZ._";
var esLetraUnix = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ._0123456789";
var esNum = "0123456789" + esLetra2;
var ctrlEmail=false;

var letraInicio=/^([a-z]|[A-Z])/			
var letraFin=/([a-z]|[A-Z])$/			
								//numeros, espacios, + o -
function alerta(element, message)
{
	alert(message);
	element.focus();
}

function Posicion(Cadena, Caracter) 
{
  return (Cadena.indexOf(Caracter,0));
}

function UltimaPosicion(Cadena, Caracter) 
{
  return (Cadena.lastIndexOf(Caracter));
}

function SoloNumeros(Cadena) 
{
  var Numeros="0123456789";
  var Caracter;
  var Cadena2= new String();

  Cadena=String(Cadena);
  for (var i=0; i < Cadena.length; i++)
  {
    Caracter=Cadena.substring(i,i+1);
    if (Numeros.indexOf(Caracter,0)!=-1)   
      Cadena2=Cadena2+Caracter;
  }
  return(Cadena2) 
}   

function EstaVacia(Cadena) 
{
  if (Cadena=='') return(true);
  for (var i=0; i < Cadena.length; i++) 
  { 
    if (Cadena.substring(i,i+1) != " ") 
      return(false);
  }
  return(true);
} 

function LoEs(Cadena, Letras)
{
  var Caracter;
  var Contador=0;

  for (var i=0; i < Cadena.length; i++) 
  { 
    Caracter=Cadena.substring(i,i+1);
    if (Letras.indexOf(Caracter,0)!=-1) 
      Contador++;
  }
  return(Contador==Cadena.length)
}   

function EsAlfabetica(Cadena) 
{
  return(LoEs(Cadena, esLetra2))
}   

function EsAlfaNumerica(Cadena) 
{
  return(LoEs(Cadena, esNum))
}   

function EsUnix(Cadena) 
{
  return(LoEs(Cadena, esLetraUnix))
}  
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);
}


function ConvierteAEntero(Cadena) 
{
  var Entero="";
  var j=0;
 
 Cadena=SoloNumeros(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, Min, Max) 
{
  if ((ConvierteAEntero(Valor)>=ConvierteAEntero(Min)) && (ConvierteAEntero(Valor)<=ConvierteAEntero(Max)))
    return(true)
  else
    return(false);
}

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 EsCorrectoUsuario(U)
{
 var j = Ocurrencias(U,".");
 var Sub1 = new String();
 var Sub2 = new String();

 if ( (EstaVacia(U)) || (!(EstaEnIntervalo(U.length,2,30))) )
   return(false);
 else  
 {
   Sub1=U;
   for (var i=0; i <= j; i++) 
   {
     Sub2=ObtieneSubcadena2(Sub1,".");
     if ( !(EsAlfaNumerica(Sub2)) || (EstaVacia(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 ( (EstaVacia(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) || (EstaVacia(Sub2)) )
       return(false);
     else 
       Sub1=ObtieneSubcadena1(Sub1,".");
   }
   return(true);
 }
}

function EsCorrectaExtension(E) 
{
  if ( !(EsAlfabetica(E)) || ((EstaVacia(E))) || (!(EstaEnIntervalo(E.length,2,3))) )
    return(false);
  else
    return(true);
}

function VerificaEmail(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.value,"@")==-1) || (Posicion(element.value,".")==-1) || (Ocurrencias(element.value,"@")>1)) 
  {
    alerta(element,messEMAILINC);
    //element.value='';
    return(false);
  }
  else 
  {
    Usuario=ObtieneSubcadena1(element.value,"@");
    Dominio=ObtieneSubcadena2(element.value,"@");
    NombreDominio=ObtieneSubcadena1(Dominio,".");
    Extension=ObtieneSubcadena2(Dominio,".");
    UsuarioOK=EsCorrectoUsuario(Usuario); 
    NombreDominioOK=EsCorrectoNombreDominio(NombreDominio);
    ExtensionOK=EsCorrectaExtension(Extension); 

    if ( (!UsuarioOK) || (!NombreDominioOK) || (!ExtensionOK) ) 
	{
      alerta(element,messEMAILINC);
      //element.value='';
      return(false);
    }
    else 
      return(true)
  }
}

function EmailOK(element) 
{
 if (!ctrlEmail) 
 {
   ctrlEmail=true;
   if (element.value=='') 
   {
    alerta(element, messEMAILVAC)
    return(false);
   } 
   else 
   { return(VerificaEmail(element)); }
 }
 else
 {
   if (element.value=='') 
   { return(true); } 
   else 
   { return(VerificaEmail(element)); }
 }
}

function sustituyeElTexto(variable) 
{
  //Sustituye el caracter de comilla simple por dos comillas simples

  ComaSimple = /\'/;
  var salida = new Array();
  salida = variable.value;
  //Compruebo si existe ese match
  while(ComaSimple.test(salida))
  {
    salida = salida.replace(ComaSimple,"\"");
  }
  return(salida);
}

function trimCadena(cadena)
{
	//Comprueba que la cadena es igual al nombre 
	// Hace un trim a la cadena que se le pasa
	 cadena = cadena.toLowerCase();
	//veo los tipos de Navegadores aunque es el mismo caso
	if (navigator.appName =="Netscape")
	{
		//alert("cadena :" + cadena);
		var auxBis = "";
		for (var i=0; i<cadena.length; i++)
		{
			 if (cadena[i] != ' ')
			 	auxBis=auxBis + cadena[i];
		}
		//alert("auxBis :" + auxBis);
		return auxBis;
	}
	else
	{//Es el Explorer
		//alert("cadena.length :" + cadena.length);
		//alert("cadena : " + cadena)
		var auxBis = "";
		for (var i=0; i<cadena.length; i++)
		{
			 if (cadena.substr(i,1)  != ' ')
			 	auxBis=auxBis + cadena.substr(i,1);
		}
		//alert("auxBis :" + auxBis);
		return auxBis;
	}
}

function test_blancos(variable)
{
	 //Devuelve true si la string que se le pasa por parametros 
	 //  solo contiene espacios en blanco
	 //o esta vacia
	 if (variable == "")
	 	return true;
	 error = 1;
	 //alert("variable.length :" +variable.length);
	 for (var i=0; i<variable.length; i++) 
	 {
	   if (variable.substr(i,1) != ' ') 
	   {
	    error = false;
	    return false;
	   }
	 }
	 //alert("error: "+ error);
	 if (error == true) 
	 {
	  	//alert("El campo  esta vacio o solo contiene blancos");
	   error2 = true;
	  return true;
	 }
}
 
function comprobarNif(objeto)
{
	var cadena=trimCadena(objeto.value);
	var subCadena;
	var auxCadena;
	var ceros=0;
	//Devuelve true si el valor del objeto no se corresponde a un NIF o a una TR
	if (parseInt(cadena.length)<6){return true;}

	// Empiezo a comprobar
	if (letraInicio.test(cadena))
	{//check TR
		if(!letraFin.test(cadena)){return true;}
		else
		{//check only Number inside
			subCadena=cadena.substr(1,cadena.length-2);
			if (isNaN(subCadena)){return true;}
			else
			{// formateo bien
				ceros= 8 - parseInt(subCadena.length);
				auxCadena=formatear(subCadena,ceros);
				objeto.value=((cadena.substr(0,1))+auxCadena+(cadena.substr(cadena.length-1,cadena.length))).toUpperCase();
			}
		} 
	}
	else 
	{//check DNI o NIF
		if(!letraFin.test(cadena))
		{// es un dni check ony number inside
			if(isNaN(cadena)){return true;}
			else
			{//formateo DNI
				ceros= 10 - parseInt(cadena.length);
				auxCadena=formatear(cadena,ceros);
				objeto.value=auxCadena;				
			}
		}
		else
		{// It´s NIF.check only number inside
			subCadena=cadena.substr(0,cadena.length-1);
			
			if (isNaN(subCadena)){return true;}
			else
			{// formateo bien
				ceros= 10 - parseInt(cadena.length);
				auxCadena=formatear(cadena,ceros);				
				objeto.value=auxCadena.toUpperCase();
			}
		}		
	}
}

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;
}

function comprobarTfno(cadena)
{
	//Pasamos la cadena como tfno
	if (cadena.substr(0,1)=="+")
	{
		var auxcadena=cadena.substr(1,cadena.length -1)
		if (isNaN(auxcadena)){return true;}
		else {return false;}
	}
	else
	{
		if (isNaN(cadena)){return true;}
		else {return false;}
	}
}
function sustituyeCaracterRetornoCarro(variable) {
	 //Sustituye el caracter de retorno carro y fin de linea por los caractesres ~ y }
	 retornoCarro = /\r/;
	 finlinea = /\n/
	 var salida = new Array();
	 salida = variable.value;
	//Compruebo si existe ese match
	while(retornoCarro.test(salida)){
		salida = salida.replace(retornoCarro,"~");
		salida = salida.replace(finlinea,"}");
	}
	variable.value = salida;
}
function sustituyeCaracterRetornoCarroParametros(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 sustituyeDoblesComillasNull(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 introduceCaracterRetornoCarro(variable) {
	 // A la inversa de la fucion de sustituyeCaracterRetornoCarro
	 retornoCarro = /~/
	 //es alt-126
	 finlinea = /}/
	 // es alt-125
	 var salida = new Array();
	 salida = variable.value;
	//Compruebo si existe ese match
	while(retornoCarro.test(salida)){
		salida = salida.replace(retornoCarro,"\r");
		salida = salida.replace(finlinea,"\n");
	}
	variable.value = salida;
}
function introduceCaracterRetornoCarroBis(variable) {
	 //Introduce los caracteres \r y \n cuando
	 // se encuentra dos espacios en blanco seguidos
	 retornoCarro = /~/
	 //es alt-126
	 finlinea = /}/
	 // es alt-125
	 var salida = "";
	 
		j=0;
	 for (var i=0; i<variable.length; i++) 
	 {
	   if (variable.substr(i,1) == ' ' && variable.substr(i+1,1)== ' ') 
	   {
	   	// Se ha encontrado dos espacios en blanco : procedemos a la substituticion
	   	//alert("salida antes :" + salida);
	   	if (j==0)
	   		salida=salida+variable.substring(j,i);
	   	else
	   		salida=salida+"\r\n" +variable.substring(j,i);
	   	j=i+2;
	   	//alert("salida despues :" + salida);
	   }
	 }
	 if (j<variable.length)
	 	salida=salida+"\r\n" +variable.substring(j,variable.length);
	 
	 return salida;
}
function introduceCaracterRetornoCarroHtml(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 = "";
	 salida=variable;
		j=0;
	while(saltoHtml.test(salida)){
		salida = salida.replace(saltoHtml,"\r\n");
	}
	return salida;
	 
	
}

function comprobarRadio(objeto){

	//Devuelve true si  se ha seleccionado una opcion del radio button
	
	for (var i=0; i<objeto.length;i++){
		if (objeto[i].checked == true){
			return true;
		}
	}
	return false;
}


function nombreFichero(cadena,caracter){
	 //Devuelve el nombre del fichero de un path estilo C:\Peppe\file.txt devolveria file.txt
	//alert("funcion nombreFichero, parametro cadena : "  +cadena);
	//alert(" caracter " + caracter);
	var resultado="";
	var contadorCaracter = 0;
	var auxContadorCaracter = 0;
	var salida = new Array();
	 salida = cadena;
	 //alert("cadena.length :" + cadena.length);
	//Compruebo si existe ese match
	for (var i=0;i<cadena.length;i++){
		if (caracter==cadena.substr(i,1))
			contadorCaracter=contadorCaracter+1;
	}
	//alert(" contadorCaracter : " + contadorCaracter);
	for (var j=0;j<cadena.length;j++){
			if (caracter==cadena.substr(j,1)){
				auxContadorCaracter=auxContadorCaracter+1;
				//alert("auxContadorCaracter :"+ auxContadorCaracter);
				if(contadorCaracter==auxContadorCaracter){
					//alert("se ha topado co¡n el ultimoo slash en la posicion :" + j);
					resultado=resultado+cadena.substring(j+1,cadena.length); 		    }
 		  }
	}
	//alert("resultado :" + resultado);
	return resultado;
}

function comprobarExtension(cadena, arr){
	//Se le pasa una cadena , la cual es el nombre de un archivo,y se le comprueba que 
	// tiene una de las estensiones que se le pasa en el array arr
	// Devuelve 1 si lo ha encontrado
	// Devuelve 0 si a) no lo encuentra
	//								b) si la cadena no tiene formato "texto.texto"
	//alert("cadena :" + cadena);
	resultado =0;
	ext = "";
	//saco la extension 
	
		for (var i=0; i<cadena.length; i++) 
	 	{
	   if (cadena.substr(i,1) == '.') 
	   {
	   	// Se ha encontrado el punto
	   	ext=ext + cadena.substring(i+1,cadena.length);
	   	for (k=0; k<arr.length; k++){
	   		if (arr[k]==ext)
	   			resultado=1;
	   		}
	   }
	 }
	 //alert("resultado :"+resultado);
	return resultado;
}

function valueR(objeto){

	//Devuelve el valor de la opcion seleccionada en el radio button
	//Si no hay ninguna devuelve "-1"
	//alert("objeto.length: " + objeto.length);
	for (var i=0; i<objeto.length;i++){
		if (objeto[i].checked == true){
			var resultado;
			resultado=objeto[i].value;
			return resultado;
		}
	
	}
	return -1;
}
function sustituyeAcentoAcute(variable) {
	arrAcentos=new Array();
	arrAcutes=new Array();
	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]=/Ü/
	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;';
	
	 //Sustituye el caracter de acento por "&"+ caracter + "acute;"
	 var salida = new Array();
	 salida = variable.value;
	//Compruebo si existe ese match
	//alert("arrAcutes.length :" + arrAcutes.length);
	
	for (var i=0;i<arrAcentos.length;i++){
		while(arrAcentos[i].test(salida)){
			salida = salida.replace(arrAcentos[i],arrAcutes[i]);
		}
	}
	variable.value = salida;
}

function sustituyeAcuteAcento(variable) {
		 arrAcentos=new Array();
	 arrAcutes=new Array();
	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]='Ü';
	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;/;

	 //Sustituye el caracter de acento por "&"+ caracter + "acute;"
	 var salida = new Array();
	 salida = variable.value;
	//Compruebo si existe ese match
	//alert("arrAcutes.length :" + arrAcutes.length);
	
	for (var i=0;i<arrAcutes.length;i++){
		while(arrAcutes[i].test(salida)){
			salida = salida.replace(arrAcutes[i],arrAcentos[i]);
		}
	}
	variable.value = salida;
}
