// Script común de utilitarios
// Las funciones aquí definidas deberán tener prefijo "u_" para evitar conflicto con funciones locales

var u_clicked = false;	// Variable para control de concurrencia
var isNN = (navigator.appName.indexOf("Netscape")!=-1); // Variable indicadora dee Netscape

function u_num(campo, etiqueta) {	// Chequeo de campo numerico

	var iNro = Number(campo.value);

	if (isNaN(iNro)) {
		alert("Por favor, verifique el valor "+etiqueta);
		campo.focus();			
		return false;
	}
	else {
		if (u_ltrim(campo.value)!="") {	// Si no ingreso solo espacios
			campo.value = iNro;
		}
		return true;
	}
}

function u_positivo(campo, etiqueta) {	// Chequeo de numero positivo
	if (u_ltrim(campo.value)!="") {
		var iNro = Number(campo.value);
		if (iNro <= 0 ) {
			alert("Por favor, ingrese un número mayor que cero en "+etiqueta);
			campo.focus();			
			return false;
		}
	}
	return true;
}

function u_entero(campo, etiqueta) {	// Chequeo de numero entero
	if (u_ltrim(campo.value)!="") {
		var iNro = Number(campo.value);
		if ((iNro <= 0 )||(campo.value.indexOf('.')>=0)) {
			alert("Por favor, ingrese un número positivo sin decimales en "+etiqueta);
			campo.focus();			
			return false;
		}
	}
	return true;
}

function u_msg(campo, etiqueta) {	// Mensaje de validacion de campos
	if (u_ltrim(campo.value)=="") {
		alert("Por favor, ingrese "+etiqueta);
		campo.focus();
		return false;
	}
	else {
		return true;
	}
}

function u_sel(campo, etiqueta) {	// Mensaje de validacion de combos
	if (campo.value=="") {
		alert("Por favor, seleccione "+etiqueta);
		campo.focus();
		return false;
	}
	else {
		return true;
	}
}

function u_mail(campo, etiqueta) {	// Controla que lo enviado sea una direccion de mail, si hay datos

	if (u_ltrim(campo.value)!="") {
		if (campo.value.indexOf("@")<0) {
			alert("Por favor, verifique " + etiqueta);
			campo.focus();
			return(false);
		}
	}

	return true;
}

function u_archivo(campo, etiqueta) {	// Controla que se ingrese un ruta a un archivo 

	if (u_ltrim(campo.value)!="") {
		if ( campo.value.indexOf("\\")<0 ){
			alert("Por favor, verifique " + etiqueta);
			campo.focus();
			return(false);
		}
	}

	return true;
}


function u_reset(form){ // Borra el contenido de los campos de un form
	form.reset();
	return false;
}

function u_comparacion(campo1, campo2, etiqueta) {	// Compara campo1 y campo2, en caso ser distinto despliega el mensaje y
							// se posiciona en el campo2
	if (campo1.value != campo2.value) {
		alert("El reingreso de "+etiqueta+" no coincide");
		campo2.focus();
		campo2.value = "";
		return false;
	}
	else {
		return true;
	}
}

function u_ltrim(cadena) {	// Elimina los espacios en blanco al principio de una cadena

	var i = 0;
	for (i = 0; ((i<cadena.length)&&(cadena.charAt(i)==" ")); i++);

	return cadena.substr(i);
}


function u_valida_char(form) {

	var encontro = false;
	var valor = "";
	var campo;
	var ok = true;
	var salida = "";

	for (var i = 0; ((i < form.elements.length)&&(ok)); i++) {
		if ((form.elements[i].type=="text")||(form.elements[i].type=="text")) {
			ok = u_caracteres_validos(form.elements[i]);
		} else	{ 
					 	if (form.elements[i].type=="password"){
								ok = u_pass_caracteres_validos(form.elements[i]);
						}
					}
	}

	return ok;
}

function u_caracteres_validos( campo ) {	// Funcion de uso interno para validar caracteres. Desde paginas llamar a u_valida_char

	var salida = "";
	var cadena = campo.value;

	var OK = true;	// Resultado de conversion

	validas = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-_.,:;/@' "+String.fromCharCode(10, 13);
	min = "áàâäéèêëíìîïóòôöúùûü";
	may = "ÁÀÂÄÉÈÊËÍÌÎÏÓÒÔÖÚÙÛÜ";

	var c;
	for (var i = 0; i < cadena.length; i ++ ) {
	    	var caracter = cadena.charAt( i );
	    	var codigo   = cadena.charCodeAt( i );

		if (validas.indexOf(caracter)!=-1) {	// Letras, números, etc. (sin separadores de mensajeria)
			salida += caracter;
		}
		else {
			c = min.indexOf(caracter);
			if (c==-1) {
				if (caracter=="Ñ") {
					salida += "N"
				}
				else {
					if (caracter=="ñ") {
						salida += "n";
					}
					else {
						if (caracter=="ç") {
							salida += "c";
						}
						else {
							if (caracter=="Ç") {
								salida += "C";
							}
							else {
								c = may.indexOf(caracter);
								if (c==-1) {
									OK = false;
									alert('Se ha encontrado el siguiente caracter no válido: '+caracter);
									campo.focus();
									return false;
								}
								else {
									if ((c>=0)&&(c<=3)) 
										salida += "A";
									else 
										if ((c>=4)&&(c<=7)) 
											salida += "E";
										else 
											if ((c>=8)&&(c<=11))
												salida += "I";
											else 
												if ((c>=12)&&(c<=15))
													salida += "O";
												else 
													if ((c>=16)&&(c<=19))
														salida += "U";
								}
							}
						}
					}
				}
			}
			else {
				if ((c>=0)&&(c<=3)) 
					salida += "a";
				else 
					if ((c>=4)&&(c<=7)) 
						salida += "e";
					else 
						if ((c>=8)&&(c<=11))
							salida += "i";
						else 
							if ((c>=12)&&(c<=15))
								salida += "o";
							else 
								if ((c>=16)&&(c<=19))
									salida += "u";
					
			}	
		}
	}
	if (OK) {
		campo.value=salida;
	}
  return OK;
}

function u_pass_caracteres_validos( campo ) {	// Funcion de uso interno para validar caracteres. Desde paginas llamar a u_valida_char

	var salida = "";
	var cadena = campo.value;

	var OK = true;	// Resultado de conversion

	validas = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_' "+String.fromCharCode(10, 13);

	var c;
	for (var i = 0; i < cadena.length; i ++ ) {

		var caracter = cadena.charAt( i );
	   var codigo   = cadena.charCodeAt( i );

		if (validas.indexOf(caracter)!=-1) {	// Letras, números, etc. (sin separadores de mensajeria)
			salida += caracter;
		}
		else	{
					OK = false;
					alert('Se ha encontrado un caracter no válido en la password');
					campo.focus();
 					return false;
				}
	} // for

	if (OK) {
		campo.value=salida;
	}

  return OK;
}

function u_concurrencia(cadena) {

	if (!u_clicked) {
		var miFunc = new Function(cadena);

		u_clicked = miFunc();
		return u_clicked;
	}
	else {
		return false;
	}
}

