﻿// Javascript for tool/map interaction

///Navigation Control

var navTimeout;

function ShowNav()
{
    window.clearTimeout(navTimeout);
    var navDiv = document.getElementById('Navigation_Holder');
    navDiv.style.filter = '';
    navDiv.style.opacity = '1';
}

function TransNav()
{
    navTimeout = window.setTimeout(DoTransNav, 2000);
}

function DoTransNav()
{
    var navDiv = document.getElementById('Navigation_Holder');
    navDiv.style.filter = 'alpha(opacity=50)';
    navDiv.style.opacity = '.5';
}

///Toolbar Tools

function FullExtent()
{
    var message = "ControlID=Map1&ControlType=Map&EventArg=FullExtent";
    //9.3 (Min 5/26/09)
    //	var context = map.controlName;
    var context = this;
    ReturnInvocation(message, context);
}

function ZoomIn()
{
    var message = "ControlID=Map1&ControlType=Map&EventArg=ZoomIn";
    //9.3 (Min 5/26/09)
    //	var context = map.controlName;
    var context = this;
    ReturnInvocation(message, context);
}

function ZoomOut()
{
    var message = "ControlID=Map1&ControlType=Map&EventArg=ZoomOut";
    //9.3 (Min 5/26/09)
    //	var context = map.controlName;
    var context = this;
    ReturnInvocation(message, context);
}

function CenterAt(e)
{
    getXY(e);
    var message = "ControlID=Map1&ControlType=Map&EventArg=CenterAt&X=" + mouseX + "&Y=" + mouseY;
	var context = map.controlName;
    ReturnInvocation(message, context);
}

function CenterMap(x, y)
{
    HideMaptip();
    var message = "ControlID=Map1&ControlType=Map&EventArg=CenterMapServer&X=" + x + "&Y=" + y;
	var context = map.controlName;
    ReturnInvocation(message, context);
}

//Center coordinates

function ToggleCenter()
{
    var centPoint = document.getElementById('CenterPoint');
    if (centPoint.style.display == 'none')
        centPoint.style.display = '';
    else
        centPoint.style.display = 'none';
}

function setFirstCenter(x,y)
{
    var centLink = document.getElementById('TextArea1');    
    centLink.innerText = x + ', ' + y;
}

//Left Panels

var lastPanelId = null;

function ClearLeftPanels()
{
    var leftHolder = document.getElementById('LeftPanelCellDiv');
    var children = leftHolder.childNodes;
    
    for (var i = 0; i < children.length; i++)
    {
        if (children[i].tagName == 'DIV')
            children[i].style.display = 'none';
    }
}

function ShowPanel(ElementId)
{    
    var panelToShow = document.getElementById(ElementId);
    
    if (panelToShow != null)
    {
        ClearLeftPanels();
        panelToShow.style.display = '';
        
        if (webMapAppPanelDisplay.style.display == "none")
        {
            expandPanelDock();
        }  
        
        var message = "ControlID=Map1&ControlType=Map&EventArg=PanelLayers&Value=" + ElementId + "&LastID=" + lastPanelId;
        //9.3 (Min 5/26/09)
        //	var context = map.controlName;
        var context = this;
        ReturnInvocation(message, context);    
        
        lastPanelId = ElementId;       
    }   
}

function ShowPanelandClearResults(ElementId)
{
    ShowPanel(ElementId);
    ClearResults();
}

//Search

var defaultSearchText = 'Address or Feature...';

function SearchOnKeyDown(event)
{
    if (event.keyCode == 13) //up 38, down 40, enter 13
    {       
        Search();
    }  
}

function Search()
{
    previousResultControl = null;
    previousResultDetails = null;

    var textElement = document.getElementById('SearchText');
    var searchText = textElement.value;
    if (searchText != defaultSearchText && searchText.length > 0)
    {
        var message = "ControlID=Map1&ControlType=Map&EventArg=Search&Value=" + searchText;
        //9.3 (Min 5/26/09)
        //	var context = map.controlName;
        var context = this;
        ReturnInvocation(message, context);
        
        if (webMapAppPanelDisplay.style.display == "none")
        {
            expandPanelDock();
        } 
    }
}

function Search2(value)
{
    previousResultControl = null;
    previousResultDetails = null;

    var message = "ControlID=Map1&ControlType=Map&EventArg=Search&Value=" + value;
    //9.3 (Min 5/26/09)
    //	var context = map.controlName;
    var context = this;
    ReturnInvocation(message, context);
    
    if (webMapAppPanelDisplay.style.display == "none")
    {
        expandPanelDock();
    } 
}

var previousResultControl = null;
var previousResultDetails = null;

function ClearResults()
{
    previousResultControl = null;
    previousResultDetails = null;

    var message = "ControlID=Map1&ControlType=Map&EventArg=ClearResults";
    //9.3 (Min 5/26/09)
    //	var context = map.controlName;
    var context = this;
    ReturnInvocation(message, context);
}

