﻿/*************************************************
// Función que devuelve una nueva petición según el navegador en uso
*************************************************/
function nuevaPeticion ()
{
	var peticion=false;
	// Internet Explorer
	try 
	{
		peticion = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e) 
	{
		try
		{
			peticion = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		catch (E)
		{
			peticion = false;
		}
	}
	// Navegador estándar
	if (!peticion && typeof XMLHttpRequest!='undefined')
		peticion = new XMLHttpRequest();

	return peticion;
}



/*************************************************
// Enviar formulario
*************************************************/
function enviarFormulario(formulario)
{
	// Datos del formulario
	var nombre = formulario.nombre.value;
	var correo = formulario.correo.value;
	var consulta = formulario.consulta.value;

	// Datos de notificacion
	var notificacionfinalizado = document.getElementById('notificacionfinalizado');
	var notificaciongeneral = document.getElementById('notificaciongeneral');
	var notificacionnombre = document.getElementById('notificacionnombre');
	var notificacioncorreo = document.getElementById('notificacioncorreo');
	var notificacionconsulta = document.getElementById('notificacionconsulta');
	
	// Reiniciamos los datos
	notificacionfinalizado.innerHTML="";
	notificaciongeneral.innerHTML="";
	notificacionnombre.innerHTML="";
	notificacioncorreo.innerHTML="";
	notificacionconsulta.innerHTML="";
		
	// Variables de error
	var errorgeneral = "";
	var errornombre = "";
	var errorcorreo = "";
	var errorconsulta = "";
	
	var error = false;
	
	if(nombre=="")
	{
		error = true;
		errornombre = errornombre + "No ha facilitado su nombre y apellidos.";
	}
	
	if(correo=="")
	{
		error = true;
		errorcorreo = errorcorreo + "No ha facilitado su correo.";
	}
	
	if(consulta=="")
	{
		error = true;
		errorconsulta = errorconsulta + "No ha introducido ninguna consulta.";
	}
		
	if(error==false)
	{
		// Formulario Correcto
		var peticion = nuevaPeticion();
		peticion.onreadystatechange = function()
		{
			if(peticion.readyState == 4)
			{
				if(peticion.status == 200)
				{
					// Comprobamos si se ha enviado el correo
					if(peticion.responseText=="ok")
					{
						notificacionfinalizado.appendChild(document.createTextNode("Su consulta ha sido enviada satisfactoriamente."));
						
						// Borramos el contenido del mensaje que se ha enviado:
						formulario.nombre.value="";
						formulario.correo.value="";
						formulario.consulta.value="";
					}
					else
					{
						// Posibles  errores que pueden producirse
						if(peticion.responseText=="nombre")
						{
							errornombre = errornombre + "No ha facilitado su nombre y apellidos.";
							notificacionnombre.appendChild(document.createTextNode(errornombre));
						}
						else
						{
							if(peticion.responseText=="correo")
							{
								errorcorreo = errorcorreo + "No ha facilitado su correo.";
								notificacioncorreo.appendChild(document.createTextNode(errorcorreo));
							}
							else
							{
								if(peticion.responseText=="consulta")
								{
									errorconsulta = errorconsulta + "No ha introducido ninguna consulta.";
									notificacionconsulta.appendChild(document.createTextNode(errorconsulta));
								}
								else
								{
									if(peticion.responseText=="tiempo")
									{
										notificaciongeneral.appendChild(document.createTextNode("Por motivos de seguridad no se permite enviar el formulario en intervalos tan cortos de tiempo. Vuelva a intentarlo en unos minutos. Disculpe las molestias."));
									}
									else
									{
										if(peticion.responseText=="intentos")
										{
											notificaciongeneral.appendChild(document.createTextNode("Por motivos de seguridad no se permite enviar tantas veces el formulario en un intervalo tan breve. Vuelva a intentarlo en unos minutos. Disculpe las molestias."));
										}
										else
										{
											notificaciongeneral.appendChild(document.createTextNode("Ocurrió un error durante el envío de su consulta. Nuestros técnicos se ocuparán de arreglarlo lo más rápido posible. Disculpe las molestias."));
										}
									}
								}
							}
						}
					}
				}
			}
		}
		peticion.open ("POST", "enviarformulario.php");
		peticion.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		peticion.send('nombre=' + escape(nombre) + '&correo=' + escape(correo) + '&consulta=' + escape(consulta) );
	}
	else
	{
		if(errornombre!="")
		{
			notificacionnombre.appendChild(document.createTextNode(errornombre));
		}
		
		if(errorcorreo!="")
		{
			notificacioncorreo.appendChild(document.createTextNode(errorcorreo));
		}
		
		if(errorconsulta!="")
		{
			notificacionconsulta.appendChild(document.createTextNode(errorconsulta));
		}		
	}
}

/*************************************************
// Crea un evento
*************************************************/
function crearEvento(elemento, evento, funcion)
{
	if (elemento.addEventListener)
	{
		elemento.addEventListener(evento, funcion, false);
	}
	else
	{
		elemento.attachEvent("on" + evento, funcion);
	}
}
