function checkPaymentReceipt(id) {
	if (jQuery(':radio:checked','#payment_choose').attr('class') == 'receipt') {
		var url = window.location.href;
		var win = window.open("", "_blank", "width=710,height=620,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=no");
		win.document.write("<html><head><" + "script" + ">location.href = '" + url + "do/?payment-id=" + id + "'</script></head><body></body></html>");
		location.href = '/emarket/ordersList/?' + Math.random();
		win.focus();
		return false;
	}
}

var frontPopup = function(params) {
	var params	= typeof(params) == 'object' ? params : {};
	var id		= params.id || new Date().getTime();
	var header	= params.header || 'Информация';
	var content	= params.content || '';
	var width	= params.width || '300px';
	var height	= params.height || 'auto';

	jQuery("<div/>", {
		"id": id,
		"class": "infoblock front_popup",
		html: "<div class=\"title\">\
			<img src=\"/images/cms/eip/close.png\" alt=\"Закрыть\" title=\"Закрыть\" />\
			<h2>" + header + "</h2></div><div class=\"body\"><div class=\"in\">" + content + "</div></div>"
	}).appendTo("body");

	var popup = jQuery('#' + id);
	popup.css({'width':width, 'height':height});

	var leftPosition = (window.document.documentElement.offsetWidth - popup.width()) / 2;
	var windowHeight = window.innerHeight || window.document.documentElement.offsetHeight;
	var topPosition = $(window.document.documentElement).scrollTop() || $(window.document).scrollTop();
	topPosition = topPosition + (windowHeight - popup.height()) / 2;
	popup.css({'left':leftPosition  + 'px', 'top':topPosition + 'px'});

	jQuery('div.title img', popup).click(function() {popup.remove();});
	var close;
	if (close = jQuery('.close', popup)) {
		close.click(function() {popup.remove();});
	}
}

