// used to be query_tools.js

function enableInfo() {
  xAddEventListener('action', 'mousedown', showInfo, false);
}

function disableInfo() {
  xRemoveEventListener('action', 'mousedown', showInfo, false);
}

function showInfo(e) {
  var ev = new xEvent(e);
  xPreventDefault(e);
  var qs = 'ini=' + mf.ini.value + '&extent=' + escape(mf.extent.value) + '&x=' + ev.offsetX + '&y=' + ev.offsetY;
  if (mf.msize) qs += '&msize=' + escape(mf.msize.value);
  if (mf.filters) qs += '&filters=' + escape(mf.filters.value);
  showDiv(load, true);
  var xhr = new xHttpRequest();
  if (!xhr.send('POST', info_lib, qs, xhrTo, false, false, null, onInfoResponse)) gotoError();
  xhr = null;
}

function onInfoResponse(req, status, obj) {
  showDiv(load, false);
  if (status == 0) {
    var json = JSON.parse(req.responseText);
    if (json.ok) {
      var str = "";
      if (json.preamble) str += json.preamble + '<br><br>';
      if (json.proj_x)
        str += "<span class='qAttName'>Map coordinates:</span> <span class='qAttValue'>" + json.proj_x + ', ' + json.proj_y +
          '</span><br>';
      if (json.geo_x)
        str += "<span class='qAttName'>Long/Lat:</span> <span class='qAttValue'>" + json.geo_x + ', ' + json.geo_y + '</span><br>';
      var i, j, layerInfo, attName;
      for (i in json.layers) {
        layerInfo = json.layers[i];
        if (layerInfo.atts)
          for (attName in layerInfo.atts)
            str += "<span class='qAttName'>" + attName + ":</span> <span class='qAttValue'>" + layerInfo.atts[attName] + '</span><br>';
        if (layerInfo.photos)
          for (j in layerInfo.photos)
            str += "<div class='qPhotoTitle'>" + layerInfo.photos[j][0] +
              " <a onclick='togglePhoto(this)'>(hide/show)</a><div class='qPhoto'><img src='" + layerInfo.photos[j][1] +
              "'></div></div>";
        if (layerInfo.html) str += layerInfo.html;
      }
      if (infoPop) {
        if (checkPopup('ptinfo')) addPopupHtml('ptinfo', 'inforesults', str, '<hr>');
        else if (checkFenster('xfptinfo')) addFensterHtml('xfptinfo', 'inforesults', str, '<hr>');
        else {
          str = '<div id="infoclear"><a href="javascript:clearInfo()">Clear results</a></div><div id="inforesults">' + str + '</div>';
          makeFenster('xfptinfo', 'ptinfo', null, str, null, 'Info Results', infoLeft, infoTop, infoWidth, infoHeight);
        }
      } else {
        var oHtml = xInnerHtml(infoDiv);
        if (infoClear || (oHtml == '')) xInnerHtml(infoDiv, str);
        else xInnerHtml(infoDiv, str + '<hr>' + oHtml);
        showDiv(infoDiv, true);
      }
    } else alert(json.err);
  } else gotoError();
}

function togglePhoto(el) {
  xGetElementsByClassName('qPhoto', xParent(el, true), null,
    function(el) { el.style.display = (el.style.display == 'none') ? 'block' : 'none'; } );
}

function clearInfo() {
  xInnerHtml('inforesults', '');
}