NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// RedFin WalkScore Popup
// version 0.1
// 2014-05-27
// Author: Narayan Natarajan
// Released under the GPL license
// http://www.gnu.org/copyleft/gpl.html
//
// Notes:
// - Only shows walkscore in the property page
// - An unobstrusive mouse-hover popup is used
// - A link is also setup if in case you wish to see the walkscore page
// - It would be nice to show it in the map/browse page as well but that needs a bit more work
//
// ==UserScript==
// @name RedFin WalkScore Popup
// @namespace nnat.redfin.walkscore
// @description Walkscore Popup on mouse hover in the property page
// @include http://www.redfin.com/*home*
// @include http://www.redfin.com/*real-estate*
// ==/UserScript==
function addGlobalStyle(css) {
var head, style;
head = document.getElementsByTagName('head')[0];
if (!head) { alert('nohead');return; }
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = css;
head.appendChild(style);
}
function makeFrame(src) {
ifrm = document.createElement("IFRAME");
ifrm.setAttribute("src", src);
ifrm.style.width = 500+"px";
ifrm.style.height = 500+"px";
return ifrm;
}
function getElByClassTxt(elClass){
if (document.getElementsByClassName(elClass)[0]==undefined){
// alert('notthere:'+elClass);
return false;
}
return document.getElementsByClassName(elClass)[0].innerHTML;
}
function getAddressSearchPage(){
var address="";
var add1 = getElByClassTxt('street_anchor listing_address_info');
if (add1 == false){
return false;
}
address=add1;
var add2 = getElByClassTxt('listing_address_info');
address=address + " " + add2;
alert(add2);
return address;
}
function getAddressHomePage(){
var address="";
var add1 = getElByClassTxt('street-address');
if (add1 == false){
return false;
}
address=add1;
var add2 = getElByClassTxt('locality');
if (add2 != false )
address=address + " " + add2;
var add3 = getElByClassTxt('region');
if (add3 != false )
address=address + " " + add3;
var add4 = getElByClassTxt('postal-code');
if (add4 != false )
address=address + " " + add4;
return address;
}
function getAddress(){
return getAddressHomePage();
/*
TODO: include walkscore in map with right side panel - will need a little different popup etc.
if (document.location.toString().toLowerCase().search("home")>=0){
return getAddressHomePage();
}else{
return getAddressSearchPage();
}
*/
}
function showWalkScoreFrame() {
var address=getAddress();
/*
The page sometimes loads slow so keep checking for address
*/
if (address == false){
setTimeout(showWalkScoreFrame,1000);
return;
}
var loc = "http://www.walkscore.com/get-score.php?street=" + address + "&go=Go";
var iff=makeFrame(loc);
var div = document.createElement('div');
var diviff = document.createElement('div');
var anc = document.createElement('a');
anc.target = '_new';
anc.href = loc;
anc.innerHTML = "Show Walkability";
diviff.id="wsiff";
diviff.className="wsbox";
diviff.appendChild(iff);
div.appendChild(anc);
div.appendChild(diviff);
var sibling = "";
sibling= document.getElementsByClassName('street-address')[0];
sibling.parentNode.insertBefore(div, sibling.nextSibling);
}
addGlobalStyle('.wsbox{display:none !important;width:100%;}a:hover+.wsbox,.wsbox:hover{display:block !important;position:relative;z-index:100;}');
showWalkScoreFrame();