﻿function checkForm(form) {
// Заранее объявим необходимые переменные
var re = /^\w+([\.-]?\w+)*@(((([a-z0-9]{2,})|([a-z0-9][-][a-z0-9]+))[\.][a-z0-9])|([a-z0-9]+[-]?))+[a-z0-9]+\.([a-z]{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/i;
var rt = /^(\(?\+?[0-9]*\)?)?[0-9_\- \(\)]*$/;
var rn = /^[a-zA-Zа-яА-Я]+(([\'\,\.\- ][a-zA-Zа-яА-Я ])?[a-zA-Zа-яА-Я]*)*$/;
var rc = /^[a-zA-Z0-9]{0,}$/;
var el, // Сам элемент
elName, // Имя элемента формы
value, // Значение
type; // Атрибут type для input-ов
// Массив списка ошибок, по дефолту пустой
var errorList = [];
// Хэш с текстом ошибок (ключ - ID ошибки)
var errorText = {
1 : "Неверно заполнено поле 'Имя и фамилия'",
2 : "Неверно заполнено поле 'E-mail'",
3 : "Неверно заполнено поле 'Телефон'",
4 : "Не введено проверочное число",
}
// Получаем семейство всех элементов формы
// Проходимся по ним в цикле
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 == "user[name]" && !rn.test(value)) errorList.push(1);
	//if(re.test(eval("document.forms['"+formname+"']."+fieldname+".value"))) return true;
if (el.name == "user[email]" && !re.test(value)) errorList.push(2);

if (el.name == "user[phone]" && !rt.test(value)) errorList.push(3);
if (el.name == "captcha" && !rc.test(value)) errorList.push(4);
break;
case "file" :
// Ничего не делаем, хотя можем
break;
case "checkbox" :
// Ничего не делаем, хотя можем
break;
case "radio" :
// Ничего не делаем, хотя можем
break;
default :
// Сюда попадают input-ы, которые не требуют обработки
// type = hidden, submit, button, image
break;
} 
}else{
}
}//for
// Финальная стадия
// Если массив ошибок пуст - возвращаем true
if (!errorList.length) {
	return true;
// Если есть ошибки - формируем сообщение, выовдим alert
// и возвращаем false
}else{
	var errorMsg = "При заполнении формы допущены следующие ошибки:\n\n";
	for (i = 0; i < errorList.length; i++) {
		errorMsg += errorText[errorList[i]] + "\n";
	}
	alert(errorMsg);
}
return false;
}

// главная ф-ция
function toggle(e){
	var el = window.event ? window.event.srcElement : e.currentTarget;
	var collapse_item = el.nextSibling;
	while (collapse_item.nodeType != 1) collapse_item = collapse_item.nextSibling; // workaround (whitespace)!
	curr_shown = collapse_item.style.display == "block";
	collapse_item.style.display = (curr_shown) ? "none" : "block";
	var title_text = el.firstChild;
	title_text.nodeValue = (curr_shown) ? title_text.nodeValue.replace(highlight_text, normal_text) : title_text.nodeValue.replace(normal_text, highlight_text);
}

// ф-ция инициализации
function init(){
	if (document.getElementById && document.createTextNode){
		var collapse_section = document.getElementById(collapse_section_id);
		var collapse_title = collapse_item = null;
		for (var i = 0; ((collapse_title = collapse_section.getElementsByTagName(title_tag).item(i)) && (collapse_item = collapse_section.getElementsByTagName(item_tag).item(i))); i++){
			collapse_title.style.textDecoration = text_decotation;
			collapse_title.style.cursor = window.event ? "hand" : "pointer";
			if (collapse_title.addEventListener) collapse_title.addEventListener("click", toggle, false);
			else if (collapse_title.attachEvent) collapse_title.attachEvent("onclick", toggle);
			collapse_title.firstChild.nodeValue = normal_text + collapse_title.firstChild.nodeValue;
			collapse_item.style.display = "none";
		}	
	}
}
