/**
 * arena/voting.js
 *
 *
 *
 * Dependencies
 * - YUI
 *
 * @author Fermin <fsimeon@gaiaonline.com>
 **/


YAHOO.namespace('gaia.app.Arena');
YAHOO.gaia.app.Arena.Voting = function() {

	this._settings = null;
    this._ajaxRequest= null;
    this._commentButton = null;
}




YAHOO.gaia.app.Arena.Voting.prototype.init = function(settings){

    this._settings = {
    //settings for watchlist 
        wlerror:  YAHOO.util.Dom.get(settings.wlerrordiv),
        wlsigninerr: settings.wlsigninerr || 'SIGN IN ...',
        wlajaxerr: settings.wlajaxerr || 'AJAX FAILURES ...',

        //settings for voting stars
        starlimit  : (settings.starlimit || 5 ),
        votingdiv  : YAHOO.util.Dom.get(settings.votingdiv),
        average    : (settings.average || '0.0'),
        stardiv    : document.createElement('div'),
        notifytext : document.createElement('div'),
        threadId: settings.threadid,
        errordiv : YAHOO.util.Dom.get(settings.errordiv),
        url        : (settings.url || '#'),
        ratenumberdiv : settings.ratenumberdiv
    };
 
   this._make_stardiv();
    
    
}

YAHOO.gaia.app.Arena.Voting.prototype._make_stardiv = function() {
	
 
    YAHOO.util.Dom.addClass(this._settings.stardiv, 'rating');

    // create stars
    for (var i=1; i<=this._settings.starlimit; i++) {
 
        var star = document.createElement('div');
        star.id  = 'star1' + i;
        var a    = document.createElement('a');
        a.href   = this._settings.url + i;
        a.innerHTML = i;
        YAHOO.util.Dom.addClass(star, 'star1');
   
        star.appendChild(a);
        this._settings.stardiv.appendChild(star);
        // add listener to each star
        YAHOO.util.Event.addListener(star, 'mouseover', this._hover_star, i,this,true);
        YAHOO.util.Event.addListener(star, 'mouseout', this._reset_stars, this,true);
        
    }
    this._settings.votingdiv.appendChild(this._settings.stardiv);
    this._reset_stars();
    
    YAHOO.util.Dom.addClass(this._settings.notifytext, 'notifytext1');
    YAHOO.util.Dom.setStyle(this._settings.notifytext, 'opacity', 0);
    this._settings.votingdiv.appendChild(this._settings.notifytext);
    
}

YAHOO.gaia.app.Arena.Voting.prototype._hover_star = function(e, star_pos) {
	
	//alert(star_pos);
    for (var i=1; i<=star_pos; i++ ) {
        var star = YAHOO.util.Dom.get('star1' + i);
        var a    = star.firstChild;
        YAHOO.util.Dom.addClass(star, 'hover1');
        YAHOO.util.Dom.setStyle(a, 'width', '100%');
    }
    YAHOO.util.Dom.get(this._settings.ratenumberdiv).innerHTML = star_pos;
}

YAHOO.gaia.app.Arena.Voting.prototype._reset_stars = function() {

    if (this._settings.submitted == 0) {

        var average = this._settings.average.split('.');
        var stars_on = average[0];
        if (average[1] >= 0 ) {
            stars_on = parseInt(average[0]) +1;
        }
        var last_star_width = average[1] + '%'
    }
    else {

        var stars_on = this._settings.submitted;
        var last_star_width = '100%';
    }
 
    for ( var i = 1; i<=this._settings.starlimit; i++) {
    	
        var star = YAHOO.util.Dom.get('star1' + i);
        var a = star.firstChild;

        // first, reset all stars
        YAHOO.util.Dom.removeClass(star, 'hover1');
        YAHOO.util.Dom.removeClass(star, 'on1');

        if (i<=stars_on && !YAHOO.util.Dom.hasClass(star, 'on1')) {
            YAHOO.util.Dom.addClass(star, 'on1');
        }
        if (i == stars_on)
            YAHOO.util.Dom.setStyle(a, 'width', last_star_width);
    }
    YAHOO.util.Dom.get(this._settings.ratenumberdiv).innerHTML = "";


}

function initVoting(settings) {
    voting = new YAHOO.gaia.app.Arena.Voting();
    voting.init(settings);

}
