dojo.require("esri.map");
dojo.require("esri.toolbars.navigation");
dojo.require("esri.tasks.identify");
dojo.require("dijit.layout.LayoutContainer");
dojo.require("dijit.layout.BorderContainer");
dojo.require("dijit.layout.ContentPane");
dojo.require("dijit.layout.TabContainer");
dojo.require("dijit.Dialog");
dojo.require("dijit.form.Button");
dojo.require("dijit.Toolbar");
dojo.require("dijit.TitlePane");
dojo.require("dojox.timing._base");

//esriConfig.defaults.io.proxyUrl = "proxy.ashx";
//esriConfig.defaults.io.alwaysUseProxy = false;


var map, navToolbar, identifyTask, identifyParams, symbol;
var layerresults;
var greenMapLayer, streetMapLayer, imageryLayer, tepSolarLayer;
var tocHTML = ""; //used to update the toc
var layerlist = new Array();
var mapTipQueryTask;
var mapTipQuery;

var timer;
var hoverpnt;
var resizeTimer;
var mapTipGraphicsLayer;

function init() {
    var layersLoaded = 0; //varible to keep track of when all layers have been loaded.
    var loading = dojo.byId("loadingImg"); //loading image. id
    timer = new dojox.timing.Timer(350);
    //            map = new esri.Map("map");


    esriConfig.defaults.map.sliderLabel = null;

    //  map = new esri.Map("map");//, { extent: new esri.geometry.Extent(200000, -10000, 1300000, 800000, new esri.SpatialReference({wkid:2223})) });



    streetMapLayer = new esri.layers.ArcGISTiledMapServiceLayer("http://pcmaps1.pima.gov/ArcGIS/rest/services/BaseMaps/StreetBaseMapWhiteNoAnno_SP/MapServer"); //, { tileServers: ["http://arcgis1.dot.pima.gov/ArcGIS/rest/services/pcbasemap/MapServer", "http://grimm.dot.pima.gov/ArcGIS/rest/services/pcbasemap/MapServer"]});//, "http://buzz.dot.pima.gov/ArcGIS/rest/services/pcbasemap/MapServer", "http://grimm.dot.pima.gov/ArcGIS/rest/services/pcbasemap/MapServer"] });


    imageryLayer = new esri.layers.ArcGISTiledMapServiceLayer("http://pcmaps1.pima.gov/ArcGIS/rest/services/BaseMaps/OrthobaseHybridNoAnno_SP/MapServer"); //, { tileServers: ["http://arcgis1.dot.pima.gov/ArcGIS/rest/services/orthobase/MapServer", "http://grimm.dot.pima.gov/ArcGIS/rest/services/orthobase/MapServer"]});//, "http://buzz.dot.pima.gov/ArcGIS/rest/services/orthobase/MapServer", "http://grimm.dot.pima.gov/ArcGIS/rest/services/orthobase/MapServer"] });

    tepSolarLayer = new esri.layers.ArcGISDynamicMapServiceLayer("http://pcmaps1.pima.gov/ArcGIS/rest/services/Environmental/tepsolar_opt/MapServer");

    greenMapLayer = new esri.layers.ArcGISDynamicMapServiceLayer("http://pcmaps1.pima.gov/ArcGIS/rest/services/Environmental/greenmapopt/MapServer");

    annoLayer = new esri.layers.ArcGISTiledMapServiceLayer("http://pcmaps1.pima.gov/ArcGIS/rest/services/BaseMaps/BaseMapAnno_SP/MapServer"); //, { tileServers: ["http://arcgis1.dot.pima.gov/ArcGIS/rest/services/orthobase/MapServer", "http://grimm.dot.pima.gov/ArcGIS/rest/services/orthobase/MapServer"]});//, "http://buzz.dot.pima.gov/ArcGIS/rest/services/orthobase/MapServer", "http://grimm.dot.pima.gov/ArcGIS/rest/services/orthobase/MapServer"] });


    addToTOC("Other", 39);
    addToTOC("Wildlife Center/Zoo", 38);
    addToTOC("Swimming", 37);
    addToTOC("Sunrise/Sunset Viewing", 36);
//    addToTOC("Stream Flow Gauge", 35);
    addToTOC("State/National Parks and Forests", 34);
    addToTOC("Star Gazing Site", 33);
    addToTOC("Solar PV", 32);
    addToTOC("Solar Hot Water", 40);
    addToTOC("Scenic Vista", 31);
    addToTOC("River Park", 30);
    addToTOC("Reuse Shop", 29);
    addToTOC("Recycling Center", 28);
    addToTOC("Rainwater Harvesting", 27);
    addToTOC("Public Park/Recreation", 26);
    addToTOC("Public Library", 25);
    addToTOC("Public Art", 24);
    addToTOC("Permaculture Site", 23);
    addToTOC("Park N Ride/Transit Center", 22);
    addToTOC("Native Plants Garden", 21);
    addToTOC("Museum", 20);
    addToTOC("Historical Site", 19);
    addToTOC("Hiking Trailheads", 18);
    addToTOC("Habitat Restoration Site", 17);
    addToTOC("Greywater Site", 16);
    addToTOC("Green Maps Available", 15);
    addToTOC("Green Building/Community", 14);
    addToTOC("Food Bank/Soup Kitchen", 13);
    addToTOC("Festival Location", 12);
    addToTOC("Farmers Market/Local Food", 11);
    addToTOC("Education Center", 10);
    addToTOC("Duck Pond", 9);
    addToTOC("Dog Park", 8);
    addToTOC("Composting Site", 7);
    addToTOC("Community/Neighborhood Center", 6);
    addToTOC("Community Garden", 5);
    addToTOC("Camping", 4);
    addToTOC("Bird/Wildlife Watching", 3);
    addToTOC("Alternative Fuel Station", 2);
//    addToTOC("Air Quality Station", 1);
    addToTOC("All", 0);

    addTEPSolarLayerTOC();

    var lods = [
          { "level": 0, "resolution": 1736.11458334028, "scale": 2000000 },
          { "level": 1, "resolution": 868.057291670139, "scale": 1000000 },
          { "level": 2, "resolution": 434.028645835069, "scale": 500000 },
          { "level": 3, "resolution": 217.014322917535, "scale": 250000 },
          { "level": 4, "resolution": 86.8057291670139, "scale": 100000 },
          { "level": 5, "resolution": 41.6667500001667, "scale": 48000 },
          { "level": 6, "resolution": 20.8333750000833, "scale": 24000 },
          { "level": 7, "resolution": 10.4166875000417, "scale": 12000 },
          { "level": 8, "resolution": 4.16667500001667, "scale": 4800 },
          { "level": 9, "resolution": 2.08333750000833, "scale": 2400 },
          { "level": 10, "resolution": 1.04166875000417, "scale": 1200 },
          { "level": 11, "resolution": 0.520834375002083, "scale": 600 }
        ];

    map = new esri.Map("mapDiv", {
        extent: streetMapLayer.fullExtent,
        lods: lods,
        nav: false
    });
    dojo.connect(map, "onLoad", showLoading);
    dojo.connect(map, "onZoomStart", showLoading);

    dojo.connect(map, "onPanStart", showLoading); 
    dojo.connect(annoLayer, "onUpdate", hideLoading);
    dojo.connect(streetMapLayer, "onUpdate", hideLoading);
    dojo.connect(imageryLayer, "onUpdate", hideLoading);
    dojo.connect(greenMapLayer, "onUpdate", hideLoading);
    dojo.connect(tepSolarLayer, "onUpdate", hideLoading);
    dojo.connect(dijit.byId('mapDiv'), 'resize', function() {
        resizeMap();
    });
    dojo.connect(map, "onZoomEnd", setLayerOpacity);


    dojo.style(dojo.byId('loadingImg'), {
        visibility: 'visible'
    });
    dojo.style(dijit.byId('aerialMapButton').domNode, {
        visibility: 'visible'
    });
    dojo.style(dijit.byId('streetMapButton').domNode, {
        visibility: 'visible'
    });
    dojo.style(dijit.byId('help_panel').domNode, {
        visibility: 'visible'
    });


 //   initFunctionality(map);
    map.addLayer(streetMapLayer);
    map.addLayer(imageryLayer);
    map.addLayer(greenMapLayer);
    map.addLayer(tepSolarLayer);
    map.addLayer(annoLayer);

    //            if (greenMapLayer.loaded) {
    //                setLayerDefinitions(greenMapLayer);
    //                dojo.connect(mapTipGraphicsLayer, "onUpdate", hideLoading);
    //            }
    //            else {
    //                dojo.connect(greenMapLayer, "onLoad", setLayerDefinitions);
    //                dojo.connect(mapTipGraphicsLayer, "onUpdate", hideLoading);
    //            }


    imageryLayer.hide();
    tepSolarLayer.hide();
    dojo.connect(map, "onLoad", initFunctionality(map));
    // dojo.connect(greenMapLayer, "onUpdate", initFunctionality(map));
    dijit.byId("aerialMapButton").setAttribute("checked", false);
    dijit.byId("streetMapButton").setAttribute("checked", true);
    navToolbar = new esri.toolbars.Navigation(map);
    
    function showLoading() {
        esri.show(loading);
        //                map.disableMapNavigation();
        //                map.hideZoomSlider();
    }

    function hideLoading() {
        layersLoaded++;
        
        if (layersLoaded >= map.layerIds.length - 3) {
            esri.hide(loading);
            //                    map.enableMapNavigation();
            //                    map.showZoomSlider();
            layersLoaded = 0;
        }
    }
    function setLayerOpacity(extent, zoomFactor, anchor, level) {
        if (level > 7) {
            tepSolarLayer.setOpacity(0.4);
        }
        else {
            tepSolarLayer.setOpacity(1.0);
        }
    }


}



