var rand=Math.round(Math.random()*1000+1);
$('name').value = $('quest').value = '';
$('but').disabled = 'true';
function $(id) { return document.getElementById(id); }
function ULSlider() {
	this.bOpen = null;
	this.bAnimate = true;
	this.oItem = {};
	this.init();
}

ULSlider.prototype.init = function () {
	var oThis = this;
	this.oItem.oElement = $('q-form');
	this.oItem.nHeight = $('q-form').offsetHeight;
	this.oItem.oTitle = $('q-but');
	this.oItem.oTitle.onclick = function (e) {
		e = (e) ? e.target : event.srcElement;
		var oElement = null;
		oThis.animation(oThis.oItem);
	}
	this.bOpen = false;
	$('q-form').style.height = 0;
}
 
ULSlider.prototype.animation = function (oItem) {
	if (oItem && this.bAnimate) {
		this.bAnimate = false;
		if (this.bOpen) {
			var param = 10;
			this.animateCSS(this.oItem.oElement, Math.round(oItem.nHeight/param) + 2, 20, { height: function(frame, time) { return oItem.nHeight - frame*param + 'px'; } }, null, false);
			oItem.oTitle.className = (oItem.oTitle.className == 'open') ? '' :  this.oOpen.oTitle.className.replace(new RegExp('(^|\s)open($|\s)'),' ');
			oItem.oTitle.innerHTML = 'Задать вопрос';
			this.bOpen = false;
		} else {
			var param = 10;
			this.animateCSS(oItem.oElement, Math.round(oItem.nHeight/param) + 2, 20, { height: function(frame, time) { return frame*param + 'px'; } }, null, true);
			oItem.oTitle.className += (oItem.oTitle.className == '') ? 'open' : ' open';
			oItem.oTitle.innerHTML = 'Скрыть форму';
			this.bOpen = true;
		}
	}
}
 
ULSlider.prototype.animateCSS = function (element, numFrames, timePerFrames, animation, whendone, type) {
	var frame = 0;
	var time = 0;
	var intervalId = setInterval(displayNextFrame, timePerFrames);
	var oThis = this;
	function displayNextFrame() {
		if (frame >= numFrames) {
			clearInterval(intervalId);
			element.style.height = (type) ? 'auto' : '0';
			if (whendone) whendone(element);
			oThis.bAnimate = true;
			return;
		}
		
		for (var cssprop in animation) {
			try {
				element.style[cssprop] = animation[cssprop](frame, time);
			} catch (e) {}
		}
		frame++;
		time += timePerFrames;
	}
}


function checkStepOne() {
	var isNoReady = ($('name').value == '' || $('quest').value == '') ? true : false;
	$('but').disabled = isNoReady;
	if (isNoReady) $('faq-message').className = 'hidden'; 
}

function makeRequestObject() {
	var http_request = false;
	if (window.XMLHttpRequest) { 
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) {
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	return http_request;
}

function makeRequest(reqObj, url, functionName) {
    reqObj.onreadystatechange = functionName;
    reqObj.open('GET', url, true);
	reqObj.send(null);
	return false;
}

function requestSend() {
	$('but').disabled = 'true';
	var req = makeRequestObject();
	var link = '/cgi-bin/bin/public/faq/send.cgi?question='+$('quest').value+'&name='+$('name').value + '&rand=' + (Math.round(Math.random()*1000+1)+rand++); 
	makeRequest(req, link, function () { clear(req); });
	return false;
}

function clear(obj) {
	if (obj.readyState == 4) {
        if (obj.status == 200) {
			$('quest').value = '';
			$('quest').innerHTML = '';
			$('name').value = '';
			$('but').disabled = true;
			oQuestSl.animation(oQuestSl.oItem);
			$('faq-message').className = '';
		} else {
			alert('Ошибка соединения! Проверьте Ваше соединение и повторите попытку.');
			$('but').disabled = false;
		}
	}
	return false;
}

var oQuestSl = new ULSlider();