﻿/*
Querying nearby businesses

Dan Monego
CDM
2008
*/
var report = null;
function findBusinesses(addressInfo)
{
    function handleBusinessQuery(featureSet)
    {
        report = window.open("BusinessQuery.aspx", "businessQuery", "height=h, width=w, resizable");
        var address = addressInfo.feature.attributes["Location"];
        var businessListContainer = report.document.getElementById("businesses");
        report.document.getElementById("title").innerHTML = "Businesses Near " + address;
        for(var idx = 0; idx < featureSet.features.length; idx++)
        {
            var feature = featureSet.features[idx];
            
            var businessRecord = document.createElement("div");
            var businessName = document.createElement("div");
            var businessInfo = document.createElement("div");
            
            businessName.appendChild(document.createTextNode(feature.attributes["name"]));
            businessInfo.appendChild(document.createTextNode(feature.attributes["address"]));
            businessInfo.appendChild(document.createElement("br"));
            businessInfo.appendChild(document.createTextNode(feature.attributes["NAICStype"]));
            businessRecord.appendChild(businessName);
            businessRecord.appendChild(businessInfo);
            businessListContainer.appendChild(businessRecord);
        }
    }
    
    /*
    Creates the business report by literally writing out the new page.
    */
    function handleBusinessQueryLiteral(featureSet)
    {
        report = window.open("", "businessQuery", "height=h, width=w, resizable, scrollbars");
        var address = addressInfo.feature.attributes["Location"];
        var doc = report.document;
        doc.write("<html><head><title>")
        doc.write("Businesses near " + address);
        doc.write("</title>");
        doc.write('<link href="BusinessReport.css" rel="Stylesheet" type="text/css" />');
        doc.write("</head><body>");
        doc.write("<h3>Businesses Within 1/2 Mile of " + address + "</h3>");
        doc.write("<a href=\"#\" onclick=\"window.print(); return false;\" style=\"float:right;\">");
        doc.write("<img src=\"images/print.gif\" alt=\"print\" style=\"border:none;\">");
        doc.write("</a>");
        doc.write("<ul>");
        for(var idx = 0; idx < featureSet.features.length; idx++)
        {
            var feature = featureSet.features[idx];
            doc.write("<li>");
            doc.write('<div class="business_name">' + feature.attributes["name"] + '</div>');
            doc.write('<span class="business_info">');
            doc.write(feature.attributes["address"]);
            doc.write("<br/>");
            doc.write(feature.attributes["NAICStype"]);
            doc.write('</span>');
            doc.write("</li>");
        }
        doc.write("</ul>");
        doc.write("</body></html>");
        doc.close();
    }
    
    var extent = addressInfo.feature.geometry.getExtent();
    var q = new esri.tasks.Query();
    q.geometry = extent.expand(3);
    q.returnGeometry = false;
    q.spatialRelationship = esri.tasks.Query.SPATIAL_REL_INTERSECTS;
    q.outFields = ["name", "address" , "NAICStype"];
    var queryTask = new esri.tasks.QueryTask(serviceURL + "/" + configuration["idxBusinesses"]);
    queryTask.onComplete = handleBusinessQueryLiteral;
    queryTask.execute(q);
}

function findNearbyBusinessesByGISId(gisid)
{
    var q = new esri.tasks.Query();
    q.returnGeometry = true;
    q.outFields = Datafields.DevelopmentParcel;
    q.where = "GIS_ID = '" + gisid + "'";
    var queryTask = new esri.tasks.QueryTask(serviceURL + "/" + configuration["idxDevParcel"]);
    queryTask.execute(q, function(featureSet)
    {
        var info = new AddressInfo(featureSet.features[0]);
        findBusinesses(info);
    });
}