var campos = new Array();	// Arreglo que contendrá ¬os campos a validar del formulario.
var cambios = false;		// Variable para activar un cambio en el registro, de cambioReg()

function restablecerCambios() {
	cambios = false;
}

function etiquetaEnCampos(arrElem, clase) {

	var val, elem, id;
	
	if ( typeof(clase) == 'undefined' )
		return;

	if ( typeof(arrElem) == 'string' )
		arrElem = new Array(arrElem);
		
	for( var i = 0; i < arrElem.length; i++ ) {
	
		if ( document.getElementById(arrElem[i]) != null ) {
		
			elem = $('#' + arrElem[i]);
			
			if ( elem.attr('class') == clase ) { 
				
				if ( !elem.attr('etiqueta') ) {
					elem.attr('etiqueta', elem.val());
				}
					
				elem.val('');
				elem.removeClass(clase);

			} else {

				elem.val($.trim(elem.val()));
						
				if (elem.val() == '') {
					elem.addClass(clase);
					elem.val(elem.attr('etiqueta'));
				}					

			}				

		}

	}
	
}


jQuery.fn.reset = function () {
  $(this).each (function() { this.reset(); });
}

function cambioReg() {
	cambios = true;
}

function salir(URL_EXIT) {
	if ( cambios && !confirm("Â¿Deseas salir descartando los cambios realizados?") )
		return;
		
	window.location = URL_SITE + URL_EXIT;
}

function validarClaves( id1, id2, obligatoria, longitud ) {
	
	$("#cambioPassword").dialog('close');
	var clave1 = document.getElementById( id1 );
	var clave2 = document.getElementById( id2 );
	var patron = /(^\s|\s$)/;

		

	if ( clave1.value != clave2.value ) {
		
		Alert( "La ContraseÃ±a no coincide con la confirmaciÃ³n. IngrÃ©sela nuevamente.", id1);
		limpiarCampos( new Array(id1, id2) );
		return false;
	
	}
	
	if ( clave1.value == "" ) {
		
		if (!obligatoria)
			return true;
			
		else {
		
			Alert( "El valor del campo ContraseÃ±a es requerido.", id1);
			return false;
		
		}
	
	}

		
	if ( clave1.value.length < longitud ) {
		
		Alert( "La ContraseÃ±a no puede ser menor de " + longitud + " carÃ¡cteres.", id1);
		limpiarCampos( new Array(id1, id2) );
		return false;
	
	}
	
	if ( patron.test(clave1.value) ) {
		
		Alert( "La ContraseÃ±a no puede tener espacios al inicio o al final. IngrÃ©sela nuevamente.", id1);
		limpiarCampos( new Array(id1, id2) );
		return false;
	
	}
	
	
	return true;
	
}

function limpiarCampos( arrElem ) {

	for( var i = 0; i < arrElem.length; i++ ) {
	
		if ( document.getElementById( arrElem[i] ) != null )
			document.getElementById( arrElem[i] ).value = "";
	
	}
	
}

