/* (C) GeoBasis-DE/LGB
 * Copyright by Landesvermessung und Geobasisinformation Brandenburg (LGB)
 *
 * Software engineering by Intevation GmbH
 *
 * This file is Free Software under the GNU GPL (>=v3)
 * and comes with ABSOLUTELY NO WARRANTY! Check out the
 * LICENSE for details.
 */

/**
 * View to search for locations.
 * This view gives the user the choice which type of location to search and
 * displays results separated by their subtype in a list. To find the locations
 * it uses the {@link LGB.ext4map.controller.Gazetteer}.
 */
Ext.define('LGB.ext4map.view.Gazetteer', {
    extend: 'Ext.window.Window',
    requires: [ 'LGB.ext4map.view.GazetteerPanel',
                'LGB.ext4map.store.LocationResult'],
    alias: 'widget.gazetteer',

    /**
     * @cfg
     * The title for the window.
     */
    title: 'Ortssuche',

    /**
     * @cfg
     * Label for type 'Address or location'.
     */
    tabAddressLabel: 'Adresse oder Ort',

    /**
     * @cfg
     * Label for type 'Katasterangaben'.
     */
    tabKatasterLabel: 'Katasterangaben',

    /**
     * @cfg
     * Label for type 'Kartenblätter'.
     */
    tabKartenblLabel: 'Kartenblätter',

    /**
     * @cfg
     * Label for type 'Strassendaten'.
     */
     tabStrassenLabel: 'Strassendaten',

    /**
     * @cfg
     * The window height.
     */
    height: 300,

    /**
     * @cfg
     * The window width.
     */
    width: 500,

    /**
     * @cfg
     * The window layout.
     */
    layout: 'fit',

    /**
     * @cfg
     * Automaticaly show the window.
     */
    autoShow: true,

    /**
     * @cfg
     * The modalitiy of the window.
     */
    modal: true,

    /**
     * @cfg
     * Hide the window if closed.
     */
    closeAction: 'hide',

    /**
     * @cfg
     * True to constrain this window within its containing element.
     */
    constrain: true,

    /**
     * @cfg
     * Show address search panel.
     */
    features: {},

    /**
     * @private
     * Initialize the view.
     */
    initComponent: function() {
        var me = this;
        var searchItems = [];
        if (this.features.searchAddress) {
            searchItems.push({
                title: me.tabAddressLabel,
                items: [{
                    xtype: 'gazetteerpanel',
                    name: 'address',
                    textFieldEmpty: 'Beispiel: Heinrich-Mann Allee 103',
                    tooltipText: '<div style="width:410px;">Gesucht werden kann in Brandenburg sowie in Berlin nach:' +
                                 '<br><br>' +
                                 '- Strassen mit/ohne Hausnummer<br>- Orte (Kreise, Gemeinden, Ortsteile, Gemeindeteile und Wohnplätzen).<br>- Postleitzahlen<br>- Geographische Namen' +
                                 '<br><br>' +
                                 'Folgende Beispieleingaben sind möglich:' +
                                 '<br><br>' +
                                 '<table>' +
                                 '<tr style="background-color:#D9E7F8;"><td><b>Einfache Suche nach:</td><td>Eingabe:</td></tr>' +
                                 '<tr><td><b>Strasse</td><td>Heinrich-Mann-Allee</td></tr>' +
                                 '<tr style="background-color:#D9E7F8;"><td><b>Strasse und Ort</td><td>Heinrich-Mann-Allee, Potsdam</td></tr>' +
                                 '<tr><td><b>Strasse und PLZ</td><td>Heinrich-Mann-Allee, 14473</td></tr>' +
                                 '<tr style="background-color:#D9E7F8;"><td><b>Strasse und Hausnummer</td><td>Heinrich-Mann-Allee 103</td></tr>' +
                                 '<tr><td style="padding-right:5px"><b>Strasse, Hausnummer und Ort</td><td>Heinrich-Mann-Allee 103, Potsdam</td></tr>' +
                                 '<tr style="background-color:#D9E7F8;"><td><b>Ort</td><td>Potsdam</td></tr>' +
                                 '<tr><td><b>Postleitzahl</td><td>14473</td></tr>' +
                                 '<tr style="background-color:#D9E7F8;"><td><b>Geographischer Name (optional Gemeinde oder Landkreis)</td><td>Weinberg Michendorf</td></tr>' +
                                 '<tr style="height:20px;"></tr>' +
                                 '<tr style="background-color:#D9E7F8;"><td><b>Erweiterte Suche nach:</td><td>Eingabe:</td></tr>' +
                                 '<tr><td><b>Strasse</td><td>str:Heinrich-Mann-Allee</td></tr>' +
                                 '<tr style="background-color:#D9E7F8;"><td><b>Strasse und Ort</td><td>str:Heinrich-Mann-Allee ort:Potsdam</td></tr>' +
                                 '<tr><td><b>Strasse und PLZ</td><td>str:Heinrich-Mann-Allee ort:Potsdam</td></tr>' +
                                 '<tr style="background-color:#D9E7F8;"><td><b>Strasse und Hausnummer</td><td>str:Heinrich-Mann-Allee nr:103</td></tr>' +
                                 '<tr><td><b>Strasse, Hausnummer und Ort</td><td style="padding-right:5px">str:Heinrich-Mann-Allee nr:103 ort:Potsdam</td></tr>' +
                                 '<tr style="background-color:#D9E7F8;"><td><b>Ort</td><td>ort:Potsdam</td></tr>' +
                                 '<tr><td><b>Postleitzahl</td><td>plz:14473</td></tr>' +
                                 '<tr style="background-color:#D9E7F8;"><td><b>Geographischer Name (optional Gemeinde oder Landkreis)</td><td>ort:Weinberg Michendorf</td></tr>' +
                                 '</table>' +
                                 '<br>' +
                                 'In der einfachen Suche wird nicht weiter nach Strassen gesucht, falls ein Ort mit Ihrer Sucheingabe gefunden wird, wie im Fall "'+'Radebrück'+'".<br>Um explizit nach einer Strasse zu suchen, geben Sie zusätzlich einen Ort zu der Strassensuche an, oder verwenden Sie die erweiterte Suche.' + 
                                 '</div>'
                }]
            });
        }
        if (this.features.searchKataster) {
            searchItems.push({
                title: me.tabKatasterLabel,
                items: [{
                    xtype: 'gazetteerpanel',
                    name: 'kataster',
                    textFieldEmpty: 'Beispiel: Gemarkung, Flur, Flurstück',
                    tooltipText: 'Gesucht werden kann in Brandenburg nach:' +
                                 '<br><br>' +
                                 '- Gemarkung, Flur, Flurstück<br>- Flurstückskennzeichen.' +
                                 '<br><br>' +
                                 'Folgende Beispieleingaben sind möglich:' +
                                 '<br><br>' +
                                 '<table>' +
                                 '<tr><td><b>Suche nach:</td><td>Eingabe:</td></tr>' +
                                 '<tr style="background-color:#D9E7F8;"><td><b>Gemarkung</b><br>oder<br>oder</td><td>Potsdam<br>120501<br>12-0501</td></tr>' +
                                 '<tr><td><b>Gemarkung und Flur</b><br>oder<br>oder</td><td>Potsdam,22<br>120501022<br>12-0501-22</td></tr>' +
                                 '<tr style="background-color:#D9E7F8;"><td><b>Gemarkung, Flur und Flurstück</b><br>oder<br>oder</td><td>Potsdam,22,20<br>12050102200020<br>12-0501-22-20</td></tr>' +
                                 '<tr><td style="padding-right:5px"><b>Gemarkung, Flur, Flurstück und Nenner</b><br>oder<br>oder</td><td>Potsdam,22,20/3<br>120501022000200003<br>12-0501-22-20-3</td></tr>' +
                                 '<tr style="background-color:#D9E7F8;"><td><b>20-stelliges Flurstückskennzeichen</td><td style="padding-right:5px">12050102200020000300</td></tr>' +
                                 '</table>'
                }]
            });
        }
        if (this.features.searchKartenblatt) {
            searchItems.push({
                title: me.tabKartenblLabel,
                items: [{
                    xtype: 'gazetteerpanel',
                    name: 'kartenblatt',
                    textFieldEmpty: 'Beispiel: 3550-SW',
                    tooltipText: 'Beispielanfragen:' +
                                 '<br><br>' +
                                 '<table>' +
                                 '<tr><td style="padding-right:5px"><b>Suche nach:</td><td>Eingabe:</td></tr>' +
                                 '<tr style="background-color:#D9E7F8;"><td><b>TK10</td><td style="padding-right:5px">3550-SW</td></tr>' +
                                 '<tr><td><b>TK25</td><td>3550</td></tr>' +
                                 '<tr style="background-color:#D9E7F8;"><td><b>TK50</td><td>L3550</td></tr>' +
                                 '<tr><td style="padding-right:5px"><b>TK100</td><td>C3550</td></tr>' +
                                 '</table>'
                }]
            });
        }
        if (this.features.searchStrassen) {
            searchItems.push({
                 title: me.tabStrassenLabel,
                 items: [{
                     xtype: 'gazetteerpanel',
                     name: 'strassen',
                     textFieldEmpty: 'Beispiel: L98, 3648007 oder 320',
                     tooltipText: 'Gesucht werden kann in Brandenburg nach:' +
                                  '<br><br>' +
                                  '- Strassenabschnitte<br>- Netzknoten<br>- Kilometrierung' +
                                  '<br><br>' +
                                  'Folgende Beispieleingaben sind möglich:' +
                                  '<br><br>' +
                                  '<table>' +
                                  '<tr><td><b>Suche nach:</td><td>Eingabe:</td></tr>' +
                                  '<tr style="background-color:#D9E7F8;"><td><b>Strassenabschnitte</b><br>über Strassenbezeichnung<br>über Strassenbezeichnung und Abschnittsnummer<br>über Gemeindenummer</td><td><br>A2<br>A2, 10<br>12060005</td></tr>' +
                                  '<tr><td><b>Netzknoten</b><br>über Netzknotennummer</td><td><br>3648007</td></tr>' +
                                  '<tr style="background-color:#D9E7F8;"><td style="padding-right:5px"><b>Kilometrierung</b><br>über Kilometrierung<br>über Strasse und Kilometrierung</td><td><br>4.12<br>A10, 4.12</td></tr>' +
                                  '</table>'
                 }]
            });
        }
        this.items = [{
            xtype: 'tabpanel',
            layout: 'fit',
            border: false,
            items: searchItems
        }];

        this.callParent(arguments);
    },

    onResize: function() {
        this.superclass.onResize.apply(this, arguments);

        // var container = this.down('container[name=result]');
        // container.setHeight(this.down('tabpanel').getHeight() - 69);
        var tabPanel = this.down('tabpanel');
        for (var i = 0; i < tabPanel.items.items.length; i++) {
            var container = tabPanel.items.items[i].down('container[name=result]');
            container.setHeight(tabPanel.getHeight() - 69);
        }
    }
});