/*************************************************
Star Rating
Author: Ritesh Agrawal (http://php.scripts.psu.edu/rja171/widgets/rating.php)
        email: ragrawal [at] gmail (dot) com
Modified by: Kemot
************************************************/

jQuery.fn.rating = function(wid,nov,vsum) {
	
    var settings = {
        url : 'includes/rating_ajax.php',
        avrg: (nov == 0) ? 0 : (vsum/nov),
        curvalue: (nov == 0) ? 0 : Math.round(vsum/nov),
        wid: wid,
        nov: nov,
        vsum: vsum
    };
   
    var container = jQuery(this);
    var rated = false;

    for(var i=1; i <= 5 ; i++){
        var $div = $('<div class="star"></div>')
        .append('<a href="#'+i+'" title="'+i+'/5">'+i+'</a>')
        .appendTo(container);
    }

    if(settings.nov==0){
        $('<div id="ratxt">Brak ocen</div>').appendTo(container);
    }else{
        $('<div id="ratxt">'+ settings.avrg.toFixed(2) + ' <small>(głosów: '+settings.nov+')</small></div>').appendTo(container);
    }

    var stars = jQuery(container).children('.star');
	
    stars
    .mouseover(function(){
        event.drain();
        event.fill(this);
    })
    .mouseout(function(){
        event.drain();
        event.reset();
    })
    .focus(function(){
        event.drain();
        event.fill(this);
    })
    .blur(function(){
        event.drain();
        event.reset();
    });

    stars.click(function(){
        if(!rated) {
            var rat = jQuery(this).children('a')[0].href.split('#')[1];
            settings.vsum+=parseInt(rat);
            settings.avrg=settings.vsum/++settings.nov;
            $('#ratxt').html(settings.avrg.toFixed(2) + ' <small>(głosów: '+settings.nov+')</small>');
            settings.curvalue = stars.index(this) + 1;
            jQuery.post(settings.url, {
                "vote": jQuery(this).children('a')[0].href.split('#')[1],
                "wid": settings.wid
            });
            rated = true;
        }
        return false;
    });
        
    var event = {
        fill: function(el){
            if(!rated) {
                var index = stars.index(el) + 1;
                stars
                .children('a').css('width', '100%').end()
                .slice(0,index).addClass('hover').end();
            }
        },
        drain: function() {
            if(!rated) {
                stars
                .filter('.on').removeClass('on').end()
                .filter('.hover').removeClass('hover').end();
            }
        },
        reset: function(){
            if(!rated) {
                stars.slice(0,settings.curvalue).addClass('on').end();
            }
        }
    };
    
    event.reset();
    return(this);
    
};
