// ---------------------------------------------------------------------- //
//                                                                        //
// function FICS_regverify:                                               //
//                                                                        //
// Verify a the registration form elements.                               //
// This function is invoked by the onSubmit handler. The handler should   //
// return whatever value this function returns.                           //
//                                                                        //
// ---------------------------------------------------------------------- //

function FICS_regverify(f, lang){
  var msg;
  var empty_fields     = "";
  var short_fields     = "";
  var long_fields      = "";
  var unchecked_fields = "";
//
// Loop through all elements in the form, looking at all text and
// textarea elements that are not defined optional. Check if they are 
// empty and make a list of them. Check also if the checkboxes are all
// checked.
//

  for (var i = 0; i < f.length; i++){
      var e = f.elements[i];
      if(((e.type == "text") || (e.type == "textarea")) && !e.optional){
        if((e.value == null) || (e.value == "") || isblank(e.value)){
          empty_fields += "\n     " + e.name;
          continue;
        }
        if(e.minlength > e.value.length ){
          short_fields += "\n     " + e.name;
        }
        if(e.maxlength < e.value.length ){
          long_fields += "\n     " + e.name;
        }
      }
      else if(e.type == "checkbox"){
        if(e.checked == false){
          unchecked_fields += "\n     " + e.name;
        }
      }
  }

  if (!empty_fields && !short_fields && !long_fields && !unchecked_fields){
     if (lang == 'Italian'){
         msg  = "________________________________________________________\n\n";
         msg += "Stiamo esaminando la sua richiesta di registrazione.      \n";
         msg += "Questa procedura puo\' richiedere alcuni secondi,         \n";
         msg += "In ogni caso al suo termine, le sara\' mostrata una       \n";
         msg += "pagina web col risultato.                                 \n";
         msg += "________________________________________________________\n\n";
     }
     else if (lang == 'German'){
         msg  = "________________________________________________________\n\n";
         msg += "Ihre Angaben werden bearbeitet.                           \n";
         msg += "Dies kann einige Sekunden dauern.                         \n";
         msg += "Sobald der Vorgang abgeschlossesn ist                     \n";
         msg += "wird eine neue Seite mit dem Ergebnis angezeigt.          \n";
         msg += "________________________________________________________\n\n";
     }
     else if (lang == 'Swedish'){
         msg  = "________________________________________________________\n\n";
         msg += "Formuläret bearbetas vilket kan ta ett par sekunder.      \n";
         msg += "Så fort bearbetningen är klar kommer resultatet att visas.\n";
         msg += "                                                          \n";
         msg += "                                                          \n";
         msg += "________________________________________________________\n\n";
     }
     else if (lang == 'Turkish'){
         msg  = "________________________________________________________\n\n";
         msg += "Girdi&#287iniz veriler &#351u anda i&#351leme kondu.      \n";
         msg += "Bu i&#351lem bir ka&#231 saniye s&#252rebilir.            \n";
         msg += "&#304&#351lem tamamland&#305ktan sonra sonucu yeni bir    \n";
         msg += "sayfada g&#246sterilecektir.                              \n";
         msg += "________________________________________________________\n\n";
     }
     else if (lang == 'Polish'){
         msg  = "________________________________________________________\n\n";
         msg += "Twoje zg?oszenie jest aktualnie przetwarzane. Operacja    \n";
         msg += " ta moz.e trwac' kilka sekund. Po jej zakon'czeniu        \n";
         msg += " zostanie wys'wietlona nowa strona z wynikiem.            \n";
         msg += "________________________________________________________\n\n";
     }
     else if (lang == 'Portuguese'){
         msg  = "________________________________________________________\n\n";
         msg += "Your form is currently being processed.                   \n";
         msg += "This operation can take a few seconds.                    \n";
         msg += "As soon as it is completed a new page with the result will\n";
         msg += "be shown.                                                 \n";
         msg += "________________________________________________________\n\n";
     }
     else{
         msg  = "________________________________________________________\n\n";
         msg += "Your form is currently being processed.                   \n";
         msg += "This operation can take a few seconds.                    \n";
         msg += "As soon as it is completed a new page with the result will\n";
         msg += "be shown.                                                 \n";
         msg += "________________________________________________________\n\n";
     }
     alert(msg);
     return true;
  }

  
  if (lang == 'Italian'){
     msg  = "____________________________________________________________\n\n";
     msg += "Il form non e\' stato inviato a causa dei seguenti errori:\n";
     msg += "La preghiamo di correggerli prima di inviare di nuovo.\n";
     msg += "____________________________________________________________\n\n";
  }
  else if (lang == 'German'){
     msg  = "____________________________________________________________\n\n";
     msg += "Ihre Registrierung konnte aufgrund der folgenden Fehler       \n";
     msg += "nicht bearbeitet werden: Bitte korrigieren Sie die            \n";
     msg += "fehlerhaften Angaben und schicken Sie das Formular erneut ab. \n";
     msg += "____________________________________________________________\n\n";
  }
  else if (lang == 'Swedish'){
     msg  = "____________________________________________________________\n\n";
     msg += "Formuläret kunde inte sparas på grund av följande fel.        \n";
     msg += "Var vänlig korrigera dessa och försök igen.                   \n";
     msg += "____________________________________________________________\n\n";
  }
  else if (lang == 'Turkish'){
    msg  = "____________________________________________________________\n\n";
    msg += "Form i&#351leme konmad&#305 zira &#351u hatay&#305/hatalar&#305\n";
    msg += "i&#231ermekte. L&#252tfen hatay&#305/hatalar&#305 d&#252zeltip \n";
    msg += "formu yeniden g&#246nderin.                                    \n";
    msg += "____________________________________________________________\n\n";
  }
  else if (lang == 'Portuguese'){
     msg  = "____________________________________________________________\n\n";
     msg += "The form was not submitted because of the following error(s)\n";
     msg += "Please correct the error(s) and re-submit\n";
     msg += "____________________________________________________________\n\n";
  }
  else{
     msg  = "____________________________________________________________\n\n";
     msg += "The form was not submitted because of the following error(s)\n";
     msg += "Please correct the error(s) and re-submit\n";
     msg += "____________________________________________________________\n\n";
  }

  if (empty_fields){
     if (lang == 'Italian'){
        msg += "Questi dati non sono stati inviati:" +
               empty_fields + "\n\n";
     }
     else if (lang == 'German'){
        msg += "Sie haben folgende notwendige Angaben nicht gemacht:" +
               empty_fields + "\n\n";
     }
     else if (lang == 'Swedish'){
        msg += "Följande fält var tomma: " +
               empty_fields + "\n\n";
     }
     else if (lang == 'Turkish'){
        msg += "Doldurulmas&#305 gereken &#351u alan(lar) bo&#351 "
               + "b&#305rak&#305 lm&#305&#351:" +
               empty_fields + "\n\n";
     }
     else if (lang == 'Portuguese'){
        msg += "The following required field(s) were empty:" + 
               empty_fields + "\n\n";
     }
     else{
        msg += "The following required field(s) were empty:" + 
               empty_fields + "\n\n";
     }
  }
  if (short_fields){
     if (lang == 'Italian'){
        msg += "Questi dati contengono meno lettere " +
               "minimo consentito:" + short_fields + "\n\n";
     }
     else if (lang == 'German'){
        msg += "Die nachfolgenden Felder enthalten nicht genügend Zeichen" +
               "Mindestlänge:" + short_fields + "\n\n";
     }
     else if (lang == 'Swedish'){
        msg += "Följande fält hade för få tecken:" + short_fields + "\n\n";
     }
     else if (lang == 'Turkish'){
        msg += "&#350u alanlar izin verilen en az say&#305da harften daha " +
               "az say&#305da harfle doldurulmu&#351:" + short_fields + "\n\n";
     }
     else if (lang == 'Portuguese'){
        msg += "The following field(s) had less characters than " +
               "the minimum allowed:" + short_fields + "\n\n";
     }
     else{
        msg += "The following field(s) had less characters than " +
               "the minimum allowed:" + short_fields + "\n\n";
     }
  }
  if (long_fields){
     if (lang == 'Italian'){
        msg += "Questi dati contengono piu\' lettere del " +
               "massimo consentito:" + long_fields + "\n\n";
     }
     else if (lang == 'German'){
        msg += "Die nachfolgenden Felder enthalten zu viele Zeichen." +
               "Maximale Länge:" + long_fields + "\n\n";
     }
     else if (lang == 'Swedish'){
        msg += "Följande fält hade för många tecken:" + long_fields + "\n\n";
     }
     else if (lang == 'Turkish'){
        msg += "&#350u alanlar izin verilen en &#231ok say&#305da harften "
               + "daha &#231ok say&#305da harfle doldurulmu&#351:" 
               + long_fields + "\n\n"
     }
     else if (lang == 'Portuguese'){
        msg += "The following field(s) had more characters than " +
               "the maximum allowed:" + long_fields + "\n\n";
     }
     else{
        msg += "The following field(s) had more characters than " +
               "the maximum allowed:" + long_fields + "\n\n";
     }
  }
  if (unchecked_fields){
     if (lang == 'Italian'){
        msg += "Per potersi registrare su FICS deve accettare tutte" +
               "le condizioni.\n\n";
     }
     else if (lang == 'German'){
        msg += "Um die Registrierung erfolgreich abzuschliessen müssen Sie" +
               " - durch Anklicken - allen Nutzungsbedingungen zustimmen."  +
               "\n\n";
     }
     else if (lang == 'Swedish'){
        msg += "Du måste acceptera alla villkoren genom att kryssa i " +
               "checkboxarna för att bli medlem hos FICS.\n\n";
     }
     else if (lang == 'Turkish'){
        msg += "FICS &#252yesi olmak i&#231in b&#252t&#252n &#351artlar&#305 "
               + "kabul etmelisiniz, bunu da t&#252m kutular&#305 " 
               + "i&#351aretleyerek yapmal&#305s&#305n&#305z.\n\n";
     }
     else if (lang == 'Portuguese'){
        msg += "You have to accept all conditions, by checking all " +
               "checkboxes, if you want to be a FICS member.\n\n";
     }
     else{
        msg += "You have to accept all conditions, by checking all " +
               "checkboxes, if you want to be a FICS member.\n\n";
     }
  }

  alert(msg);
  return false;
}

