function alt_map_dropdown(e)
{
  var ct = e.currentTarget ? e.currentTarget : e.srcElement;
  //var rn = row_num_by_row_elem(ct);
  var ct_rec = row_rec_by_row_elem(ct);
  if (ct_rec != alt_map_dropdown.row_rec)
  {
    var jrec = $(ct_rec);
    //var ctid = $('#row_' + rn + ' .ctid').text();
    var ctid = jrec.find('.ctid').text();
    dd_clear(e);
    alt_map_dropdown.row_rec = ct_rec;
    var ico = $(ct);
    ico.find('img').css('border-color', 'gray');
    var ico_off = ico.offset();
    var alt_map_top = (ico_off.top + ico.height());
    //var alt_map_right = ($(document.body).width() - ico_off.left - ico.width());
    var alt_map_left = ico_off.left;
  
    var t = '<table id="alt_map_dd" class="rec_dd" style="top: ' + alt_map_top + 'px; left: ' + alt_map_left  + 'px;">';
    t += '<tbody>';
    var m = alt_map_choose.maps;
    for (var i=0; i<m.length; ++i)
    {
      t += '<tr><td';
      if (m[i] !== 'reportall_usa_map')
      {
        t += ' onclick="alt_map_choose(\'' + m[i] + '\'); alt_map_zoom_to(); dd_clear();"';
      }
      if (alt_map_choose.cur_map === m[i])
      {
        t += ' style="font-weight: bold"';
      }
      t += '>';
      if (m[i] === 'reportall_usa_map')
      {
	/*
	var mapName = $('.mapName').text();
	var layerName = $('.layerName').text();
	var href = '/map?mapName=' + mapName + '&layerName=' + layerName;
	var is_parid_uniq = 't'; //$('#row_' + rn + ' .is_parid_uniq').text();
	if (is_parid_uniq === 't' || is_parid_uniq === '1')
	{
	  var county_id = $('#row_' + rn + ' .county_id').text();
	  var parcel_id = $('#row_' + rn + ' .parcel_id :visible').text();
	  href += '&county_id=' + county_id + '&parcel_id=' + parcel_id;
	}
	else
	{
	  href += '&ctid=' + ctid;
	}
	var ml_elem = $('#row_' + rn + ' a.rausa_map_link');
	if (ml_elem.length > 0)
	{
	  href = ml_elem.attr('href');
	}
        t += '<a href="' + href + '">';
	*/
	//var ml_elem = $('#row_' + rn + ' a.rausa_map_link');
	var ml_elem = jrec.find('a.rausa_map_link');
	if (ml_elem.length > 0)
	{
	  t += '<a href="' + ml_elem.attr('href') + '" style="display: block;">';
	}
	
      }
      t += '<img src="http://reportallusa.com/images/alt_maps/16/';
      t += m[i]; //.replace(/ /g,'_').toLowerCase();
      t += '.png" width="16" height="16"/>';
      t += alt_map_choose.map_labels[i]; //m[i];
      if (m[i] === 'reportall_usa_map')
      {
        t += '</a>';
      }
      t += '</td></tr>';
    }
    t += '</tbody></table>';
    var t_elem = $(t);
    //t_elem.css('display','none');
    $(document.body).append(t_elem);
    if (parseInt(t_elem.css('right')) + t_elem.outerWidth() > $(document.body).width())
    {
      t_elem.css('right', ($(document.body).width() - t_elem.outerWidth()) + 'px');
    }
    if ($(document.body).width() - parseInt(t_elem.css('right')) < t_elem.outerWidth())
    {
      t_elem.css('right', t_elem.outerWidth() + 'px');
    }
    /*
    if (t_elem.position().top + t_elem.outerHeight() > $('#leftPanel').offset().top + $('#leftPanel').innerHeight())
    {
      t_elem.css('top', (ico_off.top - t_elem.outerHeight()) + 'px');
    }
    */
    t_elem.bind("mouseleave",dd_clear);
    //t_elem.css('display','');
    
    // when one is clicked, change zoomIcons to the chosen map
  }
}
alt_map_dropdown.row_rec = null;

