  var imageCache = new Array();
  var imageMemoryCache = new Array();

  function preloadImages() {
    if (!document.images) return;
    var args = preloadImages.arguments;
    for (var i = 0; i < args.length; i+=2) {
      imageCache[args[i]] = new Image();
      imageCache[args[i]].src = args[i+1];
    }
  }

  function swapImage(objName, key, remember) {
    if (document.images && document.images[objName] && imageCache[key] && 
        document.images[objName].src != imageCache[key].src) {
      if (remember) {
        rememberImage(objName);
      }
      document.images[objName].src = imageCache[key].src;
    }
  }
    
  function rememberImage(objName) {
    if (document.images && document.images[objName]) {
      imageMemoryCache[objName] = document.images[objName].src;
    }
  }
  
  function restoreImage(objName) {
    if (document.images && document.images[objName] && imageMemoryCache[objName] && 
        document.images[objName].src != imageMemoryCache[objName].src) {
      document.images[objName].src = imageMemoryCache[objName];
    }
  } 

  function storedImage(objName, allURI) {
    var src = "";
    if (imageMemoryCache[objName]) {
      src = imageMemoryCache[objName];
      if (!allURI) {
        var pathOffset = src.indexOf("//");
        if (pathOffset >= 0) {
          pathOffset = src.indexOf("/", pathOffset + 2);
          if (pathOffset >= 0) {
            src = src.substring(pathOffset);
          }
        }
      }
    }
    return src;
  }

  preloadImages("nostars", "/lovefilm/images/ratings/nostars.gif",
                "starHover05", "/lovefilm/images/ratings/stars_3_05.gif",
                "starHover10", "/lovefilm/images/ratings/stars_3_10.gif",
                "starHover15", "/lovefilm/images/ratings/stars_3_15.gif",
                "starHover20", "/lovefilm/images/ratings/stars_3_20.gif",
                "starHover25", "/lovefilm/images/ratings/stars_3_25.gif",
                "starHover30", "/lovefilm/images/ratings/stars_3_30.gif",
                "starHover35", "/lovefilm/images/ratings/stars_3_35.gif",
                "starHover40", "/lovefilm/images/ratings/stars_3_40.gif",
                "starHover45", "/lovefilm/images/ratings/stars_3_45.gif",
                "starHover50", "/lovefilm/images/ratings/stars_3_50.gif",
                "starVote05", "/lovefilm/images/ratings/stars_2_05.gif",
                "starVote10", "/lovefilm/images/ratings/stars_2_10.gif",
                "starVote15", "/lovefilm/images/ratings/stars_2_15.gif",
                "starVote20", "/lovefilm/images/ratings/stars_2_20.gif",
                "starVote25", "/lovefilm/images/ratings/stars_2_25.gif",
                "starVote30", "/lovefilm/images/ratings/stars_2_30.gif",
                "starVote35", "/lovefilm/images/ratings/stars_2_35.gif",
                "starVote40", "/lovefilm/images/ratings/stars_2_40.gif",
                "starVote45", "/lovefilm/images/ratings/stars_2_45.gif",
                "starVote50", "/lovefilm/images/ratings/stars_2_50.gif",
                "starAvg05", "/lovefilm/images/ratings/stars_1_05.gif",
                "starAvg10", "/lovefilm/images/ratings/stars_1_10.gif",
                "starAvg15", "/lovefilm/images/ratings/stars_1_15.gif",
                "starAvg20", "/lovefilm/images/ratings/stars_1_20.gif",
                "starAvg25", "/lovefilm/images/ratings/stars_1_25.gif",
                "starAvg30", "/lovefilm/images/ratings/stars_1_30.gif",
                "starAvg35", "/lovefilm/images/ratings/stars_1_35.gif",
                "starAvg40", "/lovefilm/images/ratings/stars_1_40.gif",
                "starAvg45", "/lovefilm/images/ratings/stars_1_45.gif",
                "starAvg50", "/lovefilm/images/ratings/stars_1_50.gif",
                "ni", "/lovefilm/images/ratings/ni.gif",
                "niHover", "/lovefilm/images/ratings/niHover.gif",
                "niMini", "/lovefilm/images/ratings/niMini.gif",
                "niMiniHover", "/lovefilm/images/ratings/niMiniHover.gif",
                "nop", "/lovefilm/images/ratings/nop.gif",
                "nopHover", "/lovefilm/images/ratings/nopHover.gif",
                "clear", "/lovefilm/images/ratings/clear.gif",
                "clearHover", "/lovefilm/images/ratings/clearHover.gif");

  var ratingTimers = new Array();
  var ratingId = 0;

  var NOT_INTERESTED = -1;
  var NO_OPINION = -2;
  var CLEAR_VOTE = -3;
    
  function clearStatusbar() {
    window.setTimeout("window.status = '';", 1);
  }

  function restoreRatingState(id) {
    restoreImage("stars" + id);
    restoreImage("ni" + id);
    restoreImage("niMini" + id);
    restoreImage("nop" + id);            
    restoreImage("clear" + id);
  }

  function rememberRatingState(id) {
    rememberImage("stars" + id);
    rememberImage("ni" + id);
    rememberImage("niMini" + id);
    rememberImage("nop" + id);            
    rememberImage("clear" + id);
    ratingId = id;
  }

  function leaveRating(id) {
    if (!ratingTimers[id]) {
      ratingTimers[id] = window.setTimeout("restoreRatingState(" + id + ");", 100);
    }
  }

  function hoverRating(id, vote, avgVote) {
    clearStatusbar();
  
    if (ratingTimers[id] > 0) {
      window.clearTimeout(ratingTimers[id]);
      ratingTimers[id] = 0;
    }
    if (ratingId != id) {
      if (ratingId > 0) {
        restoreRatingState(ratingId);
      }
      rememberRatingState(id);
    }

    if (vote > 0) {
      swapImage("niMini" + id, "niMini");
      swapImage("ni" + id, "ni");
      swapImage("nop" + id, "nop");            
      swapImage("clear" + id, "clear");
        if (vote <= 1) {
         swapImage("stars" + id, "starHover05");
        } else {
         swapImage("stars" + id, "starHover" + (vote*5));
        }
    } else if (vote == NOT_INTERESTED) {
      swapImage("stars" + id, "nostars");
      swapImage("niMini" + id, "niMiniHover");
      swapImage("ni" + id, "niHover");      
      swapImage("nop" + id, "nop");            
      swapImage("clear" + id, "clear");
    } else if (vote == NO_OPINION) {
      swapImage("stars" + id, "nostars");
      swapImage("niMini" + id, "niMini");
      swapImage("ni" + id, "ni");      
      swapImage("clear" + id, "clear");
      swapImage("nop" + id, "nopHover");            
    } else if (vote == CLEAR_VOTE) {
      swapImage("stars" + id, "starAvg" + avgVote);    
      swapImage("niMini" + id, "niMini");
      swapImage("ni" + id, "ni");
      swapImage("nop" + id, "nop");            
      swapImage("clear" + id, "clearHover");    
    }
  }

