﻿var tabResult;
var tabPoint;
var typeDepArr;

$(document).ready(function () {

    if (document.getElementById("keywordsDep") != null)
        document.getElementById("keywordsDep").setAttribute("autocomplete", "off");

    if (document.getElementById("keywordsArr") != null)
        document.getElementById("keywordsArr").setAttribute("autocomplete", "off");

    if (document.getElementById("keywordsVia") != null)
        document.getElementById("keywordsVia").setAttribute("autocomplete", "off");

    // POINT RI
    $("#keywordsDep").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: WS_URL + "/SearchPointsByCost",
                type: "GET",
                data: {
                    UID: UID,
                    keywords: request.term,
                    MaxItems: NB_SOL,
                    PointType: 0
                },
                dataType: "xml",
                success: function (xmlResponse) {
                    response($("TripPoint", xmlResponse).map(function () {
                        // Ajout de roadNumber (pour rechercher les numeros de voirie)
                        return {
                            value: getValue($("id", this).text(), $("name", this).text(), $("type", this).text(), $("localityCode", this).text(), $("roadNumber", this).text()),
                            label: getName($("name", this).text(), $("type", this).text(), $("localityName", this).text(), $("roadNumber", this).text())
                        };
                    }).get());
                }

            });
        },
        focus: function (event, ui) {
            document.getElementById("keywordsDep").value = ui.item.label;
            return false;
        },
        select: function (event, ui) {
            document.getElementById("keywordsDep").value = ui.item.label;
            document.getElementById("pointDep").value = ui.item.value;
            return false;
        },
        minLength: NB_MIN_LETTER
    });

    $("#keywordsArr").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: WS_URL + "/SearchPointsByCost",
                type: "GET",
                data: {
                    UID: UID,
                    keywords: request.term,
                    MaxItems: NB_SOL,
                    PointType: 0
                },
                dataType: "xml",
                success: function (xmlResponse) {
                    response($("TripPoint", xmlResponse).map(function () {
                        // Ajout de roadNumber (pour rechercher les numeros de voirie)
                        return {
                            value: getValue($("id", this).text(), $("name", this).text(), $("type", this).text(), $("localityCode", this).text(), $("roadNumber", this).text()),
                            label: getName($("name", this).text(), $("type", this).text(), $("localityName", this).text(), $("roadNumber", this).text())
                        };
                    }).get());
                }

            });
        },
        focus: function (event, ui) {
            document.getElementById("keywordsArr").value = ui.item.label;
            return false;
        },
        select: function (event, ui) {
            document.getElementById("keywordsArr").value = ui.item.label;
            document.getElementById("pointArr").value = ui.item.value;
            return false;
        },
        minLength: NB_MIN_LETTER
    });


    $("#keywordsVia").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: WS_URL + "/SearchPointsByCost",
                type: "GET",
                data: {
                    UID: UID,
                    keywords: request.term,
                    MaxItems: NB_SOL,
                    PointType: 0
                },
                dataType: "xml",
                success: function (xmlResponse) {
                    response($("TripPoint", xmlResponse).map(function () {
                        // Ajout de roadNumber (pour rechercher les numeros de voirie)
                        return {
                            value: getValue($("id", this).text(), $("name", this).text(), $("type", this).text(), $("localityCode", this).text(), $("roadNumber", this).text()),
                            label: getName($("name", this).text(), $("type", this).text(), $("localityName", this).text(), $("roadNumber", this).text())
                        };
                    }).get());
                }

            });
        },
        focus: function (event, ui) {
            document.getElementById("keywordsVia").value = ui.item.label;
            return false;
        },
        select: function (event, ui) {
            document.getElementById("keywordsVia").value = ui.item.label;
            document.getElementById("pointVia").value = ui.item.value;
            return false;
        },
        minLength: NB_MIN_LETTER
    });



});

function getValue(objID, objName, objType, objCityID, objStreetNumber) {

    valuePoint = ""

    typePoint = 2
    switch (objType) {
        case "PLACE":
            typePoint = 1;
            break;
        case "STOPPOINT":
            typePoint = 20; // Arrt logique
            break;
        case "STREET":
            typePoint = 3;
            break;
        case "LOCALITY":
            typePoint = 6;
            break;
    }
    valuePoint = objID + "$" + objName + "$" + typePoint + "$" + objCityID;
    if ((objStreetNumber != "") && (objStreetNumber != "0")) valuePoint = valuePoint + "$" + objStreetNumber;
    return valuePoint;
}

function getName(objName, objType, objCity, objStreetNumber) {
    
    libellePoint =""
    switch (objType) {
        case "PLACE":
            libellePoint = objName + " (" + placeLibelle + ") - " + objCity;
            break;
        case "STOPPOINT":
            libellePoint = objName + " (" + stopLibelle + ") - " + objCity;
            break;
        case "STREET":
            if ((objStreetNumber != "") && (objStreetNumber != "0"))
                libellePoint = objStreetNumber + ", ";

            libellePoint = libellePoint + objName + " (" + adrLibelle + ") - " + objCity;
            break;
        case "LOCALITY":
            libellePoint = objName + " (" + comLibelle + ")";
            break;
    }
    return libellePoint;
}

