﻿//var map, NewarkBackground;
//var markersLayer = new OpenLayers.Layer.Markers("Locate");

var mVectorLayers = new Array();
var mVectorFeatures = new Array();
var bBizLoaded = false;
var bFeaturesLoaded = false ;
var bBizLoadFailed = false; 

var mAssetLayers = new Array();
var mAssetFeatures = new Array();
var bAssetLoaded = false;
var bAssetsLoaded = false;
var bAssetLoadFailed = false;


//how to create a point graphic
//var pt = new esri.geometry.Point(xloc,yloc,map.spatialReference)
//var sms = new esri.symbol.SimpleMarkerSymbol().setStyle(
//  esri.symbol.SimpleMarkerSymbol.STYLE_SQUARE).setColor(
//  new dojo.Color([255,0,0,0.5]));
//var attr = {"XCoord":evt.mapPoint.x,"YCoord":evt.mapPoint.y,"Plant":"Mesa Mint"};
//var infoTemplate = new esri.InfoTemplate("Vernal Pool Locations","Latitude: ${YCoord} <br/>Longitude: ${XCoord} <br/>Plant Name:${Plant}");
//var graphic = new esri.Graphic(pt,sms,attr,infoTemplate);

//graphic with custom picture marker symbol
//var infoSymbol = new esri.symbol.PictureMarkerSymbol("../images/info.png",30,30);
// var infoTemplate = new esri.InfoTemplate("${Name}", "Restroom: ${Facilities}<br />
//        Phone: ${Phone}<br />Water: ${Water}");
// var park1 = new esri.Graphic({"geometry":{"x":-13043577.827992536,"y":4034040.568968247,
//        "spatialReference":{"wkid":102100}},"attributes":{"Name":"Prospect Park",
//        "Facilities":"Yes","Water":"Yes","Phone":"No"}});
// park1.setSymbol(infoSymbol);
// park1.setInfoTemplate(infoTemplate);
// map.graphics.add(park1);


//function addCityFeatureSetToMap(featureSet) {
//    var symbol = new esri.symbol.SimpleMarkerSymbol();
//    symbol.setColor(new dojo.Color([0, 0, 255]));

//    //Create graphics layer for cities
//    var cityLayer = new esri.layers.GraphicsLayer();
//    cityLayer.setInfoTemplate(new esri.InfoTemplate("${CITY_NAME}", "${*}"));

//    map.addLayer(cityLayer);
//    map.reorderLayer(cityLayer, 1);

//    //Add cities to the graphics layer
//    dojo.forEach(featureSet.features, function(feature) {
//        cityLayer.add(feature.setSymbol(symbol));
//    });
//}


function LoadCategoriesSuccess(result) {
    //function returns business categories that have businesses only, if a category exists with no businesses in it, it will be ignored here
    var myBusinessCats = result;
     
    for (var itemno in myBusinessCats) {
               
        var cID = myBusinessCats[itemno].ID;        
        var cPID = myBusinessCats[itemno].ParentCategoryID;
        var catName = myBusinessCats[itemno].NAME;
        var catIcon = "icons/" + myBusinessCats[itemno].icon;

        //create the default renderer for each layer to be the symbol from the db
        
        var lyrSymbol = new esri.symbol.PictureMarkerSymbol(catIcon,32,37); //picture, width, height
        var lyrRenderer = new esri.renderer.SimpleRenderer(lyrSymbol);
        //dojo.byId("extent").innerHTML += cID + ", " + cPID + ", " + catName + ", " + catIcon + "</br>";
        //Create graphics layer for current category 
        var theLayer = new esri.layers.GraphicsLayer({ id: cID, visible: false }); //create layer, set id
       
        theLayer.setRenderer(lyrRenderer);
        theLayer.setInfoTemplate(new esri.InfoTemplate("${NAME}", "${*}"));
        
        // Declare an associative array element to hold graphics layers:
        mVectorLayers[itemno] = theLayer;
        //dojo.byId("extent").innerHTML += "Layer id : " + theLayer.id + "</br>";
        map.addLayer(theLayer);
        theLayer = null;
    }
  
    return true;
}

function LoadCategoriesFailure(result) 
    { alert("Could not load Business Categories (try refreshing the page), if the map still fails to load contact us at gisasstmanager.com"); }
//////////////////////////////////////////////////////////////////////////////////////////////////////

