var zmap = null;
var map = null;
var amap = null;
var amks = [];
var aint = -1;
var panoc = null;
var panov = null;
var removeOverlays = null;
var toggleState = 1;
var favs = {};
var rs = null;
var lr = null;
var dtrs = null;
var pThreshold = 11;
var bThreshold = 14;
var tThreshold = 10;
var town = "";
var prev = null;
var lmarks = {};
var amarks = {};
var smarks = {};
var tmarks = {};
var fmarks = {};
var pmarks = {};
var psmarks = {};
var reomarks = {};
var dcyc = -1;
var lfilter = "";
var rwlRefreshView = null;
var ricons = {};

var getUID = function (C) {
  var D = C.re.charAt(0) + C.re.charAt(2) + C.mi;
  return D
};
function showF() {
  var B = document.getElementById("map_search");
  B.style.display = "block";
  var B = document.getElementById("map_search_frame");
  B.style.height = "auto";
  return false
}
function hideF() {
  var B = document.getElementById("map_search");
  B.style.display = "none";
  var B = document.getElementById("map_search_frame");
  B.style.height = "20px";
  return false
}
function zoomTo(E, F, D) {
  if (map.getExtInfoWindow() != null) {
    map.closeExtInfoWindow()
  }
  map.setCenter(new GLatLng(E, F), D);
  return false
}
function jumpTo() {
  var D = document.getElementById("sfrm_jump");
  var E = D.options[D.selectedIndex].value;
  if (E == "") {
    return false
  }
  var F = E.split(",");
  zoomTo(F[0], F[1], Number(F[2]));
  D.selectedIndex = 0;
  return false
}
var removeOverlays = function (C) {
  for (var D in C) {
    map.removeOverlay(C[D]);
    C[D] = null;
    delete C[D]
  }
};
function goWin() {
  var B = document.getElementById("maxwinfrm");
  B.submit();
  return true
}
function setWinLink() {
  var J = document.getElementById("maxwinfrm");
  if (!J) {
    return false
  }
  if (lfilter == "") {
    lfilter = getFilter()
  }
  for (var K in lfilter) {
    J.elements[K].value = lfilter[K]
  }
  var I = document.getElementById("school");
  var L = I.checked ? 1 : 0;
  J.elements.school.value = L;
  var G = map.getZoom();
  var H = map.getCenter();
  J.elements.clng.value = H.lng();
  J.elements.clat.value = H.lat();
  J.elements.czl.value = G;
  return false
}
function viewStreet(lt,lg) {

	var sf = document.getElementById("street_frame");
	sf.style.display = "block";

	var vpt = new GLatLng(lt,lg);
	if(panov == null) {
		panov = new GStreetviewPanorama(document.getElementById("street_viewer"), {latlng:vpt});
	} else {
		panov.show();
		panov.setLocationAndPOV(vpt, {});
	}
	
	return false;
}
function closeStreet() {
	if(panov) {
		panov.hide();
	}
	var sf = document.getElementById("street_frame");
	sf.style.display = "none";	
}

function amnSearch() {
	var frm = document.getElementById("amap_frm");

	var ecats = frm.elements["amn_cats"];
	var cpt = amap.getCenter();
	
	var cats = [];
	
	for(var p = 0; p < amks.length; p++) {
		amap.removeOverlay(amks[p]);
		amks[p] = null;
		delete amks[p];
	}
	amks = [];
	
	for(var i = 0; i < ecats.length; i++) {
		if(ecats[i].checked) {
			cats.push(ecats[i].value);
		}
	}
	
	var createAMark = function(lt, lg, desc) {
	
		var apt = new GLatLng(lt,lg);
		var mk = new GMarker(apt);
			
		var abubble = function() {
			amap.openInfoWindowHtml(apt, desc);
		};
			
		GEvent.addListener(mk, "mousedown", abubble);
		
		return mk;
		
	};

	
  var callback = function (data, rcode) {
    if (data == "") {
      return false
    }
		var resp = YAHOO.lang.JSON.parse(data)

		var ask = [];
		
		for(var k = 0; k < resp.length; k++) {
			var am = resp[k];
			
			ask.push(createAMark(am.lat, am.lng, am.html));
		}
		
		var bds = amap.getBounds();
		
		for(var i = 0; i < ask.length; i++) {
			if(bds.containsLatLng(ask[i].getLatLng())) {	
				amap.addOverlay(ask[i]);
				amks.push(ask[i]);
			}
		}
		
  };
		
  GDownloadUrl("q/__nearby.php", callback, "lt=" + cpt.lat() + "&lg=" + cpt.lng() + "&cats=" + cats.join(","));	
}

function whatsNearby(luid) {
	var ll = getInfo(luid);
	
	var af = document.getElementById("amn_frame");
	af.style.display = "block";

	if(amap == null) {	
		amap = new GMap2(document.getElementById("amap_canvas"));
		GEvent.addListener(amap, "moveend", function () {
			clearTimeout(aint);
			aint = setTimeout(function() { amnSearch() }, 5000);
		});
	}

	var apt = new GLatLng(ll.lt,ll.lg);

	amap.setCenter(apt, 14);
	
	var licon = ricons.lrg[ll.pt];
	var gpt = new GLatLng(ll.lt, ll.lg);
	var marker = new GMarker(gpt, licon);		
	
	amap.addOverlay(marker);
	
		zmap = amap;

}

function closeWhatsNearby() {
	if(panov) {
		panov.hide();
	}
	var sf = document.getElementById("amn_frame");
	sf.style.display = "none";	
	
		zmap = map;
}



