﻿dojo.provide("Indy.PropertyAssessmentViewer.Tools");
var toolUp;
Indy.PropertyAssessmentViewer.Tools.ZoomInTool = function(){
    var onClick = function(){
        toolUp = 'ZoomIn';
        Indy.PropertyAssessmentViewer.Tools.PanTool.onMouseOut();
        Indy.PropertyAssessmentViewer.Tools.ZoomOutTool.onMouseOut();
        Indy.PropertyAssessmentViewer.Identify.onMouseOut();
        Indy.PropertyAssessmentViewer.Tools.ZoomInTool.onMouseDown();
        dojo.disconnect(identifyHandler);
        //dojo.byId("ToolUp").innerHTML = "Pan";
        document.getElementById("mapDiv").style.cursor="url('images/cursors/zoom-in.cur'), crosshair";
        //document.getElementById("mapDiv").style.cursor="crosshair";
        //dojo.byId("ToolUp").innerHTML = "Zoom In";
        
        if (tb != null){
            tb.deactivate();
        }
        tb = new esri.toolbars.Draw(myMap);  
        //set drawing mode to extent
        tb.activate(esri.toolbars.Draw.EXTENT);
        //find points in Extent when user completes drawing extent
        dojo.connect(tb, "onDrawEnd", onZoomInMove);
    }
    
    function onZoomInMove(extent){
        myMap.setExtent(extent);        
    }
    
    var onMouseDown = function(){
        dojo.byId("ZoomInTool").style.backgroundImage = "url('images/zoom-in_ON.gif')";
    }
    
    var onMouseOut = function(){
        if (toolUp != 'ZoomIn'){
            dojo.byId("ZoomInTool").style.backgroundImage = "url('images/zoom-in.png')";
        }
    }
    
    var onMouseOver = function(){
        if (toolUp != 'ZoomIn'){
            dojo.byId("ZoomInTool").style.backgroundImage = "url('images/zoom-in_HOVER.gif')";
        }
    }
    
    return {
        onClick:onClick,
        onMouseDown:onMouseDown,
        onMouseOut:onMouseOut,
        onMouseOver:onMouseOver
    }
}();



Indy.PropertyAssessmentViewer.Tools.FullExtentTool = function(){
    var onClick = function(){
        Indy.PropertyAssessmentViewer.Tools.FullExtentTool.onMouseDown();
        
        var initialExtentString = configDataForMap.layout.initialExtent;
        var initialExtentArray = initialExtentString.split(" ", 4);
        var inExtentXMin = parseFloat(initialExtentArray[0]);
        var inExtentYMin = parseFloat(initialExtentArray[1]);
        var inExtentXMax = parseFloat(initialExtentArray[2]);
        var inExtentYMax = parseFloat(initialExtentArray[3]);
        
        var spatialReference = parseFloat(configDataForMap.layout.spatialReference);
        initialExtent = new esri.geometry.Extent(inExtentXMin, inExtentYMin, inExtentXMax, inExtentYMax, new esri.SpatialReference({
            wkid: spatialReference
        }));
        //document.getElementById("mapDiv").style.cursor = "default";
        
        //var myMap = esri.map.readMap.myMap.map;
        myMap.setExtent(initialExtent);
    }
    
    var onMouseOut = function(){
        dojo.byId("FullExtentTool").style.backgroundImage = "url('images/zoom-full-extent1.png')";
    }
    
    var onMouseDown = function(){
        dojo.byId("FullExtentTool").style.backgroundImage = "url('images/zoom-full-extent_ON.gif')";
    }
    
    var onMouseOver = function(){
        dojo.byId("FullExtentTool").style.backgroundImage = "url('images/zoom-full-extent_HOVER.gif')";
    }
    
    return {
        onClick:onClick,
        onMouseOut:onMouseOut,
        onMouseDown:onMouseDown,
        onMouseOver:onMouseOver
    }
}();


