AjaxPlugins.GeoplanetSearch = {
    handleResponse: function(pluginOutput) {
        if (pluginOutput.htmlCode.result) {
            $('search_result').innerHTML =  pluginOutput.htmlCode.result;
            $('search_result_outer').show();
        }
        if (pluginOutput.htmlCode.rues) {
            $('search_adresse_rue').replace(pluginOutput.htmlCode.rues);
        }
        if (pluginOutput.htmlCode.numeros) {
            $('search_adresse_no').replace(pluginOutput.htmlCode.numeros);
        }
//         if (pluginOutput.variables.YYY) {
//         }
    }
};

AjaxPlugins.GeoplanetSearch.Actions = {};
AjaxPlugins.GeoplanetSearch.Actions.searchParcelle = {
    buildPostRequest: function(argObject) {
        return 'id=' + $F('search_parcelle_id') + '&commune=' + $F('search_parcelle_commune');
    }
}

AjaxPlugins.GeoplanetSearch.Actions.fetchRues = {
    buildPostRequest: function(argObject) {
        return 'localite=' + $F('search_adresse_localite');
    }
}

AjaxPlugins.GeoplanetSearch.Actions.fetchNumeros = {
    buildPostRequest: function(argObject) {
        return 'localite=' + $F('search_adresse_localite') + '&rue=' + $F('search_adresse_rue');
    }
}

AjaxPlugins.GeoplanetSearch.Actions.fetchAdresse = {
    buildPostRequest: function(argObject) {
        return 'localite=' + $F('search_adresse_localite') + '&rue=' + $F('search_adresse_rue') + 
               '&numero=' + $F('search_adresse_no');
    }
}

AjaxPlugins.GeoplanetSearch.Actions.searchAdressesKeywords = {
    buildPostRequest: function(argObject) {
        return 'localite=' + $F('search_adresse_key_localite') + '&rue=' + $F('search_adresse_key_rue') + 
               '&numero=' + $F('search_adresse_key_numero');
    }
}

function recenterOn(ids, layer, showOrtho) {

    if (ids == '') return;

    $('id_recenter_layer').value = layer;
    $('id_recenter_ids').value = ids;

    // big fat hack: display orthophoto
    try {
      if (showOrtho) {
        $('in3-4').checked = true;
        $('in3-1-4').checked = true;
      } else {
        $('in3-2').checked = true;
        $('in3-1-4').checked = true;
      }
    } catch (e) {}

    // big fat hack: display parcelles
    try {
      if (layer == 'parcelle_recenter') {
          $('in1-1-1-3-4').checked = true;
      }
    } catch (e) {}

    $('query_layer').value = layer;
    $('query_hilight').value = 1;
    $('query_select').value = ids;

    CartoWeb.trigger('Location.Recenter');

    $('id_recenter_layer').value = '';
    $('id_recenter_ids').value = '';

    $('query_layer').value = '';
    $('query_hilight').value = '';
    $('query_select').value = '';

    return false;
}

function switchSearchForm(now) {
    $('search_result_outer').hide();
    
    switch (now) {
    case 'switch_adresse':
        $('search_form_adresse').show();
        $('search_form_parcelle').hide();
    break;
    case 'switch_parcelle':
        $('search_form_adresse').hide();
        $('search_form_parcelle').show();
    break;
    }
}

function switchSearchFormAdresse(now) {
    switch (now) {
    case 'dir':
        if ($('content_search_form_adresse_dir').visible()) {
            return false;
        } else {
            $('content_search_form_adresse_dir').show();
            $('content_search_form_adresse_key').hide();
            $('label_dir').removeClassName('unselected');
            $('label_dir').addClassName('selected');
            $('label_key').removeClassName('selected');
            $('label_key').addClassName('unselected');
        }
    break;
    case 'key':
        if ($('content_search_form_adresse_key').visible()) {
            return false;
        } else {
            $('content_search_form_adresse_dir').hide();
            $('content_search_form_adresse_key').show();
            $('label_key').removeClassName('unselected');
            $('label_key').addClassName('selected');
            $('label_dir').removeClassName('selected');
            $('label_dir').addClassName('unselected');
        }
    break;
    }
    $('search_result_outer').hide();
    return false;
}

function validateSearchAdressesKeyword() {
    var localite = $('search_adresse_key_localite');
    var rue = $('search_adresse_key_rue');

    if (localite.value.length < 3) {
        localite.addClassName('invalid');
        $('search_adresse_key_localite_hint').show();
    } else {
        localite.removeClassName('invalid');
        $('search_adresse_key_localite_hint').hide();
    }

    if (rue.value.length < 3) {
        rue.addClassName('invalid');
        $('search_adresse_key_rue_hint').show();
    } else {
        rue.removeClassName('invalid');
        $('search_adresse_key_rue_hint').hide();
    }
    return (localite.value.length >= 3) && (rue.value.length >= 3);
}

function submitSearchAdressesKeyword(event) {
    if (event.type == "click") {
            if (!validateSearchAdressesKeyword()) return;
            CartoWeb.trigger('GeoplanetSearch.searchAdressesKeywords');
    } else {
        if (event.keyCode == Event.KEY_RETURN) {
            if (!validateSearchAdressesKeyword()) return;
            CartoWeb.trigger('GeoplanetSearch.searchAdressesKeywords');
            Event.stop(event);
        }
    }
}

function submitSearchParcelle(event) {
    if ($F('search_parcelle_id') == '') return;

    if (event.type == "click" || event.type == "change") {
            CartoWeb.trigger('GeoplanetSearch.searchParcelle');
    } else {
        if (event.keyCode == Event.KEY_RETURN) {
            CartoWeb.trigger('GeoplanetSearch.searchParcelle');
            Event.stop(event);
        }
    }
}