// ---------------------------------------------------------------------- //
//                                                                        //
// function CheckName:                                                    //
//                                                                        //
// Verify that the first name is at least 2 chars.     .                  //
// This function is invoked by the onChange handler. The handler should   //
// return whatever value this function returns.                           //
//                                                                        //
// ---------------------------------------------------------------------- //

function CheckName(e, lang){
  if ((e.value == null) || (e.value == "") || isblank(e.value)){
     if (lang == 'Italian'){
        msg = "Il Nome non puo\' essere lasciato vuoto.\n\n";
     }
     else if (lang == 'German'){
        msg = "Bitte geben Sie den Vornamen an.\n\n";
     }
     else if (lang == 'Swedish'){
        msg = "Förnamnet får ej lämnas tomt.\n\n";
     }
     else if (lang == 'Turkish'){
        msg = "Ad alan&#305 bo&#351 b&#305rak&#305lamaz.\n\n";
     }
     else if (lang == 'Portuguese'){
        msg = "The First Name Field cannot be empty\n\n";
     }
     else{
        msg = "The First Name Field cannot be empty\n\n";
     }
     alert(msg);
     return false;
  }

  if (e.value.length < 2){
     e.value = "";
     if (lang == 'Italian'){
        msg = "Il Nome contiene meno di 2 lettere\n\n";
     }
     else if (lang == 'German'){
        msg = "Der Vorname muss mindestens zwei Buchstaben lang sein.\n\n";
     }
     else if (lang == 'Swedish'){
        msg = "Förnamnet måste bestå av minst 2 tecken.\n\n";
     }
     else if (lang == 'Turkish'){
        msg = "Ad alan&#305 ikiden daha &#231ok harfle doldurulmal&#305. \n\n";
     }
     else if (lang == 'Portuguese'){
        msg = "The First Name field has less characters than " +
              "the minimum allowed\n\n";
     }
     else{
        msg = "The First Name field has less characters than " +
              "the minimum allowed\n\n";
     }
     alert(msg);
     return false;
  }

  var NoChar = /[^a-zA-Z ]/;
  var result = e.value.match(NoChar);

  if (result != null){
     e.value = "";
     if (lang == 'Italian'){
        msg = "Il Nome puo\' conenere solo lettere maiuscole e " +
              "minuscole.\n\n";
     }
     else if (lang == 'German'){
        msg = "Der Vorname darf nur Klein- und Grossbuchstaben von " +
              "a-z enthalten (Keine Umlaute und kein scharfes s).\n\n";
     }
     else if (lang == 'Swedish'){
        msg = "Förnamnet får endast innehålla bokstäverna A-Z " +
              "(stora eller små).  Använd \'a\', \'a\' och \'o\' " +
              "istället för \'å\', \'ä\' och \'ö\'\n\n";
     }
     else if (lang == 'Turkish'){
        msg = "Ad alan&#305 sadece &#304ngiliz alfabesindeki b&#252y&#252k "
              + "ve k&#252&#231&#252k harfleri i&#231erebilir.\n\n";
     }
     else if (lang == 'Portuguese'){
        msg = "The First Name field can only contain upper and " +
              "lower case letters a-z and A-Z\n\n";
     }
     else{
        msg = "The First Name field can only contain upper and " +
              "lower case letters a-z and A-Z\n\n";
     }
     alert(msg);
     return false;
  }

  return true;
  
}

