var prefixRDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';
var prefixDC = 'http://purl.org/dc/elements/1.1/';
var prefixLoc = 'http://simile.mit.edu/2005/05/ontologies/location#';
var prefixEX = 'http://example.com/vocab/retail#';

var namespace = doc.documentElement.namespaceURI;
var nsResolver = namespace ? function(prefix) {
 if (prefix == 'x') return namespace; else return null;
} : null;

var getNode = function(doc, contextNode, xpath, nsResolver) {
 return doc.evaluate(xpath, contextNode, nsResolver, XPathResult.ANY_TYPE,null).iterateNext();
}

var cleanString = function(s) {
 return utilities.trimString(s);
}

var onAddressLookedUp = function (itemURI, latlong) {
 model.addStatement(itemURI, prefixLoc + 'coordinates', latlong, true);
}
var geo = utilities.createGeoHelper(onAddressLookedUp, utilities);

var xpath = '//form[@id="PrxResults"]/table/tbody/tr[2]/td[1]/table/tbody/tr/td[2]';
var elmts = utilities.gatherElementsOnXPath(doc, doc, xpath, nsResolver);
for (var i = 0; i < elmts.length; i++) {
 var elmt = elmts[i];
 // elmt.style.backgroundColor = 'red';
 var uri;
 try {
   uri = cleanString(getNode(doc, elmt, './SPAN[1]/A[1]', nsResolver).href);
 } catch (e) { utilities.debugPrint(e);}
 model.addStatement(uri, prefixRDF + 'type', prefixEX + 'CoffeShop', false); // Use your own type here
 // utilities.debugPrint('Scraping URI ' + uri);
 try {
   model.addStatement(uri, prefixDC + 'title', cleanString(getNode(doc, elmt, './SPAN[1]/A[1]/text()[1]', nsResolver).nodeValue), true);
 } catch (e) { utilities.debugPrint(e);}
 var addressSegments = [];
 try {
   addressSegments.push(cleanString(getNode(doc, elmt, './SPAN[2]/text()[1]', nsResolver).nodeValue));
 } catch (e) { utilities.debugPrint(e);}
 try {
   addressSegments.push(cleanString(getNode(doc, elmt, './SPAN[2]/text()[2]', nsResolver).nodeValue));
 } catch (e) { utilities.debugPrint(e);}
 var address = addressSegments.join(', ');
 model.addStatement(uri, prefixLoc + 'address', address, true);
 geo.add(uri, address);
}

wait(); // don't navigate to collected data just yet, let the address lookup begin

geo.lookupAddresses(done, done);