//Handle resize of browser
function resizeMap() {
    clearTimeout(resizeTimer);
    resizeTimer = setTimeout(function() {
        //    map.height = map.height - 100;
        map.resize();
        map.reposition();
    }, 800);
}



//**************************************************************
//TOC FUNCTIONS

function addToTOC(layer, LayerID) {
    //            if (listLayers) {
    //                if (layer.loaded) {
    //                    buildLayerList(layer);
    //                }
    //                else {
    //                    dojo.connect(layer, "onLoad", buildLayerList);
    //                }
    //            }
    //            else {
    //                if (layer.loaded) {
    layerlist[LayerID] = true;
    buildLayerListRoot(layer, LayerID);
    //                }
    //                else {
    //                    dojo.connect(layer, "onLoad", buildLayerListRoot);
    //                }
    //           }
}

function addTEPSolarLayerTOC() {

    layerName1 = "Solar PV"
    layerName2 = "Solar Hot Water"
    layerID = 1;
    friendlyName1 = layerName1.replace("/", "_");
    friendlyName2 = layerName2.replace("/", "_");

    //var currentLayer = layer;
    dojo.byId("tepToc").innerHTML = "<input type='checkbox' dojotype='dijit.form.CheckBox' class='TEPSolarTOC' " + " UNCHECKED " + " id='tepSolartoc" + layerID + "' onclick=\"toggleTEPService();\" style='vertical-align:middle;/><label for='" + layerName1 + "'> Residential Solar by ZIP</label><br>" +
    "<img src='images/blank.gif' width='24' height='24'><img src='icons/" + friendlyName1 + ".png' alt='Residential Solar by ZIP' title='Residential Solar by ZIP' width='24' height='24' style='vertical-align:middle; '/>Solar PV<br>" +
    "<img src='images/blank.gif' width='24' height='24'><img src='icons/" + friendlyName2 + ".png' alt='Residential Solar by ZIP' title='Residential Solar by ZIP' width='24' height='24' style='vertical-align:middle; '/>Solar Hot Water<br>"
    //tocHTML = "<img src='images/blank.bmp'><input type='checkbox' dojotype='dijit.form.CheckBox' class='TOC_Root' " + (currentLayer.visible ? " CHECKED " : "") + " id='" + currentLayer.id + "' onclick=\"toggleService('" + currentLayer.id + "');\" /><label for='" + currentLayer.id + "'>" + currentLayer.id + "</label><br>" + tocHTML;
    //tocHTML = "<input id='" + currentLayer.id + "' dojotype='dijit.form.CheckBox' class='TOC_Root' name='developer' " + (currentLayer.visible ? " CHECKED " : "") + " value='on' type='checkbox' onclick=\"toggleService('" + currentLayer.id + "');\" /><label for='" + currentLayer.id + "'>" + currentLayer.id + "</label>"  + tocHTML;
     //= tocHTML;
}