// ---------------------------------------------------------------------- //
//                                                                        //
// function CheckSecondName:                                              //
//                                                                        //
// Verify that the second name is a character.                            //
// This function is invoked by the onChange handler. The handler should   //
// return whatever value this function returns.                           //
//                                                                        //
// ---------------------------------------------------------------------- //

function CheckSecondName(e, lang){
  var NoChar = /[^a-zA-Z ]/;
  var result = e.value.match(NoChar);
  if (result != null){
     e.value = "";
     if (lang == 'Italian'){
        msg = "L\'iniziale del Secondo Nome puo\' conenere solo lettere " +
              "maiuscole e minuscole.\n\n";
     }
     else if (lang == 'German'){
        msg = "Der Nachname darf nur Klein- und Grossbuchstaben von " +
              "a-z enthalten (Keine Umlaute und kein scharfes s).\n\n";
     }
     else if (lang == 'Swedish'){
        msg = "Fältet för initialer får endast innehålla bokstäverna A-Z " +
              "(stora eller små). Använd \'a\', \'a\' och \'o\' istället " +
              "för \'å\', \'ä\' och \'ö\'\n\n";
     }
     else if (lang == 'Turkish'){
        msg = "G&#246bek ad&#305 alan&#305 sadece &#304ngiliz alfabesindeki "
              + "b&#252y&#252k ve k&#252&#231&#252k harfleri "
              + "i&#231erebilir.\n\n";
     }
     else if (lang == 'Portuguese'){
        msg = "The Second Name Initial Name field can only contain upper " +
              " and lower case letters a-z and A-Z\n\n";
     }
     else{
        msg = "The Second Name Initial Name field can only contain upper " +
              " and lower case letters a-z and A-Z\n\n";
     }
     alert(msg);
     return false;
  }

  return true;
  
}

