var REVIEWSWIDGET = 1;
var REVIEWSWIDGETDIRECTWRITE = 1;
//var REVIEWSWIDGET_IMG_ROOT = '/images/rate/i/';
var REVIEWSWIDGET_SET_PAGE = '/index.php?action=reviews/vote_review';
var REVIEWSWIDGET_SET_LOGIN = '/index.php?action=login_form';

// These are the values associated with the size of the rating widget
var REVIEWSWIDGET_HEIGHT = 17;
var REVIEWSWIDGET_WIDTH = 132;

// Storing and preloading of ratingwidget images
var ReviewWidgetImages;

// ReviewWidgetImageName

function ReviewWidgetImageName(n)
{
    if (n == 1)
    {
        return REVIEWSWIDGET_IMG_ROOT + "helpful_o.gif";//"rate_reviews_1.gif";
    }
    else if (n == -1)
    {
        return REVIEWSWIDGET_IMG_ROOT + "not_helpful_o.gif";//"rate_reviews_3.gif";
    }
    else
    {
        return REVIEWSWIDGET_IMG_ROOT + "helpful.gif"; //"rate_reviews_0.gif";
    }
}

// ReviewWidgetImage

function ReviewWidgetImage(reviewRating)
{
    if (!ReviewWidgetImages[reviewRating])
    {
        ReviewWidgetImages[reviewRating] = new Image(REVIEWSWIDGET_WIDTH, REVIEWSWIDGET_HEIGHT);
        ReviewWidgetImages[reviewRating].src = ReviewWidgetImageName(reviewRating);
    }

    return ReviewWidgetImages[reviewRating].src;
}

// ReviewWidgetPreload

function ReviewWidgetPreload()
{
    if (! ReviewWidgetImages)
    {
        ReviewWidgetImages = new Array();

        ReviewWidgetImages[-1] = new Image(REVIEWSWIDGET_WIDTH, REVIEWSWIDGET_HEIGHT);
        ReviewWidgetImages[-1].src = ReviewWidgetImageName(-1);
        ReviewWidgetImages[0] = new Image(REVIEWSWIDGET_WIDTH, REVIEWSWIDGET_HEIGHT);
        ReviewWidgetImages[0].src = ReviewWidgetImageName(0);
        ReviewWidgetImages[1] = new Image(REVIEWSWIDGET_WIDTH, REVIEWSWIDGET_HEIGHT);
        ReviewWidgetImages[1].src = ReviewWidgetImageName(1);

        ReviewWidgetSaveRatingImage = new Image(REVIEWSWIDGET_WIDTH, REVIEWSWIDGET_HEIGHT);
        ReviewWidgetSaveRatingImage.src = REVIEWSWIDGET_IMG_ROOT + "save_review.gif";

        ReviewWidgetEnabled = true;
    }
}

// State Info about all the ReviewWidgets on the page

var ReviewWidgetCount = 0;
var ReviewWidgetItemIds = new Array();
var ReviewWidgetRatings = new Array();
var ReviewWidgetTimers = new Array();
var ReviewWidgetLastEntered = -1;
var ReviewWidgetEnabled = false;

// ReviewWidgetMouseOver

function ReviewWidgetMouseOver(imgNum, whatRating)
{
    // Cancel any background request to restore this image.
    if (ReviewWidgetTimers[imgNum] != 0)
    {
        window.clearTimeout(ReviewWidgetTimers[imgNum]);
        ReviewWidgetTimers[imgNum] = 0;
    }
    ReviewWidgetLastEntered = imgNum;
    // Make the ReviewWidget show appropriate feedback.

    document.images["ReviewWidget"+imgNum].src = ReviewWidgetImage(whatRating);

    return false;
}

// ReviewWidgetClick

function ReviewWidgetClick(whatRating)
{
    var itemId;
    var rateHref;
    var rateWindow;
    var imgNum = ReviewWidgetLastEntered;

    if (!USERSESSION)
    {
        window.location.href = REVIEWSWIDGET_SET_LOGIN;
        return void(0);
    }

//    document.images["ReviewWidget" + imgNum].src = ReviewWidgetSaveRatingImage.src;
    ReviewWidgetTimers[imgNum] = window.setTimeout("ReviewWidgetRestore("+imgNum+")", 550);

    ReviewWidgetEnabled = false;
    itemId = ReviewWidgetItemIds[imgNum];

    // Update the saved state of the ReviewWidget and the display
    rateHref = "&review_id="+itemId+"&rate="+whatRating;
    ReviewWidgetRatings[imgNum] = whatRating;

    rateHref = REVIEWSWIDGET_SET_PAGE + rateHref;
    //window.location.href = rateHref;
    //return void(0);
    RatingSubmitImage = new Image(0, 0);
    RatingSubmitImage.src = rateHref;
    ReviewWidgetEnabled = true;
    return void(0);
}

