function shakeField(field, clear) {
	field.blur();
	
	new Effect.Shake(field, {
		distance: 2,
		duration: 0.3
	});
	
	setTimeout(function() {
		if (clear) {
			field.value = "";
		}
		
		field.focus();
	}, 350);
}

function validateSearchForm(form) {
	if ($(form).query.value.strip() == "") {
		shakeField(form.query);
		return false;
	}
	
	return true;
}

function validateSelectionForm(form) {
	if (form.category.options[form.category.selectedIndex].value == "") {
		alert("Необходимо выбрать категорию товаров для подбора!");
		form.category.focus();
		return false;
	}
	
	if ((form.pricemin.value != "") && isNaN(parseInt(form.pricemin.value))) {
		alert("Минимальная цена должна быть целым числом!");
		form.pricemin.focus();
		return false;
	}
	
	if ((form.pricemax.value != "") && isNaN(parseInt(form.pricemax.value))) {
		alert("Максимальная цена должна быть целым числом!");
		form.pricemax.focus();
		return false;
	}
	
	return true;
}

function loadCategoryProperties(select) {
	new Ajax.Request("/ajax/category/", {
		parameters: {
			category: select.options[select.selectedIndex].value
		},
		onSuccess: function(transport) {
			result = transport.responseJSON;
			if (result.code) {
				$("propertiesdiv").update(result.html);
			} else {
				alert(result.message);
			}
		},
		onFailure: function() {
			alert("Не удалось связаться с сервером. Попробуйте повторить позже.");
		}
	});
}

function loginUser(form) {
	if (form.login.value == "") {
		shakeField(form.login);
		return false;
	}
	
/*
	if (form.password.value == "") {
		shakeField(form.password);
		return false;
	}
*/
	
	new Ajax.Request("/ajax/login/", {
		parameters: {
			login: form.login.value,
			password: form.password.value
		},
		onSuccess: function(transport) {
			result = transport.responseJSON;
			if (result.code) {
				location.href = "/cabinet/";
			} else {
				new Effect.Shake("logindiv", {
					distance: 2,
					duration: 0.3
				});
				setTimeout(function() {
					form.password.value = "";
					form.password.focus();
				}, 350);
			}
		},
		onFailure: function() {
			alert("Не удалось связаться с сервером авторизации. Попробуйте повторить позже.");
		}
	});
	
	return false;
}

function logoutUser() {
	new Ajax.Request("/ajax/logout/", {
		onSuccess: function(transport) {
			result = transport.responseJSON;
			if (result.code) {
				location.href = "/";
			} else {
				location.reload();
			}
		},
		onFailure: function() {
			alert("Не удалось связаться с сервером авторизации. Попробуйте повторить позже.");
		}
	});
	
	return false;
}

function dropPrice(id, href) {
	new Ajax.Request("/ajax/setprice/", {
		parameters: {
			good: id,
			price: parseInt($("newprice").value)
		},
		onSuccess: function(transport) {
			result = transport.responseJSON;
			//alert(transport.responseText);
			if (result.code) {
				alert("Заявка на снижение цены принята. Обновление цены произойдет в течение 2 часов.");
				//$("theprice").update(parseInt($("newprice").value).toString() + " р.");
				$(href).up(".news").removeClassName("active");
			} else {
				alert(result.message);
			}
		},
		onFailure: function(transport) {
			alert("Не удалось связаться с сервером. Попробуйте повторить позже. (" + transport.responseText + ")");
		}
	});

	return false;
}

function subscribePriceDrop(form) {
	if (!form.email.value.match(/^[\w\d\-\_.]+@[\w\d\-\_\.]+\.[A-Za-z]{2,4}$/)) {
		new Effect.Shake($("message"), {
			distance: 2,
			duration: 0.3
		});
		return false;
	}
	
	new Ajax.Request("/ajax/pricesubscribe/", {
		parameters: {
			good: form.good.value,
			email: form.email.value
		},
		onSuccess: function(transport) {
			result = transport.responseJSON;
			retoldmessage();
			if (result.code) {
				form.email.value = "";
				alert("Подписка оформлена.");
			} else {
				alert(result.message);
			}
		},
		onFailure: function() {
			alert("Не удалось связаться с сервером. Попробуйте повторить позже.");
		}
	});

	return false;
}

function offerPrice(form) {
	new Ajax.Request("/ajax/offer/", {
		parameters: {
			good: form.good.value,
			price: form.price.value,
			email: form.email.value
		},
		onSuccess: function(transport) {
			result = transport.responseJSON;
			if (result.code) {
				form.price.value = "";
				form.email.value = "";
				alert("Предложение отправлено продавцу");
			} else {
				alert(result.message);
			}
		},
		onFailure: function() {
			alert("Не удалось связаться с сервером. Попробуйте повторить позже.");
		}
	});

	return false;
}

