function showHideApplicationVolunteer(id, fieldName) {
	var elem = document.getElementById(id);
	var field = getObject(fieldName);
	var value = field.value;
	if(elem) {
		if(elem.style.display == 'none' && !value) {
			elem.style.display = '';
		} else if(value){
			elem.style.display = 'none';
		}
	} else  {
		alert("[showHide] Couldn't get element with id '" + id + "'. Check file 'funcoes.js'");
	}
}

function IsNumeric(ObjVal)  { 
	return /^\d+$/.test(ObjVal); 
}

function hide(id) {
	var elem = document.getElementById(id);
	elem.style.display = 'none';

}

function hideRecruitments(id, fieldName) {
	var elem = document.getElementById(id);
	var field = getObject(fieldName);
	
	if(field.value != 'true'){
		elem.style.display = '';
	} 

}

function selectRecruitment(index, index2, size) {
	var obj = getObject('recruitments' + index + '.jobs' + index2 +'.selected');
	if(obj != null && size != null && size == 1) {
		obj.checked = 'true';
	}
	
}
function showHideFieldTraining(index){
 var educationLevel = getObject('education.educationLevel' + index);
 if(educationLevel != null && educationLevel.value == 'C6') {
	 document.getElementById('education.fieldTraining'+index + '.row').style.display = '';
 }else {
	 document.getElementById('education.fieldTraining'+index + '.row').style.display = 'none';
 }

}
function checkProfessionalExperienceNumAsterisk(){
	var ep_a=getObject('currentExperience');
	var spo=getObject('professionalExperienceNumAsterisk');
	if(ep_a.value!= '' && ep_a.value!='07'
		&& ep_a.value!='08' && ep_a.value!='09' && ep_a.value!='06'){
		spo.innerHTML='*';
	}else{
		spo.innerHTML='';
	}
}

function checkEducationSituationAsterisk(i){
	var schoolSituation = getObject('education.schoolSituation' + i);
	var spo=getObject('education.completionYearAsterisk'+i);
	if(schoolSituation.value == '02'){
		spo.innerHTML='*';
	}else{
		spo.innerHTML='';
	}
}


function enableDisable1(id1, id2) {
		var obj = getObject(id1);
		var obj2 = getObject(id2);

		if (obj2 != null && obj2.checked && obj != null) {
			obj.disabled = '';
			
		} else if(obj != null){
			obj.value = '';
			obj.disabled = 'disabled';
		}
	}

