jQuery.fn.rater = function(url, options , callback)
{
    var settings = {
        url			: url ,
        rateid      : 'rater',
        pid      : 0,
        start		: 1 ,
        step		: 1 ,
        maxvalue	: 5 ,
        curvalue	: 0 ,
        //title		: null ,
        enabled		: true
    };

    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 starWidth	= 16;
    var raterWidth	= (settings.maxvalue - settings.start + settings.step)/settings.step * starWidth;
    var curvalueWidth	= (settings.curvalue - settings.start + settings.step)/settings.step * starWidth;
    
    var title	= '';
    if (typeof settings.title == 'object' && typeof settings.title[settings.curvalue] == 'string') {
        title	= settings.title[settings.curvalue];
    } else {
        title	= settings.curvalue+'/'+settings.maxvalue;
    }
    
    var ratingParent	= '<ul class="rating" style="width:'+raterWidth+'px" title="'+title+'">';
    container.html(ratingParent);

    var listItems	= '<li class="current" style="width:'+curvalueWidth+'px"></li>';
    
    if (settings.enabled){
        var k = 0;
        for (var i = settings.start;i <= settings.maxvalue;i = i + settings.step) {
            k++;
            if (typeof settings.title == 'object' && typeof settings.title[i] == 'string') {
                title	= settings.title[i];
            } else {
                //title	= i+'/'+settings.maxvalue;
                title	= i;
            }
            
            listItems	+= '<li class="star" style="width:'+(k * starWidth)+'px;z-index:'+((settings.maxvalue - i)  / settings.step + 1)+'" title="'+title+'"></li>';
            
        }
    }
    //alert(listItems);
    container.find('.rating').html(listItems);
    var cur = $('#' + settings.rateid + settings.pid).append('<span id="rater_tips' + settings.pid +'">当前评分:' + settings.curvalue + '</span>');
    container.find('.rating').find('.star').hover(function() {
        container.find('.rating').find('.current').hide();
        this.className	= 'star_hover';
        var value	= $(this).attr('title');
        $('#rater_tips' + settings.pid).text('我要评' + value + '分');
    } , function() {
        container.find('.rating').find('.current').show();
        this.className	= 'star';
        $('#rater_tips'+ settings.pid).text('当前评分:' + settings.curvalue);
    });
    
    container.find('.rating').find('.star').click(function() {
        //var value	= settings.maxvalue - $(this).css('z-index') + 1;
        var value	= $(this).attr('title');
        var id = $('#rpid' + settings.pid).val();  // 传递id的input
        container.find('.rating').find('.current').width((value - settings.start + settings.step)/settings.step * starWidth);
        
        if (url) {
            $.post(url , {value:value, id:id} , function(response) {
                if (typeof callback == 'function') {
                    callback(container , value , response);
                }
            });
            return;
        }
        
        if (typeof callback == 'function') {
            callback(container , value);
            return ;
        }
        
    });
}