// ******************* Функции *******************
// Переключалка районы / округа
function switchRegion(hide, show) {
  try {
    gebi(show + "CodeId").style.display = gebi(show + "SwitchId").style.display = "";
    gebi(hide + "CodeId").style.display = gebi(hide + "SwitchId").style.display = "none";
    var prefix = show == "okrug" ? "2" : "1";
    initImageMap(
      prefix,
      "imageMapId",
      "imageNullId",
      "imageSelfId",
      "canvasId",
      "canvasHoverId"
    );
    checkOkrugState();
  } catch(e) {}
  return false;
}

// Скроллим список до выбранного региона
function scrollToRegion(id) {
	var chcb = gebi("loc" + id);
	gebi("chcbContId").scrollTop = absPosition(chcb).y - absPosition(gebi("chcbContId")).y;
}

// Скрываем/показываем районы
function showHideRayons(id, onlyopen) {
	var ICO_PLUS = "http://img.mail.ru/mail/ru/images/geo_plus.gif";
	var ICO_MINUS = "http://img.mail.ru/mail/ru/images/geo_open.gif";
	var isHide = gebi("rayon_" + id).style.display == "none";
	isHide = onlyopen ? 1 : isHide;
	var img = gebi("showHideImg_" + id);
	img.src = isHide ? ICO_MINUS : ICO_PLUS;
	gebi("rayon_" + id).style.display = isHide ? "" : "none";
	return false;
}

// Отрисовываем массив чекбоксов 
function drawCheckBoxes() {
  var html = "";
  var i, j;
  var okrug, rayon;
  for (i in allRegions) {
    okrug = allRegions[i];
    html += "<div class=\"papa\"><a onclick=\"return showHideRayons("+i+");\" href=\"#\"><img id=\"showHideImg_"+i+"\" src=\"http://img.mail.ru/mail/ru/images/geo_plus.gif\" width=\"14\" height=\"14\" alt=\"\" /></a><input onclick=\"clickOkrug(this);\" type=\"checkbox\" name=\"districts\" value=\"" + i + "\" id=\"loc" + i + "\" />\
    <label for=\"loc" + i + "\">" + okrug[0] + "</label></div>\n";
	html += "<div style=\"display:none;\" id=\"rayon_"+i+"\">";
    for (j in okrug[1]) {
      rayon = okrug[1][j];
      html += "<div class=\"kids\"><input onclick=\"clickRayon(this);\" type=\"checkbox\" name=\"mstations\" value=\"" + j + "\" id=\"loc" + i + "_" + j + "\" />\
      <label for=\"loc" + i + "_" + j + "\">" + rayon[0] + "</label></div>";
    }
	html += "</div>";
  }
  return html;
}
// Выставляем чекбоксы по уже выбранным метро
function setCheckboxes(idArray) {
  var i, j, k;
  var okrug, rayon;
  for (i in allRegions) {
    okrug = allRegions[i];
    for (j in okrug[1]) {
      rayon = okrug[1][j];
      for (k = 0; k < rayon[1].length; k++) {
        if (inArray(idArray, rayon[1][k])) { // Есть выбранное метро в этом р-не!
          gebi("loc" + i + "_" + j).checked = 1;
		  showHideRayons(i, 1);
        }
      }
    }
  }
  checkOkrugState();
}
// Проверка состояния чекбоксов для округов
function checkOkrugState() {
  // Выставим родительские селекты
  var i, j, state;
  var okrug, rayon;
  for (i in allRegions) {
    okrug = allRegions[i];
    state = false;
    for (j in okrug[1]) if (gebi("loc" + i + "_" + j).checked) state = true;
    gebi("loc" + i).checked = state;
	if (state) showHideRayons(i, 1);
  }
  // Проработаем карту
  var chcb, id, idarr = [];
  if (curPrefix == null) return;
  if (typeof globalHref[curPrefix] == "undefined") return;
  for (i = 0; i < globalHref[curPrefix].length; i++) {
    if (typeof globalHref[curPrefix][i] == "undefined") continue;
    id = globalHref[curPrefix][i];
    id = id.substring(id.lastIndexOf("#") + 1, id.length);
    chcb = gebi("loc" + id);
    areaShowState[curPrefix][i]  = chcb.checked;
  }
  drawPolygons();
}
// Получаем список станций метро, по нажатию кнопки "Выбрать"
function getMetroList() {
  if (curPrefix == null) return;
  if (typeof globalHref[curPrefix] == "undefined") return;
  var chcb, chcb2, id, id1, id2, metro1, metro2;
//  var distantFlag = gebi("distantId").checked;
  var distantFlag = true;
  var metroBuferObj = {}, out = [];
  var i, j;
  for (i = 0; i < globalHref[curPrefix].length; i++) {
    if (typeof globalHref[curPrefix][i] == "undefined") continue;
    id = globalHref[curPrefix][i];
    id = id.substring(id.lastIndexOf("#") + 1, id.length);
    if (curPrefix == 1) {
      if (id.indexOf("_") == -1) continue;
      chcb = gebi("loc" + id); 
      if (!chcb.checked) continue;
      id1 = id.substring(0, id.indexOf("_"));
      id2 = id.substring(id.indexOf("_") + 1, id.length);
      
      metro1 = allRegions[id1][1][id2][1];
      metro2 = distantFlag ? allRegions[id1][1][id2][2] : [];
      for (j = 0; j < metro1.length; j++) metroBuferObj[metro1[j]] = 1;
      for (j = 0; j < metro2.length; j++) metroBuferObj[metro2[j]] = 1;
    } else {
      chcb = gebi("loc" + id); 
      if (!chcb.checked) continue;
      for (j in allRegions[id][1]) {
        chcb2 = gebi("loc" + id + "_" + j); 
        if (!chcb2.checked) continue;
        metro1 = allRegions[id][1][j][1];
        metro2 = distantFlag ? allRegions[id][1][j][2] : [];
        for (j = 0; j < metro1.length; j++) metroBuferObj[metro1[j]] = 1;
        for (j = 0; j < metro2.length; j++) metroBuferObj[metro2[j]] = 1;
      }
    }
  }
  for (i in metroBuferObj) {
    out.push(i);
  }
  opener.setMetroCheckboxes(out);
  window.close();
  //alert(out);
  //return out;
}
// Обработка клика по округу
function clickOkrug(chcb) {
  var id = chcb.id.substring(3, chcb.id.length);
  for (var i in allRegions[id][1]) gebi("loc" + id + "_" + i).checked = chcb.checked;
  checkOkrugState();
}
// Обработка клика по району
function clickRayon(chcb) {
  checkOkrugState();
}
