Блин, неоднократно взорвал себе мозг, нечего не понимаю, офигеть я чайник 
В функции запускается ajax запрос, условие if() - это выдергивание нужного ответа сервера, т.е.
function func(x) {
  switch(x) {
    .....
    case "1":
      ...
      XMLHttp.onreadystatechange = function() {
        if (XMLHttp.readyState == 4) {
          if (XMLHttp.status == 200) {
            if (XMLHttp.responseText == "FAIL") { 
              alert("Ошибка"); return false;  
            }
          }
        }
      }
      break;
    .....
  }
}
Alert вылазит, но форма все равно отправляется, как будто return false; вовсе нет.
Попробывал так:
function func(x) {
  switch(x) {
    .....
    case "1":
      ...
      XMLHttp.onreadystatechange = function() {
        if (XMLHttp.readyState == 4) {
          if (XMLHttp.status == 200) {
            if (XMLHttp.responseText == "FAIL") { 
              alert("Ошибка"); x = false;  
            }
            else { x = true; }
          }
        }
      }
      break;
    .....
  }
  return x;
}
Но за пределами XMLHttp.onreadystatechange = function() переменная x неопределена 
Как заставить работать эту конструкцию ? 