/**Pan tool**/
Indy.PropertyAssessmentViewer.Tools.PanTool = function(){
   var onClick = function(){
        toolUp = 'Pan';
        Indy.PropertyAssessmentViewer.Tools.ZoomInTool.onMouseOut();
        Indy.PropertyAssessmentViewer.Tools.ZoomOutTool.onMouseOut();
        Indy.PropertyAssessmentViewer.Identify.onMouseOut();
        Indy.PropertyAssessmentViewer.Tools.PanTool.onMouseDown();
        //dojo.disconnect(map, "onClick", HTMLGenerators.IdentifyGenerator.Builder.doIdentify);
        if (identifyHandler){
            dojo.disconnect(identifyHandler);
        }
        document.getElementById("mapDiv").style.cursor = "url('images/cursors/pan.cur'), move";
        if (tb != null){
            tb.deactivate();
        }
    }
           
    var onMouseDown = function(){
        dojo.byId("PanMapTool").style.backgroundImage = "url('images/pan_ON.gif')"
    }
    
    var onMouseOut = function(){
        if (toolUp != 'Pan'){
            dojo.byId("PanMapTool").style.backgroundImage = "url('images/pan.png')";
        }
    }
    
     var onMouseOver = function(){
        if (toolUp != 'Pan'){
            dojo.byId("PanMapTool").style.backgroundImage = "url('images/pan_HOVER.gif')";
        }
    }
    
    return {
        onClick:onClick,
        onMouseDown:onMouseDown,
        onMouseOut:onMouseOut,
        onMouseOver:onMouseOver
    }
}();


Indy.PropertyAssessmentViewer.Tools.ZoomOutTool = function(){
    var onClick = function(){
        toolUp = 'ZoomOut';
        Indy.PropertyAssessmentViewer.Tools.PanTool.onMouseOut();
        Indy.PropertyAssessmentViewer.Tools.ZoomInTool.onMouseOut();
        Indy.PropertyAssessmentViewer.Identify.onMouseOut();
        Indy.PropertyAssessmentViewer.Tools.ZoomOutTool.onMouseDown();
        if (identifyHandler){
            dojo.disconnect(identifyHandler);
        }
        document.getElementById("mapDiv").style.cursor="url('images/cursors/zoom-out.cur'), crosshair";
        if (tb != null){
            tb.deactivate();
        }
        tb = new esri.toolbars.Draw(myMap);  
        //set drawing mode to extent
        tb.activate(esri.toolbars.Draw.EXTENT);
        //find points in Extent when user completes drawing extent
        dojo.connect(tb, "onDrawEnd", onZoomOutMove);
    }
    
    function onZoomOutMove(extent){
        var currentExtent = myMap.extent;
        var currentXMax = currentExtent.xmax;
        var currentXMin = currentExtent.xmin;
        var currentYMax = currentExtent.ymax;
        var currentYMin = currentExtent.ymin;
        var xMax = extent.xmax;
        var xMin = extent.xmin;
        var yMax = extent.ymax;
        var yMin = extent.ymin;
        var currentYDif = currentYMax - currentYMin;
        var yDif = yMax - yMin;
        var yProportion = currentYDif/yDif;
        var newXMax = currentXMax + (currentYDif * 0.5);
        var newXMin = currentXMin - (currentYDif * 0.5);
        var newYMax = currentYMax + (currentYDif * 0.5);
        var newYMin = currentYMin - (currentYDif * 0.5);
        var newExtent = new esri.geometry.Extent(newXMin, newYMin, newXMax, newYMax, new esri.SpatialReference({
            wkid: 2965
        }));
        myMap.setExtent(newExtent);
    }
    
    var onMouseDown = function(){
        dojo.byId("ZoomOutTool").style.backgroundImage = "url('images/zoom-out_ON.gif')"
    }
    
    var onMouseOut = function(){
        if (toolUp != 'ZoomOut'){
            dojo.byId("ZoomOutTool").style.backgroundImage = "url('images/zoom-out.png')";
        }
    }
    
     var onMouseOver = function(){
        if (toolUp != 'ZoomOut'){
            dojo.byId("ZoomOutTool").style.backgroundImage = "url('images/zoom-out_HOVER.gif')";
        }
    }
    
    return {
        onClick:onClick,
        onMouseDown:onMouseDown,
        onMouseOut:onMouseOut,
        onMouseOver:onMouseOver
    }
}();

Indy.PropertyAssessmentViewer.Tools.ClearGraphics = function(){
    var onClick = function(){
        Indy.PropertyAssessmentViewer.Tools.ClearGraphics.onMouseDown();
        myMap.graphics.clear();
        Ext.MessageBox.alert('Clear Selection','Selected features have been cleared.',null);
    }
    
    var onMouseOut = function(){
        dojo.byId("ClearGraphicsTool").style.backgroundImage = "url('images/select-clear.png')";
    }
    
    var onMouseDown = function(){
        dojo.byId("ClearGraphicsTool").style.backgroundImage = "url('images/select-clear_ON.gif')";
    }
    
    var onMouseOver = function(){
        dojo.byId("ClearGraphicsTool").style.backgroundImage = "url('images/select-clear_HOVER.gif')";
    }
    
    return {
        onClick:onClick,
        onMouseOut:onMouseOut,
        onMouseDown:onMouseDown,
        onMouseOver:onMouseOver
    }
}();