﻿var Sawbuck = window.Sawbuck || {}; Sawbuck.Page = function () {
    var RESULTS_PER_PAGE = 10; var VISIBLE_PAGES = 7; var _criteria, _listings, _area_id, _area_name, _area_type, _area_type_id, _polygon, _map_center, _source_id; var _data_source = "listings"; var _view = "list"; var _page = 1; var _url; var _serial = { listings: 0 }; var _polygons_on = true; var _firstLoadComplete = false; var _searchSaved = false; var _classifieds = false; var _max_listings = null; var _listings_viewed = 0; var _listingLoads = 0; var _only_within_area = true; var _videos_watched = 0; var _total_listings = 0; var _quick_facts = []; var _quick_fact_counter = 0; function getNumberPerPage() {
        if (_view == "map") { return 500; }
        else return RESULTS_PER_PAGE;
    }
    function getCriteria() { if (!_criteria) return false; var ajaxData = { CurrentAreaID: _area_id, AreaID: _area_id, AreaTypeID: _area_type_id, BathroomsMax: _criteria.baths.value[1], BathroomsMin: _criteria.baths.value[0], BedroomsMax: _criteria.beds.value[1], BedroomsMin: _criteria.beds.value[0], DateDiffMax: (_criteria.status.value[0] == 1) ? _criteria.listDate.value[1] : _criteria.closeDate.value[1], DateDiffMin: (_criteria.status.value[0] == 1) ? _criteria.listDate.value[0] : _criteria.closeDate.value[0], ListDateMin: _criteria.listDate.value[0], ListDateMax: _criteria.listDate.value[1], CloseDateMin: _criteria.closeDate.value[0], CloseDateMax: _criteria.closeDate.value[1], Count: getNumberPerPage(), ForSale: "true", LatitudeMax: 0, LatitudeMin: 0, LongitudeMax: 0, LongitudeMin: 0, NumberPerPage: getNumberPerPage(), PageNumber: _page, PriceMax: _criteria.price.value[1], PriceMin: _criteria.price.value[0], PropertyTypes: _criteria.propertyTypes.value[0], RatingMax: _criteria.rating.value[1], RatingMin: _criteria.rating.value[0], SortBy: _criteria.sort.value[0].replace(/-/, " desc"), Status: _criteria.status.value[0], SpecialFeatures: _criteria.specialFeatures.value[0], Preferences: 0, Serial: _serial.listings, Classifieds: _classifieds }; return ajaxData; }
    function updatePages() {
        if (isMultiplePages()) {
            $j(".currentPageNumber").html(_page); $j(".totalPages").html(getTotalPages()); $j(".startingResult").text((_page * getNumberPerPage()) - getNumberPerPage() + 1); var endingResult = (_page * getNumberPerPage() > _total_listings) ? _total_listings : (_page * getNumberPerPage()); $j(".endingResult").text(endingResult); if (_page > 1) { var hash = Sawbuck.SearchManager.getHash().length > 1 ? Sawbuck.SearchManager.getHash().replace(/p_[\d][\/]+/, "") + "/p_" + (_page - 1) : "#"; $j(".pagination .left_arrow").attr("src", "/images/left_arrow.gif"); $j(".pagination .left_arrow").parent().attr("href", hash); }
            else
                $j(".pagination .left_arrow").attr("src", "/images/left_arrow_off.gif"); if (_page == getTotalPages())
                $j(".pagination .right_arrow").attr("src", "/images/right_arrow_off.gif"); else { var hash = Sawbuck.SearchManager.getHash().length > 1 ? Sawbuck.SearchManager.getHash().replace(/p_[\d][\/]+/, "") + "/p_" + (_page + 1) : "#"; $j(".pagination .right_arrow").attr("src", "/images/right_arrow.gif"); $j(".pagination .right_arrow").parent().attr("href", hash); }
            var offset = Math.floor(VISIBLE_PAGES / 2); var startingPageSet = 1; var maxPage = startingPageSet + (VISIBLE_PAGES - 1); if (_page > offset && (getTotalPages() - offset) > _page) { startingPageSet = _page - offset; maxPage = startingPageSet + (VISIBLE_PAGES - 1); }
            else if (_page >= (getTotalPages() - offset)) { startingPageSet = getTotalPages() - (VISIBLE_PAGES - 1); maxPage = getTotalPages(); }
            if (startingPageSet <= 0) startingPageSet = 1; if (maxPage > getTotalPages()) maxPage = getTotalPages(); $j(".pagination .pages").html(""); for (var i = startingPageSet; i <= maxPage; i++) {
                $j(".pagination .pages").append(" "); if (i == _page) { var currentPageLink = $j("<span>"); currentPageLink.addClass("current"); currentPageLink.text(i); $j(".pagination .pages").append(currentPageLink); }
                else { var link = $j("<a>"); var hash = Sawbuck.SearchManager.getHash().length > 1 ? Sawbuck.SearchManager.getHash().replace(/p_[\d][\/]+/, "") + "/p_" + i : "#"; $j(link).attr("href", hash); $j(link).addClass("hash"); $j(link).attr("onclick", "Sawbuck.Page.filterView.raise({property: 'page', value: [" + i + "]}); return false;"); link.text(i); $j(".pagination .pages").append(link); }
                $j(".pagination .pages").append(" ");
            } 
        }
        else { $j(".pagination").hide(); $j(".startingResult").text("1"); $j(".endingResult").text(_total_listings); } 
    }
    function maximumReached() { return (_max_listings && _listings_viewed >= _max_listings); }
    function displayListings() { updatePages(); Sawbuck.Renderer.render(_view, _listings, _map_center, _polygons_on); }
    function loadListings(track, count) {
        if (_data_source == "savedSearches") return loadSavedSearchResults(); _serial.listings++; showLoader(); var criteria = getCriteria(); criteria["Big"] = (count || !_firstLoadComplete) ? true : false; if (_view == "list" || _view == "gallery") {
            var webService = "/service/WebService.asmx/GetListingByLatLng"; if (!Sawbuck.Renderer.getMap("list")) { Sawbuck.Renderer.changeView("list"); }
            var points = Sawbuck.MapManager.getBounds(true); criteria["LatitudeMin"] = points.latMin; criteria["LatitudeMax"] = points.latMax; criteria["LongitudeMin"] = points.lngMin
            criteria["LongitudeMax"] = points.lngMax; criteria["OnlyWithinArea"] = _only_within_area;
        } else if (_area_type && _view == "map") { Sawbuck.Renderer.getMap(_view).loadPolygons(criteria, true); Sawbuck.Renderer.render(_view, _listings, _map_center, _polygons_on); return; } else { var webService = "/service/WebService.asmx/GetListing"; }
        _listingLoads++; if ((_listingLoads % 3) == 0) reloadPartnerAd(); $j.ajax({ type: "POST", url: webService, data: Sawbuck.Utilities.toJson(criteria), contentType: "application/json; charset=utf-8", dataType: "json", processData: false, dataFilter: function (data, type) { return data.replace(/"\\\/(Date\([0-9-]+\))\\\/"/gi, 'new $1'); }, success: function (listings) { parseListings(listings, criteria); _firstLoadComplete = true; }, error: function (e, t) { } });
    }; function parseListings(listings, criteria) {
        if (listings.d) {
            if (parseInt(listings.d.Serial) == (_serial.listings)) {
                if (!listings.d.ListingItem.length && listings.d.Count >= 1 && _page > 1) { _page = Math.ceil(listings.d.Count / getNumberPerPage()); Sawbuck.Page.filterPage.raise({ property: "page", value: [_page] }); return false; }
                _total_listings = criteria["Big"] ? listings.d.Count : _total_listings; _listings = { listing: listings.d.ListingItem, total: _total_listings }; return displayListings();
            } else return false;
        }
        else return false;
    }; function getListingByID(id) {
        if (_listings.listing.length <= 0) return false; else {
            for (var i = 0; i < _listings.listing.length; i++) { if (_listings.listing[i].id == id) return _listings.listing[i]; }
            if (Sawbuck.MapManager.getListings([id][0]))
                return Sawbuck.MapManager.getListings([id])[0]; else
                return false;
        } 
    }; function getSavedSearches() { $j.ajax({ type: "POST", url: "/service/WebService.asmx/GetSavedSearches", data: Sawbuck.Utilities.toJson({ SearchTypeID: 2, PageNumber: 0, NumberPerPage: 0, OrderBy: "SearchName", Serial: 1 }), contentType: "application/json; charset=utf-8", dataType: "json", processData: false, success: function (response) { updateSavedSearches(response.d); }, error: function () { } }); }
    function updateSavedSearches(response) {
        if (!response || response.length <= 0) return false; $j(".searchList").parent().show(); $j(".searchList").html(""); var optGroup = document.createElement("optgroup"); optGroup.label = "You have " + response.length + " saved:"; for (var i = 0; i < response.length; i++) { var opt = document.createElement("option"); opt.innerHTML = "-- " + response[i].SearchName; opt.value = response[i].URL; optGroup.appendChild(opt); }
        $j(".searchList").append(optGroup);
    }
    function loadSavedSearchResults() { var data = this.getCriteria(); $j.ajax({ type: "POST", url: "/service/WebService.asmx/GetMySawbuckListing", data: Sawbuck.Utilities.toJson(data), contentType: "application/json; charset=utf-8", dataType: "json", processData: false, success: function (listings) { parseListings(listings); }, error: function () { } }); }; function getTotalPages() {
        if (_listings)
            return Math.ceil(_listings.total / RESULTS_PER_PAGE); else
            return 0;
    }
    function isMultiplePages() { return (getTotalPages() > 1) }
    function showLoader() { $j(".resultsPagination, .pagination").hide(); $j(".listView .listings").scrollTop(0); $j(".listingsContainer").html(Sawbuck.Renderer.templatize("loader", {})); $j(".disclaimers").html(""); document.body.style.cursor = 'wait'; }; function updateRSSLink() { var hash = Sawbuck.SearchManager.getHash().replace(/#/, "").replace(/a_([^\/]*)\//, ""); var q = "?"; q += (hash.length > 0) ? hash.replace(/\//g, "&").replace(/_/g, "=") : ""; var bounds = Sawbuck.MapManager.getBounds(); delete bounds["big"]; q += "&lat=" + bounds.latMin + "," + bounds.latMax; q += "&lng=" + bounds.lngMin + "," + bounds.lngMax; jQuery("a.rssLink").each(function () { this.href = (this.getAttribute("href").split("?")[0] + q); this.className = "rssLink"; }); }
    function subscribeToEmailAlerts(name, frequency) {
        if (!name || name == "") { alert("You must enter a name to save your search criteria"); return; }
        saveSearch(true, name, true, frequency);
    }
    function saveSearch(intentional, name, alertsOn, frequency) {
        if (intentional && alertsOn && !Sawbuck.UserManager.isLoggedIn()) { $j(".dialogBox").dialog('close'); Sawbuck.Page.modo('registrationWindow'); Sawbuck.Queue.add(function () { Sawbuck.Page.saveSearch(intentional, name, alertsOn, frequency); }); return; }
        var criteria = getCriteria(); criteria["ListDateMin"] = criteria["ListDateMin"]; criteria["ListDateMax"] = criteria["ListDateMax"]; criteria["CloseDateMin"] = criteria["CloseDateMin"]; criteria["CloseDateMax"] = criteria["CloseDateMax"]; criteria["SearchTypeID"] = intentional ? 2 : 1; criteria["UpdateIfExists"] = intentional ? _searchSaved : true; criteria["SearchName"] = name || $j("#savedSearchName").val() || ""; var points = Sawbuck.MapManager.getBounds(); criteria["LatitudeMin"] = points.latMin; criteria["LatitudeMax"] = points.latMax; criteria["LongitudeMin"] = points.lngMin
        criteria["LongitudeMax"] = points.lngMax; criteria["ZoomLevel"] = Sawbuck.MapManager.getMap().getZoom(); criteria["PageType"] = (_url == "/for_sale") ? 2 : 3; if (intentional) { criteria["SendEmailAlerts"] = alertsOn; criteria["Alerts"] = frequency || Sawbuck.UserManager.getAlertsFrequency(); if (alertsOn) Sawbuck.UserManager.emailAlertsOn(frequency); else Sawbuck.UserManager.emailAlertsOff(frequency); }
        else { criteria["SendEmailAlerts"] = Sawbuck.UserManager.alertsOn(); criteria["Alerts"] = Sawbuck.UserManager.getAlertsFrequency(); }
        $j.ajax({ type: "POST", url: "/service/WebService.asmx/SaveSearch", data: Sawbuck.Utilities.toJson(criteria), contentType: "application/json; charset=utf-8", dataType: "json", processData: false, success: function (response) {
            Sawbuck.Page.saveSearchComplete(); _searchSaved = _saved = true; if (intentional) {
                Sawbuck.Reporting.trackEvent("Save Search", "Saved on search page"); if (alertsOn) { Sawbuck.Reporting.trackEvent("Email Alerts", "Subscribed on search page"); $j("#mySawbuckTip div").html("Your search has been saved and your alerts have been turned on. Visit <b><a href='/my_sawbuck'>My Sawbuck</a></b> anytime to change your preferences."); }
                else { $j("#mySawbuckTip div").html("Your search has been saved. Visit <b><a href='/my_sawbuck'>My Sawbuck</a></b> anytime to view your saved searches or to turn on/off email alerts."); }
                $j("#bubbler").trigger("mouseover"); setTimeout(function () { $j("#bubbler").trigger("mouseout"); }, 10000);
            } 
        }, error: function () { } 
        });
    }
    function loadAreaInfoPanel(areaID) {
        criteria = getCriteria(); $j.ajax({ type: "POST", url: "/service/WebService.asmx/GetQuickFactsByArea", data: Sawbuck.Utilities.toJson(criteria), contentType: "application/json; charset=utf-8", dataType: "json", processData: false, success: function (response) {
            _quick_facts = response.d; _quick_fact_counter = 0; if (_quick_facts.length == 1)
                $j(".mapView .infoPanel .quickFactControls").hide(); else { $j(".mapView .infoPanel .quickFactControls .previous").attr("src", "/images/map/tip_left_off.png"); $j(".mapView .infoPanel .quickFactControls .previous").attr("style", ""); $j(".mapView .infoPanel .quickFactControls .next").attr("style", "cursor: pointer"); $j(".mapView .infoPanel .quickFactControls").show(); }
            if (_quick_facts.length >= 1) { $j(".mapView .infoPanel span").html(_quick_facts[_quick_fact_counter]); $j(".mapView .infoPanel span a").addClass("hash"); Sawbuck.SearchManager.updateHash(); $j(".mapView .infoPanel").animate({ top: -25 }) } 
        }, error: function () { } 
        });
    }
    function displayNextQuickFact() {
        if (_quick_fact_counter < _quick_facts.length - 1) { _quick_fact_counter++; $j(".mapView .infoPanel span").html(_quick_facts[_quick_fact_counter]); $j(".mapView .infoPanel span a").addClass("hash"); Sawbuck.SearchManager.updateHash(); $j(".mapView .infoPanel .quickFactControls .previous").attr("src", "/images/map/tip_left.png"); $j(".mapView .infoPanel .quickFactControls .previous").attr("style", "cursor: pointer"); }
        if (_quick_fact_counter == _quick_facts.length - 1) { $j(".mapView .infoPanel .quickFactControls .next").attr("src", "/images/map/tip_right_off.png"); $j(".mapView .infoPanel .quickFactControls .next").attr("style", ""); }
        return false;
    }
    function displayPreviousQuickFact() {
        if (_quick_fact_counter > 0) { _quick_fact_counter--; $j(".mapView .infoPanel span").html(_quick_facts[_quick_fact_counter]); $j(".mapView .infoPanel span a").addClass("hash"); Sawbuck.SearchManager.updateHash(); $j(".mapView .infoPanel .quickFactControls .next").attr("src", "/images/map/tip_right.png"); $j(".mapView .infoPanel .quickFactControls .next").attr("style", "cursor: pointer"); }
        if (_quick_fact_counter == 0) { $j(".mapView .infoPanel .quickFactControls .previous").attr("src", "/images/map/tip_left_off.png"); $j(".mapView .infoPanel .quickFactControls .previous").attr("style", ""); }
        return false;
    }
    function processSearch(criteria) { Sawbuck.Page.filterBaths.load({ value: [criteria["BathsMin"], criteria["BathsMax"]] }); Sawbuck.Page.filterBeds.load({ value: [criteria["BedsMin"], criteria["BedsMax"]] }); Sawbuck.Page.filterPrice.load({ value: [criteria["PriceMin"], criteria["PriceMax"]] }); Sawbuck.Page.filterPropertyTypes.load({ value: [criteria["PropertyType"]] }); Sawbuck.Page.filterSpecialFeatures.load({ value: [criteria["SpecialFeatures"]] }); Sawbuck.SearchManager.setValues({ "baths": [criteria["BathsMin"], criteria["BathsMax"]], "beds": [criteria["BedsMin"], criteria["BedsMax"]], "price": [criteria["PriceMin"], criteria["PriceMax"]], "propertyTypes": [criteria["PropertyType"]], "specialFeatures": [criteria["SpecialFeatures"]] }); }
    function ajaxSearch(arg) {
        var searchValue = $j("#searchBox input[type=text]").val(); if (searchValue != "Search" && searchValue != "City, Zip, Neighborhood, Address or MLS#" && searchValue != "") {
            $j.ajax({ type: "POST", url: "/service/WebService.asmx/DoSearch", data: Sawbuck.Utilities.toJson({ queryText: searchValue, Page: _url == "/for_sale" ? 0 : 1 }), contentType: "application/json; charset=utf-8", dataType: "json", processData: false, success: function (response) {
                if (response.d.AreaID !== -1) {
                    _page = 1; Sawbuck.SearchManager.setValue("page", [1]); if (response.d.SearchCriteria)
                        processSearch(response.d.SearchCriteria); Sawbuck.MapManager.switchArea(response.d.AreaID, response);
                }
                else if (response.d.Url) { window.location = response.d.Url } 
            }, error: function () { } 
            });
        }
        return false;
    }
    function showListingVideo(listingId) {
        var mediaLookupURL = "http://sawbuckfe.sundayskylb1.com/MediaLookup/?accountId=Sawbuck%26videoletId=ListingShowcase%26key="; var mediaLookupSuffix = ":1.0:default:overlaid_video"; var options = {}; if (_videos_watched < 1 && false)
            options.commercialFile = Sawbuck.SERVER + '/video/ss_intro_2.flv'; options.isPopup = false; options.screenColor = "#ffffff"; options.autoStart = true; sundaySky.create(mediaLookupURL + listingId + mediaLookupSuffix, options); $j(".ssVideo").dialog('open'); $j(".ssVideo").dialog('option', 'title', "Video of " + getListingByID(listingId).addr); Sawbuck.Reporting.trackEvent("Listing Video Played", "From Search Page"); _videos_watched++;
    }
    function markMessageRead(messageID) { $j.ajax({ type: "POST", url: "/service/WebService.asmx/SetMessageStatus", data: Sawbuck.Utilities.toJson({ messageID: messageID }), contentType: "application/json; charset=utf-8", dataType: "json", processData: false, success: function (response) { }, error: function () { } }); }
    function showMapLoginMessage() { $j(".mapLoginMessage").fadeIn(); }
    function reloadPartnerAd() { $j(".listViewAd iframe").attr("src", $j(".listViewAd iframe").attr("src")) }
    return { init: function (opts) { with (opts) { _data_source = dataSource || _data_source; _area_id = areaID || 814; _area_type_id = areaTypeID || 4; _map_center = center; _page = page || _page; _view = view || _view; _classifieds = classifieds || _classifieds; _max_listings = maxListings || null; } }, onSearchChange: function (args) {
        var track = false; var totalChanges = 0; with (args) {
            _page = search.page.value[0]; $j(".listingSort").val(search.sort.value[0].replace(/ desc/, "-")); if (!properties.view && _firstLoadComplete) return false; $j(".disclaimers").html(""); track = (!properties.sort); _view = search.view.value[0]; _criteria = search; for (var p in properties) { if (!properties[p]) totalChanges++; }
            if (!(totalChanges == 1 && !properties.page)) { _listings_viewed = 0; _max_listings = null; $j("#maximumResultsReached").fadeOut(); }
            if (!properties.areaID) { _area_id = search.areaID.value[0]; Sawbuck.MapManager.switchArea(_area_id, null, true); }
            else { if (maximumReached()) { updatePages(); Sawbuck.Renderer.changeView(_view); Sawbuck.Renderer.renderMaximumReached(_view); return; } } 
        }; if (Sawbuck.SearchManager.getValue("map_center") && Sawbuck.SearchManager.getValue("map_center")[0]) { _map_center = new GLatLng(Sawbuck.SearchManager.getValue("map_center")[0], Sawbuck.SearchManager.getValue("map_center")[1]); }
        if (!_firstLoadComplete) { Sawbuck.Renderer.init(_view, _map_center, parseInt(Sawbuck.SearchManager.getValue("zoom")[0])); }
        else if (!args.properties.zoom || !args.properties.map_center) {
            if (_map_center && Sawbuck.SearchManager.getValue("zoom")[0])
                Sawbuck.Renderer.getMap().setCenter(_map_center, parseInt(Sawbuck.SearchManager.getValue("zoom")[0]));
        }
        Sawbuck.Renderer.getMap().closeExtInfoWindow(); Sawbuck.MapManager.clearMarkers(); if (Sawbuck.UserManager.isLoggedIn() || _url == "/for_sale" || _url == "/classifieds")
            loadListings(track, true); if ((args.properties.sort && args.properties.page) || totalChanges > 1) { Sawbuck.MapManager.updateTiles(); }
        updateRSSLink();
    }, onViewChange: function (args) {
        if (!_firstLoadComplete) return false; var oldView = _view
        var totalChanges = 0; with (args) { if (properties.view) return false; if (!properties.page) return false; _view = search.view.value[0]; _criteria = search; for (var p in properties) { if (!properties[p]) totalChanges++; } }; if (maximumReached()) { updatePages(); Sawbuck.Renderer.changeView(_view); Sawbuck.Renderer.renderMaximumReached(_view); return; }
        if ((oldView == 'list' || oldView == 'gallery') && (_view == 'list' || _view == 'gallery') && totalChanges <= 1) { displayListings(); }
        else { loadListings(); }
        Sawbuck.Debugger.report("onViewChange"); if (_firstLoadComplete) { Sawbuck.Reporting.trackEvent("View Change", "Changed to " + _view); } 
    }, onPageChange: function (args) {
        if (!_firstLoadComplete) return false; $j(".disclaimers").html(""); with (args) {
            if (properties.page) return false; _page = search.page.value[0]; _view = search.view.value[0]; if (maximumReached()) { updatePages(); Sawbuck.Renderer.changeView(_view); Sawbuck.Renderer.renderMaximumReached(_view); return; }
            _criteria = search; if (!_firstLoadComplete)
                Sawbuck.Renderer.init(_view, _map_center); loadListings(); if (_firstLoadComplete) { Sawbuck.Reporting.track(_url + Sawbuck.SearchManager.getValue("areaURL")[0]); } 
        };
    }, onLoad: function (args) {
        if (!_criteria) {
            _criteria = Sawbuck.SearchManager.getSearch(); _page = _criteria.page.value[0]; _view = _criteria.view.value[0]; Sawbuck.Renderer.init(_view, _map_center); if (Sawbuck.UserManager.isLoggedIn() || _url == "/for_sale" || _url == "/classifieds")
                loadListings(false, true); Sawbuck.MapManager.loadTileData();
        }
        Sawbuck.Debugger.report("Sawbuck.Page::onLoad .... done"); Sawbuck.Debugger.report(_criteria); $j("#breadCrumbs a, .neighboorhoods a").live("click", function () { Sawbuck.MapManager.switchArea(parseInt(this.href.match(/\/(\d+)(#.*)?$/)[1])); $j("#neighborhoodsList").dialog("close"); return false; }); window.searchSubmit = ajaxSearch; _firstLoadComplete = true; updateRSSLink(); GEvent.addListener(Sawbuck.MapManager.getMap(), "moveend", updateRSSLink); loadAreaInfoPanel();
    }, onLogout: function (args) { window.location.reload(); }, onLogin: function (args) {
        Sawbuck.Queue.go()
        $j("#inlineRegistrationWindow").parent().remove(); $j(".leftPanel").show(); $j(".tabs ul").removeClass("off"); $j(".registerForAlerts").hide(); $j(".emailAlertsOptions").show(); $j("#emailAlertsDialog input[name=frequency]").val([(Sawbuck.UserManager.getAlertsFrequency() || 2).toString()]); if (!Sawbuck.UserManager.alertsOn()) document.getElementById('emailAlertsCheckbox').checked = false; _max_listings = null; loadListings(false, true); Sawbuck.MapManager.updateTiles()
    }, onRegister: function (args) {
        Sawbuck.Queue.go()
        $j("#inlineRegistrationWindow").parent().remove(); $j(".leftPanel").show(); $j(".tabs ul").removeClass("off"); $j(".registerForAlerts").hide(); $j(".emailAlertsOptions").show(); $j("input[name=frequency]").val([Sawbuck.UserManager.getAlertsFrequency().toString()]); if (!Sawbuck.UserManager.alertsOn()) document.getElementById('emailAlertsCheckbox').checked = false; if (_max_listings && _view != "map") { if (getNumberPerPage() * _page > _max_listings) { updatePages(); Sawbuck.Renderer.changeView(_view); Sawbuck.Renderer.renderMaximumReached(_view); return; } }
        loadListings(false, true); Sawbuck.MapManager.updateTiles()
    }, rateListingHandler: function (args) { var id = args.id; var rating = args.rating; var listing = getListingByID(id); listing.rat = rating; }, preLoadListings: function (listings) { _listings = listings; }, loadAreaInfoPanel: loadAreaInfoPanel, getAreaID: function () { return _area_id; }, setAreaID: function (areaID) { return _area_id = areaID; }, getSourceID: function () { return _source_id; }, setSourceID: function (sourceID) { return _source_id = sourceID; }, getAreaTypeID: function () { return _area_type_id; }, setPolygon: function (value) { _polygon = value; }, getPolygon: function () { return _polygon; }, polygonsOn: function (bool) { if (bool === undefined) return _polygons_on; else if (_polygons_on != bool || _area_type) { _area_type = null; _polygons_on = bool; loadListings(); } }, setFixedAreaType: function (areaType) { _area_type = areaType; _polygons_on = true; Sawbuck.Renderer.getMap().hideNoListingsOverlay().hideTooManyListingsOverlay().setFixedAreaType(areaType); $j(".resultCount").text(""); }, showLoader: showLoader, hideLoader: function () {
        if (isMultiplePages())
            $j(".pagination").show(); document.body.style.cursor = 'default';
    }, modo: function (name) { $j("#" + name).dialog('open'); return false; }, getURL: function () { return _url; }, setURL: function (url) { _url = url; }, updateRSSLink: updateRSSLink, getListingByID: function (id) { return getListingByID(id); }, getRatingByListingID: function (id) { var listing = getListingByID(id); return listing.rat || 0; }, getPage: function () { return _page; }, setPage: function (page) { _page = page; return _page; }, getCriteria: function () { return getCriteria(); }, goToNextPage: function () { if (_page + 1 <= getTotalPages()) { _page++; Sawbuck.SearchManager.goToPage(_page); } }, goToPreviousPage: function () { if (_page > 1) { _page--; Sawbuck.SearchManager.goToPage(_page); } }, goToPath: function (path) { window.location = _url + path + Sawbuck.SearchManager.getHash(); return false; }, goToArea: function (areaID) { window.location = window.location.pathname.replace(/[0-9]+$/, areaID); }, ajaxSearch: ajaxSearch, addHash: function (link) { window.location = link.href + Sawbuck.SearchManager.getHash(); return false; }, modo: function (name) { $j("#" + name).dialog('open'); return false; }, subscribeToEmailAlerts: subscribeToEmailAlerts, saveSearch: saveSearch, emailAlertsOpen: function (label) { $j('#emailAlertsDialog').dialog('open'); $j('#savedAlertsName').val($j('#breadCrumbs .selected').text()); $j("#emailAlertsDialog input[name=frequency]").val([Sawbuck.UserManager.getAlertsFrequency().toString()]); }, saveSearchOpen: function (label) { $j('#saveSearchDialog').dialog('open'); $j('#savedSearchName').val($j('#breadCrumbs .selected').text()); $j("#saveSearchDialog input[name=frequency]").val([Sawbuck.UserManager.getAlertsFrequency().toString()]); if (!Sawbuck.UserManager.alertsOn()) document.getElementById('emailAlertsCheckbox').checked = false; }, cancelSaveSearch: function () { $j('#saveSearchDialog').dialog('close'); }, saveSearchComplete: function () { $j('#saveSearchDialog').dialog('close'); $j('#emailAlertsDialog').dialog('close'); }, cancelEmailAlerts: function () { $j('#emailAlertsDialog').dialog('close'); }, changeView: function (args) {
        var oldView = _view
        _view = args.value[0]; if ((oldView == 'list' || oldView == 'gallery') && (_view == 'list' || _view == 'gallery')) { updatePages(); } 
    }, getView: function () { return _view; }, getProperties: function () { return { criteria: _criteria, mapCenter: _map_center, polygon: _polygon, view: _view, page: _page, listings: _listings, url: _url, areaID: _area_id, areaTypeID: _area_type_id, polygonsOn: _polygons_on }; }, loadListings: loadListings, loadListingMedia: Sawbuck.Utilities.loadListingMedia, loaded: function () { return _firstLoadComplete; }, showingMax: function () { return _listings.listing.length >= getNumberPerPage(); }, setMaxDisplayable: function (max) {
        if (max && (!_max_listings || max < _max_listings)) { _max_listings = max; return true; }
        return false;
    }, getMaxDisplayable: function () { return _max_listings; }, getAreaName: function () { return _area_name; }, setAreaName: function (areaName) { _area_name = areaName; }, onlyWithinArea: function (value) {
        if (value === true || value === false)
            return _only_within_area = value; else
            return _only_within_area;
    }, leaveArea: function () { return _only_within_area = true; }, saveNotes: function (id, notes) { $j.ajax({ type: "POST", url: "/service/WebService.asmx/SaveListingNotes", data: Sawbuck.Utilities.toJson({ Notes: notes, ListingID: id }), contentType: "application/json; charset=utf-8", dataType: "json", processData: false, success: function (response) { Sawbuck.Reporting.trackEvent("Notes", "Edit from Search Page"); $j('#listingNotesForm .saving').hide(); $j('#listingNotesForm').dialog('close'); }, error: function () { } }); }, getListingNotes: function (listingID) { $j.ajax({ type: "POST", url: "/service/WebService.asmx/GetNotes", data: Sawbuck.Utilities.toJson({ ListingID: listingID }), contentType: "application/json; charset=utf-8", dataType: "json", processData: false, success: function (listings) { var notes = listings.d; $j("#listingNotesForm .listingID").text(listingID); $j("#listingNotesForm textarea").val(notes); $j('#listingNotesForm').dialog('open'); }, error: function (e, t) { } }); }, markMessageRead: markMessageRead, mapViewOpenListing: function (listingID) {
        if (Sawbuck.UserManager.getPartnerID() == 0)
            return; data = { ListingID: listingID, StatID: 1 }; $j.ajax({ type: "POST", url: "/service/WebService.asmx/IncreaseEnhancedStat", data: Sawbuck.Utilities.toJson(data), contentType: "application/json; charset=utf-8", dataType: "json", processData: false, dataFilter: function (data, type) { return data.replace(/"\\\/(Date\([0-9-]+\))\\\/"/gi, 'new $1'); }, success: function (listings) { }, error: function (e, t) { } });
    }, listingViewed: function () { _listings_viewed++; }, mapViewListingViewed: function () { _listings_viewed++; }, mapViewListingsViewed: function () { return _listings_viewed; }, getListingViews: function () { return _listings_viewed; }, resetListingViews: function () { return _listings_viewed = 0; }, maximumReached: maximumReached, displayPreviousQuickFact: displayPreviousQuickFact, displayNextQuickFact: displayNextQuickFact, showListingVideo: showListingVideo, reloadPartnerAd: reloadPartnerAd, showMapLoginMessage: showMapLoginMessage, videoWatched: function () { _videos_watched++; }, videosWatched: function () { return _videos_watched; } 
    };
} ();