var currForm,currInput,whisperer,whispererTitle,whispererContent,whispererType; var cities,streets,divs; var selIndex = -1; //kody stlacenych klaves var ENTER = 13; var ESC = 27; var KEYUP = 38; var KEYDN = 40; //zrusi default udalost function cancelEvent(event) { if (!window.event) event.preventDefault(); else window.event.returnValue = false; } //zatvori sepkara function closeWhisperer() { whisperer.style.display = 'none'; } //vypise mesta function doLoadCity() { if (txtResponse != '') { cities = txtResponse.split(','); whispererTitle.innerHTML = 'Vyberte mesto:<\/nobr><\/small>'; whispererContent.innerHTML = ''; for (var c = 0; c < cities.length; c ++) whispererContent.innerHTML += '
' + cities[c] + '<\/a><\/nobr><\/div>'; divs = whispererContent.getElementsByTagName('div'); selIndex = -1; showWhisperer(); } else { whispererContent.innerHTML = ''; whisperer.style.display = 'none'; } } //vypise ulice function doLoadStreet() { if (txtResponse != '') { streets = txtResponse.split(','); whispererTitle.innerHTML = 'Vyberte ulicu:<\/nobr><\/small>'; whispererContent.innerHTML = ''; for (var c = 0; c < streets.length; c ++) whispererContent.innerHTML += '
' + streets[c] + '<\/a><\/nobr><\/div>'; divs = whispererContent.getElementsByTagName('div'); selIndex = -1; showWhisperer(); } else { whispererContent.innerHTML = ''; whisperer.style.display = 'none'; } } //vypocita horny okraj sepkara function getWhispererTop() { var wt = 0; var ci = currInput; while (ci.offsetParent) { wt += ci.offsetParent.offsetTop; ci = ci.offsetParent; } return wt; } //vypocita lavy okraj sepkara function getWhispererLeft() { var wl = 0; var ci = currInput; while (ci.offsetParent) { wl += ci.offsetParent.offsetLeft; ci = ci.offsetParent; } return wl; } //inicializuje sepkara function initWhisperer() { whisperer = document.getElementById('whisperer'); whispererTitle = document.getElementById('whispererTitle'); whispererContent = document.getElementById('whispererContent'); for (var f = 0; f < document.forms.length; f ++) { for (var i = 0; i < document.forms[f].elements.length; i ++) { document.forms[f].elements[i].onfocus = setForm; document.forms[f].elements[i].setAttribute("autocomplete","off"); } } } //nacita mesto function loadCity(event,city) { if (!isAjax || !whisperer) return; var keyCode = !window.event ? event.which : window.event.keyCode; switch(keyCode) { case ENTER : case ESC : case KEYUP : case KEYDN : return; default : if ((keyCode == 8) || (keyCode > 31)) { currInput = currForm.city; ajax_post('http://www.internetatv.sk/web/inc/ajax.php','com=load_cities&city=' + city,doLoadCity); } whispererTitle.innerHTML = 'Načítavam mestá...<\/nobr><\/small>'; if (whispererType != 'city') whispererContent.innerHTML = ''; whispererType = 'city'; showWhisperer(); } } //nacita ulicu function loadStreet(event,city,street) { if (!isAjax || !whisperer) return; var keyCode = event.mouseButton ? event.mouseButton : (!window.event ? event.which : window.event.keyCode); switch(keyCode) { case ENTER : case ESC : case KEYUP : case KEYDN : return; default : if ((keyCode == 1) || (keyCode == 8) || (keyCode > 31)) { currInput = currForm.street; ajax_post('http://www.internetatv.sk/web/inc/ajax.php','com=load_streets&city=' + city + '&street=' + street,doLoadStreet); } whispererTitle.innerHTML = 'Načítavam ulice...<\/nobr><\/small>'; if (whispererType != 'street') whispererContent.innerHTML = ''; whispererType = 'street'; showWhisperer(); } } //urci aktualneho formularu function setForm() { currForm = this.form; //ak sa aktivuje pole 'street', nacita zoznam ulic if (this.name == 'street') loadStreet({mouseButton : 1},this.form.city.value,this.value); } //nastavi vyznacenu polozku function setSelIndex(si) { if (selIndex != -1) divs[selIndex].className = ''; selIndex = si > divs.length - 1 ? 0 : (si < 0 ? divs.length - 1 : si); divs[selIndex].className = 'selected'; } //zobrazi sepkara function showWhisperer() { whisperer.style.left = getWhispererLeft() + 'px'; whisperer.style.top = getWhispererTop() + currInput.offsetHeight + 'px'; //whisperer.style.width = currInput.offsetWidth + 'px'; if (whisperer.style.display != 'block') whisperer.style.display = 'block'; } //onkeydown function whispererKeyDown(event) { if (!isAjax || !whisperer || (whisperer.style.display != 'block')) return; var keyCode = !window.event ? event.which : window.event.keyCode; switch(keyCode) { case ESC : closeWhisperer(); cancelEvent(event); break; case KEYUP : setSelIndex(selIndex - 1); cancelEvent(event); break; case KEYDN : setSelIndex(selIndex + 1); cancelEvent(event); break; case ENTER : if (whispererType == 'city' && selIndex != -1) writeCity(cities[selIndex]); else { if (whispererType == 'street' && selIndex != -1) writeStreet(streets[selIndex]); } cancelEvent(event); break; } } //zapise mesto do formularu function writeCity(city) { currForm.city.value = city; whisperer.style.display = 'none'; } //zapise ulicu do formularu function writeStreet(street) { currForm.street.value = street; whisperer.style.display = 'none'; }