/**
 * External JS dependencies:
 * AjaxStreetLightSearch
 *
 * External var dependencies:
 * toolbar.queryStreetlightButton.nothingFound
 * selectStreetlight.titleSL
 * selectStreetlight.titleTX
 * selectStreetlight.titleBoth
 * viewStreetlight.title
 * viewSwitchingCabinet.title
 * layerIDStartTX
 * layerIDStartSL
 */

/**
 * Ajax callback-method for the calls that return a new map image URL that shall be updated.
 */
function showClickResults(result) {
//    alert('Result is ' + result.length + ' long: ' + result + "\n" +
//          result[0].layerID + "," + result[0].layerDescr + "," + result[0].idArray);
    if (result == null || result.length == 0 ||
            (result.length == 1 && result[0].idArray.length == 0) ) {
        alert(toolbar_queryStreetlightButton_nothingFound);
    } else {
        if (result.length == 1 && result[0].idArray.length == 1) {
            if (result[0].layerID.indexOf(layerIDStartSL) == 0) {
                getFrame('mapframe').initPopup(viewStreetlight_title,      'viewStreetlight.htm?streetlightid=' +           result[0].idArray[0], 'viewStreetlight');
            } else if (result[0].layerID.indexOf(layerIDStartTX) == 0) {
                getFrame('mapframe').initPopup(viewSwitchingCabinet_title, 'viewSwitchingCabinet.htm?switchingcabinetid=' + result[0].idArray[0], 'viewSwitchingCabinet');
            } else {
                alert("Assertion error. layerID unknown: " + result[i].layerID);
            }
        } else {
            var streetLightIds = new Array();
            var switchingCabinetIds = new Array();
            var foundSL = false;
            var foundTX = false;
            for (var i = 0; i < result.length; ++i) {
                // debug: alert(result[i].layerID + ": " + result[i].idArray + ".");
                if (result[i].layerID.indexOf(layerIDStartSL) == 0) {
                    streetLightIds = streetLightIds.concat(result[i].idArray);
                    foundSL = true;
                } else if (result[i].layerID.indexOf(layerIDStartTX) == 0) {
                    switchingCabinetIds = switchingCabinetIds.concat(result[i].idArray);
                    foundTX = true;
                } else {
                    alert("Assertion error. layerID unknown: " + result[i].layerID);                    
                }
            }
            var selectStreetlightTitle;
            if (foundSL && foundTX) {
                selectStreetlightTitle = selectStreetlight_titleBoth;
            } else if (foundSL) {
                selectStreetlightTitle = selectStreetlight_titleSL;
            } else if (foundTX) {
                selectStreetlightTitle = selectStreetlight_titleTX;
            } else {
                alert("Assertion error: Did not find SL or TX!"); 
            }
            getFrame('mapframe').initPopup(selectStreetlightTitle,
                    'selectStreetlight.htm?' +
                    'forwardURLSL=' + 'viewStreetlight.htm' +
                    '&streetlightids=' + streetLightIds +
                    '&forwardTitleSL=' + viewStreetlight_title +
                    '&forwardTypeSL=' + 'viewStreetlight' +
                    '&forwardURLTX=' + 'viewSwitchingCabinet.htm' +
                    '&switchingcabinetids=' + switchingCabinetIds +
                    '&forwardTitleTX=' + viewSwitchingCabinet_title +
                    '&forwardTypeTX=' + 'viewSwitchingCabinet',
                    'selectStreetlight');
        }
    }
}

/**
 * Enabeles the click tool, and sets up events for queryStreetlight when mouse is clicked in map
 */
function queryStreetlightOnButtonClick(e) {
    getFrame('mapframe').enableClickTool(queryStreetlightOnMouseClicked);
}

/**
 * Reads data for clicked item, and displays in popup
 */
function queryStreetlightOnMouseClicked(x1, y1) {
    AjaxStreetLightSearch.doSearch(x1, y1, showClickResults);
}

