// JavaScript Document
function trim(str) {
	return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}
function checkForm(form) {
    // Заранее объявим необходимые переменные
    var el, // Сам элемент
        elName, // Имя элемента формы
        value, // Значение
        type; // Атрибут type для input-ов
    // Массив списка ошибок, по дефолту пустой
    var errorList = [];
    // Хэш с текстом ошибок (ключ - ID ошибки)
    var errorText = {
		1 : "The Zip Code field is not valid.",
		2 : "The Email field should contain a valid email address."
    }
    // Получаем семейство всех элементов формы
    // Проходимся по ним в цикле
    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 == "zip" && trim(value) != ""){
							var re = /^[0-9]{5}$/;
							if (el.name == "zip" && !re.test(value)) errorList.push(1);
						}
					if (el.name == "email" 	 && trim(value) != ""){
							var re = /^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/i;
							if (el.name == "email" && !re.test(value)) errorList.push(2);
						}
                break;
				case "checkbox" :
					// no no no
				break;
            }
        } 
    }
    // Финальная стадия
    // Если массив ошибок пуст - возвращаем true
    if (!errorList.length) return true;
    // Если есть ошибки - формируем сообщение, выовдим alert
    // и возвращаем false
    //var errorMsg = "При заполнении формы допущены следующие ошибки:\n\n";
	var errorMsg = "Form errors:\n\n";
    for (i = 0; i < errorList.length; i++) {
        errorMsg += errorText[errorList[i]] + "\n";
    }
    alert(errorMsg);
    return false;
}