function LoadBusinesses() {
        gisassetmanager.DataService.GetBusinesses('',GetBizSuccess, GetBizFailure);
    }

function GetBizSuccess(result) {       
    var myBusinesses = result;
    var tURL;

    //graphic with custom picture marker symbol
//    dojo.byId("extent").innerHTML += "before add graphic</br>"
//     var infoSymbol = new esri.symbol.PictureMarkerSymbol("icons/Transportation/bus.png",32,37);
//     var infoTemplate = new esri.InfoTemplate("${Name}", "Restroom: ${Facilities}<br />Phone: ${Phone}<br />Water: ${Water}");
//     //-74.16552, 40.72505
//     // -74.1712539534741, 40.73357347047237
//     //-8256675.169056575  4973137.2144115635
//     var newPT = new esri.geometry.Point(-74.17125, 40.73357, new esri.SpatialReference({ wkid: 900913 }));
//     var geom = esri.geometry.geographicToWebMercator(newPT);
//     dojo.byId("extent").innerHTML += "newPT::" + newPT.x + " : " + newPT.y + "</br>";
//     dojo.byId("extent").innerHTML += "geom::" + geom.x + " : " + geom.y + "</br>";
//     var park1 = new esri.Graphic({ "geometry": { "x": geom.x, "y": geom.y,
//            "spatialReference":{"wkid":900913}},"attributes":{"Name":"Prospect Park",
//            "Facilities":"Yes","Water":"Yes","Phone":"No"}});
//     park1.setSymbol(infoSymbol);
//     park1.setInfoTemplate(infoTemplate);
//     map.graphics.add(park1);
//     dojo.byId("extent").innerHTML += "after add graphic</br>"
//     return;
//     
    //loop through returned businesses and add each vector to the temp array
    for (var itemno in myBusinesses) {
    
//        var addr = myBusinesses[itemno].street + ", " + myBusinesses[itemno].city + " " + myBusinesses[itemno].state + ". " + myBusinesses[itemno].zip;
        
        if (myBusinesses[itemno].url != '')
        { tURL = "<a href='" + myBusinesses[itemno].url + "' target='_blank'>Click Here</a>"; }
        else 
        {tURL = 'no website';}
        mVectorFeatures[itemno] = new Array();
        mVectorFeatures[itemno][0] = myBusinesses[itemno].CategoryID;
        //mVectorFeatures[itemno][1] = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(myBusinesses[itemno].lng, myBusinesses[itemno].lat), { Title: myBusinesses[itemno].category_name, Line1: myBusinesses[itemno].NAME, Line2: addr, Line3: tURL });

        var xloc = myBusinesses[itemno].lng;
        var yloc = myBusinesses[itemno].lat;

        //convert point to match basemaps ref
        var newPT = new esri.geometry.Point(xloc, yloc, new esri.SpatialReference({ wkid: 900913 }));
        var geom = esri.geometry.geographicToWebMercator(newPT);
        //dojo.byId("extent").innerHTML += "newPT::" + newPT.x + " : " + newPT.y + "</br>";
        //dojo.byId("extent").innerHTML += "geom::" + geom.x + " : " + geom.y + "</br>";

//        dojo.byId("extent").innerHTML += newPT.x + ", " + newPT.y + "  -:-  ";
//        dojo.byId("extent").innerHTML += geom.x + ", " + geom.y + " --- ";
        var directions = "<a href='http://maps.google.com/maps?f=d&source=s_d&saddr=&daddr=" + yloc + "," + xloc + "(" + myBusinesses[itemno].NAME + ")&hl=en' target='_blank' style='color: #3C6AF1; font-size: 10pt;'>Directions To Here</a>";
        
        var attr = { "category":myBusinesses[itemno].category_name,"name":myBusinesses[itemno].NAME, "XCoord": xloc, "YCoord": yloc, "street": myBusinesses[itemno].street, "city": myBusinesses[itemno].city, "state": myBusinesses[itemno].state, "zip": myBusinesses[itemno].zip, "phone": myBusinesses[itemno].phone, "url": tURL, "directions":directions };
        //dojo.byId("extent").innerHTML += xloc + ", " + yloc + ", " + myBusinesses[itemno].street + ", " + myBusinesses[itemno].city + ", " + myBusinesses[itemno].state + ", " + myBusinesses[itemno].zip + "</br>";
        
        var infoTemplate = new esri.InfoTemplate("${category}", "${name}</br>Street:${street} <br/>City:${city}<br/>State:${state}<br/>Zip:${zip}<br/>Phone:${phone}<br/>Web:${url}</br>${directions}");

        //add all the graphics to the default graphics layer for testing
        //var infoSymbol = new esri.symbol.PictureMarkerSymbol("icons/Transportation/bus.png", 32, 37);
        var graphic = new esri.Graphic(geom, null, attr, infoTemplate);
        //graphic.setSymbol(infoSymbol);
        //map.graphics.add(graphic);
        
        //tmpGraphicLayer.add(graphic);
        mVectorFeatures[itemno][1] = graphic; //add each graphic to the array

    }
    //map.addLayer(tmpGraphicLayer);
    bBizLoaded = true;
    return bBizLoaded;
 }

 function GetBizFailure(result) {
     bBizLoadFailed = true;
     
 }

 function AddFeaturesToMap() {
     
    //if businesses have not finished loading, pause to let them finish
    if (!bBizLoaded) {
        var t = setTimeout("AddFeaturesToMap()", 3000);
        return;
    } else {
    
//    dojo.byId("extent").innerHTML += "start adding layers </br>";
//    dojo.byId("extent").innerHTML += "# of layers = " + mVectorLayers.length + "</br>";
//    dojo.byId("extent").innerHTML += "# of features to add = " + mVectorFeatures.length + "</br>";
//    
            //loop through layers in array and add features, then add the layer to the map
            for (var itemno in mVectorLayers) {
                //now add features to layers
                //get the business and add it to the layer
                var cID = mVectorLayers[itemno].id;
                var len = mVectorFeatures.length;
                var iRemoveCount = 0;
                //dojo.byId("extent").innerHTML += itemno + "- current layer is : " + cID + " </br>";
                for (var i = 0; i < len; i++) {
                   // dojo.byId("extent").innerHTML += "layer is  : '" + mVectorLayers[itemno].id + "' </br>";
                   // dojo.byId("extent").innerHTML += "category id for this graphic is : '" + mVectorFeatures[i][0] + "' </br>";
                    if (mVectorFeatures[i][0] == mVectorLayers[itemno].id) {
                     //   dojo.byId("extent").innerHTML += "adding to graphic layer </br>"
                        mVectorLayers[itemno].add(mVectorFeatures[i][1]); //add graphic to graphiclayer
                        iRemoveCount += 1;
                    }
                    
                }
                //dojo.byId("extent").innerHTML += "remove count = " + iRemoveCount + "</br>";
                //remove the used element from the array, helps speed when there are many bizs
                mVectorFeatures.splice([0][0], iRemoveCount);
                
                //mVectorLayers[itemno].events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
                //dojo.byId("extent").innerHTML += "add layer to map " + mVectorLayers[itemno].id + "</br>";
                //map.addLayer(mVectorLayers[itemno]);
                //dojo.byId("extent").innerHTML += "layer added </br>";

            } //for
            
            //map.events.register('click', map, handleMapClick);

        } //else
        //force load of one or more of the layers, graphic layer must already be present in map to work
        var mLayer = map.getLayer("29");
        if (mLayer) {
            var vis = mLayer.visible;
            if (vis == true) { mLayer.setVisibility(false); }
            if (vis == false) { mLayer.setVisibility(true); }
        }
    }//end func


    ///////////////////////////////////////////////////////////////////////////////
    //Assets
    function LoadAssetTypesSuccess(result) {
        //function returns business categories that have businesses only, if a category exists with no businesses in it, it will be ignored here
        var myAssetCats = result;

        for (var itemno in myAssetCats) {

            var cID = 'a' + myAssetCats[itemno].AssetTypeID.toString();
            var cPID = 0;  //myAssetCats[itemno].ParentCategoryID;
            var catName = myAssetCats[itemno].AssetTypeName;
            var catIcon = "icons/" + myAssetCats[itemno].ImageName;
            //dojo.byId("extent").innerHTML += "Layer id : " + cID + ":" + cPID + ":" + catName + "</br>";
            //var curStyle = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: catIcon, graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });

            //http://www.gisassetmanager.com/demo/MGMT/AddReport.aspx?AssetID=574
            //var reportlink = "http://www.gisassetmanager.com/demo/MGMT/AddReport.aspx?AssetID=574
            


            // Declare an associative array element:
            //mAssetLayers[itemno] = new OpenLayers.Layer.Vector(cID.toString(), { styleMap: curStyle, visibility: false });

            var lyrSymbol = new esri.symbol.PictureMarkerSymbol(catIcon, 32, 37); //picture, width, height
            var lyrRenderer = new esri.renderer.SimpleRenderer(lyrSymbol);
            //dojo.byId("extent").innerHTML += cID + ", " + cPID + ", " + catName + ", " + catIcon + "</br>";
            //Create graphics layer for current category 
            var theLayer = new esri.layers.GraphicsLayer({ id: cID, visible: false }); //create layer, set id

            theLayer.setRenderer(lyrRenderer);
            theLayer.setInfoTemplate(new esri.InfoTemplate("${NAME}", "${*}"));

            // Declare an associative array element to hold graphics layers:
            mAssetLayers[itemno] = theLayer;
            //dojo.byId("extent").innerHTML += "Layer id : " + theLayer.id + "</br>";
            map.addLayer(theLayer);
            theLayer = null;
            
        }
        return true;
    }

    function LoadAssetTypesFailure(result)
    { alert("Failed to load Asset Types " + result.get_message()); }

    function LoadAssets() {
        gisassetmanager.DataService.GetAllAssets(GetAssetsSuccess, GetAssetsFailure);
    }

    function GetAssetsSuccess(result) {
        var myAssets = result;
        var tURL;
        //loop through returned businesses and add each vector to the temp array
        for (var itemno in myAssets) {
            mAssetFeatures[itemno] = new Array();
            mAssetFeatures[itemno][0] = myAssets[itemno].AssetTypeID;
            //mAssetFeatures[itemno][1] = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(myAssets[itemno].PointX, myAssets[itemno].PointY), { Title: "Asset # " + myAssets[itemno].AssetID, Line1: myAssets[itemno].AssetTypeName, Line2: "<img src=\"icons/" + myAssets[itemno].ImageName + "\" />", Line3: "<a href=\"http://www.gisassetmanager.com/demo/MGMT/AddReport.aspx?AssetID=" + myAssets[itemno].AssetID + "\" target=\"_blank\">Report Damage</a>" });

            var xloc = myAssets[itemno].lng;
            var yloc = myAssets[itemno].lat;
            //dojo.byId("extent").innerHTML += xloc + ", " + yloc + "  </BR>  ";
            //convert point to match basemaps ref
            var newPT = new esri.geometry.Point(xloc, yloc, new esri.SpatialReference({ wkid: 900913 }));
            var geom = esri.geometry.geographicToWebMercator(newPT);
            //dojo.byId("extent").innerHTML += "newPT::" + newPT.x + " : " + newPT.y + "</br>";
            //dojo.byId("extent").innerHTML += "geom::" + geom.x + " : " + geom.y + "</br>";
            var reportlink = "<a href='http://www.gisassetmanager.com/ndd/MGMT/AddReport.aspx?AssetID=" + myAssets[itemno].AssetID + "' target='_blank' style='color: #3C6AF1; font-size: 10pt; text-decoration:none;'>Click Here to File a Report.</a>";
            var attr = { "assetid": myAssets[itemno].AssetID, "assettypename": myAssets[itemno].AssetTypeName, "report": reportlink }; //, "XCoord": xloc, "YCoord": yloc, "street": myBusinesses[itemno].street, "city": myBusinesses[itemno].city, "state": myBusinesses[itemno].state, "zip": myBusinesses[itemno].zip, "phone": myBusinesses[itemno].phone, "url": myBusinesses[itemno].url, "directions": directions };
            //dojo.byId("extent").innerHTML += xloc + ", " + yloc + ", " + myBusinesses[itemno].street + ", " + myBusinesses[itemno].city + ", " + myBusinesses[itemno].state + ", " + myBusinesses[itemno].zip + "</br>";
            

            var infoTemplate = new esri.InfoTemplate("${assettypename}", "Newark Asset #:${assetid}</br>${report}"); //</br>Street:${street} <br/>City:${city}<br/>State:${state}<br/>Zip:${zip}<br/>Phone:${phone}<br/>Web:${url}</br>${directions}");

            //add all the graphics to the default graphics layer for testing
            //var infoSymbol = new esri.symbol.PictureMarkerSymbol("icons/Transportation/bus.png", 32, 37);
            var graphic = new esri.Graphic(geom, null, attr, infoTemplate);
            //graphic.setSymbol(infoSymbol);
            //map.graphics.add(graphic);

            //tmpGraphicLayer.add(graphic);
            mAssetFeatures[itemno][1] = graphic; //add each graphic to the array
        
        }
        bAssetLoaded = true;
        return bAssetLoaded;
    }

    function GetAssetsFailure(result) {
        alert("Failed to get assets.");        
        bAssetLoadFailed = true;

    }
    function AddAssetsToMap() {
        //dojo.byId("extent").innerHTML += "AddAssetsToMap</br>";
        //if businesses have not finished loading, pause to let them finish
        if (!bAssetLoaded) {        
        var t = setTimeout("AddAssetsToMap()", 3000);
            return;
        } else {        
        
         for (var itemno in mAssetLayers) {
                //now add features to layers
                //get the assets and add it to the layer
                var cID = mAssetLayers[itemno].id;
                var len = mAssetFeatures.length;
                var iRemoveCount = 0;
                //dojo.byId("extent").innerHTML +="current layer is : " + cID + " </br>";
                
                for (var i = 0; i < len; i++) {
                    //dojo.byId("extent").innerHTML += "AssetLayer is  : '" + mAssetLayers[itemno].id + "</br>";
                    //dojo.byId("extent").innerHTML += "category id for this graphic is : '" + mAssetFeatures[i][0] + "</br>";
                    
                    if ("a" + mAssetFeatures[i][0] == mAssetLayers[itemno].id) {
                     //   dojo.byId("extent").innerHTML += "adding to graphic layer </br>"
                        mAssetLayers[itemno].add(mAssetFeatures[i][1]); //add graphic to graphiclayer
                        iRemoveCount += 1;
                    }
                    
                }
                //dojo.byId("extent").innerHTML += "remove count = " + iRemoveCount + "</br>";
                //remove the used element from the array, helps speed when there are many bizs
                mAssetFeatures.splice([0][0], iRemoveCount);

            } //for

//            var mLayers = new Array();
//            mLayers = mVectorLayers.concat(mAssetLayers);
//            var select = new OpenLayers.Control.SelectFeature(mLayers, { clickout: true });
//            var highlightCtrl = new OpenLayers.Control.SelectFeature(mLayers, { hover: true, highlightOnly: true, renderIntent: "temporary", eventListeners: { featurehighlighted: tooltipSelect, featureunhighlighted: tooltipUnselect} });
//            map.addControl(highlightCtrl);
//            map.addControl(select);
//            highlightCtrl.activate();
//            select.activate();
            
           // map.events.register('click', map, handleMapClick);
        } //end if
    } //end func



    ////////////////////////////////////////////////////////////////////////////////

