

/*
 ### jQuery Star Rating Plugin v2.61 - 2009-01-23 ###
 * http://www.fyneworks.com/ - diego@fyneworks.com
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 ###
 Project: http://plugins.jquery.com/project/MultipleFriendlyStarRating
 Website: http://www.fyneworks.com/jquery/star-rating/
*/

;if(window.jQuery) (function($){	
	// IE6 Background Image Fix
	if ($.browser.msie) try { document.execCommand("BackgroundImageCache", false, true)} catch(e) { }	
	// default settings
	$.rating = {		
		split: 0,                	
		starWidth: 16,			
	//	readOnly: false,   
		//focus:    function(){},  
		//blur:     function(){},  
		callback: function(){
			var voteId = $(this).get(0).name.substring(6);	
			var voteStar = $(this).val();
			var c = $(this).attr('rel');		
			if(c=='contest'){
			  var url = "/klub/updater/index$474410-vote.html"+"?itemId="+voteId+"&rating="+voteStar+"&c="+c;
			}	
			else{				
			  var url = "/klub/updater/index$2211-vote.html"+"?itemId="+voteId+"&rating="+voteStar+"&c="+c;
			}
			
			 $.ajax({
			  url:url,	
			  cache: false,
			  success: function(html){				
				$("#vote_"+voteId).html(html);
				$("#rate_asset_"+voteId).html(html);
			  }
			}); 
		},  
		// required properties:
		groups: {},// allows multiple star ratings on one page
		event: {
			fill: function(n, el, settings, state){ // fill to the current mouse position.
				this.drain(n);
				$(el).prevAll('.star_group_'+n).andSelf().addClass('star_'+(state || 'hover'));
				var lnk = $(el).children('a'); val = lnk.text();
				if(settings.focus) settings.focus.apply($.rating.groups[n].valueElem[0], [val, lnk[0]]);
			},
			drain: function(n, el, settings) { // drain all the stars.			
				$.rating.groups[n].valueElem.siblings('.star_group_'+n).removeClass('star_on').removeClass('star_hover');
			},
			reset: function(n, el, settings){ // Reset the stars to the default index.
				if(!$($.rating.groups[n].current).is('.cancel'))
					$($.rating.groups[n].current).prevAll('.star_group_'+n).andSelf().addClass('star_on');
				// blur handler, as requested by focusdigital.co.uk
				var lnk = $(el).children('a'); val = lnk.text();
				if(settings.blur) settings.blur.apply($.rating.groups[n].valueElem[0], [val, lnk[0]]);
			},
			click: function(n, el, settings){ // Selected a star or cancelled
				$.rating.groups[n].current = el;
				var lnk = $(el).children('a'); val = lnk.text();
				// Set value
				$.rating.groups[n].valueElem.val(val);
				// Update display
				$.rating.event.drain(n, el, settings);
				$.rating.event.reset(n, el, settings);
				// click callback, as requested here: http://plugins.jquery.com/node/1655
				if(settings.callback) settings.callback.apply($.rating.groups[n].valueElem[0], [val, lnk[0]]);
			}      
		}
	};
	
	$.fn.rating = function(instanceSettings){
		if(this.length==0) return this; // quick fail
		
		instanceSettings = $.extend(
			{}/* new object */,
			$.rating/* global settings */,
			instanceSettings || {} /* just-in-time settings */
		);
		
		// loop through each matched element
		this.each(function(i){
			
			var settings = $.extend(
				{}/* new object */,
				instanceSettings || {} /* current call settings */,
				($.metadata? $(this).metadata(): ($.meta?$(this).data():null)) || {} /* metadata settings */
			);
						
			// - ignore square brackets in element names
			var n = (this.name || 'unnamed-rating').replace(/\[|\]+/g, "_");  
			var rel = $(this).attr('rel');
			// Grouping
			if(!$.rating.groups[n]) $.rating.groups[n] = {count: 0};
			i = $.rating.groups[n].count; $.rating.groups[n].count++;			
			// Accept readOnly setting from 'disabled' property
			$.rating.groups[n].readOnly = $.rating.groups[n].readOnly || settings.readOnly || $(this).attr('disabled');			
			// Things to do with the first element...
			if(i == 0){
				// Create value element (disabled if readOnly)
				$.rating.groups[n].valueElem = $('<input rel="' + rel + '" type="hidden" name="' + n + '" value=""' + (settings.readOnly ? ' disabled="disabled"' : '') + '/>');
				// Insert value element into form
				$(this).before($.rating.groups[n].valueElem);				
			}; // if (i == 0) (first element)  
			// insert rating option right after preview element						
			eStar = $('<div class="star"><a title="' + (this.title || this.value) + '">' + this.value + '</a></div>');
			$(this).after(eStar);			
			// Half-stars
			if(settings.half) settings.split = 2;					
			// Remember group name so controls within the same container don't get mixed up
			$(eStar).addClass('star_group_'+n);			
			// readOnly
			if($.rating.groups[n].readOnly)
				$(eStar).addClass('star_readonly');
			else
				$(eStar)
				// Enable hover css effects
				.addClass('star_live')
				// Attach mouse events
				.mouseover(function(){ $.rating.event.drain(n, this, settings); $.rating.event.fill(n, this, settings, 'hover'); })
				.mouseout(function(){ $.rating.event.drain(n, this, settings); $.rating.event.reset(n, this, settings); })
				.click(function(){ $.rating.event.click(n, this, settings); });
		
			if(this.checked) $.rating.groups[n].current = eStar;
			//remove this checkbox
			$(this).remove();			
			// reset display if last element
			if(i + 1 == this.length) $.rating.event.reset(n, this, settings);		
		}); // each element
			
		// initialize groups...
		for(n in $.rating.groups)
			(function(c, v, n){ if(!c) return;
				$.rating.event.fill(n, c, instanceSettings || {}, 'on');
				$(v).val($(c).children('a').text());
			})
			($.rating.groups[n].current, $.rating.groups[n].valueElem, n);
	
		return this; 
	};
	
	$(function(){ $('input[type=radio].star').rating(); });

})(jQuery);







