function big_setEventHandler(the_element, s_event, o_handler) {
	var arr_event = s_event.split(',');
	var i=0;
	for (i=0; i<arr_event.length; i++) {
		if (the_element.addEventListener) {
			the_element.addEventListener(arr_event[i], o_handler, false);
		} else if(the_element.attachEvent) {
			the_element.attachEvent('on' + arr_event[i], function() {o_handler(event)});
		}
	}
}

function big_Cancel(ev) {
	return false;
}

function big_StopEvent(ev) {
	if (ev) {
		if (ev.stopPropagation && ev.preventDefault) {
			ev.stopPropagation();
			ev.preventDefault();
		} else {
			ev.cancelBubble = true;
		}
		//
		if (ev.target && ev.target.focus) {
			ev.target.focus();
		} else if (ev.srcElement && ev.srcElement.focus) {
			ev.srcElement.focus();
		}
	}
	//
	return false;
}

function big_checkOrderingForm(s_form) {
	var theForm = document.forms[s_form];
	if (!theForm) {
		alert("Передан неверный идентификатор формы");
		return false;
	}
	//
	if (!theForm.elements['customer_lname'] || !theForm.elements['customer_lname'].value) {
		theForm.elements['customer_lname'].focus();
		alert("Необходимо указать фамилию заказчика");
		return false;
	}
	if (!theForm.elements['customer_fname'] || !theForm.elements['customer_fname'].value) {
		theForm.elements['customer_fname'].focus();
		alert("Необходимо указать имя заказчика");
		return false;
	}
	if (!theForm.elements['customer_phone_code'] || !theForm.elements['customer_phone_code'].value || theForm.elements['customer_phone_code'].value == 'код') {
		theForm.elements['customer_phone_code'].focus();
		alert("Необходимо указать телефонный код");
		return false;
	}
	if (!theForm.elements['customer_phone_number'] || !theForm.elements['customer_phone_number'].value || theForm.elements['customer_phone_number'].value == 'номер') {
		theForm.elements['customer_phone_number'].focus();
		alert("Необходимо указать номер телефона");
		return false;
	}
	//
	var the_els = theForm.elements['delivery_address'];
	if (!the_els) {
		alert("Невозможно определить адрес доставки");
		return false;
	}
	var s_address = "";
	if (!the_els.length && the_els.value) {
		s_address = the_els.value;
	} else {
		for (i = 0; i < the_els.length; i++) {
			var the_el = the_els.item(i);
			if (the_el.checked) {
				s_address = the_el.value;
				break;
			}
		}
	}
	if (!s_address) {
		alert("Необходимо выбрать адрес доставки ("+s_address+")");
		return false;
	}
	//
	return true;
}

function big_shideDeliveryForm(sid) {
	var subfsid = "subform_delivery_" + sid;
	//
	//$('#'+subfsid).css('visibility', "hidden");
	//$('#'+subfsid).css('display', "block");

	var o_position = $('#h2_customer_deliv').position();
	var s_left = o_position.left;
	var s_top = o_position.top;

	$('#'+subfsid).css('left', s_left);
	$('#'+subfsid).css('top', s_top);

	$('#'+subfsid).show('fast');
	//
	return false;
}

