// JavaScript Document - cadenas-texto.js

//--------------------------------------------------------------------------------------------------
function validarTexto( texto )
{
	// Comprueba que el texto introducido no contenga números, devolviendo siendo así true y false en
	// caso contrario.
	//
	// parametro texto	: Requerido. Cualquier expresión de cadena válida.
	
	var i=0;
	var caract; 
	for(i=0;i<texto.length;i++){ 
		caract=texto.substring(i, i+1); 
		if (caract>="0" && caract<="9"){
			return false;
		}
	}
	return true;			
}
//--------------------------------------------------------------------------------------------------
function validarTfno(texto)
{ 
	// Comprueba que teléfono introducido sólo contenga números, espacios o el caracter '-'. Para ello
	// usa el metodo test de expresion regular.
	//
	// parametro texto	: Requerido. Cualquier expresión de cadena válida con sólo numeros, espacios ó '-'
	
	if(/^([0-9\+\s\+\-])+$/.test(texto)) {
		return true;
	}else{
		return false; 
	}
}
//--------------------------------------------------------------------------------------------------
function validarEmail(texto) 
{
	// Comprueba que el e-mail intriducido se compone de 'nombre_usuario + @ + servidor + dominio'. Para 
	// ello usa el metodo test de expresion regular. Explicacion de la expresion regular ... 
	// nombre_usuario y servidor ->  Debe empezar por letra o número. Al menos tiene una letra o número. 
	//								 Para asegurarnos de que la letra o número aparece al menos una vez 
	//								 utilizaremos el modificador +. Puede contener puntos y guiones 
	//                               además de las letras y números. Esta combinación podrá aparecer, es 
	//								 por ello que se utilizará el modficiador * (cero o varias veces).
	//								 Su expresión regular, para ambos casos, será \w+([\.-]?\w+)*
	// dominio                   ->  Irá al final, detrás de un punto. Podrá tener dos (.es, .fr, .it,...) 
	//								 o tres letras (.com, .net, .org,..). Además puede tener varios 
	//								 dominios seguidos (.com.ar,.com.uk.), es por ello que se deberá usar 
	//								 el modificador + ya que el dominio podrá aparecer varias veces. 
	//								 Su expresión regular será como sigue: (\.\w{2,3})+
	//
	// parametro texto	: Requerido. Cualquier expresión de cadena de correo válida.
	
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(texto))
	{
		return true;
 	}else{
    	return false;
 	}	
} 
//--------------------------------------------------------------------------------------------------
function validarSiBlancos(texto){
	var caract;
	if (cad.length>0){
		var blanco=0;
		for(i=0;i<cad.length;i++){ 
			caract=cad.substring(i, i+1); 
			if (caract==" "){
				blanco=blanco+1;					
			}			
		}			
		if (blanco>0){						
			return true;
		}else{
			return false;
		}
	}
}
//--------------------------------------------------------------------------------------------
function quitarBlancosTrim(texto){
	// Devuelve una copia de una texto sin espacios iniciales ni espacios finales.	
	//
	// parametro texto	: Requerido. Cualquier expresión de cadena válida. 
	
	var valor='';	
	if (texto!=''){		 	
			valor=texto;
		 	//Quitamos espacios en blanco al principio del texto
			while(''+valor.charAt(0)==' ')valor=valor.substring(1,valor.length);		
			//Elimina los espacios al final del texto introducido
			while(''+valor.charAt(valor.length-1)==' ')valor=valor.substring(0,valor.length-1);			
	 }
	 return valor;
}
//--------------------------------------------------------------------------------------------------
function Left(str, n){
	// Extract the left part of a string.
	//	
	// parametro str	: Requerido. Cadena de la que se devuelven los caracteres que están más a la izquierda.   
	// parametro n		: Requerido. Longitud. Cuántos caracteres se van a devolver. 	
	
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}

