// JavaScript Document
/*************************************************
	This is hacked version of star rating created by <a href="http://php.scripts.psu.edu/rja171/widgets/rating.php">Ritesh Agrawal</a>
	It thansform a set of radio type input elements to star rating type and remain the radio element name and value,
	so could be integrated with your form. It acts as a normal radio button.
	modified by : Logan Cai (cailongqun[at]yahoo.com.cn)
	website:www.phpletter.com
	


************************************************/
/*
*	convert a set of radio buttons to star rating type of question
*/

/* displaying texts - by viktor 08/01/07 
  # separatorral elvalasztva es a sorrendet meg kell tartani
*/
var def_rank = 'nincs értékelve#1#2#3#4#5';

/*
var def_rank = 'nincs minősítve#nagyon rossz#rossz#megfelelő#jó#nagyon jó';
var acc_room = 'nincs minősítve#koszos / kényelmetlen / szűkös - vagyis rossz#elment - de láttam már jobbat is#közepes#mintha otthon lennék#szuper';
var acc_serv = 'nincs minősítve#nem volt#elvileg volt...#megfelelő volt#megkaptam mindent#elkényeztettek - többet kaptam, mint amit vártam';
var acc_staf = 'nincs minősítve#volt?#nem barátkoztunk össze#korrekt volt#barátságosak voltak#nagyon kellemes meglepetés volt';
var acc_pric = 'nincs minősítve#nagyon drága - nem érte meg#drága - legközelebb meggondolom#arányban volt - amit fizettem, azt megkaptam#jó választás volt - megérte#nagyon megérte az árát';

var cit_funs = 'nincs minősítve#nulla#keresni kellett#akadt egy-két lehetőség#széles volt a paletta#lépten-nyomon belefutottam';
var cit_sigh = 'nincs minősítve#semmi#egy-két romos ház#útikönyvek szerint#sok, szép látnivaló#nem is tudtam mindent megtekinteni';
var cit_traf = 'nincs minősítve#csak gyalogosan#áttekinthetetlen káosz#korrekt#megbízható#gyors, pontos, tiszta - szuper';
var cit_pric = 'nincs minősítve#nagyon drága - nem az én pénztárcámnak való#azért meggondoltam, mit veszek#mint itthon#jól tudtam vásárolni#fillérekért kaptam mindent';

var aip_appr = 'nincs minősítve#a taxi is eltévedt - jól eldugták#keresni kellett#megtaláltam#könnyen megközelíthető#nagyon egyszerűen oda lehet jutni';
var aip_info = 'nincs minősítve#sehol semmi, alig találtam meg a gépet#nagyon kellett keresnem a kiírásokat#korrekt#minden fent volt a táblán#teljesen egyértelműen útbaigazítottak';
var aip_othe = 'nincs minősítve#csak egy üres hangár volt#WC volt, de kávét már nem kaptam#mint egy reptéren...#tiszta, rendes vendéglátóhelyek, üzletek, mosdók#önmagában is kellemes időtöltés';
var aip_pric = 'nincs minősítve#nagyon drága - levegőt is félve vettem#csak egy ásványvizet vettem#átlagos árak - mint a városban#egy-két dolog megérte az árát#a Duty Free boltban jól bevásároltam';

var ail_prec = 'nincs minősítve#órákat késett a gép - nem értem el a csatlakozást#csak egy órácskát késtem#pár perc késés belefér#pontos volt#az órát hozzájuk lehetne igazítani';
var ail_cate = 'nincs minősítve#még egy pohár vizet sem kaptam#csak kávé járt nekünk...#jóllaktam#jól főznek#degeszre ettem magam';
var ail_staf = 'nincs minősítve#a pilótán kívül mást nem láttam a gépen#egyszer elviharzott mellettem egy stewardess#átlagos volt - egy mosoly - egy cola#kedvesek voltak#nagyon barátságosak voltak';
var ail_pric = 'nincs minősítve#legközelebb inkább gyalog vagy úszva megyek#ez bizony igazi fapados volt#megérte velük utazni#legközelebb is őket választom#sokat kaptam a pénzemért';

var tpn_usea = 'nincs minősítve#használhatatlan#nehezen találtam meg, amit kerestem#megtaláltam, amit kerestem, de nem tudtam, mit kezdjek vele, nehézkes#jól működött minden, kisebb hibákkal#előbb tudta a site, mit akarok, mint én';
var tpn_cust = 'nincs minősítve#nem reagált senki a kérdéseimre, vagy ha mégis, jobb lett volna, ha nem reagál#ennyi idő alatt én is megtaláltam volna, vagy szemtelen, elégtelen választ kaptam#nagyjából erre számítottam, nem vagyok meghatva, rendben volt#gyorsan kaptam kielégítő válaszokat a kérdéseimre#feltűnően kellemes az ügyfélszolgálat, ha kenyeret is árulnátok, minden nap jönnék';
var tpn_rang = 'nincs minősítve#ennél a vidéki nagyanyám is jobban ismeri a világot#néhány városban jók vagytok, de azért ennél nagyobb és érdekesebb a világ#ennyi szállást és látnivalót találtam volna én is a Google-ban#sokat segített a site, találtam majdnem mindent, amit kellett#nagyon elégedett vagyok a választékkal';
var tpn_pric = 'nincs minősítve#miből éltek?#olcsó#rendben van#drága#miből éltek?';
*/

