
//stimmelo szoreszlet kiemelese
function resz_kiemelo(forras, szoreszlet, elotag, utotag){
	var kicserelendok = Array();
	var index = 0;

	while(reszegyezes_vizsgalat(forras, szoreszlet)!=-1){
		//case unsensitivitas, szoreszlet alapjan forrasbol kivagas
		var csere_kezdet = reszegyezes_vizsgalat(forras, szoreszlet);
		var csere_hossz = szoreszlet.length;
		kicserelendok[index] = forras.substr(csere_kezdet, csere_hossz);
		var forras = forras.replace(kicserelendok[index],"|"); //placeholderre egyelore
		index++;
	}
	for(v=0; v<index; v++){
		var forras = forras.replace("|",elotag+kicserelendok[v]+utotag); //kiemeles
	}
	return forras;
}

function reszegyezes_vizsgalat(miben, szoreszlet){
	return (miben.toLowerCase().indexOf(szoreszlet.toLowerCase()));
}

var cln_highlight_szin = '#ffe6ca';
var cln_elemhatter_szin = '#fff8df';
var cln_resztalalat_szin = '#f00000';
var cln_aktivtalalat = -1;
var cln_aktivtalalat_ertek;
var cln_aktivtalalat_nev;
var cln_talalat_ertekek = new Array();
var cln_talalat_nevek = new Array();
var cln_talalatcount = 0;
var cln_szkrollhatar = 20;
var cln_sormagassag = 21;

function lista_frissites(){
	ShowLayer('cln_talalat_box', 'visible');
	ChangeIdAnything("cln_talalat_box", "overflow", "visible");
	ChangeIdAnything("cln_talalat_box", "height", "auto");
	ChangeIdAnything("cln_talalat_box", "width", "auto");
				
	//alert('w');
				
	inputmezo = GetContent('cln_input');
	keresoszo = myTrim(inputmezo.value);
	ujlista='';
	ujlista+='<table id="celtabla" cellpadding="2" cellpadding="0" class="cln_lista_tabla">';
	
	cln_talalatcount = 0; cln_aktivtalalat = -1;
	if(keresoszo!=""){
		for(l=0; l<listaElemek.length; l++){
			if(reszegyezes_vizsgalat(listaElemek[l], keresoszo) > -1){
				ujlista+='<tr><td class="cln_lista_tabla_cella" nowrap id="cln_item'+cln_talalatcount+'" ';
				ujlista+='onmouseover="item_over('+cln_talalatcount+','+l+');" ';
				ujlista+='onmouseout="item_out('+cln_talalatcount+');" ';
				ujlista+='onclick="item_kivalasztva();" ';
				ujlista+='>';
				ujlista+= resz_kiemelo(listaElemek[l], keresoszo, '<span style="color: '+cln_resztalalat_szin+'; text-decoration: underline;">','</span>')+'<br>';
				ujlista+='</td></tr>';
				cln_talalat_ertekek[cln_talalatcount] = listaErtekek[l];
				cln_talalat_nevek[cln_talalatcount] = listaElemek[l];
				cln_talalatcount++;
			}
		}
		if(cln_talalatcount > 0){
			ujlista+='</table>';
			ChangeContent('cln_talalat_box', ujlista);
			
			if(cln_talalatcount > cln_szkrollhatar){
				//szkrollozas ha X elemnel tobb van
				ujszelesseg = GetElementWidth(eval("cln_talalat_box"));

				ChangeIdAnything("cln_talalat_box", "height", cln_sormagassag*cln_szkrollhatar);
				ChangeIdAnything("cln_talalat_box", "overflow", "auto");
				ChangeIdAnything("cln_talalat_box", "overflowX", "hidden");
				ChangeIdAnything("cln_talalat_box", "width", ujszelesseg+26); //szkrollelem szelesseg hozzaadasa
				document.getElementById("cln_talalat_box").scrollTop = 0;
			}
		}
	}
	if(keresoszo=="" || cln_talalatcount==0){
		ujlista+='<tr><td><i>Nincs találat.</i></td></tr>';
		ujlista+='</table>';
		ChangeContent('cln_talalat_box', ujlista);
	}

}

function item_kivalasztva(){
	kivalasztva_ok();
}

function item_over(sorszam, tombsorszam){
	if(cln_aktivtalalat > -1){
		ChangeLayerBgColor('cln_item'+cln_aktivtalalat, cln_elemhatter_szin);
	}
	ChangeLayerBgColor('cln_item'+sorszam, cln_highlight_szin);
	cln_aktivtalalat = sorszam;
	cln_aktivtalalat_ertek = listaErtekek[tombsorszam];
	cln_aktivtalalat_nev = listaElemek[tombsorszam];
}

function item_out(sorszam){
	//ChangeLayerBgColor('cln_item'+sorszam, cln_elemhatter_szin);
	hatterszinre_mindent();
	cln_aktivtalalat = -1;
}

//------------ segedek
function GetElementWidth2(elem){
 		asd = document.getElementById(elem); 
		return asd.offsetWidth;
}