function InitializeMapData() {

    //dojo.byId("extent").innerHTML += "spatial ref :" + map.spatialReference.wkid + "</br>";

    gisassetmanager.DataService.GetBusinessCategories(LoadCategoriesSuccess, LoadCategoriesFailure);
    LoadBusinesses();
    window.setTimeout(AddFeaturesToMap, 100);

    gisassetmanager.DataService.GetAssetTypes(LoadAssetTypesSuccess, LoadAssetTypesFailure);
    LoadAssets();
    window.setTimeout(AddAssetsToMap, 100);

    var lastFeature = null, tooltipPopup = null;

    

}

//function tooltipSelect(event) {
//    var feature = event.feature;
//    var selectedFeature = feature;
//    //if there is already an opened details window, don't draw the tooltip
//    if (feature.popup != null) {
//        return;
//    }
//    //if there are other tooltips active, destroy them
//    if (tooltipPopup != null) {
//        map.removePopup(tooltipPopup);
//        tooltipPopup.destroy();
//        if (lastFeature != null) {
//            delete lastFeature.popup;
//            tooltipPopup = null;
//        }
//    }

//    lastFeature = feature;
//    var sname = feature.attributes.Line1
//    var lname = (sname.length) * 8

//    var tooltipPopup = new OpenLayers.Popup("activetooltip",
//                    feature.geometry.getBounds().getCenterLonLat(),
//                    new OpenLayers.Size(lname, 18), "<center><b>" + feature.attributes.Line1 + "</b></center>", false);

