/*
* jQuery simple rater
*
* Copyright (c) 2008 Yılmaz Uğurlu, <yilugurlu@gmail.com>, http://www.2nci.com
* Licensed under the MIT License:
* http://www.opensource.org/licenses/mit-license.php
* 
* $Version: 1.0, 2008.11.15, rev. 29
*/
(function($) {
    $.fn.rater = function(options) {
        var defaults = {
            url: '/fotokonkurss/postrating',
            enabled: true,
            favstar: false,
            favtitle: '',
            mediapath: '.',
            value: 0,
            indicator: true,
            callback: false,
            objectId: 0
        };
        var holder = $(this);
        var opts = $.extend(defaults, options);
        opts.value = Math.abs(Math.round(opts.value));
        opts.value = opts.value > 5 ? 5 : opts.value;
        var ratingui = '';
        var ratingcls = 'star_' + opts.value;
        if (!opts.favstar) {
            ratingui += '<ul class="rating ' + ratingcls + '">';
            for (var i = 1; i <= 5; i++) {
                if (opts.enabled)
                    ratingui += '<li class="s_' + i + '"><a href="#" title="' + i + '">' + i + '</a></li>';
                else
                    ratingui += '<li class="s_' + i + '"><span>' + i + '</span></li>';
            }
        }
        else {
            ratingui += '<ul class="fav ' + ratingcls + '"><li class="s_1">';
            if (opts.enabled)
                ratingui += '<a href="#" title="' + opts.favtitle + '">' + (opts.value == 1 ? 0 : 1) + '</a></li>';
            else
                ratingui += '<span>' + (opts.value == 1 ? 0 : 1) + '</span></li>';
        }
        if (opts.indicator && !opts.favstar)
            ratingui += '<li class="indicator"><img src="' + opts.mediapath + 'indicator.gif" alt="loading" /></li>';

        ratingui += '</ul>';
        holder.html(ratingui);
        var indicator = holder.find('ul > li.indicator');
        holder.find('ul > li > a').click(function() {
            var value = $(this).html();
            if (opts.callback != false) {
                opts.callback(value);
                return false;
            }
            if (opts.indicator && !opts.favstar)
                indicator.show();
            $.post(opts.url,
        { ItemId: opts.objectId, Rate: value },
        function(data) {
            if (opts.indicator && !opts.favstar)
                indicator.hide();
        }
			);
            var newcls = 'star_' + value;
            holder.find('ul').removeClass(ratingcls).addClass(newcls);
            ratingcls = newcls;
            if (!opts.favstar) {
                $(holder.find('ul > li')).each(function(i) {
                    if ($(this).attr('class') != 'indicator')
                        $(this).html('<span>' + i + '</span>');
                });
            }
            else {
                $(this).html(value == 1 ? '0' : '1');
            }

            return false;
        });

        return this;
    }
})(jQuery);
