jQuery.fn.starRating = function(options) {
	var opts = jQuery.extend({}, jQuery.fn.starRating.defaults, options);

	var elementIds = this;

	var ratingCookie = jQuery.fn.starRating.getCookie('ArticleRating', opts.article);

	if(ratingCookie != false && ratingCookie != null && ratingCookie != 'null') {
		jQuery.fn.starRating.printRated(elementIds, opts.article, ratingCookie);
	} else if(ratingCookie == null || ratingCookie == 'null') {
		jQuery.fn.starRating.printUnrated(elementIds, opts.article);
	} else {
		jQuery.get('/kickapps/public/get-user-media-rating/media/' + opts.article, function(response) {
			var ratingCookie = jQuery.fn.starRating.getCookie('ArticleRating', opts.article);

			if(ratingCookie != false && ratingCookie != null && ratingCookie != 'null') {
				jQuery.fn.starRating.printRated(elementIds, opts.article, ratingCookie);
			} else if(ratingCookie == null || ratingCookie == 'null') {
				jQuery.fn.starRating.printUnrated(elementIds, opts.article);
			} else {
				jQuery.fn.starRating.printUnrated(elementIds, opts.article);
			}
		});
	}

	return;
}

jQuery.fn.starRating.getCookie = function(cookieName, articleId) {
	var ratingCookie = jQuery.cookie(cookieName);

	if(ratingCookie != false) {
		var cookieArray = json_parse(unescape(ratingCookie));

		for(i in cookieArray) {
			if(cookieArray[i]['id'] == articleId) {
				return cookieArray[i]['rating'];
			}
		}
	}

	return false;
}

jQuery.fn.starRating.printRated = function(elements, article, rating) {
	if(rating == '' || rating == undefined || rating == null) {
		rating = 0;
	}
	
	var totalRating = rating * 15;

	jQuery(elements).each(function() {
		jQuery(this).addClass('starRating')
		.addClass('starRating_Disabled')
		.append('<div class="starRating_Disabled_Inner" id="starRating_' + article + '" style="width: ' + totalRating + 'px;">&nbsp;</div>');
	});
}

jQuery.fn.starRating.printUnrated = function(elements, article) {
	jQuery(elements).each(function() {
		jQuery(this).addClass('starRating');

		for(var i = 1; i <= 5; i++) {
			jQuery(this).append('<a href="#" rel="' + i + '">&nbsp;</a>');
		}

		jQuery('div.starRating_12451').append('<div class="starRating_Clear">&nbsp;</div>');

		jQuery('div.starRating a').hover(
		function() {
			var relNum = $(this).attr('rel');

			for(var i = relNum; i >= 0; i--) {
				jQuery(this).parent().find('a[rel="' + i + '"]').addClass('hover');
			}
		},
		function() {
			jQuery(this).parent().find('a').removeClass('hover');
		}
		);

		jQuery(this).find('a').each(function() {
			jQuery(this).click(function() {
				jQuery.getJSON('/kickapps/public/rate/media/' + article + '/rating/' + jQuery(this).attr('rel'), function(response) {
					if(response.status == '1') {
						jQuery(elements).empty();

						jQuery.fn.starRating.printRated(elements, article, response.my_rating);
					} else if(response.status == '-2') {
						jQuery.get('/kickapps/public/ajax-login', function(data) {
							jQuery.facebox(data, 'faceboxRegistration');
						});
					} else {
						alert('Rating failed: ' + response.reason);
					}
				});

				return false;
			});
		});
	});
}

/*
jQuery.fn.starRating.printRated = function(elements, article, rating) {
var totalRating = rating * 15;

jQuery(elements).each(function() {
jQuery(this).appendDom([{
tagName: 'div',
className: 'ratingBase',
id: 'ratingBase_' + article,
childNodes: [{
tagName: 'div',
className: 'ratingActual_Disabled',
style: 'background-position: 0px -15px; width: ' + totalRating + 'px;',
innerHTML: '&nbsp;'
}]
}]);
});
}

jQuery.fn.starRating.printUnrated = function(elements, article) {
jQuery(elements).each(function() {
jQuery(this).css('background-color', 'transparent').html();

var template = [{
tagName: 'div',
className: 'ratingBase ratingBase_' + article,
style: 'padding: 0px;',
childNodes: [{
tagName: 'div',
className: 'ratingActual ratingBase_' + article,
style: 'padding: 0px;',
childNodes: [{
tagName: 'div',
className: 'ratingActual_Disabled',
style: 'background-position: 0px 0px; width: 0px; padding: 0px;',
innerHTML: '&nbsp'
}, {
tagName: 'div',
className: 'ratingActual_Inner',
style: 'position: relative; width: 75px; height: 15px; margin-top: -15px; padding: 0px;',
onmouseover: function() { jQuery(this).find('.ratingActual .ratingActual_Inner').css('margin-top', '0px').parent().find('.ratingActual_Disabled').hide(); },
onmouseout: function() { jQuery(this).find('.ratingActual .ratingActual_Inner').css('margin-top', '-15px').parent().find('.ratingActual_Disabled').show(); },
childNodes: []
}]
}]
}];

template[0].childNodes[0].childNodes[1].childNodes.push({
tagName: 'div',
style: 'width: 75px;',
innerHTML: '&nbsp;'
});

jQuery(this).appendDom(template);

for(var i = 1; i < 6; i++) {
var s = String(i);

template[0].childNodes[0].childNodes[1].childNodes.push({
tagName: 'a',
className: 'starRating',
href: '#',
rel: s,
innerHTML: '&nbsp;',
style: 'padding: 0px;'
});
}

jQuery(this).appendDom(template);

jQuery(this).find('.ratingActual_Disabled').css('background-position', '0px -15px').css('width', '0px');

jQuery(this).find('.ratingActual_Inner').css('width', '75px').css('height', '15px').css('margin-top', '-15px');

jQuery(this).find('a.starRating').each(function() {
jQuery(this).click(function() {
jQuery.getJSON('/kickapps/public/rate/media/' + article + '/rating/' + jQuery(this).attr('rel'), function(response) {
if(response.status == '1') {
jQuery(elements).empty();

jQuery.fn.starRating.printRated(elements, article, response.my_rating);
} else if(response.status == '-2') {
jQuery.get('/kickapps/public/ajax-login', function(data) {
jQuery.facebox(data, 'faceboxRegistration');
});
} else {
alert('Rating failed: ' + response.reason);
}
});

return false;
});
});

jQuery(this).find('a.starRating').hover(
function() {
for(var i = jQuery(this).attr('rel'); i > -1; i--) {
jQuery(this).parent().find('a.starRating[rel="' + i + '"]').addClass('active');
}
},
function() {
jQuery(this).parent().find('a.starRating').removeClass('active');
}
);
});
}

*/