GetElementWidth = function(elem) {
	function _convertValue(val) {
		if (!val) {return;}
		val = parseInt(val.replace("px",""));
		if (!val || isNaN(val)) {return 0;}
		return val;
	}
	var currentStyle;
	if (elem.currentStyle)	{ currentStyle = elem.currentStyle; }
	else if (window.getComputedStyle) {	currentStyle = document.defaultView.getComputedStyle(elem, null); }
	else { currentStyle = elem.style; }
	
	return (elem.offsetWidth -
			_convertValue(currentStyle.marginLeft) -
			_convertValue(currentStyle.marginRight) -
			_convertValue(currentStyle.borderLeftWidth) -
			_convertValue(currentStyle.borderRightWidth));
}

GetElementHeight = function(elem) {
	function _convertValue(val) {
		if (!val) {return;}
		val = parseInt(val.replace("px",""));
		if (!val || isNaN(val)) {return 0;}
		return val;
	}
	var currentStyle;
	if (elem.currentStyle)	{ currentStyle = elem.currentStyle; }
	else if (window.getComputedStyle) {	currentStyle = document.defaultView.getComputedStyle(elem, null); }
	else { currentStyle = elem.style; }
	return (elem.offsetHeight -
	        _convertValue(currentStyle.marginTop) -
    	    _convertValue(currentStyle.marginBottom) -
        	_convertValue(currentStyle.borderTopWidth) -
        	_convertValue(currentStyle.borderBottomWidth));	
}

function GetContent(id) {
	var content;
    if (type=="IE") {
        content = document.all[id];
    }
    if (type=="NN") {
        content = document.layers[id];
    }
    if (type=="MO" || type=="OP") {
        content = document.getElementById(id);
    }
	return content;
}

//eventek

function addEvent(obj, event_name, func_ref)
{
	if(obj.addEventListener && !window.opera)
	{
		obj.addEventListener(event_name, func_ref, true);
	}
	else
	{
		obj["on" + event_name] = func_ref;
	}
}

// Removes an event from the object
function removeEvent(obj, event_name, func_ref)
{
	if(obj.removeEventListener && !window.opera)
	{
		obj.removeEventListener(event_name, func_ref, true);
	}
	else
	{
		obj["on" + event_name] = null;
	}
}

// Stop an event from bubbling up the event DOM
function stopEvent(event)
{
	event = event || window.event;

	if(event)
	{
		if(event.stopPropagation) event.stopPropagation();
		if(event.preventDefault) event.preventDefault();

		if(typeof event.cancelBubble != "undefined")
		{
			event.cancelBubble = true;
			event.returnValue = false;
		}
	}

	return false;
}

// Get the obj that triggers off the event
function getTargetElement(event)
{
	event = event || window.event;
	return event.srcElement || event.target;
}


//addEvent(cln_input,       "blur",  cln_km_init);
//addEvent(document,       "keydown",  cln_km_init);
//addEvent(this.actb_curr, "blur",     this.funcClear);
//addEvent(document,       "keypress", this.funcPress);

function cln_km_init(mod){
	cln_mod = mod;
	ShowLayer('cln_talalat_box', 'hidden');
	//bepoz
	talalat_box_bepoz();
	if(cln_mod == "abc"){
		addEvent(window,       "resize",  ablak_atmeretezes);
	}
	addEvent(document,     "click",  doc_kattintas);
	addEvent(document.getElementById('cln_input'),       "keyup",  		billentyu_leutes);
	addEvent(document.getElementById('cln_input'),       "keydown",  	billentyu_letartas);
	addEvent(document.getElementById('cln_talalat_box'), "keydown",  	billentyu_letartas2);
	addEvent(document.getElementById('cln_input'),       "mouseover",  	eger_folotte);
	addEvent(document.getElementById('cln_talalat_box'), "mouseover",  	eger_folotte);
	addEvent(document.getElementById('cln_input'),       "mouseout",  	eger_nincs_folotte);
	addEvent(document.getElementById('cln_talalat_box'), "mouseout",  	eger_nincs_folotte);
	addEvent(document.getElementById('cln_input'),       "focus",  		input_focus);
}

function input_focus(event){
	if(GetContent('cln_input').value.length > 0){
		//ShowLayer('cln_talalat_box', 'visible');
		lista_frissites();
	}
}

var cln_eger_folotte = false;

function eger_folotte(event){
	cln_eger_folotte = true;
}
function eger_nincs_folotte(event){
	cln_eger_folotte = false;
}

function doc_kattintas(event){
	if(!cln_eger_folotte){
		ShowLayer('cln_talalat_box', 'hidden');
	}
	closeSubMenus(); //felsomenu
	return true;//reEnable();
}

function ablak_atmeretezes(){
		positionSubMenu(); 		//felsomenu ujrapozicionalasahoz
	    talalat_box_bepoz();
}