function acceptOffer(agood, aemail, aprice) {
	new Ajax.Request("/ajax/accept/", {
		parameters: {
			good: agood,
			email: aemail,
			price: aprice
		},
		onSuccess: function(transport) {
			result = transport.responseJSON;
			if (result.code) {
				
			} else {
				alert(result.message);
			}
		},
		onFailure: function() {
			alert("Не удалось связаться с сервером. Попробуйте повторить позже.");
		}
	});

	return false;
}

function rejectOffer(agood, aemail, aprice) {
	new Ajax.Request("/ajax/reject/", {
		parameters: {
			good: agood,
			email: aemail,
			price: aprice
		},
		onSuccess: function(transport) {
			result = transport.responseJSON;
			if (result.code) {
				alert();
			} else {
				alert(result.message);
			}
		},
		onFailure: function() {
			alert("Не удалось связаться с сервером. Попробуйте повторить позже.");
		}
	});

	return false;
}

function removeGood(id, href) {
	new Ajax.Request("/ajax/remove/", {
		parameters: {
			good: id
		},
		onSuccess: function(transport) {
			result = transport.responseJSON;
			if (result.code) {
				alert("Товар снят с продажи");
				$(href).up(".news").removeClassName("active");
			} else {
				alert(result.message);
			}
		},
		onFailure: function() {
			alert("Не удалось связаться с сервером. Попробуйте повторить позже.");
		}
	});

	return false;
}

function sendQuestion(form) {
	if (form.name.value == "") {
		shakeField(form.name);
		return false;
	}
	
	if (form.email.value == "") {
		shakeField(form.email);
		return false;
	}
	
	if (form.subject.options[form.subject.selectedIndex].value == "") {
		shakeField(form.subject);
		return false;
	}
	
	if (form.text.value == "") {
		shakeField(form.text);
		return false;
	}
	
	if (form.answer.value == "") {
		shakeField(form.answer);
		return false;
	}
	
	new Ajax.Request("/ajax/question/", {
		parameters: {
			name: form.name.value,
			email: form.email.value,
			subject: form.subject.value,
			text: form.text.value,
			key: form.answer.value
		},
		onSuccess: function(transport) {
			result = transport.responseJSON;
			if (result.code) {
				alert("Ваше сообщение отправлено");
				$("questiondiv").hide();
			} else {
				if (result.key) {
					shakeField(form.answer, true);
				} else {
					alert(result.message);
				}
			}
		},
		onFailure: function() {
			alert("Не удалось связаться с сервером. Попробуйте повторить позже.");
		}
	});

	return false;
}

function estimateFind(form) {
	$("resultheader").hide();
	$("estimatetable").select("tr.found").each(function(item) {
		item.remove();
	});
	
	new Ajax.Request("/ajax/estimate/", {
		parameters: {
			query: form.query.value
		},
		onSuccess: function(transport) {
			result = transport.responseJSON;
			if (result.code) {
				$("estimatetable").select("tr.found").each(function(item) {
					item.remove();
				});
				$("searchrow").insert({
					after: result.html
				});
			} else {
				alert(result.message);
			}
		},
		onFailure: function() {
			alert("Не удалось связаться с сервером. Попробуйте повторить позже.");
		}
	});

	return false;
}

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

function estimateSelect(anchor) {
	$("estimatetable").select("tr.found").each(function(item) {
		item.removeClassName("active");
	});
	$(anchor).up().up().up().addClassName("active");
	oldprice = $(anchor).next().value;
	newprice = Math.round((oldprice - oldprice * 0.3)  / 10) * 10;
	$("resultspan").update(newprice.toString());
	$("resultheader").show();
	
	return false;
}

function getSubs() {
	new Ajax.Request("/ajax/salons/", {
		method: "get",
		parameters: {
			action: "options",
			region: $("region").value
		},
		onSuccess: function(transport) {
			//alert(transport.responseText);
			$("subsdiv").update(transport.responseText);
		}
	});
}

function showSalones() {
	region = $("region").value;
	sub = $("subs").value;
	if (region != "" && sub != "") {
		if (region.include("_")) {
			arr = region.split("_");
			window.location.href = "/salons/" + arr[0] + "/?sub=" + sub + "&type=" + arr[1];
		} else {
			window.location.href = "/salons/" + region + "/?sub=" + sub;
		}
	}
	return false;
}