// ---------------------------------------------------------------------- //
//                                                                        //
// function CheckFamilyName:                                              //
//                                                                        //
// Verify that the family name isat least 2 chars.                        //
// This function is invoked by the onChange handler. The handler should   //
// return whatever value this function returns.                           //
//                                                                        //
// ---------------------------------------------------------------------- //

function CheckFamilyName(e, lang){
  if ((e.value == null) || (e.value == "") || isblank(e.value)){
     if (lang == 'Italian'){
        msg = "Il Cognome non puo\' essere lasciato vuoto.\n\n";
     }
     else if (lang == 'German'){
        msg = "Bitte geben Sie den Nachnamen an.\n\n";
     }
     else if (lang == 'Swedish'){
        msg = "Efternamnet får ej lämnas tomt.\n\n";
     }
     else if (lang == 'Turkish'){
        msg = "Soyad&#305 alan&#305 bo&#351 b&#305rak&#305lamaz.\n\n";
     }
     else if (lang == 'Portuguese'){
        msg = "The Family Name Field cannot be empty\n\n";
     }
     else{
        msg = "The Family Name Field cannot be empty\n\n";
     }
     alert(msg);
     return false;
  }

  if (e.value.length < 2){
     e.value = "";
     if (lang == 'Italian'){
        msg = "Il Cognome contiene meno di 2 lettere\n\n";
     }
     else if (lang == 'German'){
        msg = "Der Nachname muss mindestens zwei Buchstaben lang sein.\n\n";
     }
     else if (lang == 'Swedish'){
        msg = "Efternamnet måste bestå av minst 2 tecken\n\n";
     }
     else if (lang == 'Turkish'){
        msg = "Soyad&#305 alan&#305 ikiden daha &#231ok harfle "
              + "doldurulmal&#305.\n\n";
     }
     else if (lang == 'Portuguese'){
        msg = "The Family Name field has less characters than the " +
              "minimum allowed\n\n";
     }
     else{
        msg = "The Family Name field has less characters than the " +
              "minimum allowed\n\n";
     }
     alert(msg);
     return false;
  }

  var NoChar = /[^a-zA-Z ]/;
  var result = e.value.match(NoChar);

  if (result != null){
     e.value = "";
     if (lang == 'Italian'){
        msg = "Il Cognome puo\' conenere solo lettere maiuscole e " +
              "minuscole.\n\n";
     }
     else if (lang == 'German'){
        msg = "Der Vorname darf nur Klein- und Grossbuchstaben von " +
              "a-z enthalten (Keine Umlaute und kein scharfes s).\n\n";
     }
     else if (lang == 'Swedish'){
        msg = "Efternamnet får endast innehålla bokstäverna A-Z " +
              "(stora eller små).  Använd \'a\', \'a\' och \'o\' istället " +
              "för \'å\', \'ä\' och \'ö\'.\n\n";
     }
     else if (lang == 'Turkish'){
        msg = "G&#246bek ad&#305 alan&#305 sadece &#304ngiliz alfabesindeki "
              + "b&#252y&#252k ve k&#252&#231&#252k harfleri "
              + "i&#231erebilir.\n\n";
     }
     else if (lang == 'Portuguese'){
        msg = "The Family Name field can only contain upper and lower " +
              "case letters a-z and A-Z\n\n";
     }
     else{
        msg = "The Family Name field can only contain upper and lower " +
              "case letters a-z and A-Z\n\n";
     }
     alert(msg);
     return false;
  }

  return true;
  
}

