
$(document).ready(function($) {
    $('.rating-holder').each( function(){
        var first_id = $(this).find("li[id^='star_id_']").attr('id');
        var blog_id = first_id.replace("star_id_", "").split("_")[1];
        var active = find_active(blog_id)[0];
        set_stars( active, blog_id );
    });

    function set_star(obj_id, state) {
        if( state )
            $(obj_id).css('background-position','0 -10px');
        else
            $(obj_id).css('background-position','0 0px');
    }

    function set_stars(ones_top_number, blog_id) {
        // inserting ones
        for (var i = 1; i <= parseInt(ones_top_number); i++) {
            set_star("#star_id_" + i + "_" + blog_id, true );
        }

        // inserting zeros
        for (; i <= 5; i++) {
            set_star("#star_id_" + i + "_" + blog_id, false );
        }
    }

    function find_active(blog_id) {
        for( var i=1; i <= 5; i++ ){
            var id = '#star_id_'+i+'_'+blog_id;
            if( $(id).hasClass('active') )
                return [i,id];
        }
        return [0,null];
    }

    $(".star").mouseover(
        function (evt) {
            evt.preventDefault();
            var my_id = $(this).attr("id");
            var blog_id = my_id.replace("star_id_", "").split("_")[1];
            my_id = my_id.replace("star_id_", "").split("_")[0];
            var number = parseInt(my_id);

            set_stars(number, blog_id);
        }
    ); // mouseover


    $(".star").mouseout(
        function (evt) {
            evt.preventDefault();
            var blog_id = $(this).attr("id").replace("star_id_", "").split("_")[1];
            var n = find_active(blog_id)[0];
            set_stars(n, blog_id)
        }
    ); // mouseout

    $(".star").click(
       function (evt) {
           evt.preventDefault();

           var rateurl = $(this).find('a').attr('href');
           $.post( rateurl,
                function(responseData) {
                    if (responseData["response"][0]['success'] == "1") {
                        var blog_id = $(evt.target).attr('id').replace("star_id_", "").split("_")[1];
                        ids = find_active(blog_id);
                        $(ids[1]).removeClass('active');
                        $('#star_id_'+responseData["response"][0]['rating']+'_'+blog_id).addClass('active');
                    }else
                        alert('You must be logged in to rate an item.');

                    $(this).mouseover(function(evt) {
                        evt.preventDefault();
                        return false;
                    });

                    return false;
                }, 'json'
            );
       }
    ); // click
});