//    tooltipPopup.contentDiv.style.backgroundColor = 'ffffff';
//    tooltipPopup.contentDiv.style.overflow = 'hidden';
//    tooltipPopup.contentDiv.style.padding = '0';
//    tooltipPopup.contentDiv.style.margin = '0';
//    tooltipPopup.contentDiv.style.height = '38px';
//    tooltipPopup.closeOnMove = true;
//    tooltipPopup.autoSize = true;
//    feature.popup = tooltipPopup;
//    map.addPopup(tooltipPopup);
//}

//function tooltipUnselect(event) {
//    var feature = event.feature;
//    if (feature != null && feature.popup != null) {
//        map.removePopup(feature.popup);
//        delete feature.popup;
//        tooltipPopup = null;
//        lastFeature = null;
//    }
//}

//function onMarkerPopupClose(evt) { select.unselectAll(); }

//function onMarkerUnselect(event) {
//    var feature = event.feature;
//    if (feature.popup) {
//        map.removePopup(feature.popup);
//        feature.popup.destroy();
//        delete feature.popup;
//    }
//}

//function onMarkerSelect(event) {
//    tooltipUnselect(event);
//    var feature = event.feature;
//    var selectedFeature = feature;

//    var htmltxt = "<div style='border: medium solid #999966; width: 270px; height: 165px; position: relative;'>";
//    htmltxt += "<div class='gradient6'>";
//    htmltxt += "<h1><span></span>" + feature.attributes.Title + "</h1></div>";
//    htmltxt += "<div style='padding: 5px; font-family: Tahoma; font-weight: bold; color: #0099FF; font-size: 10pt;'>";
//    htmltxt += "<span style='padding: 2px'>" + feature.attributes.Line1 + "</span><br />";
//    htmltxt += "<span style='padding: 2px'>" + feature.attributes.Line2 + "</span><br />";

