
function ratingOut(starContainerDiv, event)
{
    var ratingContainer = findRatingContainer(starContainerDiv);
    
    if (ratingContainer.disabled) {
        return;
    }
    
    var allStarImages = starContainerDiv.getElementsByTagName("IMG");

    var seenThisOne = false;
    for (var i = 0; i < allStarImages.length; i++) {    
        if (allStarImages[i].original) {
            allStarImages[i].src = allStarImages[i].original;
        }
    }
    
    var existingLabel = getRatingLabel(ratingContainer);
    if (existingLabel != store_getMessage("ratingGotItLabel")) {
        var newLabel = ratingContainer.defaultLabel ? ratingContainer.defaultLabel : store_getMessage("ratingRateItLabel");
        setRatingLabel(newLabel, ratingContainer);
    }
    Event.stop(event);
}

function ratingStarOver(starImage, event)
{    
    var ratingContainer = findRatingContainer(starImage);
    
    if (ratingContainer.disabled) {
        return;
    }
    
    var allStarImages = ratingContainer.getElementsByTagName("IMG");
    var ratingLabels = [store_getMessage("ratingLabelsLikeIt"), store_getMessage("ratingLabelsCraveIt"), store_getMessage("ratingLabelsLoveIt")];
    
    var seenThisOne = false;
    for (var i = 0; i < allStarImages.length; i++) {
    
        if (!allStarImages[i].original) {
            allStarImages[i].original = allStarImages[i].src;
        }

        var newStar = seenThisOne ? "/im/gray_heart.gif" : "/im/rollover_heart.gif";
        allStarImages[i].src = allStarImages[i].src.replace(/\/im\/.*\.gif/, newStar);
        if (allStarImages[i] == starImage) {
            seenThisOne = true;
            setRatingLabel(ratingLabels[i], ratingContainer);
        }
    }
    Event.stop(event);
}

function findRatingContainer(node)
{
    while (node && node.className != 'ratingContainer') {
        node = node.parentNode;
    }
    return node;
}

function setRatingLabel(label, ratingContainer)
{
    var allSpans = ratingContainer.getElementsByTagName("SPAN");
    allSpans[0].innerHTML = label;
}

function getRatingLabel(ratingContainer)
{
    var allSpans = ratingContainer.getElementsByTagName("SPAN");
    var label = allSpans[0].innerHTML;
    return label.replace(/((\s*\S+)*)\s*/, "$1");
}

function rateLook(element, url)
{
    var ratingContainer = findRatingContainer(element);
    
    if (ratingContainer.disabled) {
        return false;
    }

    ratingContainer.defaultLabel = getRatingLabel(ratingContainer);

    setRatingLabel(store_getMessage("ratingGotItLabel"), ratingContainer);
    
    var allStarImages = ratingContainer.getElementsByTagName("IMG");
    for (var i = 0; i < allStarImages.length; i++) {
        allStarImages[i].original = allStarImages[i].src;
    }
    
    return fireDirectActionAjax(element, url);
}
