var oXmlHttp = null;
var iTimeoutId = null;
var txtField;
var txtEmail;
var txtTel;
var txtFax;

function validateReg(oEvent) {

  oEvent = oEvent || window.event;
  var txtField = oEvent.target || oEvent.srcElement;
  var btnSignUp = document.getElementById("btnSignUp");
  btnSignUp.disabled = true;

  if (iTimeoutId != null) {
      clearTimeout(iTimeoutId);
      iTimeoutId = null;
   }

  if (!oXmlHttp) {
      oXmlHttp = zXmlHttp.createRequest();
  } else if (oXmlHttp.readyState != 0) {
      oXmlHttp.abort();
  }

  oXmlHttp.open("get", "/validreg.php?" + txtField.name + "=" + encodeURIComponent(txtField.value),true);
  oXmlHttp.onreadystatechange = function() {
      if (oXmlHttp.readyState == 4) {
          if (oXmlHttp.status == 200) {

              var arrInfo = oXmlHttp.responseText.split("||");
              var imgError = document.getElementById("img" + txtField.id.substring(3) + "Error");
              var imgOk = document.getElementById("img" + txtField.id.substring(3) + "Ok");
              var btnRegUp = document.getElementById("btnRegUp");

                if (!eval(arrInfo[0])) {
                   imgError.title = arrInfo[1];
                   imgError.style.display = '';
                   imgOk.style.display = 'none';
                   txtField.valid = false;
                } else {
                   imgError.style.display = 'none';
                   imgOk.style.display = '';
                   txtField.valid = true;
                }
              btnRegUp.disabled = !isFormValid();
          } else {
            alert("При попытке с соединением с сервером возникла ошибка");
          }
      }
  };

  iTimeoutId = setTimeout(function() {
      oXmlHttp.send(null);
  }, 500);

};

function isFormValid() {
   var frmMain = document.frmReg;
   var blnValid = true;
   for (var i=0; i < frmMain.elements.length; i++) {
       if (typeof frmMain.elements[i].valid == 'boolean') {
           blnValid = blnValid && frmMain.elements[i].valid;
     }
   }
   return blnValid;
}