function validarCampos( arrElem ) {

	var val, patron, mensaje, elem, id;
	// Id, TipoCampo, Obligatorio (false=No|true=Si), txtNombreDeCampo (para mensaje), numCaracMinimo o tipo de archivo (0|''=Ignorar), valorMí®©mo, valorMá¸©mo
	// ALFA1	= Alfanumé²©co que inicie con letra. Sin acentos. Sin espacios
	// ALFA2	= Alfanumé²©co que inicie con letra. Con acentos. Con espacios. Cará£´eres: ',.
	// CAR1	= Solo letras. Con acentos
	// MAIL	= Campo de correo
	// FILE = Campo de archivo

	for( var i = 0; i < arrElem.length; i++ ) {
	
		if ( document.getElementById(arrElem[i][0]) != null ) {
		
			id = arrElem[i][0];
			mensaje = "El valor del campo " + arrElem[i][3];
			patron = "";			
			
			elem = document.getElementById(id);
			
			if ( arrElem[i][1] != 'FILE' )
				elem.value = $.trim(elem.value);
				
			val = elem.value;
			
			if ( val.length == 0 && !arrElem[i][2] )
				continue;
			
			if ( val.length == 0 && arrElem[i][2] ) {
			
				Alert( mensaje + " es requerido.", id );
				return false;
				
			}
			
			if ( arrElem[i][1] == "LIST" || arrElem[i][1] == "DATE" )
				continue;
				
			if ( arrElem[i][1] == "FILE" ) {
				
				if ( arrElem[i][4] == '' )
					continue;
				else {
				
					var exp_reg = new RegExp("\\.(" + arrElem[i][4] + ")$", "i");
					//alert(exp_reg.toString());
					if ( exp_reg.test(val) ) {
						continue;
					} else {
					
						var extensiones_validas = arrElem[i][4].split("|");
						for ( var k = 0; k < extensiones_validas.length; k++)
							extensiones_validas[k] = "." + extensiones_validas[k]; 
						Alert( "El archivo " + arrElem[i][3] + " debe ser de tipo: " + extensiones_validas.join(', '), id );
						return false;
						
					}
					
				}
			
			}
			
			if ( val.length > 0 && arrElem[i][4] > 0 && val.length < arrElem[i][4]  ) {
			
				Alert( mensaje + " debe ser de almenos " + arrElem[i][4] + " carÃ¡cteres", id );
				return false;
				
			}
			
			if ( arrElem[i][1] == "ALFA1" ) {
			
				patron = /^[a-z][a-z0-9]*$/i;
				mensaje +=  " debe comenzar con una letra y contener:\n\n-letras (sin acentos)\n-nÃºmeros";
				
			} else if ( arrElem[i][1] == "ALFA2" ) {
			
				patron = /^[a-zÃ¡Ã©Ã­Ã³Ãº][a-zÃ±Ã¡Ã©Ã­Ã³Ãº'0-9,\. ]*$/i;
				mensaje +=  " debe comenzar con una letra y contener:\n\n-letras (con o sin acentos)\n-nÃºmeros\n-espacios\n-carÃ¡cteres: ',.";
				
			} else if ( arrElem[i][1] == "ALFA3" ) {
			
				patron = /.*/i;
				
			} else if ( arrElem[i][1] == "CAR1" ) {
			
				patron = /^[a-z]+$/i;
				mensaje += " debe contener:\n\n-letras";
				
			} else if ( arrElem[i][1] == "MAIL" ) {
			
				patron = /^[^@\s]+@[^@\.\s]+(\.[^@\.\s]+)+$/i;
				mensaje += " tiene un formato no vÃ¡lido.";
				
			} else if ( arrElem[i][1] == "INT" ) {
			
				patron = /^[-]?[0-9]+$/;			
								
			}
			// ( arrElem[i][1] == "INT" && typeOf(arrElem[i][5]) == 'undefined' && typeOf(arrElem[i][6]) == 'undefined' )
			if ( arrElem[i][1] != "INT" && !patron.test(val) ) {
				/*alert(Base64.encode(val + "-->" + patron));*/
				Alert( mensaje, id );
				return false;
										
			} else if ( arrElem[i][1] == "INT" ) {

				if ( !patron.test(val) ) {
				
					mensaje += " debe ser un nÃºmero entero";
					Alert( mensaje, id );
					return false;
					
				}
				if ( typeof(arrElem[i][5]) != 'undefined' && typeof(arrElem[i][6]) == 'undefined' && parseInt(val, 10) < arrElem[i][5] ) {	
				
					mensaje += " debe ser mayor o igual que " + arrElem[i][5];
					Alert( mensaje, id );
					return false;
					
				} else if ( typeof(arrElem[i][5]) == 'undefined' && typeof(arrElem[i][6]) != 'undefined' && parseInt(val, 10) > arrElem[i][6] ) {					
					mensaje += " debe ser menor o igual que " + arrElem[i][6];
					Alert( mensaje, id );
					return false;

				} else if ( typeof(arrElem[i][5]) != 'undefined' && typeof(arrElem[i][6]) != 'undefined' && (parseInt(val, 10) < arrElem[i][5] || parseInt(val, 10) > arrElem[i][6] ) ) {

					mensaje += " debe ser mayor o igual que " + arrElem[i][5] + " y menor o igual que " + arrElem[i][6];
					Alert( mensaje, id );
					return false;
					
				}
					

					
			}
			
		}	// fin de if document.getElementById(arrElem[i][0]) != null				
		
	}// Fin de for arrElem
	
	return true;
}

function validarFecha( fecha, texto, mandatorio, alertas ) {

	alertas = typeof(alertas) == "undefined" ? true : alertas;
	
	if ( fecha == "" ) {
		
		if ( mandatorio == 1 ) {
			
			if (alertas)
				alert("La fecha " + texto + " no debe estar vacÃ­o");
				
			return false;
			
		} else
			return true;
			
	}
		
	
	var patron = /^\d{2}\/\d{2}\/\d{4}$/
	elementos = fecha.split("/");
	
	if ( !patron.test(fecha) ) { 
	
		if (alertas)
			alert("El formato de la fecha " + texto + " no es vÃ¡lido.\nSe esperaba: dd/mm/aaaa");
			
		return false;
		
	} else if (elementos[0] < 1 || elementos[0] > 31 || elementos[1] < 1 || elementos[1] > 12) { 
	
		if (alertas)
			alert("La fecha " + texto + " no es vÃ¡lida.");
			
		return false;
		
	} else if ( (elementos[1] == 2 && elementos[0] > 29) || 
			   ( (elementos[1] == 4 || elementos[1] == 9 || elementos[1] == 11) && elementos[0] > 30 ) ) { 
	
		if (alertas)
			alert("La fecha " + texto + " no es vÃ¡lida.");
		
		return false;
		
	} else if (elementos[1] == 2 && elementos[0] == 29 && elementos[2] % 4 > 0) { 
	
		if (alertas)
			alert("La fecha " + texto + " no es vÃ¡lida.");
	
		return false;
		
	}
	
	return true;
	
}


function allTrim( arrElem ) {

	for( var i = 0; i < arrElem.length; i++ ) {
	
		if ( document.getElementById(arrElem[i]) != null ) {
		
			document.getElementById(arrElem[i]).value = document.getElementById(arrElem[i]).value.replace(/(^\s+|\s+$)/g, "");
			//myOldString.replace(/username/g, visitorName)
			
		}
		
	}

}
