// CivXplorer code to handle mouse click functions
// Suzanne Fliege, Allied Information Solutions, Inc.

// handler for the tools
var toolMode = "none";
var measureActive = false;

// user tools
// also MDNS Map Toolset Prehandler
function clickFunction(toolName) {
    if (toolName.indexOf("Draw") == -1) {
        // reset annotation dialog
    	document.getElementById('cxAnnoType').value = "nothing";
    	ResetAnnotationDialog()
    }
    if (toolName.indexOf("Selection") == -1) {
        measureActive = false;
    }
    if (toolName != "Zoom All" && toolName != "Clear All" && toolName != "Zoom Last") {
        ClearIdentifyMode();
        // reset on-map
        document.getElementById('cxToolHelpDialog').style.visibility = "hidden";
        // reset footer
        document.getElementById('cxIDLayer').style.display = "none";  
        document.getElementById('cxSelectLayer').style.display = "none";  
        document.getElementById('cxSelectType').style.display = "none";  
        document.getElementById('cxSelectShape').style.display = "none";  
        document.getElementById('cxMeasureArea').style.display = "none";
        document.getElementById('mdnsMapMeasurementPalette').style.display = "none";  
        document.getElementById('linkNavSubmit').style.display = "none";  
        document.getElementById('linkNavCancel').style.display = "none";
        document.getElementById('mdnsMapZoomControl').style.display = "inline";  
		// reset map navigation buttons
		document.getElementById('cxOnMap-ZoomIn').className = "CXtoolBarButtonNormal";
		document.getElementById('cxOnMap-ZoomOut').className = "CXtoolBarButtonNormal";
		document.getElementById('cxOnMap-Recenter').className = "CXtoolBarButtonNormal";
		document.getElementById('cxOnMap-Identify').className = "CXtoolBarButtonNormal";
		document.getElementById('cxOnMap-Select').className = "CXtoolBarButtonNormal";
		document.getElementById('cxOnMap-Measure').className = "CXtoolBarButtonNormal";
    }
	// reset menus and tools
	resetAllMenus();
	resetDropdownItems();
	hideAllDropdowns();
	hideHelp();
	toolMode = toolName.toLowerCase();
	switch(toolName) {
	case "nothing":
		window.status="";
		break
	case "Edit Shapes":
		break
	case "Zoom In":
		document.getElementById('cxOnMap-ZoomIn').className = "CXtoolBarButtonSelected";
		break
	case "Zoom Out":
		document.getElementById('cxOnMap-ZoomOut').className = "CXtoolBarButtonSelected";
		break
	case "Recenter":
		document.getElementById('cxOnMap-Recenter').className = "CXtoolBarButtonSelected";
		break
	case "Measure":
	alert("measure!");
        document.getElementById('mdnsMapMeasurementPalette').style.display = "none";  
        document.getElementById('linkNavCancel').style.display = "none";
		break
	case "Selection Rectangle":
        document.getElementById('cxOnMap-Select').className = "CXtoolBarButtonSelected";
        document.getElementById('mdnsMapZoomControl').style.display = "none";  
        document.getElementById('cxSelectLayer').style.display = "inline";  
        document.getElementById('cxSelectType').style.display = "inline";  
        document.getElementById('cxSelectShape').style.display = "inline";  
        document.getElementById('cxToolHelpDialog').style.visibility = "visible";
	    var tempString = "Click a point or drag a rectangle on the map to select features.<br>Specify active layer and selection type below Map.";
	    updateContent("cxToolHelpText",tempString);
        //document.getElementById('cxSelectTypeDropdown').value = "new";
	    break
	case "Selection Circle":
        document.getElementById('cxOnMap-Select').className = "CXtoolBarButtonSelected";
        document.getElementById('mdnsMapZoomControl').style.display = "none";  
        document.getElementById('cxSelectLayer').style.display = "inline";  
        document.getElementById('cxSelectType').style.display = "inline";  
        document.getElementById('cxSelectShape').style.display = "inline";  
        document.getElementById('cxToolHelpDialog').style.visibility = "visible";
	    var tempString = "Drag a circle on the map to select features.<br>Specify active layer and selection type below Map.";
	    updateContent("cxToolHelpText",tempString);
        //document.getElementById('cxSelectTypeDropdown').value = "new";
	    break
	case "Selection Polyline":
	    var tempString = '';
	    if (measureActive) {
            document.getElementById('cxOnMap-Measure').className = "CXtoolBarButtonSelected";
            document.getElementById('cxMeasureArea').style.display = "inline";
            document.getElementById('mdnsMapMeasurementPalette').style.display = "inline";
	        tempString = "Click on map to draw line to measure.<br>Distances will be displayed below map.";
	    } else {
            document.getElementById('cxOnMap-Select').className = "CXtoolBarButtonSelected";
            document.getElementById('cxSelectLayer').style.display = "inline";  
            document.getElementById('cxSelectType').style.display = "inline";  
            document.getElementById('cxSelectShape').style.display = "inline";  
            document.getElementById('cxToolHelpDialog').style.visibility = "visible";
            document.getElementById('linkNavSubmit').style.display = "inline";
	        tempString = "Click on map to draw a line to select features.<br>Click 'DO SELECTION' below map to activate selection.<br>Specify active layer and selection type below Map.";
        }  
        document.getElementById('mdnsMapZoomControl').style.display = "none";  
        document.getElementById('linkNavCancel').style.display = "inline";
	    updateContent("cxToolHelpText",tempString);
		break
	case "Selection Polygon":
	    var tempString = '';
	    if (measureActive) {
            document.getElementById('cxOnMap-Measure').className = "CXtoolBarButtonSelected";
            document.getElementById('cxMeasureArea').style.display = "inline";
            document.getElementById('mdnsMapMeasurementPalette').style.display = "inline";
	        tempString = "Click on map to draw line/area to measure.<br>Distances/Area will be displayed below map.";
	    } else {
            document.getElementById('cxOnMap-Select').className = "CXtoolBarButtonSelected";
            document.getElementById('cxSelectLayer').style.display = "inline";  
            document.getElementById('cxSelectType').style.display = "inline";  
            document.getElementById('cxSelectShape').style.display = "inline";  
            document.getElementById('cxToolHelpDialog').style.visibility = "visible";
            document.getElementById('linkNavSubmit').style.display = "inline";
	        tempString = "Click on map to draw polygon to select features.<br>Click 'DO SELECTION' below map to activate selection.<br>Specify active layer and selection type below Map.";
        }
        document.getElementById('mdnsMapZoomControl').style.display = "none";  
        document.getElementById('linkNavCancel').style.display = "inline";
	    updateContent("cxToolHelpText",tempString);
		break
	case "Identify": // hover identify
		document.getElementById('cxOnMap-Identify').className = "CXtoolBarButtonSelected";
        document.getElementById('mdnsMapZoomControl').style.display = "none";  
        document.getElementById('cxIDLayer').style.display = "inline";  
        document.getElementById('cxToolHelpDialog').style.visibility = "visible";
        if (document.cxForm.txtBrowser.value == "ie6to9") {
	        var tempString = "Hover over a feature for a second and information will display.<br>Specify active layer below Map.";
	    } else {
	        var tempString = "Click on a feature and information will display.<br>Specify active layer below Map.";
	    }
	    updateContent("cxToolHelpText",tempString);
        SetIdentifyMode();
		break
	case "clear selection":
	    ClearHandler("selection", "tempLayer");
	    break
	case "clear annotation":
	    ClearHandler("annotation", "tempLayer");
	    break
	case "selectdisplay": // show current selection in sidebar
		showSidebar("cxSelection");
		updateContent("toolSidebar",menuSpace+"Selection");
		break
	case "layers": // show layer list in sidebar
		showSidebar("cxTOC");
		updateContent("toolSidebar",menuSpace+"Map Layers");
		break
	case "disclaimer": // show disclaimer info in sidebar
		showSidebar("cxDisclaimer");
		updateContent("toolSidebar",menuSpace+"Disclaimer");
		break
	case "sources": // show source info in sidebar
		showSidebar("cxSources");
		updateContent("toolSidebar",menuSpace+"Sources");
		break
	case "annotation": // show annotation dialog in sidebar
		showSidebar("cxAnnotation");
		updateContent("toolSidebar",menuSpace+"Map Annotation");
		break
	default:
		//alert("Function Not Available");
	}
}

