﻿var topicSearchUseAjax = true;

//onload
$(document).ready(function() {
    //launch search after page loaded
    if (topicSearchUseAjax) {
        getHashParameters();
        submit_search();
    }
    
    //setRegion($("#RegionID").val());
});

/* 
hashtags
----------------------------------------
regionID and CurrentPage are stored on the hashtag of the URL
the values are changed via javascript and are lost in the cached version of the page upon a return visit
the only work around would be to force a reload of the page
*/
function clearHashParameters() {
    location.hash = "";
}

function setHashParameters() {
    //only set hashtags on the inns page
    if (location.href.toLowerCase().indexOf("inns.asp") != -1) {
        //var regionID = $("#RegionID").val();
        var pageNumber = $("#CurrentPage").val();

        //location.hash = regionID + "-" + pageNumber
        location.hash = pageNumber
    }
}

function getHashParameters() {
    var h = location.hash;    
    if (h != "") {
        h = h.substring(1);
        //var ary = h.split("-");
        //if (ary.length > 0 && ary[0] != "") { setRegion(ary[0]); }
        //if (ary.length > 1 && ary[1] != "") { $("#CurrentPage").val(ary[1]); }
        if (h != "") { $("#CurrentPage").val(h); }
    }    
}

function searchHasParameters() {

    //if ($("#RegionID").val() != "" && $("#RegionID").val() != "0") {  return true; }
    if ($("#BusinessName").val() != "") { return true; }
    if ($("#byScenery>#selectedOptionValues").val() != "") { return true; }
    if ($("#byPrice>#selectedOptionValues").val() != "") { return true; }
    
    return false;
}

//sets page to 1 and submits search
function new_search() {
    if (!searchHasParameters()) {
        alert("Please enter some search criteria");
        return;
    }
    
    //mark this as a new search
    $("#SearchAction").val("new");
    
    if (topicSearchUseAjax) {
        $("#CurrentPage").val(1);        
        submit_search();
    }
    else {        
        $("#frmInnSearch").submit();
    }

    setHashParameters();
}

function changePage(page) {
    $("#CurrentPage").val(page);
    $("#SearchAction").val("paging");
    setHashParameters();
    submit_search();
}

//submit search - ajax
function submit_search() {    
    var form = $("#frmInnSearch");
    var formData = form.serialize();
    
    $("#results").fadeOut("slow");

    $.ajax({
        type: "POST",
        url: "/Member/TopicSearchInnsAjax",
        data: formData,
        dataType: "json",
        success: function(result) {
            display_results(result)
        },
        error: function(request, textStatus, errorThrown) {
            alert("AJAX error: " + request.statusText);
        }
    });
}

//ajax callback for search results
function display_results(ajaxData) {
    var columns = 3;

    var target = $("#results");
    target.html("");

    if (ajaxData.results.length < 1) {
        notFoundMsg = "<br>No results found for the search criteria you entered. Please modify your search and try again.<br><br>";
        notFoundMsg += "You can also try locating an inn using the <a href='/itinerary/mapwidget?forcePopupFlag=True' id='showMapWidget2'>Map</a>.";
        notFoundMsg += '<script language=javascript>$("#showMapWidget2").colorbox({ width: "900", height: "850", iframe: true });</script>';
        target.html(notFoundMsg);
        
        target.fadeIn();

        $("#results-nav-top").html("");
        $("#results-nav-bottom").html("");
        $("#resultsShown").html("");
        return;
    }

    $.each(ajaxData.results, function(i, item) {
        var style = '';
        if (i % columns == 0) { style = 'clear:left'; }

        var html = "<div class='memberListing' style=" + style + ">";
        html += "<a href='" + item.MemberPageURL + "'>"
        html += "<table border='0' cellpadding='0' cellspacing='0' class='titleBox'><tr><td height='70' align='left' valign='bottom' >";
        html += "<h2>" + item.BusinessName + "</h2>";
        html += "<p>" + item.Location + "</p></td></tr></table>";
        if (item.TeaserImage) { html += "<img src='" + item.TeaserImage.replace("~", "") + "' class='thumbnail'/>"; }
        html += "<p>" + item.Teaser + "</p>";
        html += "</a></div>";

        target.append(html);
    });

    target.fadeIn();

    var totalPages = ajaxData.TotalPages;
    var currentPage = ajaxData.CurrentPage;
    var totalResults = ajaxData.TotalResults;
    var pageSize = ajaxData.PageSize;
    var pagerHTML = "";

    //page numbers            
    for (i = 1; i <= totalPages; i++) {
        if (currentPage != i) {
            pagerHTML += "<a href='javascript:changePage(" + i + ")' class='pagedList-pageNumber'>" + i + "</a>&nbsp;";
        }
        else {
            pagerHTML += "<em class='pagedList-selectedPage'>" + i + "</em>&nbsp;";
        }
    }
    
    $("#results-nav-top").html(pagerHTML);
    $("#results-nav-bottom").html(pagerHTML);

    //results count
    var pageStart = 1;
    if (currentPage > 1) {
        pageStart = (currentPage - 1) * pageSize + 1
    }

    var pageEnd = (pageStart + pageSize - 1);
    if (pageEnd > totalResults) pageEnd = totalResults;

    var resultCount = "Displaying results " + pageStart + "-" + pageEnd + " of " + totalResults;
    $("#resultsShown").html(resultCount);

}


