var coords=''; var mapdone=0; var noevent=0; var dosliders=0; var standard_setup=1; var submit_pressed=0; function buildurl(nocoords){ var url=''; var mode=$("[name=mode]").val(); url+='mode:'+$("[name=mode]").val()+'/'; var status=$("[name=status]:checked").val(); if (status=='sold') url+='status:'+status+'/'; $("#top_alert_container").hide(); var min= $("[name=price_from]").val(); var max= $("[name=price_to]").val(); var pt=$("[name=ptype]:checked").val(); if (pt=='rental'){ min= $("[name=price_from_rental]").val(); max= $("[name=price_to_rental]").val(); } var minsub=min; if (min=='-1') minsub='any'; url+='price:'+minsub+'-'+max+'/'; var ybmin= $("#yearbuilt_slider").slider('values',0); var ybmax= $("#yearbuilt_slider").slider('values',1); var yearmax = 2010; if ((ybmin > 1900) || (ybmax < (yearmax+1))) { if (ybmin==1901) ybmin='any'; var doyburl=0; if (ybmin == 'any') doyburl++; if (ybmax == '2010') doyburl++; if (doyburl < 2) url+='yearbuilt:'+ybmin+'-'+ybmax+'/'; } var area=$("[name=areaid]").val(); if (area !='') url+='areaid:'+area+'/'; var vid=$("#vendorid").val(); if (vid !='') url+='vendorid:'+vid+'/'; var bed=$("#bedrooms").val(); if (bed !='any') url+='bedrooms:'+bed+'/'; var bath=$("[name=bathrooms]").val(); if (bath !='any') url+='bathrooms:'+bath+'/'; var query=$("[name=query]").val(); if (query) url+='query:'+query+"/"; var minsq= $("#sqft_slider").slider('values',0); var maxsq= $("#sqft_slider").slider('values',1); if ((minsq > 0) || (maxsq < 10000)) url+='sqft:'+minsq+'-'+maxsq+'/'; var type=$("[name=type]").val(); if (type!='') url+='type:'+type+'/'; var sorting=$("[name=sorting]").val(); if (sorting!='') url+='sorting:'+sorting+'/'; url+='ptype:'+$("input[@name=ptype]:checked").val()+'/'; var has_video=$("[name=has_video]:checked").val(); if (has_video =='1') url+='has_video/'; var modechange=0; if ((mode=='table') && ($("#map").length)) modechange=1; if ((mode=='map') && ($(".t_result").length)) modechange=2; var page=$('input[name=page]').val(); if (modechange==1) page=parseInt((page*2)-1); if (modechange==2) { var op=page; page=parseInt(page/2); if ((op%2) == 1) page=page+1; } $('input[name=page]').val(page); if (page > 1) url+='page:'+page+'/'; furl=''; $("[name=features]:checked").each( function() { var ftext=$(this).attr('rel'); ftext=ftext.replace(/\//,'+'); furl+=ftext+','; } ); furl=furl.substring(0,furl.length-1); if (furl!='') url+='features:'+furl+'/'; coords=$("[name=coords]").val(); if ((nocoords!=1) && (coords) && (coords!=null)) { url+='coords:'+coords+'/'; } document.location.hash=url; uri='/listings/searchjx/'+url; //uri='http://www.realestatechannel.ca'+uri; return uri; } function urlreact(use_url){ if (standard_setup==1){ var mode=''; var url=''; var query=$("[name=query]").val(); if (checkforquery()){ if (use_url=='1') { setform2url(document.location.hash); mode=extractmode(document.location.hash); url=document.location.href; url=url.replace(/\#/,''); url=url.replace(/search/,'searchjx'); } else{ mode=$("[name=mode]").val(); url=buildurl(); } if (no_react != 1){ if (mode=='table'){ if ($(".t_result")) { $("#tablemsg").show(); $(".t_result").fadeTo(300,0.5, function(){ $('html,body').animate({scrollTop: $("#begin").offset().top},'fast'); }); } else { $("#content2").html(" Updating, please wait..."); } $.ajax({ type: "POST", url: url, success: function(msg){ //$(".t_result").fadeTo(300,1); if (checkforresult(msg)){ mapdone=0; $("#content2").html(msg); react(); } if ($("#tablemsg").css('display')=='block' ){ $("#tablemsg").hide(); $(".t_result").fadeTo(300,1); } } }); } else{ if (mapdone==0){ //mapdone=1; map=init(); } $('#mapoverlay').show(); $('#mapoverlay').fadeTo(300,0.7); $.ajax({ type: "POST", url: url, success: function(msg){ $('#mapoverlay').fadeTo(300,0,function(){ $('#mapoverlay').hide(); }); if (checkforresult(msg)){ map.clearOverlays(); markers=new Array(); eval(msg); $(markers).each(function(i,marker){ GEvent.addListener(marker.gm, "click", function(){ jQuery().basebox.showurl_no('/listings/bubble/'+marker.id,'',{basedir: '/static/js/Basebox/'}); }); }); if (mapdone==0) { fitMap(map, markers); mapdone==1; } react(); } } }); } } }} else { var u=buildurl(); } } function init(){ var map=''; submit_pressed=1; if (GBrowserIsCompatible()) { text='
  
'; text='
'+text+'
Updating, please wait...
 
'; if ($("[name=mode]").val()=='hybrid'){ text+='
'; } $("#content2").html(text); $(".listingsearch_save_link").click(function(){ var u=document.location.hash; u=u.replace(/#/,''); $.ajax({ type: "POST", url: '/listings/search/save/'+u, success: function(msg){ $("#alert").html("Your search has been saved. You must sign-up for a profile to permanently save your searches."); $("#top_alert_container").fadeIn("slow"); //$("#listing_save_link").hide(); setTimeout(function(){ $("#top_alert_container").fadeOut("slow");},5000); } }); return false; }); $("#view_switch_table").unbind().click(function(){ $("[name=mode]").val('table'); urlreact(); }); map = new GMap2($("#map").get(0)); var lat='49.263133'; var longitude='-123.138056'; var done=0; map.setCenter(new GLatLng(lat,longitude), 13); if (document.location.hash){ var center=extractcoords(document.location.hash); if ((center != '')&&(center != 'null')){ var map_coords=center.split(','); var sw=new GLatLng(map_coords[0],map_coords[1]); var ne=new GLatLng(map_coords[2],map_coords[3]); var bounds = new GLatLngBounds(sw, ne); map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds)); } } map.setUIToDefault(); G_PHYSICAL_MAP.getMinimumResolution = function () { return 4 }; G_NORMAL_MAP.getMinimumResolution = function () { return 4 }; G_SATELLITE_MAP.getMinimumResolution = function () { return 4 }; G_HYBRID_MAP.getMinimumResolution = function () { return 4 }; G_PHYSICAL_MAP.getMaximumResolution = function () { return 18 }; G_NORMAL_MAP.getMaximumResolution = function () { return 18 }; G_SATELLITE_MAP.getMaximumResolution = function () { return 18 }; G_HYBRID_MAP.getMaximumResolution = function () { return 18 }; GEvent.addListener(map, "moveend", function() { if ((noevent==0)&&(submit_pressed==0)) { var bounds = map.getBounds(); var southWest = bounds.getSouthWest(); var northEast = bounds.getNorthEast(); var before= southWest; var zoomlevel= map.getZoom(); page=1; $("[name=coords]").val(southWest.toUrlValue(7)+','+northEast.toUrlValue(7)); $("[name=url]").val(document.location); $("[name=page]").val(1); var url=buildurl(); if (checkforquery()){ $.ajax({ type: "POST", url: url, success: function(msg){ if (checkforresult(msg)){ map.clearOverlays(); eval(msg); $(markers).each(function(i,marker){ GEvent.addListener(marker.gm, "click", function(){ jQuery().basebox.showurl_no('/listings/bubble/'+marker.id,'',{basedir: '/static/js/Basebox/'}); }); }); fitMap(map, markers); react(); } } }); } } }); } return map; } function checkforresult(msg){ if (msg=='0'){ if ($("#map").length==0){ $("#content2").html('

City or neighbourhood not found

Please check your spelling and try again.

'); return false; } } else return true; } function checkforquery(){ var query=$("[name=query]").val(); if (!query){ $("#content2").html('

Search Listings

Please enter a city or neighbourhood to begin your search.

'); return false; } else return true; } function changepage(p){ //alert(p); var u=document.location.hash; var p=u.indexOf('page:'); if (p > 0){ var pe=u.indexOf('/',p); var nu=u.substr(0,p)+'page:'+p;///'+ nu+=u.substr(pe,(u.length-pe)); u=nu; } else { u+'/page:'+p+'/'; } document.location.hash=u; } function react(){ $("[name=lastmode]").val("table"); $(".li_next").unbind().click(function(){ var p=$(this).attr("rel"); $("[name=page]").val(p); changepage(p); urlreact(); }); $(".li_prev").unbind().click(function(){ var p=$(this).attr("rel"); $("[name=page]").val(p); changepage(p); urlreact(); }); $(".page").unbind().click(function(){ var p=$(this).attr("rel"); $("[name=page]").val(p); changepage(p); urlreact(); }); } $(document).ready(function() { $("#advsearch").hide(); $("#advbtn").toggle(function(){ set_adv_sliders(); $("#banner_container").css({height: '230px'}); /*$("#searchmenu").css({height: '230px'}); */ $("#advsearch").fadeIn("fast",function(){ }); $("#advbtn").attr("src","/static/images/adv_search_btn_up.jpg"); return false; },function(){ /*$("#searchmenu").css({height: '150px'});*/ $("#banner_container").css({height: '110px'}); $("#advbtn").attr("src","/static/images/adv_search_btn_down.jpg"); $("#advsearch").hide(); return false; }); $("[name=query]").attr("autocomplete","off"); $("[name=query]").keyup(function(event){ if ((event.keyCode != '13')&&(event.keyCode != '38')&&(event.keyCode != '40')) { $("[name=areaid]").val(''); } }); $("[name=query]").autocomplete('/get_suggestions', { max: 50,selectFirst: false}).result(function(e,i){ i=String(i); var foo=''; var t=''; t=i.match(/(.*)<\/span>/g); t=String(t); t=t.replace('',''); t=String(t); t=t.replace('',''); foo=i.replace(/(.*)<\/span>/g,''); $("[name=areaid]").val(t); $("[name=query]").val(foo); buildurl(); $("#submit").click(); }); $("[name=mode]").change(function(){ urlreact(); }); $("[name=type]").change(function(){ reset_page();urlreact(); }); $("[name=ptype]").change(function(){ reset_page();urlreact(); }); $("[name=has_video]").change(function(){ reset_page();urlreact(); }); $("[name=features]").change(function(){ reset_page(); urlreact(); }); var min= '-1'; var max= '5000000'; $("[name=price_from]").val(-1); $("[name=price_to]").val(5000000); $('.price_sliders2').selectToUISlider({ tooltip: false,change: function(){ $("#pfr").html($("[name=price_from_rental]").find(":selected").text()); $("#pto").html($("[name=price_to_rental]").find(":selected").text()); if (dosliders!=0) { reset_page(); urlreact(); } }, slide: function(t){ $("#pfr").html($("[name=price_from_rental]").find(":selected").text()); $("#pto").html($("[name=price_to_rental]").find(":selected").text()); } }); $('.price_sliders').selectToUISlider({ tooltip: false,change: function(){ $("#pfr").html($("[name=price_from]").find(":selected").text()); $("#pto").html($("[name=price_to]").find(":selected").text()); if (dosliders!=0) { reset_page(); urlreact(); } }, slide: function(t){ $("#pfr").html($("[name=price_from]").find(":selected").text()); $("#pto").html($("[name=price_to]").find(":selected").text()); } }); var pt=$("[name=ptype]:checked").val(); if (pt=='rental'){ $("#pfr").html( $("[name=price_from_rental]").find(":selected").text() ); $("#pto").html( $("[name=price_to_rental]").find(":selected").text() ); } else { $("#pfr").html( $("[name=price_from]").find(":selected").text() ); $("#pto").html( $("[name=price_to]").find(":selected").text() ); } var ybmin= 1901; var ybmax= 2010; $("#yearbuilt_slider").slider({ min: 1901, max: 2010, values: [ ybmin,ybmax], step: 1,range: true, change: function(){ reset_page(); urlreact(); }, slide: function(){ var yearb=$("#yearbuilt_slider").slider('values',0); if (yearb==1901){yearb='any';} $("#ybfr").html(yearb); var text=$("#yearbuilt_slider").slider('values',1); if (text== 2010) text+='+'; $("#ybto").html(text); } }); if (ybmin==1901){ybmin='any';} $("#ybfr").html(ybmin); $("#ybto").html(ybmax+'+'); var smin= 0; var smax= 10000; $("#sqft_slider").slider({ min:0, max: 10000, values: [smin,smax], step:1, range: true, change: function(){ reset_page(); urlreact(); }, slide: function(){ var text=$("#sqft_slider").slider('values',0); if (text=='0') text='any'; if (text!='any') text=formatNumber(text); var textmax=formatNumber($("#sqft_slider").slider('values',1)); if (textmax=='10,000') textmax='10,000+'; $("#sfr").html(text); $("#sto").html(textmax); } }); if (smin==0) smin='any'; if (smax==10000) smax='10,000+'; $("#sfr").html(smin); $("#sto").html(smax); var beds = $('[name=bedrooms]').selectToUISlider({tooltip: false, slide: function(t){ $("#bedrooms_l").html(t); }, change: function(){ if (dosliders!=0) {reset_page(); urlreact(); } } }).next(); var baths = $('[name=bathrooms]').selectToUISlider({tooltip: false, slide: function(t){ $("#bathrooms_l").html(t); }, change: function(){ if (dosliders!=0){reset_page(); urlreact();} } }).next(); $("#bedrooms").val('any'); $("#bedrooms_l").html('any'); $("#bedrooms").change(); $("#bathrooms").val('any'); $("#bathrooms_l").html('any'); $("#bathrooms").change(); $("[name=submit]").click(function(){ submit_pressed=1; removecoords(); $("[name=coords]").val(null); $("[name=price_from]").val($("#price_slider").slider('values',0)); $("[name=price_to]").val($("#price_slider").slider('values',1)); $("[name=sqft_from]").val($("#sqft_slider").slider('values',0)); $("[name=sqft_to]").val($("#sqft_slider").slider('values',1)); }); $("[name=status]").click(function(){ urlreact(); }); $("[name=ptype]").click(function(){ var pt=$("[name=ptype]:checked").val(); if (pt=='rental'){ $("#price_sale .ui-slider").hide(); $("#price_rental").show(); $("#price_rental .ui-slider").show(); $("[name=price_from_rental]").val('-1'); $("[name=price_to_rental]").val('5000'); $("[name=price_to_rental]").change(); } else { $("#price_sale .ui-slider").show(); $("#price_rental .ui-slider").hide(); $("[name=price_from]").val('-1'); $("[name=price_to]").val('5000000'); $("[name=price_to]").change(); } }); dosliders=1; }); function reset_page(){ $("[name=page]").val('1'); } function formatNumber(n) { if (!isFinite(n)) { return n; } var s = ""+n, abs = Math.abs(n), _, i; if (abs >= 1000) { _ = (""+abs).split(/\./); i = _[0].length % 3 || 3; _[0] = s.slice(0,i + (n < 0)) + _[0].slice(i).replace(/(\d{3})/g,',$1'); s = _.join('.'); } return s; } function fitMap( map, points ) { var cs=''; if (document.location.hash) cs=extractcoords(document.location.hash); if ((cs=='') || ( submit_pressed==1 )) { var bounds = new GLatLngBounds(); for (var i=0; i< points.length; i++) { bounds.extend(points[i].point); } map.setZoom(map.getBoundsZoomLevel(bounds)); map.setCenter(bounds.getCenter()); submit_pressed=0; } } function set_adv_sliders(){ var ybmin=$("#yearbuilt_slider").slider('values',0); if (ybmin==1901){ymin='any';} $("#ybfr").html(ybmin); var text=$("#yearbuilt_slider").slider('values',1); if (text== 2010) text+='+'; $("#ybto").html(text+'+'); text=$("#sqft_slider").slider('values',0); if (text=='0') text='any'; if (text!='any') text=formatNumber(text); var textmax=formatNumber($("#sqft_slider").slider('values',1)); if (textmax=='10,000') textmax='10,000+'; $("#sfr").html(text); $("#sto").html(textmax); } function removecoords(){ var url=document.location.hash; if (url) { var mode=''; url=url.replace(/#/g,''); url=url.replace(/%20/g,' '); url=url.replace(/\/(coords:(.*)\/)/g,'/'); document.location.hash=url; } return true; } function extractcoords(url){ var mode=''; if (url){ url=url.replace(/#/g,''); url=url.replace(/%20/g,' '); var vars=url.split("/"); for(i = 0; i < vars.length; i++){ var subv=vars[i].split(':'); if (subv[1]) if (subv[0] == 'coords') mode=subv[1]; } } return mode; } function extractmode(url){ var mode=''; url=url.replace(/#/g,''); url=url.replace(/%20/g,' '); var vars=url.split("/"); for(i = 0; i < vars.length; i++){ var subv=vars[i].split(':'); if (subv[1]) if (subv[0] == 'mode') mode=subv[1]; } return mode; } function setform2url(url, nomove){ url=url.replace(/#/g,''); url=url.replace(/%20/g,' '); var vars=url.split("/"); var ptype='sale'; for(i = 0; i < vars.length; i++){ var subv=vars[i].split(':'); if (subv[0]=='ptype'){ if (subv[1]=='rental') ptype='rental'; } } for(i = 0; i < vars.length; i++){ var subv=vars[i].split(':'); if (subv[0]=='ptype'){ //alert(subv[1]); } if (subv[0]=='has_video'){ $("[name=has_video][value=1]").attr("checked","true"); } if (subv[1] != undefined){ //subv[1]=subv[1].replace(/\+/g,''); if ((subv[0]!='yearbuilt')&&(subv[0]!='price')&&(subv[0]!='status')&&(subv[0]!='sqft')&&(subv[0]!='features')&&(subv[0]!='ptype')) $("[name="+subv[0]+"]").val(subv[1]); if (subv[0]=='bedrooms') { $("#bedrooms").val(subv[1]); $("#bedrooms_l").html(subv[1]); $("#bedrooms").change(); } if (subv[0]=='status') { $("[name=status][value=sold]").attr("checked","true"); } if (subv[0]=='bathrooms') { $("#bathrooms").val(subv[1]); $("#bathrooms_l").html(subv[1]); $("#bathrooms").change(); } if (subv[0]=='size') $("#size").slider('value',subv[1]); if (subv[0]=='ptype') { if (subv[1]=='rental') $("[name=ptype][value=rental]").attr("checked","true"); if (subv[1]=='sale') $("[name=ptype][value=sale]").attr("checked","true"); } if (subv[0]=='yearbuilt'){ var range=subv[1].split('-'); $("[name=yearbuilt_from]").val(range[0]); $("[name=yearbuilt_to]").val(range[1]); $("#yearbuilt_slider").slider('values',0,range[0]); $("#yearbuilt_slider").slider('values',1,range[1]); } if (subv[0]=='price'){ var range=subv[1].split('-'); if (ptype=='rental'){ $("#price_sale .ui-slider").hide(); $("#price_rental").show(); $("#price_rental .ui-slider").show(); $("[name=price_from_rental]").val(range[0]); $("[name=price_to_rental]").val(range[1]); $('[name=price_from_rental]').change(); $('[name=price_to_rental]').change(); } else { $("[name=price_from]").val(range[0]); $("[name=price_to]").val(range[1]); $('[name=price_from]').change(); $('[name=price_to]').change(); } } if (subv[0]=='sqft'){ var range=subv[1].split('-'); $("[name=sqft_from]").val(range[0]); $("[name=sqft_to]").val(range[1]); $("#sqft_slider").slider('values',0,range[0]); $("#sqft_slider").slider('values',1,range[1]); } if (subv[0]=='features'){ var feats=subv[1].toLowerCase(); feats=feats.replace(/\+/,'/'); feats=feats.split(','); for(j = 0; j < feats.length; j++) $("[rel="+feats[j]+"]")[0].checked=true; } } } return 0; } function opensignup(){ $("#signup").click(); }