/** * MarilynBar * @version 1.0 * 2008. 04. 26. * @package JavaScripts * @subpackage AutoComplete * @author E-DOT Interactive Studio * @copyright Copyright (c) 2008, E-DOT */ var autocomplete; // Autocomple divek összeállítása function autocompleteInit() { autocomplete = { // Konfigurálásra ajaxfile : getAutoCompleteAjaxFile, // meghívott AJAX file ajaxtypeparam : "type", // AJAX file típus paramétere ajaxqueryparam : "q", // AJAX file lekérdezés paramétere relpattern : /^autocomplete_([a-z0-9]+)$/, // rel attribútum illeszkedési regexp mintája, típus bezárójelezendő!!! // Belső használatra div_idx : 0, divs : new Array(), sf_divs : new Array(), inputs : new Array(), html : false, hits : new Array(), hoveritem : new Array(), firstitem : new Array(), cache : new Array()}; var input = document.getElementsByTagName("input"); var i; for (i=0; i 0) sf_iframe[0].style.width = w-(-4) + "px"; obj.onkeydown = autocompletePress; obj.onblur = function () { autocomplete.divs[idx].style.display = "none"; autocomplete.sf_divs[idx].style.display = "none"; } } // Input mező billentyűleütése function autocompletePress(e) { var e = e || event; var target = e.srcElement || e.target; for (var idx=0; idx= autocomplete.hits[idx].length) autocomplete.hoveritem[idx] = -1; } // Fel (38) gomb esetén if (e.keyCode == 38) { if (typeof autocomplete.hoveritem[idx] != "number") { autocomplete.hoveritem[idx] = autocomplete.hits[idx].length-1; autocomplete.firstitem[idx] = autocomplete.inputs[idx].value; } autocomplete.hoveritem[idx]--; if (autocomplete.hoveritem[idx] < -1) autocomplete.hoveritem[idx] = autocomplete.hits[idx].length-1; } // Fel vagy le gomb esetén if (e.keyCode == 40 || e.keyCode == 38) { autocomplete.inputs[idx].value = ((autocomplete.hoveritem[idx] != -1)?autocomplete.hits[idx][autocomplete.hoveritem[idx]]:autocomplete.firstitem[idx]); var li = autocomplete.sf_divs[idx].getElementsByTagName("li"); for (var i=0; i -1?"&":"?") + autocomplete.ajaxtypeparam + "=" + type + "&" + autocomplete.ajaxqueryparam + "=" + autocomplete.inputs[idx].value, autocompleteProgressAjax, idx); } else { ajaxAutocompleteFill(idx, autocomplete.cache[idx][autocomplete.inputs[idx].value]); } } // Találatok betöltése ajaxtól function autocompleteProgressAjax(idx, text) { var text = text.split("\n"); if (text.length == 1) { autocomplete.divs[idx].style.display = "none"; autocomplete.sf_divs[idx].style.display = "none"; return; } if (text[0] != autocomplete.inputs[idx].value) return; if (!autocomplete.cache[idx]) autocomplete.cache[idx] = new Array(); autocomplete.cache[idx][text[0]] = text; ajaxAutocompleteFill(idx, text); } function ajaxAutocompleteFill(idx, text) { if (!autocomplete.hits[idx]) autocomplete.hits[idx] = new Array(); else autocomplete.hits[idx].length = 0; autocomplete.hoveritem[idx] = new Array(); for(var i=1; i