var region_data = {
  id_div: "map_country_div",
  id_list: "region_list",
  id_list_shadow: "region_shadow",
  id_map: "mapcountry",
  id_map_info: "mapcountry_info",
  id_map_info_total_adv: "region_total_adv",
  id_map_region: "mapcountry_region",
  id_map_text: "mapcountry_text",
  id_map_region_img: "mapregion"
}

/**
 * Показывает список регионов в блоке таргетинга.
 */
function listRegion(data) {
  if (js_load) {
    if (isIE6) {
      hiddenSelects();
    }
    hiddenObjects();
    var fg = foreground('black');
    fg.id = "fg";
    fg.style.zIndex = '100';
    var dOp = 10;
    var beginOp = 1;
    var finishOp = 50;
    var interTime = 1;
    var t = 'targetWindow';
    var funcArr = {
      name: '_setHandlerListRegion',
      id_div: data.id_div,
      id_map_info: data.id_map_info,
      id_map_region: data.id_map_region
    };
    opacityVisible(fg, dOp, beginOp, finishOp, interTime, t, funcArr);
  }
}

/**
 * Установка обработчика на закрытие окна при щелчке по свободной области.
 */
function _setHandlerListRegion(data) {
  var id_map_region = gebi(data.id_map_region);
  var map_div = gebi(data.id_div);
  map_div.style.zIndex = '101';
  map_div.style.display = 'block';
  //id_map_region.style.display = 'block';
  gebi('fg').onclick = function(){closeListRegion(data)};
}

/**
 * Начинает скрытие списка регионов в блоке таргетинга.
 */
function closeListRegion(data) {
  var id_map_region = gebi(data.id_map_region);
  var info = gebi(data.id_map_info);
  setOpacity(info, 0);
  var map_div = gebi(data.id_div);
  map_div.style.display = 'none';
  //id_map_region.style.display = 'none';
  var fg = gebi("fg");
  var dOp = -10;
  var beginOp = 50;
  var finishOp = 0;
  var interTime = 1;
  var t = 'targetWindow';
  var funcArr = {
    name: '_closeListRegion',
    id_div: data.id_div
  };
  opacityVisible(fg, dOp, beginOp, finishOp, interTime, t, funcArr);
}

/**
 * Скрывает список регионов в блоке таргетинга.
 */
function _closeListRegion(data) {
  if (isIE6) {
    visibleSelects();
  }
  visibleObjects();
  if (gebi("fg")) {
    gebi('fg').onclick = null;  
    rn(gebi("fg"));
  }
}

/**
 * Привязывает элемент к элементу el.
 * data:
 * el - элемент, который надо привязать;
 * left - левая позиция привязки к элементу;
 * top - верхняя.
 */
function bindTo(el, data) {
  var el_base = data.elem;
  var left = data.left;
  var top = data.top;
  var pos = offsetPosition(el_base);
  var base_left = pos[0];
  var base_top = pos[1];
  setLeft(el, base_left + left);
  setTop(el, base_top + top);
}

function regionMapShow(event, region_id, data, visib) {
  var evt = event ? event : (event ? window.event : null);
  var dOp = isIE ? 20 : 10;
  var beginOp = 1;
  var interTime = 1;
  if (event) {
    if (visib != "visible" && gebi(data.id_list + region_id)) {
      var region_list = gebi(data.id_list + region_id);
      _setGradImgListRegion(region_list, 'active');
      region_list.style.backgroundColor = "#B6DAFF";
    }
    var info = gebi(data.id_map_info);
    regionInfo(event, region_id, data);
    info.style.visibility = "visible";
    var region = evt.target ? evt.target : (evt.srcElement ? evt.srcElement : null);
    var info_text = "<b>" + region.getAttribute("name") + "</b>" + region.getAttribute("total");
    info.innerHTML = info_text;
    var finishOp = 70;
    var t = 'infoRegionWindowShow';
    opacityVisible(info, dOp, beginOp, finishOp, interTime, t);
  }
  if (visib != "visible") {
    var region_map = gebi(data.id_map_region_img + region_id);
    region_map.style.visibility = "visible";
    var finishOp = 50;
    var t = 'RegionMapShow' + region_id;
    opacityVisible(region_map, dOp, beginOp, finishOp, interTime, t);
  }
}

function regionInfo(event, region_id, data) {
  var evt = event ? event : (event ? window.event : null);
  var info = gebi(data.id_map_info);
  var coords = getCoords(evt);
  var x = coords.x + 30;
  var y = coords.y - 50;
  setLeft(info, x);
  setTop(info, y);
}

function regionMapHide(event, region_id, data, visib) {
  var evt = event ? event : (event ? window.event : null);
  if (event) {
    if (visib != "visible" && gebi(data.id_list + region_id)) {
      var region_list = gebi(data.id_list + region_id);
      _setGradImgListRegion(region_list, 'off');
      region_list.style.backgroundColor = "#EEF6FE";
    }
    var info = gebi(data.id_map_info);
    info.style.visibility = "hidden";
  }
  if (visib != "visible") {
    var region_map = gebi(data.id_map_region_img + region_id);
    var dOp = isIE? -20 : -10;
    var finishOp = 0;
    var interTime = 1;
    var beginOp = 50;
    var t = 'RegionMapHide' + region_id;
    opacityVisible(region_map, dOp, beginOp, finishOp, interTime, t);
  }
}

function mouseOverRegion(el, region_id, data) {
  _setGradImgListRegion(el, 'active');
  el.style.backgroundColor = "#B6DAFF";
  if (region_id != REGION_ALL) {
    var region_map = gebi(region_data.id_map_region_img + region_id);
    region_map.style.visibility = "visible";
    setOpacity(region_map, 50);
  }
}

function mouseOutRegion(el, region_id) {
  _setGradImgListRegion(el, 'off');
  el.style.backgroundColor = "#EEF6FE";
  if (region_id != REGION_ALL) {
    var region_map = gebi(region_data.id_map_region_img + region_id);
    region_map.style.visibility = "hidden";
    setOpacity(region_map, 0);
  }
}

function _setGradImgListRegion(in_el, in_act) {
  // Перебираем потомков tr (нам нужны элементы td).
  for (var i = 0; i < in_el.childNodes.length; i++) {
    if (in_el.childNodes[i].nodeName.toLowerCase() == 'td') {
      // Перебираем потомков в td.
      for (var j = 0; j < in_el.childNodes[i].childNodes.length; j++) {
        // Потомок td.
        var divEl = in_el.childNodes[i].childNodes[j];
        if (divEl.nodeName.toLowerCase() == 'div') {
          var count = 0;
          for (var k = 0; k < divEl.childNodes.length; k++) {
            if (divEl.childNodes[k].nodeName.toLowerCase() == 'img') {
              var imgEl = divEl.childNodes[k];
              count++;
              switch (count) {
                // Показываем или прячем первую картинку (listregion_grad1.png)
                case 1:
                  imgEl.style.visibility = in_act == 'off' ? 'visible' : 'hidden';
                  break;
                // Показываем или прячем вторую картинку (srch_grad2.png)
                case 2:
                  imgEl.style.visibility = in_act == 'active' ? 'visible' : 'hidden';                  
                  break;
              }
            }
          }
        }
      }
    }
  }
}


