/*
 * checkform.js verze 2.2
 * 
 * changes : 
 * 2.1 :
 *   checkField pridany case fak_email, fak_psc, fak_telefon
 *   checkForm pridany case fak_email, fak_psc
 *   
 * 2.2 :
 *   funkce checkForm : pridana kontrola na !== null, aby pri neexistenci policka nedoslo k chybe a testovaly se alespon ty ostatni   
 */ 
 
var borders = new Array('#9b1f1f','#aaaaaa'); // prvni je cerveny, druhy vychozi
var images = new Array('images/false.gif','images/true.gif');
var prefix = 'img_';
var objRegExpZip = /^([0-9.]{5,6}|[0-9 ]{5,6})$/i;
var objRegExpPhone = /^[+]?[()/0-9. -]{9,}$/i;
var objRegExpMail = /^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$/i;
 
function trim(arg) {
  return (arg || "").replace( /^\s+|\s+$/g, "");
}
 
function writeImage(id, styl, htmlClass) {
  var check;
  if (styl === undefined)
    styl = null;
  if (htmlClass === undefined)
    htmlClass = null;
  check = (checkField(document.getElementById(id)) === false ? images[0] : images[1]);
  document.write('<img id="'+prefix+id+'" '+(styl !== null ? 'style="'+styl+'"':'')+' '+(htmlClass !== null ? 'class="'+htmlClass+'"':'')+' alt="x" src="'+check+'" />')
}
 
function checkField(self) {
  var ok;
  if (self.type == 'checkbox') {
    ok = (self.checked === true ? 1 : 0);
  } else {
    switch (self.name) {
      case 'email' :
        ok = (objRegExpMail.test(self.value) ? 1 : 0);
      break;
      case 's2f_email' :
        ok = (objRegExpMail.test(self.value) ? 1 : 0);
      break;
      case 'fak_email' :
        ok = (objRegExpMail.test(self.value) ? 1 : 0);
      break;
      case 'phone' :
        ok = (objRegExpPhone.test(self.value) ? 1 : 0);
      break;
      case 'telefon' :
        ok = (objRegExpPhone.test(self.value) ? 1 : 0);
      break;
      case 'fak_telefon' :
        ok = (objRegExpPhone.test(self.value) ? 1 : 0);
      break;
      case 'psc' :
        ok = (objRegExpZip.test(self.value) ? 1 : 0);
      break;
      case 'post_code' :
        ok = (objRegExpZip.test(self.value) ? 1 : 0);
      break;
      case 'fak_psc' :
        ok = (objRegExpZip.test(self.value) ? 1 : 0);
      break;
      case 'login' :
        ok = (self.value.length >= 5 ? 1 : 0);
      break;
      case 'passwd' :
        ok = (self.value.length >= 6 ? 1 : 0);
      break;
      default :
        ok = (trim(self.value) != '' ? 1 : 0);
      break;
    }
  }
  if (document.getElementById(prefix+self.id) !== null) {
    document.getElementById(prefix+self.id).src = images[ok];
  }
  if (ok == 1) {
    self.style.borderColor = borders[1];
  }
  return ok == 1 ? true : false; 
}
 
function checkForm(ids,labels) {
  var countErrors = 0;
  var error = '';
  var ok;
  var msgPart1 = '  •  Položka ';
  var msgPart2 = ' nebyla vyplněna.';
  var msgPart3 = ' má špatný formát';
  if (labels===undefined) {
    labels = new Array;
  }
  for(i=0;i<ids.length;i++){
    if (document.getElementById(ids[i]) !== null) {
      var elem = document.getElementById(ids[i]);
      elem.value = trim(elem.value);
      switch (elem.name) { 
        case 'email' :
          if (!objRegExpMail.test(elem.value)) {
            error += msgPart1 + (!labels[i] ? ids[i] : labels[i]) + msgPart3 + "\n";
            ok = 0;
          } else {
            ok = 1;
          }
        break;
        case 's2f_email' :
          if (!objRegExpMail.test(elem.value)) {
            error += msgPart1 + (!labels[i] ? ids[i] : labels[i]) + msgPart3 + "\n";
            ok = 0;
          } else {
            ok = 1;
          }
        break;
        case 'fak_email' :
          if (!objRegExpMail.test(elem.value)) {
            error += msgPart1 + (!labels[i] ? ids[i] : labels[i]) + msgPart3 + "\n";
            ok = 0;
          } else {
            ok = 1;
          }
        break;
        case 'phone' :
          if (!objRegExpPhone.test(elem.value)) {
            error += msgPart1 + (!labels[i] ? ids[i] : labels[i]) + msgPart3 + "\n";
            ok = 0;
          } else {
            ok = 1;
          }
        break;
        case 'telefon' :
          if (!objRegExpPhone.test(elem.value)) {
            error += msgPart1 + (!labels[i] ? ids[i] : labels[i]) + msgPart3 + "\n";
            ok = 0;
          } else {
            ok = 1;
          }
        break;
        case 'psc' :
          if (!objRegExpZip.test(elem.value)) {
            error += msgPart1 + (!labels[i] ? ids[i] : labels[i]) + msgPart3 + "\n";
            ok = 0;  
          } else {
            ok = 1;
          }
        break;
        case 'fak_psc' :
          if (!objRegExpZip.test(elem.value)) {
            error += msgPart1 + (!labels[i] ? ids[i] : labels[i]) + msgPart3 + "\n";
            ok = 0;  
          } else {
            ok = 1;
          }
        break;
        case 'post_code' :
          if (!objRegExpZip.test(elem.value)) {
            error += msgPart1 + (!labels[i] ? ids[i] : labels[i]) + msgPart3 + "\n";
            ok = 0;  
          } else {
            ok = 1;
          }
        break;
        case 'login' : 
          if (elem.value.length < 5) {
            error += msgPart1 + (!labels[i] ? ids[i] : labels[i]) + msgPart3 + "\n";
            ok = 0;
          } else {
            ok = 1
          }
        break;
        case 'passwd' : 
          if (elem.value.length < 6) {
            error += msgPart1 + (!labels[i] ? ids[i] : labels[i]) + msgPart3 + "\n";
            ok = 0;
          } else {
            ok = 1;
          }
        break;
        default :
          if ((elem.value=='') || (elem.type == 'checkbox' && elem.checked === false)) {
            error += msgPart1 + (!labels[i] ? ids[i] : labels[i]) + msgPart2 + "\n";
            ok = 0;  
          } else {
            ok = 1;
          }
        break;
      }
      elem.style.borderColor = borders[(ok == 0 ? 0 : 1)];
    }
  }
  if (error!='') {
    alert(error);
    return false;
  } else {
    return true;
  }
}