// <span style="color: red">3</span><span style="color: blue">D</span>
// 360&deg; Oblique view

alt_map_choose.maps = [ 'reportall_usa_map', 'google_maps', 'google_earth', 'bing_maps', 'yahoo_maps', 'mapquest', 'zillow' ];
alt_map_choose.map_labels = [ 'Real Estate Portal USA', 'Google Maps (w/ StreetView)', 'Google Earth', 'Bing Maps (w/ Bird\'s Eye view)', 'Yahoo Maps', 'MapQuest', 'Zillow' ];

alt_map_choose.cur_map = alt_map_choose.maps[0];

function dd_mouseout(e)
{
  var t= e.target ? e.target : e.srcElement;
  var b_xy = $(t).offset();
  var b_x = b_xy.left;
  var b_y = b_xy.top;
  if (e.pageX < b_x || e.pageX > b_x + parseInt(t.width))
  {
    dd_clear(e);
  } else if (e.pageY < b_y + parseInt(t.height)) {
    dd_clear(e);
  }
}

function alt_map_choose(alt_map)
{
  alt_map_choose.cur_map = alt_map;
  /*
  var zi = $('.zoomIcon');
  var alt_map_le = alt_map.replace(/ /g,'_').toLowerCase();
  zi.attr('src','images/alt_maps/16/' + alt_map_le + '.png');
  */
}

function alt_map_zoom_to()
{
  //var dd_row_elem = document.getElementById('row_' + alt_map_dropdown.row_num);
  zoomTo(alt_map_dropdown.row_rec);
}

