
function trim(string){
    // saca espacios del principio y fin del string
    return string.replace(/(^\s*)|(\s*$)/g, "");
}


function displayErrors(errors){

	if (errors.length > 0){
		var mensaje = 'Hubo algun error al ingresar los datos:\n';

		for(var i=0; i < errors.length; i++){
			mensaje += '- ' + errors[i] + '\n';
		}

		mensaje += 'Por favor corrija e intente nuevamente.';

		alert(mensaje);

		return false;

	} else {
		return true;
	}

}


/**
 * Convención para nombres de usuario:
 *
 * Empieza con a-z, A-Z y luego a-z, A-Z o 0-9.
 * Mínimo de caractres 6 y máximo 30.
 *
 */
function chkUserName(userName, msg) {

	if(msg != '')
		msg = msg + '\n';

	if (userName.length == 0){
		alert(msg + 'Por favor ingrese un nombre de usuario.');
		return false;
	}

	var re = /^[a-zA-Z][a-zA-Z0-9]{1,}$/;

	//alert('userName = ' + userName + '\n' + 'exp = ' + re);

	if ( (userName.length < 2) || (userName.length > 30) ) {
		alert(msg + 'El nombre de usuario debe tener entre 6 y 30 caracteres.');
		return false;
	}else if (userName.search(re) != -1) {
		return true;
	}else{
		alert(msg + 'El formato del nombre de usuario no es válido.');
		return false;
	}
}

function chkImageFormat(imagen, msg){

	if(msg != '')
		msg = msg + '\n';

	if (imagen.length == 0){
		alert(msg + 'Por favor ingrese una imágen.');
		return false;
	}

	var re = /(\.((gif)|(jpg)|(png)))$/i;
	if (imagen.search(re) == -1){
		alert(
			msg +
			'El formato de la imagen no es valido.\n' +
			'Los formatos validos son:\n' +
			'   gif, jpg y png'
		);
		return false;
	}

	return true;
}

/**
 * Convención para passwords:
 *
 * Sólo a-z, A-Z o 0-9.
 * Mínimo de caractres 6 y máximo 30.
 *
 */
function chkPassword(password, msg) {

	if(msg != '')
		msg = msg + '\n';

	if (password.length == 0){
		alert(msg + 'Por favor ingrese una clave.');
		return false;
	}

	var re = /^[a-zA-Z0-9][a-zA-Z0-9!-]{1,}$/;

	//alert('password = ' + password + '\n' + 'exp = ' + re);

	if ( (password.length < 2) || (password.length > 30) ) {
		alert(msg + 'El password debe tener entre 6 y 30 caracteres.');
		return false;
	}else if (password.search(re) != -1) {
		return true;
	}else{
		alert(msg + 'El formato de la clave no es válido.');
		return false;
	}
}


/**
 * Convención para nombres de mail:
 *
 * Empieza y termina con alguno de estos caracteres: a-z, A-Z, 0-9.
 * En medio de esos caracteres puede haber a-z, A-Z o 0-9, y tambien
 * puede llevar ".", "_" o "-" con la condición de que este acompañado
 * a izquierda con a-z, A-Z o 0-9.
 *
 */
function chkMailName(name, msg) {

	//var re = /^[a-zA-Z0-9]([a-zA-Z0-9][_\-\.]{0,1})*[a-zA-Z0-9]$/;
	var re = /^([a-zA-Z0-9][_\-\.]{0,1})([a-zA-Z0-9][_\-\.]{0,1})*[a-zA-Z0-9]$/;

	//alert('name = ' + name + '\n' + 'exp = ' + re);
	if(msg != '')
		msg = msg + '\n';

	if (name.length == 0){
		alert(msg + 'Debe ingresar un nombre de cuenta.');
		return false;
	} else if (name.search(re) != -1){
		return true;
	}else{
		alert(msg + 'El formato del nombre de cuenta no es válido.');
		return false;
	}
}

function chkEmail(email, msg) {

	var re = /^([a-zA-Z0-9]+([_\-\.]{1}[a-zA-Z0-9]+)*)@(([a-zA-Z0-9]+([\-\.]{1}[a-zA-Z0-9]+)*\.)+[a-zA-Z0-9]+)$/;

	//alert('name = ' + name + '\n' + 'exp = ' + re);

	if(msg != '')
		msg = msg + '\n';

	if (email.length == 0){
		alert(msg + 'Debe ingresar un e-mail.');
		return false;
	} else if (email.search(re) != -1){
		return true;
	}else{
		alert(msg + 'El formato del e-mail no es válido.');
		return false;
	}
}


