// JavaScript Document
var oContacto = new function Contacto(){
	this.req = new Request(this);
	var SEP_IGUAL = '|=|';
	var SEP_AND = '|&|';
	var ER_STR = /^([^\f\n\r\t\v]([\f\n\r\t\v]|[^\f\n\r\t\v])*[^\f\n\r\t\v])+$|^[^\f\n\r\t\v]$/;
	var ER_EMAIL = /^[a-z0-9]{1}[a-z0-9_\.\-]{0,29}@[a-z0-9]{1}[a-z0-9\.\-]*[a-z0-9]{1}\.[a-z]{2,4}(\.[a-z]{2})?$/;
	
	var nombre = $("nombreContacto");
	var empresa = $("empresaContacto");
	var direccion = $("direccionContacto");
	var telefono = $("telefonoContacto");
	var email = $("emailContacto");
	var mensaje = $("mensajeContacto");
	
	var error = $("errorContacto");
	var enviando = $("enviandoContacto");
	var exito = $("exitoContacto");
	var fallo = $("falloContacto");
	var enviar = $("enviarContacto");
	
	var totalErrores = 0;
	var lMinima = 3;
	
	
	var crearError = function(campo, mensaje, expresion, longitud){
		campo.expresion = expresion;
		if(longitud){
			campo.onblur = function(){
				if(!campo.expresion.test(campo.value.toLowerCase()) || campo.value.length < lMinima) mostrarError(campo);
				else ocultarError(campo);
			}				
		}
		else{
			campo.onblur = function(){
				if(!campo.expresion.test(campo.value.toLowerCase())) mostrarError(campo);
				else ocultarError(campo);
			}				
		}
	}
	var crearErrores = function(){
		crearError(nombre,'',ER_STR,true);
		crearError(empresa,'',ER_STR,true);
		crearError(direccion,'',ER_STR,true);
		crearError(telefono,'',ER_STR,true);
		crearError(email,'',ER_EMAIL);
		crearError(mensaje,'',ER_STR,true);
	}
	var mostrarError = function(campo){
		totalErrores++;
		campo.className = "inputError";
	}
	var ocultarError = function(campo){
		campo.className = 'inputForm';
	}
	var enviarContacto = function(){
		totalErrores = 0;
		nombre.onblur();
		empresa.onblur();
		direccion.onblur();
		telefono.onblur();
		email.onblur();
		mensaje.onblur();
		if(totalErrores == 0){
			MostrarContenido(enviando);
			blockearCampos(true);
			mostrarBlockeador(true);
			
			var v = "nombre"+SEP_IGUAL+nombre.value+SEP_AND;
			v += "empresa"+SEP_IGUAL+empresa.value+SEP_AND;
			v += "direccion"+SEP_IGUAL+direccion.value+SEP_AND;
			v += "telefono"+SEP_IGUAL+telefono.value+SEP_AND;
			v += "email"+SEP_IGUAL+email.value+SEP_AND;
			v += "mensaje"+SEP_IGUAL+mensaje.value+SEP_AND;
			
			this.req.pedir(DIR_ROOT + "requests/contacto.php",v);
		}
		else{ error.style.display = "block"; }
	}.closure(this);
	var blockearCampos = function(blockeo){
		nombre.disabled = empresa.disabled = direccion.disabled = telefono.disabled = 
		email.disabled = mensaje.disabled = blockeo;
	}

	exito.onclick = function(){
		limpiarCampos();
		blockearCampos(false);
		mostrarBlockeador();
		OcultarContenido(exito);
	}
	fallo.onclick = function(){
		blockearCampos(false);
		mostrarBlockeador();
		OcultarContenido(fallo);
	}	
	
	var limpiarCampos = function(){
		nombre.value = empresa.value = direccion.value = telefono.value = email.value = mensaje.value = "";
		error.style.display = "none";
		ocultarError(nombre);
		ocultarError(empresa);
		ocultarError(direccion);
		ocultarError(telefono);
		ocultarError(email);
		ocultarError(mensaje);
	}
	this.onRequestLoad = function(){
		var nodo = this.req.respuestaXML;
		if(!nodo){
			alert(this.req.respuestaHTML);	
			return false;
		}
		if(nodo.getAttribute("exito") != 1) MostrarContenido(fallo);
		else MostrarContenido(exito);
		OcultarContenido(enviando);
	}
	
	crearErrores();
	AddEvent(enviar, "click", enviarContacto);
	
}

