// JavaScript Document
var Contacto = function(){
	this.req = new Request(this);
	var nombre = $('nombre');
	var apellido = $('apellido');
	var direccion = $('direccion');
	var ciudad = $('ciudad');
	var pais = $('pais');
	var provincia = $('provincia');
	var telefono = $('telefono');
	var email = $('email');
	var consulta = $('consulta');
	var error = $('divError');
	var enviando = $('enviandoConsulta');
	var exito = $('exitoConsulta');
	var fallo = $('falloConsulta');
	var enviar = $('enviarContacto');
	var sobreMensaje = false;
	var totalErrores = 0;
	var lMinima = 3;

	var crearError = function(campo,mensaje,expresion,longitud){
		campo.expresion = expresion;

		if(longitud){
			campo.onblur = function(){
				campo.value = trim(campo.value);				
				if(!campo.expresion.test(trim(campo.value).toLowerCase()) || campo.value.length < lMinima)mostrarError(campo);
				else ocultarError(campo);
			}				
		}
		else{
			campo.onblur = function(){
				campo.value = trim(campo.value);				
				if(!campo.expresion.test(trim(campo.value).toLowerCase()))mostrarError(campo);
				else ocultarError(campo);
			}				
		}
	}
	this.analizarTecla = function(e){
		if(e.keyCode == 13 && !sobreMensaje)this.enviarContacto();
	}
	
	var crearErrores = function(){
		crearError(nombre,'',ER_STR,true);
		crearError(apellido,'',ER_STR,true);
		crearError(ciudad,'',ER_STR,true);
		crearError(provincia,'',ER_STR,true);
		crearError(pais,'',ER_STR,true);		
		crearError(email,'',ER_EMAIL);
		crearError(consulta,'',ER_STR,true);
	}
	var mostrarError = function(campo){
		totalErrores++;
		campo.className = "error";
	}
	var ocultarError = function(campo){
		campo.className = '';
	}
	this.enviarContacto = function(e){
		totalErrores = 0;
		
		FireEvent(nombre,'blur');
		FireEvent(apellido,'blur');
		FireEvent(ciudad,'blur');
		FireEvent(provincia,'blur');
		FireEvent(pais,'blur');
		FireEvent(email,'blur');
		FireEvent(consulta,'blur');
		if(totalErrores == 0){
			blockearCampos(true);
			mostrarBlockeador(true);
			Loader.show();		
			
			var ArrTemp = new Array();
			ArrTemp['nombre'] = nombre.value;
			ArrTemp['apellido'] = apellido.value;
			ArrTemp['pais'] = pais.value;
			ArrTemp['provincia'] = provincia.value;
			ArrTemp['ciudad'] = ciudad.value;
			ArrTemp['direccion'] = direccion.value;			
			ArrTemp['email'] = email.value;
			ArrTemp['telefono'] = telefono.value;
			oCookie.set('datosFormulario',serialize(ArrTemp));
			
			
			var v = "nombre"+SEP_IGUAL+trim(nombre.value)+SEP_AND+"apellido"+SEP_IGUAL+trim(apellido.value)+SEP_AND+"direccion"+SEP_IGUAL+trim(direccion.value)+SEP_AND+"ciudad"+SEP_IGUAL+trim(ciudad.value)+SEP_AND+"provincia"+SEP_IGUAL+trim(provincia.value)+SEP_AND;
			v += "telefono"+SEP_IGUAL+trim(telefono.value)+SEP_AND+"email"+SEP_IGUAL+trim(email.value)+SEP_AND+"consulta"+SEP_IGUAL+trim(consulta.value)+SEP_AND+"pais"+SEP_IGUAL+trim(pais.value)+SEP_AND;
			
			this.req.pedir(URL_ROOT+"requests/contacto.php",v);
		}
		else{
			error.style.display = "inline";
		}
		if(e)StopEvent(e);
	}.closure(this);
	var blockearCampos = function(blockeo){
		nombre.disabled = blockeo;
		apellido.disabled = blockeo;
		direccion.disabled = blockeo;
		ciudad.disabled = blockeo;
		provincia.disabled = blockeo;
		pais.disabled = blockeo;		
		telefono.disabled = blockeo;
		email.disabled = blockeo;
		consulta.disabled = blockeo;
	}

	var limpiarCampos = function(){
		consulta.value = '';
		error.style.display = "none";
		ocultarError(nombre);
		ocultarError(apellido);
		ocultarError(ciudad);
		ocultarError(provincia);
		ocultarError(pais);		
		ocultarError(email);
		ocultarError(consulta);
	}
	this.onRequestLoad = function(){
		var nodo = this.req.respuestaXML;
		if(!nodo){
			Loader.hide();
			Error.message = fallo.innerHTML;
			Error.onAcept = Error.onCancel = function(){
				Error.hide();
				blockearCampos(false);
				mostrarBlockeador();
			}
			Error.show();

			return false;
		}
		if(nodo.getAttribute("exito") != 1){
			Error.message = fallo.innerHTML;
			Error.onAcept = Error.onCancel = function(){
				Error.hide();
				blockearCampos(false);
				mostrarBlockeador();
			}
			Error.show();

		}
		else{
			Exito.message = exito.innerHTML;
			Exito.onAcept = Exito.onCancel = function(){
				Exito.hide();
				blockearCampos(false);	
				mostrarBlockeador();
				limpiarCampos();
			}
			Exito.show();

		}
		Loader.hide();
	}
	crearErrores();
	
	AddEvent(consulta,'focus',function(){
		sobreMensaje = true;								   
    });
	AddEvent(consulta,'blur',function(){
		sobreMensaje = false;								   
    });

}

