function setUpRating(selector, add_rating_url, app, model, id, base_rating){
    var is_startchange_rating;
    var showRating = function(num){
        $(selector).find(".rating").text(num.toFixed(2));
    }
    var setRating = function(num){
        var url = add_rating_url; //XXX must be defined before this script
        $(selector).find('.raiting-error').html('...').show();
        $.getJSON(url, {'rating':num, 'app':app, 'model':model, 'id':id},
            function(data){
                if (data.success){
                    base_rating=parseFloat(data.value).toFixed(1);
                    $(selector).find('.raiting-error').html(data.msg).show();
                } else {
                    $(selector).find('.raiting-error').html(data.error).show();
                }
            }
        );
    }
    var drawRating = function(num){
        $(selector).find(".rating").text(num);
        $(selector).find(".star_rating .icon_star").css({'width': num*100/5*0.95 +'px'});
    }


    $(selector).find(".rating").css({'width':'20px'});
    $(selector).css({'z-index':'5', 'width':'166px'});
    $(selector).find(".star_rating .icon_star").hover(
        function(){$(this).css({'cursor':'pointer'});},
        function(){$(this).css({'cursor':'auto'});}
    );
    $(selector).mousemove(function(e){
         var x = e.pageX - this.offsetLeft;
         var y = e.pageY - this.offsetTop;
         var rating = x - 246;
         if (rating > 100 || rating < 0) return;
        $(selector).find(".star_rating .icon_star").css({'width': (x - 252) +'px'})
        showRating(rating/20);
        is_startchange_rating = true;
    });
    /*
    $(document).mousemove(function(e){
        if (!$(e.target).hasClass('icon_star') && !$(e.target).hasClass('icon_rating') && $(e.target).attr('id')!='rating'){
            drawRating(base_rating);
            console.log(e.target);
        }
    });
    */
    $(selector).mouseout(function(e){
        drawRating(base_rating.toFixed(2));
    });
    /*
    $(".star_rating .icon_star").mousemove(function(e){
         var x = e.pageX - this.offsetLeft;
         var y = e.pageY - this.offsetTop;
        if ((x-252)/95*100 > 100) return;
         console.log((x-252)/95*5, y);
         $(this).css({'width': (x-252) +'px'})

         showRating((x-252)/95*5);
    });
    */
    $(selector).click(function(e){
        setRating($(selector).find(".rating").text());
    });

    $(selector).append('<p style="display: none; font-size: 0.9em; color:#ff8080;" class="raiting-error"></p>');
}


