//Elimina los espacios al inicio de la cadena
function LTrim(str){
	if (str==null){return null;}
	for(var i=0;str.charAt(i)==" ";i++);
	return str.substring(i,str.length);
}
//Elimina los espacios al final de la cadena
function RTrim(str){
	if (str==null){return null;}
	for(var i=str.length-1;str.charAt(i)==" ";i--);
	return str.substring(0,i+1);
}
//Elimina los espacios al inicio y al final de la cadena
function Trim(str){return LTrim(RTrim(str));}

//Elimina los espacios, enters y tabs del comienzo de la cadena
function LTrimAll(str) {
	if (str==null){return str;}
	for (var i=0; str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t"; i++);
	return str.substring(i,str.length);
}
//Elimina los espacios, enters y tabs del final de la cadena
function RTrimAll(str) {
	if (str==null){return str;}
	for (var i=str.length-1; str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t"; i--);
	return str.substring(0,i+1);
}
//Elimina los espacios, enters y tabs del comienzo y del final de la cadena
function TrimAll(str) {	return LTrimAll(RTrimAll(str)); }

//retorna True si val es null, false en caso contrario
function isNull(val){return(val==null);}


//retorna true si no encuentra caracter alguno o solo encuentra espacios,enters o tabs
function isBlank(val){
	if(val==null) return true;
	for(var i=0;i<val.length;i++)
		if ((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r")){return false;}
	return true;
}

//retorna true si val solo contiene numeros
function isInteger(obj){
	var ret = true;
	var msg=(arguments.length>1)?arguments[1]:"";
	var dofocus=(arguments.length>2)?arguments[2]:false;

	var val = obj.value;

	if (isBlank(val)) ret = false;

	for(var i=0;i<val.length && ret;i++)
		if(!isDigit(val.charAt(i))) ret = false;

	if (!ret){
		if(!isBlank(msg)) alert(msg);
		if(dofocus){
			if (isArray(obj) && (typeof(obj.type)=="undefined")) obj=obj[0];
			if(obj.type=="text"||obj.type=="textarea"||obj.type=="password")  obj.select();
			obj.focus();
		}
	}
	return ret;
}

//Retorna true solo si contiene un numero de tipo Float positivo
function isNumeric(val){return(parseFloat(val,10)==(val*1));}

//Retorna true si el objeto pasado es un array, falso en caso contrario
function isArray(obj){return(typeof(obj.length)=="undefined")?false:true;}

//Retorna true si num esta comprendido entre 0 y 9
function isDigit(num) {
	if (num.length>1){return false;}
	var string="1234567890";
	if (string.indexOf(num)!=-1){return true;}
	return false;
}

//Pone en null un campo si este esta en blanco. Null  eq "" . Blanco eq "" | \t | \n | " " | \r | combinaciones de estos
function setNullIfBlank(obj){if(isBlank(obj.value)){obj.value="";}}

//Pasa el valor de los campos pasados por parametro a mayusculas
function setFieldsToUpperCase(){
	for(var i=0;i<arguments.length;i++)
		arguments[i].value = arguments[i].value.toUpperCase();
}


//Verifica si un campo esta en blanco,opcionalmente emite una alerta en caso de que el campo este en blanco y pone el foco en el mismo
//Retorna true si es el campo esta en blanco y false en caso contrario
function disallowBlank(obj){
	var msg=(arguments.length>1)?arguments[1]:"";
	var dofocus=(arguments.length>2)?arguments[2]:false;
	if (isBlank(obj.value)){
		if(!isBlank(msg)) alert(msg);
		if(dofocus){
			if (isArray(obj) && (typeof(obj.type)=="undefined")) obj=obj[0];
			if(obj.type=="text"||obj.type=="textarea"||obj.type=="password")  obj.select();
			obj.focus();
		}
		return true;
	}
	return false;
}

//Toma los valores de un array y los transforma en una string separando cada valor por una coma
//Opcionalmente se puede pasar un segundo parametro para indicar si el delimitador que se quiere usar es distinto a una coma
function commifyArray(obj,delimiter){
	if (typeof(delimiter)=="undefined" || delimiter==null) delimiter = ",";
	var s="";
	if(obj==null||obj.length<=0) return s;
	for(var i=0;i<obj.length;i++)
		s=s+((s=="")?"":delimiter)+obj[i].toString();
	return s;
}

function validEmail(email){
	var msg=(arguments.length>1)?arguments[1]:"";
	var dofocus=(arguments.length>2)?arguments[2]:false;

	var arrobaPos = email.value.indexOf("@");
	var dotPos = email.value.lastIndexOf(".");
	var len = email.length;

	var ok  = true;

	if(arrobaPos < 1) ok = false; //El mail, o no tiene arroba o no tiene texto por delante de la arroba
	if (dotPos - arrobaPos < 2) ok =  false; //El mail no tiene el punto, o bien entre el punto y el @ no hay un caracter
	if(len-dotPos < 3) ok =  false; //El mail no tiene una extencion de almenos dos caracteres
	if(!ok){
		if(!isBlank(msg)) alert(msg);
		if(dofocus) email.focus();
	}
	return ok;
}

//retorna false si el campo es mas largo de lo permitido
function maxLength(max,obj){
	var msg=(arguments.length>2)?arguments[2]:"";
	var dofocus=(arguments.length>3)?arguments[3]:false;
	var bad = false;
	if (obj.value.length > max) {
		bad = true;
		if(msg != "") alert(msg);
		if(dofocus) obj.focus();
	}
	return bad;
}