function getElementTop(elem) { var el = elem; var t = el.offsetTop; while (el.offsetParent) { el = el.offsetParent; t += el.offsetTop; } return t; } function addOption(sel, val, text, isSelected) { var opt = document.createElement("option"); opt.text = text; opt.value = val; if (isSelected) opt.setAttribute("selected", "selected"); try { sel.add(opt, null); } catch(ex) { sel.add(opt); } } function AjaxRequest() { this.requestHandler = function() { }; this.doRequest = function(url) { http_request = false; if (window.XMLHttpRequest) { // Mozilla, Safari,... http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) { http_request.overrideMimeType("text/html"); } } else if (window.ActiveXObject) { // IE try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { alert("Cannot create XMLHTTP instance"); return false; } http_request.onreadystatechange = this.requestHandler; http_request.open("GET", url, true); http_request.send(null); }; } function addCity(name) { var r = new AjaxRequest(); r.requestHandler = function() { if (http_request.readyState == 4) { if (http_request.status == 200) { result = http_request.responseText; if (result == "ERR_CITY_EXISTS") alert("Такой город уже есть в списке"); else { document.getElementById("divNewCity").style.display = "none"; var sel = document.getElementById("field_7"); if (sel) { while (sel.length > 1) sel.remove(1); var els = result.split("~"); for (var i = 0; i < els.length-1; i += 2) addOption(sel, els[i], els[i + 1], els[i] == name); loadBCList(sel.options[sel.selectedIndex].value, "~~"); document.getElementById("field_8").value = ""; var el = document.getElementById("bc_BCHumanName"); if (el) el.value = ""; } } } else { alert("There was a problem with the request."); } } }; r.doRequest("mods/bc.php?addcity=" + encodeURIComponent(name)); } function addBC(name, address, metro, addFormSubmit) { var r = new AjaxRequest(); r.requestHandler = function() { if (http_request.readyState == 4) { if (http_request.status == 200) { result = http_request.responseText; document.getElementById("divNewBC").style.display = "none"; loadBCList(document.getElementById("field_7").value, name + "~" + address + "~" + metro, addFormSubmit, document.getElementById("bc_search").value, document.getElementById("BCNameStart").value); } else { alert("There was a problem with the request."); } } }; var cs = document.getElementById("field_7"); var s = "mods/bc.php?addbc=" + encodeURIComponent(name) + "&address=" + encodeURIComponent(address) + "&metro=" + encodeURIComponent(metro) + "&bccity=" + encodeURIComponent(cs.options[cs.selectedIndex].value) + "&hash=" + Math.random(); r.doRequest(s); } function selectBCNameStart(start, addFormSubmit) { document.getElementById("BCNameStart").value = start; loadBCList(document.getElementById("field_7").value, "", addFormSubmit, "", start); } function loadBCList(city_id, highlight_value, addFormSubmit, filter, start, force) { var r = new AjaxRequest(); r.requestHandler = function() { if (http_request.readyState == 4) { if (http_request.status == 200) { result = http_request.responseText; var ld = document.getElementById("loadingDiv"); if (ld) ld.parentNode.removeChild(ld); var sel = document.getElementById("field_8"); var bcDiv = document.getElementById("bc_list"); if (bcDiv) { var el = document.getElementById("bc_search"); el.value = filter; el.onchange = function() { loadBCList(city_id, highlight_value, addFormSubmit, this.value, ""); } if (result.indexOf("MSG:") == 0) { bcDiv.innerHTML = result.substr(4); return; } bcDiv.innerHTML = ""; el = document.createElement("table"); el.id = "bc_list_table"; el.width = "100%"; bcDiv.appendChild(el); var tbl = document.createElement("tbody"); el.appendChild(tbl); var els = result.split("~"); var hni = document.getElementById("bc_BCHumanName"); var tbltr = document.createElement("tr"); var tbltd; for (var i = 0; i < els.length-3; i += 4) { if ((i % 12 == 0 && i > 0)) { tbl.appendChild(tbltr); tbltr = document.createElement("tr"); } tbltd = document.createElement("td"); tbltd.style.paddingTop = "5px"; tbltd.style.width = "33%"; if (els[i] + "~" + els[i+1] + "~" + els[i+2] == highlight_value) { tbltd.style.backgroundColor = "#DDDDFF"; tbltd.id = "scrollHere"; } tbltr.appendChild(tbltd); el = document.createElement("a"); var code = "javascript: document.getElementById('field_8').value = '" + els[i] + "'+'~'+'" + els[i+1] + "'+'~'+'" + els[i+2] + "'; "; if (hni) code += " document.getElementById('bc_BCHumanName').value = '" + els[i] + " " + els[i+1] + " " + els[i+2] + "'; "; if (addFormSubmit == true) code += " document.forms[0].submit(); "; code += " void(0);"; el.href = code; el.innerHTML = "" + els[i] + "
" + els[i+1]; if (els[i+2] != "") el.innerHTML += " " + els[i+2]; tbltd.appendChild(el); if (i >= els.length - 4) tbl.appendChild(tbltr); } var se = document.getElementById("scrollHere"); if (se) window.scrollTo(0, getElementTop(se)); } } else { alert("There was a problem with the request."); } } }; var ld = document.createElement("div"); ld.style.backgroundColor = "white"; ld.style.position = "absolute"; ld.style.left = "50%"; ld.style.top = "50%"; //ld.innerHTML = '
Загрузка...'; ld.id = "loadingDiv"; document.forms[0].appendChild(ld); //alert("mods/bc.php?city=" + (city_id) + "&hash=" + Math.random() + "&filter=" + (filter)); if (!filter) filter = ""; var req_str = "mods/bc.php?city=" + encodeURIComponent(city_id) + "&hash=" + Math.random() + "&filter=" + encodeURIComponent(filter) + "&start=" + encodeURIComponent(start) + "&addFormSubmit=" + addFormSubmit; if (force == 1) req_str += "&force=1"; r.doRequest(req_str); }