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);
}