﻿jQuery(hookupFinder);

function hookupFinder() {
    preventAutocomplete();
    waitForSubmissions();
}

function preventAutocomplete() {
    jQuery('#mini_search').parent().attr('autocomplete', 'off');
}

function waitForSubmissions() {
    jQuery('#mini_search').parent().submit(findRestaurantsFromForm);
}

function findRestaurantsFromForm() {
    var filter = new PizzaExpress.Core.Search.RestaurantSearchFilter();
    filter.SearchTerm = jQuery('#mini_search_term').val();
    findRestaurants(filter);
    return false;
}

function findRestaurantsFromClarification() {
    var clarification = jQuery(this).data('clarification');
    var filter = new PizzaExpress.Core.Search.RestaurantSearchFilter();
    filter.SearchTerm = clarification.PC;
    filter.Lat = clarification.Lat;
    filter.Lon = clarification.Lon;
    findRestaurants(filter);
    return false;
}

function findRestaurants(filter) {
    startFinding();
    getResultList().hide().empty();
    getMoreButton().hide();
    PizzaExpress.Core.Web.Restaurants.FindRestaurant(filter, resultsFound, finderError);
}

function startFinding() {
    jQuery('#find').val("Please wait...");
    //.attr('disabled', true)
}

function stopFinding() {
    jQuery('#find').val("Find a restaurant");
    //.removeAttr('disabled')
}

function resultsFound(results) {
    results = results.d;

    if(results.length > 0 && results[0].Country == 'IE') {
        window.location = '/our-restaurants/redirect-to-milano.aspx';
        return;
    }

    for (var i = 0; i < Math.min(5, results.length); i++) {
        addResult(results[i]);
    }
    getResultList().slideDown();
    if (results.length > 5) {
        getMoreButton().slideDown();
    }
    stopFinding();
}

function finderError(error) {
    stopFinding();
    alert("Error: " + error);
}

function addResult(result) {
    var resultList = getResultList();
    // If we have no ID, then we need to clarify the location
    if (result.Id == 0) {
        var resultHtml = jQuery('<li><a href="/our-restaurants/' + result.Id + '.aspx" class="button">Go</a> <strong>' + result.Title + '</strong></li>');
        resultHtml.find('a').data('clarification', result);
        resultHtml.find('a').click(findRestaurantsFromClarification);
        resultList.append(resultHtml);
    } else {
        var resultHtml = jQuery('<li><a href="/our-restaurants/' + result.Id + '.aspx" class="button">View</a> <strong>' + result.Title + '</strong> ' + result.DistanceInMiles + ' Miles</li>');
        resultList.append(resultHtml);
    }
}

function getResultList() {
    if(jQuery('#mini_search_results').length == 0) {
        var resultList = jQuery('<ul id="mini_search_results">');
        var form = jQuery('#mini_search').parent();
        form.after(resultList);
    }
    return jQuery('#mini_search_results');
}

function getMoreButton() {
    if (jQuery('p.more').length == 0) {
        var moreButton = jQuery('<p class="more"><a href="/our-restaurants/search-results.aspx?search_term=' + jQuery('#mini_search_term').val() + '" class="button">View more</a></p>');
        getResultList().after(moreButton);
    }
    return jQuery('p.more');
}