function buildLayerListRoot(layerName, layerID) {
    friendlyName = layerName.replace("/", "_");
    

    //var currentLayer = layer;
    tocHTML = "<img src='icons/" + friendlyName + ".png' alt='" + layerName + "' title='" + layerName + "' width='24' height='24' style='vertical-align:middle; '/><input type='checkbox' dojotype='dijit.form.CheckBox' class='TOC_Root' " + " CHECKED " + " id='toc" + layerID + "' onclick=\"toggleService('" + layerID + "');\" style='vertical-align:middle;/><label for='" + layerName + "'> " + layerName + "</label><br>" + tocHTML;
    //tocHTML = "<img src='images/blank.bmp'><input type='checkbox' dojotype='dijit.form.CheckBox' class='TOC_Root' " + (currentLayer.visible ? " CHECKED " : "") + " id='" + currentLayer.id + "' onclick=\"toggleService('" + currentLayer.id + "');\" /><label for='" + currentLayer.id + "'>" + currentLayer.id + "</label><br>" + tocHTML;
    //tocHTML = "<input id='" + currentLayer.id + "' dojotype='dijit.form.CheckBox' class='TOC_Root' name='developer' " + (currentLayer.visible ? " CHECKED " : "") + " value='on' type='checkbox' onclick=\"toggleService('" + currentLayer.id + "');\" /><label for='" + currentLayer.id + "'>" + currentLayer.id + "</label>"  + tocHTML;
    dojo.byId("toc").innerHTML = tocHTML;
}

