function getxmlhttp() {
	var http_request;
	try {
		http_request = new ActiveXObject("Microsoft.XMLHTTP");
	} catch (e) {
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new XMLHttpRequest();
				http_request.overrideMimeType('text/xml');
			} catch (e) {}
		}
	}
	return http_request;
}
/*
function getxmlhttp() {
	var http_request = false;
	if (typeof XMLHttpRequest != "undefined") {
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			// FIX: Za da se izbegne sintaktichna greshka vuv Firefox ako vurnatia rezultat ne e validen XML
			http_request.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) {
		var aVersions = ["MSXML2.XmlHttp.5.0", "MSXML2.XmlHttp.4.0", "MSXML2.XmlHttp.3.0", "MSXML2.XmlHttp", "Microsoft.XmlHttp"];
		for (var i = 0; i < aVersions.length; i ++) {
			try {
				http_request = new ActiveXObject(aVersions[i]);
			} catch (oError) {
				// Do nothing
			}
		}
	}
	if (!http_request) {
		throw new Error ('XMLHttp object not created!');
		return false;
	}
	return http_request;
}
*/
function ajaxsubmit(p,t,cid) {
	var http_request = getxmlhttp();
	if (!http_request) return true;
	
	disableformbuttons(p);
	
	http_request.onreadystatechange = function() { hndsubmit(http_request,cid); };
	
	var qry = generateformquery(p);
	
	var lmethod = 'GET';
	
	http_request.open(lmethod, '/ajaxpoll.php?type=' + t + '&' + (lmethod == 'GET' ? qry : ''), true);
	if (lmethod == 'POST') http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request.send(lmethod == 'GET' ? null : qry);
	
	return false;
}

var lastsubmitbut = '';
var lastsubmitval = '';

function clicksubmit(b) {
	lastsubmitbut = b.name;
	lastsubmitval = b.value;
	return true;
}

function generateformquery(f) {
	var retstr = "";
	for (var i = 0; i < f.elements.length; i++) {
		if (f.elements[i].type.toLowerCase() == 'text' || f.elements[i].type.toLowerCase() == 'textarea' 
			|| f.elements[i].type.toLowerCase() == 'hidden') {
			retstr += f.elements[i].name + "=" + escape(f.elements[i].value) + "&";
		} else if (f.elements[i].type.toLowerCase() == 'submit') {
			if (f.elements[i].name == lastsubmitbut && f.elements[i].value == lastsubmitval) retstr += f.elements[i].name + "=" + escape(f.elements[i].value) + "&";
		} else if (f.elements[i].type.toLowerCase() == 'select') {
			retstr += f.elements[i].name + "=" + escape(f.elements[i].options[f.elements[i].selectedIndex]) + "&";
		} else if (f.elements[i].type.toLowerCase() == 'radio' || f.elements[i].type.toLowerCase() == 'checkbox') {
			if (f.elements[i].checked) retstr += f.elements[i].name + "=" + escape(f.elements[i].value) + "&";
		}
	}
	return retstr;
}

function clearchilds(p) {
	for(var i = p.childNodes.length - 1; i >= 0; i--) {
		p.removeChild(p.childNodes[i]);
	}
}

function hndsubmit(p,cid) {
	if (p.readyState == 4 && p.status == 200) {
		//~ var rxml = http_request.responseXML;
		//~ var ans = rxml.getElementsByTagName('ans');
		
		var canketa = document.getElementById(cid);
		canketa.innerHTML = p.responseText;
		return ;
		
		/*
		clearchilds(canketa);
		for(var i = 0; i < ans.length; i++) {
			var lid = ans.item(i).getAttribute('id');
			var s = document.getElementById("ans" + lid);
			
			if (!s) {
				var s = document.createElement("DIV");
				s.className = "ansstulb";
				s.id = "ans" + lid;
				canketa.appendChild(s);
				canketa.appendChild(document.createTextNode(ans.item(i).firstChild.nodeValue));
			}
			s.style.width = parseInt(ans.item(i).getAttribute('votes')) * 10;
		}
		*/
	}
}

function disableformbuttons(p) {
	for(i=0; i < p.elements.length; i++) {
		if (p.elements[i].type.toLowerCase() == 'submit') {
			p.elements[i].disabled = true;
		}
	}
}

/* --- */
function showvoteform(st, t, cid) {
	var http_request = getxmlhttp();
	if (!http_request) return true;
	
	http_request.onreadystatechange = function() { 
		if (t == 1) {
			forumvoteformload(http_request);
		} else {
			voteformload(http_request,cid);
		}
	};
	
	var lmethod = 'GET';
	
	http_request.open(lmethod, '/voteform2.php?storyid=' + st + '&type=' + t, true);
	
	http_request.send(null);
	
	return false;
}

function voteformload(p,cid) {
	if (p.readyState == 4 && p.status == 200) {
		var voteform = document.getElementById(cid);
		voteform.innerHTML = p.responseText;
		return ;
	}
}

function forumvoteformload(p) {
	if (p.readyState == 4 && p.status == 200) {
		var voteforms, vform_id, vspan, idelems;
		var el = document.createElement('span');
		el.innerHTML = p.responseText;
		if (el.hasChildNodes()) {
			var c = el.childNodes;
			for (var i = 0; i < c.length; i++) {
				vform_id = c[i].id;
				idelems = vform_id.split("_"); 
				vform_id = idelems[1];
				vdiv = document.getElementById("ratemsg" + vform_id);
				if (vdiv) {
					vdiv.innerHTML = c[i].innerHTML;
				}
			}
		}
		return ;
	}
}

function forumvotesinit(clname, content) {
	var voteboxes = document.getElementsByClassName(clname);
	for (var i = 0; i < voteboxes.length; i++) {
		voteboxes[i].innerHTML = content;
	}
	return;
}
