var gid=null;

function star_over(id,n) {
  var group=document.getElementById("rate-"+id);
  var stars=group.getElementsByTagName("img");
  for ( var i=0; i<Math.floor(n/2); i++ ) {
    stars[i].src = HOST_PATH+"/img/star_over.gif";
  }
}

function star_out(id,n) {
  var group=document.getElementById("rate-"+id);
  var stars=group.getElementsByTagName("img");
  var full_stars=Math.floor(n/2);
  var half_star=(n%2==1);
  var empty_stars=Math.floor((10-n)/2);
  var i=0;
  for ( i=0; i<full_stars; i++ ) {
    stars[i].src = HOST_PATH+"/img/star_on.gif";
  }
  if (half_star) {
    stars[i].src = HOST_PATH+"/img/star_half.gif";
    i++;
  }
  while (i<5) {
    stars[i].src=HOST_PATH+"/img/star_off.gif";
    i++;
  }
}

function rate(id,n) {
  var url=HTTP_HOST+"/rate.php?deal_id="+id+"&rating="+n;
  loadXMLDoc(url,change_rating);
  gid = id;
}

function loadXMLDoc(url,handler) {
  if ( window.XMLHttpRequest ) { // Native support for XMLHttpRequest objects
    try {
      req = new XMLHttpRequest();
    } catch(e) {
      req = false;
    }
  } else if ( window.ActiveXObject ) { // ActiveX version
    try {
      req = new ActiveXObject( "Msxml2.XMLHTTP" );
    } catch (e) {
      try {
        req = new ActiveXObject( "Microsoft.XMLHTTP" );
      } catch (e) {
        req = false;
      }
    }
  }
  if (req) {
    req.onreadystatechange = handler;
    req.open( "GET", url, true );
    req.send("");
  }
}

function change_rating() {
  if ( req.readyState == 4 ) { // 4 = has loaded
    if ( req.status == 200 ) { // HTTP 200 response means ok
      if ( req.responseText.search(/\d+/) != -1 ) {
        var group=document.getElementById("rate-"+gid);
        var stars=group.getElementsByTagName("img");
        for ( var i=0; i<stars.length; i++ ) {
          stars[i].style.display="none";
        }
        setTimeout("reset("+gid+","+req.responseText+")",1000);
        var text=document.createElement("span");
        text.innerHTML = "Deal Rated";
        group.appendChild(text);
        text.id = "deal-rated-"+gid;
        gid=null;
      }
    } else {
      //alert( "There was a problem retrieving the page's data:\n" + req.statusText );
    }
  }
}


function reset(id,n) {
  var text=document.getElementById("deal-rated-"+id);
  text.parentNode.removeChild(text);
  var group=document.getElementById("rate-"+id);
  var stars=group.getElementsByTagName("img");
  for ( var i=0; i<stars.length; i++ ) {
    stars[i].onmouseover=null;
    stars[i].onmouseout=null;
    stars[i].onclick=null;
    stars[i].style.cursor="default";
    stars[i].style.display="inline";
  }
  star_out(id,n);
}