function toggleLayer(id) {
    var layerDiv = dojo.byId(id + 'Layers');
    var icon = dojo.byId(id + 'Icon');
    if (layerDiv.style.display == 'block') {
        icon.src = "images/expand.bmp";
        layerDiv.style.display = 'none';
    }
    else {
        icon.src = "images/close.bmp";
        layerDiv.style.display = 'block';
    }

}

//        function zoomToLayer(id) {
//            var layer = map.getLayer(id);
//            if (layer != null) {
//                map.setExtent(layer.fullExtent);
//            }
//        }

//function buildLayerList(layer) {

//    //   addToTransparencyList(layer);
//    var currentLayer = layer;
//    var currentHTML = "";
//    currentHTML += "<img src='images/expand.bmp' id='" + currentLayer.id + "Icon' onclick=\"toggleLayer('" + currentLayer.id + "')\" ><input type='checkbox' dojotype='dijit.form.CheckBox' class='TOC_Root' " + (currentLayer.visible ? " CHECKED " : "") + " id='" + currentLayer.id + "' onclick=\"toggleService('" + currentLayer.id + "');\" /><label for='" + currentLayer.id + "'>" + currentLayer.id + "</label><br>";
//    var subLayers = currentLayer.layerInfos;
//    currentHTML += "<div id='" + currentLayer.id + "Layers' style='display:none;'>";
//    for (var i = 0; i < subLayers.length; i++) {
//        var currentSubLayer = subLayers[i];
//        if (currentSubLayer.defaultVisibility) {
//            visible.push(currentSubLayer.id);
//        }
//        currentHTML += "<img src='images/blank.bmp'><img src='images/blank.bmp'><input type='checkbox' class='" + currentLayer.id + "TOC' " + (currentSubLayer.defaultVisibility ? " CHECKED " : "") + " id='toc" + currentSubLayer.id + "' onclick=\"updateLayerVisibility('" + currentLayer.id + "','" + currentSubLayer.id + "');\" /><label for='" + currentSubLayer.id + "'>" + currentSubLayer.name + "</label><br>";
//    }
//    currentHTML += "</table></div>";

//    tocHTML = currentHTML + tocHTML;

//    dojo.byId("toc").innerHTML = tocHTML;
//}



function updateLayerVisibility(serviceID, layerid) {
    var inputs = dojo.query("." + serviceID + "TOC"), input;
    visible = [];
    for (var i = 0, il = inputs.length; i < il; i++) {
        if (inputs[i].checked) {
            visible.push(inputs[i].id);
        }
    }

    var layer = map.getLayer(serviceID);
    layer.setVisibleLayers(visible);
}

function toggleTEPService() {
    if (tepSolarLayer.visible) {
        tepSolarLayer.hide();
    }
    else {
        tepSolarLayer.show();
    }
}

