//formchek.js
<!-- // begin

/*Variáveis para escrever no Status Bar dps da chamada à função promptEntry(s)*/
var sNomeCompleto = "o Nome Completo"
var sBi = "o Bilhete de Identidade"
var sContribuinte = "o Número de Contribuinte"
var sMoradaPrincipal = "a Morada Principal"
var sMoradaSecundaria = "a Morada Secundária"
var sTelemovel = "o Telemóvel"
var sTelefone = "o Telefone"
var sNacionalidade = "a Nacionalidade"
var sDataNascimento = "a Data de Nascimento"
var sEmail = "o Email"


/*Função que devolve um boolean consoante um determinado campo(formField) do form
esteja completado, mostrando msg de aviso caso esteja vazio*/

function validRequired(formField,fieldLabel)
{
	var result = true;
	
	if (formField.value == "")
	{
		alert('Tem que preencher o campo "' + fieldLabel +'" .');
		formField.select();
		formField.focus();
		result = false;
	}
	
	return result;
}



/*Valida se o username do mail introduzido nao excede 8 caracteres*/
function validEmail(formField,formField_prof_aluno,fieldLabel,required)
{
var result = true;
	
	if (required && !validRequired(formField,fieldLabel))
		result = false;

	if (result && (formField.value.length > 8) )
	{
		alert("Tem de ter um email com 8 caracteres.");
		formField.select();
		formField.focus();
		result = false;
	}
   	
	if (result && verificaEmail(formField,formField_prof_aluno))
		return result = true;

	else
		return result = false;
}


/*verifica se escolhido professor -> se o email nao tem números
se escolhido aluno -> tem de começar por "a" e ser só números a seguir*/
function verificaEmail(formField,formField1)
{
var result = true;

	if ( formField1[0].checked == true )
	{
		
		if (isAlphabetic(formField.value))
			result = true;
		
		else{
			alert("O email do tipo professor aceita apenas letras!");         
				formField.select();         
				formField.focus();        
				result = false;
		}
			
	}	


	else {
	
		if ( formField.value.charAt(0) == "a")
		{
			
			if (isNumeric(formField.value.substring(1, formField.value.length)))
				result = true;
			
			else{
				alert("O email de aluno é do tipo a11111!");         
				formField.select();         
				formField.focus();        
				result = false;
			}
		}
	
	
		else{
			alert("\nO email de aluno é do tipo a11111.");         
			formField.select();         
			formField.focus();        
			result = false;
		}

	}

return result;

}


// Verifica se a string contem so numeros
function isNumeric(string) {
   if (string.search) {
      if ((string.search(/[^\d\s]/) != -1) || (string.search(/\D/) != -1)) return false;
   }
   return true;
}

// Verifica se a string contem so letras
function isAlphabetic(string) {
   if (string.search) {
      if ((string.search(/[^a-zA-Z\s]/) != -1) || ( string.search(/[^a-zA-Z]/) != -1)) return false;
   }
   return true;
}




/*Retorna Boolean consoante o campo dado é preenchido só com numeros*/
function validNum(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		if (!isNumeric(formField.value))
 		{
 			alert('Tem que preencher só com números o campo "' + fieldLabel +'".');
			formField.select();
			formField.focus();		
			result = false;
		}
	}
	
	return result;
}

/*Retorna Boolean conforme a data introduzida obdeça à regra YYYY-MM-DD*/
function validDate(formField,fieldLabel,required)
{
	var result = true;
	var test = false;
	
	if ( !required && formField.value == "" ){
		test = true;
		
	}
	
	else{	


		if (validRequired(formField,fieldLabel))
 		{
 			var elems = formField.value.split("-");
 			test = true;

 			result = (elems.length == 3); // should be three components
 		
 			if (result)
 			{
 				var month = parseInt(elems[1],10);
  				var day = parseInt(elems[2],10);
 				var year = parseInt(elems[0],10);
				result = isNumeric(elems[0]) && (elems[0].length == 4) && isNumeric(elems[1]) && (month > 0) && (month < 13) && isNumeric(elems[2]) && (day > 0) && (day < 32);

 			}
 		
  			if (!result)
 			{
 				alert('Tem que por uma data no formato YYYY-MM-DD para o campo "' + fieldLabel +'".');
				formField.select();
				formField.focus();
				test = false;	
			}
		}
	}
	
	return test;
}



/*retorna true se o formFiel tem so numeros, false caso contrario*/
function num(formField,fieldLabel,required)
{
var result = true ;

	if (!isNumeric(formField.value))
	{
		alert('Tem que preencher só com números o campo "' + fieldLabel +'".');
		formField.select();
		formField.focus();		
		result = false;
	}
	
return result;
}