// *******************************
//    select/measure tools
// *******************************
// open measure
function OpenMeasureOnMap() {
    var doArea = document.cxForm.MeasureAreaToggle.checked;
    if (doArea) {
        MapToolset_SelectPolygon_Click();
    } else {
        MapToolset_SelectLine_Click();
    }
}

// open selection
function OpenSelectOnMap() {
    // deactivate measure
    measureActive = false;
    // reset selection type to new
	document.getElementById('cxSelectTypeDropdown').value = "new";
    // set the selection shape
    var theDropdown = document.cxForm.cxSelectShapeDropdown
    var theCurrentShape = theDropdown.options[theDropdown.selectedIndex].value;
	switch(theCurrentShape) {
	case "boxpt":
	    MapToolset_SelectRect_Click();
	    break
	case "line":
	    MapToolset_SelectLine_Click();
	    break
	case "polygon":
	    MapToolset_SelectPolygon_Click();
	    break
	case "circle":
	    MapToolset_SelectCircle_Click();
	    break
	default:
	    alert("not a valid shape!");
	}
}

// specify selection shape
function SetSelectShape() {
    var theDropdown = document.cxForm.cxSelectShapeDropdown
    var theCurrentShape = theDropdown.options[theDropdown.selectedIndex].value;
    switch(theCurrentShape) {
	case "boxpt":
	    MapToolset_SelectRect_Click();
	    break
	case "line":
	    MapToolset_SelectLine_Click();
	    break
	case "polygon":
	    MapToolset_SelectPolygon_Click();
	    break
	case "circle":
	    MapToolset_SelectCircle_Click();
	    break
	default:
	    alert("not a valid shape!");
	}
}