function toggleService(layerID) {
    if (layerID == 0) {
        layerlist[layerID] = !layerlist[layerID]
        setLayerVisability(greenMapLayer, layerlist[0]);
    }
    else {
        layerlist[layerID] = !layerlist[layerID]
        setLayerDefinitions(greenMapLayer);
    }
    //            var layer = map.getLayer(layerID);
    //            if (layer.visible) {
    //                layer.hide();
    //            }
    //            else {
    //                layer.show();
    //            }
}

//END TOC FUNCTIONS
//**************************************************************
function setLayerVisability(layer, allayers) {
    var layerDefinitions = [];
    var infos = layer.layerInfos, info;
    var items = [];
    catlist = "(";
    firstone = true;
    allon = true;
    for (var i = 1; i < layerlist.length; i++) {
        layerlist[i] = allayers;
        if (dojo.byId("toc" + i) != null) {
            dojo.byId("toc" + i).checked = allayers;
        }

    }
    catlist = catlist + ")";
    for (var i = 0, il = infos.length; i < il; i++) {
        info = infos[i];
        if (info.name == "grnmappts") {
            //        layerDefinitions[infos[i].id] = "\"Category3\" = '" + infos[info.parentLayerId].name + "' AND 1<>1";
            layerDefinitions[infos[i].id] = "1<>1";
        }
    }

    if (allayers == true) {
        layer.setDefaultLayerDefinitions();
        mapTipQuery.where = "1=1";
        //  mapTipQueryTask.execute(mapTipQuery);
    }
    else {

        layer.setLayerDefinitions(layerDefinitions);
        mapTipQuery.where = "1<>1";
        //  mapTipQueryTask.execute(mapTipQuery);
    }
}

function setLayerDefinitions(layer) {

    var infos = layer.layerInfos, info;
    var layerDefinitions = new Array(100);
    var items = [];

    catlist = "(";
    firstone = true;
    allon = true;
    for (var i = 1; i < layerlist.length; i++) {
        if (layerlist[i] == true) {
            if (firstone == true) {
                catlist = catlist + i;
                firstone = false;
            }
            else {
                catlist = catlist + "," + i;
            }
        }
        else {
            allon = true;
        }

    }
    catlist = catlist + ")";
    for (var i = 0, il = infos.length; i < il; i++) {
        info = infos[i];
        if (info.name == "grnmappts") {
            //    layerDefinitions[infos[i].id] = "\"Category3\" = '" + infos[info.parentLayerId].name + "' AND CATEGORY in " + catlist;
            layerDefinitions[infos[i].id] = "CATEGORY in " + catlist;
            // layerDefinitions[infos[i].id] = "1<>1 AND CATEGORY in " + catlist;;
        }
    }
    mapTipQuery.where = "CATEGORY in " + catlist;
    //   mapTipQueryTask.execute(mapTipQuery);
    //    layer.setDefaultLayerDefinitions();
    layer.setLayerDefinitions(layerDefinitions);
}
function identifyMode() {

    dijit.byId("zoomin").setAttribute("checked", false);
    dijit.byId("zoomout").setAttribute("checked", false);
    dijit.byId("pan").setAttribute("checked", false);
    dijit.byId("identify").setAttribute("checked", true);
    navToolbar.activate(esri.toolbars.Navigation.PAN);
    //    navToolbar.deactivate();
    dojo.connect(map, "onClick", doIdentify);

}

function setImageryTheme() {
    dijit.byId("aerialMapButton").setAttribute("checked", true);
    dijit.byId("streetMapButton").setAttribute("checked", false);
    imageryLayer.show();
    streetMapLayer.hide();
}

function setStreetMapTheme() {
    dijit.byId("aerialMapButton").setAttribute("checked", false);
    dijit.byId("streetMapButton").setAttribute("checked", true);
    imageryLayer.hide();
    streetMapLayer.show();
}


