if (typeof XMLHttpRequest == "undefined")
{
  XMLHttpRequest = function() {
    try { return new ActiveXObject("Msxml2.XMLHTTP.6.0") } catch(e) {}
    try { return new ActiveXObject("Msxml2.XMLHTTP.3.0") } catch(e) {}
    try { return new ActiveXObject("Msxml2.XMLHTTP") } catch(e) {}
    try { return new ActiveXObject("Microsoft.XMLHTTP") } catch(e) {}
    throw new Error( "This browser does not support XMLHttpRequest." );
  };
}

function elem(id)
{
  return document.getElementById(id);
}

function hide(id)
{
  var e = elem(id);
  if (e) e.style.display = "none";
}

function show(id, opt_display)
{
  var display = "";
  if (typeof opt_display != "undefined") display = opt_display;
  var e = elem(id);
  if (e) e.style.display = display;
}

function ajaxSubmit(dest, data)
{
  var xmlreq = new XMLHttpRequest();
  xmlreq.open("POST", dest, false);
  xmlreq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  xmlreq.send(data);
  return xmlreq;
}

function ajaxFormSubmit(form, opt_dest, opt_extras)
{
  var dest = form.action;
  if (typeof opt_dest != "undefined") dest = opt_dest;
  var vars = [];
  if (typeof opt_extras != "undefined") vars = opt_extras;
  for (var i = 0; i < form.elements.length; i++)
  {
    var e = form.elements[i];
    if (e.type != "checkbox" || e.checked == true)
    {
      vars.push(e.name + "=" + encodeURIComponent(e.value));
    }
  }
  return ajaxSubmit(dest, vars.join("&"));
}

function clearInstructions(id)
{
  var e = elem(id);
  if (e.value == "zip code")
  {
    e.value = "";
    e.maxLength = 5;
    e.style.color = "#54534A";
  }
}

function showDetails(id)
{
  elem("result" + id).className = "box boxexpanded";
  elem("result" + id + "top").className = "top topexpanded";
  elem("result" + id + "inside").className = "inside insideexpanded";
  elem("detailslink" + id).innerHTML = "<a href=\"javascript:hideDetails(" + id + ");\" class=\"collapse\">hide details</a>";
  $("#result" + id + "details").slideDown(300);
}

function hideDetails(id)
{
  elem("result" + id).className = "box";
  elem("result" + id + "top").className = "top";
  elem("result" + id + "inside").className = "inside";
  elem("detailslink" + id).innerHTML = "<a href=\"javascript:showDetails(" + id + ");\" class=\"expand\">view details</a>";
  $("#result" + id + "details").slideUp(300);
}

function showDetailsPlatinum(id)
{
  elem("detailslink" + id).innerHTML = "<a href=\"javascript:hideDetailsPlatinum(" + id + ");\" class=\"collapse\">hide details</a>";
  $("#result" + id + "details").slideDown(300);
}

function hideDetailsPlatinum(id)
{
  elem("detailslink" + id).innerHTML = "<a href=\"javascript:showDetailsPlatinum(" + id + ");\" class=\"expand\">view details</a>";
  $("#result" + id + "details").slideUp(300);
}

function showMoreFooter()
{
  hide("morefooterlink");
  show("morefooterreplace");
  $("#morefooter").slideDown(300);
}

function flipEmail(id)
{
  hide("result" + id + "emaillink");
  show("result" + id + "email");
}

function sendEmail(id)
{
  req = ajaxFormSubmit(elem("result" + id + "emailform"));
  if (req.status == 200)
  {
    hide("result" + id + "email");
    show("result" + id + "emailsent");
    if (typeof pageTracker != "undefined")
    {
      pageTracker._trackPageview("/event");
    }
  }
  return false;
}

function createMarker(point, id, link, text, clickfollow)
{
  var newIcon = new google.maps.Icon();
  newIcon.image = '/static/images/' + id + '.png';
  newIcon.iconSize = new GSize(45,30);
  newIcon.iconAnchor = new google.maps.Point(6, 20);
  newIcon.infoWindowAnchor = new google.maps.Point(10, 1);
  var marker = new google.maps.Marker(point, newIcon);
  if (clickfollow)
  {
    GEvent.addListener(marker, "click", function() { document.location.href = link; });
  }
  else
  {
    GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml('<span style="font-size:11px;font-family:arial; color:#53534A">' + text + '</span>'); });
  }
  GEvent.addListener(marker, "mouseover", function() { marker.setImage('/static/images/' + id + '_over.png'); });
  GEvent.addListener(marker, "mouseout", function() { marker.setImage('/static/images/' + id + '.png'); });
  return marker;
}

function loadMaps()
{
  google.load("maps", "2", {"callback": GetResultsMap});
}

function validateZip(form)
{
  var zipFilter = /^([0-9]{5})$/;
  if (!zipFilter.test(elem('zipcode').value)) return false;
  window.location = form.action + "?zip=" + elem('zipcode').value;
  return false;
}
