﻿function HighlightPowerlines(highlightKey, filterValue, newLayerName) {
    // Create a new XMLHttpRequest object...
    var xmlHttp = GetXMLHttpRequest();

    // Toggle on the progressbar...
    try { window.top.GetTaskFrame().showWaitingImage(); } catch (ex) { }
    
    // Define the response handler...
    xmlHttp.onreadystatechange = function() {
        if (xmlHttp.readyState == 4) {
            try {
                //Display a message if the XML document is null...
                var xmlDoc = xmlHttp.responseXML.documentElement;
                if (xmlDoc == null) {
                    var returnValue = xmlHttp.responseText;
                    if (returnValue != null && returnValue.length > 0) {
                        alert(returnValue);
                    }
                    else {
                        alert("Unable to highlight powerlines.");
                    }
                    
                    // Toggle off the progressbar and return...
                    try { window.top.GetTaskFrame().hideWaitingImage(); } catch (ex) { }
                    
                    return;
                }

                // Zoom to extent of the highlight...
                window.top.ZoomExtents(xmlDoc);

                // Refresh the map...
                window.top.RefreshMap();

                // Toggle off the progressbar...
                try { window.top.GetTaskFrame().hideWaitingImage(); } catch (ex) { }

                // Load the returned records into the task panel...
                try {
                    var criteriaString = "";
                    var datalinkList = "";
                    var nodeDatalinks = xmlDoc.getElementsByTagName('DestinationNodeDatalinks')[0];
                    if (nodeDatalinks.childNodes.length > 0) {
                        datalinkList = nodeDatalinks.firstChild.data;
                        criteriaString = "NA~datalink~In~" + datalinkList + "~200";
                    }
                    else {
                        criteriaString = "NA~datalink~LessThan~0~200";
                    }

                    var featureName = "";
                    var nodeFeatureName = xmlDoc.getElementsByTagName('DestinationFeatureName')[0];
                    if (nodeFeatureName.childNodes.length > 0) {
                        featureName = nodeFeatureName.firstChild.data;
                    }

                    window.top.GetTaskFrame().showLoadingImage();
                    window.top.GetTaskFrame().document.getElementById("HighlightResults").style.display = "";
                    window.top.GetTaskFrame().document.getElementById("embeddedFrame").src = "QueryResultsGrid.aspx?queryKey=" + highlightKey + "&featureName=" + featureName + "&featureView=&criteria=" + criteriaString;
                    window.top.GetTaskFrame().SetResultsData(featureName, datalinkList);
                } catch (ex) { alert(ex.message); }
            }
            catch (e) {
                try { window.top.GetTaskFrame().hideWaitingImage(); } catch (ex) { }
                alert(e.message);
            }
        }
    }

    var sessionId = _SESSION_ID;
    var mapDefinition = _MAP_DEFINITION;

    // Make the request...
    xmlHttp.open("GET", "../MapGuide/AjaxApi.aspx?sessionId=" + sessionId + "&mapDefinition=" + mapDefinition + "&highlightKey=" + highlightKey + "&filterValue=" + filterValue + "&newLayerName=" + newLayerName + "&command=HIGHLIGHT_POWERLINES", true);
    xmlHttp.send(null);
}

function ClearHighlightLayers() {
    // Create a new XMLHttpRequest object...
    var xmlHttp = GetXMLHttpRequest();
    var sessionId = _SESSION_ID;
    var mapDefinition = _MAP_DEFINITION;

    // Make the request...
    xmlHttp.open("GET", "../MapGuide/AjaxApi.aspx?sessionId=" + sessionId + "&mapDefinition=" + mapDefinition + "&command=CLEAR_ALL_HIGHLIGHT_LAYERS", false);
    xmlHttp.send(null);

    if (xmlHttp.readyState == 4) {
        if (xmlHttp.responseXML) {
            var returnValue = xmlHttp.responseText;
            if (returnValue=="success") {
                // Refresh the map...
                window.top.RefreshMap();
            }
            else {
                alert("Unable to clear highlight layers.");
            }
        }
    }
}
