var Module_Ranking = {
    updateRank : function(score, moduleId, contentId, canVote)
    {
        var container = document.getElementById('ranking-' + moduleId + '-' + contentId);
        if (container)
        {
            var stars = container.getElementsByTagName('IMG');
            for (iStar=1; iStar<=stars.length; iStar++)
            {
                if (score > 0 && (iStar <= score || (canVote == 0 && iStar <= score+1)))
                {
                    var imgName = '';

                    if (canVote == 0)
                    {
                        if (iStar <= score)
                        {
                            imgName = '_Full';
                        }
                        else if (iStar - 0.5 <= score)
                        {
                            imgName = '_Half';
                        }
                    }
                    else
                    {
                        imgName = '_Active';
                    }

                    stars[iStar-1].src = stars[iStar-1].src.replace(/_Star_?.*\.jpg$/, '_Star' + imgName + '.jpg');
                }
                else
                {
                    stars[iStar-1].src = stars[iStar-1].src.replace(/_Star_.+\.jpg$/, '_Star.jpg');
                }
            }
        }
    },
    sendRank : function(score, moduleId, contentId, rankingModuleId, refresh, reset)
    {
        if (refresh == null)
        {
            refresh = true;
        }
        if (reset == null)
        {
            reset = true;
        }

        var container = document.getElementById('ranking-' + moduleId + '-' + contentId);
        if (container)
        {
            var stars = container.getElementsByTagName('IMG');
            for (iStar=1; iStar<=stars.length; iStar++)
            {
                if (reset)
                {
                    if (score > 0 && iStar <= score)
                    {
                        stars[iStar-1].src = stars[iStar-1].src.replace(/_Star_Active\.jpg$/, '_Star_Full.jpg');
                    }
                    else
                    {
                        stars[iStar-1].src = stars[iStar-1].src.replace(/_Star_Active\.jpg$/, '_Star.jpg');
                    }
                }

                stars[iStar-1].onclick = null;
                stars[iStar-1].onmouseover = null;
            }

            container.className = container.className.replace(/\s?clickable/, '');
            container.onmouseout = null;

            Module_Ranking.submitRank(score, moduleId, contentId, rankingModuleId, refresh);
        }
    },
    submitRank : function(score, moduleId, contentId, rankingModuleId, refresh)
    {
        var params = 'cms[exclusive][]=' + rankingModuleId + '&' +
            'cms[template]=ajax&' +
            'cms[cm' + rankingModuleId + '][action]=storeScore&' +
            'cms[cm' + rankingModuleId + '][moduleId]=' + moduleId + '&' +
            'cms[cm' + rankingModuleId + '][contentId]=' + contentId + '&' +
            'cms[cm' + rankingModuleId + '][score]=' + score;

        new Ajax.Request(window.location.pathname,
            {
                method: 'get',
                parameters: params
            }
        );

        var scoreContainer = document.getElementById('ranking-' + moduleId + '-' + contentId);
        if (scoreContainer)
        {
            var ratingInterface = scoreContainer.parentNode;
            if (ratingInterface)
            {
                ratingInterface.className += ' alternate';
            }
        }

        // Laat na een seconde de nieuwe score zien
        if (refresh)
        {
            setTimeout(
                function()
                {
                    Module_Ranking.refreshRank(moduleId, contentId, rankingModuleId);
                }, 1000);
        }
    },
    refreshRank : function(moduleId, contentId, rankingModuleId)
    {
        var params = 'cms[exclusive][]=' + rankingModuleId + '&' +
            'cms[template]=ajax&' +
            'cms[cm' + rankingModuleId + '][action]=getScore&' +
            'cms[cm' + rankingModuleId + '][moduleId]=' + moduleId + '&' +
            'cms[cm' + rankingModuleId + '][contentId]=' + contentId + '&';

        new Ajax.Request(window.location.pathname,
            {
                onSuccess : function(transport)
                {
                    var roundedScore = Math.round(transport.responseText);
                    Module_Ranking.updateRank(roundedScore, moduleId, contentId, false);

                    var scoreContainer = document.getElementById('ranking-' + moduleId + '-' + contentId);
                    scoreContainer.title = 'Waardering: ' + transport.responseText;
                },
                method: 'get',
                parameters: params
            }
        );
    }
};
