(function() {
  var x = getXmlHttpObject();
  if(x) {
    var updateNodes = function(id,xmlNode) {
      var count = get_by_tag('count',xmlNode)[0].firstChild.nodeValue;
      var url = get_by_tag('url',xmlNode)[0];
      if(url.firstChild) {
	url = url.firstChild.nodeValue;
	var voteLink = get_by_id('uservote'+id);

	var newVoteLink = make_el('A',{id:voteLink.id,href:url,innerHTML:voteLink.innerHTML});
	replace_el(newVoteLink,voteLink);
      }
      else{
	var voteLink = get_by_id('uservote'+id);
	var newVoteLink = make_el('SPAN',{id:voteLink.id,innerHTML:voteLink.innerHTML});
	replace_el(newVoteLink,voteLink);
      };
      get_by_id('userscore'+id).innerHTML = count;
    };
    var processResponce = function() {
      if(x.responseXML && x.responseXML.lastChild) {
	var gbu = x.responseXML.lastChild;
	var id = get_by_tag('id',gbu)[0].firstChild.nodeValue;
	updateNodes('-good-'+id,get_by_tag('good',gbu)[0]);
/* 	updateNodes('-bad-'+id,get_by_tag('bad',gbu)[0]); */
      }
    };
    var sendRequest = function(url) {
      if(x.readyState != 0)x.abort();
      x.open('GET', url+'?'+(new Date).getTime(), true);
      x.onreadystatechange = function() {
	if (x.readyState == 4) {
	  processResponce();
	}
      };
      x.send(null);
    };
    var checkClick = function(e) {
      var srcEl = get_srcEl(e);
      if(!srcEl.href) srcEl = srcEl.parentNode;
      if(srcEl.href) {
	var id = srcEl.id;
	if(id.indexOf('uservote') == 0) {
	  preventDefault(e);
	  if(!srcEl.isClicked) {
	    srcEl.isClicked = true;
	    sendRequest(srcEl.href+'?js=vote&rt='+(new Date).getTime());
	  };
	  return false;
	};
	return true;
      };
      return true;
    };
    addEvent(document,'click',checkClick,false);
  }
})();
 