//    if (feature.attributes.Line3 == '')
//    { feature.attributes.Line3 = "No Phone or Website"; }
//    htmltxt += "<div style='width: 100%; border-top-style: solid; border-top-width: 1px; border-top-color: #003399; background-color: #F3F3F3; font-family: Arial, Helvetica, sans-serif; color: #0000CC;'>" + feature.attributes.Line3 + "</div>";

//    htmltxt += "</div>";
//    htmltxt += "<div style='padding: 3px -3px -3px 15px; position: absolute; height: 20px; top: 100%; width: 100%;margin-top:-20px;  background-color: #6A7870; font-family: 'Times New Roman'; color: #FFFF99;'>&nbsp;";

//    var pt = feature.geometry.getBounds().getCenterLonLat();
//    htmltxt += "<a href='http://maps.google.com/maps?f=d&source=s_d&saddr=&daddr=" + pt.lat + "," + pt.lon + "(" + feature.attributes.Line1 + ")&hl=en' target='_blank' style='color: #FFFF99; font-size: 10pt;'>Directions To Here</a>";
//    htmltxt += "</div></div>";

//    var popup = new OpenLayers.Popup.Anchored("activeAlarm", feature.geometry.getBounds().getCenterLonLat(), new OpenLayers.Size(275, 180), htmltxt, null, true);
//    popup.setBorder("2px solid");

