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}$/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 !== null) {
    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 'phone' :
          ok = (objRegExpPhone.test(self.value) ? 1 : 0);
        break;
        case '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 '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; 
  } return 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++){
    var elem = document.getElementById(ids[i]);
    if (elem !== null) {
      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 '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 '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;
  }
}
