function checkForm(form) { 
      // Заранее объявим необходимые переменные 
      var el, // Сам элемент 
            elName, // Имя элемента формы 
            value, // Значение 
            type; // Атрибут type для input-ов 
      // Массив списка ошибок, по дефолту пустой 
      var errorList = []; 
      // Хэш с текстом ошибок (ключ - ID ошибки) 
      var errorText = { 
              1 : "Заполните пожалуйста поле 'Ф.И.О'",
              2 : "Заполните пожалуйста поле 'Контактный телефон'",
              3 : "Заполните пожалуйста поле 'e-mail'"
//            1 : "неверно заполнено поле 'высота последнего этажа'",
//            2 : "неверно заполнено поле 'высота подъема'",
//            3 : "неверно заполнено поле 'количество остановок'",
//            4 : "Не оставлен комментарий", 
//            5 : "Не выбрано любимое время суток" 
      } 
      // Получаем семейство всех элементов формы 
      // Проходимся по ним в цикле 
      for (var i = 0; i < form.elements.length; i++) { 
            el = form.elements[i]; 
            elName = el.nodeName.toLowerCase(); 
            value = el.value; 
            if (elName == "input") { // INPUT 
                  // Определяем тип input-а 
                  type = el.type.toLowerCase(); 
                  // Разбираем все инпуты по типам и обрабатываем содержимое 
                  switch (type) { 
                        case "text" : 
                              if (el.name == "name" && value == "") errorList.push(1); 
                              if (el.name == "phone" && value == "") errorList.push(2); 
                              if (el.name == "email" && value == "") errorList.push(3); 
//                              if (el.name == "last_level_height" && value == "") errorList.push(1); 
//                              if (el.name == "lifting_height" && value == "") errorList.push(2); 
//                              if (el.name == "stops_number" && value == "") errorList.push(3); 
                        break; 
                        case "file" : 
                              if (value == "") errorList.push(3); 
                        break; 
                        case "checkbox" : 
                              // Ничего не делаем, хотя можем 
                        break; 
                        case "radio" : 
                              // Ничего не делаем, хотя можем 
                        break; 
                        default : 
                              // Сюда попадают input-ы, которые не требуют обработки 
                              // type = hidden, submit, button, image 
                        break; 
                  } 
            } else if (elName == "textarea") { // TEXTAREA 
//                  if (value == "") errorList.push(4); 
            } else if (elName == "select") { // SELECT 
//                  if (value == 0) errorList.push(5); 
            } else { 
                  // Обнаружен неизвестный элемент ;) 
            } 
      } 
      // Финальная стадия 
      // Если массив ошибок пуст - возвращаем true 
      if (!errorList.length) return true; 
      // Если есть ошибки - формируем сообщение, выовдим alert 
      // и возвращаем false 
//      var errorMsg = "При заполнении формы допущены следующие ошибки:\n\n"; 
      var errorMsg = ""; 
      for (i = 0; i < errorList.length; i++) { 
            errorMsg += errorText[errorList[i]] + "\n"; 
      } 
      alert(errorMsg); 
      return false; 
}
