
//Event.observe(window, 'load', function() {
function ss_load() {
	document.observe('click', function(e) {
		var forras = e.target;
		if (!forras.id.match(/^superselect/) && !$(forras).hasClassName('ss_panel_gomb')) {
			if (nyitva = ss_open_finder()) {
				ss_toggle(nyitva.id.split('-').pop());
				if (e.target.nodeName != "INPUT")  {
					return false;
				}
			}
		}
	});
	
	var gepelunk = false;

	$$('div[id^=superselect_panel-]').each(function(b) {
		//ss_update_label(b.id);
		
		b.observe('selectstart', function(e) {
			return false;
		});
		
		b.observe('click', function(e) {
			var mezo = e.target.id.split('-').pop();
			ss_toggle(mezo);
		});
	});
	
	$$('div[id^=superselect_lista]').each(function(b) {
		var mezo = b.id.split('-').pop();
		//ss_update_label(b.id);	
		$$('#' + b.id + ' ul li').each(function(li) {
			li.observe('click', function(ee) {
				var klikk = ee.target.nodeName == 'LI';
				ss_aktiv_li(b, li, klikk);
				ss_update_label(b.id);
			});

			li.observe('mouseover', function() {
				ss_aktiv_li(b, li);
			});

/*
			li.observe('selectstart', function() {
				return false;
			});
*/
		});
	});

	$$('div[id^=superselect_text]').each(function(b) {
		b.onselectstart = function() {
						return false;
				};
	});

	// a 2-es nyiljon le alapbol
	//ss_toggle('ketto');
	
	if (Prototype.Browser.WebKit || Prototype.Browser.IE) {
		// chrom*, safari, msie
		Event.observe(document, 'keydown', function(e) {
			esemenykezeles(e);
		});
	} else if (Prototype.Browser.Gecko || Prototype.Browser.Opera) {
		// gecko/mozilla, opera
		Event.observe(document, 'keypress', function(e) {
			esemenykezeles(e);
		});
	}	

	var esemenykezeles = function(e) {
		var nyitva = ss_open_finder();
		var ascii = e.which || e.keyCode;
		if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
			return false;
		}

		if (nyitva) {
			var ul_container = $('superselect_ul_container-' + nyitva.id.split('-').pop());
			var lehetosegek = [];
			var betu = String.fromCharCode(ascii);
			var aktli = $$('#' + nyitva.id + ' ul li.li_aktiv')[0];
			var perpage = parseInt(ul_container.offsetHeight / aktli.offsetHeight);
			var ul_offsetTop = ul_container.offsetTop;
			var gepelos_mezo = $('superselect_gepeles-' + nyitva.id.split('-').pop());;
			if (ascii == 13 || ascii == 32) {
				// enter es szokoz kivalaszt (toggle!)
				if (aktli) {
					$(aktli).down().checked = !$(aktli).down().checked;
					ss_update_label(nyitva.id);
				}
			} else if (ascii == 27) {
				// escape, becsuk.
				ss_ok(nyitva.id.split('-').pop());
			} else if (ascii == 8) {
				// backspace
				if (aktli) {
					$(aktli).down().checked = false;					
					ss_update_label(nyitva.id);
				}
				if (ujli = aktli.previous()) {
					if (ujli.offsetTop - ujli.offsetHeight * 1.5 <= ul_container.scrollHeight - ul_container.offsetHeight / 2) {
						ul_container.scrollTop = ujli.offsetTop - ul_container.offsetHeight / 2 - ujli.offsetHeight;
					}
					ss_aktiv_li(nyitva, ujli);
				}
			} else if (ascii == 45) {
				// insert
				if (aktli) {
					$(aktli).down().checked = true;
					ss_update_label(nyitva.id);
				}
				
				if (ujli = aktli.next()) {
					if (ujli.offsetTop - ul_offsetTop + ujli.offsetHeight * 1.5 >= ul_container.offsetHeight / 2) {
						ul_container.scrollTop = ujli.offsetTop - ul_offsetTop - ul_container.offsetHeight / 2;
					}
					ss_aktiv_li(nyitva, ujli);
				}
			} else if (ascii == 46) {
				// delete
				if (aktli) {
					$(aktli).down().checked = false;
				}
				
				if (ujli = aktli.next()) {
					if (ujli.offsetTop - ul_offsetTop + ujli.offsetHeight * 1.5 >= ul_container.offsetHeight / 2) {
						ul_container.scrollTop = ujli.offsetTop - ul_offsetTop - ul_container.offsetHeight / 2;
					}
					ss_aktiv_li(nyitva, ujli);
					ss_update_label(nyitva.id);
				}
			} else if (ascii == 38) {
				// folfele megyunk!
				if (aktli && (ujli = aktli.previous())) {
					if (ujli.offsetTop - ul_offsetTop - ul_container.scrollTop <= ul_container.clientHeight / 2) {
						ul_container.scrollTop = ujli.offsetTop - ul_offsetTop - ul_container.clientHeight / 2;
					}
					ss_aktiv_li(nyitva, ujli);
				}
			} else if (ascii == 40) {
				// lefele megyunk!
				if (aktli && (ujli = aktli.next())) {
					if (ujli.offsetTop - ul_offsetTop + ujli.offsetHeight * 1.5 >= ul_container.offsetHeight / 2) {
						ul_container.scrollTop = ujli.offsetTop - ul_offsetTop - ul_container.clientHeight / 2;
					}
					ss_aktiv_li(nyitva, ujli);
				}
			} else if (ascii == 36) {
				// home
				ujli = $$('#' + nyitva.id + ' > div > ul > li')[0];
				ul_container.scrollTop = 0;
				ss_aktiv_li(nyitva, ujli);
			} else if (ascii == 35) {
				// end
				lik = $$('#' + nyitva.id + ' > div > ul > li');
				ujli = lik[lik.length - 1];
				ul_container.scrollTop = ul_container.scrollHeight;
				ss_aktiv_li(nyitva, ujli);
			} else if (ascii == 33) {
				// pgup		
				var aktindex = $(aktli).previousSiblings().size();
				var ujindex = aktindex - perpage > 0 ? aktindex - perpage  : 0;
				if (ujli = $$('#' + nyitva.id + ' ul li:nth-child(' + (ujindex + 1) + ')')[0]) {
					ul_container.scrollTop = ujli.offsetTop - ul_offsetTop - ul_container.clientHeight / 2;
					ss_aktiv_li(nyitva, ujli);
				}
			} else if (ascii == 34) {
				// pgdown
				var aktindex = $(aktli).previousSiblings().size();
				var maxindex = $$('#' + nyitva.id + ' > div > ul > li').size();
				var ujindex = aktindex + perpage + 1>= maxindex ? maxindex : aktindex + perpage + 1;
				if (ujli = $$('#' + nyitva.id + ' div ul li:nth-child(' + ujindex + ')')[0]) {
					ul_container.scrollTop = ujli.offsetTop - ul_offsetTop - ul_container.clientHeight / 2;
					ss_aktiv_li(nyitva, ujli);
				}
			} else  if (betu.match(/[a-z0-9]/i)) {
				if (!gepelunk) {
					gepelos_mezo.value = betu;
				} else {
					gepelos_mezo.value += betu;
				}	

				gepelunk = true;
				
				if (typeof(t) != "undefined") {	
					clearTimeout(t);
				}

				t = setTimeout(function() { gepelunk = false; }, 3000);
				regexp = new RegExp("^" + gepelos_mezo.value, "i");
				$$('#' + nyitva.id + ' > div > ul > li > label').each(function(label) {
					if (label.innerHTML.match(regexp)) {
						lehetosegek.push(label.up());
					}
				});
				
				if (lehetosegek.length) {
					aktiv = -1;
					for (var i=0; i<lehetosegek.length; i++) {
						if ($(lehetosegek[i]).hasClassName('li_aktiv')) {
							var aktiv = i;
						}
					}
					if (aktiv < lehetosegek.length - 1) {
						var kovetkezo = aktiv + 1;
					} else if (aktiv == lehetosegek.length - 1) {
						var kovetkezo = 0;
					}
					ul_container.scrollTop = lehetosegek[kovetkezo].offsetTop - lehetosegek[kovetkezo].offsetHeight - ul_container.offsetHeight / 2;
					ss_aktiv_li(nyitva, lehetosegek[kovetkezo]);
				} else {
					$(nyitva).addClassName('superselect_nincs');
					setTimeout(function() { $(nyitva).removeClassName('superselect_nincs');}, 1000);
					gepelunk = false;					
				}
			}
			Event.stop(e);
		}
	};
};

