







// termek tooltipek #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #
var gvSelect_ = new Class
({
	// init
	initialize: function(c, z)
	{
		// onchange nincs
		this.ocev = false;
		//	nyitott allapot: csukva
		this.is_open = 0;
		// z-index
		this.z = z;
		// container: a span amiben van az eredeti select
		this.container = c;
		// eredeti select
		this.origSelect = this.container.getElement('select');

		// meggyartjuk a cuccot
		this.build();
	},



	//
	build: function()
	{
		// regi select eltunik
		this.origSelect.setStyle('display', 'none');

		// van-e onchange
		if (this.origSelect.onchange)
		{
			this.ocev = true;
		}

		// helyere bejon a div, amiben az egesz van
		this.select = new Element('div', {'class':'gvSelect', 'styles':{'z-index':this.z}}).injectInside(this.container)

		// fejlec terulet: benne a szoveg es a nyil
		this.headArea = new Element('div', {'class':'headArea', 'styles':{'z-index':this.z}}).injectInside(this.select);
		// fejlec szoveg
		this.headtext = new Element('div', {'class':'headText', 'styles':{'z-index':this.z}}).injectInside(this.headArea);
		// fejlec nyil
		this.headarrow = new Element('div', {'class':'headArrow', 'styles':{'z-index':this.z}}).injectInside(this.headArea);

		// separator
		sep = new Element('div', {'styles':{'clear':'both'}}).injectInside(this.select);

		// option terulet: benne az optionok
		this.optionsArea = new Element('div', {'class':'optionsArea', 'styles':{'z-index':this.z}}).injectInside(this.select);
		// eredeti optionok visszapakkantasa
		this.origSelect.getElements('option').each
		(
			function(o)
			{
				// eredeti text
				var text_ = o.getText();

				// valasztott option szovege a fejlecbe
				if (o.selected)
					this.headtext.setText(text_);

				// option bele
				option = new Element('div').addClass('option').injectInside(this.optionsArea).setText(text_);


				// effektek ha nem disabled
				if (!o.disabled)
				{

					// over/out
					option.addEvent('mouseover', function(){this.addClass('over');});
					option.addEvent('mouseout', function(){this.removeClass('over');});

					// kattinas
					option.addEvent('click', function()
					{
						// jelenlegi erteket taroljuk
						var cur_value = this.origSelect.getValue();

						// beirjuk a textet
						this.headtext.setText(text_);

						// bezarjuk a selectet
						this.dropdown();

						// beallitjuk az erteket az eredeti selectben
						this.origSelect.value = o.value;

						// onchange event lefuttatasa, ha van
						if(this.ocev)
						{
							// csak ha valtozik
							if (o.value!=cur_value)
								eval(this.origSelect.onchange());
						}

					}.bind(this));
				}
				// disabled class ha kell
				else
					option.addClass('disabled');

			}.bind(this)
		);


		// dokumentumra kattintva eltunik
		document.addEvent('click', function()
		{
			if (this.optionsArea.getStyle('display')=='block')
			{
				//this.debug(this.origSelect.id+Math.random());
				this.dropdown();
			}
		}.bind(this));

		// a select layerrol "leszedjuk" az elozo cuccot, hogy ne tunjon el egybol mikor megnyilik
		this.select.addEvent('click', function(e)
		{
			new Event(e).stop();
		});

		// fejlecre kattintva lenyikik
		this.headArea.addEvent('click', function()
		{
			this.dropdown();
		}.bind(this));
	},



	// dropdown kezeles (lenyitas/becsukas)
	dropdown: function()
	{
		// lenyit
		if (this.is_open==0)
			this.optionsArea.setStyle('display', 'block');
		// becsuk
		else
			this.optionsArea.setStyle('display', 'none');

		// allapot beallitasa
		this.is_open = 1 - this.is_open;
	},


	debug: function(t)
	{
		if ($('debugtext'))
			$('debugtext').setHTML(t);
	}
})
//










// betoltes utan letrehozzuk a peldanyokat
window.addEvent('load', function()
{
	// z index legyen 8000
	var z = 8000;

	// a select elemek 'gvSelect' classu span tagek kozott vannak
	var containers = $A($$('span.gvSelect'));
	// vegigzuzunk a containerken
	containers.each
	(
		function(c)
		{
			new gvSelect_(c, z);
			z--;
		}
	)
});
