/*
 * checkform.js verze 2.0
 */ 

var borders = new Array('red','#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 '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; 
}

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]);
    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 '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;
  }
}