function ss_toggle(melyik) {
	if (nyitott = $$('div[id^=superselect_lista].latszik')[0]) {
		var vege = nyitott.id.split('-').pop();
		var mydiv = 'superselect_lista-' + vege;
		var takaro = 'superselect_takaro-' + vege;
		var nyitunk = vege != melyik;
		$(mydiv).removeClassName('latszik');
		$(mydiv).addClassName('nemlatszik');
		$(takaro).removeClassName('latszik');
		$(takaro).addClassName('nemlatszik');
		$$('#' + mydiv + ' > div > ul > li.li_aktiv').each(function(x) {
			$(x).removeClassName('li_aktiv');
		});
	} else {
		nyitunk = true;
	}
	
	
	if (nyitunk) {
		var mydiv = 'superselect_lista-' + melyik;
		var takaro = 'superselect_takaro-' + melyik;
		var ul = 'superselect_ul-' + melyik;
		var ul_container = 'superselect_ul_container-' + melyik;
		$(mydiv).removeClassName('nemlatszik');
		$(mydiv).addClassName('latszik');
		
		$(takaro).removeClassName('nemlatszik');
		$(takaro).addClassName('latszik');
	
		// ha kisebb az ul, mint a ul_container, akkor igazitjuk a meretet (div es takaro is!)
		if ($(ul_container).offsetHeight > $(ul).offsetHeight) {
			$(ul_container).style.height = $(ul).offsetHeight + 1 + 'px';
			var takaro_magassag = $('superselect_also-' + melyik).offsetHeight + $(ul_container).offsetHeight;
			$('superselect_takaro-' + melyik).style.height = parseInt(takaro_magassag - 3) + 'px';
			$(mydiv).style.height = takaro_magassag + 'px';
		}
		
		// az elsore ugrunk (vagy az elso kivalasztottra)
		if (elso_chk = $$('#' + mydiv + ' > div > ul > li > input:checked')[0]) {
			elso_li = elso_chk.up();
		} else {
			elso_li = $$('#' + mydiv + ' > div > ul > li:nth-child(1)')[0];
		}
		ss_aktiv_li(mydiv, elso_li);
	}
}