function chkEmailNoMsg(email) {

	var re = /^([a-zA-Z0-9]+([_\-\.]{1}[a-zA-Z0-9]+)*)@(([a-zA-Z0-9]+([\-\.]{1}[a-zA-Z0-9]+)*\.)+[a-zA-Z0-9]+)$/;

	if (email.length == 0){
		return false;
	} else if (email.search(re) != -1){
		return true;
	} else {
		return false;
	}
}

function chkNumeroOrdenNoMsg(norden) {

	var re = /^([0-9]{1,11})$/;

	if (norden.search(re) != -1)
		return true;
	else
		return false;
}

/**
 * Convención URL:
 *
 * una URL sin.
 *
 */
function chkURL(url, msg) {

	//var re = /^([a-z0-9][\-\.]{0,1})([a-z0-9][\-\.]{0,1})*[a-z0-9]{2,}$/i;
	var re = /^([a-z0-9]+(\-{1}[a-z0-9]+)*\.{1})([a-z0-9]+(\-{1}[a-z0-9]+)*\.{1})*[a-z0-9]{2,}$/i;

	//alert('url = ' + url + '\n' + 'exp = ' + re);

	if(msg != '')
		msg = msg + '\n';

	if (url.length == 0){
		alert(msg + 'Debe ingresar una URL.');
		return false;
	} else if (url.search(re) != -1){
		return true;
	}else{
		alert(msg + 'El formato de la URL no es válido.');
		return false;
	}
}

function chkIsReservedSubDomain(subDomain){

	var re = /^((www)|(ftp)|(smtp)|(smtps)|(pop3)|(pop3s)|(webmail))$/;

	if (subDomain.search(re) != -1)
		return true;
	else
		return false;
}

/**
 * Convención para nombres de subdominio:
 *
 * Caracteres a-z, A-Z o 0-9 y tambien puede llevar "." o "-" con la condición
 * de que este acompañado a izquierda con a-z, A-Z o 0-9.
 * No puede terminar en "." ni "-".
 *
 */
function chkSubDomainName(subDomain, msg) {

	if(msg != '')
		msg = msg + '\n';

	var re = /^([a-z0-9][\-\.]{0,1})*[a-z0-9]$/;

	//alert('subDomain = ' + subDomain + '\n' + 'exp = ' + re);

	if (subDomain.length == 0){
		alert(msg + 'Debe ingresar un subdominio.');
		return false;
	} else if (subDomain.search(re) != -1){

		/* Chequeo de subdominio reservado
		if (chkIsReservedSubDomain(subDomain)){
			alert(msg + 'Subdominio reservado. Por favor ingrese otro subdominio.');
			return false;
		} else
		*/
			return true;

	}else{
		alert(msg + 'El formato del subdominio no es válido.');
		return false;
	}
}

/**
 * Convención número entero:
 *
 * Chequea si un número es entero. En caso que tenga caracteres
 * que no sean números, estos son eliminados. Si quedaron números
 * reemplaza el valor anterior por un entero válido, sino pide que
 * ingrese un número.
 *
 */
function chkIntegerNumber(number, msg) {

	var re = /[^0-9]/g;

	if (number.search(re) != -1 ){
		return false;
	} else {
		return true;
	}

}

/**
 * Convención para nombres de base de datos:
 *
 * Empieza y termina con alguno de estos caracteres: a-z, A-Z, 0-9.
 * En medio de esos caracteres puede haber a-z, A-Z o 0-9, y tambien
 * puede llevar "_" con la condición de que este acompañado
 * a izquierda con a-z, A-Z o 0-9.
 *
 */
function chkDBName(dbname, msg) {

	if(msg != '')
		msg = msg + '\n';

	if (dbname.length == 0){
		alert(msg + 'Por favor ingrese un nombre para la base de datos.');
		return false;
	}

	var re = /^([a-zA-Z0-9]_{0,1})([a-zA-Z0-9]_{0,1})*[a-z0-9]$/;

	//alert('dbname = ' + dbname + '\n' + 'exp = ' + re);

	if ( (dbname.length < 2) || (dbname.length > 30) ) {
		alert(msg + 'El nombre de la base de datos debe tener entre 6 y 30 caracteres.');
		return false;
	} else if (dbname.search(re) != -1){
		return true;
	}else{
		alert(msg + 'El formato del nobmre de base de datos no es válido.');
		return false;
	}
}