dojo.provide("dojo.enabu.main.widget.AutocompleteTextBox");
dojo.require("dijit.form.FilteringSelect");

dojo.declare("dojo.enabu.main.widget.AutocompleteTextBox", dijit.form.FilteringSelect, {
    
    constructor: function(){
        this.loadCallback = null;       // Funzione di callback in caso di successo
        this.errorCallback = null;      // Funzione di callback in caso di errore 
        
        /**
         * Funzione chiamata durante la digitazione
         * function(query) : boolean (se restituisce true, viene anche eseguita la chiamata interna, altrimenti no)
         *  
         */
        this.openResultCallback = null; 
        this.autoComplete = true;
        this.hasDownArrow = false;
        this.searchDelay = 200;
    },
    
    validate : function(value){
        return true;
    },

    /**
     * Esegue un'inizilizzazione impostando Query com filtro
     */
    reset : function(query) {
        dojo.xhrPost({load : this.loadCallback, error : this.errorCallback, handleAs : 'json', url : this.url + query});
    },
    
    /**
     * Funzione che risponde alla digitazione nella casella di testo
     */
    _openResultList : function(/*Object*/ results, /*Object*/ dataObject) {
        var query = dataObject.query.name;
        if(query != '' && query.charAt(query.length - 1) == '*') {
            query = query.substr(0, query.length - 1);
        }
        if(this.openResultCallback != null) {
            if(this.openResultCallback(query) == false) {
                return;
            }
        }
        dojo.xhrPost({load : this.loadCallback, error : this.errorCallback, handleAs : 'json', url : this.url + query});
    }
});