// ---------------------------------------------------------------------- //
//                                                                        //
// function CheckHandle:                                                  //
//                                                                        //
// Verify that the handle is at least 3 and no more than 17 chars.        //
// This function is invoked by the onChange handler. The handler should   //
// return whatever value this function returns.                           //
//                                                                        //
// ---------------------------------------------------------------------- //

function CheckHandle(e, lang){
  if ((e.value == null) || (e.value == "") || isblank(e.value)){
     if (lang == 'Italian'){
        msg = "L\'Handle non puo\' essere lasciata vuota.\n\n";
     }
     else if (lang == 'German'){
        msg = "Bitte geben Sie ein Handle an.\n\n";
     }
     else if (lang == 'Swedish'){
        msg = "Fältet för användarnamn får ej lämnas tomt.\n\n";
     }
     else if (lang == 'Turkish'){
        msg = "Kullan&#305c&#305 ad&#305 alan&#305 bo&#351 "
              + "b&#305rak&#305lamaz.\n\n";
     }
     else if (lang == 'Portuguese'){
        msg = "The Handle Field cannot be empty\n\n";
     }
     else{
        msg = "The Handle Field cannot be empty\n\n";
     }
     alert(msg);
     return false;
  }

  if (e.value.length < 3){
     e.value = "";
     if (lang == 'Italian'){
        msg = "L\'Handle contiene meno di 3 lettere\n\n";
     }
     else if (lang == 'German'){
        msg = "Das Handle muss mindestens drei Buchstaben lang sein.";
     }
     else if (lang == 'Swedish'){
        msg = "L\Användarnamnet måste bestå av minst 3 bokstäver\n\n";
     }
     else if (lang == 'Turkish'){
        msg = "Kullan&#305c&#305 ad&#305 alan&#305 &#252&#231ten daha "
              + "fazla harf i&#231ermelidir.\n\n";
     }
     else if (lang == 'Portuguese'){
        msg = "The Handle field has less characters than the minimum " +
              "allowed\n\n";
     }
     else{
        msg = "The Handle field has less characters than the minimum " +
              "allowed\n\n";
     }
     alert(msg);
     return false;
  }

  if (e.value.length > 17){
     e.value = "";
     if (lang == 'Italian'){
        msg = "L\'Handle non puo\' contenere piu\' di 17 lettere\n\n";
     }
     else if (lang == 'German'){
        msg = "Das Handle darf nicht mehr als 17 Buchstaben lang sein.";
     }
     else if (lang == 'Swedish'){
        msg = "Användarnamnet kan som mest bestå av 17 bokstäver\n\n";
     }
     else if (lang == 'Turkish'){
        msg = "Kullan&#305c&#305 ad&#305 alan&#305 onyediden "
              + "daha az harf i&#231ermelidir. \n\n";
     }
     else if (lang == 'Portuguese'){
        msg = "The Handle field has more characters than the maximum " + 
              "allowed\n\n";
     }
     else{
        msg = "The Handle field has more characters than the maximum " + 
              "allowed\n\n";
     }
     alert(msg);
     return false;
  }

  var NoChar = /[^a-zA-Z ]/;
  var result = e.value.match(NoChar);

  if (result != null){
     e.value = "";
     if (lang == 'Italian'){
        msg = "L'Handle puo\' conenere solo lettere maiuscole e " +
              "minuscole.\n\n";
     }
     else if (lang == 'German'){
        msg = "Das Handle darf nur Klein- und Grossbuchstaben von a-z " +
              "enthalten (Keine Umlaute und kein scharfes s).\n\n";
     }
     else if (lang == 'Swedish'){
        msg = "Användarnamnet får bara innehålla bokstäverna A-Z " +
              "(stora eller små). Använd \'a\', \'a\' och \'o\' istället " +
              "för \'å\', \'ä\' och \'ö\'.\n\n";
     }
     else if (lang == 'Turkish'){
        msg = "alan&#305 sadece &#304ngiliz alfabesindeki b&#252y&#252k "
              + "ve k&#252&#231&#252k harfleri i&#231erebilir.\n\n";
     }
     else if (lang == 'Portuguese'){
        msg = "The Handle field can only contain upper and lower case " +
              "letters a-z and A-Z\n\n";
     }
     else{
        msg = "The Handle field can only contain upper and lower case " +
              "letters a-z and A-Z\n\n";
     }
     alert(msg);
     return false;
  }

  return true;
}  

