﻿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; 

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;
        
        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" }) });

        // Declare an associative array element:
        mVectorLayers[itemno] = new OpenLayers.Layer.Vector(cID.toString(), { styleMap: curStyle, visibility: false });
    }
    return true;
}

function LoadCategoriesFailure(result) 
    { alert(result.get_message()); }
//////////////////////////////////////////////////////////////////////////////////////////////////////

function LoadBusinesses() {
        gisassetmanager.DataService.GetBusinesses('',GetBizSuccess, GetBizFailure);
    }

function GetBizSuccess(result) {       
    var myBusinesses = result;
    var tURL;
    //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'>More...</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 });
    }
    bBizLoaded = true;
    return bBizLoaded;
 }

 function GetBizFailure(result) {
     bBizLoadFailed = true;
     
 }

 function AddFeaturesToMap() {
     
    //if businesses have not finsihed loading, pause to let them finish
    if (!bBizLoaded) {
        var t = setTimeout("AddFeaturesToMap()", 3000);
        return;
    } else {
            //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 them to the layer
                var cID = mVectorLayers[itemno].name;
                var len = mVectorFeatures.length;
                var iRemoveCount = 0;
                for (var i = 0; i < len; i++) {
                    if (mVectorFeatures[i][0] == mVectorLayers[itemno].name) {
                        mVectorLayers[itemno].addFeatures(mVectorFeatures[i][1]);
                        iRemoveCount += 1;
                    }
                }
                //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 });
                map.addLayer(mVectorLayers[itemno]);

            } //for


            
            //map.events.register('click', map, handleMapClick);
            
        }//else
    }//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;

            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" }) });

            // Declare an associative array element:
            mAssetLayers[itemno] = new OpenLayers.Layer.Vector(cID.toString(), { styleMap: curStyle, visibility: false });
        }
        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>" });
        }
        bAssetLoaded = true;
        return bAssetLoaded;
    }

    function GetAssetsFailure(result) {
        alert("Failed to get assets.");
        bAssetLoadFailed = true;

    }
    function AddAssetsToMap() {

        //if businesses have not finsihed loading, pause to let them finish
        if (!bAssetLoaded) {
        
        var t = setTimeout("AddAssetsToMap()", 3000);
            return;
        } else {
            //loop through layers in array and add features, then add the layer to the map
            for (var itemno in mAssetLayers) {
                //now add assets to layers
                //get the assets and add them to the layer
                var cID = mAssetLayers[itemno].AssetTypeName;
                var len = mAssetFeatures.length;
                var iRemoveCount = 0;
                for (var i = 0; i < len; i++) {
                    if ('a' + mAssetFeatures[i][0] == mAssetLayers[itemno].name) {
                        mAssetLayers[itemno].addFeatures(mAssetFeatures[i][1]);
                        iRemoveCount += 1;
                    }
                }
                //remove the used element from the array, helps speed when there are many items
                mAssetFeatures.splice([0][0], iRemoveCount);

                mAssetLayers[itemno].events.on({ "featureselected": onAssetMarkerSelect, "featureunselected": onMarkerUnselect });
                map.addLayer(mAssetLayers[itemno]);


            } //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 InitializeMap() {
    map = new OpenLayers.Map('mapFrame', { numZoomLevels: 20, minZoomLevel: 12, maxZoomLevel: 20, minScale: 6500, maxScale: 1000, units: "degrees", controls: [new OpenLayers.Control.Navigation(), new OpenLayers.Control.PanZoomBar()] });
    //map = new OpenLayers.Map('mapFrame', { allOverlays: true });
    NewarkBackground = new OpenLayers.Layer.Image('Newark Background', 'images/newarkbase2.png', new OpenLayers.Bounds(-74.1794066648, 40.7280543119, -74.155964215, 40.7485557479), new OpenLayers.Size(5131, 4488));

    //var GoogleHybrid = new OpenLayers.Layer.Google("Hybrid", { type: google.maps.MapTypeId.HYBRID, numZoomLevels: 20 });

    map.addLayer(NewarkBackground);

    //if using google maps
    //map.setCenter(new OpenLayers.LonLat(-74.1794066648, 40.7280543119).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject()), 5);

    
    
    




//    var BENCHfeature = new Array(), LIGHTfeature = new Array(), PLANTERfeature = new Array(), TRASHfeature = new Array(), SIGNfeature = new Array(), OTHERfeature = new Array();

//    var benchesList = document.getElementById('ddlBenches');
//    for (var i = 0; i < benchesList.options.length; i++) {
//        var benchesAttributes = benchesList.options[i].value.split(",");
//        BENCHfeature.push(new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(benchesAttributes[0], benchesAttributes[1]), { Title: "Demo Improvement #" + benchesAttributes[3], Line1: benchesAttributes[2], Line2: "<img src=\"http://www.gisassetmanager.com/demo/Images/Assets/" + benchesAttributes[2] + ".gif\" />",Line3: "<a href=\"http://www.gisassetmanager.com/demo/MGMT/AddReport.aspx?AssetID=" + benchesAttributes[3] + "\" target=\"_blank\">Report Damage</a>" }));
//    }

//    var lightsList = document.getElementById('ddlLights');
//    for (var i = 0; i < lightsList.options.length; i++) {
//        var lightsAttributes = lightsList.options[i].value.split(",");
//        LIGHTfeature.push(new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(lightsAttributes[0], lightsAttributes[1]), { Title: "Demo Improvement #" + lightsAttributes[3], Line1: lightsAttributes[2], Line2: "<a href=\"http://www.gisassetmanager.com/demo/MGMT/AddReport.aspx?AssetID=" + lightsAttributes[3] + "\" target=\"_blank\">Report Damage</a>", Line3: "" }));
//    }

//    var plantersList = document.getElementById('ddlPlanters');
//    for (var i = 0; i < plantersList.options.length; i++) {
//        var plantersAttributes = plantersList.options[i].value.split(",");
//        PLANTERfeature.push(new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(plantersAttributes[0], plantersAttributes[1]), { Title: "Demo Improvement #" + plantersAttributes[3], Line1: plantersAttributes[2], Line2: "<img src=\"http://www.gisassetmanager.com/demo/Images/Assets/" + plantersAttributes[2] + ".gif\" />", Line3: "<a href=\"http://www.gisassetmanager.com/demo/MGMT/AddReport.aspx?AssetID=" + plantersAttributes[3] + "\" target=\"_blank\">Report Damage</a>" }));
//    }

//    var trashList = document.getElementById('ddlTrash');
//    for (var i = 0; i < trashList.options.length; i++) {
//        var trashAttributes = trashList.options[i].value.split(",");
//        TRASHfeature.push(new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(trashAttributes[0], trashAttributes[1]), { Title: "Demo Improvement #" + trashAttributes[3], Line1: trashAttributes[2], Line2: "<img src=\"http://www.gisassetmanager.com/demo/Images/Assets/" + trashAttributes[2] + ".gif\" />", Line3: "<a href=\"http://www.gisassetmanager.com/demo/MGMT/AddReport.aspx?AssetID=" + trashAttributes[3] + "\" target=\"_blank\">Report Damage</a>"}));
//    }

//    var signsList = document.getElementById('ddlSigns');
//    for (var i = 0; i < signsList.options.length; i++) {
//        var signsAttributes = signsList.options[i].value.split(",");
//        SIGNfeature.push(new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(signsAttributes[0], signsAttributes[1]), { Title: "Demo Improvement #" + signsAttributes[3], Line1: signsAttributes[2], Line2: "<a href=\"http://www.gisassetmanager.com/demo/MGMT/AddReport.aspx?AssetID=" + signsAttributes[3] + "\" target=\"_blank\">Report Damage</a>", Line3: "" }));
//    }

//    var otherList = document.getElementById('ddlOther');
//    for (var i = 0; i < otherList.options.length; i++) {
//        var otherAttributes = otherList.options[i].value.split(",");
//        OTHERfeature.push(new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(otherAttributes[0], otherAttributes[1]), { Title: "Demo Improvement #" + otherAttributes[3], Line1: otherAttributes[2], Line2: "<a href=\"http://www.gisassetmanager.com/demo/MGMT/AddReport.aspx?AssetID=" + otherAttributes[3] + "\" target=\"_blank\">Report Damge</a>", Line3: "" }));
//    }


//    //var MedicalStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ pointRadius: "6", fillColor: "#FFFFFF", strokeColor: "#FF0000", strokeWidth: 2 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var MedicalStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/doctor.png",graphicWidth: 32,graphicHeight: 37,graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });

//    var HistoricStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/historicalquarter.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var POIStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/realestate.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var EducationStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/university.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var OfficeStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/apartment.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var MunicipalStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/embassy.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var ArtsStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/theater.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var ParksStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/park.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399FF" }) });
//    var TransitStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/train.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var ParkingStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/parking.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var HotelsStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/hotel.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });

//    //var RestaurantStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ pointRadius: "6", fillColor: "#00FF00", strokeColor: "#660000", strokeWidth: 2 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RestBGStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/bar.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RestBakeryStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/coffee.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RestDeliStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/restaurant-buffet.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RestFastFoodStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/fastfood.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RestFineDiningStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/gourmet.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RestInternationalStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/restaurantchinese.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RestPizzaStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/pizza.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });

//    var RetailStylesApparel = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/clothes.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RetailStylesFootwear = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/shoes.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RetailStylesFinance = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/bank.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RetailStylesSalon = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/hairsalon.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RetailStylesBeauty = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/beauty.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RetailStylesArch = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/arch.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RetailStylesBook = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/bookstore.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });

//    var RConvenienceStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/convenience.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RCulturalStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/artgallery.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RDryCleanerStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/clothes-male.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RHardwareStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/tools.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RElectronicsStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/phones.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var REntertainmentStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/sight.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var REyeCareStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/eyedr.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RFabricsStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/textiles.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RFitnessStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/bike.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RFloristStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/flowers.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RFurnitureStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/furniture.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RGiftsStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/gifts.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RJewelryStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/jewelry.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RNonProfitStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/expert.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var ROfficeSuppliesStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/pens.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RPhotographyStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/photography.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RPostalStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/postal.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RPrintingStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/print.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RShoeReairStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/sneakers.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RSportingGoodsStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/usfootball.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RVarietyStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/deptstore.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RMedicalStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/firstaid.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var RFiremenStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ externalGraphic: "tree2/style/premiere_green/firemen.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -19 }), "select": new OpenLayers.Style({ fillColor: "#66ccff", strokeColor: "#3399ff" }) });


//    //represent assets using an icon
//    //var SignsStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ graphicName: "square", pointRadius: "6", fillColor: "#FF7200", strokeColor: "#AF5F00", strokeWidth: 2 }), "select": new OpenLayers.Style({ graphicName: "square", fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var signStyle = { externalGraphic: "images/Assets/white20.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -37, graphicOpacity: 1, cursor: "pointer" };
//    var sty = OpenLayers.Util.applyDefaults(signStyle, OpenLayers.Feature.Vector.style["default"]);
//    var SignsStyles = new OpenLayers.StyleMap({ 'default': sty });

//   // var TrashStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ graphicName: "square", pointRadius: "6", fillColor: "#FFD8AA", strokeColor: "#AF5F00", strokeWidth: 2 }), "select": new OpenLayers.Style({ graphicName: "square", fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var traStyle = { externalGraphic: "images/Assets/trash.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -37, graphicOpacity: 1, cursor: "pointer" };
//    var sty = OpenLayers.Util.applyDefaults(traStyle, OpenLayers.Feature.Vector.style["default"]);
//    var TrashStyles = new OpenLayers.StyleMap({ 'default': sty });
//        
//    //var BenchesStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ graphicName: "square", pointRadius: "6", fillColor: "#795800", strokeColor: "#4C3700", strokeWidth: 2 }), "select": new OpenLayers.Style({ graphicName: "square", fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var benchStyle = { externalGraphic: "images/Assets/bench.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -37, graphicOpacity: 1, cursor: "pointer" };
//    var sty = OpenLayers.Util.applyDefaults(benchStyle, OpenLayers.Feature.Vector.style["default"]);
//    var BenchesStyles = new OpenLayers.StyleMap({ 'default': sty });

//    //var PlantersStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ graphicName: "square", pointRadius: "6", fillColor: "#0BA200", strokeColor: "#076300", strokeWidth: 2 }), "select": new OpenLayers.Style({ graphicName: "square", fillColor: "#66ccff", strokeColor: "#3399FF" }) });
//    var planterStyle = { externalGraphic: "images/Assets/park.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -37, graphicOpacity: 1, cursor: "pointer" };
//    var sty = OpenLayers.Util.applyDefaults(planterStyle, OpenLayers.Feature.Vector.style["default"]);
//    var PlantersStyles = new OpenLayers.StyleMap({ 'default': sty });
//        
//    //var LightsStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ graphicName: "square", pointRadius: "6", fillColor: "#FDD600", strokeColor: "#4C3700", strokeWidth: 2 }), "select": new OpenLayers.Style({ graphicName: "square", fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var lightStyle = { externalGraphic: "images/Assets/powerlinepole.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -37, graphicOpacity: 1, cursor: "pointer" };
//    var sty = OpenLayers.Util.applyDefaults(lightStyle, OpenLayers.Feature.Vector.style["default"]);
//    var LightsStyles = new OpenLayers.StyleMap({ 'default': sty });

//    //var OtherStyles = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ graphicName: "square", pointRadius: "6", fillColor: "#B0DFFF", strokeColor: "#00006C", strokeWidth: 2 }), "select": new OpenLayers.Style({ graphicName: "square", fillColor: "#66ccff", strokeColor: "#3399ff" }) });
//    var othStyle = { externalGraphic: "images/Assets/cluster.png", graphicWidth: 32, graphicHeight: 37, graphicYOffset: -37, graphicOpacity: 1, cursor: "pointer" };
//    var sty = OpenLayers.Util.applyDefaults(othStyle, OpenLayers.Feature.Vector.style["default"]);
//    var OtherStyles = new OpenLayers.StyleMap({ 'default': sty });
//    

//    Historic = new OpenLayers.Layer.Vector('Historic', { styleMap: HistoricStyles, visibility: false });
//    Office = new OpenLayers.Layer.Vector('Office', { styleMap: OfficeStyles, visibility: false });
//    Arts = new OpenLayers.Layer.Vector('Arts', { styleMap: ArtsStyles, visibility: false });
//    Hotels = new OpenLayers.Layer.Vector('Hotels', { styleMap: HotelsStyles, visibility: false });
//    Education = new OpenLayers.Layer.Vector('Education', { styleMap: EducationStyles, visibility: false });
//    Medical = new OpenLayers.Layer.Vector('Medical', { styleMap: MedicalStyles, visibility: false });
//    Parks = new OpenLayers.Layer.Vector('Parks', { styleMap: ParksStyles, visibility: false });
//    POI = new OpenLayers.Layer.Vector('POI', { styleMap: POIStyles, visibility: false });
//    Parking = new OpenLayers.Layer.Vector('Parking', { styleMap: ParkingStyles, visibility: false });
//    Transit = new OpenLayers.Layer.Vector('Transit', { styleMap: TransitStyles, visibility: false });
//    Municipal = new OpenLayers.Layer.Vector('Municipal', { styleMap: MunicipalStyles, visibility: false });
//    Benches = new OpenLayers.Layer.Vector('Benches', { styleMap: MedicalStyles, visibility: false });
//    Ballers = new OpenLayers.Layer.Vector('Ballers', { styleMap: EducationStyles, visibility: false });
//    Planters = new OpenLayers.Layer.Vector('Planters', { styleMap: HistoricStyles, visibility: false });
//    Garbage = new OpenLayers.Layer.Vector('Garbage', { styleMap: POIStyles, visibility: false });

//    RestBarGrill = new OpenLayers.Layer.Vector('BarGrill', { styleMap: RestBGStyles, visibility: false });
//    RestBakery = new OpenLayers.Layer.Vector('Bakery', { styleMap: RestBakeryStyles, visibility: false });
//    RestDeli = new OpenLayers.Layer.Vector('Deli', { styleMap: RestDeliStyles, visibility: false });
//    RestFastFood = new OpenLayers.Layer.Vector('FastFood', { styleMap: RestFastFoodStyles, visibility: false });
//    RestFineDining = new OpenLayers.Layer.Vector('FineDining', { styleMap: RestFineDiningStyles, visibility: false });
//    RestInternational = new OpenLayers.Layer.Vector('International', { styleMap: RestInternationalStyles, visibility: false });
//    RestPizza = new OpenLayers.Layer.Vector('Pizza', { styleMap: RestPizzaStyles, visibility: false });
//    
//    
//    RetailApparel = new OpenLayers.Layer.Vector('Apparel', { styleMap: RetailStylesApparel, visibility: false });
//    RetailFootwear = new OpenLayers.Layer.Vector('Footwear', { styleMap: RetailStylesFootwear, visibility: false });
//    RetailFinance = new OpenLayers.Layer.Vector('Finance', { styleMap: RetailStylesFinance, visibility: false });
//    RetailSalon = new OpenLayers.Layer.Vector('Salon', { styleMap: RetailStylesSalon, visibility: false });
//    RetailBeauty = new OpenLayers.Layer.Vector('Beauty', { styleMap: RetailStylesBeauty, visibility: false });
//    RetailArch = new OpenLayers.Layer.Vector('Architecture', { styleMap: RetailStylesArch, visibility: false });
//    RetailBook = new OpenLayers.Layer.Vector('Bookstores', { styleMap: RetailStylesBook, visibility: false });

//    RConvenience = new OpenLayers.Layer.Vector('Convenience Stores', { styleMap: RConvenienceStyles, visibility: false });
//    RCultural = new OpenLayers.Layer.Vector('Culture~Civic', { styleMap: RCulturalStyles, visibility: false });
//    RDryCleaner = new OpenLayers.Layer.Vector('Dry Cleaners', { styleMap: RDryCleanerStyles, visibility: false });
//    RHardware = new OpenLayers.Layer.Vector('Hardware', { styleMap: RHardwareStyles, visibility: false });
//    RElectronics = new OpenLayers.Layer.Vector('Electronics', { styleMap: RElectronicsStyles, visibility: false });
//    REntertainment = new OpenLayers.Layer.Vector('Tattoo', { styleMap: REntertainmentStyles, visibility: false });
//    REyeCare = new OpenLayers.Layer.Vector('Eye Care', { styleMap: REyeCareStyles, visibility: false });
//    RFabrics = new OpenLayers.Layer.Vector('Fabrics', { styleMap: RFabricsStyles, visibility: false });
//    RFitness = new OpenLayers.Layer.Vector('Fitness', { styleMap: RFitnessStyles, visibility: false });
//    RFlorist = new OpenLayers.Layer.Vector('Florist', { styleMap: RFloristStyles, visibility: false });
//    RFurniture = new OpenLayers.Layer.Vector('Furniture', { styleMap: RFurnitureStyles, visibility: false });
//    RGifts = new OpenLayers.Layer.Vector('Furniture', { styleMap: RGiftsStyles, visibility: false });
//    RJewelry = new OpenLayers.Layer.Vector('Jewelry', { styleMap: RJewelryStyles, visibility: false });
//    RNonProfit = new OpenLayers.Layer.Vector('Non Profit', { styleMap: RNonProfitStyles, visibility: false });
//    ROfficeSupplies = new OpenLayers.Layer.Vector('Office Supplies', { styleMap: ROfficeSuppliesStyles, visibility: false });
//    RPhotography = new OpenLayers.Layer.Vector('Photogrpahy', { styleMap: RPhotographyStyles, visibility: false });
//    RPostal = new OpenLayers.Layer.Vector('Postal', { styleMap: RPostalStyles, visibility: false });
//    RPrinting = new OpenLayers.Layer.Vector('Printing', { styleMap: RPrintingStyles, visibility: false });
//    RShoeReair = new OpenLayers.Layer.Vector('Show Repair', { styleMap: RShoeReairStyles, visibility: false });
//    RSportingGoods = new OpenLayers.Layer.Vector('Sporting Goods', { styleMap: RSportingGoodsStyles, visibility: false });
//    RVariety = new OpenLayers.Layer.Vector('Variety Stores', { styleMap: RVarietyStyles, visibility: false });
//    RMedical = new OpenLayers.Layer.Vector('Medical Services', { styleMap: RMedicalStyles, visibility: false });
//    RFiremen = new OpenLayers.Layer.Vector('Fire Dept', { styleMap: RFiremenStyles, visibility: false });
//    

//    Benches = new OpenLayers.Layer.Vector('Benches', { styleMap: BenchesStyles, visibility: false });
//    Lights = new OpenLayers.Layer.Vector('Lights', { styleMap: LightsStyles, visibility: false });
//    Planters = new OpenLayers.Layer.Vector('Planters', { styleMap: PlantersStyles, visibility: false });
//    Trash = new OpenLayers.Layer.Vector('Garbage', { styleMap: TrashStyles, visibility: false });
//    Signs = new OpenLayers.Layer.Vector('Signs', { styleMap: SignsStyles, visibility: false });
//    Other = new OpenLayers.Layer.Vector('Other', { styleMap: OtherStyles, visibility: false });

//    Transit.addFeatures(TRANSITfeature);
//    Municipal.addFeatures(MUNICIPALfeature);
//    Historic.addFeatures(HISTORICfeature);
//    Office.addFeatures(OBFeature);
//    Arts.addFeatures(ARTSFeature);
//    Hotels.addFeatures(HOTELSfeature);
//    Education.addFeatures(EDUFeature);
//    Medical.addFeatures(MEDICALfeature);
//    Parks.addFeatures(PARKSfeature);
//    POI.addFeatures(POIFeature);
//    Parking.addFeatures(PARKINGfeature);

//    
//    RestBarGrill.addFeatures(RestBGfeature);
//    RestBakery.addFeatures(RestBCCfeature);
//    RestDeli.addFeatures(RestDfeature);
//    RestFastFood.addFeatures(RestFFfeature);
//    RestFineDining.addFeatures(RestFDfeature);
//    RestInternational.addFeatures(RestIfeature);
//    RestPizza.addFeatures(RestPfeature);

//    RetailApparel.addFeatures(RETAILApparelfeature);
//    RetailFootwear.addFeatures(RETAILFootwearfeature);
//    RetailFinance.addFeatures(RETAILFinancefeature);
//    RetailSalon.addFeatures(RETAILSalonfeature);
//    RetailBeauty.addFeatures(RETAILBeautyfeature);
//    RetailArch.addFeatures(RETAILArchfeature);
//    RetailBook.addFeatures(RETAILBookfeature);

//    
//    RCultural.addFeatures(RCulturalfeature);
//    RDryCleaner.addFeatures(RDryCleanerfeature);
//    RHardware.addFeatures(RHardwarefeature);
//    RElectronics.addFeatures(RElectronicsfeature);
//    REntertainment.addFeatures(REntertainmentfeature);
//    REyeCare.addFeatures(REyeCarefeature);
//    RFabrics.addFeatures(RFabricsfeature);
//    RFitness.addFeatures(RFitnessfeature);
//    RFlorist.addFeatures(RFloristfeature);
//    RFurniture.addFeatures(RFurniturefeature);
//    RGifts.addFeatures(RGiftsfeature);
//    RJewelry.addFeatures(RJewelryfeature);
//    RNonProfit.addFeatures(RNonProfitfeature);
//    ROfficeSupplies.addFeatures(ROfficeSuppliesfeature);
//    RPhotography.addFeatures(RPhotographyfeature);
//    RPostal.addFeatures(RPostalfeature);
//    RPrinting.addFeatures(RPrintingfeature);
//    RShoeReair.addFeatures(RShoeReairfeature);
//    RSportingGoods.addFeatures(RSportingGoodsfeature);
//    RVariety.addFeatures(RVarietyfeature);
//    RMedical.addFeatures(RMedicalfeature);
//    RConvenience.addFeatures(RConveniencefeature);
//    RFiremen.addFeatures(RFiremenfeature);


//    Benches.addFeatures(BENCHfeature);
//    Planters.addFeatures(PLANTERfeature);
//    Other.addFeatures(OTHERfeature);
//    Trash.addFeatures(TRASHfeature);
//    Signs.addFeatures(SIGNfeature);
//    Lights.addFeatures(LIGHTfeature);
       

    //NewarkBackground = new OpenLayers.Layer.Image('Newark Background', 'images/newarkbase2.png', new OpenLayers.Bounds(-74.1794066648, 40.7280543119, -74.155964215, 40.7485557479), new OpenLayers.Size(5131, 4488));
    //NewarkAerial = new OpenLayers.Layer.Image('Newark Aerial Photo', 'http://www.gisassetmanager.com/demo/olbackground/newarkap.jpg', new OpenLayers.Bounds(-74.1828243153, 40.7270810813, -74.1545017693, 40.7516485929), new OpenLayers.Size(6647, 5766));
    //GoogleStreets = new OpenLayers.Layer.Google("Streets", {});
    //GoogleHybrid = new OpenLayers.Layer.Google("Hybrid", { type: G_HYBRID_MAP });


    //map.addLayers([NewarkBackground, Transit, Municipal, Historic, Office, Arts, Hotels, Education, Medical, Parks, POI, Parking, Benches, Other, Trash, Planters, Signs, Lights, RestBarGrill, RestBakery, RestDeli, RestFastFood, RestFineDining, RestInternational, RestPizza, RetailApparel, RetailFootwear, RetailFinance, RetailSalon, RetailBeauty, RetailArch, RetailBook, RConvenience, RCultural, RDryCleaner, RHardware, RElectronics, REntertainment, REyeCare, RFabrics, RFitness, RFlorist, RFurniture, RGifts, RJewelry, RNonProfit, ROfficeSupplies, RPhotography, RPostal, RPrinting, RShoeReair, RSportingGoods, RVariety, RMedical, RFiremen]);

//    var select = new OpenLayers.Control.SelectFeature([Transit, Municipal, Historic, Office, Arts, Hotels, Education, Medical, Parks, POI, Parking, Benches, Other, Trash, Planters, Signs, Lights, RestBarGrill, RestBakery, RestDeli, RestFastFood, RestFineDining, RestInternational, RestPizza, RetailApparel, RetailFootwear, RetailFinance, RetailSalon, RetailBeauty, RetailArch, RetailBook, RConvenience, RCultural, RDryCleaner, RHardware, RElectronics, REntertainment, REyeCare, RFabrics, RFitness, RFlorist, RFurniture, RGifts, RJewelry, RNonProfit, ROfficeSupplies, RPhotography, RPostal, RPrinting, RShoeReair, RSportingGoods, RVariety, RMedical, RFiremen], { clickout: true });
//    Transit.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    Municipal.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    Historic.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    Office.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    Arts.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    Hotels.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    Education.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    Medical.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    Parks.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    POI.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    Parking.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    
//    Benches.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    Trash.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    Planters.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    Other.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    Signs.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    Lights.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });

//    //Restaurants.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RestBarGrill.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect }); ;
//    RestBakery.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect }); ;
//    RestDeli.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect }); ;
//    RestFastFood.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect }); ;
//    RestFineDining.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect }); ;
//    RestInternational.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect }); ;
//    RestPizza.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect }); ;


//    RetailApparel.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RetailFootwear.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RetailFinance.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RetailSalon.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RetailBeauty.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RetailArch.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RetailBook.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });

//    RConvenience.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RCultural.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RDryCleaner.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RHardware.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RElectronics.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    REntertainment.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    REyeCare.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RFabrics.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RFitness.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RFlorist.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RFurniture.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RGifts.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RJewelry.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RNonProfit.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    ROfficeSupplies.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RPhotography.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RPostal.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RPrinting.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RShoeReair.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RSportingGoods.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RVariety.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RMedical.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });
//    RFiremen.events.on({ "featureselected": onMarkerSelect, "featureunselected": onMarkerUnselect });

//    var highlightCtrl = new OpenLayers.Control.SelectFeature([Transit, Municipal, Historic, Office, Arts, Hotels, Education, Medical, Parks, POI, Parking, Benches, Other, Trash, Planters, Signs, Lights, RestBarGrill, RestBakery, RestDeli, RestFastFood, RestFineDining, RestInternational, RestPizza, RetailApparel, RetailFootwear, RetailFinance, RetailSalon, RetailArch, RetailBook, RConvenience, RCultural, RDryCleaner, RHardware, RElectronics, REntertainment, REyeCare, RFabrics, RFitness, RFlorist, RFurniture, RGifts, RJewelry, RNonProfit, ROfficeSupplies, RPhotography, RPostal, RPrinting, RShoeReair, RSportingGoods, RVariety, RMedical, RFiremen], { hover: true, highlightOnly: true, renderIntent: "temporary", eventListeners: { featurehighlighted: tooltipSelect, featureunhighlighted: tooltipUnselect} });


//alert("We are currently working on our demo, please check back tomorrow, thanks!");
//return;

    gisassetmanager.DataService.GetBusinessCategories(LoadCategoriesSuccess, LoadCategoriesFailure);

    LoadBusinesses();

    window.setTimeout(AddFeaturesToMap, 100);


    gisassetmanager.DataService.GetAssetTypes(LoadAssetTypesSuccess, LoadAssetTypesFailure);

    LoadAssets();

    window.setTimeout(AddAssetsToMap, 100);

//    //Add Controls to Map...the order in which you add these lines seems to matter!
   

    var lastFeature = null, tooltipPopup = null;

    

    
   
//    var overviewoptions = { div: $('overviewmap'), numZoomLevels: 20, minZoomLevel: 12, maxZoomLevel: 16, minScale: 12000, maxScale: 1000, units: "degrees", layer: [NewarkBackground] };
//    map.addControl(new OpenLayers.Control.OverviewMap(overviewoptions));
    
    ZoomToExtent();




}
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', '');

}