function clickRating(id, vote, movieId) {
    document.images["vote" + id].src = "/dynimgs/rate.html?fr=" + Math.random() + "&rate_product=1&rating=" + vote + "&product_id=" + movieId;   
    if (vote > 0) {
		var starVote = 'starVote'+vote*10;
        if (starVote <= 5) {
         swapImage("stars" + id, "starVote05");
        } else {
         swapImage("stars" + id, starVote);
        }

    } else {
      AJAX.hide_item(movieId,'is_not_interested');
    }
    rememberRatingState(id);
  }


function clickEditorialRating(id, vote, editorialId, type) {
    document.images["vote" + id].src = "/widgets/ajax_rate_editorial.html?fr=" + Math.random() + "&rating=" + vote + "&editorial_id=" + editorialId;
    if (vote > 0) {
        if (vote <= 1) {
         swapImage("stars" + id, "starVote05");
        } else {
         swapImage("stars" + id, "starVote" + (vote*10));
        }
    } else {
      AJAX.hide_item(id,'is_not_interested');
    }
    rememberRatingState(id);
  }


function clickCommunityRating(id, vote, itemId, type) {
    document.images["vote" + id].src = "/widgets/ajax_rate_item.html?fr=" + Math.random() + "&rating=" + vote + "&id=" + itemId+ "&type=" + type;
    if (vote > 0) {
        if (vote == 0.5) {
            swapImage("stars" + id, "starVote05");
        } else {
            swapImage("stars" + id, "starVote" + (vote*10));
        }
    } else {
      AJAX.hide_item(id,'is_not_interested');
    }
    rememberRatingState(id);
  }

