function dictionaryEnglish(FieldName,PhraseNumber) {
 var s=new Array();
 s[1]="Field ";
 s[2]=" Is empty";
 s[3]=" Not a valid number";
 s[4]=" Email address seems incorrect (check @ and .'s)";
 s[5]=" This username contains invalid characters.";
 s[6]=" This domain name contains invalid characters.";
 s[7]=" The domain name does not seem to be valid.";
 s[8]=" Destination IP address is invalid!";
 s[9]=" The address must end in a well-known domain or two letter country.";
 s[10]=" This address is missing a hostname!";
 s[11]=" The text is too long. Keep it under 35 characters";
 return (s[1]+FieldName+":"+s[PhraseNumber]+"\n");

}
function dictionaryPortuguese(FieldName,PhraseNumber) {
 var s=new Array();
 s[1]="Campo ";
 s[2]=" Está vazio";
 s[3]=" Não é um número válido";
 s[4]=" Endereço de email parece incorrecto (verifique @ e os .)";
 s[5]=" Este email contém um nome de utilizador com caracteres inválidos.";
 s[6]=" Este email contém um nome de dominio com caracteres inválidos.";
 s[7]=" The domain name does not seem to be valid.";
 s[8]=" Endereço IP de destino inválido!";
 s[9]=" O endereço tem de terminar com um dominio conhecido ou com duas letras de um país.";
 s[10]=" Falta o nome de domínio neste endereço.";
 s[11]=" O texto é demasiado longo. Limite-o a 35 caracteres.";
 return (FieldName+":"+s[PhraseNumber]+"\n");

}

function dictionary(FieldName,PhraseNumber) {
  return dictionaryPortuguese(FieldName,PhraseNumber);
}

function textCheck(FieldName,Str) {
  if (Str == "") {
    return dictionary(FieldName,2);
  }
   else
    return "";
}

function textLimitedCheck(FieldName,Str) {
  if (Str=="") {
    return dictionary(FieldName,2);
  }
  else if (Str.length>35) {
    return dictionary(FieldName,11);
  }
   else
    return "";
}
function numberCheck(FieldName,Number) {
   if ((Number=="")||(isNaN(Number))){
    return dictionary(FieldName,3);
   }
   else
    return "";
}

function phonenumberCheck(FieldName,Number) {
   if ((Number=="")||(isNaN(Number))||(Number.length<9)){
    return dictionary(FieldName,3);
   }
   else
    return "";
}

function priceCheck(FieldName,Number) {
   if (isNaN(Number)){
    return dictionary(FieldName,3);
   }
   else
    return "";
}

function emailCheck (FieldName,emailStr) {
 var checkTLD=1;
 var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
 var emailPat=/^(.+)@(.+)$/;
 var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
 var validChars="\[^\\s" + specialChars + "\]";
 var quotedUser="(\"[^\"]*\")";
 var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
 var atom=validChars + '+';
 var word="(" + atom + "|" + quotedUser + ")";
 var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
 var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
 var matchArray=emailStr.match(emailPat);
 if (matchArray==null) {
    return dictionary(FieldName,4);
 }
 var user=matchArray[1];
 var domain=matchArray[2];
 for (i=0; i<user.length; i++) {
  if (user.charCodeAt(i)>127) {
    return dictionary(FieldName,5);
  }
 }
 for (i=0; i<domain.length; i++) {
  if (domain.charCodeAt(i)>127) {
    return dictionary(FieldName,6);
  }
 }
 if (user.match(userPat)==null) {
    return dictionary(FieldName,7);
 }
 var IPArray=domain.match(ipDomainPat);
 if (IPArray!=null) {
   for (var i=1;i<=4;i++) {
     if (IPArray[i]>255) {
        return dictionary(FieldName,8);
     }
   }
   return "";
 }
 var atomPat=new RegExp("^" + atom + "$");
 var domArr=domain.split(".");
 var len=domArr.length;
 for (i=0;i<len;i++) {
   if (domArr[i].search(atomPat)==-1) {
       return dictionary(FieldName,7);
   }
 }
 if (checkTLD && domArr[domArr.length-1].length!=2 && 
     domArr[domArr.length-1].search(knownDomsPat)==-1) {
       return dictionary(FieldName,9);
 }
 if (len<2) {
       return dictionary(FieldName,10);
 }
 return "";
}


function validate(form) {
 var PhraseError="";
 for (i=0;i<form.length;i++) {
  var tempobj=form.elements[i];
  if (tempobj.src) {
   var aux=tempobj.src.split("/");
   var type=aux[aux.length-1];

   if (type) {
 	if (type=="email"){
         PhraseError+=emailCheck (tempobj.name,tempobj.value);
      }
      else if (type=="text"){
  	   PhraseError+=textCheck(tempobj.name,tempobj.value);
      }
      else if (type=="textLimited"){
  	   PhraseError+=textLimitedCheck(tempobj.name,tempobj.value);
      }
      else if (type=="number"){
	   PhraseError+=numberCheck(tempobj.name,tempobj.value);
      }
      else if (type=="phonenumber"){
	   PhraseError+=phonenumberCheck(tempobj.name,tempobj.value);
      }
      else if (type=="price"){
	   PhraseError+=priceCheck(tempobj.name,tempobj.value);
      }
    }
   }
 }
 if (PhraseError!="") {
  alert(PhraseError);
  return false;
 }
 else 
  return true;
 
}