var siteForms = {
	init: function () {
		var elements_arr = jQuery('label.required input, label.required textarea, label.required select');
		var element, i;
		for (i = 0; elements_arr.length > i; i++) {
			element = elements_arr[i];
			element.onchange = siteForms.errors.show(element, i);
		}
	},
	check: function (form, num) {
		var r = num, elements_arr = jQuery('label.required input, label.required textarea, label.required select', form);
		++r;
		for (var i = 0; elements_arr.length > i; i++) {
			if (typeof num != "undefined" && elements_arr[r] == elements_arr[i]) return false;
			if (!siteForms.errors.check(elements_arr[i], num)) return false;
		}
	},
	data: {
		save: function (form) {
			if (!form && !form.id) return false;
			var cookieData = new Array, str = "", input, inputName, elementData, value, i;
			for (i = 0; i < form.elements.length; i++) {
				input = form.elements[i];
				if (input.name) {
					inputName = input.name.replace(/([)\\])/g, "\\$1");
					switch (input.type) {
						case "password": {
								break;
							}
						case "text":
						case "textarea": {
								cookieData.push({ type: 'TX', name: inputName, value: input.value });
								break;
							}
						case "checkbox":
						case "radio": {
								cookieData.push({ type: 'CH', name: input.id, value: (input.checked ? 1 : 0) });
								break;
							}
						case "select-one": {
								cookieData.push({ type: 'SO', name: inputName, value: input.selectedIndex });
								break;
							}
						case "select-multiple": {
								var opt_str = "", opt_len = input.options.length, o;
								for (o = 0; o < opt_len; o++) {
									var option = input.options[o];
									if (option.selected) {
										opt_str += option.value;
										if (o < (opt_len - 1)) opt_str += ":";
									}
								}
								cookieData.push({ type: 'SM', name: inputName, value: opt_str });
								break;
							}
					}
				}
			}
			for (i = 0; i < cookieData.length; i++) {
				elementData = cookieData[i];
				value = new String(elementData.value);
				inputName = new String(elementData.name);
				if (!inputName || !value) continue;
				str += elementData.type + "," + inputName.length + "," + inputName + "," + value.length + "," + value;
			}
			document.cookie = "frm" + form.id + "=" + escape(str.replace(/([|\\])/g, "\\$1"));
			return true;
		},
		restore: function () {
			var cookie = new String(unescape(document.cookie));
			var forms = document.getElementsByTagName('form');
			var cookieName, posStart, posEnd, form, i, elementData, type, length, inputName, value;
			for (i = 0; i < forms.length; i++) {
				if (forms[i].id) {
					cookieName = "frm" + forms[i].id + "=";
					if ((posStart = cookie.indexOf(cookieName)) != -1) form = forms[i];
				}
			}
			if (!cookieName || !form) return false;
			if ((posEnd = cookie.indexOf(";", posStart)) == -1) posEnd = cookie.length;
			var data = cookie.substring(posStart + cookieName.length, posEnd);
			var pos = 0, cookieData = new Array;
			while (pos < data.length) {
				type = data.substring(pos, pos + 2);
				pos += 3;
				length = parseInt(data.substring(pos, data.indexOf(",", pos)));
				pos = data.indexOf(",", pos) + 1;
				inputName = data.substring(pos, pos + length);
				pos += length + 1;
				length = parseInt(data.substring(pos, data.indexOf(",", pos)));
				if (length == 0) {
					pos += 2;
					continue;
				}
				else pos = data.indexOf(",", pos) + 1;
				value = data.substring(pos, pos + length);
				pos += length;
				cookieData.push({ type: type, name: inputName, value: value });
			}
			for (i = 0; i < cookieData.length; i++) {
				elementData = cookieData[i];
				if (elementData.type && elementData.name) {
					switch (elementData.type) {
						case "PW": {
								break;
							}
						case "TX": {
								form.elements[elementData.name].value = elementData.value;
								break;
							}
						case "CH": {
								document.getElementById(elementData.name).checked = (elementData.value == 1) ? true : false;
								break;
							}
						case "SO": {
								form.elements[elementData.name].selectedIndex = elementData.value;
								break;
							}
						case "SM": {
								var options = form.elements[elementData.name].options;
								var opt_arr = elementData.value.split(":"), op, o;
								for (op = 0; op < options.length; op++)
									for (o = 0; o < opt_arr.length; o++)
										if (opt_arr[o] && (options[op].value == opt_arr[o]))
											options[op].selected = true;
								break;
							}
					}
				}
			}
		}
	},
	comments : {
		init : function() {
			var blog_comm = jQuery('#comments');
			var blog_comm_arr, i;
			if (typeof blog_comm[0] == 'object') {
				blog_comm_arr = jQuery('a.comment_add_link', blog_comm[0]);
				for (i = 0; blog_comm_arr.length > i; i++) {
					blog_comm_arr[i].onclick = siteForms.comments.add(blog_comm_arr[i]);
				}
			}
		},
		add : function(element) {
			return (function () { siteForms.comments.setAction(element.id); });
		},
		setAction : function(comm_id) {
			var comment_add_form = jQuery('#comment_add_form');
			comment_add_form[0].action = '/blogs20/commentAdd/'+comm_id;
		}
	},
	vote : function(form, vote_id) {
		var res = false;
		for (var i=0; form.elements.length > i; i++) {
			if (form.elements[i].checked) {
				res = form.elements[i].value;
			}
		}
		if (res) {
			jQuery.ajax({
				url : '/vote/post/' + res + '/?m=' + new Date().getTime(),
				dataType: 'html',
				success: function (data) {eval(data);}
			});
			jQuery.ajax({
				url: '/udata://vote/results/' + vote_id + '/?transform=modules/vote/results.xsl&m=' + new Date().getTime(),
				dataType: 'html',
				success: function (data) {jQuery(form.parentNode).html(data);}
			});
		}
		else alert('Не выбран ни один вариант');
	},
	errors: {
		show: function (element, num) {
			return (function () { siteForms.check(element.form, num); });
		},
		check: function (element, num) {
			var _err, empty_err = "Поле обязательно для заполнения.";
			//var callback = function(transport){return (siteForms.errors.write(transport.responseText, element));};
			switch (element.name) {
				case "login": 
					{
						switch (element.value.length) {
							case 0: _err = empty_err;
								break;
							case 1:
							case 2:
								_err = "Слишком короткий логин. Логин должен состоять не менее, чем из 3х символов.";
								break;
							default: 
								{
									if (element.value.length > 40) _err = "Слишком большой логин. Логин должен состоять не более, чем из 40 символов.";
									if (typeof num != 'undefined'); //checkUserLogin callback
								}
								break;
						}
					}
					break;
				case "password": 
					{
						switch (element.value.length) {
							case 0: _err = empty_err;
								break;
							case 1:
							case 2:
								_err = "Слишком короткий пароль. Пароль должен состоять не менее, чем из 3х символов.";
								break;
							default: 
								{
									if (element.form.elements['login'].value == element.value) {
										_err = "Пароль не должен совпадать с логином.";
									}
								}
								break;
						}
					}
					break;
				case "password_confirm": 
					{
						if (element.value.length == 0) _err = empty_err;
						else if (element.form.elements['password'].value !== element.value) {
							_err = "Пароли должны совпадать.";
						}
					}
					break;
				case "email": 
					{
						if (element.value.length == 0) _err = empty_err;
						else if (!element.value.match(/.+@.+\..+/)) _err = "Некорректный e-mail.";
						else if (typeof num != 'undefined'); //checkUserEmail callback
					}
					break;
				default:
					if (element.value.length == 0) _err = empty_err;
					if (element.name.match(/^.*e.*mail.*$/) && element.name != 'email_to') if (!element.value.match(/.+@.+\..+/)) _err = "Некорректный e-mail.";
					break;
			}
			return (siteForms.errors.write(_err, element));
		},
		write: function (_err, element) {
			var cont = element.parentNode.parentNode;
			var old_err = jQuery('div.formErr', cont).remove();
			if (_err) {
				var err_block = document.createElement('div');
				err_block.className = "formErr";
				err_block.innerHTML = _err;
				cont.style.color = '#ff0000';
				cont.appendChild(err_block);
				if (element.name == "password_confirm") element.value = "";
				element.focus();
				return false;
			}
			else {
				cont.style.color = '';
				return true;
			}
		}
	}
};

jQuery(document).ready(function() {
	siteForms.data.restore();
	siteForms.init();
	siteForms.comments.init();
});