//--------------------------------------------------------------------------------------------------
function Right(str, n){
	// Extract the right part of a string.
	//	
	// parametro str	: Requerido. Cadena de la que se devuelven los caracteres que están más a la derecha.   
	// parametro n		: Requerido. Longitud. Cuántos caracteres se van a devolver. 
	
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}
//--------------------------------------------------------------------------------------------------
function replaceCadena(texto,s1,s2){
	// Sustitucion de cadenas de textos. Reemplazaríamos sobre el texto las cadenas s1 que encontrásemos por las cadenas s2.
	//	
	// parametro texto	: Requerido. Expresión de cadena que contiene la subcadena que se va a reemplazar.  
	// parametro s1		: Requerido. Subcadena que se busca.
	// parametro s2		: Requerido. Subcadena de reemplazo.
	
	return texto.split(s1).join(s2);
}
//--------------------------------------------------------------------------------------------------
function convertirAMayusculas(texto){		
	// Devuelve una cadena que se ha convertido en mayúsculas. No tiene efecto en caracteres no alfabéticos.
	//
	// parametro texto : Requerido. Cualquier expresión de cadena válida.
	
	return texto.toUpperCase();
	
}
//--------------------------------------------------------------------------------------------------
function convertirAMinusculas(texto){		
	// Devuelve una cadena que se ha convertido en minúsculas. No tiene efecto en caracteres no alfabéticos.
	//
	// parametro texto : Requerido. Cualquier expresión de cadena válida.
	
	return texto.toLowerCase();
	
}
//--------------------------------------------------------------------------------------------------
function formatoTextoFileFolder(texto, opcion)
{
	// Devuelve una copia de una cadena de texto sin caracteres especiales, sin espacios en blanco y según las 
	// necesidades también se dá la posibilidad de convertir la cadena a mayúsculas o minúsculas o dejarla el tamaño
	// de letra como estaba.
	// Generalmente, su uso será para obtener nombres válidos para crear carpetas, archivos, ftp, ....
	// 	 	
	// parametro cadena : Requerido. Cualquier expresión de cadena válida. 
	// parametro opcion : Requerido. Opcion de conversion, en todos los casos se quitan los caracteres especiales ...					 	 	//					  0 - Convertir a mayusculas y si hay espacios en blanco -> " " = ""
	//					  1 - Convertir a minusculas y si hay espacios en blanco -> " " = ""
	//					  2 - Sin variar tamaño de letra de la cadena y si hay espacios en blanco -> " " = ""  
	
	texto=replaceCadena(texto, "á","a")
	texto=replaceCadena(texto, "é","e")
	texto=replaceCadena(texto, "í","i")
	texto=replaceCadena(texto, "ó","o")
	texto=replaceCadena(texto, "ú","u")
	texto=replaceCadena(texto, "ñ","n")
	texto=replaceCadena(texto, "Á","A")
	texto=replaceCadena(texto, "É","E")
	texto=replaceCadena(texto, "Í","I")
	texto=replaceCadena(texto, "Ó","O")
	texto=replaceCadena(texto, "Ú","U")
	texto=replaceCadena(texto, "Ñ","N")
	texto=replaceCadena(texto, "/","")
	texto=replaceCadena(texto, "\\","")
	texto=replaceCadena(texto, ":","")
	texto=replaceCadena(texto, "*","")
	texto=replaceCadena(texto, "?","")
	texto=replaceCadena(texto, "<","")
	texto=replaceCadena(texto, ">","")
	texto=replaceCadena(texto, "|","")
	texto=replaceCadena(texto, "@","")
	texto=replaceCadena(texto, "#","")
	texto=replaceCadena(texto, "%","")
	texto=replaceCadena(texto, "€","")
	texto=replaceCadena(texto, ".","")
	texto=replaceCadena(texto, ",","")	
	texto=replaceCadena(texto, "\'","")
	texto=replaceCadena(texto, "´","")
	
	switch (opcion) {
		case 0: 
			texto=texto.toUpperCase(); 
			break;
		case 1:			
			texto=texto.toLowerCase(); 
			break;
		default :
			opcion = 2;
	}
	
	if (opcion==0 || opcion==1 || opcion==2){
		texto=replaceCadena(texto, " ","")
	}

	return texto;
}
//-----------------------------------------------------------------------------------------------------------------

function isNumeric(x) {
	// I use this function like this: if (isNumeric(myVar)) { }
	// regular expression that validates a value is numeric
	var RegExp = /^(-)?(\d*)(\.?)(\d*)$/; // Note: this WILL allow a number that ends in a decimal: -452.
	// compare the argument to the RegEx
	// the 'match' function returns 0 if the value didn't match
	var result = x.match(RegExp);
	return result;
}