// Variables para setear al validar form
var urlDestino = "";
var numItems = 0;

// Variables globales a todos los forms
claseNormal = "input";
claseError = "inputError";

preCarga("img/ok.png", "img/loading.gif", "img/error.png");

function preCarga()
{
	imagenes=new Array();
	for(i=0; i<arguments.length; i++)
	{
		imagenes[i]=document.createElement("img");
		imagenes[i].src=arguments[i];
	}
}

function nuevoAjax()
{ 
	var xmlhttp=false; 
	try 
	{ 
		// No IE
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); 
	}
	catch(e)
	{ 
		try
		{ 
			// IE 
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
		} 
		catch(E) { xmlhttp=false; }
	}
	if (!xmlhttp && typeof XMLHttpRequest!="undefined") { xmlhttp=new XMLHttpRequest(); } 
	return xmlhttp; 
}

function campoError(campo)
{
	campo.className=claseError;
	error=1;
}

function ocultaMensaje()
{
	divTransparente.style.display="none";
}

function muestraMensaje(mensaje)
{
	divMensaje.innerHTML=mensaje;
	divTransparente.style.display="block";
}

function eliminaEspacios(cadena)
{
	// Funcion para eliminar espacios delante y detras de cada cadena
	while(cadena.charAt(cadena.length-1)==" ") cadena=cadena.substr(0, cadena.length-1);
	while(cadena.charAt(0)==" ") cadena=cadena.substr(1, cadena.length-1);
	return cadena;
}

function validaLongitud(valor, permiteVacio, minimo, maximo)
{
	var cantCar=valor.length;
	if(valor=="")
	{
		if(permiteVacio) return true;
		else return false;
	}
	else
	{
		if(cantCar>=minimo && cantCar<=maximo) return true;
		else return false;
	}
}

function validaCorreo(valor)
{
	var reg=/(^[a-zA-Z0-9._-]{1,30})@([a-zA-Z0-9.-]{1,30}$)/;
	if(reg.test(valor)) return true;
	else return false;
}

function validaFecha(Cadena){  
	var Fecha= new String(Cadena)   // Crea un string  
	//var RealFecha= new Date()   // Para sacar la fecha de hoy
	// Cadena Año  
	var Ano= new String(Fecha.substring(Fecha.lastIndexOf("-")+1,Fecha.length))  
	// Cadena Mes  
	var Mes= new String(Fecha.substring(Fecha.indexOf("-")+1,Fecha.lastIndexOf("-")))  
	// Cadena Día  
	var Dia= new String(Fecha.substring(0,Fecha.indexOf("-")))  
	// Valido el año  
	if (isNaN(Ano) || Ano.length<4 || parseFloat(Ano)<1900){  
		// alert('Año inválido')  
		return false; 
	}  
	// Valido el Mes  
	if (isNaN(Mes) || parseFloat(Mes)<1 || parseFloat(Mes)>12){  
		// alert('Mes inválido')  
		return false; 
	}  
	// Valido el Dia  
	if (isNaN(Dia) || parseInt(Dia, 10)<1 || parseInt(Dia, 10)>31){  
		// alert('Día inválido')  
		return false;
	}  
	if (Mes==4 || Mes==6 || Mes==9 || Mes==11 || Mes==2) {  
		if (Mes==2 && Dia > 28 || Dia>30) {  
			// alert('Día inválido')  
			return false;
		}  
	}  
	
	// alert("Fecha correcta.")  
	return true;
}  

function validaClave(valor1,valor2)
{
	if (valor1 == valor2) return true;
	else return false;
}

function asignarObjetos(pForm,pUrlDestino,pNumItems)
{
    form = pForm;
    urlDestino = pUrlDestino;
    numItems = pNumItems;
}

function limpiaForm()
{
	for(i=0; i<=numItems; i++)
	{
		form.elements[i].className = claseNormal;
	}
	// document.getElementById("mensaje").className = claseNormal;
}

