﻿var SearchWebservice = "/server/SiteSearch.asmx";
var ItemsPerPage = 10;
var MaxCharsForLink = 60;

function ss_Search()
{
    ss_SearchWithStart("0");
}

function ss_SearchWithStart(StartAt)
{
    var txt = document.getElementById("ss_InputText").value;
    
    resetForm();
    
    var pl = new SOAPClientParameters();
    pl.add("SearchText", ""+txt);
    pl.add("StartAt", ""+StartAt);
    SOAPClient.invoke(SearchWebservice, "Search", pl, true, ss_SearchResp);
}

function ss_SearchResp(r)
{
    if (!r) 
    {
        alert("Geen resultaat.");
        return;
    }
    
    var resultMsg = document.getElementById("search_resultmsg");
    if (r.Results.length>0)
		resultMsg.innerHTML = "Resultaten <span>" + r.FirstDocIndex + "</span> - <span>" + r.LastDocIndex + "</span> van <span>" + r.Total + "</span> voor <span>" + r.SearchText + "</span>";
	else
		resultMsg.innerHTML = "Geen zoekresultaten gevonden op \"" + r.SearchText + "\". Probeert u het opnieuw.";
    
    if (r.Suggestions.length>0)
    {
        var suggestions = document.getElementById("search_suggestions");
        suggestions.style.display = "block";
        
        var suggestionlinks = document.getElementById("search_suggestionlinks");

        for (i = 0; i < r.Suggestions.length; i++)
        {
            var s = "<a class=\"corlink\" href=\"javascript:suggestionSearch('" + r.Suggestions[i] + "');\">" + r.Suggestions[i] + "</a> ";            
            suggestionlinks.innerHTML += s;
        }        
    }
    
    if (r.Results.length>0)
    {
        var searchresult = document.getElementById("search_result");
        for (i=0; i < r.Results.length; i++)
        {
		    var sample = r.Results[i].Sample;
			if (sample == null) sample = "";
			var title = r.Results[i].Title;
			if (title == null) title = "";
            var s = "<ul class=\"resultaten\"><li class=\"titel\"><a href=\"" + r.Results[i].Uri + "\">" + title + "</a></li><li class=\"msg\">" + sample + "</li><li class=\"link\"><a href=\"" + r.Results[i].Uri + "\">" + ShortenLink(r.Results[i].Uri) + "</a></li></ul>";
            searchresult.innerHTML += s;
        }
        
        var searchprev = document.getElementById("search_prev");
        if (r.StartAt > 0)
        {
            searchprev.innerHTML = "<a href=\"javascript:ss_SearchWithStart(" + (r.StartAt - ItemsPerPage) + ");\">Vorige</a> ";
        }
        
        var searchnext = document.getElementById("search_next");
        if (r.StartAt + ItemsPerPage < r.Total)
        {
            searchnext.innerHTML = " <a href=\"javascript:ss_SearchWithStart(" + (r.StartAt + ItemsPerPage) + ");\">Volgende</a>";
        }
        var searchpages = document.getElementById("search_pages");
        if (r.Total > ItemsPerPage)
        {
            var s = "";
            
            var startPage = (r.StartAt - (ItemsPerPage * 5)) / 10;
            if (startPage <= 0) startPage = 1;
            
            var maxPage = r.Total / 10;
            if (maxPage>10) maxPage = 10;
            
            if ((maxPage == 10) && ((startPage + maxPage) > (r.Total / 10))) startPage = Math.round(r.Total / 10) - 9;
            
            for (i=0; i<maxPage; i++)
            {
                var StartAt = (startPage + i - 1) * 10;
                if (StartAt == r.StartAt)
                {
                    s += "<b>" + (startPage + i) + "</b> ";
                }
                else
                {
                    s += "<a href=\"javascript:ss_SearchWithStart(" + StartAt + ");\">" + (startPage + i) + "</a> ";
                }
            }
            
            searchpages.innerHTML = s;
        }
    }
}

function suggestionSearch(suggestion)
{
    document.getElementById("ss_InputText").value = suggestion;
    ss_Search();
}

function resetForm()
{
    var suggestions = document.getElementById("search_suggestions");
    suggestions.style.display = "none";
    
    EmptyInnerHtml("search_suggestionlinks");
    EmptyInnerHtml("search_result");
    EmptyInnerHtml("search_prev");    
    EmptyInnerHtml("search_pages");    
    EmptyInnerHtml("search_next");
    scroll(0,0);
}

function EmptyInnerHtml(id)
{
    var obj = document.getElementById(id);
    obj.innerHTML = "";
}

function ShortenLink(link)
{
    link = link.substr(0, MaxCharsForLink) + "...";
    return link;
}

