jQuery.fn.rating = function(url, options) {

    var settings = {
        maxvalue: 5   // max number of stars
    };

    var container = $(this);

    for (var i = 1; i <= settings.maxvalue; i++) {
        var size = i
        var div = '<div class="star"><a href="#' + i + '">' + i + '</a></div>';
        container.append(div);
    }

    var stars = $(container).children('.star');

    stars
	        .mouseover(function() {
	            event.drain(this);
	            event.fill(this);
	        })
            .mouseout(function() {
                event.drain(this);
                event.reset(this);
            })
            .focus(function() {
                event.drain(this);
                event.fill(this)
            })
            .blur(function() {
                event.drain(this);
                event.reset(this);
            });

    stars.click(function() {
        var eventId = $(this).closest('#descriptionmiddlewrapper').children('input')[0].value;
        var rating = stars.index(this) % 5 + 1;
        $(this).siblings('input')[0].value = rating;
        rateCourse(eventId, rating);
    });

    var event = {
        fill: function(el) { // fill to the current mouse position.
            var index = stars.index(el);
            var mod = index % 5;
            for (i = 0; i < mod + 1; i++) {
                $(stars[index - mod + i]).addClass('hover');
            }
        },
        drain: function(el) { // drain all the stars.
            var index = stars.index(el);
            var mod = index % 5;
            for (i = 0; i < 5; i++) {
                $(stars[index - mod + i]).removeClass('on');
                $(stars[index - mod + i]).removeClass('hover');
            }
        },
        reset: function(el) { // Reset the stars to the default index.
            var index = stars.index(el);
            var mod = index % 5;
            for (i = 0; i < $(el).siblings('input')[0].value; i++) {
                $(stars[index - mod + i]).addClass('on');
            }
        }
    }

    var ratings = container.children('input');
    for (i = 0; i < ratings.length; i++) {
        var index = stars.index($(ratings[i]).siblings('.star')[0]);
        for (j = 0; j < ratings[i].value; j++) {
            $(stars[index + j]).addClass('on');
        }
    }

    return (this);
}

function rateCourse(eventId, rating) {   
    $.ajax({
        type: "POST",
        url: "../../IsvInnovationService.asmx/RateCourse",
        contentType: "application/json; charset=utf-8",
        data: "{'eventId': " + eventId + ", 'rating': " + rating + "}",
        dataType: "json"
    });  
}