// jsFORM validator 2.0 by Enrico Sorcinelli - enrico.sorcinelli@sestante.net
// (C) Copyright 2000 

function CheckData (form,check_values,copyNotice,check_email,lang,bullet) {
   //alert (check_values + "\n" + copyNotice + "\n" + check_email + "\n" + lang);

   // definitions
   default_bullet = "-->";
   errorMail = new Array();
   errorMail[0] = '" non è un indirizzo E-Mail corretto.\nSiete pregati di tornare al modulo e di inserire un E-Mail valido.\nGrazie.\n\n';
   errorMail[1] = '" is not a valid e-mail address.\nPlease go back and type \na valid e-mail address\n\n';
   errorMissingFields = new Array();
   errorMissingFields[0] = 'I seguenti campi devono essere completati\nper l\'accettazione del modulo:\n\n';
   errorMissingFields[1] = 'The following fields must be filled out\n in order to accept your input\n\n';
   errorSelectList = new Array();
   errorSelectList[0] = 'Devi selezionare almeno una voce da\n\n';
   errorSelectList[1] = 'You must select almont one option from\n\n';
   if (!bullet)
      bullet = default_bullet;

   eval ("CheckValues = new Array(" + check_values + ");");
   CheckValues.toCheck = toCheck;
   labels = new Label;
   var el;
   var missingFields = '';

   for (var i = 0; i < form.elements.length; i++) {
      el = form.elements[i];
      if ( CheckValues.toCheck(el.name) ) {
         if (el.options) {
            if  (el.selectedIndex < 0) {
               //alert(errorSelectList[lang] + labels[el.name] + '\n\n' + copyNotice);
               //return false;
               missingFields += bullet + ' ' + labels[el.name] + '\n';
            }
         } 
         else if ( BlankString(el.value) || el.value.length == 0) {
            missingFields += bullet + ' ' + labels[el.name] + '\n';
         }
      }
   }
   if ( missingFields ){
       alert(errorMissingFields[lang] + missingFields + "\n" + copyNotice);
       return false;
   }
   if ( check_email && form.email.value.length > 0 && !CheckEmail(form.email) ) {
      alert('"' + form.email.value + errorMail[lang] + copyNotice);
      form.email.focus();
      return false;
   }
   return true;
}

function toCheck(elem) {
   for (var i = 1; i <= this.length; i+=2) {
      if (elem == this[i])  return true;
   }
   return false;
}

function Array() {
   this.length = Array.arguments.length;
   for (var i = 0; i < this.length; i++)
      this[i+1] = Array.arguments[i];
}

function Label() {
   for (var i = 1; i <= CheckValues.length; i+=2)
      this[CheckValues[i]] = CheckValues[i+1];
}

function BlankString(str) {
   var blanks = " \b\f\n\r\t";
   for (var i = 0; i < str.length; i++) {
      var ch = str.charAt(i);
      if ( ( ch != "") && (blanks.indexOf(ch) < 0) )
         return false;
   }
   return true;
}

function CheckEmail(formObj) {         
   i = formObj.value.indexOf("@");
   j = formObj.value.indexOf(".",i);
   k = formObj.value.indexOf(",");
   gt = formObj.value.indexOf(">");
   lt = formObj.value.indexOf("<");
   kk = formObj.value.indexOf(" ");
   ii = formObj.value.lastIndexOf("@");
   jj = formObj.value.lastIndexOf(".")+1;
   len = formObj.value.length;
   if ((i>0) && (j>(i+1)) && (k==-1) && (gt==-1) && (lt==-1) && (kk==-1) && (len-jj >=2) && (len-jj<=3) && (i==ii))
      return true;
   else {
      return false;
   }
}
