// This would cause a scroll down on small screens
//$(function () { $('#appKey').focus(); })

$('#siteSearchForm').submit(function(e) {
	e.preventDefault();

	$('#lastSearch').val($('#searchBox').val());
	$('#pageNumber').val('1');

	doSearch();
});

$('.search-results-footer li.next a').click(function(e) {
	e.preventDefault();

	if (!$(e.target).parent().hasClass('disabled')) {
		$('#pageNumber').val(parseInt($('#pageNumber').val()) + 1);
		doSearch();
	}
})

$('.search-results-footer li.previous a').click(function(e) {
	e.preventDefault();

	if (!$(e.target).parent().hasClass('disabled')) {
		$('#pageNumber').val(parseInt($('#pageNumber').val()) - 1);
		doSearch();
	}
})

function beginLoadResults()
{
	$('.search-results-repeater').children().not('.template').remove();
	$('.search-results-footer').hide();
	window.scrollTo(0, 0);
}

function doSearch() {
	if (!$('#appKey').val()) {
		alert('App Key is required.');
		$('#appKey').focus();
		return;
	}
	if (!$('#searchBox').val()) {
		alert('Query is required.');
		$('#searchBox').focus();
		return;
	}

	beginLoadResults();

	$.bingSearch({
		appKey: $('#appKey').val(),
		pageNumber: parseInt($('#pageNumber').val()),
		query: $('#lastSearch').val(),
		debug: false,
		beforeSearchResults: function(data) {
			if (data.hasMore || $('#pageNumber').val() > 1) {
				$('.search-results-footer .pagination').show();
				$('.search-results-footer .end').hide();
			}
			else {
				$('.search-results-footer .end').show();
				$('.search-results-footer .pagination').hide();
			}

			$('.search-results-footer').show();
			if ($('.search-results').is(':hidden')) {
				$('.search-results').removeClass('hidden');
			}
		},
		searchResultIterator: function(data) {
			var instance = $('.search-results-repeater .template').clone();
			$(instance).removeClass('template');

			var link = $(instance).find('.search-result-title a');
			var displayLink = $(instance).find('.search-result-displayurl a');
			var description = $(instance).find('.search-result-description');
			var displayurl = $(instance).find('.search-result-displayurl');

			$(link).attr('href', data.Url);
			$(link).text(data.Title);

			$(displayLink).attr('href', data.Url);
			$(displayLink).text(data.DisplayUrl);

			$(description).text(data.Description);

			$('.search-results-repeater').append(instance);
		},
		afterSearchResults: function(data) {
			var prev = $('.search-results-footer li.previous');
			var next = $('.search-results-footer li.next');
			var page = parseInt($('#pageNumber').val());

			if (prev.hasClass('disabled') && page > 1)
				prev.removeClass('disabled');
			else if (page == 1)
				prev.addClass('disabled');

			if (next.hasClass('disabled') && data.hasMore)
				next.removeClass('disabled');
			else if (!data.hasMore)
				next.addClass('disabled');

			if (!$('#appKey').hasClass('disabled')) {
				$('#appKey').addClass('disabled');
			}

			// Scroll code courtesy of http://stackoverflow.com/a/2906009
			var container = $('html, body');
			var scrollTo = $("div.search-results").first();
			var funcScroll = function() { container.scrollTop(scrollTo.offset().top - container.offset().top + container.scrollTop()); }
			window.setTimeout(funcScroll, 100);
		}
	});
}