// ReviewWidgetRestore

function ReviewWidgetRestore(imgNum)
{
    if (!document.images["ReviewWidget"+imgNum]) return;

    document.images["ReviewWidget"+imgNum].src = ReviewWidgetImage(ReviewWidgetRatings[imgNum]);

    if (ReviewWidgetLastEntered == imgNum)
    {
        ReviewWidgetLastEntered = -1;
    }
}

// ReviewWidgetMouseOut

function ReviewWidgetMouseOut(whichStar)
{
    // Restore the image to the saved state, once a little time has elapsed.
    var imgNum = ReviewWidgetLastEntered;
    if (imgNum < 0)
    {
        return void(0);
    }

    if (!ReviewWidgetTimers[imgNum])
    {
        ReviewWidgetTimers[imgNum] = window.setTimeout("ReviewWidgetRestore("+imgNum+")", 100);
    }
}

// ReviewWidgetCreate

function ReviewWidgetCreate(imgNum, itemId, reviewRating)
{
  var w_rite = "";

    with (document)
    {
        w_rite += ("<div id='reviewDiv" + imgNum + "'><table cellspacing=0 cellpadding=0 border=0>");
        w_rite += ("<tr><td><img src='images/spacer.gif"
            + "' width=90 height=1 border=0></td></tr>");

        if (itemId < 0)
        {
            // If an Item is negative this makes the bar disabled...
            w_rite += ("<tr><td align='center'><img src='"
                + ReviewWidgetImage(reviewRating)
                + "' border=0></td></tr>");
        }
        else
        {
            w_rite += ("<tr ><td align='center' class='link'><map name='ReviewWidget"
                + imgNum
                + "'>"
                + "<area onClick='javascript:ReviewWidgetClick(1);' onMouseOver='ReviewWidgetMouseOver("
                + imgNum
                + ", 1);' onMouseOut='ReviewWidgetMouseOut(1);' shape='rect' coords='0,0,77,20'>"

                + "<area onClick='javascript:ReviewWidgetClick(-1);' onMouseOver='ReviewWidgetMouseOver("
                + imgNum
                + ", -1);' onMouseOut='ReviewWidgetMouseOut(-1);' shape='rect' coords='89,0,167,20'>"

                + "</map><img name='ReviewWidget"
                + imgNum
                + "' usemap='#ReviewWidget"
                + imgNum
                + "' src='"
                + ReviewWidgetImage(reviewRating)
                + "' border=0></td></tr>");
        }
        //if (!USERSESSION)
        //{
        //    w_rite += ("<tr><td align='center'>"
        //       + "["
        //       + "<a href=\"" + REVIEWSWIDGET_SET_LOGIN + "\">"
        //       + "Report this"
        //       + "</a>"
        //       + "]"
        //       + "</td></tr>");
        //}
        //else
        //{
        //    w_rite += ("<tr><td align='center'>"
        //       + "["
        //       + "<a href=\"index.php?action=user/write_review_report&review=" + itemId + "\">"
        //       + "Report this"
        //       + "</a>"
        //       + "]"
        //       + "</td></tr>");
        //}
        w_rite += ("</table></div>");

        if (REVIEWSWIDGETDIRECTWRITE)
        {
            write(w_rite);
        }
        else
        {
            return w_rite;
        }
    }
}

// ReviewWidgetInsert

function ReviewWidgetInsert(itemId, reviewRating)
{
    var imgNum = ReviewWidgetCount++;
    if (itemId >= 0) {
        // Get orginal values
        ReviewWidgetItemIds[imgNum] = itemId;
        ReviewWidgetRatings[imgNum] = reviewRating;
        ReviewWidgetTimers[imgNum] = 0;
    }

    if (REVIEWSWIDGETDIRECTWRITE)
    {
        ReviewWidgetCreate(imgNum, itemId, reviewRating);
    }
    else
    {
        return ReviewWidgetCreate(imgNum, itemId, reviewRating);
    }
}

ReviewWidgetPreload();