﻿function SearchSite() {

    var searchString = Trim($('#search_field').val());
    if (!IsNullOrEmpty(searchString)) {

        var query = encodeURIComponent(searchString);
        var uri = '/site-search.aspx?search=' + encodeURIComponent(query);
        window.location = uri;
    } else {
        var uri = '/site-search.aspx';
        window.location = uri;
        // return false;
    }
}
function fixSearchAlignItemImage() {
    $('.stayResults').each(function() {
        if ($(this).children('a').children('img').length) {
            $(this).children('.stayResultsContainer').addClass("stayResultsWithImage");
        }
    });
}

/********************************************/
/*           AJAX SUPPORT METHODS           */
/********************************************/
function SearchSiteByPage(searchString, userSearchPhrase, filterString, sortField, entityGroupType, resultsPerPage, pageNumber, totalResultsCount, pagerParentDivId, successFunctionCallBack) {

    var params = new Object();
    params.searchString = searchString;
    params.userSearchPhrase = userSearchPhrase;
    params.filterString = filterString;
    params.sortField = sortField;
    params.entityGroupType = entityGroupType;
    params.resultsPerPage = resultsPerPage;
    params.pageNumber = pageNumber;
    params.totalResultsCount = totalResultsCount;
    params.stateObject = pagerParentDivId;

    $.ajax({
        type: "POST",
        url: "/Linked/WebService/ILNYSearch.asmx/SearchSiteByPage",
        data: $.toJSON(params),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: successFunctionCallBack,
        error: OnSearchFailed
    });

    return false;
}
/*
* jQuery hashchange event - v1.3 - 7/21/2010
* http://benalman.com/projects/jquery-hashchange-plugin/
* 
* Copyright (c) 2010 "Cowboy" Ben Alman
* Dual licensed under the MIT and GPL licenses.
* http://benalman.com/about/license/
*/
(function($, e, b) { var c = "hashchange", h = document, f, g = $.event.special, i = h.documentMode, d = "on" + c in e && (i === b || i > 7); function a(j) { j = j || location.href; return "#" + j.replace(/^[^#]*#?(.*)$/, "$1") } $.fn[c] = function(j) { return j ? this.bind(c, j) : this.trigger(c) }; $.fn[c].delay = 50; g[c] = $.extend(g[c], { setup: function() { if (d) { return false } $(f.start) }, teardown: function() { if (d) { return false } $(f.stop) } }); f = (function() { var j = {}, p, m = a(), k = function(q) { return q }, l = k, o = k; j.start = function() { p || n() }; j.stop = function() { p && clearTimeout(p); p = b }; function n() { var r = a(), q = o(m); if (r !== m) { l(m = r, q); $(e).trigger(c) } else { if (q !== m) { location.href = location.href.replace(/#.*/, "") + q } } p = setTimeout(n, $.fn[c].delay) } $.browser.msie && !d && (function() { var q, r; j.start = function() { if (!q) { r = $.fn[c].src; r = r && r + a(); q = $('<iframe tabindex="-1" title="empty"/>').hide().one("load", function() { r || l(a()); n() }).attr("src", r || "javascript:0").insertAfter("body")[0].contentWindow; h.onpropertychange = function() { try { if (event.propertyName === "title") { q.document.title = h.title } } catch (s) { } } } }; j.stop = k; o = function() { return a(q.location.href) }; l = function(v, s) { var u = q.document, t = $.fn[c].domain; if (v !== s) { u.title = h.title; u.open(); t && u.write('<script>document.domain="' + t + '"<\/script>'); u.close(); q.location.hash = v } } })(); return j })() })(jQuery, this);
/* End jQuery hashchange event*/

var lastParentPagerDivId = "";
var lastSort = "REL";
var lastRegion = "";
var selectedPanel = GetSearchFilterPanelParent();
var lastFilterRegion = "";
var isClickEvent = false;

$(function()
{

    // Bind the event.
    $(window).hashchange(function()
    {
        //alert('In hashchange function');
        var hash = location.hash;
        var page = "";
        var divID = "";
        var sort = "";
        var filter = "";
        var filterRegionVal = "";

        if (hash == "")
        {
            page = "1";
            divID = lastParentPagerDivId;
        }
        else
        {
            hash = hash.slice(1);
            var arr = hash.split("_");

            page = arr[0];
            divID = arr[1];
            divID = divID.replace("pagerBottom", "pagerTop");
            sort = arr[2];
            filter = arr[3];
            filterRegionVal = arr[4];

            if (!isClickEvent)
            {
                //if (lastParentPagerDivId != divID && lastParentPagerDivId != "")
                if (lastParentPagerDivId != divID)
                {
                    switch (divID)
                    {
                        case "pagerTopSeeAndDo":
                            $("a.#tabSeeAndDo").data('pageNum', page);
                            $("a.#tabSeeAndDo").click()
                            break;
                        case "pagerTopEvents":
                            $("a.#tabEvents").data('pageNum', page);
                            $("a.#tabEvents").click()
                            break;
                        case "pagerTopEat":
                            $("a.#tabEat").data('pageNum', page);
                            $("a.#tabEat").click()
                            break;
                        case "pagerTopStay":
                            $("a.#tabStay").data('pageNum', page);
                            $("a.#tabStay").click()
                            break;
                        case "pagerTopDeals":
                            $("a.#tabDeals").data('pageNum', page);
                            $("a.#tabDeals").click()
                            break;
                        case "pagerTopMore":
                            $("a.#tabMore").data('pageNum', page);
                            $("a.#tabMore").click()
                            break;
                    }
                }
                //else
                //{
                    PerformSearchSite(page, divID, sort, filter, filterRegionVal);
                //}
            }
            lastParentPagerDivId = divID;
        }
        isClickEvent = false;
    })
});

/********************************************/
/*            SEARCH SUPPORT                */
/********************************************/
function OnCallSearchSite(pageclickednumber, parentPagerDivId)
{
    parentPagerDivId = parentPagerDivId.replace("pagerBottom", "pagerTop");
    var searchObject = GetSiteSearchString();
    var filter = encodeURIComponent(searchObject.filterString);
    var sortField = GetSearchSortBy();
    var selectedPanel = GetSearchFilterPanelParent();
    var filterRegion = "";
    if (typeof ($("#" + selectedPanel + " .dropRegionClassClick select option:selected").val()) == "undefined")
    {
        filterRegion = "";
    }
    else
    {
        filterRegion = encodeURIComponent($("#" + selectedPanel + " .dropRegionClassClick select option:selected").val());
    }
    window.location.hash = pageclickednumber + '_' + parentPagerDivId + '_' + sortField + '_' + filter + '_' + filterRegion;
}


function PerformSearchSite(pageclickednumber, parentPagerDivId, sort, filter, filterRegionVal)
{
    filter = decodeURIComponent(filter);
    filterRegionVal = decodeURIComponent(filterRegionVal);
    var searchString = "";
    var currentPage = pageclickednumber;
    var entityType = $('#' + parentPagerDivId + ' .pageStateValue').val();
    var pageCount = $('#' + parentPagerDivId + ' .pageTotalPageCount').val();
    var resultsPerPage = $('#' + parentPagerDivId + ' .pageRecordsPerPage').val();
    var totalResultCount = $('#' + parentPagerDivId + ' .pageTotalRecords').val();
    var userSearchPhrase = $('#siteSearchStringField').val();
    var searchObject = GetSiteSearchString();

    var sortField = "";
    if (typeof (sort) == "undefined")
    {
        sortField = GetSearchSortBy();
    }
    else
    {
        sortField = sort;
    }

    var selectedPanel = GetSearchFilterPanelParent();
    //alert('selectedPanel = ' + selectedPanel);
    if (sortField != lastSort)
    {
        lastSort = sortField;

        $("#" + selectedPanel + " .dropSortClassClick select").val(sortField);
        $("#" + selectedPanel + " .dropSortClassClick span").text($("#" + selectedPanel + " .dropSortClassClick select option:selected").text());

        $("#selectsortbyfilterPanel1").html($("#ddlSortByfilterPanel1 option:selected").text());
    }

    if (lastFilterRegion != filterRegionVal)
    {
        if (filterRegionVal == "")
        {
            $("#" + selectedPanel + " .dropRegionClassClick select").val($("#" + selectedPanel + " .dropRegionClassClick select option").eq(1).val());
            $("#" + selectedPanel + " .dropRegionClassClick select option").eq(1).attr("selected", "selected");
        }
        else
        {
            $("#" + selectedPanel + " .dropRegionClassClick select").val(filterRegionVal);
        }
        $("#" + selectedPanel + " .dropRegionClassClick span").text($("#" + selectedPanel + " .dropRegionClassClick select option:selected").text());
        lastFilterRegion = filterRegionVal
    }
    
    var filterString = "";
    if (typeof (filter) == "undefined")
    {
        filterString = searchObject.filterString;
    }
    else
    {
        filterString = filter;
    }
    if (filterString == "")
    {
        searchString = "{!ESCAPESEARCHSTRING!}"
    }
    else
    {
        searchString = '+"{!SEARCHSTRING!}"' + filterString;
        //searchString = searchObject.searchStringNoFilter + filterString;
    }

    switch (parentPagerDivId) {
        case "pagerTopSeeAndDo":
        case "pagerBottomSeeAndDo":
            SetProgressBar('itemsListSeeAndDo');
            ResetPagerSiteSearch("pagerTopSeeAndDo", 0, 0, 0, 0);
            ResetPagerSiteSearch("pagerBottomSeeAndDo", 0, 0, 0, 0)
            break;
        case "pagerTopEvents":
        case "pagerBottomEvents":
            SetProgressBar('itemsListEvents');
            ResetPagerSiteSearch("pagerTopEvents", 0, 0, 0, 0);
            ResetPagerSiteSearch("pagerBottomEvents", 0, 0, 0, 0);
            break;
        case "pagerTopEat":
        case "pagerBottomEat":
            SetProgressBar('itemsListEat');
            ResetPagerSiteSearch("pagerTopEat", 0, 0, 0, 0);
            ResetPagerSiteSearch("pagerBottomEat", 0, 0, 0, 0);
            break;
        case "pagerTopStay":
        case "pagerBottomStay":
            SetProgressBar('itemsListStay');
            ResetPagerSiteSearch("pagerTopStay", 0, 0, 0, 0);
            ResetPagerSiteSearch("pagerBottomStay", 0, 0, 0, 0);
            break;
        case "pagerTopDeals":
        case "pagerBottomDeals":
            SetProgressBar('itemsListDeals');
            ResetPagerSiteSearch("pagerTopDeals", 0, 0, 0, 0);
            ResetPagerSiteSearch("pagerBottomDeals", 0, 0, 0, 0);
            break;
        case "pagerTopMore":
        case "pagerBottomMore":
            SetProgressBar('itemsListMore');
            ResetPagerSiteSearch("pagerTopMore", 0, 0, 0, 0);
            ResetPagerSiteSearch("pagerBottomMore", 0, 0, 0, 0);
            break;
    }

    SearchSiteByPage(searchString, userSearchPhrase, filterString, sortField, entityType, resultsPerPage, currentPage, totalResultCount, parentPagerDivId, function(result) {
        OnSucceededSearchResultsByPage(result);
        fixSearchAlignItemImage();
        actionIconsListings(); // also called on initial load
        actionIconsConfirmation();
    });
    return false;
}

function OnSearchFailed(result) {

    //todo:  Comment out the alert before going to production
   // alert('Failure --> Search Results: ' + result.status + ' ' + result.statusText + '/r/n' + result.responseText);
    
    var returnStateValue = result.d.StateValue;  //pagerId was passed in as state value on AJAX call
    SetNoResults(returnStateValue) // NO RESULTS FOUND   
}

function OnSucceededSearchResultsByPage(result) {

    var returnValue = result.d.Value;
    var returnMessage = result.d.Message;
    var returnIsError = result.d.IsError;
    var returnStateValue = result.d.StateValue;  //pagerId was passed in as state value on AJAX call

    if (returnIsError == false) {

        var pageListHtml = result.d.Value.ObjectListItems;
        var currentPage = result.d.Value.CurrentPage;
        var pageCount = result.d.Value.PageCount;
        var resultsPerPage = result.d.Value.ResultsPerPage;
        var totalResultCount = result.d.Value.TotalResultCount;

        if (totalResultCount > 0) {
        
            switch (returnStateValue) {
                case "pagerTopSeeAndDo":
                case "pagerBottomSeeAndDo":
                    $('#itemsListSeeAndDo').html(pageListHtml);
                    ResetPagerSiteSearch("pagerTopSeeAndDo", currentPage, pageCount, resultsPerPage, totalResultCount);
                    ResetPagerSiteSearch("pagerBottomSeeAndDo", currentPage, pageCount, resultsPerPage, totalResultCount)
                    break;
                case "pagerTopEvents":
                case "pagerBottomEvents":
                    $('#itemsListEvents').html(pageListHtml);
                    ResetPagerSiteSearch("pagerTopEvents", currentPage, pageCount, resultsPerPage, totalResultCount);
                    ResetPagerSiteSearch("pagerBottomEvents", currentPage, pageCount, resultsPerPage, totalResultCount);
                    break;
                case "pagerTopEat":
                case "pagerBottomEat":
                    $('#itemsListEat').html(pageListHtml);
                    ResetPagerSiteSearch("pagerTopEat", currentPage, pageCount, resultsPerPage, totalResultCount);
                    ResetPagerSiteSearch("pagerBottomEat", currentPage, pageCount, resultsPerPage, totalResultCount);
                    break;
                case "pagerTopStay":
                case "pagerBottomStay":
                    $('#itemsListStay').html(pageListHtml);
                    ResetPagerSiteSearch("pagerTopStay", currentPage, pageCount, resultsPerPage, totalResultCount);
                    ResetPagerSiteSearch("pagerBottomStay", currentPage, pageCount, resultsPerPage, totalResultCount);
                    break;
                case "pagerTopDeals":
                case "pagerBottomDeals":
                    $('#itemsListDeals').html(pageListHtml);
                    ResetPagerSiteSearch("pagerTopDeals", currentPage, pageCount, resultsPerPage, totalResultCount);
                    ResetPagerSiteSearch("pagerBottomDeals", currentPage, pageCount, resultsPerPage, totalResultCount);
                    break;
                case "pagerTopMore":
                case "pagerBottomMore":
                    $('#itemsListMore').html(pageListHtml);
                    ResetPagerSiteSearch("pagerTopMore", currentPage, pageCount, resultsPerPage, totalResultCount);
                    ResetPagerSiteSearch("pagerBottomMore", currentPage, pageCount, resultsPerPage, totalResultCount);
                    break;
            }

            ResetResultHover();

            var defaultLat = $('#latitude').val();
            var defaultLong = $('#longitude').val();
            PlotSearchMarkers(defaultLat, defaultLong);
        }
        else {

            // NO RESULTS FOUND
            SetNoResults(returnStateValue)
        }
    }
    else {
    
        // NO RESULTS FOUND
        SetNoResults(returnStateValue)
    }
}

function SetNoResults(pager) {

    // NO RESULTS FOUND
    var noResultHtml = $('#noSearchResults').html();

    switch (pager) {
        case "pagerTopSeeAndDo":
        case "pagerBottomSeeAndDo":
            ResetPagerSiteSearch("pagerTopSeeAndDo", 0, 0, 0, 0);
            ResetPagerSiteSearch("pagerBottomSeeAndDo", 0, 0, 0, 0)
            $('#itemsListSeeAndDo').html(noResultHtml);
            break;
        case "pagerTopEvents":
        case "pagerBottomEvents":
            ResetPagerSiteSearch("pagerTopSeeAndDo", 0, 0, 0, 0);
            ResetPagerSiteSearch("pagerBottomSeeAndDo", 0, 0, 0, 0)
            $('#itemsListEvents').html(noResultHtml);
            break;
        case "pagerTopEat":
        case "pagerBottomEat":
            ResetPagerSiteSearch("pagerTopSeeAndDo", 0, 0, 0, 0);
            ResetPagerSiteSearch("pagerBottomSeeAndDo", 0, 0, 0, 0)
            $('#itemsListEat').html(noResultHtml);
            break;
        case "pagerTopStay":
        case "pagerBottomStay":
            ResetPagerSiteSearch("pagerTopSeeAndDo", 0, 0, 0, 0);
            ResetPagerSiteSearch("pagerBottomSeeAndDo", 0, 0, 0, 0)
            $('#itemsListStay').html(noResultHtml);
            break;
        case "pagerTopDeals":
        case "pagerBottomDeals":
            ResetPagerSiteSearch("pagerTopSeeAndDo", 0, 0, 0, 0);
            ResetPagerSiteSearch("pagerBottomSeeAndDo", 0, 0, 0, 0)
            $('#itemsListDeals').html(noResultHtml);
            break;
        case "pagerTopMore":
        case "pagerBottomMore":
            ResetPagerSiteSearch("pagerTopSeeAndDo", 0, 0, 0, 0);
            ResetPagerSiteSearch("pagerBottomSeeAndDo", 0, 0, 0, 0)
            $('#itemsListMore').html(noResultHtml);
            break;
    }
}


function EvaluateSearchListings(isPageLoad) {

    // See And Do
    var seeDoCount = GetPagerTotalPageCount("pagerTopSeeAndDo")
    if (seeDoCount == 0)
        $('#tabSeeAndDo').hide();
    else
        $('#tabSeeAndDo').show();

    // Events
    var eventsCount = GetPagerTotalPageCount("pagerTopEvents")
    if (eventsCount == 0)
        $('#tabEvents').hide();
    else
        $('#tabEvents').show();

    // Eat
    var eatCount = GetPagerTotalPageCount("pagerTopEat")
    if (eatCount == 0)
        $('#tabEat').hide();
    else
        $('#tabEat').show();

    // Stay
    var stayCount = GetPagerTotalPageCount("pagerTopStay")
    if (stayCount == 0)
        $('#tabStay').hide();
    else
        $('#tabStay').show();

    // Deals
    var dealCount = GetPagerTotalPageCount("pagerTopDeals")
    if (dealCount == 0)
        $('#tabDeals').hide();
    else
        $('#tabDeals').show();
        
    // More
    var moreCount = GetPagerTotalPageCount("pagerTopMore")
    if (moreCount == 0)
        $('#tabMore').hide();
    else
        $('#tabMore').show();

    var defaultLat = $('#latitude').val();
    var defaultLong = $('#longitude').val();
    PlotSearchMarkers(defaultLat, defaultLong);
}

function FindStartTab() {

    var pageStartTab = $('#pageStartTabType').val();

    //$('.tabNav a.TAB').removeClass('firstTab active')

    switch (pageStartTab) {

        case SC_ITINERARY:
        case SC_TRAVEL:
        case SC_REGION:
        case SC_CITY:
        case SC_TOPIC:
        case SMI_SEEANDDO:
            $("a.#tabSeeAndDo").data('pageNum', 1);
            $('.tabNav a.TabSeeDo').click();
            break;
        case SMI_EVENT:
            $("a.#TabEvents").data('pageNum', 1);
            $('.tabNav a.TabEvents').click();
            break;
        case SMI_EAT:
            $("a.#TabEat").data('pageNum', 1);
            $('.tabNav a.TabEat').click();
            break;
        case SMI_STAY:
            $("a.#TabStay").data('pageNum', 1);
            $('.tabNav a.TabStay').click();
            break;
        case SMI_DEAL:
            $("a.#TabDeals").data('pageNum', 1);
            $('.tabNav a.TabDeals').click();
            break;
        case SC_OTHER:
        case SMI_TRANSPORTATION:
        case SMI_LOCRESOURCES:
        case SMI_OTHER:
            $('.tabNav a.TabMore').click();
            $("a.#TabMore").data('pageNum', 1);
            break;
    }
}

// *********  PAGINATION FUCNTIONS  *********

function ResetPagerSiteSearch(pagerId, currentPage, pageCount, resultsPerPage, totalResultCount) {

    var targetURL = "javascript(0)";
    SetPageTotalPageCount(pagerId, totalResultCount);
    $('#' + pagerId + ' .Paging').pager({ pagenumber: currentPage, pagecount: pageCount, buttonClickCallback: window[$('#' + pagerId + ':first .pageClickCallback').val()], targetURL: targetURL, recordsPerPage: resultsPerPage });
}

// *********  Ready Initialize Functions  *********

function InitializeSearchLayout() {

    // Re-sync the page items
    EvaluateSearchListings(true);

    var defaultLat = $('#latitude').val();
    var defaultLong = $('#longitude').val();

    // Set the tab click events
    $('a.#tabSeeAndDo').click(function()
    {
        PlotSearchMarkers(defaultLat, defaultLong);
        var pageNum = $(this).data('pageNum')
        if (typeof (pageNum) == "undefined")
        {
            pageNum = 1;
            isClickEvent = true;
            window.location.hash = pageNum + '_pagerTopSeeAndDo_' + lastSort + '_' + lastRegion + '_' + lastFilterRegion;
        }
    });

    $('a.#tabEvents').click(function()
    {
        PlotSearchMarkers(defaultLat, defaultLong);
        var pageNum = $(this).data('pageNum')
        if (typeof (pageNum) == "undefined")
        {
            pageNum = 1;
            isClickEvent = true;
            window.location.hash = pageNum + '_pagerTopEvents_' + lastSort + '_' + lastRegion + '_' + lastFilterRegion;
        }
    });

    $('a.#tabEat').click(function() {
        PlotSearchMarkers(defaultLat, defaultLong);
        var pageNum = $(this).data('pageNum')
        if (typeof (pageNum) == "undefined")
        {
            pageNum = 1;
            isClickEvent = true;
            window.location.hash = pageNum + '_pagerTopEat_' + lastSort + '_' + lastRegion + '_' + lastFilterRegion;
        }
    });
    
    $('a.#tabStay').click(function() {
        PlotSearchMarkers(defaultLat, defaultLong);
        var pageNum = $(this).data('pageNum')
        if (typeof (pageNum) == "undefined")
        {
            pageNum = 1;
            isClickEvent = true;
            window.location.hash = pageNum + '_pagerTopStay_' + lastSort + '_' + lastRegion + '_' + lastFilterRegion;
        }
    });

    $('a.#tabDeals').click(function() {
        PlotSearchMarkers(defaultLat, defaultLong);
        var pageNum = $(this).data('pageNum')
        if (typeof (pageNum) == "undefined")
        {
            pageNum = 1;
            isClickEvent = true;
            window.location.hash = pageNum + '_pagerTopDeals_' + lastSort + '_' + lastRegion + '_' + lastFilterRegion;
        }
    });

    $('a.#tabMore').click(function() {
        PlotSearchMarkers(defaultLat, defaultLong);
        var pageNum = $(this).data('pageNum')
        if (typeof (pageNum) == "undefined")
        {
            pageNum = 1;
            isClickEvent = true;
            window.location.hash = pageNum + '_tabpagerTopMoreMore_' + lastSort + '_' + lastRegion + '_' + lastFilterRegion;
        }
    });

    // Set the "Map This" Functions
    $('a.bubbleClick').unbind();
    $('a.bubbleClick').click(function() {
        MapSearchListing($(this).parents('.stayResults'));
        return false;
    });

    var serviceAlias = window[$('#pagerTopSeeAndDo' + ':first .pageClickCallback').val()];
    // Sort Drop
    $('span.dropSortClassClick').each(function() {

        //$(this).children('select.#ddlSortBy').unbind();
        $(this).children("[id^='ddlSortBy']").change(function() {
            var tabContentDivId = $(this).parents('div.tabContent').attr("id"); // Relative tab
            var parentPagerDivId = $('#' + tabContentDivId + ' .paginationWrapDiv').attr("id");
            serviceAlias(1, parentPagerDivId);
            return false;
        });
    });

    // Region Drop
    $('span.dropRegionClassClick').each(function() {

        //$(this).children('select.#DDFilterByLocation').unbind();
        $(this).children("[id^='DDFilterByLocation']").change(function() {
            var tabContentDivId = $(this).parents('div.tabContent').attr("id"); // Relative tab
            var parentPagerDivId = $('#' + tabContentDivId + ' .paginationWrapDiv').attr("id");

            ExecuteCityOrRegionGoogleCall('RegionSearch');
            serviceAlias(1, parentPagerDivId);
            return false;
        });
    });

    //google call for city or region
    function ExecuteCityOrRegionGoogleCall(searchType)
    {
      //add google call here
        var userSearchPhrase = $('#siteSearchStringField').val();
        var curFilterPanel = GetSearchFilterPanelParent();
        var cityText = $('input.cityInput', curFilterPanel).val() == $('input.cityInput', curFilterPanel).attr('title') ? '' : $('input.cityInput', curFilterPanel).val();

        var regionArray = $("[id^='DDFilterByLocation']", curFilterPanel).val().split('|');
        var regionText = regionArray[4];

        var googleTerm = userSearchPhrase + "-" + regionText + (cityText != '' ? "-" + cityText : '');
        pageTracker._trackEvent('SearchFilteredListingSearch', searchType, googleTerm);
    }

    // City Input
    $('div.inputCityClassClick').each(function() {

        // Click Event (Button)
        $(this).children("[id^='citySubmit']").unbind();
        $(this).children("[id^='citySubmit']").click(function() {

            var tabContentDivId = $(this).parents('div.tabContent').attr("id"); // Relative tab
            var parentPagerDivId = $('#' + tabContentDivId + ' .paginationWrapDiv').attr("id");

            var curFilterPanel = GetSearchFilterPanelParent();
            var cityText = $('input.cityInput', curFilterPanel).val() == $('input.cityInput', curFilterPanel).attr('title') ? '' : $('input.cityInput', curFilterPanel).val();
            
            if (cityText !='')      
            ExecuteCityOrRegionGoogleCall('CitySearch');            

            serviceAlias(1, parentPagerDivId)
            return false;
        });

        // Enter Key
        //$(this).children('input.cityInputKeyEvent').unbind();
        $(this).children('input.cityInputKeyEvent').bind("keydown", function(event) {

            if (event.keyCode == 13) {
                $(this).siblings("[id^='citySubmit']").click();
                return false;
            }
            else {
                return true;
            }
        });
    });

    $("[id^='citySubmit'].arrowRight").each(function() {
        $(this).hover(function() {
            $(this).css('background-image', 'url(/Images/arrows-right-over.jpg)');
        }, function() {
            $(this).css('background-image', 'url(/Images/arrows-right.jpg)');
        }).focus(function() {
            $(this).css('background-image', 'url(/Images/arrows-right-over.jpg)');
        }).blur(function() {
            $(this).css('background-image', 'url(/Images/arrows-right.jpg)');
        });
    });

    // Set no data message
    var pageData = $('#pageDataType').val();
    if (pageData == RESPONSE_NODATA) {

        SetNoResults("pagerTopSeeAndDo");
    }
    else {

        // Find the start tab
        FindStartTab();
    }
    var hash = location.hash;
    //alert("hash = " + hash);
    if (hash != "")
    {
        $(window).hashchange();
    }
}

// *********  MAP FUCNTIONS  *********

function PlotSearchMarkers(latitude, longitude) {

    var tabid = GetSearchSelectedResultsTab();
    var resultsDiv = (tabid) ? '#' + tabid.replace(/^tab/, 'tabContent') : '#listResults';
    var panl = GetSearchFilterPanelParent();

    // Stop the rotating images and stay on the map
    if ($('#pagerTopSeeAndDo' + ':first .pageClickCallback').val() != "OnCallReview")
        $('#featuredNav li#map a').click();

    // Clear any current map markers
    window.gmap.clearOverlays();
    window.geocoder = new GClientGeocoder();

    // Create a boundary to contain the map zoom
    var bounds = new GLatLngBounds();

    var mainPoint = new GLatLng(latitude, longitude);
    // bounds.extend(mainPoint);
    var mainMarker = createMainMarker(mainPoint);
    window.gmap.addOverlay(mainMarker);

    // Loop through the results grabbing lat/long
    $('div.mapmarker', resultsDiv).each(function() {
        var data = GetMapDataStructure(this);

        if (!isNaN(data.latitude) || !isNaN(data.longitude)) {
            if (jQuery.trim(data.latitude).length > 0 || jQuery.trim(data.longitude).length > 0) {
                // Lat-Lng should be stored in the database
                var point = new GLatLng(data.latitude, data.longitude);
                bounds.extend(point);
                var marker = createMarker(point, data.number, data.name, data.place);
                window.gmap.addOverlay(marker);
            }
            else {
                // If Lat-Lng isn't stored, we'll geocode the listing
                //geocoder.getLatLng(data.name + ' ' + data.place, function(point) {
                //    if (point) {
                //        var marker = createMarker(point, data.number, data.name, data.place);
                //        window.gmap.addOverlay(marker);
                //    }
                //});
            }
        }
    });

    // Center up the display to fit all the results
    if (!bounds.isEmpty()) 
        window.gmap.setCenter(bounds.getCenter(), window.gmap.getBoundsZoomLevel(bounds));
}

GetMapDataStructure = function(mapData) {
    var data = {
        number: parseInt($('.number', mapData).text(), 10),
        name: $('.name', mapData).text(),
        place: $('.place', mapData).text(),
        latitude: $('.latitude', mapData).text(),
        longitude: $('.longitude', mapData).text()
    }
    return data;
}

// Recenter and zoom the map for the clicked item
MapSearchListing = function(mapData) {
    var data = GetMapDataStructure(mapData);
    var point = new GLatLng(data.latitude, data.longitude);
    window.gmap.setCenter(point, 12);
}


// *********  FILTER SUPPORT  *********

function GetSearchSortBy() {

    var selectedPanel = GetSearchFilterPanelParent();
    var sortField = $("[id^='ddlSortBy']", selectedPanel).val();

    if (typeof (sortField) == 'undefined' || sortField == null) {
        sortField = "REL";
    }
    return sortField;
}

function GetSiteSearchString() {

    var finalSearch = "";
    var finalSearchNoFilter = "";
    var filterSearch = "";
    var curFilterPanel = GetSearchFilterPanelParent();
    var searchString = "{!SEARCHSTRING!}";  // $('#siteSearchStringField').val();
    var escapeSearchString = "{!ESCAPESEARCHSTRING!}";
    var regionArray = $("[id^='DDFilterByLocation']", curFilterPanel).val().split('|');
    var regionCode = regionArray[0];
    var regionText = regionArray[4];
    var cityText = $('input.cityInput', curFilterPanel).val() == $('input.cityInput', curFilterPanel).attr('title') ? 'NOCITY' : $('input.cityInput', curFilterPanel).val();

    // Region
    if(regionCode != -1) {
        filterSearch = filterSearch + " +{!REGION!}:\"" + regionText + "\"";
    }

    // City
    if (cityText != "NOCITY" && Trim(cityText).length > 0) {
        filterSearch = filterSearch + " +{!CITY!}:\"" + cityText + "\"";
    }

    // Set the final string
    if (filterSearch.length > 0) {
        finalSearch = "+" + "\"" + searchString + "\"" +  filterSearch;
        finalSearchNoFilter = "+" + "\"" + searchString + "\"";
    }
    else {
        finalSearch = escapeSearchString;
        finalSearchNoFilter = escapeSearchString;
    }

    var searchObject = new Object();
    searchObject.searchString = finalSearch;
    searchObject.searchStringNoFilter = finalSearchNoFilter;
    searchObject.filterString = filterSearch;
    
    //alert("Region:= " + regionText);
    //alert("City:= " + cityText);
    //alert("Filter Parent:= " + curFilterPanel);
    //alert("Search String:= " + finalSearch);
    return searchObject;
}

// Determine which tab is selected
function GetSearchSelectedResultsTab() {
    if ($('.tabNav a.active').length > 0) {
        return $('.tabNav a.active').attr('id');
    } else return null;
}

// Determine which filterPanel is current
function GetSearchFilterPanelParent() {
    var tab = GetSearchSelectedResultsTab();
    if (tab) {
        var panel = tab.replace(/^tab/, '#filterPanel');
        return panel;
    } else return document;
}

// *********  SAVE/HEART SUPPORT  *********

function OnSaveSearchItem(entityId, entityType, listingType) {

    var savedItemCallbackFunction = "OnSucceededSavedItemCallback";
    SetUserSavedItem(entityType, entityId, listingType,'', function(result) { eval(savedItemCallbackFunction)(result) });
    return false;
}

function OnSucceededSavedItemCallback(result) {
   
    var returnValue = result.d.Value;
    var returnMessage = result.d.Message;
    var returnIsError = result.d.IsError;
    var returnStateValue = result.d.StateValue;
   
    UpdateCount(returnValue, '.saveItemsCount');
}

function GetUserReviewsByPage(filterString, entityGroupType, resultsPerPage, pageNumber, totalResultsCount, pagerParentDivId, successFunctionCallBack) {
    var params = new Object();
    params.filterString = filterString;
    params.entityGroupType = entityGroupType;
    params.resultsPerPage = resultsPerPage;
    params.pageNumber = pageNumber;
    params.totalResultsCount = totalResultsCount;
    params.stateObject = pagerParentDivId;

    $.ajax({
        type: "POST",
        url: "/Linked/WebService/ILNYUsers.asmx/GetUserReviewsByPage",
        data: $.toJSON(params),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: successFunctionCallBack,
        error: OnSearchFailed
    });

    return false;
}

function OnCallReview(pageclickednumber, parentPagerDivId) {

    var currentPage = pageclickednumber;
    var entityType = $('#' + parentPagerDivId + ' .pageStateValue').val();
    var pageCount = $('#' + parentPagerDivId + ' .pageTotalPageCount').val();
    var resultsPerPage = $('#' + parentPagerDivId + ' .pageRecordsPerPage').val();
    var totalResultCount = $('#' + parentPagerDivId + ' .pageTotalRecords').val();

    var userSearchPhrase = $('#siteSearchStringField').val();
    var searchObject = GetSiteSearchString();
    var sortField = GetSearchSortBy();

    switch (parentPagerDivId) {
        case "pagerTopSeeAndDo":
        case "pagerBottomSeeAndDo":
            SetProgressBar('itemsListSeeAndDo');
            ResetPagerSiteSearch("pagerTopSeeAndDo", 0, 0, 0, 0);
            ResetPagerSiteSearch("pagerBottomSeeAndDo", 0, 0, 0, 0)
            break;
        case "pagerTopEvents":
        case "pagerBottomEvents":
            SetProgressBar('itemsListEvents');
            ResetPagerSiteSearch("pagerTopEvents", 0, 0, 0, 0);
            ResetPagerSiteSearch("pagerBottomEvents", 0, 0, 0, 0);
            break;
        case "pagerTopEat":
        case "pagerBottomEat":
            SetProgressBar('itemsListEat');
            ResetPagerSiteSearch("pagerTopEat", 0, 0, 0, 0);
            ResetPagerSiteSearch("pagerBottomEat", 0, 0, 0, 0);
            break;
        case "pagerTopStay":
        case "pagerBottomStay":
            SetProgressBar('itemsListStay');
            ResetPagerSiteSearch("pagerTopStay", 0, 0, 0, 0);
            ResetPagerSiteSearch("pagerBottomStay", 0, 0, 0, 0);
            break;
        case "pagerTopDeals":
        case "pagerBottomDeals":
            SetProgressBar('itemsListDeals');
            ResetPagerSiteSearch("pagerTopDeals", 0, 0, 0, 0);
            ResetPagerSiteSearch("pagerBottomDeals", 0, 0, 0, 0);
            break;
        case "pagerTopMore":
        case "pagerBottomMore":
            SetProgressBar('itemsListMore');
            ResetPagerSiteSearch("pagerTopMore", 0, 0, 0, 0);
            ResetPagerSiteSearch("pagerBottomMore", 0, 0, 0, 0);
            break;
    }

    GetUserReviewsByPage(searchObject.filterString, entityType, resultsPerPage, currentPage, totalResultCount, parentPagerDivId, function(result) {
        OnSucceededSearchResultsByPage(result);
        fixSearchAlignItemImage();
        actionIconsListings(); // also called on initial load
        actionIconsConfirmation();
    });
    return false;
}
