function preparaPagina()
{
	envioCurr_Change()
	envioExp_Change()
	universidad_onchange()
	pais_onchange()
	document.formua1.carta_adjunta.value = 0
}

function btnEnviar_click()
{
	if (document.formua1.nombre.value == "")
	{
		alert("É necessário preencher o campo do Nome")
		document.formua1.nombre.focus()
		return;
	}
	if (document.formua1.apellidos.value == "")
	{
		alert("É necessário preencher o campo do Apelidos")
		document.formua1.apellidos.focus()
		return;
	}
	if (document.formua1.calle.value == "")
	{
		alert("É necessário preencher o campo do Endereço")
		document.formua1.calle.focus()
		return;
	}
	if (document.formua1.numero.value == "")
	{
		alert("É necessário preencher o campo do Nº")
		document.formua1.numero.focus()
		return;
	}
	if (document.formua1.piso.value == "")
	{
		alert("É necessário preencher o campo do Andar")
		document.formua1.piso.focus()
		return;
	}
	if (document.formua1.pais.value == "")
	{
		alert("É necessário preencher o campo do PAIS")
		document.formua1.pais.focus()
		return;
	}	
	
	// Dependiendo del país. se requiere una campo u otro.
	if (document.formua1.pais.value == "Portugal")
	{
    	if (document.formua1.provincia.value == "")
    	{
		    alert("É necessário preencher o campo do Distrito")
		    document.formua1.provincia.focus()
		    return;
	    }
	}
	else
	{
	    if (document.formua1.state.value == "")
	    {
		    alert("É necessário preencher o campo do Distrito")
		    document.formua1.state.focus()
		    return;
	    }
	}
	
	if (document.formua1.localidad.value == "")
	{
		alert("É necessário preencher o campo do Localidade")
		document.formua1.localidad.focus()
		return;
	}
	if (document.formua1.Codigo_Postal.value == "")
	{
		alert("É necessário preencher o campo do CODIGO POSTAL")
		document.formua1.Codigo_Postal.focus()
		return;
	}

	if (document.formua1.telefono1.value == "")
	{
		alert("É necessário preencher o campo do Telefone")
		document.formua1.telefono1.focus()
		return;
	}
	if (document.formua1.fecha_nacimiento.value == "")
	{
		alert("É necessário preencher o campo do Data de Nascimento")
		document.formua1.fecha_nacimiento.focus()
		return;
	}
	else
	{
		if (!isDate(document.formua1.fecha_nacimiento.value))
		{
			alert("A data introduzida no campo DATA DE NASCIMENTO, não está correcta")
			document.formua1.fecha_nacimiento.focus()
			return;
		}
	}

	if (document.formua1.universidad.value == "")
	{
		alert("É necessário que indique a Universidade em que tirou a licenciatura em Direito")
		document.formua1.universidad.focus()
		return;
	}
    
    // Si se introduce otra universidad se comprueba que el campo este relleno.
	if (document.formua1.universidad.value == "*Otra*")
	{
	    if (document.formua1.otra_universidad.value == "")
	    {
		    alert("É necessário que indique a Universidade em que tirou a licenciatura em Direito")
		    document.formua1.otra_universidad.focus()
		    return;
	    }
	}

	if (document.formua1.anyo_fin.value == "")
	{
		alert("É necessário que indique o ano em que finalizou a Licenciatura em Direito")
		document.formua1.anyo_fin.focus()
		return;
	}
	
	// Se comprueban las filas de otros estudios
	var iFila, strMensaje
	for (iFila = 2;iFila <= 3; iFila++)
	{
	    strMensaje = compruebaFilas(new Array("titulo" + iFila, "universidad" + iFila, "anyo_fin" + iFila))
	    if (strMensaje != "")
	    {
		    alert(strMensaje)
		    return;
	    }
	}
    	
    // Se completan los datos de los idiomas
    strMensaje = compruebaIdiomas()
    if  (strMensaje != "")
    {
    	alert(strMensaje)
    	return;
    }
		
	// Se comprueban las filas de postgrado
	for(iFila = 1;iFila <= 3; iFila++)
	{
	    strMensaje = compruebaFilas(new Array("estudios" + iFila, "centro" + iFila, "fin" + iFila, "calificacion" + iFila))
	    if (strMensaje != "")
	    {
		    alert(strMensaje)
		    return;
	    }
    }

	// Se comprueban las filas de oposiciones
	for (iFila = 1;iFila <= 3; iFila++)
	{
	    strMensaje = compruebaFilas(new Array("oposicion" + iFila, "opCentro" + iFila, "opInicio" + iFila, "opFin" + iFila, "opCalificacion" + iFila))
	    if (strMensaje != "")
	    {
		    alert(strMensaje)
		    return;
	    }
    }	
    
    // Se comprueba si se adjuntan ficheros que todo sea correcto
	strMensaje = compruebaAdjuntos()
	if (strMensaje != "")
	{
		alert(strMensaje)
		return;
	}
    
	// Se concatenan las áres para que se manden en un campo oculto.
	concatenaAreas()

	document.formua1.submit()
}