//    //var popup = new OpenLayers.Popup.FramedCloud("activeAlarm", feature.geometry.getBounds().getCenterLonLat(), new OpenLayers.Size(100, 100), "<p style=\"font-size:12pt;font-family:Arial;\"><b>" + feature.attributes.Title + "</b><br />" + feature.attributes.Line1 + "<br />" + feature.attributes.Line2 + "<br />" + feature.attributes.Line3 + "</p>", null, true, onMarkerPopupClose);
//    feature.popup = popup;
//    popup.setOpacity(0.9);
//    map.addPopup(popup);
//}

//function onAssetMarkerSelect(event) {
//    tooltipUnselect(event);
//    var feature = event.feature;
//    var selectedFeature = feature;
//    var htmltxt = "<div style='border: medium solid #999966; width: 270px; height: 165px; position: relative;'>";
//    htmltxt += "<div class='gradient6'>";
//    htmltxt += "<h1><span></span>" + feature.attributes.Title + "</h1></div>";
//    htmltxt += "<div style='padding: 5px; font-family: Tahoma; font-weight: bold; color: #0099FF; font-size: 10pt;'>";
//    htmltxt += "<span style='padding: 2px'>" + feature.attributes.Line1 + "</span><br />";
//    htmltxt += "<span style='padding: 2px'>" + feature.attributes.Line2 + "</span><br />";

