//ассоциативный массив (предметный указатель: ссылка) var indexarr = { "академия мореплавания": "objectsH3hota.html#seaacad", "алая башня": "objectsH3hota.html#cons5", "алтарь маны": "objectsH3hota.html#manaaltar", "амулет затмения": "artefactsH3hota.html#art12", "анабель": "subpage/anabel.html", "андал": "subpage/andal.html", "артефакты-реликты": "artefactsH3hota.html#art4", "артефакты-сокровища": "artefactsH3hota.html#art2", "аспид": "creaturesH3hota.html#c72", "ассида": "creaturesH3hota.html#c42", "астра": "subpage/astra.html", "банки": "objectsH3hota.html#banks", "башня из слоновой кости": "objectsH3hota.html#cons2", "беатрис": "subpage/beatrix.html", "беседка": "objectsH3hota.html#alcove", "бидли": "subpage/bidley.html", "вертеп": "objectsH3hota.html#banks4", "верфь дирижаблей": "objectsH3hota.html#airshipyard", "винодельня": "objectsH3hota.html#winery", "водопой": "objectsH3hota.html#waterplace", "головорез": "creaturesH3hota.html#c22", "городские врата": "objectsH3hota.html#townportal", "даргем": "subpage/dargem.html", "дерек": "subpage/derek.html", "джереми": "subpage/jeremy.html", "дирижабль": "objectsH3hota.html#airship", "древний алтарь": "objectsH3hota.html#ancientlamp", "древняя лампа": "objectsH3hota.html#lamp", "дух океана": "creaturesH3hota.html#c41", "железный кулак огра": "artefactsH3hota.html#art45", "жизель": "subpage/jiselle.html", "жрица моря": "creaturesH3hota.html#c51", "заклинательница": "creaturesH3hota.html#c52", "застава налетчиков": "objectsH3hota.html#cons1", "зиккурат": "objectsH3hota.html#ziggurat", "зилар": "subpage/zylar.html", "золотой гусь": "artefactsH3hota.html#art42", "иллор": "subpage/illor.html", "капитан": "subpage/captain.html", "касметра": "subpage/casmetra.html", "кассиопея": "subpage/cassiopeia.html", "кинкерия": "subpage/kinkery.html", "колизей магов": "objectsH3hota.html#magecolo", "кольцо забвения": "artefactsH3hota.html#art36", "кольцо подавления": "artefactsH3hota.html#art23", "коркес": "subpage/korkes.html", "королевские доспехи никсов": "artefactsH3hota.html#art32", "корона пяти морей": "artefactsH3hota.html#art34", "корсар": "creaturesH3hota.html#c32", "кукла шамана": "artefactsH3hota.html#art21", "кулон отражения": "artefactsH3hota.html#art44", "кулон разорения": "artefactsH3hota.html#art37", "лаборатория чернокнижника": "objectsH3hota.html#warlocklab", "лагерь героя": "objectsH3hota.html#herocamp", "латы гаснущих светил": "artefactsH3hota.html#art46", "лачуга отшельника": "objectsH3hota.html#hermitshack", "лепрекон": "creaturesH3hota.html#nc_leprechaun", "лина": "subpage/lina.html", "мантия дипломата": "artefactsH3hota.html#art43", "манфред": "subpage/manfred.html", "матрос": "creaturesH3hota.html#c21", "минеральный источник": "objectsH3hota.html#mineralspring", "мириам": "subpage/miriam.html", "могила": "objectsH3hota.html#opengrave", "морской волк": "creaturesH3hota.html#c33", "морской змей": "creaturesH3hota.html#c71", "навигатор": "subpage/navigator.html", "накидка молчания": "artefactsH3hota.html#art35", "направленный выстрел (личи)": "subpage/special/lichsability.html", "направленный выстрел (магоги)": "subpage/special/magogsability.html", "никс": "creaturesH3hota.html#c61", "никс-воин": "creaturesH3hota.html#c62", "нимфа": "creaturesH3hota.html#c11", "обсерватория": "objectsH3hota.html#observer", "океанида": "creaturesH3hota.html#c12", "опытный цех": "objectsH3hota.html#cons3", "особняк": "objectsH3hota.html#banks2", "печать заката": "artefactsH3hota.html#art13", "пират": "creaturesH3hota.html#c31", "пиратская пещера": "objectsH3hota.html#cons4", "погост": "objectsH3hota.html#banks1", "подкова демона": "artefactsH3hota.html#art24", "помехи": "changelogsH3hota.html#interference", "преобразователь скелетов": "objectsH3hota.html#skeltransformer", "проводник": "objectsH3hota.html#conductor", "пустоши": "changelogsH3hota.html#wasteland", "путеводная звезда": "covebuildingsH3hota.html#grail", "пушечный двор": "objectsH3hota.html#cannonyard", "пушка": "creaturesH3hota.html#cannon", "ранлу": "subpage/ranlu.html", "рог бездны": "artefactsH3hota.html#art41", "руины": "objectsH3hota.html#banks_ruin", "руны неизбежности": "artefactsH3hota.html#art22", "сапоги странника": "artefactsH3hota.html#art38", "сатир": "creaturesH3hota.html#nc_satyr", "святилище бехолдеров": "objectsH3hota.html#banks5", "скважина": "objectsH3hota.html#oilwell", "склады": "objectsH3hota.html#wrhouse", "спинт": "subpage/spint.html", "стальной голем": "creaturesH3hota.html#nc_steelgolem", "старатель": "objectsH3hota.html#golddigger", "старьевщик": "objectsH3hota.html#junkman", "тарк": "subpage/tark.html", "трактир": "objectsH3hota.html#tavern", "трезубец могущества": "artefactsH3hota.html#art31", "устрашающая маска": "artefactsH3hota.html#art11", "фабрика военной техники": "objectsH3hota.html#militaryfabric", "фангарм": "creaturesH3hota.html#nc_fang", "фонтан молодости": "objectsH3hota.html#youthf", "форт на холме (новый)": "objectsH3hota.html#hillfort", "храм лояльности": "objectsH3hota.html#loyaltytemple", "храм моря": "objectsH3hota.html#banks6", "хранитель снов": "artefactsH3hota.html#art47", "черная башня": "objectsH3hota.html#banks3", "щит морской славы": "artefactsH3hota.html#art33", "элмор": "subpage/elmore.html", "эоваций": "subpage/eovacius.html" } var flag = 0; //0 - некорректное значение в строке поиска, 1 - корректное var chosen = -1; //номер выбранного элемента в списке (0 - count, изначально -1) var count = 0; //кол-во элементов в списке (0 - 6) //очистить строку поиска function clearinput() { var searchinput = document.searchform.searchinput; if ((flag == 0) && (searchinput.value == "Некорректный ввод")) return; searchinput.value = ""; searchinput.focus(); } //при фокусе на строке поиска список становится видимым function visibleList() { var list = document.getElementById('searchlist'); list.style.visibility = 'visible'; } //при отсутствии фокуса на строке поиска список исчезает function deleteList() { var list = document.getElementById('searchlist'); list.style.visibility = 'hidden'; for (var i = list.children.length-1; i > -1; i--) { list.removeChild(list.children[i]); } chosen = -1; } //при нажатии на элемент списка он появляется в строке поиска function chooseEl() { var list = document.getElementById('searchlist'); for (var i = 0; i < 6; i++) { list.children[i].onmousedown = function() { document.searchform.searchinput.value = this.innerHTML; deleteList(); setTimeout(findindex, 100); } } } //вызывается при наведении мыши на список function onmouseoverfunc(e) { var e = e || window.event; var target = e.target || e.srcElement; var list = document.getElementById('searchlist'); chosen = -1; list.onmousemove = function() { chosen = -1; for (var i = 0; i < count; i++) { list.children[i].style.backgroundColor = 'rgba(0, 0, 0, 0.0)'; } for (var i = 0; i < count; i++) { if (list.children[i] == target) { list.children[i].style.backgroundColor = 'rgba(0, 255, 255, 0.4)'; chosen = i; } } } chooseEl(); } //переход на другую страницу в зависимости от выбора function findindex() { var val = window.searchform.searchinput.value.toLowerCase(); for (var key in indexarr) { if (val == key) {document.location.href = indexarr[key]; flag = 1; break;} } if (flag == 1) {searchform.searchinput.value = ""; flag = 0; return;}; if (flag == 0) {searchform.searchinput.value = "Некорректный ввод"; searchform.searchinput.style.color = "rgba(255, 0, 0, 0.6)"; return;}; } //при некорректном вводе function incorrectinput() { searchform.searchinput.style.color = "black"; if ((flag == 0) && (searchform.searchinput.value == "Некорректный ввод")) searchform.searchinput.value = ""; } //сравнение введенной строки с ключами ассоциативного массива function strcmp() { var list = document.getElementById('searchlist'); list.style.visibility = 'visible'; var str = searchform.searchinput.value.toLowerCase(); //строка из поля ввода var index = ""; //строка из ассоциативного массива var isequal = 0; //совпадает (1) или не совпадает (0) начало строки из поля ввода с началом строки из ассоциативного массива var arr = new Array(); count = 0; for (var key in indexarr) { isequal = 0; index = key; for (var k = 0; k < index.length-str.length+1; k++) { for (var j = 0; j < str.length; j++) { if (str[j] != index[j+k]) {isequal=0; break;} else isequal=1; } if (isequal == 1) break; } if (isequal == 1) { arr[count] = index; count++; if (count == 6) break; } } if (count == 0) list.style.visibility = 'hidden'; if (str.length == 0) list.style.visibility = 'hidden'; for (var i = list.children.length-1; i > -1; i--) { list.removeChild(list.children[i]); } for (var i = 0; i < count; i++) { var li = document.createElement('li'); li.innerHTML = arr[i]; list.appendChild(li); } } //обработка нажатие клавиш enter, up, down при активном инпуте function inputevent(e) { var list = document.getElementById('searchlist'); if (e.which == 13 || e.keyCode == 13) //enter; { e.preventDefault(); if (chosen == -1) { document.searchform.searchinput.blur(); setTimeout(findindex, 100); } if ((0 <= chosen) && (chosen <= count-1)) { window.searchform.searchinput.value = list.children[chosen].innerHTML; deleteList(); setTimeout(findindex, 100); } } if (e.which == 40 || e.keyCode == 40) //down { e.preventDefault(); if ((-1 <= chosen) && (chosen < count-1)) { ++chosen; list.children[chosen].style.backgroundColor = 'rgba(0, 255, 255, 0.4)'; list.children[chosen-1].style.backgroundColor = 'rgba(0, 0, 0, 0.0)'; } } if (e.which == 38 || e.keyCode == 38) //up { e.preventDefault(); if ((0 < chosen) && (chosen <= count-1)) { --chosen; list.children[chosen].style.backgroundColor = 'rgba(0, 255, 255, 0.4)'; list.children[chosen+1].style.backgroundColor = 'rgba(0, 0, 0, 0.0)'; } } }