/**
 * @file
 * @brief JavaScript stuff for version #2 of the the 5-star voting system.
 * @author Marc-Andre Disnard <madisnard@gmail.com>
 * @version $Id: vote-v2.js 357 2007-01-21 21:20:33Z mad $
 */

function BK_getCookie(c_name) {
	if (document.cookie.length>0) {
		c_start=document.cookie.indexOf(c_name + "=");
		if (c_start!=-1) { 
			c_start=c_start + c_name.length+1; 
			c_end=document.cookie.indexOf(";",c_start);
			if (c_end==-1) c_end=document.cookie.length;
			return unescape(document.cookie.substring(c_start,c_end));
		} 
	}
	return "";
}

var EMPTY_STAR_IMG = 'images/etoiles/star-16px-empty.png';
var FULL_STAR_IMG  = 'images/etoiles/star-16px-full.png';
var HALF_STAR_IMG  = 'images/etoiles/star-16px-half.png';
var NUM_STARS      = 5;
var UPDATE_FREQ    = 4;
var RESET_DELAY    = 3;

var can_vote      = true;
var ajax_req      = null;
var reset_counter = 0;
var preloaded     = new Array();
var langue 			= BK_getCookie('LANGUEtac')


/** 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);
			
			if(langue == "en") {
				lexique_views = "view";
			} else {
				lexique_views = "visionnement";
			}
			
            set_vote_msg(num_votes_f + ' vote' + (1 < num_votes ? 's' : '') + ' <br /> ' +
                         num_views_f + ' '+ lexique_views + (1 < num_views ? '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;
	
}


/** Callback function for star click. */
function star_click(id, score) {
    if (!can_vote)
        return;

    // Internet Explorer.
    var objs = new Array('Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 
						 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'Msxml2.XMLHTTP.3.0');
    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', 'vote.php?id=' + escape(id) + '&score=' + escape(score), true);
    ajax_req.onreadystatechange = req_change;
    ajax_req.send(null);
	
}


/** 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;
}

/** 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);
        return;
    }
	
	setTimeout('messageFin()',2500);
	set_vote_msg(SAVED_MSG);
}


function messageFin() {
	
	if(langue == "en") {
		lexique_views = "view";
	} else {
		lexique_views = "visionnement";
	}
	
	fill_stars(avg_score);
	
	niouNum = num_votes+1;
	niouNum = niouNum.toString();
	var niouNum_f = "";
	var blocsTrois = 0;

	for(x=niouNum.length; x>0; x--) {
		niouNum_f = niouNum.substring((x-1),x) + niouNum_f;
		blocsTrois++;
		if(blocsTrois==3) {
			niouNum_f = " " + niouNum_f;
			blocsTrois = 0
		}
	}
	
 	messageVote = niouNum_f + ' vote' + (1 < num_votes ? 's' : '') + ' <br /> ' +
                         num_views_f + ' '+ lexique_views + (1 < num_views ? 's' : '');
		 set_vote_msg(messageVote);	
}

star_init();