function validaForm()
{
	limpiaForm();
	error=0;

	if (form.name != "formLogin") {
        var nombre = eliminaEspacios(form.nombre.value);
        if (!validaLongitud(nombre, 0, 4, 30)) campoError(form.nombre);

        var primerapellido = eliminaEspacios(form.primerapellido.value);
        if (!validaLongitud(primerapellido, 0, 4, 30)) campoError(form.primerapellido);

        var email = eliminaEspacios(form.email.value);
        if (!validaCorreo(email)) campoError(form.email);

        if (form.name != "formRecordar") {
            var segundoapellido = eliminaEspacios(form.segundoapellido.value);
            if (!validaLongitud(segundoapellido, 1, 4, 30)) campoError(form.segundoapellido);

            var domicilio = eliminaEspacios(form.domicilio.value);
            if (!validaLongitud(domicilio, 0, 4, 255)) campoError(form.domicilio);

            var portal = eliminaEspacios(form.portal.value);
            if (!validaLongitud(portal, 0, 1, 10)) campoError(form.portal);

            var piso = eliminaEspacios(form.piso.value);
            if (!validaLongitud(piso, 1, 1, 20)) campoError(form.piso);

            var poblacion = eliminaEspacios(form.poblacion.value);
            if (!validaLongitud(poblacion, 0, 4, 30)) campoError(form.poblacion);

            var provincia = eliminaEspacios(form.provincia.value);
            if (!validaLongitud(provincia, 0, 4, 30)) campoError(form.provincia);

            var cp = eliminaEspacios(form.cp.value);
            if (!validaLongitud(cp, 0, 5, 10)) campoError(form.cp);

            var pais = form.pais.value;

            var telefono1 = eliminaEspacios(form.telefono1.value);
            if (!validaLongitud(telefono1, 0, 9, 15)) campoError(form.telefono1);

            var telefono2 = eliminaEspacios(form.telefono2.value);
            if (!validaLongitud(telefono2, 1, 9, 15)) campoError(form.telefono2);

            var recibir_info = form.recibir_info.checked;
        }
    }

	// CONTACTO
	if (form.name == "formContacto") {
		var mensaje = eliminaEspacios(form.mensaje.value);
		if (!validaLongitud(mensaje, 0, 5, 500)) campoError(form.mensaje);
	}

    var dianacimiento = "";
    var mesnacimiento = "";
    var anonacimiento = "";
    var fechanacimiento = "";
    var sexo = "";
    var usuario = "";
    var contrasena = "";
    var confirmar_contrasena = "";

	// REGISTRO USUARIO
	if (form.name == "formRegistroUsuario") {
		dianacimiento = form.dianacimiento.value;
		mesnacimiento = form.mesnacimiento.value;
		anonacimiento = form.anonacimiento.value;
		fechanacimiento = dianacimiento + "-" + mesnacimiento + "-" + anonacimiento;
		if (!validaFecha(fechanacimiento)) {
			campoError(form.dianacimiento);
			campoError(form.mesnacimiento);
			campoError(form.anonacimiento);
		}
		
		var dni = eliminaEspacios(form.dni.value);
		if (!validaLongitud(dni, 0, 8, 15)) campoError(form.dni);
		
		sexo = "";
		for (i=0;i<form.sexo.length;i++){
       		if (form.sexo[i].checked) {
				sexo = form.sexo[i].value;
				break;
			}
    	} 
				
		usuario = eliminaEspacios(form.usuario.value);
//		if (!validaLongitud(usuario, 0, 8, 15)) campoError(form.usuario);

        var opcion = form.opcion.value;
        var max_pass = 8;
        if (opcion == "modificar")
            max_pass = 32;

		contrasena = eliminaEspacios(form.contrasena.value);
        if (!validaLongitud(contrasena, 0, 4, max_pass)) campoError(form.contrasena);
		
		confirmar_contrasena = eliminaEspacios(form.confirmar_contrasena.value);
        if (!validaLongitud(confirmar_contrasena, 0, 4, max_pass)) campoError(form.confirmar_contrasena);
		
		if (!validaClave(contrasena, confirmar_contrasena)) {
			campoError(form.contrasena);
			campoError(form.confirmar_contrasena);
		}

        var contrasena_anterior = form.contrasena_anterior.value;
	}
	
	// REGISTRO OPERADOR
	if (form.name == "formRegistroOperador") {
		var razonsocial = eliminaEspacios(form.razonsocial.value);
		if (!validaLongitud(razonsocial, 0, 4, 50)) campoError(form.razonsocial);
		
		var cifnif = eliminaEspacios(form.cifnif.value);
		if (!validaLongitud(cifnif, 0, 8, 15)) campoError(form.cifnif);
		
		dianacimiento = form.dianacimiento.value;
		mesnacimiento = form.mesnacimiento.value;
		anonacimiento = form.anonacimiento.value;
		fechanacimiento = dianacimiento + "-" + mesnacimiento + "-" + anonacimiento;
		if (!validaFecha(fechanacimiento)) {
			campoError(form.dianacimiento);
			campoError(form.mesnacimiento);
			campoError(form.anonacimiento);
		}
		
		var fotologo = form.fotologo.value;
		var actividad = form.actividad.value;
		var tiempoactividad = form.tiempoactividad.value;
		var numempleados = form.numempleados.value;
		
		var fax = eliminaEspacios(form.fax.value);
		if (!validaLongitud(fax, 1, 9, 15)) campoError(form.fax);
	
		sexo = "";
		for (i=0;i<form.sexo.length;i++){
       		if (form.sexo[i].checked) {
				sexo = form.sexo[i].value;
				break;
			}
    	} 
		
		var emailempresa = eliminaEspacios(form.emailempresa.value);
		if (!validaCorreo(emailempresa)) campoError(form.emailempresa);
			
		usuario = eliminaEspacios(form.usuario.value);
		if (!validaLongitud(usuario, 0, 8, 15)) campoError(form.usuario);
		
		var cargo = form.cargo.value;
		
		contrasena = eliminaEspacios(form.contrasena.value);
		if (!validaLongitud(contrasena, 0, 4, 8)) campoError(form.contrasena);
		
		confirmar_contrasena = eliminaEspacios(form.confirmar_contrasena.value);
		if (!validaLongitud(confirmar_contrasena, 0, 4, 8)) campoError(form.confirmar_contrasena);	
		
		if (!validaClave(contrasena, confirmar_contrasena)) {
			campoError(form.contrasena);
			campoError(form.confirmar_contrasena);
		}
	}

    if (form.name == "formLogin") {
        usuario = eliminaEspacios(form.usuario.value);
		// if (!validaLongitud(usuario, 0, 8, 15)) campoError(form.usuario);

		contrasena = eliminaEspacios(form.contrasena.value);
		// if (!validaLongitud(contrasena, 0, 4, 8)) campoError(form.contrasena);
    }
	
	var texto = "";
	
	if(error==1)
	{
	    texto = "<img src='img/error.png'><br><br><span class='mensaje'>Error: revise los campos en rojo.</span><br><br><div align='center'><div class='button'><input type='button' value='aceptar' onClick='ocultaMensaje()' /></div></div>";
		muestraMensaje(texto);
	}
	else
	{
        if (form.name == "formRegistroOperador") {
            var aceptarcontrato = form.aceptar_contrato.checked;
            if (aceptarcontrato == 0) {
                texto = "<img src='img/error.png'><br><br><span class='mensaje'>Error: debe aceptar la política de privacidad.</span><br><br><div align='center'><div class='button'><input type='button' value='aceptar' onClick='ocultaMensaje()' /></div></div>";
                muestraMensaje(texto);
                error = 1;
            }
        }
		
		if(error!=1) {
		
			texto = "<img src='img/loading.gif'><br><br><span class='mensaje'>Procesando. Por favor espere.</span><br><br><div align='center'><div class='button'><input type='button' value='ocultar' onClick='ocultaMensaje()' /></div></div>";
			muestraMensaje(texto);
			
			var ajax=nuevoAjax();
			ajax.open("POST", urlDestino, true);
			ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			
			var campos = "";
			var textoinfo = "Gracias";
			if (form.name == "formContacto") { // CONTACTO
				campos = "nombre=" + nombre + "&primerapellido=" + primerapellido + "&segundoapellido=" + segundoapellido;
				campos += "&email=" + email + "&domicilio=" + domicilio + "&portal=" + portal + "&piso=" + piso;
				campos += "&poblacion=" + poblacion + "&provincia=" + provincia + "&cp=" + cp + "&pais=" + pais;
				campos += "&telefono1=" + telefono1 + "&telefono2=" + telefono2 + "&mensaje=" + mensaje + "&recibir_info=" + recibir_info;
				textoinfo = "Gracias por su mensaje.<br>Le responderemos lo más brevemente posible";
			} else if (form.name == "formRegistroUsuario") { // REGISTRO USUARIO
				campos = "nombre=" + nombre + "&primerapellido=" + primerapellido + "&segundoapellido=" + segundoapellido;
				campos += "&dianacimiento=" + dianacimiento + "&mesnacimiento=" + mesnacimiento + "&anonacimiento=" + anonacimiento;
				campos += "&dni=" + dni + "&sexo=" + sexo;
				campos += "&email=" + email + "&domicilio=" + domicilio + "&portal=" + portal + "&piso=" + piso;
				campos += "&poblacion=" + poblacion + "&provincia=" + provincia + "&cp=" + cp + "&pais=" + pais;
				campos += "&telefono1=" + telefono1 + "&telefono2=" + telefono2 + "&recibir_info=" + recibir_info;
				campos += "&usuario=" + usuario + "&contrasena=" + contrasena + "&confirmar_contrasena=" + confirmar_contrasena;
                campos += "&opcion=" + opcion + "&contrasena_anterior=" + contrasena_anterior;

                if (opcion == 'modificar')
                    textoinfo = "Datos actualizados correctamente";
                else
                    textoinfo = "Su registro ha sido realizado.<br>Su cuenta será activada en breve";

			} else if (form.name == "formRegistroOperador") { // REGISTRO OPERADOR
				campos = "razonsocial=" + razonsocial + "&cifnif=" + cifnif + "&fotologo=" + fotologo;
				campos += "&actividad=" + actividad + "&tiempoactividad=" + tiempoactividad + "&numempleados=" + numempleados;
				campos += "&nombre=" + nombre + "&primerapellido=" + primerapellido + "&segundoapellido=" + segundoapellido;
				campos += "&dianacimiento=" + dianacimiento + "&mesnacimiento=" + mesnacimiento + "&anonacimiento=" + anonacimiento;
				campos += "&email=" + email + "&domicilio=" + domicilio + "&portal=" + portal + "&piso=" + piso;
				campos += "&poblacion=" + poblacion + "&provincia=" + provincia + "&cp=" + cp + "&pais=" + pais;
				campos += "&telefono1=" + telefono1 + "&telefono2=" + telefono2 + "&recibir_info=" + recibir_info;
				campos += "&usuario=" + usuario + "&contrasena=" + contrasena + "&confirmar_contrasena=" + confirmar_contrasena;
				campos += "&fax=" + fax + "&cargo=" + cargo + "&emailempresa=" + emailempresa + "&sexo=" + sexo;
				textoinfo = "Su registro ha sido enviado.<br>En breve recibirá un e-mail para confirmarlo y activar su cuenta";
			} else if (form.name == "formLogin") { // LOGIN
				campos = "usuario=" + usuario + "&contrasena=" + contrasena;
				textoinfo = "Sesión Iniciada";
			} else if (form.name == "formRecordar") { // LOGIN
				campos = "nombre=" + nombre + "&primerapellido=" + primerapellido + "&email=" + email;
				textoinfo = "Su solicitud ha sido enviada.<br />En breve recibirá un e-mail con sus datos de acceso";
			}
			ajax.send(campos);
			
			ajax.onreadystatechange=function()
			{
				if (ajax.readyState==4)
				{
					var respuesta=ajax.responseText;
//                    alert(respuesta);
					if ((respuesta=="OK") || (respuesta=="OKLogin"))
					{
                        if (form.name == "formLogin") {
                            cargarContenido('login','login.php');
                        }
                        
                        if (form.name == "formRegistroUsuario") {
                            if (opcion == 'modificar')
                                cargarContenido('mainLeft','registro-usuario.php?opcion=modificar');
                        }

                        if (opcion != 'modificar')
                            form.reset();

						texto = "<img src='img/ok.png' alt='Ok'><br><br><span class='mensaje'>" + textoinfo + "</span><br><br><div align='center'><div class='button'><input type='button' value='aceptar' onClick='ocultaMensaje()' /></div></div>";
					} else if (respuesta=="ErrorUsuario") {
						campoError(form.email);
						texto = "<img src='img/error.png'><br><br><span class='mensaje'>Error: el usuario ya existe.</span><br><br><div align='center'><div class='button'><input type='button' value='aceptar' onClick='ocultaMensaje()' /></div></div>";
					} else if (respuesta=="ErrorLogin") {
						texto = "<img src='img/error.png'><br><br><span class='mensaje'>Error: usuario o contraseña no válidos.</span><br><br><div align='center'><div class='button'><input type='button' value='aceptar' onClick='ocultaMensaje()' /></div></div>";
					} else if (respuesta=="ErrorRecordar") {
						texto = "<img src='img/error.png'><br><br><span class='mensaje'>Error: los datos introducidos no son correctos.</span><br><br><div align='center'><div class='button'><input type='button' value='aceptar' onClick='ocultaMensaje()' /></div></div>";
					}
					else texto = "<img src='img/error.png'><br><br><span class='mensaje'>Error: intentelo más tarde.</span><br><br><div align='center'><div class='button'><input type='button' value='aceptar' onClick='ocultaMensaje()' /></div></div>";
					
					muestraMensaje(texto);
				}
			}
		}
	}
}