function ClearSelection()
{
    var message = "ControlID=Map1&ControlType=Map&EventArg=ClearSelection";
    //9.3 (Min 5/26/09)
    //	var context = map.controlName;
    var context = this;
    ReturnInvocation(message, context);
}

function ResultClick (x,y,type,controlId)
{   
    var resultControl = document.getElementById(controlId);
    var detailsControl = document.getElementById(controlId + "_panel");  
    
    if (previousResultControl != controlId)
    {        
        ZoomToPoint(x,y,type);
    }
    else
    {
        previousResultControl = null;
        previousResultDetails = null;
    
        resultControl.style.color = "";
        ClearSelection();
    }
}

function ResetResults()
{
    if (previousResultControl != null)
    {     
        var prevControl = document.getElementById(previousResultControl);
        var prevDetails = document.getElementById(previousResultDetails);
        
        prevControl.style.color = "";
        prevDetails.style.display = 'none';
        
        previousResultControl = null;
        previousResultDetails = null;
    }
}

function ResultHover(controlId)
{
    var detailsControl = document.getElementById(controlId + "_panel");
    detailsControl.style.display = '';
}

function ResultOut(controlId)
{
    if (controlId != previousResultControl)
    {
        var detailsControl = document.getElementById(controlId + "_panel");
        detailsControl.style.display = 'none';
    }
}

function SeeAllResults(link, panel)
{
    var seeAllLink = document.getElementById(link);
    var allResultsPanel = document.getElementById(panel);
    seeAllLink.style.display = 'none';
    allResultsPanel.style.display = '';
}

function ZoomToPoint(x,y,type)
{
    var message = "ControlID=Map1&ControlType=Map&EventArg=ZoomTo&X=" + x + "&Y=" + y + "&Type=" + type;
    //9.3 (Min 5/26/09)
    //	var context = map.controlName;
    var context = this;
    ReturnInvocation(message, context);
}

function UpdateSearchClass(className)
{
    var searchButton = document.getElementById('SearchButton');
    searchButton.className;
}

function SearchTextFocus(textBoxElement)
{
    var value = textBoxElement.value;
    if (value == defaultSearchText)
    {
        textBoxElement.value = '';
        textBoxElement.style.color = '#2F2F2F';
    }
}

function SearchTextBlur(textBoxElement)
{
    var value = textBoxElement.value;
    if (value.length == 0)
    {
        textBoxElement.value = 'Address or Feature...';
        textBoxElement.style.color = '';
    }
}

function StatusChange(fid, elementId, featureclass, oid)
{
    var selectElement = document.getElementById(elementId);
    var value = selectElement[selectElement.selectedIndex].value;
    var message = "ControlID=Map1&ControlType=Map&EventArg=UpdateMaintenance&Value=" + value + "&ID=" + fid + "&FeatureClass=" + featureclass + "&OID=" + oid;;
    //9.3 (Min 5/26/09)
    //	var context = map.controlName;
    var context = this;
    ReturnInvocation(message, context);
}

function UpdateNote(itemId, featureclass, oid)
{
    var noteElement = document.getElementById('NoteInput_' + itemId);
    var value = noteElement.value;
    var message = "ControlID=Map1&ControlType=Map&EventArg=UpdateNote&Value=" + value + "&ID=" + itemId + "&FeatureClass=" + featureclass + "&OID=" + oid;
    //9.3 (Min 5/26/09)
    //	var context = map.controlName;
    var context = this;
    ReturnInvocation(message, context);
}

function BuildMaptipCache()
{
    var message = "ControlID=Map1&ControlType=Map&EventArg=BuildMaptipCache";
    //9.3 (Min 5/26/09)
    //	var context = map.controlName;
    var context = this;
    ReturnInvocation(message, context);    
}

//Maptips
var maptipTimeout = null;

var currentFeatureId = null;
var currentFeatureClass = null;
var currentFeatureName = null;
var currentFeatureX = null;
var currentFeatureY = null;
var panelId = null;
var hideLink = false;