function initFunctionality(map) {
    mapTipQueryTask = new esri.tasks.QueryTask("http://pcmaps1.pima.gov/ArcGIS/rest/services/Environmental/greenmapopt/MapServer/0");

//    //build query filter
    mapTipQuery = new esri.tasks.Query();
    mapTipQuery.returnGeometry = true;
    mapTipQuery.where = "1=1"
    mapTipQuery.outFields = ["Name", "Address", "Comments", "Category1"];

    //create the infoTemplate to be used in the infoWindow.
    //All ${attributeName} will be substituted with the attribute value for current feature.
    infoTemplate = new esri.InfoTemplate("${Name}", "Category: ${Category1}<br />Address: ${Address}<br />Comments: ${Comments}");
    //            map.infoWindow.resize(245, 125);

//    //define the layer for the maptip graphics
    var mapTipGraphicsLayer = new esri.layers.GraphicsLayer();
    var mapTipHighlightLayer = new esri.layers.GraphicsLayer();
    // symbol = new esri.symbol.SimpleMarkerSymbol("STYLE_CIRCLE", 12, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_DASHDOT, new dojo.Color([255, 0, 0]), 2), new dojo.Color([255, 255, 0, 0.5]));

    //Can listen for onComplete event to process results or can use the callback option in the queryTask.execute method.
    dojo.connect(mapTipQueryTask, "onComplete", function(featureSet) {
        map.graphics.clear();
        //        map.graphics.disableMouseEvents();
//        mapTipGraphicsLayer.clear();
//        mapTipHighlightLayer.clear();
//        map.removeLayer(mapTipGraphicsLayer);
//        map.removeLayer(mapTipHighlightLayer);
        //        var highlightSymbol = new esri.symbol.SimpleMarkerSymbol("STYLE_CIRCLE", 18, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_NULL, new dojo.Color([255, 255, 0]), 2), new dojo.Color([127, 255, 0, 0.5]));
        //var highlightSymbol = new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255,0,0]), 3);
        //        var symbol = new esri.symbol.SimpleMarkerSymbol("STYLE_CIRCLE", 12, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_NULL, new dojo.Color(255, 0, 0, 0.0), 2), new dojo.Color([255, 0, 0, 0.0]));
        var graphic
        //QueryTask returns a featureSet.  Loop through features in the featureSet and add them to the map.
        for (var i = 0, il = featureSet.features.length; i < il; i++) {
            //Get the current feature from the featureSet.
            //Feature is a graphic
            graphic = featureSet.features[i];
            //            graphic.setSymbol(symbol); //symbol);
            graphic.setInfoTemplate(infoTemplate);

            //Add graphic to the counties graphics layer.
            //        mapTipGraphicsLayer.add(graphic);
        }
        var content = graphic.getContent();
        var title = graphic.getTitle();
        map.infoWindow.setContent(content);
        map.infoWindow.setTitle(title);
    
        map.graphics.add(graphic);
        map.infoWindow.show(map.toScreen(graphic.geometry), map.getInfoWindowAnchor(map.toScreen(graphic.geometry)));
        //        map.addLayer(mapTipGraphicsLayer);
        //        map.addLayer(mapTipHighlightLayer);


    });
//        map.graphics.enableMouseEvents();

//        timer.onTick = function() {

//            if (timer.isRunning) {
//                map.infoWindow.show(hoverpnt.screenPoint, map.getInfoWindowAnchor(hoverpnt.screenPoint));
//            }

//            timer.stop();

//        };
//        //listen for when the onMouseOver event fires on the countiesGraphicsLayer
//        //when fired, create a new graphic with the geometry from the event.graphic and add it to the maps graphics layer
//        dojo.connect(mapTipGraphicsLayer, "onMouseOver", function(evt) {

//            mapTipHighlightLayer.clear(); //use the maps graphics layer as the highlight layer
//            var content = evt.graphic.getContent();
//            map.infoWindow.setContent(content);
//            var title = evt.graphic.getTitle();
//            map.infoWindow.setTitle(title);
//            var highlightGraphic = new esri.Graphic(evt.graphic.geometry, highlightSymbol);

//            mapTipHighlightLayer.add(highlightGraphic);
//            map.infoWindow.hide();


//            hoverpnt = evt;
//            timer.stop();
//            timer.start(); // start the timer
//            //   
//        });

//        //listen for when map.graphics onMouseOut event is fired and then clear the highlight graphic
//        //and hide the info window
//        dojo.connect(mapTipHighlightLayer, "onMouseOut", function(evt) {
//            mapTipHighlightLayer.clear();
//            //                    map.infoWindow.hide();
//            //                    timer.onTick = function() { map.infoWindow.hide(); };

//            if (timer.isRunning) {

//                timer.stop();

//            }
//            //

//        });

    //    });
    //create the infoTemplate to be used in the infoWindow.
    //All ${attributeName} will be substituted with the attribute value for current feature.
  //  infoTemplate = new esri.InfoTemplate("${Name}", "Category: ${Category1}<br />Address: ${Address}<br />Comments: ${Comments}");
    //            map.infoWindow.resize(245, 125);

   // mapTipGraphicsLayer = new esri.layers.GraphicsLayer();
    //mapTipQueryTask.execute(mapTipQuery);
    dojo.connect(map, "onClick", doIdentify);

    //    identifyTask = new esri.tasks.IdentifyTask("http://pcmaps1.pima.gov/ArcGIS/rest/services/Environmental/tepsolar_opt/MapServer");

//    identifyParams = new esri.tasks.IdentifyParameters();
//    identifyParams.tolerance = 3;
//    identifyParams.returnGeometry = true;
//    identifyParams.layerIds = [2];
//    identifyParams.layerOption = esri.tasks.IdentifyParameters.LAYER_OPTION_TOP;

  //  map.addLayer(mapTipGraphicsLayer);

    //symbol = new esri.symbol.SimpleMarkerSymbol(esri.symbol.SimpleMarkerSymbol.STYLE_X, 20, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255, 0, 0]), 2), new dojo.Color([255, 255, 0, 0.5]));
 //   symbol = new esri.symbol.PictureMarkerSymbol("images/identify.png", 25, 25);




}

