function strcmp ( str1, str2 ) {
    // http://kevin.vanzonneveld.net
    // +   original by: _argos
    // +      input by: Steve Hilder
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +    revised by: gorthaur
    // *     example 1: strcmp( 'waldo', 'owald' );
    // *     returns 1: 1
    // *     example 2: strcmp( 'owald', 'waldo' );
    // *     returns 2: -1
 
    return ( ( str1 == str2 ) ? 0 : ( ( str1 > str2 ) ? 1 : -1 ) );
}




function validaFormContacto(frm){  
	//para possibilitar fazer o login depois do registo
  
	var fieldRequired = Array("nomecont", "emailcont", "assuntocont", "mensagemcont");
	var fieldDescription = Array("Nome", "E-mail", "Assunto", "Mensagem");
	var falertMsg = "Preencha por favor os seguintes campos:\n";
	var alertMsg = null;
    
	if (formValidator(frm,fieldRequired, fieldDescription, falertMsg)){
		//email
//		if (validateEmail(frm.email.value))
//			alertMsg=null;
//		else
//			alertMsg = 'O email é inválido.';
    
		if (alertMsg==null){
			//alert('OK');
			// caso o formulário esteja bem preenchido chama o ajax
			callAjax(frm.nomecont.value, frm.emailcont.value, frm.assuntocont.value, frm.mensagemcont.value);
			//return true;
		}else{
			alert(alertMsg);
			//return false;
		}    
	}else{
		//return false;
	}
}


//valida os campos obrigatÃ³rios de um form 
function formValidator(formobj, fieldRequired, fieldDescription, alertMsg){
	var l_Msg = alertMsg.length;
 	
	for (var i = 0; i < fieldRequired.length; i++){
  		var obj = formobj.elements[fieldRequired[i]];
	   	//alert (fieldRequired[i] + '---' + obj.type);
  		if (obj){
	   		switch(obj.type){
   				case "select-one":
    				if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == ""){
     					alertMsg += " - " + fieldDescription[i] + "\n";
    				}
    			break;
   				case "select-multiple":
    				if (obj.selectedIndex == -1){
				    	alertMsg += " - " + fieldDescription[i] + "\n";
				    }
    			break;
   				case "text":
   				case "textarea":
			   	case "password":
    				if (obj.value == "" || obj.value == null){
     					alertMsg += " - " + fieldDescription[i] + "\n";
    				}
    			break;
   				default:
   			}
			
   			if (obj.type == undefined){
    			var blnchecked = false;
    			for (var j = 0; j < obj.length; j++){
     				if (obj[j].checked){
      					blnchecked = true;
     				}
    			}
    			if (!blnchecked){
     				alertMsg += " - " + fieldDescription[i] + "\n";
    			}
   			}
  		}
 	}
 	
	if (alertMsg.length == l_Msg){
  		return true;
 	}else{
  		alert(alertMsg);
  		return false;
 	}
}




//testa se uma data Ã© vÃ¡lida
function isDate(pYear,pMonth,pDay){
	var date = new Date(pYear,pMonth-1,pDay);
	var year = date.getYear();
	if (year<2000){ year = year + 1900; } 
	var month = parseInt(date.getMonth()+1);
	var day = date.getDate();
	
	//alert ( year+'=='+pYear +'/'+ month+'=='+pMonth+'/'+ day+'=='+pDay);
	if ((year==pYear) && (month==pMonth) && (day==pDay)){
		return true;
	}else{
		return false;
	}
}



var emailsOK = [];
var emailsKO = [];
var totalArrobas = 0;
var totalArrobas = 0;




function checkTelefone(A){
	if(A!=null && !A.strip().blank()){
		var B=/^\d{9}?$/;
		if(A.match(B)){
			return true;
		}else{
			return false;
		}
	}else{
		return true;
	}
};

function checkEmails(destiny){
	emailsOK = [];
	emailsKO = [];
	
	//recolhe todos os emails encontrados na string	e remove os elementos não necessários
	var emailsReceived = destiny.toLowerCase().gsub(/[ \t\n\b\r]/,'').split(',');
	var patternEmail = /^(\w|\.|-)+@(\w|\.|-)+(\.[a-zA-Z]{2,3})$/;
	var flag = false;

	//recolhe os emails correctos e errados // arrays globais
	if(Object.isArray(emailsReceived)){
		//limpa os elementos duplicados - é Case sensitive
		emailsReceived = emailsReceived.uniq();

		for(var i=0; i<emailsReceived.length;i++){
			//pode acontecer o utilizador escrever um separador diferente do suportado e são emails válidos
			totalArrobas = getTotalArrobas(emailsReceived[i].strip());

			if(patternEmail.match(emailsReceived[i].strip()) && totalArrobas==1){
				emailsOK.push(emailsReceived[i].strip());
				flag = true;
			}else{
				if(!emailsReceived[i].strip().blank()){
					emailsKO.push(emailsReceived[i].strip());
				}
			}
		}
	}else{
		//apenas strings de emails com 1 arroba são suportados
		totalArrobas = getTotalArrobas(emailsReceived.strip());
		
		//pode ter apenas inserido 1 (sem ,)
		if(patternEmail.match(emailsReceived.strip()) && totalArrobas==1){
			emailsOK.push(emailsReceived.strip());
			flag = true;
		}else{
			if(!emailsReceived.strip().blank()){
				emailsKO.push(emailsReceived[i].strip());
			}
		}
	}
	return flag;
}

