var http = GetXmlHttp();

function rateItem(type, itemId, rating, url)
{
  SendHttpGet(http, url, handleRatingResponse);
}

function handleRatingResponse()
{
  if (http.readyState != 4)
    return;
  else
  {
    if (http.status == 200)
    {
      //alert(http.responseText);
      var results = http.responseText.split("\n");
      updateItemRating(results);
    }
    else
      alert('Bad status of ' + http.status + ' returned.');
  }
}

function updateItemRating(results)
{
  var type = results[0];
  var itemId = results[1];
  var rating = results[2];
  var votes = results[3];
  var userRating = results[4];
  var maxrating = results[5];

  if (type != "error")
  {
    updateElementDisplay('rating.rating2.' + type + '.' + itemId, rating);
    updateElementDisplay('rating.rating.' + type + '.' + itemId, rating);
    updateElementDisplay('rating.votes.' + type + '.' + itemId, votes);
    updateElementDisplay('rating.userRating.' + type + '.' + itemId, userRating);
    updateAveragePercent(type, itemId, rating * 100 / maxrating);

    resetStarDisplay(type, itemId, maxrating);
  }
  else if (itemId)
    alert(itemId);
  else
    alert("Fehler");
}

function resetStarDisplay(type, itemId, maxrating)
{
  var userRating = document.getElementById('rating.userRating.' + type + '.' + itemId).innerHTML;
  updateStarDisplay(type, itemId, userRating, maxrating);
}

function updateAveragePercent(type, itemId, averagePercent)
{
  var e = document.getElementById('rating.averagePercent.' + type + '.' + itemId);
  e.style.width = averagePercent + "%";
}

function updateStarDisplay(type, itemId, userRating, maxrating)
{
  var rating = document.getElementById('rating.rating.' + type + '.' + itemId).innerHTML;

  for (i=1; i <= maxrating; i++)
  {
    var t = 'rating.star.' + type + '.' + itemId + '.' + i;
    var star = document.getElementById(t);
    if (userRating != 'N/A')
    {
      if ((rating >= i) && (userRating >= i))
        star.className='giRatingFullUserYes';
      else if ((rating >= i) && (userRating < i))
        star.className='giRatingFullUserNo';
      else if ((rating < i) && (userRating >= i))
      {
        if (i - rating < 1)
          star.className='giRatingHalfUserYes';
        else
          star.className='giRatingEmptyUserYes';
      }
      else if ((rating < i) && (userRating < i))
      {
        if (i - rating < 1)
        {
          //alert("i=" + i + ", rating=" + rating + ", userrating=" + userRating);
          if (userRating != 0 && i<rating)
            star.className='giRatingHalfUserNo';
          else
            star.className='giRatingEmptyUserHalfYes';
        }
        else
          star.className='giRatingEmpty';
      }
    }
    else
    {
      if (rating >= i)
        star.className='giRatingFullUserNo';
      else if (i - rating < 1)
        star.className='giRatingHalfUserNo'; //giRatingEmptyUserHalfYes
      else
        star.className='giRatingEmpty';
    }
  }
}

function updateElementDisplay(id, str)
{
  document.getElementById(id).replaceChild(
      document.createTextNode(str),
      document.getElementById(id).childNodes[0]);
}