// Uses http://jQuery.com

var searchTimeout = null;
var hideTimeout = null;
var disableQuickSearch = false;

// On-Load
$(function() {
    // Advanced Search popup
    $('span.advanced-search a').toggle(
        function() {
            $('#mod-search-advanced').show();
            disableQuickSearch = true;
            $('span.advanced-search').addClass('open');
        },
        function() {
            $('#mod-search-advanced').hide();
            disableQuickSearch = false;
            $('span.advanced-search').removeClass('open');
        }
    );
    
     /* On keyup, spawn off the search ajax. It's delayed, so if they keep typing it can be
     * canceled */
    $('div.mod-search input:text').keyup(function(e)
    {
        if (disableQuickSearch)
            return;
            
        if (searchTimeout)
            clearTimeout(searchTimeout);
        
        var phrase = $(this).val();

        if(e.keyCode == 13) {
            window.location = gSearchFullPath + "?phrase=" + phrase;
            return;
        }

        if ($(this).val().length < 2)
            return;
                    
        searchTimeout = setTimeout('ShowQuickSearch("' + phrase + '");', 500);
    });
    
    /* Hide the search results when leaving the search field */
    $('div.mod-search input:text').blur(function()
    {
        // First, cancel any searches
        clearTimeout(searchTimeout);
        $('#mod-search-quick > #loading').hide();
        
        // Now hide the popup (and thus results)
        // Put the popup hide on a timeout, this gives the user time to click one of the links.
        hideTimeout = setTimeout("HideQuickSearch()", 200);
    });
});


function ShowQuickSearch(searchPhrase)
{
    if (gSearchWebServicePath == '')
    {
        alert('Search Web-service path is not set');
        return;
    }
    
    if (gSearchFullPath == '')
    {
        alert('Search Full path is not set');
        return;
    }
    
    $('#mod-search-quick > #loading').show();
    //$('#mod-search-quick > #results').hide();
    $('#mod-search-quick').show();
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: gSearchWebServicePath + "/QuickSearch",
        data: '{searchPhrase:"' + searchPhrase + '"}',
        dataType: "json",
        success: function(data, status)
        {
            var resultHtml = '';
            var currentType = '';
            var recordCount = 0;
            
            resultHtml += "<ul class='results-list'>";
            jQuery.each(data.d, function()
            {
                if (recordCount == 0 || currentType != this.Type)
                {
                    if (recordCount != 0)
                        resultHtml += "</ul>";
                        
                    resultHtml += "<ul><span class='type'>" + this.Type + "</span>"
                    currentType = this.Type;
                }
                
                resultHtml += "<li class='clear'>";
                resultHtml += "<a href='" + this.Uri + "'>";
                resultHtml += "<div class='results-image'><img src='" + this.ImageUri + "' /></div>";
                resultHtml += "</a>";
                resultHtml += "<div class='results-details'>";
                resultHtml += "<p class='title'>" + this.Title + "</p>";
                resultHtml += "<p class='region'>" + this.Region + "</p>";
                resultHtml += "</div>";
                resultHtml += "</li>";   
                
                recordCount++; 
            });
            
            if (recordCount > 0)
                resultHtml += "</ul>";

            if (recordCount == 0)
                resultHtml += "<li><span class='noresults'>No search results where found. Please use the full search function.</span></li>";
                
            resultHtml += "<li class='results-last'><span class='fullsearch'><a href='" + gSearchFullPath + "?phrase=" + searchPhrase + "'>View all search results</a></span></li>";
                            
            resultHtml += "</ul>";
            
            // Insert the returned HTML into the <div>.
            $('#mod-search-quick > #results').html(resultHtml);
            $('#mod-search-quick > #results > .results-list > ul > li').biggerlink();
            $('#mod-search-quick > #results').show(100);
        },
        error: function(obj, status, error)
        {
            alert("ERROR attempting to load search");
        },
        complete: function(obj, status)
        {
            // Hide the fake progress indicator graphic.
            $('#mod-search-quick > #loading').hide();
        }
    });
}

function HideQuickSearch()
{
    $('#mod-search-quick').hide(100);
    // hide internal results as well
    $('#mod-search-quick > #results').hide();
}