function ss_open_finder() {
	if (latszik = $$('div[id^=superselect_lista].latszik')[0]) {
		return latszik;
	}
}

function ss_delete(mezo) {
	$$('#superselect_lista-' + mezo + ' li input[type=checkbox]').each(function(b) {	
		b.checked = false;
	});
	var default_szoveg = $('superselect_default-' + mezo).innerHTML;
	$('superselect_text-' + mezo).innerHTML = default_szoveg;
	$('superselect_lista-' + mezo).removeClassName('latszik');
	$('superselect_lista-' + mezo).addClassName('nemlatszik');
	$('superselect_takaro-' + mezo).removeClassName('latszik');
	$('superselect_takaro-' + mezo).addClassName('nemlatszik');
}

function ss_ok(mezo) {
	$('superselect_lista-' + mezo).removeClassName('latszik');
	$('superselect_lista-' + mezo).addClassName('nemlatszik');
	$('superselect_takaro-' + mezo).removeClassName('latszik');
	$('superselect_takaro-' + mezo).addClassName('nemlatszik');
}

function ss_update_label(mezo) {
	var mezo_neve = mezo.split('-').pop();
	var kivalasztottak = $$('#superselect_lista-' + mezo_neve + ' input:checked');
	if (kivalasztottak.length) {
		var kivalasztott_tomb = [];
		kivalasztottak.each(function(chkbox) {
			var labelje = $$('label[for=' + chkbox.id + ']')[0].innerHTML;
			kivalasztott_tomb.push(labelje);
		});

		if (kivalasztott_tomb.length >= 2) {
			var kivalasztott_string = kivalasztott_tomb.slice(0, 2).join(',&nbsp;') + '...&nbsp;(' + kivalasztottak.length + 'db)';
		} else {
			var kivalasztott_string = kivalasztott_tomb.join(', ');
		}

		kivalasztott_string = kivalasztott_string.replace(/(\ |&nbsp;)+/g, "&nbsp;");
		
		$('superselect_text-' + mezo_neve).innerHTML = kivalasztott_string;
		$('superselect_text-' + mezo_neve).title = kivalasztott_tomb.join(', ');
	} else {
		var default_szoveg = $('superselect_container-' + mezo_neve).down(' var').innerHTML;
		$('superselect_text-' + mezo_neve).innerHTML = default_szoveg;
		$('superselect_text-' + mezo_neve).title = default_szoveg;
	}
	hirdetes_darabszam($('kereso').serialize(true));
}


function ss_aktiv_li(nyitva, li, klikk) {
	if (klikk) {
		li.down().checked = !li.down().checked;
	}
	$$('#' + nyitva.id + ' ul li').each(function(elem) {
		$(elem).removeClassName('li_aktiv');
	});
	$(li).addClassName('li_aktiv');
}

function ss_reset(melyik) {
	var ertekek = $('superselect_reset-' + melyik).value.split(',');
	if (ertekek) {
		$$('#superselect_lista-' + melyik + ' li input[type=checkbox]').each(function(b) {
			b.checked = ertekek.include(b.value);
		});
		ss_update_label('superselect_lista-' + melyik);
	}
}