function talalat_box_bepoz(){
	ChangeLayerXPos('cln_talalat_box', getAbsX(eval('cln_input')) );
	ChangeLayerYPos('cln_talalat_box', getAbsY(eval('cln_input')) + GetElementHeight(eval('cln_input')) + 3 );
}

function billentyu_leutes(event){
	event = event || window.event;
	var code = event.keyCode;

	if(code != 13 && code != 40 && code != 38 && code != 27 && code != 35 && code != 36 && code != 33 && code != 34){
		lista_frissites();
	}
}
function billentyu_letartas2(event){
	document.getElementById("cln_input").focus();
	billentyu_letartas(event);
}

function billentyu_letartas(event){
	event = event || window.event;
	var code = event.keyCode;

	if(code == 13 ){	//enter
		if (cln_aktivtalalat > -1){
			kivalasztva_ok();
		}
	}else if(code == 40){	//le
		if(cln_talalatcount > 0 && (cln_talalatcount-1) > cln_aktivtalalat){
			ShowLayer('cln_talalat_box', 'visible');
			if (cln_aktivtalalat > -1){
				hatterszinre_mindent();
			}
			cln_aktivtalalat++;
			valtozas_bill();
		}
	}else if(code == 38){	//fel
		if(cln_talalatcount > 0 && cln_aktivtalalat > 0){
			if (cln_aktivtalalat > -1){
				hatterszinre_mindent();
			}
			cln_aktivtalalat--;
			valtozas_bill();
		}
	}else if(code == 27){	//esc
		ShowLayer('cln_talalat_box', 'hidden');
		hatterszinre_mindent();
		cln_aktivtalalat = -1;
	}else if(code == 36){	//home
		if(cln_talalatcount > 0){
			if (cln_aktivtalalat > -1){
				hatterszinre_mindent();
			}
			cln_aktivtalalat=0;
			ChangeLayerBgColor('cln_item'+cln_aktivtalalat, cln_highlight_szin);
			kurzorszkroll();
		}
	}else if(code == 35){	//end
		if(cln_talalatcount > 0){
			if (cln_aktivtalalat > -1){
				hatterszinre_mindent();
			}
			cln_aktivtalalat=cln_talalatcount-1;
			valtozas_bill();
		}
	}else if(code == 33){	//pgup
		if(cln_talalatcount > 0){
			if (cln_aktivtalalat > -1){
				hatterszinre_mindent();
			}
			if((cln_aktivtalalat-cln_szkrollhatar)>0){
				cln_aktivtalalat-=cln_szkrollhatar;
			}else{
				cln_aktivtalalat=0;
			}
			valtozas_bill();
		}
	}else if(code == 34){	//pgdown
		if(cln_talalatcount > 0){
			if (cln_aktivtalalat > -1){
				hatterszinre_mindent();
			}
			if (cln_aktivtalalat == -1){
				cln_aktivtalalat=0;
			}else{
				if((cln_aktivtalalat+cln_szkrollhatar)<=(cln_talalatcount-1)){
					cln_aktivtalalat+=cln_szkrollhatar;
				}else{
					cln_aktivtalalat=cln_talalatcount-1;
				}
			}
			valtozas_bill();
		}
	}
	//window.status+=code;
}

function valtozas_bill(){
	ChangeLayerBgColor('cln_item'+cln_aktivtalalat, cln_highlight_szin);
	cln_aktivtalalat_ertek = cln_talalat_ertekek[cln_aktivtalalat];
	cln_aktivtalalat_nev = cln_talalat_nevek[cln_aktivtalalat];
	kurzorszkroll();
}

function kurzorszkroll(){
	var hovapoz = 0;
	//var holall = document.getElementById("cln_talalat_box").scrollTop;
	if (cln_szkrollhatar < cln_talalatcount){
		
		if(cln_aktivtalalat >= 0 && cln_aktivtalalat < cln_szkrollhatar/2){
			hovapoz = 0;
		}else if(cln_aktivtalalat >= cln_talalatcount-(cln_szkrollhatar/2)){
			hovapoz = cln_sormagassag*(cln_talalatcount-cln_szkrollhatar)+3;
		}else{
			hovapoz = cln_sormagassag*(cln_aktivtalalat+1-(cln_szkrollhatar/2));
		}
		
		document.getElementById("cln_talalat_box").scrollTop = hovapoz;
	}
}

function hatterszinre_mindent(){
	if(cln_talalatcount > 0){
//		for(i=0; i<cln_talalatcount; i++){
//			ChangeLayerBgColor('cln_item'+i, cln_elemhatter_szin);
//		}
		ChangeLayerBgColor('cln_item'+cln_aktivtalalat, cln_elemhatter_szin);
	}
}

function kivalasztva_ok(){
	document.getElementById("cln_input").value = cln_aktivtalalat_nev;
	ShowLayer('cln_talalat_box', 'hidden');
	//hatterszinre_mindent();
	//cln_aktivtalalat = -1;
	document.gyorsvalaszto.id.value = cln_aktivtalalat_ertek;
	document.gyorsvalaszto.submit();
}