// save select layer to session
function SetSelectLayer(theLayer) {
    // reset selection type to new
	document.getElementById('cxSelectTypeDropdown').value = "new";
	// send to session variable
    CallbackMethods.SetSelectLayer(theLayer,EmptyCallback);
}

// *******************************
//    reports/attribute display
// *******************************
// open report link from dropdown
function openReportURL() {
    var theURL = document.getElementById('cxReportList').value;
    if (theURL != "nothing") {
        openPopupDisplay(theURL);
    } else {
        alert("Specify a Report!");
    }
}

// clear and move Identify bubble on map hover
function IdentifyBubbleMove(xPix,yPix) {
    xPix += borderWidth*2 + sidebarWidth + frameWidth;
    yPix += headerHeight + menuHeight + frameWidth;
    if (xPix > (winWidth-borderWidth-200)) {
        document.getElementById('cxIdentify').style.left = (xPix-200) + "px";
    } else {
        document.getElementById('cxIdentify').style.left = (xPix+20) + "px";
    }
    if (yPix > (winHeight-footerHeight-200)) {
        var testString = document.getElementById('cxIdentify').innerHTML;
        if (testString.indexOf('Linked Photo') != -1) {
            document.getElementById('cxIdentify').style.top = (yPix-200) + "px";
        } else {
            document.getElementById('cxIdentify').style.top = (yPix-20) + "px";
        }
    } else {
        document.getElementById('cxIdentify').style.top = (yPix+20) + "px";
    }
    return false;
}
