
var EMPTY_STAR_IMG = '/images/common/star_empty.gif';
var FULL_STAR_IMG  = '/images/common/star_full.gif';
var HALF_STAR_IMG  = '/images/common/star_half.gif';

var NUM_STARS      = 5;
var UPDATE_FREQ    = 4;
var RESET_DELAY    = 3;
var SAVING_MSG     = 'In process...';
var SAVED_MSG      = 'Vote successfuly submitted. Thanks.';
var ERROR_MSG      = 'Erreur!';
var DELAY_MSG      = 'You have already voted for this game.';
var SUCCESS_MSG	   = 'success'	    
var VOTE_MESSAGES  = new Array('Bad', 'Correct', 'good', 'Very good', 'Fabulous');

var can_vote      = true;
var ajax_req      = null;
var reset_counter = 0;
var preloaded     = new Array();

var arVersion = navigator.appVersion.split("MSIE")
var version = parseFloat(arVersion[1])

/** Callback function for body-onload. */
function star_init() {
    // Preload star images...
    var urls = new Array(EMPTY_STAR_IMG, FULL_STAR_IMG, HALF_STAR_IMG);
    for (var i = 0; i < urls.length; i++) {
        preloaded[i] = new Image();
        preloaded[i].src = urls[i];
    }

    star_update();
}


/** Callback function for timer. */
function star_update() {
    setTimeout('star_update();', Math.floor(1000 / UPDATE_FREQ));

    if (!can_vote)
        return;

    if (reset_counter) {
        if (!--reset_counter) {
            fill_stars(avg_score);
            set_vote_msg(num_votes + ' vote' + (1 < num_votes ? 's' : ''));
        }
    }
}


/** Callback function for star mouseover. */
function star_over(score) {
    if (!can_vote)
        return;
    fill_stars(score);
    set_vote_msg(VOTE_MESSAGES[score - 1]);

    reset_counter = 0;
}


/** Callback function for star mouseout. */
function star_out(score) {
    if (!can_vote)
        return;

    reset_counter = RESET_DELAY;
		set_vote_msg("");
		fill_stars(score);
}

/** Updates the star images with a new score. */
function fill_stars(score) {
    if ('undefined' == typeof(document.images))
        return;
    var delta = NUM_STARS / (NUM_STARS * 2 + 1);
    var pos = 0;
   
    for (var i = 1; i <= NUM_STARS; i++) {
        var src = EMPTY_STAR_IMG;
        pos += delta;
        if (score > pos)
            src = HALF_STAR_IMG;
        pos += delta; 
        if (score > pos)
            src = FULL_STAR_IMG;

        document.images['star' + i].src = src;
    }
}

/** Updates the vote message span. */
function set_vote_msg(msg) {
    if ('undefined' == typeof(document.images))
        return;
    var vs = document.getElementById('vote_span');
    if (vs)
        vs.innerHTML = msg;
}

/** Updates the vote message span. */
function set_vote_rating(msg) {
    if ('undefined' == typeof(document.images))
        return;
    var vs = document.getElementById('rating_span');
    if (vs)
        vs.innerHTML = msg+"/10";
}

/** Callback function for star click. */
function star_click(id, score, prev_score) {
	  s = prev_score;
    if (!can_vote)
        return;

    // Internet Explorer.
    var objs = new Array('Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'Msxml2.XMLHTTP.3.0',
                         'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP');
    for (var i = 0; !ajax_req && i < objs.length; i++) {
        try {
            ajax_req = new ActiveXObject(objs[i]);
        } catch (e) {
            ajax_req = null;
        }
    }

    // ICEbrowser.
    if (!ajax_req && 'undefined' != typeof(window.createRequest))
        ajax_req = window.createRequest();

    // Firefox and other standard browsers.
    if (!ajax_req && 'undefined' != typeof(XMLHttpRequest))
        ajax_req = new XMLHttpRequest();

    if (!ajax_req)
        return;

    can_vote = false;
    set_vote_msg(SAVING_MSG);

    ajax_req.open('GET', "http://games.vmn.net/?rating="+escape(score)+"&params=rating/"+escape(id), true);
    //var data = "rating="+escape(score)+"&params=rating/"+escape(id);
    ajax_req.onreadystatechange = req_change;
    ajax_req.send(null);
}

/** Callback function for AJAX ready state change. */
function req_change() {
    if (4 != ajax_req.readyState)
        return;

    if (200 != ajax_req.status || -1 != ajax_req.responseText.indexOf('ERROR')) {
        set_vote_msg(ERROR_MSG);
        return;
    }

    if (-1 != ajax_req.responseText.indexOf('DELAY')) {
        set_vote_msg(DELAY_MSG);
        fill_stars(s);
        return;
    }

    set_vote_rating(ajax_req.responseText);
    set_vote_msg(SAVED_MSG);
		//fill_stars(Math.round(ajax_req.responseText)/2);
		fill_stars(ajax_req.responseText/2);
}

/*function fixPNG(myImage) 
{	
    if ((version >= 5.5) && (version < 7) && (document.body.filters)) 
    {
     var imgID = (myImage.id) ? "id='" + myImage.id + "' " : ""
	   var imgClass = (myImage.className) ? "class='" + myImage.className + "' " : ""
	   var imgTitle = (myImage.title) ? 
		             "title='" + myImage.title  + "' " : "title='" + myImage.alt + "' "
	   var imgStyle = "display:inline-block;" + myImage.style.cssText
	   var strNewHTML = "<span " + imgID + imgClass + imgTitle
                  + " style=\"" + "width:" + myImage.width 
                  + "px; height:" + myImage.height 
                  + "px;" + imgStyle + ";"
                  + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
                  + "(src=\'" + myImage.src + "\', sizingMethod='scale');\"></span>"          
	   myImage.outerHTML = strNewHTML	  

    }
}*/