function checkIdCardAditionalFields() {
		var obj = document.getElementById('idCardType');
		if (obj != null && obj.value == 'CB') {
			document.getElementById('emissionDate').style.display = '';
			document.getElementById('emissionDateLabel').style.display = '';
			document.getElementById('idCardAuthority').style.display = '';
			document.getElementById('idCardAuthorityLabel').style.display = '';
			document.getElementById('idCardInternationalEntityLabel').style.display = 'none';
		} else if(obj != null && (obj.value == 'CD'|| obj.value == 'CE')){
			document.getElementById('idCardAuthority').style.display = '';
			document.getElementById('idCardInternationalEntityLabel').style.display = '';
			document.getElementById('idCardAuthorityLabel').style.display = 'none';
			document.getElementById('emissionDate').style.display = 'none';
			document.getElementById('emissionDateLabel').style.display = 'none';
		} else {
			document.getElementById('emissionDate').style.display = 'none';
			document.getElementById('emissionDateLabel').style.display = 'none';
			document.getElementById('idCardAuthority').style.display = 'none';
			document.getElementById('idCardAuthorityLabel').style.display = 'none';
			document.getElementById('idCardInternationalEntityLabel').style.display = 'none';
		}
		
}



	function checkApplicationType() {
		var spontaneousApplication = document
				.getElementById('spontaneousApplicationRadio');
		var recruitmentApplication = document
				.getElementById('recruitmentApplicationRadio');
		if (spontaneousApplication != null && spontaneousApplication.checked) {
			document.getElementById('spontaneousApplication').style.display = '';
			document.getElementById('recruitmentApplication').style.display = 'none';
		} else if (recruitmentApplication != null
				&& recruitmentApplication.checked) {
			document.getElementById('spontaneousApplication').style.display = 'none';
			document.getElementById('recruitmentApplication').style.display = '';
		}
	}

	function refreshList(num, tbl, add) {
		var numElem = getObject(num);
		if (numElem != null) {
			var num = numElem.value;
			if (num != null) {
				for ( var i = 0; i < numElem.length - 1; i++) {
					var index = i + add;
					var tab = getObject(tbl + index);
					if (tab.style.display == 'none' && (i < num)) {
						tab.style.display = '';
					}
					if (tab.style.display == '' && (i >= num)) {
						tab.style.display = 'none';
					}
				}
			}
		}
	}

	function refreshRecruitments(number, name, name2){
		for(var i = 0; i < number; i++) {
			var obj = getObject(name + i);
			if(obj != null && obj.checked) {
				var jobs = getObject(name2 + i);
				if(jobs!= null) {
					jobs.style.display = '';
				}
			}
		}
	}


	function refreshTbl(slc, tbl, code, notCode) {
		var sel = getObject(slc);
		var tab = getObject(tbl);
		var show = false;
		if ((code != null && sel != null && sel.value == code)
				|| (notCode != null && sel != null && sel.value != notCode)) {
			show = true;
		}
		if (tab.style.display == 'none' && show) {
			tab.style.display = '';
		}
		if (tab.style.display == '' && !show) {
			tab.style.display = 'none';
		}
	}

	function showHideField2(id, id2) {
		var elem = document.getElementById(id);
		var elem2 = document.getElementById(id2);
		if (elem != null && elem.value == 'true') {
			elem2.style.display = '';
		} else {
			elem2.style.display = 'none';
		}
	}

	function validateTaxNumber() { 
		var errors = new Array();
		var focusField = '';
		var c; 
		var checkDigit = 0;
		var taxNumberObj = getObject('taxNumber');
		var nif = taxNumberObj.value;
		//Verifica se é nulo, se é numérico e se tem 9 dígitos 
		if(nif != null && IsNumeric(nif) && nif.length == 9) { 
			//Obtem o primeiro número do NIF 
			c = nif.charAt(0); 
	   
			//Verifica se o primeiro número é (1, 2, 5, 6, 8 ou 9) 
			if(c == '1' || c == '2' || c == '5' || c == '6' || c == '8' || c == '9') { 		
				//Calculo do Digito de Controle 
				checkDigit = c * 9;    
				var i = 0;      
				for(i = 2; i <= 8; i++) {        
					checkDigit += nif.charAt(i-1) * (10-i); 
				} 
	         
				checkDigit = 11 - (checkDigit % 11); 
	         
				//Se o digito de controlo é maior que dez, coloca-o a zero   
				if(checkDigit >= 10) 
					checkDigit = 0; 
	 
				//Compara o digito de controlo com o último numero do NIF 
				//Se igual, o NIF é válido. 
	           
				if(checkDigit != nif.charAt(8)) {
					errors[errors.length] = 'taxNumber';
					if (focusField == '') {
						focusField = taxNumberObj;
					}
				}
				
			} else {
				errors[errors.length] = 'taxNumber';
				if (focusField == '') {
					focusField = taxNumberObj;
				}
			}
		}  else {
			errors[errors.length] = 'taxNumber';
			if (focusField == '') {
				focusField = taxNumberObj;
			}
		}
		
		if (errors.length > 0) {
			focusField.focus();
			showErrorsClient(errors);
		}
		return (errors.length == 0);
	} 
	
	function validateEducations() {
		var errors = new Array();
		var focusField = '';
		var educationsNumber = getObject('educationNum');
		for ( var i = 0; i < educationsNumber.value; i++) {
			var educationLevel = getObject('education.educationLevel' + i);
			var schoolSituation = getObject('education.schoolSituation' + i);
			var fieldTraining = getObject('education.fieldTraining' + i);
			var country = getObject('education.country' + i);
			var completionYear = getObject('education.completionYear' + i);
			var course = getObject('education.course' + i);
			var educationalEstablishment = getObject('education.educationalEstablishment' + i);
			var duration = getObject('education.duration.time' + i);
			var durationUnits = getObject('education.durationUnits' + i);
			var averageFinal = getObject('education.averageFinal' + i);

			if (educationLevel != null) {
				if (educationLevel.value == '') {
					errors[errors.length] = 'education.educationLevel' + i;
					if (focusField == '') {
						focusField = educationLevel;
					}
				}
			}

			if (schoolSituation != null) {
				if (schoolSituation.value == '') {
					errors[errors.length] = 'education.schoolSituation' + i;
					if (focusField == '') {
						focusField = schoolSituation;
					}
				} else if (schoolSituation.value == '02') {
					if (completionYear != null && completionYear.value == '') {
						errors[errors.length] = 'education.completionYear' + i;
						if (focusField == '') {
							focusField = completionYear;
						}
					}
				}
			}

			if (fieldTraining != null && fieldTraining.value == '' && educationLevel != null) {
				errors[errors.length] = 'education.fieldTraining' + i;
				if (focusField == '') {
					focusField = fieldTraining;
				}
			}

			if (educationalEstablishment != null) {
				if (educationalEstablishment.value == '') {
					errors[errors.length] = 'education.educationalEstablishment' + i;
					if (focusField == '') {
						focusField = educationalEstablishment;
					}
				}
			}

			if (course != null && course.value == '') {
				errors[errors.length] = 'education.course' + i;
				if (focusField == '') {
					focusField = course;
				}
			}

		}
		if (errors.length > 0) {
			focusField.focus();
			showErrorsClient(errors);
		}
		return (errors.length == 0);
	}

	function validateVocationalTraining() {
		var errors = new Array();
		var focusField = '';
		var vocationalTrainingNumber = getObject('vocationalTrainingNum');
		for ( var i = 0; i < vocationalTrainingNumber.value; i++) {
			var startingYear = getObject('vocationalTraining.startingYear' + i);
			var course = getObject('vocationalTraining.course' + i);
			var educationalEstablishment = getObject('vocationalTraining.establishment' + i);
			var duration = getObject('vocationalTraining.duration.time' + i);
			var durationUnits = getObject('vocationalTraining.durationUnits' + i);

			if (startingYear != null && startingYear.value == '') {
				errors[errors.length] = 'vocationalTraining.startingYear' + i;
				if (focusField == '') {
					focusField = startingYear;
				}
			}
			if (duration != null && duration.value == '') {
				errors[errors.length] = 'vocationalTraining.duration' + i;
				if (focusField == '') {
					focusField = duration;
				}
			}
			if (durationUnits != null && durationUnits.value == '') {
				errors[errors.length] = 'vocationalTraining.duration' + i;
				if (focusField == '') {
					focusField = durationUnits;
				}
			}

			if (educationalEstablishment != null) {
				if (educationalEstablishment.value == '') {
					errors[errors.length] = 'vocationalTraining.establishment' + i;
					if (focusField == '') {
						focusField = educationalEstablishment;
					}
				}
			}

			if (course != null && course.value == '') {
				errors[errors.length] = 'vocationalTraining.course' + i;
				if (focusField == '') {
					focusField = course;
				}
			}

		}
		if (errors.length > 0) {
			focusField.focus();
			showErrorsClient(errors);
		}
		return (errors.length == 0);
	}

	function validateLanguageSkills() {
		var errors = new Array();
		var focusField = '';
		var languageSkills = getObject('selectedLanguageSkillsNum');
		var numberOfLanguageSkills = languageSkills.value;
		for ( var i = 1; i <= numberOfLanguageSkills; i++) {
			var languageSkill = getObject('languageSkill' + i);
			if (languageSkill != null && languageSkill.value == '') {
				errors[errors.length] = 'languageSkill' + i;
				if (focusField == '') {
					focusField = languageSkill;
				}
			}
		}
		if (errors.length > 0) {
			focusField.focus();
			showErrorsClient(errors);
		}
		return (errors.length == 0);
	}

	function validateIdCard() {
		var errors = new Array();
		var focusField = '';
		var idCardType = document.getElementById('idCardType');
		if (idCardType != null) {
			var idCard = document
			.getElementById('idCard');
			var emissionDateYear = getObject('idCard.emissionDate.year');
			var emissionDateMonth = getObject('idCard.emissionDate.month');
			var emissionDateDay = getObject('idCard.emissionDate.day');
			var validityDateYear = getObject('idCard.validity.year');
			var validityDateMonth = getObject('idCard.validity.month');
			var validityDateDay = getObject('idCard.validity.day');
			var idCardAuthority = getObject('idCardAuthority');

			if((idCardType.value == 'CB' || idCardType.value == 'CD' || idCardType.value == 'CE') && (idCardAuthority != null && idCardAuthority.value == '')) {
				errors[errors.length] = 'idCard';
				if (focusField == '') {
					focusField = idCardType;
				}
			} 
			
			if (idCardType.value == 'CB' && ((emissionDateYear == null
					&& emissionDateMonth == null
					&& emissionDateDay == null) ||(emissionDateYear != null
					&& emissionDateMonth != null
					&& emissionDateDay != null
					&& (emissionDateYear.value == ''
							|| emissionDateMonth.value == '' || emissionDateDay.value == '')))) {

				errors[errors.length] = 'idCard';
				if (focusField == '') {
					focusField = idCardType;
				}
			} else if(idCardType.value != 'CB' && ((validityDateYear == null
					&& validityDateMonth == null
					&& validityDateDay == null) ||(validityDateYear != null
					&& validityDateMonth != null
					&& validityDateDay != null
					&& (validityDateYear.value == ''
							|| validityDateMonth.value == '' || validityDateDay.value == '')))) {

				errors[errors.length] = 'idCard';
				if (focusField == '') {
					focusField = idCardType;
				}
				
			}
		
				
		} 
		if (errors.length > 0 && focusField != null) {
			focusField.focus();
			showErrorsClient(errors);
		}
		return (errors.length == 0);
	}

	function validateCPProfessionalExperience() {
		var errors = new Array();
		var focusField = '';
		var cpProfessionalExperience = document
				.getElementById('cpProfessionalExperience');
		if (cpProfessionalExperience != null
				&& cpProfessionalExperience.value == 'true') {
			var startingYear = getObject('cpProfessionalExperience.startingYear');
			var job = getObject('cpProfessionalExperience.job');
			if (startingYear != null && startingYear.value == '') {
				errors[errors.length] = 'cpProfessionalExperience.startingYear';

				if (focusField == '') {
					focusField = startingYear;
				}
			}
			if (job != null && job.value == '') {
				errors[errors.length] = 'cpProfessionalExperience.job';
				if (focusField == '') {
					focusField = job;
				}
			}
		}
		if (errors.length > 0) {
			focusField.focus();
			showErrorsClient(errors);
		}
		return (errors.length == 0);
	}

	function validateMaxDistance() {
		var errors = new Array();
		var focusField = '';
		var acceptDistanceCondition = document
				.getElementById('acceptDistanceCondition');
		if (acceptDistanceCondition != null
				&& acceptDistanceCondition.value == 'true') {
			var maxDistance = getObject('maxDistance');
			if (maxDistance != null && maxDistance.value == '') {
				errors[errors.length] = 'maxDistance';

				if (focusField == '') {
					focusField = maxDistance;
				}
			}
		}
		if (errors.length > 0) {
			focusField.focus();
			showErrorsClient(errors);
		}
		return (errors.length == 0);
	}

	function validateOtherMobilePhones() {
		var errors = new Array();
		var focusField = '';
		var otherMobilePhone = document.getElementById('othermobile');
		if (otherMobilePhone != null && otherMobilePhone.style.display == '') {
			var mobilePhone = getObject('mobilePhone1');
			if (mobilePhone != null ) {
				var number = mobilePhone.value;
				if(number == ''){
				errors[errors.length] = 'othermobile';

				if (focusField == '') {
					focusField = mobilePhone;
				}
				} else {
					var pattern = /^9(1|2|3|6)\d{7}$/;
					var b = pattern.test(number);
					if(!pattern.test(number)) {
						errors[errors.length] = 'othermobile';

						if (focusField == '') {
							focusField = mobilePhone;
						}
					}
				}
			} 
		}
		if (errors.length > 0) {
			focusField.focus();
			showErrorsClient(errors);
		}
		return (errors.length == 0);
	}

	function validateProfessionalExperience() {
		var errors = new Array();
		var focusField = '';
		var currentSituation = getObject('currentExperience');

		if (currentSituation != null
				&& (currentSituation.value != '07'
						&& currentSituation.value != '' && currentSituation.value != '08' && currentSituation.value != '09' && currentSituation.value != '06')) {
			var professionalExperienceNum = getObject('professionalExperienceNum');
			if(professionalExperienceNum.value == 0){
				errors[errors.length] = 'professionalExperienceNum';
				if (focusField == '') {
					focusField = professionalExperienceNum;
				}
			}
			for ( var i = 0; i < professionalExperienceNum.value; i++) {
				var job = getObject('professionalExperience.job' + i);
				var jobActivity = getObject('professionalExperience.jobActivity' + i);
				var jobLocal = getObject('professionalExperience.jobLocal' + i);
				var employer = getObject('professionalExperience.employer' + i);
				var startingYear = getObject('professionalExperience.startingYear');
				var finalYear = getObject('professionalExperience.finalYear');
				var duration = getObject('professionalExperience.duration' + i);
				var durationUnits = getObject('professionalExperience.durationUnits' + i);

				if (job != null && job.value == '') {
					errors[errors.length] = 'professionalExperience.job' + i;
					if (focusField == '') {
						focusField = job;
					}
				}

				if (jobActivity != null && jobActivity.value == '') {
					errors[errors.length] = 'professionalExperience.jobActivity' + i;
					if (focusField == '') {
						focusField = jobActivity;
					}
				}
				
				if (jobLocal != null && jobLocal.value == '') {
					errors[errors.length] = 'professionalExperience.jobLocal' + i;
					if (focusField == '') {
						focusField = jobLocal;
					}
				}

				if (employer != null && employer.value == '') {
					errors[errors.length] = 'professionalExperience.employer' + i;
					if (focusField == '') {
						focusField = employer;
					}
				}

				if (startingYear != null && startingYear.value == '') {
					errors[errors.length] = 'professionalExperience.startingYear' + i;
					if (focusField == '') {
						focusField = startingYear;
					}
				}

				if (finalYear != null && finalYear.value == '') {
					errors[errors.length] = 'professionalExperience.finalYear' + i;
					if (focusField == '') {
						focusField = finalYear;
					}
				}

				if (duration != null && duration.value == '') {
					errors[errors.length] = 'professionalExperience.duration' + i;
					if (focusField == '') {
						focusField = duration;
					}
				}
				if (durationUnits != null && durationUnits.value == '') {
					errors[errors.length] = 'professionalExperience.duration' + i;
					if (focusField == '') {
						focusField = durationUnits;
					}
				}
			}
		}
		if (errors.length > 0) {
			focusField.focus();
			showErrorsClient(errors);
		}
		return (errors.length == 0);
	}

	function validateRecruitment() {
		var errors = new Array();
		var focusField = '';

		var spontaneousApplication = document
				.getElementById('spontaneousApplicationRadio');
		var recruitmentApplication = document
				.getElementById('recruitmentApplicationRadio');

		if (spontaneousApplication != null && spontaneousApplication.checked) {
			var job = getObject('job');
			if (job != null && job.value == '') {
				errors[errors.length] = 'job';
				if (focusField == '') {
					focusField = job;
				}
			}
		} else if (recruitmentApplication != null
				&& recruitmentApplication.checked) {
		var check = false;
		for(var i = 0; i < 20; i++) {

					
					var count = 0;
					var countPref = 0;
					var jobCount = 0;
					for(var j = 0; j < 100; j++) {
						var job = getObject('recruitments' + i +'.jobs' + j + '.selected');
						if (job != null) {
						jobCount++;
						if(job.checked) {
							count++;
							check = true;
					
						}
						}
					}

					
				}
	
				if(!check) {
					errors[errors.length] = 'recruitmentjob';
					if (focusField == '') {
						focusField = recruitmentApplication;
					}
				}
			}
			
			

		if (errors.length > 0) {
			focusField.focus();
			showErrorsClient(errors);
		}
		return (errors.length == 0);
	}

	function cleanRecruitments() {
		for(var i = 0; i < 5; i++) {
			var obj = getObject('recruitments.selected' + i);
			if(obj != null) {
				obj.checked = '';
				var jobs = getObject('jobs' + i);
				if(jobs!= null) {
					for(var j = 0; j < 100; j++) {
						var job = getObject('recruitments' + i +'.jobs' + j + '.selected');
						if(job != null) {
							job.checked='';
							var pref = getObject('recruitments' + i + '.jobs' + j + '.preference' + j);
							if(pref != null) {
								pref.value='';
								pref.disabled = 'disabled';
							}
						}
					}					
				}
			}
		}
	}

	function cleanRecruitment(i) {
		var obj = getObject('recruitments.selected' + i);
		if(obj != null) {
			obj.checked = '';
			var jobs = getObject('jobs' + i);
			if(jobs!= null) {
				for(var j = 0; j < 100; j++) {
					var job = getObject('recruitments' + i +'.jobs' + j + '.selected');
					if(job != null) {
						job.checked='';
						var pref = getObject('recruitments' + i + '.jobs' + j + '.preference' + j);
						if(pref != null) {
							pref.value='';
							pref.disabled = 'disabled';
						}
					}
				}					
			}
		}
	}

	function showHideRecruitment(id,i) {
		var elem = document.getElementById(id);
		if(elem) {
			if(elem.style.display == 'none') {
				elem.style.display = '';
			} else {
				elem.style.display = 'none';
				cleanRecruitment(i);
			}
		} 
	}
