﻿$(document).ready(function () {

    $("#SearchButton").click(function (event) {
        googleSearch();
        event.preventDefault();
        return false;
    });

    $("#SearchInput").keyup(function (event) {
        //alert(e.keyCode);
        if (event.keyCode == 13) {
            googleSearch();
        }
        event.preventDefault();
        return false;
    });

    $(".webResult").live("click", function (event) {
        window.location.href = $(this).find("a").attr("href");
        event.preventDefault();
        return false;
    });
});

function result(r) {

    // This is class definition. Object of this class are created for
    // each result. The markup is generated by the .toString() method.

    var arr = [];

    // GsearchResultClass is passed by the google API
    switch (r.GsearchResultClass) {

        case 'GwebSearch':
            arr = [
				'<div class="webResult"><div class="webResultLeft"></div><div class="webResultCenter">',
				'<h2><a href="', r.url, '">', r.title, '</a></h2>',
				'<p>', r.content, '<a href="', r.url, '" class="BlueArrow">&nbsp;&nbsp;&#9658;</a></p>',
				'<a href="', r.url, '">', r.visibleUrl, '</a>',
				'</div><div class="webResultRight"><a href="', r.url, '" class="webResultRightIcon"></a></div></div><div class="webResultBorder"></div>'
			];
            break;
        case 'GimageSearch':
            //			arr = [
            //				'<div class="imageResult">',
            //				'<a href="',r.url,'" title="',r.titleNoFormatting,
            //				'" class="pic" style="width:',r.tbWidth,'px;height:',r.tbHeight,'px;">',
            //				'<img src="',r.tbUrl,'" width="',r.tbWidth,'" height="',
            //				r.tbHeight,'" /></a>','<div class="clear"></div>',
            //				'<a href="',r.originalContextUrl,'">',r.visibleUrl,'</a>',
            //				'</div>'
            //			];
            break;
        case 'GvideoSearch':
            //			arr = [
            //				'<div class="imageResult">',
            //				'<a href="',r.url,'" title="',r.titleNoFormatting,
            //                '" class="pic" style="width:150px;height:auto;">',
            //				'<img src="',r.tbUrl,'" width="100%" /></a>',
            //				'<div class="clear"></div>','<a href="',
            //				r.originalContextUrl,'">',r.publisher,'</a>',
            //				'</div>'
            //			];
            break;
        case 'GnewsSearch':
            //			arr = [
            //				'<div class="webResult">',
            //				'<h2><a href="',r.unescapedUrl,'">',r.title,'</a></h2>',
            //				'<p>',r.content,'</p>',
            //				'<a href="',r.unescapedUrl,'">',r.publisher,'</a>',
            //				'</div>'
            //			];
            break;
    }

    // The toString method.
    this.toString = function () {
        return arr.join('');
    }
}


function googleSearch(settings) {


    var config = {
        siteURL: 'site:nsgmorison.cz -site:nsgmorison.cz/cs -site:nsgmorison.cz/en', // Change this to your site
        searchSite: true,
        type: 'web',
        append: false,
        perPage: 8, 		// A maximum of 8 is allowed by Google
        page: 0				// The start page
    }
    // If no parameters are supplied to the function,
    // it takes its defaults from the config object above:

    settings = $.extend({}, config, settings);
    settings.term = config.siteURL +  $("#SearchInput").val();

    if (false && settings.searchSite) {
        // Using the Google site:example.com to limit the search to a
        // specific domain:
        settings.term = 'site:' + settings.siteURL + ' ' + settings.term;
    }

    // URL of Google's AJAX search API
    var apiURL = 'http://ajax.googleapis.com/ajax/services/search/' + settings.type +
					'?v=1.0&callback=?';
    if (!settings.append) {
        $("#Content").html('<div id="SearchResults"></div>');
        $("#SearchResults").html('<h3>VÝSLEDKY VYHLEDÁVÁNÍ VÝRAZU "' + $("#SearchInput").val() + '":</h3>');
    }
    var resultsDiv = $('#SearchResults');

    $.getJSON(apiURL, {
        q: settings.term,
        rsz: settings.perPage,
        start: settings.page * settings.perPage
    }, function (r) {

        var results = r.responseData.results;
        $('#more').remove();

        if (results.length) {

            // If results were returned, add them to a pageContainer div,
            // after which append them to the #resultsDiv:

            var pageContainer = $('<div>', { className: 'pageContainer' });

            for (var i = 0; i < results.length; i++) {
                // Creating a new result object and firing its toString method:
                pageContainer.append(new result(results[i]) + '');
            }

            if (!settings.append) {
                // This is executed when running a new search,
                // instead of clicking on the More button:
                resultsDiv.empty().html('<h3 class="SearchResultsHeader">VÝSLEDKY VYHLEDÁVÁNÍ VÝRAZU "' + $("#SearchInput").val() + '":</h3>');
            }

            pageContainer.append('<div class="Clear"></div>')
						 .hide().appendTo(resultsDiv)
						 .fadeIn('slow');

            var cursor = r.responseData.cursor;

            // Checking if there are more pages with results,
            // and deciding whether to show the More button:

            if (+cursor.estimatedResultCount > (settings.page + 1) * settings.perPage) {
                $('<div>', { id: 'more' }).text('více výsledků...').appendTo(resultsDiv).click(function () {
                    googleSearch({ append: true, page: settings.page + 1 });
                    $(this).fadeOut();
                });
            }
        }
        else {

            // No results were found for this search.

            resultsDiv.empty();
            $('<p>', {
                className: 'notFound',
                html: 'No Results Were Found!'
            }).hide().appendTo(resultsDiv).fadeIn();
        }
    });
}