function big_checkDeliveryForm(sid) {
	var pre = "data[" + sid + "]";
	var subfsid = "subform_delivery_" + sid;
	var i = 0;
	//
	var theForm = document.forms[subfsid + "_form"];
	if (!theForm) {
		alert("Передан неверный идентификатор формы ("+sid+")");
		return false;
	}
	// 1. Тип доставки
	var the_els = theForm.elements[pre + '[tip_dostavki]'];
	if (!the_els) {
		alert("Невозможно определить тип доставки");
		return false;
	}
	var s_tip_dostavki = 0;
	for (i = 0; i < the_els.length; i++) {
		var the_el = the_els.item(i);
		if (the_el.checked) {
			s_tip_dostavki = the_el.value;
			break;
		}
	}
	if (!(s_tip_dostavki == '41149' || s_tip_dostavki == '41150' || s_tip_dostavki == '41151')) {
		if (!s_tip_dostavki) {
			alert("Необходимо выбрать тип доставки");
		} else {
			alert("Неизвестный тип доставки ("+s_tip_dostavki+")");
		}
		return false;
	}
		// 2.1. Курьером по Санкт-Петербургу и области - 41149
		if (s_tip_dostavki == '41149') {
			var the_els = theForm.elements[pre + '[dalnost_dostavki]'];
			if (!the_els) {
				alert("Невозможно определить дальность доставки");
				return false;
			}
			var s_dalnost_dostavki = 0;
			for (i = 0; i < the_els.length; i++) {
				var the_el = the_els.item(i);
				if (the_el.checked) {
					s_dalnost_dostavki = the_el.value;
					break;
				}
			}
			if (!(s_dalnost_dostavki == '41155' || s_dalnost_dostavki == '41156' || s_dalnost_dostavki == '41157')) {
				if (!s_dalnost_dostavki) {
					alert("Необходимо выбрать дальность доставки");
				} else {
					alert("Неизвестная дальность доставки ("+s_dalnost_dostavki+")");
				}
				return false;
			}
			// 2.1.1. По Санкт-Петербургу - 41155
			if (s_dalnost_dostavki == '41155') {
				if (!theForm.elements[pre + '[metro]']) {
					alert("Невозможно определить метро");
					return false;
				}
				if (!theForm.elements[pre + '[metro]'].value) {
					theForm.elements[pre + '[metro]'].focus();
					alert("Необходимо выбрать метро");
					return false;
				}
			}
			// 2.1.2. Пригороды - 41156
			if (s_dalnost_dostavki == '41156') {
				if (!theForm.elements[pre + '[prigorod]']) {
					alert("Невозможно определить пригород");
					return false;
				}
				if (!theForm.elements[pre + '[prigorod]'].value) {
					theForm.elements[pre + '[prigorod]'].focus();
					alert("Необходимо выбрать пригород");
					return false;
				}
			}
			// 2.1.3. Ленобласть - 41157
			if (s_dalnost_dostavki == '41157') {
				if (!theForm.elements[pre + '[rajon]']) {
					alert("Невозможно определить район");
					return false;
				}
				if (!theForm.elements[pre + '[rajon]'].value) {
					theForm.elements[pre + '[rajon]'].focus();
					alert("Необходимо выбрать район");
					return false;
				}
				if (!theForm.elements[pre + '[naselennyj_punkt]']) {
					alert("Невозможно определить населенный пункт");
					return false;
				}
				if (!theForm.elements[pre + '[naselennyj_punkt]'].value) {
					theForm.elements[pre + '[naselennyj_punkt]'].focus();
					alert("Необходимо выбрать населенный пункт");
					return false;
				}
			}
			// 2.1.4. для всех трех
			if (!theForm.elements[pre + '[spb_address]']) {
				alert("Невозможно определить адрес");
				return false;
			}
			if (!theForm.elements[pre + '[spb_address]'].value) {
				theForm.elements[pre + '[spb_address]'].focus();
				alert("Необходимо указать адрес");
				return false;
			}
		}
		// 2.2. Доставка по России - 41150
		if (s_tip_dostavki == '41150') {
			if (!theForm.elements[pre + '[indeks]']) {
				alert("Невозможно определить индекс");
				return false;
			}
			if (!theForm.elements[pre + '[indeks]'].value) {
				theForm.elements[pre + '[indeks]'].focus();
				alert("Необходимо указать индекс");
				return false;
			}
			if (!theForm.elements[pre + '[region]']) {
				alert("Невозможно определить регион");
				return false;
			}
			if (!theForm.elements[pre + '[region]'].value) {
				theForm.elements[pre + '[region]'].focus();
				alert("Необходимо указать регион");
				return false;
			}
			if (!theForm.elements[pre + '[gorod]']) {
				alert("Невозможно определить город");
				return false;
			}
			if (!theForm.elements[pre + '[gorod]'].value) {
				theForm.elements[pre + '[gorod]'].focus();
				alert("Необходимо указать город");
				return false;
			}
			if (!theForm.elements[pre + '[rus_address]']) {
				alert("Невозможно определить адрес");
				return false;
			}
			if (!theForm.elements[pre + '[rus_address]'].value) {
				theForm.elements[pre + '[rus_address]'].focus();
				alert("Необходимо указать адрес");
				return false;
			}
		}
	// 3. Занулить невыбранные типы доставки
	if (s_tip_dostavki == '41151' || s_tip_dostavki == '41150') {
		// самовывоз || Доставка по России
		var the_els = theForm.elements[pre + '[dalnost_dostavki]'];
		if (the_els) {
			var s_dalnost_dostavki = 0;
			for (i = 0; i < the_els.length; i++) {
				var the_el = the_els.item(i);
				the_el.checked = false;
			}
		}
		/////// !!! ^
		theForm.elements[pre + '[metro]'].selectedIndex = 0;
		theForm.elements[pre + '[prigorod]'].selectedIndex = 0;
		theForm.elements[pre + '[rajon]'].selectedIndex = 0;
		theForm.elements[pre + '[naselennyj_punkt]'].selectedIndex = 0;
		theForm.elements[pre + '[spb_address]'].value = "";
		
	}
	if (s_tip_dostavki == '41151' || s_tip_dostavki == '41149') {
		// самовывоз || Курьером по Санкт-Петербургу и области
		theForm.elements[pre + '[indeks]'].value = "";
		theForm.elements[pre + '[region]'].value = "";
		theForm.elements[pre + '[gorod]'].value = "";
		theForm.elements[pre + '[rus_address]'].value = "";
	}
		// 3.1. Занулить невыбранные дальности доставки
		if (s_tip_dostavki == '41149') { // Курьером по Санкт-Петербургу и области
			if (s_tip_dostavki == '41155' || s_tip_dostavki == '41156') {
				// По Санкт-Петербургу || Пригороды
				if (!theForm.elements[pre + '[metro]']) {
					theForm.elements[pre + '[rajon]'].selectedIndex = 0;
					theForm.elements[pre + '[naselennyj_punkt]'].selectedIndex = 0;
				}
			}
			if (s_tip_dostavki == '41155' || s_tip_dostavki == '41157') {
				// По Санкт-Петербургу || Ленобласть
				theForm.elements[pre + '[prigorod]'].selectedIndex = 0;
			}
			if (s_tip_dostavki == '41156' || s_tip_dostavki == '41157') {
				// Пригороды || Ленобласть
				theForm.elements[pre + '[metro]'].selectedIndex = 0;
			}
		}
	//
	return true;
}