function dl_dropdown(e)
{
  var ct = e.currentTarget ? e.currentTarget : e.srcElement;
  //var rn = row_num_by_row_elem(ct);
  var ct_rec = row_rec_by_row_elem(ct);
  if (ct_rec != dl_dropdown.row_rec)
  {
    dd_clear(e);
    dl_dropdown.row_rec = ct_rec;
    var ico = $(ct);
    ico.find('img').css('border-color','gray');
    var ico_off = ico.offset();
    var dd_top = ico_off.top + ico.height();
    //var dd_right = ($(document.body).width() - ico_off.left - ico.width());
    var dd_left = ico_off.left;

    var t = '<table id="dl_dd" class="rec_dd" style="top: ' + dd_top + 'px; left: ' + dd_left + 'px;"><tbody>';

    var jrec = $(ct_rec);

    //var cl = $('#row_' + rn + ' .county_links').text();
    var cl = jrec.find('.county_links').text();
    var county_id = jrec.find('.county_id').text();
    var parcel_id = jrec.find('td.parcel_id :visible').text();
    var county_name_jq = jrec.find('.county_name');
    var county_name = null;
    if (county_name_jq.length != 0)
    {
      county_name = county_name_jq.text();
    }
    else
    {
      county_name = 'County'; //CountyLink.cid_cname[county_id];
    }

    var cl_a = cl.split(',');
    for (var i=0; i<cl_a.length; ++i)
    {
      var c = cl_a[i];
      t += '<tr>';
      //t += '<td onclick="dl_choose(\'' + c + '\');">';
      t += '<td>';
      t += '<a href="http://reportallusa.com/cama_redir?county_id=' + county_id + '&parcel_id=' + parcel_id;
      if (c !== 'auditor')
      {
        t += '&link_dest=' + c;
      }
      t += '" target="_blank">';
      t += '<img src="http://reportallusa.com/images/data_link/' + c + '.gif" alt="' + c + '" />';
      t += county_name + ' ';
      if (c.length)
      {
        c = c.charAt(0).toUpperCase() + c.substring(1);
      }
      t += c;
      t += '</a>';
      t += '</td></tr>';
    }

    // extra items
    t += '<tr>';
    //t += '<td onclick="search_comparables(' + rn + ')">';
    /*
    var county_id = $('#row_' + rn + ' .county_id').text();
    var parcel_id = $('#row_' + rn + ' .parcel_id :visible').text();
    var is_parid_uniq = ($('#row_' + rn + ' .is_parid_uniq').text() === 't');
    var valid_bldg_sqft = ($('#row_' + rn + ' .bldg_sqft').text() > 0.0);
    */
    var parcel_id = jrec.find('.parcel_id :visible').text();
    var is_parid_uniq = (jrec.find('.is_parid_uniq').text() === 't');
    //var valid_bldg_sqft = (jrec.find('.bldg_sqft').text() > 0.0);
    //var comp_ok = (valid_bldg_sqft && is_parid_uniq);
    var comp_ok = is_parid_uniq;
    t += '<td';
    if (!comp_ok)
    {
      t += " style='color: gray'";
      t += " onclick='alert(\"Cannot run comparables search for parcel with invalid square feet, or non-unique parcel id.\")'";
    }
    else
    {
      var c_url = 'http://comparables.reportallusa.com/?county_id=' + county_id + '&parcel_id=' + parcel_id + '&db_host=dco';
      t += " onclick='window.open(\"" + c_url + "\")'";
    }
    t += '>';
    /*
    if (comp_ok)
    {
      t += '<a href=">';
    }
    */
    t += '<img style="cursor: pointer;" src="http://reportallusa.com/images/comparables.png" width="22" height="22" alt="Comparables" title="Search for Comparable properties" />';
    if (comp_ok)
    {
      //t += '</a>';
    }
    t += 'Comparable properties';
    t += '</td></tr>';

    var ctid = jrec.find('.ctid').text();
    t += "<tr><td onclick='";
    if (comp_ok)
    {
      t += "window.open(\"http://taxanalyzer.reportallusa.com/ta.php?county_id=" + county_id + "&parcel_id=" + parcel_id + "\")";
    }
    else if (!is_parid_uniq)
    {
      t += "alert(\"Error: Cannot run tax analysis on a property with a non-unique parcel number.\");";
    }
    /*
    else if (!valid_bldg_sqft)
    {
      t += "alert(\"Error: Cannot run tax analysis on a property with unknown building square foot value\");";
    }
    */
    t += "'";
    /*
    if (!valid_bldg_sqft)
    {
      t += " style='color: gray'";
    }
    */
    t += "><img src='http://reportallusa.com/images/tax_analyzer";
    /*
    if (!valid_bldg_sqft)
    {
      t += "_disabled";
    }
    */
    t += ".png' width='31' height='34' alt='Tax Analyzer' />Am I paying too much Real Estate Tax?</td></tr>";

    var address_jq = jrec.find('.addr_number'); // actually contains whole address
    var address = null;
    if (address_jq.length > 0)
    {
      var atxt = $(address_jq[0]).text().replace(/^\s+|\s+$/g,"");
      if (atxt.length > 0)
      {
	if (atxt.match(/^[0-9]/)) // only do realtor.com lookup if address begins with a number
	{
          var state_abbr = jrec.find('.state_abbr').text();
          address = atxt + ', ' + county_name + ' County, ' + state_abbr;
	}
      }
    }
    if (address !== null)
    {
      t += '<tr><td><span style="display: none" class="realtor_dot_com_addr">' + address + '</span><span class="realtor_dot_com_chk">';
      if (typeof(dl_dropdown.r_listings[address]) === "undefined")
      {
        t += '<img src="http://reportallusa.com/images/spinner.gif" width="16" height="16" alt="spinner"/> Checking for realtor.com listing...</span>';
      }
      else
      {
	var data = dl_dropdown.r_listings[address];
        t += dl_dropdown_listing_html(data);
      }
      t += '</td></tr>';
    }

    t += '</tbody></table>';
    var t_elem = $(t);
    //t_elem.css('display','none');
    $(document.body).append(t_elem);
    if (parseInt(t_elem.css('right')) + t_elem.outerWidth() > $(document.body).width())
    {
      t_elem.css('right', ($(document.body).width() - t_elem.outerWidth()) + 'px');
    }
    if ($(document.body).width() - parseInt(t_elem.css('right')) < t_elem.outerWidth())
    {
      t_elem.css('right', t_elem.outerWidth() + 'px');
    }
    // TODO: insert realignment code like in alt_map_dropdown
    t_elem.bind("mouseleave",dd_clear);
    //t_elem.css('display','');

    if (address !== null)
    {
      if (typeof(dl_dropdown.r_listings[address]) === "undefined")
      {
        if (!dl_dropdown.r_searches[address])
        {
          dl_dropdown.r_searches[address] = 1;
          $.getJSON("http://reportallusa.com/json/realtor_dot_com_listing.php?address=" + address, function(data, textStatus) {
            dl_dropdown.r_listings[data.query_address] = data;
  
            var rt_html = dl_dropdown_listing_html(data);
            $('.realtor_dot_com_chk').html(rt_html);
          });
        }
      }
      else
      {
        var data = dl_dropdown.r_listings[data.query_address];
        var rt_html = dl_dropdown_listing_html(data);
        $('.realtor_dot_com_chk').html(rt_html);
      }
    }

  }
}
//dl_dropdown.row_num = null;
dl_dropdown.row_rec = null;
dl_dropdown.r_listings = ({});
dl_dropdown.r_searches = ({});