//    if (feature.attributes.Line3 == '')
//    { feature.attributes.Line3 = "No Phone or Website"; }
//    htmltxt += "<div style='width: 100%; border-top-style: solid; border-top-width: 1px; border-top-color: #003399; background-color: #F3F3F3; font-family: Arial, Helvetica, sans-serif; color: #0000CC;'>" + feature.attributes.Line3 + "</div>";

//    htmltxt += "</div>";
//    htmltxt += "<div style='padding: 3px -3px -3px 15px; position: absolute; height: 20px; top: 100%; width: 100%;margin-top:-20px;  background-color: #6A7870; font-family: 'Times New Roman'; color: #FFFF99;'>&nbsp;";

//    var pt = feature.geometry.getBounds().getCenterLonLat();
//    
//    htmltxt += "</div></div>";

//    var popup = new OpenLayers.Popup.Anchored("activeAlarm", feature.geometry.getBounds().getCenterLonLat(), new OpenLayers.Size(275, 180), htmltxt, null, true);
//    popup.setBorder("2px solid");

//    //var popup = new OpenLayers.Popup.FramedCloud("activeAlarm", feature.geometry.getBounds().getCenterLonLat(), new OpenLayers.Size(100, 100), "<p style=\"font-size:12pt;font-family:Arial;\"><b>" + feature.attributes.Title + "</b><br />" + feature.attributes.Line1 + "<br />" + feature.attributes.Line2 + "<br />" + feature.attributes.Line3 + "</p>", null, true, onMarkerPopupClose);
//    feature.popup = popup;
//    popup.setOpacity(0.9);
//    map.addPopup(popup);
//}


//function ZoomToExtent(){
//    map.setCenter(new OpenLayers.LonLat(-74.168031747817, 40.73774), 1);
//}

//function handleMapClick(evt) {
//    
//    var ne = map.getLonLatFromViewPortPx(new OpenLayers.Pixel(evt.xy.x, evt.xy.y));
//    document.getElementById('hfClickLat').value = ne.lat;
//    document.getElementById('hfClickLon').value = ne.lon;
//    markersLayer = new OpenLayers.Layer.Markers("Locate");
//    map.addLayer(markersLayer);

//    var htmltxt = "<div padding: 2px; border: thin solid #999999; width: 100%;>"
//    htmltxt += "<img alt='submit a report' src='./Images/pin1.gif'";
//    htmltxt += "style='float: left;' />";
//    htmltxt += "<p style='padding: 2px; font-family: 'Courier New', Courier, monospace; font-style: oblique; color: #CC0000;'>";
//    htmltxt += "<a target='_blank' href='mgmt/AddReport.aspx?X=" + ne.lon + "&Y=" + ne.lat + "'>Submit a Report</a></p>";
//    htmltxt += "<span style='font-family: Times New Roman, Times, serif; font-size: small;  width: 250px;'>at this location:<br/> " + ne.lon + "<br />" + ne.lat + "</span>";
//    htmltxt += "</div>";
//    htmltxt += "<span style='font-family: Times New Roman, Times, serif; font-size: small;  width: 250px;'>report damage, graffiti, street lights not working, etc.</span>";
//    htmltxt += "</div>";

//    var popup = new OpenLayers.Popup.Anchored("activeAlarm", ne, new OpenLayers.Size(250, 185), htmltxt, null, true);
//    //var popup = new OpenLayers.Popup.FramedCloud("activeAlarm", ne, new OpenLayers.Size(100, 100), "<p style=\"font-size:12pt;font-family:Arial;\"><b><a target='_blank' href='mgmt/AddReport.aspx?X=" + ne.lon + "&Y=" + ne.lat + "'> Submit damage report at this location</b></p>", null, true, null);

//    //feature.popup = popup;
//    popup.setOpacity(1);
//    map.addPopup(popup);
//    
//    //map.setCenter(new OpenLayers.LonLat(ne.lon, ne.lat), 4);

//    //__doPostBack('UpdatePanel1', '');

//}
