﻿function searchControl() {
}

searchControl.prototype = new GControl();

searchControl.prototype.initialize = function(map) {
    var container = document.createElement("div");
	$(container).addClass("searchBox");

    var searchControl = $('<input type="text" class="searchInput" />');
    container.appendChild(searchControl.get()[0]);

    var arrow = $('<span class="searchButtonDown">&nbsp;</span>');
    arrow.click(toggleResults)
    container.appendChild(arrow.get()[0]);

    map.getContainer().appendChild(container);
    initSearch(searchControl);
    return container;
}

function toggleResults(e) {
	var targetEl = $(e.target);
	if (targetEl && (!autocomleteExported.isVisible() || targetEl && targetEl.hasClass('searchButtonDown'))) {
		targetEl.addClass('searchButtonUp').removeClass('searchButtonDown');
	    autocomleteExported.input.focus();
		autocomleteExported.showResults();	
	} else {
		targetEl.addClass('searchButtonDown').removeClass('searchButtonUp');
		autocomleteExported.hideResults();
	}
}

searchControl.prototype.getDefaultPosition = function() {
    var offset;
    if (getConfigData().map.dragging == 1) {
        offset = new GSize(80, 20);
    } else {
        offset = new GSize(20, 20);
    }
    return new GControlPosition(G_ANCHOR_TOP_LEFT, offset);

}

var AC_SEARCH_WORD = KAKTUS_VP_CONFIG.TEXT_SEARCH_DEFAULT;

function initSearch(element) {

    var mapSearchConfig = getConfigData().search;

    var extraParams = {};
    if (mapSearchConfig == null || mapSearchConfig.searchInRoutes != 0) extraParams["idConf"] = KAKTUS_VP_CONFIG.MAP_CONFIG;
    if (mapSearchConfig == null || mapSearchConfig.searchInPois != 0) extraParams["idPoi"] = KAKTUS_VP_CONFIG.MAP_POI;
    if (mapSearchConfig == null || mapSearchConfig.searchInExternals != 0) extraParams["idSearch"] = KAKTUS_VP_CONFIG.MAP_SEARCH;

    $(element).autocomplete(KAKTUS_VP_CONFIG.SERVICE_SEARCH, {
        width: 220
       ,selectFirst: false
       ,delay: 0.5
       // ,highlight: false
       // ,multiple: true
       ,dataType: "json"
       ,scroll: true
       ,scrollHeight: 300
       ,formatItem: function(data) {
           return data.title;
       }
       ,extraParams: extraParams
   });


    $(element).blur(function() {
        deactivateSearch($(this));
        return true;
    }).focus(function() {
        activateSearch($(this));
        return true;
    })

    deactivateSearch($(element));

}

function deactivateSearch(elem) {
    if (elem.attr("value") == "") {
        elem.addClass("ac_inactiveSearch");
        elem.attr("value", AC_SEARCH_WORD);
    }
}

function activateSearch(elem) {
    elem.removeClass("ac_inactiveSearch");
    elem.empty();
    if (elem.attr("value") == AC_SEARCH_WORD) {
        elem.attr("value", "");
    }
}