function doIdentify(evt) {
    map.graphics.clear();
//    identifyParams.geometry = evt.mapPoint;
    //    identifyParams.mapExtent = map.extent;
    identifyTol = 3;
    xFactor = identifyTol * map.extent.getWidth() / map.width;
    yFactor = identifyTol * map.extent.getHeight() / map.height;
    pointExtent = new esri.geometry.Extent(evt.mapPoint.x - xFactor, evt.mapPoint.y - yFactor, evt.mapPoint.x + xFactor, evt.mapPoint.y + yFactor, new esri.SpatialReference({ wkid: 2223 }))
    mapTipQuery.geometry = pointExtent; 
    mapTipQueryTask.execute(mapTipQuery);
  //  identifyTask.execute(identifyParams, function(idResults) { addToMap(idResults, evt); });
}
function addToMap(idResults, evt) {
//    var content = evt.graphic.getContent();
//    map.infoWindow.setContent(content);
//    var title = evt.graphic.getTitle();
    //    map.infoWindow.setTitle(title);
    //create the infoTemplate to be used in the infoWindow.
    //All ${attributeName} will be substituted with the attribute value for current feature.
    infoTemplate = new esri.InfoTemplate("${Name}", "Category: ${Category1}<br />Address: ${Address}<br />Comments: ${Comments}");
    
    feature = idResults[0].feature;
    feature.setInfoTemplate(infoTemplate)
    feature.setSymbol(symbol);

    var content = feature.getContent();
    var title = feature.getTitle();
    map.infoWindow.setContent(content);
    map.infoWindow.setTitle(title);
    
    map.graphics.add(feature);
    map.infoWindow.show(evt.screenPoint, map.getInfoWindowAnchor(evt.screenPoint));
}

function zoomInMode() {
    dijit.byId("zoomin").setAttribute("checked", true);
    dijit.byId("zoomout").setAttribute("checked", false);
    dijit.byId("pan").setAttribute("checked", false);
    dijit.byId("identify").setAttribute("checked", false);
    navToolbar.activate(esri.toolbars.Navigation.ZOOM_IN);
    //  dojo.connect(map, "onClick", navToolbar.activate(esri.toolbars.Navigation.ZOOM_IN));
}

function zoomOutMode() {
    dijit.byId("zoomin").setAttribute("checked", false);
    dijit.byId("zoomout").setAttribute("checked", true);
    dijit.byId("pan").setAttribute("checked", false);
    dijit.byId("identify").setAttribute("checked", false);
    navToolbar.activate(esri.toolbars.Navigation.ZOOM_OUT);
    // dojo.connect(map, "onClick", navToolbar.activate(esri.toolbars.Navigation.ZOOM_OUT));
}

function panMode() {
    dijit.byId("zoomin").setAttribute("checked", false);
    dijit.byId("zoomout").setAttribute("checked", false);
    dijit.byId("pan").setAttribute("checked", true);
    dijit.byId("identify").setAttribute("checked", false);
    navToolbar.activate(esri.toolbars.Navigation.PAN);

}






dojo.addOnLoad(init);