function getTotalArrobas(str){
	//pode acontecer o utilizador escrever um separador diferente do suportado
	var arrayArrobas = str.strip().match(/\@/g);
	var totalArrobas = 0;
	
	if(Object.isArray(arrayArrobas)){
		totalArrobas = arrayArrobas.length;
	}else{
		totalArrobas = 0;
	}
	return totalArrobas;
}





function validaFormRegisto(frm){
	var fieldRequired = Array("nomeRegisto", "paisRegisto", "telefoneRegisto", "emailRegisto");
	//var fieldDescription = Array("Nome", "País", "Telefone", "E-mail");
	//var falertMsg = "Preencha por favor os seguintes campos:\n";
	
	//variáveis de cat_registo
	var fieldDescription = Array(fieldNome, fieldPais, fieldTelefone, fieldEmail);
	var falertMsg = mensagemFieldsErroVazios + "\n"; 
	var alertMsg = null;

	
	if(frm != null){
		var paramNome = frm.nomeRegisto.value;
		var paramPais = frm.paisRegisto.value;
		var paramEmail = frm.emailRegisto.value;
		var paramTelefone = frm.telefoneRegisto.value;
	}else{
		alert(mensagemObrigatoriosErro);
		return false;
	}
	
	if (formValidator(frm,fieldRequired, fieldDescription, falertMsg)){
		//email
		if (checkEmails(paramEmail)){
			//telefone
			if(checkTelefone(paramTelefone)){
				if (alertMsg==null){
					//alert('OK');
					// caso o formulário esteja bem preenchido chama o ajax
					callAjaxRegisto(frm); //conteudos/cat_registo.php
					//return true;
				}else{
					alert(alertMsg);
					//return false;
				}
			}else{
				alert(mensagemErroTelefone);
			}
		}else{
			alert(mensagemErroEmail);
		}    
	}else{
		//return false;
	}
}


function validaRegisto(frm){
	
	if(frm != null){
		var paramNome = frm.nomeRegisto.value;
		var paramPais = frm.paisRegisto.value;
		var paramEmail = frm.emailRegisto.value;
	}else{
		alert("Por favor. Verifique o preenchimento do formulário.");
		return false;
	}
	
	

	/*check empty ou only space string*/
	if(!paramNome.blank()){
		if(!paramPais.blank()){
			if (checkEmails(_paramParaZero)){
				if(!_paramMensagemZero.blank()){
					//preenchemos a string de envio de emails
					if(Object.isArray(emailsOK) &&  emailsOK.length>0){
						for (var index = 0, len = emailsOK.length; index < len; ++index) {
							var item = emailsOK[index];
							$('_emailsZero').value += item;
						 
							if((index+1)<len){
								$('_emailsZero').value += ',';
							}
						}
						emailsOK.clear();
					}//trata dos emails válidos
										
					if(Object.isArray(emailsKO) &&  emailsKO.length>0){
						var stringKO = '';
						for (var index = 0, len = emailsKO.length; index < len; ++index) {
							var item = (index+1) + " - '" + emailsKO[index] + "'";
							stringKO += item;
							//if((index+1)<len){
							stringKO += '\n';
							//}
						}
						emailsKO.clear();

						if (confirm("Foram detectados os seguintes e-mails inválidos: \n\n"+  stringKO +"\n Pretende continuar?")){
							return true;
						}else{
							//limpa os dados actuais
							$('_emailsZero').value = '';
							return;
						}
					}//trata dos emails inválidos

					return true;
				}else{
					alert('por favor verifique o preenchimento do campo "mensagem"');
				}
			}else{
				alert('por favor verifique o preenchimento do campo "para"'); //problemas com o formato dos emails
			}
		}else{
			alert('por favor verifique o preenchimento do campo "para"');
		}
	}else{
		alert('por favor verifique o preenchimento do campo "assunto"');
	}
return false;	
}




function validaFormInformacao(frm){
	var fieldRequired = Array("nomeInformacao", "contactoInformacao", "mensagemInformacao");
	//var fieldDescription = Array("Nome", "Contacto", "Mensagem");
	//var falertMsg = "Preencha por favor os seguintes campos:\n";
	
	//variáveis de cat_registo
	var fieldDescription = Array(fieldNome, fieldContacto, fieldMensagem); //cat_produto
	var falertMsg = mensagemFieldsErroVazios + "\n"; 
	
	var alertMsg = null;

	
	if(frm != null){
		var paramNome = frm.nomeInformacao.value;
		var paramMensagem = frm.mensagemInformacao.value;
		var paramContacto = frm.contactoInformacao.value;
	}else{
		alert(mensagemObrigatoriosErro);
		return false;
	}
	
	if (formValidator(frm,fieldRequired, fieldDescription, falertMsg)){
		//email
		if (checkEmails(paramContacto) || checkTelefone(paramContacto)){
			if (alertMsg==null){
				//alert('OK');
				// caso o formulário esteja bem preenchido chama o ajax
				callAjaxInformacao(frm); //conteudos/cat_registo.php
				//return true;
			}else{
				alert(alertMsg);
				//return false;
			}
		}else{
			alert('Por favor verifique o preenchimento do campo "contacto"');
		}    
	}else{
		//return false;
	}
}


