function shakeField(field) {
	new Effect.Shake(field, {
		duration: 0.2,
		distance: 3
	});
	field.focus();
}

function registerUser(form) {
	ok = true;
	if ($(form).login.value.strip() == "" || !form.login.value.match(/[\w\d\-\_\$]/)) {
		new Effect.Highlight(form.login);
		form.login.activate();
		ok = false;
	}
	if (form.password1.value == "" || form.password1.value != form.password2.value) {
		new Effect.Highlight(form.password1);
		new Effect.Highlight(form.password2);
		if (ok) form.password1.activate();
		ok = false;
	}
	if ($(form).fullname.value.strip() == "") {
		new Effect.Highlight(form.fullname);
		if (ok) form.fullname.activate();
		ok = false;
	}
	if (!form.phone.value.match(/\+7 \(\d{3}\) \d{3}-\d{2}-\d{2}/)) {
		new Effect.Highlight(form.phone);
		if (ok) form.phone.activate();
		ok = false;
	}
	if (!form.email.value.match(/[\w\d\-\_]+@[\w\d\-\_]+\.\w{2,4}/)) {
		new Effect.Highlight(form.email);
		if (ok) form.email.activate();
		ok = false;
	}
	if ($(form.source.options[form.source.selectedIndex]).value.strip() == "") {
		new Effect.Highlight(form.source);
		if (ok) form.source.activate();
		ok = false;
	}
	if ($(form).key.value.strip() == "") {
		new Effect.Highlight(form.key);
		if (ok) form.key.activate();
		ok = false;
	}
	if (!ok) {
		return false;
	}
	$(form.login).up().up().removeClassName("red");
	$(form.login).next().hide();
	$(form.email).up().up().removeClassName("red");
	$(form.email).next().hide();
	new Ajax.Request("/", {
		parameters: {
			client: "js", module: "plugins", action: "pluginaction/registration/register",
			login: $(form).login.value.strip(),
			password: form.password1.value,
			fullname: $(form).fullname.value.strip(),
			phone: $(form).phone.value.strip(),
			email: $(form).email.value.strip(),
			field_source: form.source.options[form.source.selectedIndex].value,
			field_subscribe: form.subscribe.checked ? "true" : "false",
			key: form.key.value
		},
		onSuccess: function(transport) {
			result = transport.responseJSON;
			if (result.code) {
				location.href = "/cabinet/photo/";
			} else {
				switch (result.field) {
					case "login": {
						$(form.login).up().up().addClassName("red");
						$(form.login).next().update(result.message);
						$(form.login).next().show();
						form.login.focus();
						break;
					}
					case "email": {
						$(form.email).up().up().addClassName("red");
						$(form.email).next().update(result.message);
						$(form.email).next().show();
						form.email.focus();
						break;
					}
					case "key": {
						shakeField(form.key);
						break;
					}
				}
			}
		},
		onException: function(request, exception) {
			alert("Exception: " + request.transport.responseText);
		}
	});
	
	return false;
}

function updateUser(form) {
	ok = true;
	if (form.newpassword1.value != "" && form.newpassword2.value != "") {
		if (form.oldpassword.value == "") {
			new Effect.Highlight(form.oldpassword);
			form.oldpassword.activate();
			ok = false;
		}
		if (form.newpassword1.value != form.newpassword2.value) {
			new Effect.Highlight(form.newpassword1);
			new Effect.Highlight(form.newpassword2);
			form.newpassword1.activate();
			ok = false;
		}
	}
	if ($(form).fullname.value.strip() == "") {
		new Effect.Highlight(form.fullname);
		if (ok) form.fullname.activate();
		ok = false;
	}
	if ($(form).phone.value.strip() == "") {
		new Effect.Highlight(form.phone);
		if (ok) form.phone.activate();
		ok = false;
	}
	if (!ok) {
		return false;
	}
	new Ajax.Request("/", {
		parameters: {
			client: "js", module: "plugins", action: "pluginaction/registration/update",
			oldpassword: form.oldpassword.value,
			newpassword1: form.newpassword1.value,
			newpassword2: form.newpassword2.value,
			fullname: $(form).fullname.value.strip(),
			phone: $(form).phone.value.strip(),
			field_subscribe: form.subscribe.checked ? "true" : "false",
			field_salon: form.salon.options[form.salon.selectedIndex].value
		},
		onSuccess: function(transport) {
			result = transport.responseJSON;
			if (result.code) {
				alert("Персональные настройки сохранены");
				location.href = "/cabinet/photo/";
			} else {
				alert(result.message);
			}
		},
		onException: function(request, exception) {
			alert("Ошибка: " + exception);
		}
	});
	
	return false;
}