/*retorna true se formField tem 9 digitos, false caso contrario*/
function tem9digitos(formField)
{
result = true;

	if ( formField.value.length != 9 )
 	{
 		alert('Tem que pôr 9 digitos para o Telefone.');
		formField.select();
		formField.focus();
		result = false;
	}

return result;
}



/*Retorna boolean conforme: se campo preenchido, tem de ser numeros e com 9 digitos
se nao for obrigatorio (required==false) passa, mas se tiver alguma coisa tem de obdecer as regras*/
function validFone(formField,fieldLabel,required)
{
	var result = true;
	var test = true;
	if (required){
		if ( validRequired(formField,fieldLabel) ){
			if ( validNum(formField,fieldLabel,result)){
		  	
				if ( tem9digitos(formField) )
 					result = true;
				
			} else result = false;
		} else result = false;
	}
	else{
		if ( formField.value == "" ){
			result = true;
			
		}
		else{
	

			if ( num(formField,fieldLabel,true) )
			{
 					test=false;
					if ( !test && tem9digitos(formField) )
 						result = true;
					
					else result = false;
					
			}
			else result = false;
		}
	}
	return result;
}

/*Retorna boolean(True or False) conforme o campo do RADIO tenha sido preenchido
e alerta com msg de aviso se nao selecionado*/ 
function validRadio(formField,fieldLabel,required)
{
	var result = true;
	
	if ( required && ( formField[0].checked == false ) && ( formField[1].checked == false ) )
        {
                alert ( 'Tem de escolher "' + fieldLabel +'".' );
                result = false;
        }
	return result;
}



/* Mostra a string s no Status Bar*/
function promptEntry (s)
{ 
var pEntryPrompt = "Insira "
  window.status = pEntryPrompt + s
}


/* Valida se a string so contem mesmo Letras*/
function validAlpha(formField,fieldLabel,required){

	if(required){
		if ( validRequired(formField,fieldLabel) ){
			if (!isAlphabetic(formField.value) ){
				alert ( 'Tem de por so Letras no campo "' + fieldLabel +'".' );
				return false;
			}else return true;
		}return false;
	}
	else{
		if (formField.value=="")
			return true;
		else{
			if (!isAlphabetic(formField.value) ){
				alert ( 'Tem de por so Letras no campo "' + fieldLabel +'".' );
				return false;
			}else return true;
		}
	}
//return true;
}


/*retorna true se formField nao passa dos 8 digitos, false caso contrario*/
function temxnumeros(formField,fieldLabel,required,n)
{
var result = true;

	if (required){
		if(validRequired(formField,fieldLabel) && validNum(formField,fieldLabel,required)){

			if ( formField.value.length > n )
 			{
 				alert('Tem que pôr no maximo "' + n +'" digitos para o  "' + fieldLabel +'"');
				formField.select();
				formField.focus();
				result = false;
			}else result=true;
		}else result=false;
	}
	else{

		if(!(formField.value == "")){

			if(validNum(formField,fieldLabel,required)){

				if ( formField.value.length > n )
 				{
 					alert('Tem que pôr no maximo "' + n +'" digitos para o  "' + fieldLabel +'"');
					formField.select();
					formField.focus();
					result = false;
				}else result=true;

			}else return false;

		}else result=true;
	}			

return result;
}

/*Faz as verificações a cada um dos campos do form chamando a sua função correspondente*/
function validateForm(theForm)
{

//	if (!validRadio(theForm.prof_aluno, "Professor ou Aluno", true))
//		return false;
	
//	if (!validRequired(theForm.nome,"Nome Completo"))
//		return false;
	
//	if (!temxnumeros(theForm.BI,"Bilhete de Identidade", false,8))
//		return false;

//	if (!temxnumeros(theForm.contribuinte,"Contribuinte", false,9))
//		return false;

//	if (!validRequired(theForm.morada_principal,"Morada Principal"))
//		return false;

//	if (!validRequired(theForm.morada_secundaria,"Morada Secundária"))
//		return false;

//	if (!validFone(theForm.telemovel,"Telemóvel", false))
//		return false;

//	if (!validFone(theForm.telefone,"Telefone", false))
//		return false;

//	if (!validAlpha(theForm.nacionalidade,"Nacionalidade",false))
//		return false;

	if (!validDate(theForm.until_date,"Data", false))
		return false;

//	if (!validRadio(theForm.sexo,"Masculino ou Feminino", true))
//		return false;

//	if (!validEmail(theForm.email,theForm.prof_aluno ,"Email",true))
//		return false;

	return true;
}
// end -->




