/* OCENIANIE by mh (c) 2007 v1.0 */

var EditoRating = function(domid, id_kategorii, id_elementu, kategoria_nazwa, element_tytul)
{
	this.domid = domid;
	if (id_kategorii)
	{
		this.id_kategorii = id_kategorii;
	}
	if (id_elementu)
	{
		this.id_elementu = id_elementu;
	}
	this.kategoria_nazwa = kategoria_nazwa;
	this.element_tytul = element_tytul;
	this.id = this.id_kategorii + '_' + this.id_elementu;
	this.cache_id = $('#cache_modul_'+this.id_kategorii+'_id').val();
}

EditoRating.prototype = {
	id_kategorii: 0,
	id_elementu: 0,
	kategoria_nazwa: '',
	element_tytul: '',
	loginLink: '/go:login',
	userRateFlash: null,
	avgRateFlash: null,
	// teksty mozna nadpisac przy wywolaniu skryptu, pobrac z langa
	userRateText: 'Twoja ocena:',
	avgRateText: 'Średnia ocena:',
	saveText: 'ok',
	addMsgText: 'Twoja ocena została zapisana.',
	loginText: 'Zaloguj się, aby ocenić.',
	userRateFlashFile: 'images/flash/userRate.swf',
	userRateFlashWidth: 172,
	userRateFlashHeight: 54,
	userRateFlashBg: '#171717',
	avgRateFlashFile: 'images/flash/avgRate.swf',
	avgRateFlashWidth: 172,
	avgRateFlashHeight: 54,
	avgRateFlashBg: '#171717',	

	render: function()
	{
		var tmpThis = this;
		
		$('#' + this.domid).empty();
		
		this.loadRatingFlash();
		
		var divUserRate = $('<div class="ratingBox"></div>').attr('id', 'rating_user_rate' + this.id); 
		
		var divUserRateLabel = $('<div class="ratingLabel">').html(this.userRateText);
		divUserRateLabel.appendTo(divUserRate);
		
		var divUserRateFlash = $('<div class="ratingFlash">').attr('id', 'rating_user_flash' + this.id);
		divUserRateFlash.appendTo(divUserRate);
		
		var divUserRateButton = $('<div class="ratingFlashButton">').attr('id', 'rating_button' + this.id);
		var buttonUserRate = $('<div class="buttonGrayL">')
			.append($('<div class="buttonGrayR">')
				.append($('<a class="buttonGray"></a>')
					.text(this.saveText).click(function(){tmpThis.add()})
				)
			);
		buttonUserRate.appendTo(divUserRateButton);
		
		divUserRateButton.hide().prependTo(divUserRate);
		
		var divAvgRate = $('<div class="ratingBox"></div>').attr('id', 'rating_avg_rate' + this.id).hide(); 
		
		var divAvgRateLabel = $('<div class="ratingLabel2">').html(this.avgRateText);
		divAvgRateLabel.appendTo(divAvgRate);
		
		var divAvgRateFlash = $('<div class="ratingFlash">').attr('id', 'rating_avg_flash' + this.id);
		divAvgRateFlash.appendTo(divAvgRate);
				
		// odczytanie oceny uzytkownika
		$.ajax({
			type: 'POST',
			url: $.ajaxUrl('rating', 'getuserrate'),
			data: 'id_kategorii=' + this.id_kategorii +
				'&id_elementu=' + this.id_elementu,
			success: function(response){
				switch(response)
				{
					// user niezalogowany
					/*case '-1':
						divUserRateFlash.remove();
						buttonUserRate.remove();
						
						msg = $('<div class="ratingLogin">');
						$('<a></a>').attr('href', tmpThis.loginLink).html(tmpThis.loginText).appendTo(msg);
						divUserRateLabel.after(msg);
						break;*/
					// gość
					case '-1':
						tmpThis.userRateFlash.write('rating_user_flash' + tmpThis.id);
						divUserRateButton.show();
						break;
					case '':
						tmpThis.userRateFlash.write('rating_user_flash' + tmpThis.id);
						divUserRateButton.show();
						break;
					default:
						buttonUserRate.remove();
						tmpThis.userRateFlash.addVariable('mark', response);
						tmpThis.userRateFlash.write('rating_user_flash' + tmpThis.id);
				}
			}
		});
		
		// odczytanie sredniej oceny
		$.ajax({
			type: 'POST',
			url: $.ajaxUrl('rating', 'getavgrate'),
			data: 'id_kategorii=' + this.id_kategorii +
				'&id_elementu=' + this.id_elementu,
			success: function(response){
				//if (response != '')
				//{
					tmpThis.avgRateFlash.addVariable('mark', response);
					tmpThis.avgRateFlash.write('rating_avg_flash' + tmpThis.id);
					divAvgRate.show();
				//}
			}
		});
		
		$('#' + this.domid).append(divUserRate);
		$('#' + this.domid).append(divAvgRate);
	},
	
		
	loadRatingFlash: function()
	{
		this.userRateFlash = new SWFObject(this.userRateFlashFile, 'user_rate' + this.id, this.userRateFlashWidth, this.userRateFlashHeight, '9', this.userRateFlashBg);
		this.avgRateFlash = new SWFObject(this.avgRateFlashFile, 'avg_rate' + this.id, this.avgRateFlashWidth, this.avgRateFlashHeight, '9', this.avgRateFlashBg);
		this.userRateFlash.addParam('wmode', 'transparent');
		this.avgRateFlash.addParam('wmode', 'transparent');		
	},
	
	
	add: function(rate)
	{
		var tmpThis = this;
		
		ratingFlash = navigator.appName.indexOf('Microsoft') != -1 ? window['user_rate' + this.id] : document['user_rate' + this.id];
		rate = ratingFlash.getCurrentValue();
		
		$.ajax({
			type: 'POST',
			url: $.ajaxUrl('rating', 'add'),
			data: {
				'id_kategorii': this.id_kategorii,
				'id_elementu': this.id_elementu,
				'kategoria_nazwa': this.kategoria_nazwa,
				'element_tytul': this.element_tytul,
				'ocena': rate,
				'cache_id': this.cache_id
			},
			success: function(response){
				if (response >= 0)
				{
					tmpThis.userRateFlash.addVariable('mark', rate);
					tmpThis.userRateFlash.write('rating_user_flash' + tmpThis.id);
					$('#rating_button' + tmpThis.id).remove();
					
					tmpThis.avgRateFlash.addVariable('mark', response);
					tmpThis.avgRateFlash.write('rating_avg_flash' + tmpThis.id);
					$('#rating_avg_rate' + tmpThis.id).show();
					
					showAlert($('#rating_user_rate' + tmpThis.id), tmpThis.addMsgText);
				}
			} 
		});
	}
}


