﻿

    $.manageAjax.create('search_request', { queue: 'clear', maxRequests: 1, abortOld: true, preventDoubbleRequests: true, cacheResponse: true});
    SiteSearch = new Object();
    SiteSearch.watertext = "поиск по сайту";
    SiteSearch.Input = $("#SearchFieldID");
    SiteSearch.Input.val(SiteSearch.watertext);
    SiteSearch.autocomplete = $("#search-autocomplete");
    SiteSearch.Input_loader = $("#search-input-loader");
    SiteSearch.autocomplete.bgiframe();
    SiteSearch.Input.bind("focus", { text: SiteSearch.Input.val() }, captioned_input_focus);   
    SiteSearch.Input.bind($.browser.opera ? "keypress" : "keydown", captioned_input_change);
    SiteSearch.sTimer = null;
    
    SiteSearch.KEYS = {
        UP: 38,
        DOWN: 40,
        DEL: 46,
        ESC: 27,
        BACKSPACE: 8,
        ENTER: 13
    };

    SiteSearch.Input.blur(function() {
    
            setTimeout(function()
            {
		
		    SiteSearch.autocomplete.hide();
		    if ($(this).val().length == 0) {
            $(this).css("color", "#ababab");
            SiteSearch.Input.val(SiteSearch.watertext);
            }}, 500);
           
 
    });



    
    SiteSearch.GetResults = function()
    {
            $.manageAjax.abort('search_request');
            clearTimeout(SiteSearch.sTimer);
            SiteSearch.sTimer = setTimeout(function() {
                var search_string = SiteSearch.Input.val();
                if (search_string.length > 2) {
                    var ajax_url = "/search/search.ajax.aspx?keywords=" + escape(search_string);
                    SiteSearch.Input_loader.show();
                    SiteSearch.autocomplete.html("");
                    $.manageAjax.add('search_request', {
                        success: function(responseText) {

                            if (responseText.length > 0) {

                                SiteSearch.autocomplete.html(responseText);
                                SiteSearch.autocomplete.css("top", "-3px").css("left", "0px").removeClass("m-ac-search-page").show();
                                SiteSearch.Input_loader.hide();

                            }
                            else {
                                SiteSearch.autocomplete.hide();
                                SiteSearch.autocomplete.html("");
                                SiteSearch.Input_loader.hide();
                            }
                        },
                        url: ajax_url,
                        error: function() { SiteSearch.Input_loader.hide(); }
                    });
                }
                else SiteSearch.autocomplete.hide();
            }, 600);
    
    };
    
    function captioned_input_focus(e) {
        if ($(this).val() == e.data.text) {
            $(this).css("color", "#333");
            $(this).val("");              
        }

        if ( $("#ajax_items a").length > 0 && SiteSearch.Input.val().length > 2)
            SiteSearch.autocomplete.show();
        
       
    }
    
    function captioned_input_change(e) {
        if ( SiteSearch.Input.val().length < 3)
            SiteSearch.Input_loader.hide();
            
        $(this).focus();
        switch (e.keyCode) {

            case SiteSearch.KEYS.ENTER:
            
                SiteSearch.autocomplete.hide();
                var selected_items = $("#ajax_items .selected");
                if (selected_items.length > 0) {
                    document.location.href = selected_items.attr("href");
                    return false;
                }
                else {
                    if ( SiteSearch.Input.val() != '') {
                        return false;
                    }
                }
                break;  
                               
            default:
                break;
        }
        if (e.keyCode != SiteSearch.KEYS.DOWN && e.keyCode != SiteSearch.KEYS.UP && e.keyCode != SiteSearch.KEYS.ENTER) {
            SiteSearch.GetResults();
        }
        

        
        
        
    }
