// JavaScript Document

/**
	* CODIGO PARA EL TRATAMIENTO DEL FORMULARIO DE CONTACTOS.
	
*/

var FormContacto = function(id_form){
	var estilo_campo_error="campo_form_error";
	var estilo_campo_sugerencia = "campo_form_sugerencia";
	var f = document.getElementById(id_form);
	var errores = "";
	if(f==undefined || f==null) alert("new FormContacto('"+id_form+"'). El ID del Formulario no existe o est\u00e1 mal escrito.");

	this.reiniciar = function(){
		f.nombre.value = "";
		f.email.value="";
		f.telefono.value="";
		f.fax.value="";
		f.movil.value="";
		f.radio.value="";
		f.consulta.value="";
		f.ser_contactado.checked="";
		f.nombre_contacto.value="";
		f.cargo_contacto.value="";
		f.dia_hora.value="";
		f.nombre.focus();
	}
	
	//Verifica si la sintaxis del email es correcta
	function check_mail_sintaxis(){
		var expresion=/^[a-z]([\w\.]*)@[a-z]([\w\.]*)\.[a-z]{2,3}$/;
		var resultado = expresion.test(f.email.value);
		return resultado;
	}

	function is_spam(){
		var expresion=/Content-Type:|BCC:|CC:|mailto:/i;
		var sospechoso=false;
		for(var i=0;i<f.length-1;i++){
			if(f[i].value!=undefined){
				sospechoso = expresion.test(f[i].value);
				if(sospechoso) break;
			}
		}
		return sospechoso;
	}
	
	this.validar = function(){
		var fail = false;
		errores="";
		
		var t="";
		var fax="";
		var m="";
		var r="";
		var e="";
		var contacto_ok = false;
		//Añado una propiedad a los datos de contacto para verificar si, al menos uno, está seleccionado.
		//***********************************************************************************************
		
		
		//Quito los espacios antes y después.
		f.nombre.value = f.nombre.value.trim().toUpperCase();
		f.email.value = f.email.value.trim().toLowerCase();
		f.telefono.value = f.telefono.value.trim();
		f.movil.value = f.movil.value.trim();
		f.radio.value = f.radio.value.trim();
		f.fax.value= f.fax.value.trim();
		f.dia_hora.value = f.dia_hora.value.trim();
		f.consulta.value = f.consulta.value.trim();
		
		//Para contacto telefónico
		f.nombre_contacto.value	= f.nombre_contacto.value.trim().toUpperCase();
		f.cargo_contacto.value	= f.cargo_contacto.value.trim().toUpperCase();
		
		e=f.email.value;
		fax=f.fax.value;
		t=f.telefono.value;
		m=f.movil.value;
		r=f.radio.value;
		
		
		
		//Verifico si hay sospechosos de spam
		if(is_spam()){
			fail = true;
			errores+="Ha escrito texto que no es valido y podria ser usado para enviar spam.";
		}
		
		//Verifico los campos obligatorios.
		if(f.nombre.value==""){
			fail=true;
			errores+="Ingrese un nombre o razón social.";
			f.nombre.className = estilo_campo_error;
		}
		
		//Verifico los campos obligatorios.
		if(f.consulta.value==""){
			fail=true;
			errores+="Falta la consulta\n";
			f.consulta.className = estilo_campo_error;
		}
		/*
			Si está marcada la opción de contacto telefónico, debo tener el teléfono, el celular o el radio como mínimo.
			Si no está marcada la opción de contacto telefónico, debo tener, al menos una opción de contacto (mail, tel, fax, movil o radio.
		 */
		contacto_ok = (e!="" || m!="" || t!="" || fax!="" || r!="") ? true: false;
		// Si tengo, al menos, uno de los datos de contacto, pregunto por si quiere recibir contacto telefónico.
		if(contacto_ok){
			// Si se desea ser contactado, debo solicitar, el menos un teléfono.
			if(f.ser_contactado.checked){
				if(t=="" && fax=="" && m=="" && r==""){
					fail=true;
					f.telefono.className = estilo_campo_error;
					f.movil.className = estilo_campo_sugerencia;
					f.fax.className = estilo_campo_sugerencia;
					f.radio.className = estilo_campo_sugerencia;
				}
				if(f.nombre_contacto.value==""){
					f.nombre_contacto.value = f.nombre.value;
				}
			}
			
			//Verifico si hay un e-mail.
			if(e!=""){
				// Verifico la sintaxis del email, si está correcta, verifico que la confirmación
				// contenga el mismo correo.
				if(!check_mail_sintaxis()){
					fail = true;
					errores+="La sintaxis del E-Mail es incorrecta\n";
					f.email.className = estilo_campo_error;
				}
			}
		}else{
			fail = true;
			errores+="Ingrese alguna forma de contacto\n";
			f.email.className = estilo_campo_sugerencia;
			f.telefono.className = estilo_campo_sugerencia;
			f.movil.className = estilo_campo_sugerencia;
			f.fax.className = estilo_campo_sugerencia;
			f.radio.className = estilo_campo_sugerencia;
		}

		if(fail){
			alert(errores);
		}
		//**********
		
		return !fail;
	}
}
	
	