jQuery.fn.rating = function(settings, objectName, displayValues, maxVal)
{
  settings = jQuery.extend
  ({
    cancel:'Nem értékelem',
    currentValue:''
  }, settings);			
	var prevElem = null;
	var valueElem = null;
	var container = jQuery(this);
	var CancelElem = null;
	var dispText = displayValues.split('#');
	var event = {
		fill: function(el) { // fill to the current mouse position.
			var stars = jQuery(valueElem).siblings('.star');
			var index = stars.index(el) + 1;
			for(u=1; u<=index; u++)
			{
			  $('#'+objectName+u).addClass('star_on');
			}

			// write back the current value by mouseover 
			var ix = parseInt(index);
			/*setTimeout('$(\'#'+objectName+'_display\').fadeOut(\'fast\')', 1);
			setTimeout('$(\'#'+objectName+'_display\').html(\''+displayValues[ix]+'\')', 250);
			setTimeout('$(\'#'+objectName+'_display\').fadeIn(\'fast\')', 500);*/
			//$('#'+objectName+'_display').fadeIn('medium');
			$('#'+objectName+'_display').html(dispText[ix]);
		},
		drain: function() { // drain all the stars.
			var stars = jQuery(valueElem).siblings('.star');
			jQuery(stars)
				.filter('.star_on').removeClass('star_on').end()
				.filter('.star_hover').removeClass('star_on').end();
		},
		reset: function(){ // Reset the stars to the default index.
			var stars = jQuery(valueElem).siblings('.star');
			for(u=1; u<=settings.currentValue; u++)
			 $('#'+objectName+u).addClass('star_on');
			 
			// write back the current value if exists
			$('#'+objectName+'_display').html(dispText[settings.currentValue]);
		}
	};
	return this.each(function (i)
					{
						if(i == 0)//prepend cancel option at the begining
						{
												
							valueElem = jQuery('<input type="hidden" name="' + this.name + '" value="0"/>');
							jQuery(this).before(valueElem);
								
								
								var CancelElem = jQuery('<div class="cancel"><a href="javascript:;" title="' + settings.cancel + '">' + settings.cancel + '</a></div>');
								prevElem = CancelElem;
								jQuery(this).before(prevElem);	

										jQuery(CancelElem)
													.mouseover(function(){
															event.drain();
															jQuery(this).addClass('star_on');
    													$('#'+objectName+'_display').html(dispText[0]);
													})
													.mouseout(function(){
															event.reset();
															jQuery(this).removeClass('star_on');
															if (settings.currentValue>0)
      													$('#'+objectName+'_display').html(dispText[settings.currentValue]);
      												else
    													 $('#'+objectName+'_display').html(dispText[0]);															
													});
											
											// click events.
											jQuery(CancelElem).click(function(){
													
													settings.currentValue = 0;//jQuery(this).children('a').attr('title');
													$('#'+objectName+'_display').html(dispText[0]);
													$(valueElem).val(settings.currentValue);
													event.drain();
													return false;
											});				
						}
						
						//insert rating option right after preview element
						preElemTemp  = jQuery('<div class="star" id="'+objectName+(i+1)+'"><a href="javascript:;" title="' + this.value + '">' + this.value + '</a></div>');
						jQuery(prevElem).after(preElemTemp);
						jQuery(preElemTemp)
								.mouseover(function(){
											event.drain();
											event.fill(this);
											
									})
									.mouseout(function(){
											event.drain();
											event.reset();
											if (settings.currentValue>0)
												$('#'+objectName+'_display').html(dispText[settings.currentValue]);
											else
											 $('#'+objectName+'_display').html(dispText[0]);															
									});			
							jQuery(preElemTemp).click(function(){
									
									//alert(jQuery(this).children('a').attr('title'));
									settings.currentValue = jQuery(this).children('a').attr('title');
									//alert(jQuery(this).children('a').attr('title'));
									jQuery(valueElem).val(settings.currentValue);
									event.drain();
									//event.reset();
									event.fill(this);
								
							});						
								prevElem = preElemTemp;
								preElemTemp = null;
								//remove this checkbox
								$(this).remove();
								if(i + 1 == this.length)
								{    
									event.reset();
								}
								
								// set the display text container
								if (i+1 == maxVal)
								{
									$('#'+objectName).append('<div id="'+objectName+'_display" class="rankdisplay">'+dispText[0]+'</div>');
								}
							}															
	 );

};
