// JavaScript Document
/*************************************************
Star Rating System
First Version: 21 November, 2006
Author: Ritesh Agrawal
Inspriation: Will Stuckey's star rating system (http://sandbox.wilstuckey.com/jquery-ratings/)
Demonstration: http://php.scripts.psu.edu/rja171/widgets/rating.php
Usage: $('#rating').rating('www.url.to.post.com', {maxvalue:5, curvalue:0});

arguments
url : required -- post changes to
options
	maxvalue: number of stars
	curvalue: number of selected stars

************************************************/

jQuery.fn.rating = function(url, options) {
    if(url == null) return;
    
    var settings = {
    url       : url, // post changes to
    maxvalue  : 5,   // max number of stars
    curvalue  : 0    // number of selected stars
    };

    if(options) {
        jQuery.extend(settings, options);
    };
    jQuery.extend(settings, {cancel: (settings.maxvalue > 1) ? true : false});


    var container = jQuery(this);

    jQuery.extend(container, {
        averageRating: settings.curvalue,
                url: settings.url
                });
    var StarArray = new Array('zero','one','two','three','four','five');
    for(var i= 0; i <= settings.maxvalue ; i++){
        var size = i
            if (i == 0) {
            }
            else {
                var div = '<li id="star" class="' + 
                    StarArray[i] + 
                    '"><a href="#" title="' + 
                    jsLblRatingPrefix + ' '+
                    i + 
                    ' ' + 
                    jsLblRatingMiddle + 
                    ' ' + 
                    settings.maxvalue + 
                    ' ' + 
                    jsLblRatingPostfix + 
                    '">'+ 
                    i
                    +'</a></li>';
                
                container.append(div);
            }
    }
        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(){
            
            settings.curvalue = stars.index(this) + 1;
            
            //noch nicht gerated
            if(getCookieAttribute('ratingid_'+getRatingId())==0)
            {
                //rate = $(this).children('a')[0].href.split('#')[1];
                
                $.ajax({
                    type:"GET",
                            url:settings.url,
                            dataType:"json",
                            data: "rating="+ settings.curvalue+"&rateid="+getRatingId() ,
                            async:true,
                            success:function(res){
                            $('#ratemsg').html(res.msg);
                            setCookieAttribute('ratingid_'+getRatingId(),settings.curvalue);
                            starr(settings.curvalue);
                        }
                        
                    });
            }
            else $('#ratemsg').html(jsLblRatingMsg);
            
            return false;
        });
    
    
    
    var event = {
    fill: function(el){ // fill to the current mouse position.
            var index = stars.index(el) + 1;
            //stars
            //.lt(index).addClass('hover').end();
        },
    drain: function() { // drain all the stars.
            stars
            .filter('.on').removeClass('on').end()
            .filter('.hover').removeClass('hover').end();
        },
    reset: function(){ // Reset the stars to the default index.
            //stars
            //.lt(settings.curvalue).addClass('on').end();
        }
    }
    event.reset();
    
    return(this);
    
}
    