function universidad_onchange()
{
    if (document.formua1.universidad.value == "*Otra*")
    {
        document.getElementById("otra_uni").style.display = ""
        document.formua1.otra_universidad.focus()
    }
    else
    {
        document.getElementById("otra_uni").style.display = "none"
    }
}

function pais_onchange()
{
    if (document.formua1.pais.options[document.formua1.pais.selectedIndex].text == "Portugal")
    {
        document.getElementById("provincias").style.display = ""
        document.getElementById("states").style.display = "none"
    }
    else
    {
        document.getElementById("provincias").style.display = "none"
        document.getElementById("states").style.display = ""
    }
}

function compruebaAdjuntos()
{
	// Solo se comprueba que si elegió adjuntar haya seleccionado algún fichero.
	
	// Si se ha elegido adjuntar el curriculum debe introducir un archivo y que este sea correcto.
	if (document.formua1.envio_curriculum.selectedIndex == 0)
	{
		if (document.formua1.curriculum.value == "")
		{
			document.formua1.curriculum.focus()
			return "Confirmou juntar o seu Curriculum, mas não juntou nenhum ficheiro"
		}
	}

	// Se comprueba el expediente.
	if (document.formua1.envio_expediente.selectedIndex == 0)
	{
		if (document.formua1.expediente.value == "")
		{
			document.formua1.expediente.focus()
			return "Confirmou juntar informação, mas não juntou nenhum ficheiro"
		}
	}
	
	// Si se ha introducido un archivo para la carta se marca que se ha adjuntado.
	if (document.formua1.carta.value != "")
	{
		document.formua1.carta_adjunta.value = 1
	}
	
	return "";
}

function compruebaIdioma(aNiveles, strIdioma, strNombreIdioma)
{
    var iNivel, iNumNiveles, rtnValue

    rtnValue = ""
    
    // Solo se comprueba en caso de que no se haya introducido un idioma.
    if (strIdioma == "")
    {
        // Se mira si se ha rellenado al menos parte de la fila
        iNumNiveles = aNiveles.length
        for(iNivel = 0;iNivel < iNumNiveles; iNivel++)
        {
            if (document.formua1.elements[aNiveles[iNivel]].value != "")
            {
                document.formua1.elements[strNombreIdioma].focus()
                rtnValue = "Introduziu um nível mas não referiu a que idioma se refere."
                break;
            }
        }
    }
    
    return rtnValue;
}

function compruebaIdiomas()
{
    var rtnValue = ""

    // Idioma1
    rtnValue = compruebaIdioma(new Array("ne_idioma1", "nh_idioma1", "nj_idioma1", "titulacion_idioma1"), document.formua1.idioma1.value, "idioma1")
    if (rtnValue != "")
    { 
        return rtnValue;
    }
    
    // Idioma2
    rtnValue = compruebaIdioma(new Array("ne_idioma2", "nh_idioma2", "nj_idioma2", "titulacion_idioma2"), document.formua1.idioma2.value, "idioma2")
    if (rtnValue != "")
    { 
        return rtnValue;
    }

    // Idioma3
    rtnValue = compruebaIdioma(new Array("ne_idioma3", "nh_idioma3", "nj_idioma3", "titulacion_idioma3"), document.formua1.idioma3.value, "idioma3")
    if (rtnValue != "")
    { 
        return rtnValue;
    }
    
    return rtnValue;
}


function concatenaAreas()
{
	var iElement, strAreasConcatenadas, oElement
    var sArea = "area" // Para controlar el texto que se busca
	
	strAreasConcatenadas = ""
	for (iElement = 0;iElement < document.formua1.elements.length; iElement++)
	{
		oElement = document.formua1.elements[iElement]
		if ((oElement.tagName.toUpperCase() == "INPUT") && (oElement.type.toUpperCase() == "CHECKBOX"))
		{
			if ((oElement.id.substring(0,(sArea.length)).toLowerCase() == "area") && (oElement.checked))
			{
				strAreasConcatenadas += oElement.name + " / "
			}
		}
	}
	
	//Quitamos la última ' / '
	document.formua1.areas.value = strAreasConcatenadas.substring(0,(strAreasConcatenadas.length - 3))
}