// ---------------------------------------------------------------------- //
//                                                                        //
// function CheckEmail:                                                   //
//                                                                        //
// Verify that the Email field is not empty.                              //
// This function is invoked by the onChange handler. The handler should   //
// return whatever value this function returns.                           //
//                                                                        //
// ---------------------------------------------------------------------- //

function CheckEmail(e, lang){
  if ((e.value == null) || (e.value == "") || isblank(e.value)){
     if (lang == 'Italian'){
        msg = "L\'Email non puo\' essere lasciato vuoto.\n\n";
     }
     else if (lang == 'German'){
        msg = "Bitte geben Sie Ihre Emailadresse an.\n\n";
     }
     else if (lang == 'Swedish'){
        msg = "Fältet för e-postadress får ej lämnas tomt.\n\n";
     }
     else if (lang == 'Turkish'){
        msg = "E-posta adresi alan&#305 bo&#351 b&#305rak&#305lamaz.\n\n";
     }
     else if (lang == 'Portuguese'){
        msg = "The Email Field cannot be empty\n\n";
     }
     else{
        msg = "The Email Field cannot be empty\n\n";
     }
     alert(msg);
     return false;
  }
  return true;
}

function isblank(s){
  for (var i = 0; i < s.length; i++){
      var c = s.charAt(i);
      if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
  }
  return true;
}
