
function getAbsoluteTop(o)
{
  var absTop = 0;
  var body = document.getElementsByTagName("body")[0];
  for (; o && o != body; o = o.offsetParent) {
    absTop += o.offsetTop
  }
  return absTop;
}

/* if top is below the sort bar, position the div at the sort bar.
   otherwise, */
var controlRightsidePosition = true;

function getScrollY() {
  var scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
  }
  return scrOfY;
}

function scrollHandler() {
  if (!controlRightsidePosition) return;

  var top = getScrollY();
  var rightSide = document.getElementById('rightSide');
  var sortHeader = document.getElementById('sortHeader');

  var sortTop = getAbsoluteTop(sortHeader);
  if (top < sortTop) {
     rightSide.style.top = sortTop + 'px';
     rightSide.style.position = 'absolute';
  }
  else {
     rightSide.style.top = 0 + 'px';
     rightSide.style.position = 'fixed';
  }
}

function resizeHandler() {
  largeMap.checkResize();
}

var largeMap;
var smallMap;

function setupMaps() {
  if (jq("#maploader").length == 0) {
    // no maps
    return;
  }

  jq(window).resize(resizeHandler);

  largeMap = new frames.maploader.GMap2(document.getElementById("largeMap"));
  largeMap.addControl(new frames.maploader.GSmallMapControl());
  addMapPoints(largeMap);

  smallMap = new frames.maploader.GMap2(document.getElementById("smallMap"));
  smallMap.addControl(new frames.maploader.GSmallMapControl());
  addMapPoints(smallMap);
}

function clearMaps() {
  if (jq("#maploader").length == 0) {
    // no maps
    return;
  }

  try {
    frames.maploader.GUnload();
  } catch (ignored) {}
}

function toggleBigMap() {
  var largeMapHolder = document.getElementById("largeMapHolder");
  var topShowBigMap = document.getElementById("topShowBigMap");
  var toggleMapIcon = document.getElementById("toggleMapIcon");

  if (!largeMapHolder.style.display || largeMapHolder.style.display == 'none') {
    // make visible
    largeMapHolder.style.display = 'block';
    largeMap.checkResize();
    largeMap.setCenter(smallMap.getCenter(), smallMap.getZoom());
    topShowBigMap.innerHTML = 'Hide Big Map';
    toggleMapIcon.src = '/images/a-map-expand-icon2.gif';

  }
  else {
    // make invisible
    largeMapHolder.style.display = 'none';
    topShowBigMap.innerHTML = 'Show Big Map';
    toggleMapIcon.src = '/images/a-map-expand-icon.gif';
  }

  scrollHandler();
}


function getRightSidePosition() {

    var sortHeader = document.getElementById('sortHeader');
    if (sortHeader) {
      var sortTop = getAbsoluteTop(sortHeader);
      var scrollTop = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;

      if (scrollTop > sortTop) {
        return scrollTop;
      }
      else {
        return sortTop;
      }
    }
    else {
      var rightSide = document.getElementById('rightSide');
      return rightSide.style.top;
    }
}

  var mapIcon = null;
  function getIcon(n) {
    if (!mapIcon) {
      var icon = new frames.maploader.GIcon();
      icon.image = "/images/mapicons/iconr1.png";
      icon.shadow = "/images/mapicons/iconshadow.png";
      icon.iconSize = new frames.maploader.GSize(20, 34);
      icon.shadowSize = new frames.maploader.GSize(37, 34);
      icon.iconAnchor = new frames.maploader.GPoint(9, 34);
      icon.infoWindowAnchor = new frames.maploader.GPoint(9, 2);
      icon.infoShadowAnchor = new frames.maploader.GPoint(18, 25);
      mapIcon = icon;
    }

    var icon = new frames.maploader.GIcon(mapIcon);
    icon.image = "/images/mapicons/iconr" + n + ".png";

    return icon;
  }

  function getBlueIcon() {
    var icon = getIcon(1);
    icon.image = "/images/mapicons/iconb-point.png";
    return icon;
  }

  function makeLatLng(lat, lon) {
      return new frames.maploader.GLatLng(lat, lon);
  }

  function addLatLon(map, bounds, lat, lon, num) {
      var latLng = makeLatLng(lat, lon);
      var icon = getIcon(num);

      var marker = new frames.maploader.GMarker(latLng, icon);

      bounds.extend(latLng);
      map.addOverlay(marker);
      return latLng;
  }

  function addCityCenterPoint(map, bounds, lat, lon) {
      var latLng = makeLatLng(lat, lon);
      var icon = getBlueIcon();

      var marker = new frames.maploader.GMarker(latLng, icon);

      bounds.extend(latLng);
      map.addOverlay(marker);
      return latLng;
  }

function flashBorder() {
    var smallMapDiv = document.getElementById("smallMap");
    smallMapDiv.style.borderColor = '#ff7733';

}

function resetBorder() {
    var smallMapDiv = document.getElementById("smallMap");
    smallMapDiv.style.borderColor = '#999';
}

function centerMaps(lat, lon) {
    var pt = makeLatLng(lat, lon);
    largeMap.panTo(pt);
    smallMap.panTo(pt);

    flashBorder();
    window.setTimeout(resetBorder, 750);
}

function getRates(hid) {
    var smallForm = document.getElementById('smallSearchUI');
    smallForm.hid.value = hid;

    document.getElementById('getratesMessage').innerHTML = "selected hotel.";
   // document.getElementById('bigSearchBox').scrollIntoView();
}

var datePicker;
jq = jQuery.noConflict();

function setupCityHotels() {
  jq(window).scroll(scrollHandler);

  setupMaps();

  scrollHandler();

  // init calendar(s)
   function calParams(prefix, initialDate) {
     return {
      calid      : prefix + "calpop",
      input_id   : prefix + "_date",
      icon_id    : prefix + "_date_calicon",
      dow_id     : prefix + "_date_domlabel",
      initial_date : initialDate
     }
   }

  datePicker = new R9DoubleDatePicker(calParams("checkin", ""), calParams("checkout", ""));

  jq(document.body).unload(clearMaps);
}