function big_checkRegForm(s_form, s_fields, b_check_password, b_check_email, s_user) {
	// form name validation
	var the_form = document.forms[s_form];
	if (!the_form) {
		alert("Передан неверный идентификатор формы");
		return false;
	}
	//
	var the_el = the_form.elements['data['+s_user+'][telefon_kod]'];
	if (the_el && (!the_el.value.length || the_el.value == 'код')) {
		the_el.focus();
		alert("Необходимо заполнить все обязательные поля");
		return false;
	}
	var the_el = the_form.elements['data['+s_user+'][telefon_nomer]'];
	if (the_el && (!the_el.value.length || the_el.value == 'номер')) {
		the_el.focus();
		alert("Необходимо заполнить все обязательные поля");
		return false;
	}
	// yurstatus
	if (the_form.elements['data['+s_user+'][yurstatus]'] && the_form.elements['data['+s_user+'][yurstatus]'].value == 40639) {
		var arr_yurstatus = new Array('data['+s_user+'][nazvanie_organizacii]', 'data['+s_user+'][yuridicheskij_adres]', 'data['+s_user+'][inn]', 'data['+s_user+'][kpp]', 'data['+s_user+'][raschetnyj_schet]', 'data['+s_user+'][bank]', 'data['+s_user+'][korrespondentskij_schet]', 'data['+s_user+'][bik]');
		var i = 0;
		for (i=0; i<arr_yurstatus.length; i++) {
			var the_el = the_form.elements[arr_yurstatus[i]];
			if (the_el && !the_el.value.length) {
				the_el.focus();
				alert("Необходимо заполнить все обязательные поля");
				return false;
			}
		}
	}
	//
	return big_checkForm(s_form, s_fields, b_check_password, b_check_email);
}