function compruebaAnyo(anyo)
{
    var rtnValue = true

	if (anyo == "")
	{ 
	    return rtnValue
	}
	
	var myDate = new Date()
	if ((anyo.length != 4) || (isNaN(anyo)) ||  (parseInt(anyo) > (myDate.getFullYear() + 2)) || (parseInt(anyo) < 1900))
	{ 
		alert("O ano introduzido não é válido.")
		rtnValue = false
	}
	return rtnValue;
}

function compruebaIniOp(anyo, iFila)
{
    var ret
    var rtnValue = ""
    
    ret = compruebaAnyo(anyo)
  	if ((document.formua1.elements["opFin" + iFila].value == "") || (anyo == ""))
  	{ 
  	    return rtnValue
  	}
  	
    if (ret)
    {
        if ((anyo) > (document.formua1.elements["opFin" + iFila].value))
        {
            rtnValue = "O ano do início não pode ser superior ao ano em que finalizou a licenciatura."
            alert(rtnValue)
            window.event.returnValue = false
        }
    }
    return rtnValue;
}

function compruebaFinOp(anyo, iFila)
{
    var ret
    var rtnValue = ""
    
    ret = compruebaAnyo(anyo)
    if ((document.formua1.elements["opInicio" + iFila].value == "") || (anyo == ""))
    { 
        return rtnValue
    }

    if (ret)
    {
        if ((anyo) < (document.formua1.elements["opInicio" + iFila].value))
        {
            rtnValue = "O ano em que finalizou a licenciatura não pode ser menor que o ano em que a iniciou."
            alert(rtnValue)
            window.event.returnValue = false
        }
    }
    return rtnValue;
}

function isDate(sDate)
{
    if (sDate == "") {return false;}
    
    // is format OK?
    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
    var matchArray = sDate.match(datePat); 

    if (matchArray == null) {return false;}
    
    // parse date into variables
    var day = matchArray[1];
    var month = matchArray[3];
    var year = matchArray[5];

    // Format for Date object
    var sTmpDate = month + "/" + day + "/" + year
    var testDate=new Date(sTmpDate);
    if(testDate.getMonth()+1 == month)
    {
        return true;
    } 
    else
    {
        return false;
    }
}

function compruebaFilas(aFilas)
{
    var iCampo, iNumCampos, bCompleto
    
    bCompleto = false
    
    // Se mira si se ha rellenado al menos parte de la fila
    iNumCampos = aFilas.length
    for (iCampo = 0;iCampo < iNumCampos; iCampo++)
    {
        if (document.formua1.elements[aFilas[iCampo]].value != "")
        {
            bCompleto = true
        }
    }

    // Si hay alguno rellenado se comprueba si lo están todos.
    // Al primero que no lo esté se sale y se da un mensaje.
    if (bCompleto)
    {
        for (iCampo = 0;iCampo < iNumCampos; iCampo++)
        {
            if (document.formua1.elements[aFilas[iCampo]].value == "")
            {
                document.formua1.elements[aFilas[iCampo]].focus()
                return "Deve preencher todos os campos"
            }
        }
    }
    return "";
}

function compruebaTextAreas(sValue, sEvent)
{
    var MAX_LEN = 7500 // No 8000 porque si hay muchos caracteres raros, en respuesta.asp son más de 8000.
    switch (sEvent)
    {
        case "onkeypress":
            if (sValue.length > MAX_LEN) 
            {
                alert("O texto introduzido é demasiado extenso.")
                window.event.returnValue = false
            }
            break;
        case "onpaste":
            // Hay que sumar la longitud del texto a pegar.
            if ((sValue.length + window.clipboardData.getData("Text").length) > MAX_LEN)
            {
                alert("O texto introduzido é demasiado extenso.")
                window.event.returnValue = false
            }
    }
}

function envioCurr_Change()
{
	document.formua1.curriculum.disabled = (document.formua1.envio_curriculum.selectedIndex != 0)
}


function envioExp_Change()
{
	document.formua1.expediente.disabled = (document.formua1.envio_expediente.selectedIndex != 0)
}