function MaptipOver(e, elementId, oid, featureClass, featureName, imageName, mainStatus, mainDesc, mainNote, x, y)
{
    currentFeatureId = oid;
    currentFeatureClass = featureClass;
    currentFeatureName = featureName;
    currentFeatureX = x;
    currentFeatureY = y;
    panelId = elementId;
    
    window.clearTimeout(maptipTimeout);
    var panel = document.getElementById('FeatureHoverInfoPanel');
    var label = document.getElementById('HoverInfo_FeatName');
        
    label.innerHTML = '';
    label.appendChild(document.createTextNode(featureName));
    getXY(e);
    
    var imagePanel = document.getElementById('HoverInfo_ImagePanel');
    if (imageName.length > 0)
    {        
        var imageLink = document.getElementById('HoverInfo_ImageLink');
        var image = document.getElementById('HoverInfo_Image');
        imagePanel.style.display = '';
        imageLink.href = 'images/assets/' + imageName.replace('.jpg','_small.jpg');
        image.src = 'images/assets/' + imageName.replace('.jpg','_tb.jpg');
    }
    else
    {
        imagePanel.style.display = 'none';
    }
                    
    var maintDetailElem = document.getElementById('ShowMaint');    
    var maintSubmitElem = document.getElementById('SubmitMaint');
    
    var panelUpdated = false;
    for (i=0;i<lastUpdateId.length;i++)
    {
        if (elementId == lastUpdateId[i])
            panelUpdated = true;
    }

    if (!panelUpdated)
    {
        if (mainStatus.length > 0)
        {
            var maintStatusElem = document.getElementById('MaintStatus');
            var maintNoteElem = document.getElementById('MaintNote');
            var maintLabelElem = document.getElementById('MaintLabel');
            
            maintDetailElem.style.display = '';
            maintSubmitElem.style.display = 'none';
            
            maintLabelElem.innerHTML = '';
            maintStatusElem.innerHTML = '';
            maintLabelElem.appendChild(document.createTextNode("Currently under maintenance"));
            maintStatusElem.appendChild(document.createTextNode("Status: " + mainStatus));
            if (mainNote.length > 0)
            {
                maintNoteElem.style.display = '';
                maintNoteElem.innerHTML = '';
                maintNoteElem.appendChild(document.createTextNode("Note from FCCA: " + mainNote));
            }
            else
            {
                maintNoteElem.style.display = 'none';
            }
        }    
        else
        {
            maintDetailElem.style.display = 'none';
            maintSubmitElem.style.display = '';
        }
    }
    else
    {
        maintDetailElem.style.display = 'none';
        maintSubmitElem.style.display = 'none';
    }
    
    var left = mouseX + 10;
    var top = mouseY - 30;
    var panelWidth = panel.clientWidth;
    var panelHeight = panel.clientHeight;
    var panelRight = panelWidth + left;
    var panelBottom = panelHeight + top;
    
    if (panelRight + 13 > webMapAppWindowWidth)
        left = mouseX - 13 - panelWidth;
    
    if (panelBottom + 13 > webMapAppWindowHeight)
        top = webMapAppWindowHeight - panelHeight - 13;
        
    panel.style.left = left + 'px';
    panel.style.top = top + 'px';
    
    panel.style.display = '';
}

function MaptipOut()
{
    maptipTimeout = window.setTimeout(HideMaptip, 1000);
}

function HideMaptip()
{    
    var panel = document.getElementById('FeatureHoverInfoPanel');
    var label = document.getElementById('HoverInfo_FeatName');
    label.innerHTML = '';
    panel.style.display = 'none';
}

function MaptipPanelOver()
{
    window.clearTimeout(maptipTimeout);
}

function MaptipPanelOut()
{
    maptipTimeout = window.setTimeout(HideMaptip, 1000);
}

var openMaintFeatureName = null;
var openMaintFeatureId = null;
var openMaintFeatureClass = null;
var openMaintFeatureX = null;
var openMaintFeatureY = null;
var lastElementId = null;
var lastUpdateId = new Array();

function OpenMaintenance()
{
    HideMaptip();
    
    var indicator = document.getElementById('MaintIndicator');
    indicator.style.display = 'none';
    
    openMaintFeatureName = currentFeatureName;
    openMaintFeatureId = currentFeatureId;
    openMaintFeatureClass = currentFeatureClass;
    openMaintFeatureX = currentFeatureX;
    openMaintFeatureY = currentFeatureY;
    lastElementId = panelId;   
    
    var featureNameElement = document.getElementById('ReportMaint_FeatureName');
    featureNameElement.innerHTML = '';
    featureNameElement.appendChild(document.createTextNode(openMaintFeatureClass + ' - ' + openMaintFeatureName));
    
    var startPanel = document.getElementById('PanelSubmitRequest');
    var finishPanel = document.getElementById('PanelFinishSubmitRequest');
    startPanel.style.display = '';
    finishPanel.style.display = 'none';
    
    ShowPanel('ReportMaintenance');
}

function ShowRequestFinish()
{
    var startPanel = document.getElementById('PanelSubmitRequest');
    var finishPanel = document.getElementById('PanelFinishSubmitRequest');
    startPanel.style.display = 'none';
    finishPanel.style.display = ''; 
}

function SubmitMaintenance()
{
    var indicator = document.getElementById('MaintIndicator');
    indicator.style.display = '';
    
    var nameElement = document.getElementById('SubmitMaintenanceName');
    var phoneElement = document.getElementById('SubmitMaintenancePhone');
    var descriptionElement = document.getElementById('SubmitMaintenanceDesc');
    var contactText = nameElement.value + ", " + phoneElement.value;
    var descriptionText = descriptionElement.value;
    var message = "ControlID=Map1&ControlType=Map&EventArg=SubmitMaintenance&X=" + openMaintFeatureX + "&Y=" + openMaintFeatureY + "&Layer=" + openMaintFeatureClass + "&ObjectId=" + openMaintFeatureId + "&Name=" + openMaintFeatureName + "&Description=" + descriptionText + "&Contact=" + contactText;
    //9.3 (Min 5/26/09)
    //	var context = map.controlName;
    var context = this;
    ReturnInvocation(message, context);
}