function big_checkForm(s_form, s_fields, b_check_password, b_check_email) {

	// form name validation
	var the_form = document.forms[s_form];
	if (!the_form) {
		alert("Передан неверный идентификатор формы");
		return false;
	}
	// required form elements
	if (typeof(s_fields) !== 'string') var s_fields = '';
	var arr_fields = s_fields.split(/\s*[,;]\s*/ig);
	var b_need_all = (!(arr_fields.length) || !(s_fields.length));
	var arr_field_names = new Array();
	if (!b_need_all) {
		var f = 0;
		for (f=0; f<arr_fields.length; f++) {
			arr_field_names[arr_fields[f]] = 1;
		}
	}
	var arr_input_elements = the_form.elements;
	var i_element = 0;
	for (i_element=0; i_element<arr_input_elements.length; i_element++) {
		var the_element = arr_input_elements[i_element];
		var s_el_name = the_element.name;

		if (b_need_all || (typeof(arr_field_names[s_el_name]) !== 'undefined' && arr_field_names[s_el_name] === 1)) {
			var s_el_type = the_element.type;
			s_el_type = s_el_type.toUpperCase();
			var s_el_tagname = the_element.tagName;
			s_el_tagname = s_el_tagname.toUpperCase();

			if (((s_el_type === 'TEXT' || s_el_type === 'PASSWORD' || s_el_tagname === 'TEXTAREA') && !the_element.value.length) || (s_el_tagname === 'SELECT' && (!the_element.value || the_element.value === '0'))) {
				the_element.focus();
				s_alert = "Необходимо заполнить все обязательные поля";
				var theLabel = the_element.previousSibling;
				if (theLabel && theLabel.tagName && theLabel.tagName.toUpperCase() === 'LABEL') {
					s_alert += "\r\n" + "Не заполнено поле \"" + theLabel.childNodes[0].nodeValue + "\"";
				}
				alert(s_alert);
				return false;
			}
		}
	}
	//
	if (b_check_password) {
		if (the_form.elements['password'] && the_form.elements['password_confirm'] && the_form.elements['password'].value !== the_form.elements['password_confirm'].value) {
			var theLabel_1 = the_form.elements['password'].previousSibling;
			var theLabel_2 = the_form.elements['password_confirm'].previousSibling;
			if (theLabel_1 && theLabel_1.tagName && theLabel_1.tagName.toUpperCase() === 'LABEL' && theLabel_2 && theLabel_2.tagName && theLabel_2.tagName.toUpperCase() === 'LABEL') {
				s_alert = "Значения полей \"" + theLabel_1.childNodes[0].nodeValue + "\" и \"" + theLabel_2.childNodes[0].nodeValue + "\" не совпадают";
			} else {
				s_alert = "Пароль не совпадает с подтверждением пароля";
			}
			//
			alert(s_alert);
			return false;
		}
	}
	//
	if (b_check_email) {
		if (the_form.elements['email']) {
			var s_email = the_form.elements['email'].value;
			var regexp = /[\w\-]+@[\w\-]+\.[\w]+/;
			if (!regexp.test(s_email)) {
				the_form.elements['email'].focus();
				alert("Неверный синтаксис адреса электронной почты");
				return false;
			}
		}
		if (the_form.elements['orderfast_email']) {
			var s_email = the_form.elements['orderfast_email'].value;
			var regexp = /[\w\-]+@[\w\-]+\.[\w]+/;
			if (!regexp.test(s_email)) {
				the_form.elements['orderfast_email'].focus();
				alert("Неверный синтаксис адреса электронной почты");
				return false;
			}
		}
	}
	//
	return true;
}

function abortOrder() {
	return confirm("Вы уверены, что хотите покинуть страницу, не завершив оформление заказа ?");
}