// Mensajes de ayuda
if(navigator.userAgent.indexOf("MSIE")>=0) navegador=0;
else navegador=1;

function colocaAyuda(event)
{
    var corX = "";
    var corY = "";
	if(navegador==0)
	{
		corX=window.event.clientX+document.documentElement.scrollLeft;
		corY=window.event.clientY+document.documentElement.scrollTop;
	}
	else
	{
		corX=event.clientX+window.scrollX;
		corY=event.clientY+window.scrollY;
    }

    cAyuda.style.top = corY - 199 + "px";
    if (corX - 364 > 600)
        cAyuda.style.left = corX - 564 + "px";
    else
    	cAyuda.style.left = corX - 364 + "px";
}

function ocultaAyuda()
{
	cAyuda.style.display="none";
	if(navegador==0) 
	{
		document.detachEvent("onmousemove", colocaAyuda);
		document.detachEvent("onmouseout", ocultaAyuda);
	}
	else 
	{
		document.removeEventListener("mousemove", colocaAyuda, true);
		document.removeEventListener("mouseout", ocultaAyuda, true);
	}
}

function muestraAyuda(event, campo)
{
	colocaAyuda(event);
	
	if(navegador==0) 
	{ 
		document.attachEvent("onmousemove", colocaAyuda); 
		document.attachEvent("onmouseout", ocultaAyuda); 
	}
	else 
	{
		document.addEventListener("mousemove", colocaAyuda, true);
		document.addEventListener("mouseout", ocultaAyuda, true);
	}
	
	cNombre.innerHTML=campo;
	cTex.innerHTML=ayuda[campo];
	cAyuda.style.display="block";
}
