//
// Funciones de cadena
// 
String.digito            = "0123456789";
String.puntoDecimal      = ".,";
String.caracterMayuscula = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ";
String.caracterMinuscula = "abcdefghijklmnñopqrstuvwxyz";
String.caracter           = String.caracterMayuscula + String.caracterMinuscula;
String.alfaNumerico      = String.digito+String.caracter;
String.signos            = "_-."; 
String.arroba            = "@";
String.cadenaValida      = String.alfaNumerico+String.signos+String.arroba;
String.IDMask			 = String.alfaNumerico + "_-";

/**
 * Valida una cadena
 * @param (String) mascara Secuencia de carácteres de filtro
 * @param (String) cadena  Cadena que se quiere validar
 * @return (bool) true si la cadena es válida, false en caso contrario
 */
String.prototype.validarCadena = function (mascara) {
    if (this.length==0) return false;
    for(i=0;i<this.length;i++) {
        if (mascara.indexOf(this.charAt(i))==-1) return false;
    }
    return true;
}

  
  
  
/**
 * Limpia todos los ceros a la izquierda de una 
 * cadena
 * @return (String) Cadena sin ceros a la izquierda
 */
String.prototype.limpiaCeros = function() {
    temp="";
    numeros=0;
    for(i=0;i<this.length;i++) {
        if ( this.charAt(i)!="0" || numeros>0) {  
           temp+=this.charAt(i);
           numeros++;
        } 
    }
    return temp;
}

String.prototype.mascara = function(mask, align) {
	var i;
	var cadena = "";
    if( align == "right" ) {
       for(i=0;i<mask.length - this.length;i++) {
           cadena += mask.charAt(i);
       }
       cadena+=this;
    }
    return cadena;
}

String.prototype.trim = function ()
{
   return this.replace(/^\s*|\s*$/g,"");
}


/**
 * Valida si una cadena tiene un formato correcto de email
 * @param (String)  cadena  Cadena de texto a validar
 * @return (boolean) True si tiene un formato válido , false en caso contrario
 */
String.prototype.esMail = function() {

	// Contiene arroba
    if(this.indexOf("@")==-1) return false;
	
	// Obtención de las partes del email
	// con las partes aaaa@bbbb.cc
	parte		= this.split("@");
	aaaa		= parte[0];						// Parte izquierda
	ultimoPunto = parte[1].lastIndexOf(".");	// Último punto
	bbbb		= parte[1].slice(0,ultimoPunto);// Parte entre arroba y dominio de primer nivel
	cc			= parte[1].slice(ultimoPunto+1);// Dominio de primer nivel
	
	// Si no existe punto despues de la 
	// arroba el email no tiene dominio
	if (ultimoPunto == -1) return false;
	
	// Parte antes del domino
	if (bbbb.length < 2) {
		error='bbbb no puede ser menor que 2';
		return false;
	}
	
	// Validación de la cadena
	if (!(aaaa+bbbb).validarCadena(String.alfaNumerico+String.signos)) 
		return false;
	
	// Si el dominio de primer nivel es de menos 
	// de 2 o mas de 4 error
	if (cc.length<2 || cc.length>4) return false;
	
	// Validación de la cadena en el email
	if (!cc.validarCadena(String.caracterMayuscula+String.caracterMinuscula)) return false;
	
	// Email correcto
	return true;
}  


