fc.initQTimers = [];
fc.qFields = {};
fc.initQForm = function() {
	var i, el;
	var form = gebi("qFormId");
	var fields = ["fio", "email", "theme", "question", "captcha"];
	for (i = 0; i < fields.length; i++) {
		el = form.elements[fields[i]];
		if (el.type != "hidden") fc.qFields[fields[i]] = false;
		if (el) {
			addHandler(el, "keyup", function(evt) {
				evt = evt || window.event;
				var _el = evt.target ? evt.target : evt.srcElement;
				if (fc.initQTimers[_el.name]) {
					clearTimeout(fc.initQTimers[_el.name]);
					fc.initQTimers[_el.name] = null;
				}
				fc.initQTimers[_el.name] = setTimeout("fc.updateQForm('"+_el.name+"')", 300);
			});
			addHandler(el, "change", function(evt) {
				evt = evt || window.event;
				var _el = evt.target ? evt.target : evt.srcElement;
				fc.updateQForm(_el.name);
			});
			//fc.updateQForm(el.name);
		}
	}
	fc.qFieldsCheck();
	addHandler(form, "submit", function(evt) {
		fc.qSubmit();
		stopLink(evt);
		return false;
	});
}
fc.updateQForm = function(name) {
	var re, i, form, el, val;
	form = gebi("qFormId"); el = form.elements[name];
	if (!el) return;
	val = el.value;
	fc.qFields[name] = false;
	switch(name) {
		case "fio" :
			if (val.length == 0) fixClassName(el, "nocorrect", "correct");
			else {fixClassName(el, "correct", "nocorrect"); fc.qFields[name] = true;}
		break;
		case "email" :
			re = /^([\w\-\.]+)@([\w\-]+)(\.)([\w]+)/ig;
			if (re.test(val)) {
				/* Gecko RegExp Fix --> */ re.test(val);
				fixClassName(el, "correct", "nocorrect");
				fc.qFields[name] = true;
			} else fixClassName(el, "nocorrect", "correct");
		break;
		case "theme" :
			if (val.length == 0) fixClassName(el, "nocorrect", "correct");
			else {fixClassName(el, "correct", "nocorrect"); fc.qFields[name] = true;}
		break;
		case "question" :
			if (val.length == 0) fixClassName(el, "nocorrect", "correct");
			else {fixClassName(el, "correct", "nocorrect"); fc.qFields[name] = true;}
		break;
		case "captcha" :
			re = /^[\d]+$/ig;
			if (re.test(val)) {
				/* Gecko RegExp Fix --> */ re.test(val);
				setAjaxRequest("GET", "/check_captcha/?digit=" + val, "digit=" + val, 
					function() {
						if (parseInt(this.req.responseText)) {
							fc.qFields[name] = true;
							fixClassName(el, "correct", "nocorrect");
						} else fixClassName(el, "nocorrect", "correct");
						fc.qFieldsCheck();
					},
					function() {
						alert("Strange error...");
					},
					0, 0
				);
			} else fixClassName(el, "nocorrect", "correct");
		break;
	}
	fc.qFieldsCheck();
}
fc.qFieldsCheck = function() {
	form = gebi("qFormId");
	var disabled = false;
	var html = "";
	for (i in fc.qFields) if (!fc.qFields[i]) {disabled = true; break;}
	form.goques.disabled = disabled;
}
fc.qSubmit = function() {
	var form = gebi("qFormId");
	var el, params = "";
	for (var i = 0; i < form.elements.length; i++) {
		el = form.elements[i];
		params += el.name + "=" + encodeURIComponent(el.value);
		params += i != form.elements.length - 1 ? "&" : "";
	}
	setAjaxRequest("POST", "/write/ajax/", params, fc.qHandler, fc.qError, 0, 0);
}
fc.qHandler = function() {
	var result = this.req.responseText;
	if (result.indexOf("success") != -1) gebi("qFormId").innerHTML = "<p class=\"text\">Письмо отправлено. <a href=\"/write/\">Написать еще</a></p>";
	else gebi("qErrorId").style.display = "block";
}
fc.qError = function() {
	alert("AJAX submit error");
}