function updateFilters() {
  removeOverlays(lmarks);
  removeOverlays(amarks);
  removeOverlays(smarks);
  removeOverlays(tmarks);
  removeOverlays(pmarks);
  removeOverlays(reomarks);
  removeOverlays(psmarks);
  if (map.getExtInfoWindow() != null) {
    map.closeExtInfoWindow()
  }
  lfilter = getFilter();
  setWinLink();
  rwlRefreshView()
}
var getFilter = function () {
  var L = document.getElementById("map_search_frm");
  var M = {};
  for (var O = 0; O < L.elements.length; O++) {
    var N = L.elements[O];
    var P = N.name;
    var I = N.tagName.toUpperCase();
    var J = null;
    if (I == "INPUT") {
      var K = N.type.toUpperCase();
      if (K == "CHECKBOX") {
        J = N.checked ? 1 : 0
      } else {
        if (K == "HIDDEN") {
          J = N.value
        }
      }
    } else {
      if (I == "SELECT") {
        J = N.options[N.selectedIndex].value
      }
    }
    if (J) {
      M[P] = J
    }
  }
  return M
};
var filterToQuery = function (N) {
  var U = new Array(0);
  var Z = ["min", "max"];
  var S = ["sale", "lease"];
  var R = ["detached", "semi", "town", "condo", "land"];
  var V = {};
  if (N.minp != undefined && N.minp > 0) {
    V.min = N.minp
  }
  if (N.maxp != undefined && N.maxp != "none") {
    V.max = N.maxp
  }
  var Y = new Array(0);
  if (N.sale == 1) {
    Y.push("sale")
  }
  if (N.lease == 1) {
    Y.push("lease")
  }
  var W = new Array(0);
  for (var X = 0; X < R.length; X++) {
    if (N[R[X]] != undefined && N[R[X]] == 1) {
      W.push(R[X])
    }
  }
  var T = {
    price: V,
    rooms: {
      r: N.minr,
      b: N.minb,
      k: N.mink
    },
    status: Y,
    style: W
  };
  var P = document.getElementById("school");
  var Q = P.checked ? 1 : 0;
  var O = "&sch=" + Q;
  return "filter=" + YAHOO.lang.JSON.stringify(T) + O
};
function getCDomain() {
  dcyc++;
  if (dcyc >= domains.length) {
    dcyc = 0
  }
  return domains[dcyc]
}
var lEvents = {};
var aEvents = {};
var cEvents = {};
var sEvents = {};
var reEvents = {};
var cityBarHTML = function (D) {
  var C = "";
  C += '<div class="lbar_box">';
  C += '<div class="lbar_dbo" style="left: 8px;"><strong style="font-size:15px;"><a href="#" onclick="return zoomTo(' + D.lt + "," + D.lg + ',12);">' + D.mi + '</a></strong><br /><a href="#" onclick="return zoomTo(' + D.lt + "," + D.lg + ',12);">zoom in</a></div>';
  C += "</div>";
  return C
};
var areaBarHTML = function (D) {
  var C = "";
  C += '<div class="lbar_box">';
  C += '<div class="lbar_abo"><a href="#" onclick="return zoomTo(' + D.lt + "," + D.lg + ',12);">' + D.mi + "</a></div>";
  C += '<div class="lbar_dbo">' + D.c + ' listing(s) found.<br /><a href="#" onclick="return zoomTo(' + D.lt + "," + D.lg + ',13);">zoom in</a></div>';
  C += "</div>";
  return C
};
var listingBarHTML = function (E) {
  var D = "";
  D += '<div class="lbar_box">';
  var F = "";
  if (E.re != "toronto") {
    F = E.re + "_"
  }
  if (E.st != undefined) {
    D += '<div class="lbar_pbo"><a href="#" onclick="return pinPoint(\'' + getUID(E) + '\');"><img src="http://media.realwebleads.com' + "/mlsphoto.php?mls=" + E.re + "&lid=" + E.mi + '&pic=0&mw=60&mh=60" border="0" /></a></div><div class="lbar_dbo">' + E.st + "<br />$" + E.lp + '<br /><a href="/index.php?io_' + F + "listing=" + E.mi + '" target="l_' + E.mi + '">details</a>  - <a href="#" onclick="return pinPoint(\'' + getUID(E) + '\');">show on map</a></div>'
  }
  D += "</div>";
  return D
};
var listingFavHTML = function (F) {
  var E = "";
  E += '<div class="lbar_box">';
  var H = "";
  if (F.sale == 1) {
    H = formatCurrency(F.lp)
  }
  if (F.lease == 1) {
    H = "$" + formatLCurrency(F.lp) + " (lease)"
  }
  var G = "";
  if (F.re != "toronto") {
    G = F.re + "_"
  }
  E += '<div class="lbar_pbo"><a href="#" onclick="return pinPoint(\'' + getUID(F) + '\');"><img src="http://media.realwebleads.com' + "/mlsphoto.php?mls=" + F.re + "&lid=" + F.mi + '&pic=0&mw=60&mh=60" border="0" /></a></div><div class="lbar_dbo">' + H + '<br /><a href="/index.php?io_' + G + "listing=" + F.mi + '&" target="l_' + F.ml + '">details</a> - <a href="#" onclick="return pinPoint(\'' + getUID(F) + '\');">show on map</a> - <a href="#" onclick="return removeFav(\'' + getUID(F) + "');\">remove</a></div>";
  E += "</div>";
  return E
};
var pvtId = null;
var zvtId = null;
var inpp = false;
var bq = "";
var createListingMarker = null;
function pinPoint(E) {
  var F = lEvents[E];
  var D = null;
  if (favs[E]) {
    D = favs[E]
  } else {
    D = getInfo(E)
  }
  if (!getInfo(E)) {
    pvtId = GEvent.addListener(map, "moveend", function () {
      var A = createListingMarker(D);
      map.addOverlay(A);
      fmarks[getUID(D)] = A;
      GEvent.removeListener(pvtId)
    })
  }
  if (map.getExtInfoWindow() != null) {
    map.closeExtInfoWindow()
  }
  bq = E;
  map.setCenter(new GLatLng(D.lt, D.lg), 15);
  return false
}
function getInfo(F) {
  for (var D in lr.l) {
    var E = lr.l[D];
    if (E.re && getUID(E) == F) {
      return E
    }
  }
  return false
}
function _removeFav(E) {
  var F = document.getElementById("lfav_" + E);
  if (F) {
    F.innerHTML = "";
    var D = F.parentNode;
    D.removeChild(F)
  }
  if (undefined !== fmarks[E]) {
    fmarks[E] = null;
    delete fmarks[E]
  }
}
function removeFav(lid) {
  var ll = favs[lid];
  var callback = function (data, rcode) {
    if (data == "") {
      return false
    }
    eval("favs=" + data);
    _removeFav(lid);
    if (undefined != fmarks[lid] && undefined == lmarks[lid] && undefined == smarks[lid]) {
      map.removeOverlay(fmarks[lid])
    }
  };
  GDownloadUrl("q/__synch_fav.php", callback, "remove=" + ll.mi + "&mls=" + ll.re);
  return false
}
function appendFav(G) {
  var E = document.getElementById("lfav_" + G);
  if (E) {
    return
  }
  var F = document.getElementById("map_favs");
  var H = document.createElement("div");
  H.innerHTML = listingFavHTML(favs[G]);
  H.id = "lfav_" + G;
  F.appendChild(H)
}
function addFav(lid) {
  if (favs[lid]) {
    return false
  }
  var ll = getInfo(lid);
  var callback = function (data, rcode) {
    if (data == "") {
      alert("You must login first before using this option.");
      return true
    }
    eval("favs=" + data);
    appendFav(lid)
  };
  GDownloadUrl("q/__synch_fav.php", callback, "add=" + ll.mi + "&mls=" + ll.re);
  return false
}
var cities = {};
function initialize() {
  if (GBrowserIsCompatible()) {
    cngo = new GGeoXml("http://davidpritchard.org/maps/tortransit-1.2/go.kmz");
    var sidebar = document.getElementById("map_bar");
    var mel = document.getElementById("map_canvas");
    map = new GMap2(mel);
		zmap = map;
    map.setCenter(new GLatLng(mdef.lat, mdef.lng), mdef.zl);
    map.disableContinuousZoom();
		
		panoc = new GStreetviewClient();
		
    var dragOpts = {
      buttonStartingStyle: {
        display: "block",
        width: "17px",
        textAlign: "center",
        fontFamily: "Verdana",
        fontSize: "12px",
        fontWeight: "bold",
        padding: "0px;",
        cursor: "pointer"
      },
      buttonHTML: '<img style="border: 2px solid #00c;" src="images/zoomBox.gif" />',
      buttonZoomingHTML: '<img style="border: 2px solid #c00;" src="images/zoomBox.gif" />',
      buttonZoomingStyle: {
        display: "block",
        width: "17px",
        textAlign: "center",
        fontFamily: "Verdana",
        fontSize: "12px",
        fontWeight: "bold",
        padding: "0px;",
        cursor: "pointer"
      },
      backButtonEnabled: false,
      overlayRemoveTime: 300
    };
    map.addControl(new DragZoomControl({
      border: "2px dashed #900"
    },
    dragOpts, {
      dragstart: function () {
        if (map.getExtInfoWindow() != null) {
          map.closeExtInfoWindow()
        }
      }
    }), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(4, 4)));
    map.addControl(new GOverviewMapControl(new GSize(100, 100)));
    var ldr = new GScreenOverlay("/syndicated/maps/google/images/mapload3.gif", new GScreenPoint(0.5, 0.5, "fraction", "fraction"), new GScreenPoint(-16, -32), new GScreenSize(32, 32));
    ldr.hide();
    map.addOverlay(ldr);
    var sta = document.getElementById("map_status_txt");
    var ozl = null;
    setWinLink();
    var updateList = function (lobj) {
      dupfunc()
    };
    ricons = {
      sml: {},
      lrg: {}
    };
    var icosrcs = ["detached", "semi", "town", "condo", "land", "other", "publicschool", "re_office"];
    for (var h = 0; h < icosrcs.length; h++) {
      var aic = new GIcon();
      aic.image = "/syndicated/maps/google/images/" + icosrcs[h] + "_sml.png";
      aic.shadow = "";
      aic.iconSize = new GSize(16, 16);
      aic.iconAnchor = new GPoint(8, 8);
      aic.infoWindowAnchor = new GPoint(8, 16);
      ricons.sml[icosrcs[h]] = aic;
      var bic = new GIcon();
      bic.image = "/syndicated/maps/google/images/" + icosrcs[h] + "_lrg.png";
      bic.shadow = "";
      bic.iconSize = new GSize(32, 32);
      bic.iconAnchor = new GPoint(16, 16);
      bic.infoWindowAnchor = new GPoint(16, 16);
      ricons.lrg[icosrcs[h]] = bic
    }
    var iconCity = new GIcon();
    iconCity.image = "/syndicated/maps/google/images/cityIcon.png";
    iconCity.shadow = "";
    iconCity.iconSize = new GSize(150, 40);
    iconCity.iconAnchor = new GPoint(75, 20);
    iconCity.infoWindowAnchor = new GPoint(75, 20);
    var iconArea = new GIcon();
    iconArea.image = "/syndicated/maps/google/images/areaIcon.png";
    iconArea.shadow = "";
    iconArea.iconSize = new GSize(45, 68);
    iconArea.iconAnchor = new GPoint(23, 68);
    iconArea.infoWindowAnchor = new GPoint(23, 25);
    var showStatus = function (status) {
      sta.innerHTML = status
    };
    var showRef = function () {};
    var wipedt = function () {
      if (dtrs) {
        dtrs.destroy()
      }
      YAHOO.util.Dom.removeClass("resultlist", "dtgate");
      YAHOO.util.Dom.removeClass("resultlist", "dtarea");
      dtrs = null
    };
    var curArgs = "";
    rwlRefreshView = function () {
      setWinLink();
      var bound = map.getBounds();
      var tr = bound.getNorthEast();
      var bl = bound.getSouthWest();
      var ulng = tr.lng();
      var llng = bl.lng();
      var ulat = tr.lat();
      var llat = bl.lat();
      if (isNaN(ulng)) {
        return
      }
      var zl = map.getZoom();
      var bGeoXml = null;
      var req = "__gate_json.php";
      var args = ["ulng=", ulng, "&llng=", llng, "&ulat=", ulat, "&llat=", llat, "&z=", zl];
      if (lfilter == "") {
        lfilter = getFilter()
      }
      var fargs = filterToQuery(lfilter);
      var largs = args.join("") + "&" + fargs;
      curArgs = largs;
      var inAreaMode = false;
      var inCityMode = false;
      var inTinyMode = false;
      if (ozl != zl) {
        removeOverlays(fmarks)
      }
      if (zl <= pThreshold && zl > tThreshold) {
        if (map.getExtInfoWindow() != null && ozl != zl) {
          map.closeExtInfoWindow()
        }
        removeOverlays(lmarks);
        removeOverlays(smarks);
        removeOverlays(tmarks);
        removeOverlays(pmarks);
        removeOverlays(reomarks);
        removeOverlays(psmarks);
        req = "__area_json.php";
        inAreaMode = true;
        dupfunc = dtaUpdate
      } else {
        if (zl <= tThreshold) {
          if (map.getExtInfoWindow() != null && ozl != zl) {
            map.closeExtInfoWindow()
          }
          removeOverlays(amarks);
          removeOverlays(lmarks);
          removeOverlays(smarks);
          removeOverlays(pmarks);
          removeOverlays(reomarks);
          removeOverlays(psmarks);
          req = "__city_json.php";
          dupfunc = dtcUpdate;
          inCityMode = true
        } else {
          if (zl <= bThreshold && zl > pThreshold) {
            removeOverlays(pmarks);
            removeOverlays(amarks);
            removeOverlays(lmarks);
            removeOverlays(tmarks);
            inTinyMode = true;
            dupfunc = dtUpdate
          } else {
            removeOverlays(amarks);
            removeOverlays(smarks);
            removeOverlays(psmarks);
            removeOverlays(tmarks);
            dupfunc = dtUpdate
          }
        }
      }
      ozl = zl;
      showStatus("Searching for listings in this area...one moment please");
      ldr.show();
      var createMarker = function (pt, desc, lbl, type, licon, loffset) {
        var mark = new LabeledMarker(pt, {
          labelClass: "lblm_" + type,
          icon: licon,
          labelText: lbl,
          labelOffset: loffset
        });
        return mark
      };
      var createREOMarker = function (pt, reo) {
        var icor = ricons.lrg;
        var marker = createMarker(pt, "", "", "re_office", icor.re_office, new GSize(-23, -53));
        var showBubble = function () {
          var dets = '<span class="re_lbl">Real Estate Office</span><br /><span class="re_name">' + reo.name + "</span><br />Phone:" + reo.ph + "<br />Fax:" + reo.fax + "<br />" + reo.addr + "<br />" + reo.city + ", ON&nbsp;&nbsp;" + reo.zip + '<br /><br /><a href="#" onclick="return zoomTo(' + reo.lt + "," + reo.lg + ',15);">zoom in</a> - <a href="#" onclick="map.closeExtInfoWindow();return false;">close</a>';
          marker.openExtInfoWindow(map, "af", '<div style="positive:relative;">' + dets + "</div>", {
            beakOffset: 0,
            paddingX: 8,
            paddingY: 8
          })
        };
        reEvents[reo.poi_Id] = showBubble;
        GEvent.addListener(marker, "click", showBubble);
        return marker
      };
      var createSchoolMarker = function (pt, school) {
        var icor = ricons.lrg;
        if (izl <= bThreshold) {
          icor = ricons.sml
        }
        var marker = createMarker(pt, "", "", "school", icor.publicschool, new GSize(-23, -53));
        var showBubble = function () {
          var dets = '<span class="sch_name">' + school.name + "</span><br />(" + school.scht + " School)<br />" + school.addr + "<br />" + school.city + ", ON&nbsp;&nbsp;" + school.zip + '<br /><br /><!-- <a href="http://sbinfo.edu.gov.on.ca/schdata.asp?schoolNo=' + school.sch_id + '" target="_schoolinfo">details</a> - --><a href="#" onclick="return zoomTo(' + school.lt + "," + school.lg + ',15);">zoom in</a> - <a href="#" onclick="map.closeExtInfoWindow();return false;">close</a>';
          marker.openExtInfoWindow(map, "af", '<div style="positive:relative;">' + dets + "</div>", {
            beakOffset: 0,
            paddingX: 8,
            paddingY: 8
          })
        };
        sEvents[school.sch_id] = showBubble;
        GEvent.addListener(marker, "click", showBubble);
        return marker
      };
      var createAreaMarker = function (pt, area) {
        var albl = area.mi;
        var p = albl.indexOf("(");
        if (p > 0) {
          albl = area.mi.substr(0, p);
          albl += "<br /><span>";
          albl += area.mi.substr(p + 1, area.mi.length - p - 2);
          albl += "</span>"
        }
        var marker = createMarker(pt, "", "<span>" + area.c + "</span>", "area", iconArea, new GSize(-23, -53));
        var showBubble = function () {
          var dets = '<span class="abo_name">' + albl + "</span><br />" + area.c + ' listing(s) found.</span><br /><a href="#" onclick="return zoomTo(' + area.lt + "," + area.lg + ',13);">zoom in</a> - <a href="#" onclick="map.closeExtInfoWindow();return false;">close</a>';
          marker.openExtInfoWindow(map, "af", '<div style="positive:relative;">' + dets + "</div>", {
            beakOffset: 0,
            paddingX: 8,
            paddingY: 8
          })
        };
        aEvents[area.mi] = showBubble;
        GEvent.addListener(marker, "click", showBubble);
        return marker
      };
      var createCityMarker = function (pt, city) {
        var marker = createMarker(pt, "", "<span>" + city.mi + "</span>", "city", iconCity, new GSize(-60, -17));
        var showBubble = function () {
          var dets = '<span class="cbo_name">' + city.mi + '</span><br /><span><br /><a href="#" onclick="return zoomTo(' + city.lt + "," + city.lg + ',12);">zoom in</a> - <a href="#" onclick="map.closeExtInfoWindow();return false;">close</a>';
          marker.openExtInfoWindow(map, "cf", '<div style="positive:relative;">' + dets + "</div>", {
            beakOffset: 0,
            paddingX: 8,
            paddingY: 8
          })
        };
        cEvents[city.mi] = showBubble;
        GEvent.addListener(marker, "click", showBubble);
        return marker
      };
      var izl = map.getZoom();
      createListingMarker = function (listing) {
        var icor = ricons.lrg;
        if (izl <= bThreshold) {
          icor = ricons.sml
        }
        var licon = icor[listing.pt];
				var gpt = new GLatLng(listing.lt, listing.lg);
        var marker = new GMarker(gpt, licon);
        var showBubble = function () {
          if (pvtId) {
            GEvent.removeListener(pvtId);
            pvtId = null
          }
          if (!listing.sq) {
            listing.sq = "N/A"
          }
          var zopt = "";
					if (izl < 15) {
            zopt = '<a href="#" onclick="return pinPoint(\'' + getUID(listing) + "');\">zoom in</a> - "
					}
          var lp = "";
          if (listing.sale == 1) {
            lp = formatCurrency(listing.lp)
          }
          if (listing.lease == 1) {
            lp = "$" + formatLCurrency(listing.lp) + " (lease)"
          }
          var dets = '<div style="width:200px;margin-bottom: 4px;"><span class="lp">' + lp + "</span><br />" + cities[listing.cy] + ', ON</div><div style="width:200px">';
          var bdets = "";
          if (listing.br > 0) {
            dets += '<span class="br">Bedrooms(s): ' + listing.br + "</span><br />"
          }
          if (listing.wr > 0) {
            dets += '<span class="wr">Bathroom(s): ' + listing.wr + "</span><br />"
          }
          if (listing.sq) {
            dets += '<span class="sq">Approx sqft.: ' + listing.sq + "</span><br />"
          }
          dets += "</div>";
          var mls = "";
          if (listing.re != "toronto") {
            mls = listing.re + "_"
          }
          var desc = '<div id="lb_lpic"><a href="#" onclick="return viewListing(\'' + getUID(listing) + '\');"><img border="0" src="http://media.realwebleads.com' + "/mlsphoto.php?mls=" + listing.re + "&lid=" + listing.mi + '&pic=0&mw=120&mh=86" /></a></div><div id="lb_ldet">' + dets + '</div><div id="lb_ldesc">' + listing.d + '</div><div style="width: 300px; float: left; clear: both;"><a href="/index.php?io_' + mls + "listing=" + listing.mi + '" target="l_' + getUID(listing) + '">details</a>';
          if (favs[getUID(listing)]) {} else {}
					
					var svi = 'sview_' + getUID(listing);					
					var streetv = '<span style="display:none;" id="' + svi + '"> - <a href="#" id="' + svi + '_l">street view</a></span>';
					
					var avi = 'aview_' + getUID(listing);					
					var amnv = '<span id="' + avi + '"><a href="#" onclick="return whatsNearby(\'' + getUID(listing) + '\');">what\'s nearby</a> - </span>';
					
					
					desc += " - " + zopt + amnv + '<a href="#" onclick="map.closeExtInfoWindow(); return false;">close</a>' + streetv + '</div>';
										
          marker.openExtInfoWindow(map, "lf", '<div style="positive:relative;">' + desc + "</div>", {
            beakOffset: 0,
            paddingX: 8,
            paddingY: 8
          });


					panoc.getNearestPanorama(gpt, function(presp) {
						if(presp.code == 200) {						
							var svel = document.getElementById(svi);
							if(svel) { 
								svel.style.display = "inline";
								YAHOO.util.Event.on(document.getElementById(svi + '_l'), "click", function() {
									viewStreet(presp.location.lat, presp.location.lng);
								});
							}
						}
						return;
					});
					
          if (inpp) {
            inpp = false
          }
        };
        lEvents[getUID(listing)] = showBubble;
        GEvent.addListener(marker, "mousedown", showBubble);
        return marker
      };
      var addListingMarkers = function (lobj) {
        var found = lobj.t;
        var shown = lobj.f;
        var fst = "";
        if (found != shown) {
          fst = "Not all results could be shown.  Please try to narrow your search."
        }
        ldr.hide();
        showStatus(fst);
        izl = map.getZoom();
        if (undefined !== lobj.poi) {
          for (var ptype in lobj.poi) {
            var pois = lobj.poi[ptype];
            for (var i = 0; i < pois.length; i++) {
              var poi = pois[i];
              if (ptype == "re_office") {
                var marker = createREOMarker(new GLatLng(poi.lt, poi.lg), poi);
                map.addOverlay(marker);
                reomarks[poi.poi_id] = marker
              }
              if (ptype == "schools") {
                var marker = createSchoolMarker(new GLatLng(poi.lt, poi.lg), poi);
                if (!inTinyMode && !pmarks[poi.sch_id]) {
                  map.addOverlay(marker);
                  pmarks[poi.sch_id] = marker
                } else {
                  if (inTinyMode && !psmarks[poi.sch_id]) {
                    map.addOverlay(marker);
                    psmarks[poi.sch_id] = marker
                  }
                }
              }
            }
          }
        }
        for (var i in lobj.l) {
          var l = lobj.l[i];
          if (inCityMode) {
            if (tmarks[l.mi]) {
              map.removeOverlay(tmarks[l.mi])
            }
            var marker = createCityMarker(new GLatLng(l.lt, l.lg), l);
            map.addOverlay(marker);
            tmarks[l.mi] = marker
          } else {
            if (inAreaMode) {
              if (amarks[l.mi]) {
                map.removeOverlay(amarks[l.mi])
              }
              var marker = createAreaMarker(new GLatLng(l.lt, l.lg), l);
              map.addOverlay(marker);
              amarks[l.mi] = marker
            } else {
              if (inTinyMode && !smarks[getUID(l)]) {
                var marker = createListingMarker(l);
                map.addOverlay(marker);
                smarks[getUID(l)] = marker
              } else {
                if (!inCityMode && !inAreaMode && !inTinyMode && !lmarks[getUID(l)]) {
                  var marker = createListingMarker(l);
                  map.addOverlay(marker);
                  lmarks[getUID(l)] = marker
                }
              }
            }
          }
        }
        if (bq != "") {
          var sp = lEvents[bq];
          setTimeout(sp, 500);
          bq = ""
        }
        found = null;
        shown = null
      };
      var clearFarMarkers = function () {
        for (var i in reomarks) {
          var c = reomarks[i].getLatLng();
          if (!bound.containsLatLng(c)) {
            var t = reomarks[i];
            map.removeOverlay(t);
            reomarks[i] = null;
            delete reomarks[i]
          }
        }
        for (var i in pmarks) {
          var c = pmarks[i].getLatLng();
          if (!bound.containsLatLng(c)) {
            var t = pmarks[i];
            map.removeOverlay(t);
            pmarks[i] = null;
            delete pmarks[i]
          }
        }
        for (var i in psmarks) {
          var c = psmarks[i].getLatLng();
          if (!bound.containsLatLng(c)) {
            var t = psmarks[i];
            map.removeOverlay(t);
            psmarks[i] = null;
            delete psmarks[i]
          }
        }
        for (var i in fmarks) {
          var c = fmarks[i].getLatLng();
          if (!bound.containsLatLng(c)) {
            var t = fmarks[i];
            map.removeOverlay(t)
          }
        }
        for (var i in smarks) {
          var c = smarks[i].getLatLng();
          if (!bound.containsLatLng(c)) {
            var t = smarks[i];
            map.removeOverlay(t);
            smarks[i] = null;
            delete smarks[i]
          }
        }
        for (var i in lmarks) {
          var c = lmarks[i].getLatLng();
          if (!bound.containsLatLng(c)) {
            var t = lmarks[i];
            map.removeOverlay(t);
            lmarks[i] = null;
            delete lmarks[i]
          }
        }
        for (var i in amarks) {
          var c = amarks[i].getLatLng();
          if (!bound.containsLatLng(c)) {
            var t = amarks[i];
            map.removeOverlay(t);
            amarks[i] = null;
            delete amarks[i]
          }
        }
        for (var i in tmarks) {
          var c = tmarks[i].getLatLng();
          if (!bound.containsLatLng(c)) {
            var t = tmarks[i];
            map.removeOverlay(t);
            tmarks[i] = null;
            delete tmarks[i]
          }
        }
      };
      var callback = function (data, rcode) {
        if (curArgs != largs) {
          return
        }
        if (data != "") {
          try {
            eval("lr = " + data)
          } catch(err) {}
        }
        cities = lr.cities;
        clearFarMarkers();
        wipedt();
        addListingMarkers(lr);
        updateList(lr)
      };
      GDownloadUrl("q/" + req, callback, largs);
      prev = bound;
      ulng = null;
      llng = null;
      ulat = null;
      llat = null;
      zl = null;
      req = null;
      tr = null;
      bl = null
    };
    var dragF = function () {
      if (!inpp) {
        rwlRefreshView()
      }
    };
    var zoomF = function (oldz, newz) {
      if (!inpp) {
        rwlRefreshView()
      }
    };
    GEvent.addListener(map, "moveend", dragF);
    rwlRefreshView();
    var favreq = "__synch_fav.php";
    var fargs = "";
    var fcallback = function (data, rcode) {
      if (data == "") {
        return
      }
      favs = eval("favs=" + data);
      for (var k in favs) {
        appendFav(k)
      }
    };
    GDownloadUrl("q/" + favreq, fcallback, fargs)
  }
}
function formatLCurrency(B) {
  B = B.toString().replace(/\$|\,/g, "");
  dblValue = parseFloat(B);
  if (isNaN(dblValue)) {
    return B
  }
  blnSign = (dblValue == (dblValue = Math.abs(dblValue)));
  dblValue = Math.floor(dblValue * 100 + 0.50000000001);
  intCents = dblValue % 100;
  strCents = intCents.toString();
  dblValue = Math.floor(dblValue / 100).toString();
  if (intCents < 10) {
    strCents = "0" + strCents
  }
  for (var A = 0; A < Math.floor((dblValue.length - (1 + A)) / 3); A++) {
    dblValue = dblValue.substring(0, dblValue.length - (4 * A + 3)) + "," + dblValue.substring(dblValue.length - (4 * A + 3))
  }
  return (((blnSign) ? "" : "-") + dblValue + "." + strCents)
}
function formatCurrency(B) {
  if (B == null) {
    return ""
  }
  B = B.toString().replace(/\$|\,/g, "");
  dblValue = parseFloat(B);
  if (isNaN(dblValue)) {
    return B
  }
  blnSign = (dblValue == (dblValue = Math.abs(dblValue)));
  dblValue = Math.floor(dblValue * 100 + 0.50000000001);
  intCents = dblValue % 100;
  strCents = intCents.toString();
  dblValue = Math.floor(dblValue / 100).toString();
  if (intCents < 10) {
    strCents = "0" + strCents
  }
  for (var A = 0; A < Math.floor((dblValue.length - (1 + A)) / 3); A++) {
    dblValue = dblValue.substring(0, dblValue.length - (4 * A + 3)) + "," + dblValue.substring(dblValue.length - (4 * A + 3))
  }
  return (((blnSign) ? "" : "-") + "$" + dblValue)
}
var dtUpdate = function () {
  if (dtrs) {
    dtrs.initializeTable(lr.l);
    return
  }
  var J = function (M, L, N, P) {
    var K = L.getData("re");
    var O = K.charAt(0) + K.charAt(2) + P;
    M.innerHTML = '<a href="#" onclick="return pinPoint(\'' + O + '\');"><img src="http://media.realwebleads.com' + "/mlsphoto.php?mls=" + K + "&lid=" + P + '&pic=0&mw=60&mh=60" width="60" height="60" border="0" /></a>'
  };
  var E = function (L, K, M, N) {
    L.innerHTML = cities[N]
  };
  var A = function (L, K, M, N) {
    L.innerHTML = "$" + formatLCurrency(N)
  };
  var F = function (N, L, P) {
    var M = cities[N.getData("cy")];
    var K = cities[L.getData("cy")];
    var O = YAHOO.util.Sort.compare;
    return O(M, K, P)
  };
  var I = function (M, L, N, O) {
    var K = "";
    switch (O) {
    case "detached":
      K = "Detached Home";
      break;
    case "semi":
      K = "Detached Home";
      break;
    case "town":
      K = "Townhouse";
      break;
    case "condo":
      K = "Condo";
      break;
    case "land":
      K = "Land";
      break
    }
    M.innerHTML = K
  };
  var B = function (N, L, P) {
    var M = N.getData("pt");
    var K = L.getData("pt");
    var O = YAHOO.util.Sort.compare;
    return O(M, K, P)
  };
  var C = function (N, L, P) {
    var M = parseInt(N.getData("lp"));
    var K = parseInt(L.getData("lp"));
    var O = YAHOO.util.Sort.compare;
    return O(M, K, P)
  };
  var H = [{
    key: "mi",
    label: "",
    sortable: false,
    formatter: J
  },
  {
    key: "lp",
    label: "Price",
    formatter: A,
    sortable: true,
    sortOptions: {
      sortFunction: C
    }
  },
  {
    key: "cy",
    label: "City",
    formatter: E,
    sortable: true,
    sortOptions: {
      sortFunction: F
    }
  },
  {
    key: "br",
    label: "Bdrms",
    sortable: true
  },
  {
    key: "pt",
    label: "Lifestyle",
    formatter: I,
    sortable: true,
    sortOptions: {
      sortFunction: B
    }
  }];
  var D = new YAHOO.util.DataSource(lr);
  D.responseType = YAHOO.util.DataSource.TYPE_JSON;
  D.responseSchema = {
    resultsList: "l",
    fields: ["mi", "lp", "cy", "br", "pt", "re"]
  };
  var G = {
    paginated: true,
    paginator: {
      containers: null,
      currentPage: 1,
      rowsPerPage: 10,
      pageLinks: 7,
      dropdownOptions: [10, 15, 20]
    }
  };
  YAHOO.util.Dom.addClass("resultlist", "dtgate");
  dtrs = new YAHOO.widget.DataTable("resultlist", H, D, G)
};
var triggerC = function (A) {
  cEvents[A]();
  return false
};
var triggerA = function (A) {
  aEvents[A]();
  return false
};
var dtaUpdate = function () {
  if (dtrs) {
    dtrs.initializeTable(lr.l);
    return
  }
  var E = function (K, J, M, N) {
    var I = '<a href="#" onclick="return triggerA(\'' + N + "');\">" + N + "</a>";
    var L = N.indexOf("(");
    if (L > 0) {
      I = '<a href="#" onclick="return triggerA(\'' + N + "');\">" + N.substr(0, L) + "</a>";
      I += "<br /><span>";
      I += N.substr(L + 1, N.length - L - 2);
      I += "</span>"
    }
    K.innerHTML = I
  };
  var A = function (J, I, K, L) {
    J.innerHTML = lr.c[L]
  };
  var C = function (L, J, N) {
    var K = cities[L.getData("cy")];
    var I = cities[J.getData("cy")];
    var M = YAHOO.util.Sort.compare;
    return M(K, I, N)
  };
  var D = function (K, J, L, M) {
    var I = "";
    K.innerHTML = I
  };
  var F = function (L, J, N) {
    var K = parseInt(L.getData("c"));
    var I = parseInt(J.getData("c"));
    var M = YAHOO.util.Sort.compare;
    return M(K, I, N)
  };
  var H = [{
    key: "mi",
    label: "Local Area",
    sortable: false,
    formatter: E,
    sortable: true
  },
  {
    key: "c",
    label: "Total",
    sortable: true,
    sortOptions: {
      sortFunction: F
    }
  }];
  var G = new YAHOO.util.DataSource(lr);
  G.responseType = YAHOO.util.DataSource.TYPE_JSON;
  G.responseSchema = {
    resultsList: "l",
    fields: ["mi", "c", "cy"]
  };
  var B = {
    paginated: true,
    paginator: {
      containers: null,
      currentPage: 1,
      rowsPerPage: 10,
      pageLinks: 7,
      dropdownOptions: [10, 15, 20]
    }
  };
  YAHOO.util.Dom.addClass("resultlist", "dtarea");
  dtrs = new YAHOO.widget.DataTable("resultlist", H, G, B)
};
var dtcUpdate = function () {
  if (dtrs) {
    dtrs.initializeTable(lr.l);
    return
  }
  var E = function (K, J, M, N) {
    var I = '<a href="#" onclick="return triggerC(\'' + N + "');\">" + N + "</a>";
    var L = N.indexOf("(");
    if (L > 0) {
      I = '<a href="#" onclick="return triggerC(\'' + N + "');\">" + N.substr(0, L) + "</a>";
      I += "<br /><span>";
      I += N.substr(L + 1, N.length - L - 2);
      I += "</span>"
    }
    K.innerHTML = I
  };
  var A = function (J, I, K, L) {
    J.innerHTML = lr.c[L]
  };
  var C = function (L, J, N) {
    var K = cities[L.getData("cy")];
    var I = cities[J.getData("cy")];
    var M = YAHOO.util.Sort.compare;
    return M(K, I, N)
  };
  var D = function (K, J, L, M) {
    var I = "";
    K.innerHTML = I
  };
  var F = function (L, J, N) {
    var K = parseInt(L.getData("c"));
    var I = parseInt(J.getData("c"));
    var M = YAHOO.util.Sort.compare;
    return M(K, I, N)
  };
  var H = [{
    key: "mi",
    label: "Town / City",
    sortable: false,
    formatter: E,
    sortable: true
  }];
  var G = new YAHOO.util.DataSource(lr);
  G.responseType = YAHOO.util.DataSource.TYPE_JSON;
  G.responseSchema = {
    resultsList: "l",
    fields: ["mi", "c", "cy"]
  };
  var B = {
    paginated: true,
    paginator: {
      containers: null,
      currentPage: 1,
      rowsPerPage: 10,
      pageLinks: 7,
      dropdownOptions: [10, 15, 20]
    }
  };
  YAHOO.util.Dom.addClass("resultlist", "dtcity");
  dtrs = new YAHOO.widget.DataTable("resultlist", H, G, B)
};
YAHOO.util.Event.on(window, "load", function () {
  var J = 64;
  var G = 64;
  var K = {
    minp: 25000,
    maxp: 25000,
    minb: 1,
    minr: 1,
    mink: 1
  };
  var F = null;
  if (mdef.maxp == "none") {
    F = J
  } else {
    F = Math.floor(mdef.maxp / K.maxp)
  }
  var E = {
    minp: Math.floor(mdef.minp / K.minp),
    maxp: F,
    minr: mdef.minr,
    minb: mdef.minb,
    mink: mdef.mink
  };
  var I = 0;
  var C = function (M, R) {
    var O = document.getElementById(M + "_ctl_val");
    var N = R;
    if (M == "minp" || M == "maxp") {
      N = formatCurrency(R)
    }
    if (O.innerText) {
      O.innerText = N
    }
    if (O.innerHTML) {
      O.innerHTML = N
    }
    var Q = document.getElementById("map_search_frm");
    var P = Q.elements[M];
    P.value = R;
    return false
  };
  var A = YAHOO.widget.Slider.getHorizSlider("maxp_bg", "maxp_thumb", 0, J);
  var D = YAHOO.widget.Slider.getHorizSlider("minp_bg", "minp_thumb", 0, G);
  A.setValue(E.maxp);
  D.setValue(E.minp);
  A.keyIncrement = 1;
  D.keyIncrement = 1;
  A.subscribe("change", function () {
    var O = this.getValue();
    var M = D.getValue();
    var N = (this.getValue() + I) * K.maxp;
    if (O == J) {
      N = "none"
    }
    C("maxp", N);
    if (O < M) {
      D.setValue(O)
    }
  });
  D.subscribe("change", function () {
    var N = this.getValue();
    var M = A.getValue();
    C("minp", N * K.minp);
    if (N > M) {
      A.setValue(N)
    }
  });
  var L = YAHOO.widget.Slider.getHorizSlider("minb_bg", "minb_thumb", 0, 45, 5);
  L.setValue(E.minb * 5);
  var B = YAHOO.widget.Slider.getHorizSlider("minr_bg", "minr_thumb", 0, 45, 5);
  B.setValue(E.minr * 5);
  var H = YAHOO.widget.Slider.getHorizSlider("mink_bg", "mink_thumb", 0, 45, 5);
  H.setValue(E.mink * 5);
  L.keyIncrement = 5;
  B.keyIncrement = 5;
  H.keyIncrement = 5;
  L.subscribe("change", function () {
    C("minb", (this.getValue() / 5) * K.minb)
  });
  B.subscribe("change", function () {
    C("minr", (this.getValue() / 5) * K.minr)
  });
  H.subscribe("change", function () {
    C("mink", (this.getValue() / 5) * K.mink)
  })
});
dupfunc = dtUpdate;

