function show_doko_ad_center() {
    var point = g_map.getCenter();
    if (point) {
        showDokoAd(degree2millisec(point.lng()), degree2millisec(point.lat()));
    }
}

function show_doko_ad_overlay(overlay, point) {
    if (point) {
        showDokoAd(degree2millisec(point.lng()), degree2millisec(point.lat()));
    }
}

function dokoad_init() {

  if (g_map) {
    GEvent.addListener(g_map, "dragend", show_doko_ad_center);
    GEvent.addListener(g_map, 'click', show_doko_ad_overlay);
  }

}

function degree2millisec(num) {
    eh  = parseInt(num);
    em  = parseInt((num - eh) * 60);
    es  = (num - eh - (em / 60)) * 3600;
    ess = (Math.round(es * 10) / 10);
    return eh * 3600000 + em * 60000 + ess * 1000;
}

function showDokoAd(x, y) {
    var DokoAdAreas = $('dokoadarea1', 'dokoadarea2', 'dokoadarea3', 'dokoadarea4');
    var DefAds = $('def_ad1', 'def_ad2');
    if (!DokoAdAreas[0] || !DokoAdAreas[1] || 
        !DokoAdAreas[2] || !DokoAdAreas[3] ||
        !DefAds[0] || !DefAds[1]) {
        return;
    }
    var num_adarea = DokoAdAreas.length;
    var num_defads = DefAds.length;
    var prm = 'user_agent=' + encodeURIComponent(navigator.userAgent) + 
        '&pos_x=' + encodeURIComponent(x.toString()) +
        '&pos_y=' + encodeURIComponent(y.toString());
    var req = new Ajax.Request(
      '../cmn/cgi/odekake_dokoad.py/getad',
      {
          method: 'get',
          parameters: prm,
          onSuccess: function(orig) {
              var xmlDoc = orig.responseXML;
              if (!xmlDoc.documentElement) {
                  return;
              }
              var htmls = get_suitable_ad(xmlDoc);
              if (htmls.length) {
                  for (i = 0; i < num_defads; i++) {
                      DefAds[i].style.display = 'none';
                  }
                  for (i = 0; i < num_adarea; i++) {
                      _h = htmls.shift();
                      if (_h) {
                          DokoAdAreas[i].innerHTML = _h;
                          DokoAdAreas[i].style.display = 'block';
                      } else {
                          DokoAdAreas[i].style.display = 'none';
                          DokoAdAreas[i].innerHTML = '';
                      }
                  }
              } else {
                  for (i = 0; i < num_adarea; i++) {
                      DokoAdAreas[i].style.display = 'none';
                      DokoAdAreas[i].innerHTML = '';
                  }
                  for (i = 0; i < num_defads; i++) {
                      DefAds[i].style.display = 'block';
                  }
              }
          },
          onFailuer: function(orig) {
              // debug
              // alert("error");
              // alert(orig.responseXML);
              // alert(orig.responseText);
          }
      }
    );
}

function get_suitable_ad(adxml) {
    adhtml = make_dokoad(adxml);
    if (!adhtml) {
        return get_default_ad();
    } else {
        return adhtml;
    }
}

function make_dokoad(adxml) {
    var ads = adxml.getElementsByTagName('ad');
    if (!ads) {
        return [];
    }
    var ads_num = ads.length;
    
    var ad_html = [];
    var max_unit_size = 4;
    var sum_unit_size = 0;
    var remining_unit_size = 0;

    for (i = 0; i < ads_num; i++) {
        remining_unit_size = max_unit_size - sum_unit_size;
        var ad_unit = 1;
        var ad_type = ads[i].getAttribute("adType");
        if ( ad_type == 'd') {
            ad_unit = 2;
        } else if (ad_type == 'k' || ad_type == 'a') {
            // ad_unit = 1;
            continue;
        } else {
            continue;
        }
        if (remining_unit_size >= ad_unit) {
            ad_html.push(to_ad_html(ads[i]));
            sum_unit_size += ad_unit;
        }
        if (sum_unit_size >= max_unit_size) {
            break;
        }
    }

    return ad_html;
}

function get_default_ad() {
    return [];
}

function to_ad_html(adtag) {
    var adType = adtag.getAttribute("adType") || '';
    var adImg = adtag.getAttribute("picUrl") || '';
    var adUrl = adtag.getAttribute("adUrl") || '';
    var adText1 = adtag.getAttribute("adText1") || '';
    var adText2 = adtag.getAttribute("adText2") || '';
    var adTitle = adtag.getAttribute("adTitle") || '';

    adType = adType.escapeHTML();
    adImg = adImg.escapeHTML();
    adUrl = adUrl.escapeHTML();
    adText1 = adText1.escapeHTML();
    adText2 = adText2.escapeHTML();
    adTitle = adTitle.escapeHTML();

    if (adType == 'd') {
        return '\
<div class="da_dx_div">\
<a href="' + adUrl + '" target="_blank">\
<img class="da_dx_img" src="' + adImg + '" alt="' + adTitle + '" /></a>\
<div class="da_text_outer">\
<div class="da_title"><a href="' + adUrl + '" target="_blank">' +  adTitle + '</a></div>\
<div class="da_text">' + adText1 + '</div>\
<div class="da_text">' + adText2 + '</div>\
</div>';
   } else if (adType == 'k' || adType == 'a') {
        return '\
<div class="da_nodx_div">\
<div class="da_text_outer">\
<div class="da_title_s"><a href="' + adUrl + '" target="_blank">' +  adTitle + '</a></div>\
<div class="da_text_s">' + adText1 + '</div>\
<div class="da_text_s">' + adText2 + '</div>\
</div>\
</div>';
    } else {
        return '';
    }
}