function checkPrintSettings() {
	format = $("photosettings").format;
	if (format.options[format.selectedIndex].value == "") {
		Prototype.Browser.Opera ? alert("Выберите формат печати") : shakeField(format);
		return false;
	}
	paper = $("photosettings").paper;
	if (paper.options[paper.selectedIndex].value == "") {
		Prototype.Browser.Opera ? alert("Выберите тип бумаги") : shakeField(paper);
		return false;
	}
	if ($("photosettings").fields) {
		fields = $("photosettings").fields;
		if (fields.options[fields.selectedIndex].value == "") {
			Prototype.Browser.Opera ? alert("Выберите режим печати полей") : shakeField(fields);
			return false;
		}
	}
	if ($("pu_count")) {
		var u = 0;
		var t = 0;
		$$("input.input_file").each(function(item) {
			t++;
			if (item.value != "") u++;
		});
		if (u != t) {
			alert("Пожалуйста, загрузите изображения в шаблон обложки и каждого месяца");
			return false;
		}
	}
	
	return true;
}

Number.prototype.formatMoney = function() { return this.toFixed(2).replace(".", ",").replace(/(\d)(\d{3})/, "$1 $2"); }

function subscribeUser(form, asubscribe) {
	if (!form.email.value.match(/^[\w\d][\w\d\-\_\.]*\@[\w\d][\w\d\-\_\.]+\.\w{2,4}$/)) {
		shakeField(form.email);
		return false;
	}
	new Ajax.Request("/", {
		parameters: {
			client: "js", module: "plugins", action: "pluginaction/subscription/subscribe",
			email: form.email.value,
			subscribe: asubscribe ? "true" : "false"
		},
		onSuccess: function(transport) {
			result = transport.responseJSON;
			if (result.code) {
				form.hide();
				$("subscribetext").update("<small>" + result.message + "</small>");
			} else {
				alert(result.message);
				shakeField(form.email);
			}
		}
	});
	
	return false;
}

function submitFeedback(form) {
	if (form.name.value == "") {
		shakeField(form.name);
		return false;
	}
	if (!form.email.value.match(/[\w\d\-\_]+@[\w\d\-\_]+\.\w{2,4}/)) {
		shakeField(form.email);
		return false;
	}
	if (form.message.value == "") {
		shakeField(form.message);
		return false;
	}
	new Ajax.Request("/", {
		parameters: {
			client: "js", module: "plugins", action: "pluginaction/contacts/send",
			contact: form.contact.value,
			name: form.name.value,
			email: form.email.value,
			message: form.message.value
		},
		onSuccess: function(transport) {
			result = transport.responseJSON;
			if (result.code) {
				alert("Ваше сообщение отправлено");
				form.reset();
				if (result.redirect) location.href = result.redirect;
			} else {
				alert(result.message);
			}
		},
		onException: function(request, exception) {
			alert(exception);
		}
	});
	
	return false;
}

function findSalon(form, submit) {
	if (form.street.value == "") return false;
	if (submit) {
		form.submit();
		return false;
	}
	
	return true;
}

/*
Event.observe(window, "load", function() {
	new Ajax.Updater($$("div.case")[0], "/project/plugins/projects.php", {
		insertion: "bottom",
		onComplete: function() {
			setupDropout();
		}
	});
});
*/