function dl_dropdown_listing_html(data)
{
  var rt_html;
  if (typeof(data.error) !== "undefined")
  {
    rt_html = '<span style="color: red">Error: ' + data.error + '</span>';
  }
  else if ((typeof(data.listing_url_exists) !== "undefined") && data.listing_url_exists)
  {
    rt_html = '<a href="' + data.listing_url + '" target="_blank"><img src="http://reportallusa.com/images/realtor_dot_com.gif" width="16" height="16" alt="realtor.com" /> realtor.com listing</a>';
  }
  else
  {
    rt_html = '<span style="color: gray"><img src="http://reportallusa.com/images/realtor_dot_com_gray.gif" width="16" height="16" alt="realtor.com" /> No realtor.com listing</span>';
  }
  //var rtdcc = $('.realtor_dot_com_chk:contains("Checking ")');
  //if (rtdcc.siblings('.realtor_dot_com_addr').text() === data.query_address)
  //{
    //rtdcc.html(rt_html);
  //}
  return rt_html;
}

function dl_choose(link_dest)
{
  //var row = $('#row_' + dl_dropdown.row_num);
  var row = $(dl_dropdown.row_rec);
  var county_id = row.find('.county_id').text();
  var parcel_id = row.find('.parcel_id :visible').text();
  CountyLink.follow_link(county_id, parcel_id, link_dest);
}

function dd_clear(e)
{
  //$('#row_' + alt_map_dropdown.row_num + ' .map_dd_chooser').css('border-color','transparent');
  var am_row = $(alt_map_dropdown.row_rec);
  $(am_row).find('.map_dd_chooser').css('border-color','transparent');
  alt_map_dropdown.row_rec = null;
  $('#alt_map_dd').remove();

  var dd_row = $(dl_dropdown.row_rec);
  //$('#row_' + dl_dropdown.row_num + ' .map_dd_chooser').css('border-color','transparent');
  $(dd_row).find('.map_dd_chooser').css('border-color','transparent');
  dl_dropdown.row_rec = null;
  $('#dl_dd').remove();
}

function row_num_by_row_elem(re)
{
  while (re && re.nodeName.toLowerCase() != 'tr' && re.nodeName.toLowerCase() != 'table')
  {
    re= re.parentNode;
  }

  var row_id;
  var rid_m;
  if (re && re.id && (rid_m = re.id.match(/^row_(\d+)$/)))
  {
    row_id = rid_m[1];
  }
  else
  {
    // vertical
    while (re && re.nodeName.toLowerCase() != 'table')
    {
      re = re.parentNode;
    }
    if (re && re.id && (rid_m = re.id.match(/^row_(\d+)$/)))
    {
      row_id = rid_m[1];
    }
  }

  return row_id;
}

function row_rec_by_row_elem(ct)
{
  var ct_rec = ct;
  while (ct_rec && ct_rec.nodeName.toLowerCase() != 'tr')
  {
    ct_rec = ct_rec.parentNode;
  }
  if ($(ct_rec).find('.county_id').length == 0)
  {
    // must be a vertical table; get parent table node
    while (ct_rec && ct_rec.nodeName.toLowerCase() != 'table')
    {
      ct_rec = ct_rec.parentNode;
    }
  }
  return ct_rec;
}

