function action(module, qid)
{
	if ((module=='delete') && (!confirm("Видалити цитату?"))) return false;
	var xmlHttp = createXmlHttpRequestObject();
	if (xmlHttp)
	{
		var comment;
		if (module=='vgrubu')
		{
			comment = prompt("Для відправлення скарги введіть причину.\nДля плагіату — пряме посилання на оригінал.\nПричини типу «не цікаво», «тупо» ігноруються.", "");
			if (!comment) return false;
		}
		if ((module=='up') || (module=='down'))
		{
			var rating=get("rating-" + qid);
			var up=get("up-" + qid);
			var down=get("down-" + qid);
			echo("up-" + qid, '<span class="voted">+</span> ');	
			echo("down-" + qid, '<span class="voted">&minus;</span>');
			comment="";
		}
		try
		{
			var parameters = "module=" + encodeURI(module) + "&qid=" + encodeURI(qid) + "&comment=" + encodeURIComponent(comment);
			xmlHttp.open("POST", "/action", true);	
			xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			xmlHttp.setRequestHeader("Content-length", parameters.length);
			xmlHttp.setRequestHeader("Connection", "close");
			xmlHttp.send(parameters);
		}
		catch (e) { vote_error(qid, rating, up, down, "Помилка приєднання до сервера!\nПеревірте з'єднання з Інтернетом та спробуйте знову."); }
		xmlHttp.onreadystatechange = function()
		{
			if (xmlHttp.readyState == 4) 
			{
				if (xmlHttp.status == 200)
				{
					try
					{
						if (xmlHttp.responseText=='ok') 
						{
							if ((module=='up') || (module=='down'))
							{
								if (module=='up') rating++;
								if (module=='down') rating--;
								echo("rating-" + qid, rating);
								try { 
									document.getElementById("rating-" + qid).style.display="inline";
									document.getElementById("probil-" + qid).style.display="none";
									document.getElementById("author-" + qid).style.display="inline";
								} catch (e) {}
							}
							if (module=='delete') echo("quote-" + qid, '<span class="deleted">Цитата '+ qid +' видалена!</span>');
							if (module=='vgrubu') echo("quote-" + qid, '<span class="deleted">Модератори повідомлені, дякуємо ;)</span>');
						}
						else vote_error(qid, rating, up, down, "Помилка: " + xmlHttp.responseText);
					}
					catch(e) { vote_error(qid, rating, up, down, "Помилка читання відповіді!\nПовідомте адміністрацію!"); }
				} 
				else vote_error(qid, rating, up, down, "Помилка отримання інформації!\nПеревірте з'єднання з Інтернетом та спробуйте знову.");
			}
		}
	}
	else location.href = "http://ukrbash.org/" + module + "/" + id;
}

// Cтворення об'єкту XMLHttpRequest (коректно працює з усіма версіями клятого ІЕ...)
function createXmlHttpRequestObject() 
{
	var xmlHttp;
	try { xmlHttp = new XMLHttpRequest(); }
	catch(e)
	{
		var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP");
		for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) 
		{
			try { xmlHttp = new ActiveXObject(XmlHttpVersions[i]); } 
			catch (e) {}
		}
	}
	if (!xmlHttp) return false;
	else return xmlHttp;
}

function vote_error(qid, rating, up, down, message)
{
	if (rating) echo("rating-" + qid, rating);
	if (up) echo("up-" + qid, up);
	if (down) echo("down-" + qid, down);
	alert(message);
}
function get (id)
{
	return document.getElementById(id).innerHTML;
}
function echo (id, content)
{
	document.getElementById(id).innerHTML=content;
}

function init() 
{

	if (!document.getElementsByTagName) return;
	var anchors = document.getElementsByTagName("a");
	for (var i = 0; i < anchors.length; i++) 
	{
		var anchor = anchors[i];
		if (anchor.getAttribute("rel")) 
		{
			var rel = anchor.getAttribute("rel");
			var external = false;
			if (rel.indexOf(" ") > 0) 
			{
				while (rel.indexOf(" ") > 0 && external == false) 
				{
					if (rel.substr(0, rel.indexOf(" ")) == "external") external = true;
					rel = rel.substr(rel.indexOf(" ") + 1, rel.length - rel.indexOf(" ") + 1);
				}
			}
			if (rel == "external") external = true;
			if (anchor.getAttribute("href") && external == true) anchor.target = "_blank";
		}
	}

	if (navigator.userAgent.indexOf('Safari') != -1)
	{
		var s = document.getElementById('search');
		s.type = 'search';
		s.setAttribute('results', '5');
    s.style.fontSize="8pt";
	}
}
function navigate(event)
{
	if (!document.getElementById) return;
	if (window.event) event = window.event;
	if (event.ctrlKey)
	{
		var link = null;
		var href = null;
		switch (event.keyCode ? event.keyCode : event.which ? event.which : null)
		{
			case 0x27:
				link = document.getElementById ('nextlink');
				break;
			case 0x25:
				link = document.getElementById ('prevlink');
				break;
			case 0x24:
				href = '/';
				break;
		}
		if (link && link.href) document.location = link.href;
		if (href) document.location = href;
	}
}
window.onload = init; 
document.onkeydown = navigate;
