$(function() {
    var cult = 'nl-NL'; var srchTxt = 'zoeken';
    if (window.location.href.toLowerCase().indexOf('en-us') > 0) { cult = 'en-US'; srchTxt = 'search'; }
    if (window.location.href.toLowerCase().indexOf('de-de') > 0) { cult = 'de-DE'; srchTxt = 'Suche'; }
    if (window.location.href.toLowerCase().indexOf('fr-fr') > 0) { cult = 'fr-FR'; srchTxt = 'Rechercher'; }
    
    googleSearch.init('#searchbox input', '#linkerkolom_content,#HighlightContainer', 'www.hermanvanveen.com/Herman-van-Veen/' + cult, srchTxt);
});

var googleSearch = {
    init: function(searchElement, replaceElement, domain, searchText) {
        this.searchElement = $(searchElement);
        this.replaceElement = $(replaceElement);
        this.domain = domain;
        this.searchText = searchText;
        
        googleSearch.resultElement = $('<div class="SearchResult" style="display: none;" />').insertBefore(googleSearch.replaceElement);
        googleSearch.searchElement.val(searchText).keyup(function() {
            googleSearch.search($(this).val());
        }).keydown(function(e) {
        	if (e.which == 13) return false;
        }).focus(function() {
            $(this).addClass('editing');
            if ($(this).val() == googleSearch.searchText) $(this).val('');
        }).blur(function() {
            if ($(this).val() == '') $(this).val(googleSearch.searchText).removeClass('editing');
        });
    },
    
    _searchTerm: null,
    _searchTimeout: null,
    _lastSearch: null,
    
    search: function(val) {
        if (googleSearch._searchTimeout) window.clearTimeout(googleSearch._searchTimeout);
        googleSearch._searchTerm = val;
        if (googleSearch._searchTerm == '') {
            // Stop searching - reset interface
            googleSearch.replaceElement.css('display', '');
            googleSearch.resultElement.css('display', 'none');
        } else {
            // Start searching - prepare interface
            if (googleSearch._lastSearch != googleSearch._searchTerm) {
                googleSearch.replaceElement.css('display', 'none');
                googleSearch.resultElement.html('<div class="searching">Bezig met laden...</div>').css('display', 'block');
            }
            // Maintain timeout while typing
            googleSearch._searchTimeout = window.setTimeout(function(){
                googleSearch._dosearch()
            }, 1200);
        }
    },

    _webSearch: null,
    _prepareWebSearch: function() {
        googleSearch._webSearch = new google.search.WebSearch();
        googleSearch._webSearch.setSearchCompleteCallback(googleSearch, googleSearch._searchComplete, null);
        googleSearch._webSearch.setSiteRestriction(googleSearch.domain);
    },

    _dosearch: function() {
        googleSearch._searchTimeout = null;
        if (googleSearch._lastSearch != googleSearch._searchTerm) {
            // New search
            googleSearch._lastSearch = googleSearch._searchTerm;
            if (googleSearch._webSearch) googleSearch._webSearch.execute(googleSearch._searchTerm); else alert('De zoekfunctie is niet geladen. Onze excuses voor het ongemak.');
        }
    },
    
    _searchComplete: function() {
        var so = googleSearch._webSearch;
        if (so.results && so.results.length > 0) {
            // Clear search results
            googleSearch.resultElement.html('');
            // Add new results
            var results = so.results;
            for (var i = 0; i < results.length; i++) {
                var result = results[i];
                var html = $('<div><div class="searchtitle"><a /></div><div class="searchdescription"></div></div>');
                $('.searchtitle a', html).html(result.titleNoFormatting.replace(' - Annatommie', '')).attr('href', result.url.replace(/%2B/g, '+').replace(/%3F/g, '?').replace(/%3D/g, '='));
                $('.searchdescription', html).html(result.content);
                googleSearch.resultElement.append(html);
            }
        } else {
            googleSearch.resultElement.html('<div class="searchnoresults">Uw zoekopdracht heeft geen resultaten opgeleverd.</div>');
        }
        googleSearch.resultElement.append(google.search.Search.getBranding());
    }
}

google.load('search', '1');
google.setOnLoadCallback(googleSearch._prepareWebSearch);

