function trimNumber(str) {
	while (str.indexOf(' ') != -1)
		str = str.replace(" ","");
	while (str.indexOf('-') != -1)
		str = str.replace("-","");
	return str;
} 

function IsNumericPhone(sText)
{
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;
 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
}

/*
 * @param {Object} inpPhone - Numero de Telefone a testar, com ou sem indicativo
 * @param {Object} inpPhoneTitle - Titulo do Telefone, ex. Telefone, Telemovel...
 * @param {Object} ptCountryCode - O codigo do pais PT com + ou sem
 * @param {Object} comboCountryCode - O codigo do pais selecionado com + ou sem
 */
function testPhoneNumber(inpPhone,inpPhoneTitle,ptCountryCode,comboCountryCode){

	var phoneMaxLength = 9;
	var phoneMinLength = 5;
	var ptNumbers = new Array("91","92","93","96","8","7","2")
	var ptCode,PhoneNumber,CountryCode,title,i,testNumber;
	var inputPhoneNumber = document.getElementById(inpPhone);
	
	PhoneNumber = trimNumber(document.getElementById(inpPhone).value.toString());
	title = document.getElementById(inpPhoneTitle).innerHTML.toString();
	CountryCode = trimNumber(comboCountryCode.toString());
	ptCode = trimNumber(ptCountryCode.toString());
	
	while (PhoneNumber.indexOf('0',0) == 0) {
		PhoneNumber = PhoneNumber.substring(1);
	}

	if (PhoneNumber.indexOf('+',0) == 0) 
		PhoneNumber = PhoneNumber.substring(1);
		
	if (ptCode.indexOf('+',0) == 0)
		ptCode = ptCode.substring(1);
	if (CountryCode.indexOf('+',0) == 0)
		CountryCode = CountryCode.substring(1);
		
	if (CountryCode == ptCode) {
		if(!IsNumericPhone(PhoneNumber)){
			alert("O número de " + title + " não é um número PT válido!");
			return false;
		}
		if (PhoneNumber.indexOf(ptCode, 0) == 0) 
			PhoneNumber = PhoneNumber.substring(ptCode.length);

		if(PhoneNumber.length != phoneMaxLength){
			alert("O número de " + title + " não contém " + phoneMaxLength + " digitos!");
			return false;
		}

		testNumber=false;
		for (i = 0; i < ptNumbers.length; i++) 
			if (PhoneNumber.indexOf(ptNumbers[i], 0) == 0) {
				testNumber = true;
				break;
			}

		if(!testNumber){
			alert("O número de " + title + " não é um número PT válido!");
			return false;
		}

		PhoneNumber = '+' + ptCode + PhoneNumber;
		inputPhoneNumber.value = PhoneNumber;
		return true;
	}
	
	if(PhoneNumber.length >= phoneMinLength + CountryCode.length){
		PhoneNumber = '+' + PhoneNumber;
		inputPhoneNumber.value = PhoneNumber;
		return true;
	}
	else{
		alert("Invalid number of " + title + "!");
		return false;
	}
}
