
    FastSearch = {

        delay: 500,

        init: function() {
            $("search_room_q").onkeyup = this.onkeyup;
            $("search_room_q").onkeydown = this.onkeydown;
        },
        
        onkeydown: function(e) {
            if(!e) e = window.event;
            if(e.keyCode == 13) {
                $show("sr_loading_bar");
                $("search_room_form").submit();
                return false;
            }
        },

        showLoading: function(){
            $show("sr_loading_bar");
        },

        onkeyup: function(e) {
            if(!e) e = window.event;
            if(e.keyCode == 13) {
                $show("sr_loading_bar");
                $("search_room_form").submit();
                return false;
            } else if(FastSearch.is_loading || e.keyCode == 32) {
                return false;
            }
            clearTimeout(FastSearch.timeout);
            FastSearch.timeout = setTimeout(FastSearch.loadData, FastSearch.delay);
        },


        loadData: function() {  
            $hide("fast_search_popup");
            this.is_loading = true;
            clearTimeout(FastSearch.timeout);
            var r = {
                mode: "fast_search",
                q: $("search_room_q").value
            }
            if(r.q.length < 2) return;
            this.req_obj = new AJAX_Request({url: "/", params: r, callback: FastSearch.onServerResponce});
        },


        onServerResponce: function(res) {
            if(!res || !res.length) return;
            FastSearch.data = res;
            var html = "";
            for(var i=0; i<res.length; i++) {
                html += "<a href='javascript:void(0)' onclick='FastSearch.setQuery(" + i + ")'>" + res[i] + "</a>";
            }
            $("fast_search_popup").innerHTML = html;
            var pos = getElPos($("search_room_q"));
            $("fast_search_popup").style.top = pos.top + $("search_room_q").offsetHeight - 1 + "px";
            $("fast_search_popup").style.left = pos.left + "px";
            $("fast_search_popup").style.width = $("search_room_q").offsetWidth - 2 + "px";
            $show("fast_search_popup");
            FastSearch.req_obj = null;
            FastSearch.is_loading = false;
        },


        setQuery: function(idx) {
            $hide("fast_search_popup");
            if(!FastSearch.data || FastSearch.is_loading) return;
            $("search_room_q").value = FastSearch.data[idx];
        },
        
        
        clearResult: function(){
            $("search_room_q").value = "";
            if (window.RoomsList){
                RoomsList.clearResult();
            }
         }


    }