PageSourceSearch

https://www.alaskacollection.com/scripts/CMSScripts/Custom/CardListing.js?v=20260828v1

js alaskacollection.com collected 2026-09-25 14:09:13 UTC 26,452 bytes, 539 lines download raw bytes

1/* Encapsulate ALL the cards JS. */
2jQuery.fn.searchCards = function (options) {
3
4    currentPosition = 0;
5    cardSlotsFilled = 0;
6    currentPage = 1;
7    ContainerID = this.attr('id');
8    window.prevCard = undefined;
9
10 
11    /* Define the available methods to fire. */
12    var methods = {
13        setProductType: function () {
14            productType = methodArgs[1]; /* the product type is the second arg passed. */
15            setupProductTypeOption(productType);
16        }
17    }
18
19    // If the options is a method name, save the arguments so they can be accessed later.
20    var methodArgs = null;
21    if (methods[options]) {
22        methodArgs = arguments;
23    }
24
25    var setup = function () {
26
27        if (!ContainerID) /* If no ID, then stop. */
28            return;
29
30        /* Hide Product Type specific options. */
31        hideProductTypeOptions();
32
33        /* Type filter */
34        if (jQuery('#' + ContainerID + ' .typefilter').length > 1) {
35            jQuery('#' + ContainerID + ' .typefilter').click(function (e) {
36                e.preventDefault();
37
38                /* Hide Product Type specific options. */
39                hideProductTypeOptions();
40
41                var type = jQuery(this);
42                var isAlreadySelected = type.hasClass('selected');
43                /* First things first, deselect any currently selected Types. */
44                jQuery('#' + ContainerID + ' .typefilter').removeClass('selected');
45
46                /* If the item is being de-selected... */
47                if (isAlreadySelected) {
48                    jQuery('#' + ContainerID).data('search_type', '');
49                } else { /* Item is newly selected. */
50                    // Clean out any existing filters.
51                    jQuery('#' + ContainerID).data('search_destination', jQuery('#' + ContainerID).data('search_destination_fixed'));
52                    jQuery('#' + ContainerID).data('search_duration', '');
53                    jQuery('#' + ContainerID).data('search_price', '');
54                    jQuery('#' + ContainerID).data('search_rating', '');
55                    jQuery('#' + ContainerID).data('search_category', '');
56                    jQuery('#' + ContainerID).data('search_activity_category', '');
57                    jQuery('#' + ContainerID).data('search_starting_location', '');
58                    jQuery('#' + ContainerID).data('search_ending_location', '');
59                    /* Default the selected option to be "Select". */
60                    //jQuery('#' + ContainerID + ' .typeoptions .selectedvalue').text('Select');
61
62                    type.addClass('selected');
63                    var selectedType = '';
64                    if (type.attr('href')) { /* Get the selected code value (in a tag's href value). */
65                        selectedType = type.attr('href').substring(1); /* Just grab what's after the # */
66                    }
67                    jQuery('#' + ContainerID).data('search_type', selectedType);
68                    setupProductTypeOption(selectedType);
68 /* Set up the specific options for this type. */
69                }
70                searchCards();
71            });
72        }
73
74        /* Region filter */
75        var ddRegion = new DropDown(jQuery('#' + ContainerID + ' .ddlFilterRegions'));
76        jQuery('#' + ContainerID + ' .ddlFilterRegions a').click(function () {
77            var filter = jQuery(this).attr('href');
78            if (filter.length > 0) filter = filter.substring(1);
79            jQuery('#' + ContainerID).data('search_region', filter);
80            searchCards();
81        });
82        /* Destination filter */
83        var ddDestination = new DropDown(jQuery('#' + ContainerID + ' .ddlFilterDestinations'));
84        jQuery('#' + ContainerID + ' .ddlFilterDestinations a').click(function () {
85            var filter = jQuery(this).attr('href');
86            if (filter.length > 0) filter = filter.substring(1);
87            jQuery('#' + ContainerID).data('search_destination', filter);
88            searchCards();
89        });
90        /* Length filter (Num hours, Num days) */
91        var ddDuration = new DropDown(jQuery('#' + ContainerID + ' .ddlFilterDuration'));
92        jQuery('#' + ContainerID + ' .ddlFilterDuration a').click(function () {
93            var filter = jQuery(this).attr('href');
94            if (filter.length > 0) filter = filter.substring(1);
95            jQuery('#' + ContainerID).data('search_duration', filter);
96            searchCards();
97        });
98        /* Price Range filter */
99        var ddPriceRange = new DropDown(jQuery('#' + ContainerID + ' .ddlFilterPriceRange'));
100        jQuery('#' + ContainerID + ' .ddlFilterPriceRange a').click(function () {
101            var filter = jQuery(this).attr('href');
102            if (filter.length > 0) filter = filter.substring(1);
103            jQuery('#' + ContainerID).data('search_price', filter);
104            searchCards();
105        });
106        /* Rating filter */
107        var ddRating = new DropDown(jQuery('#' + ContainerID + ' .ddlFilterRating'));
108        jQuery('#' + ContainerID + ' .ddlFilterRating a').click(function () {
109            var filter = jQuery(this).attr('href');
110            if (filter.length > 0) filter = filter.substring(1);
111            jQuery('#' + ContainerID).data('search_rating', filter);
112            searchCards();
113        });
114
115        /* Activities Duration filter (Num hours, Num days) */
116        var ddActivitiesDuration = new DropDown(jQuery('#' + ContainerID + ' .ddlFilterActivitiesDuration'));
117        jQuery('#' + ContainerID + ' .ddlFilterActivitiesDuration a').click(function () {
118            var filter = jQuery(this).attr('href');
119            if (filter.length > 0) filter = filter.substring(1);
120            jQuery('#' + ContainerID).data('search_duration', filter);
121            searchCards();
122        });
123        /* Activities Price Range filter */
124        var ddActivitiesPriceRange = new DropDown(jQuery('#' + ContainerID + ' .ddlFilterActivitiesPriceRange'));
125        jQuery('#' + ContainerID + ' .ddlFilterActivitiesPriceRange a').click(function () {
126            var filter = jQuery(this).attr('href');
127            if (filter.length > 0) filter = filter.substring(1);
128            jQuery('#' + ContainerID).data('search_price', filter);
129            searchCards();
130        });
131        /* Activity Categories filter */
132        var ddActivityCategories = new DropDown(jQuery('#' + ContainerID + ' .ddlFitlerActivityCategories'));
133        jQuery('#' + ContainerID + ' .ddlFitlerActivityCategories a').click(function () {
134            var filter = jQuery(this).attr('href');
135            if (filter.length > 0) filter = filter.substring(1);
136            jQuery('#' + ContainerID).data('search_activity_category', filter);
137            searchCards();
138        });
139
140        /* Hotels Price Range filter */
141        var ddHotelsPriceRange = new DropDown(jQuery('#' + ContainerID + ' .ddlFitlerHotelsPriceRange'));
142        jQuery('#' + ContainerID + ' .ddlFitlerHotelsPriceRange a').click(function () {
143            var filter = jQuery(this).attr('href');
144            if (filter.length >
144 0) filter = filter.substring(1);
145            jQuery('#' + ContainerID).data('search_price', filter);
146            searchCards();
147        });
148
149        /* Vacations Duration filter (Num hours, Num days) */
150        var ddVacationsDuration = new DropDown(jQuery('#' + ContainerID + ' .ddlFilterVacationsDuration'));
151        jQuery('#' + ContainerID + ' .ddlFilterVacationsDuration a').click(function () {
152            var filter = jQuery(this).attr('href');
153            if (filter.length > 0) filter = filter.substring(1);
154            jQuery('#' + ContainerID).data('search_duration', filter);
155            searchCards();
156        });
157        /* Vacations Price Range filter */
158        var ddVacationsPriceRange = new DropDown(jQuery('#' + ContainerID + ' .ddlFilterVacationsPriceRange'));
159        jQuery('#' + ContainerID + ' .ddlFilterVacationsPriceRange a').click(function () {
160            var filter = jQuery(this).attr('href');
161            if (filter.length > 0) filter = filter.substring(1);
162            jQuery('#' + ContainerID).data('search_price', filter);
163            searchCards();
164        });
165        /* Vacations Categories filter */
166        var ddVacationCategories = new DropDown(jQuery('#' + ContainerID + ' .ddlFilterVacationCategories'));
167        jQuery('#' + ContainerID + ' .ddlFilterVacationCategories a').click(function () {
168            var filter = jQuery(this).attr('href');
169            if (filter.length > 0) filter = filter.substring(1);
170            jQuery('#' + ContainerID).data('search_category', filter);
171            searchCards();
172        });
173        /* Brewster-Owned filter */
174        jQuery('#' + ContainerID + ' a.brewsterownedfilter').click(function (e) {
175            e.preventDefault();
176
177            var btn = jQuery(this);
178            var isAlreadySelected = btn.hasClass('selected');
179            /* First things first, deselect any currently selected Types. */
180
181            /* If the item is being de-selected... */
182            if (isAlreadySelected) {
183                jQuery('#' + ContainerID).data('filteronlybrewsterowned', '');
184                btn.removeClass('selected');
185            } else { /* Item is newly selected. */
186                jQuery('#' + ContainerID).data('filteronlybrewsterowned', 'true');
187                btn.addClass('selected');
188            }
189            searchCards();
190        });
191
192        /* Sort */
193        var ddSort = new DropDown(jQuery('#' + ContainerID + ' .ddlSort'));
194        jQuery('#' + ContainerID + ' .ddlSort a').click(function () {
195            var filter = jQuery(this).attr('href');
196            if (filter.length > 0) filter = filter.substring(1);
197            jQuery('#' + ContainerID).data('search_searchsort', filter);
198            if (filter == 'random') {
199                var randToken = (Math.random() * 1000000).toString();
200                jQuery('#' + ContainerID).data('search_randomsorttoken', randToken);
201            }
202            searchCards();
203        });
204        /* Show More */
205        jQuery('#' + ContainerID + ' .showMeMore').click(function (e) {
206            e.preventDefault();
207            searchCards(currentPosition, true);
208        });
209
210        /* Starting Location */
211        var ddStartingLocation = new DropDown(jQuery('#' + ContainerID + ' .ddlFilterStartLocation'));
212        jQuery('#' + ContainerID + ' .ddlFilterStartLocation ul').on('click', 'a', function (e) {
213            e.preventDefault();
214            var filter = jQuery(this).attr('href');
215            if (filter.length > 0) filter = filter.substring(1);
216            jQuery('#' + ContainerID).data('search_starting_location', filter);
217            jQuery('#' + ContainerID + ' .ddlFilterStartLocation span.selectedvalue').text(jQuery(this).text());
218            jQuery('#' + ContainerID + ' .ddlFilterEndLocation span.selectedvalue').text('Select');
219            jQuery('#' + ContainerID).data('search_ending_location', ''); /* Clear the Ending Location filter. */
220            loadEndingLocations(filter);
221            searchCards();
222        });
223        if (jQuery('#' + ContainerID + ' .ddlFilterStartLocation').length > 0) {
224            /* Try and load the Starting From cities values. */
225            loadStartingLocations();
226        }
227
228        /* Ending Location */
229        var ddEndingLocation = new DropDown(jQuery('#' + ContainerID + ' .ddlFilterEndLocation'));
230        jQuery('#' + ContainerID + ' .ddlFilterEndLocation ul').on('click', 'a', function (e) {
231            e.preventDefault();
232            var filter = jQuery(this).attr('href');
233            if (filter.length >
233 0) filter = filter.substring(1);
234            jQuery('#' + ContainerID).data('search_ending_location', filter);
235            jQuery('#' + ContainerID + ' .ddlFilterEndLocation span.selectedvalue').text(jQuery(this).text());
236            searchCards();
237        });
238
239        /* By default, do a query. */
240        if (this.ContainerID && jQuery('#' + this.ContainerID).data('search_staticlist') && jQuery('#' + this.ContainerID).data('search_staticlist').length > 0) {
241            loadStaticCards();
242        } else {
243            searchCards();
244        }
245    };
246
247    var hideProductTypeOptions = function () {
248        /* Clear any filters. */
249        // jQuery('#' + ContainerID).data('search_duration', '');
250        // jQuery('#' + ContainerID).data('search_price', '');
251        // jQuery('#' + ContainerID).data('search_rating', '');
252        // jQuery('#' + ContainerID).data('search_category', '');
253        // jQuery('#' + ContainerID).data('search_activity_category', '');
254        // jQuery('#' + ContainerID).data('search_starting_location', '');
255        // jQuery('#' + ContainerID).data('search_ending_location', '');
256        /* Default the selected option to be "Select". */
257        // jQuery('#' + ContainerID + ' .typeoptions .selectedvalue').text('Select');
258        /* Hide the drop downs. */
259        jQuery('#' + ContainerID + ' .filterBoxDestinations').hide();
260        jQuery('#' + ContainerID + ' .typeoptions').hide();
261        jQuery('#' + ContainerID + ' .filterBoxStartLocation .typeoptions').hide();
262        jQuery('#' + ContainerID + ' .filterBoxEndLocation .typeoptions').hide();
263    }
264
265    var setupProductTypeOption = function (type) {
266        
267        switch (type) {
268            case "activities":
269                jQuery('#' + ContainerID + ' .filterBoxDestinations').show();
270                jQuery('#' + ContainerID + ' .filterBoxActivitiesDuration').show();
271                jQuery('#' + ContainerID + ' .filterBoxActivitiesPriceRange').show();
272                jQuery('#' + ContainerID + ' .filterBoxActivityCategories').show();
273                break;
274            case "hotels":
275                jQuery('#' + ContainerID + ' .filterBoxDestinations').show();
276                jQuery('#' + ContainerID + ' .filterBoxRating').show();
277                jQuery('#' + ContainerID + ' .filterBoxHotelsPriceRange').show();
278                break;
279            case "vacations":
280                if (jQuery('#' + ContainerID + ' .filterBoxStartLocation').length > 0) {
281                    jQuery('#' + ContainerID + ' .filterBoxStartLocation').show();
282                    jQuery('#' + ContainerID + ' .filterBoxEndLocation').show();
283                } else {
284                    jQuery('#' + ContainerID + ' .filterBoxDestinations').show();
285                }
286                jQuery('#' + ContainerID + ' .filterBoxVacationsDuration').show();
287                jQuery('#' + ContainerID + ' .filterBoxVacationsPriceRange').show();
288                jQuery('#' + ContainerID + ' .filterBoxVacationCategories').show();
289                break;
290        }
291    };
292
293    var getFilterOptions = function () {
294        var category = jQuery('#' + ContainerID).data('search_category_fixed');
295        if (!category)
296            category = jQuery('#' + ContainerID).data('search_category');
297         
298        var options = {
299            'indexes': jQuery('#' + ContainerID).data('search_indexes'),
300            'resultsperpage': jQuery('#' + ContainerID).data('search_resultsperpage'),
301            'noresultstext': jQuery('#' + ContainerID).data('search_noresultstext'),
302            'searchsort': jQuery('#' + ContainerID).data('search_searchsort'),
303            'filteronlybrewsterowned': jQuery('#' + ContainerID).data('filteronlybrewsterowned'),
304            'filtertype': jQuery('#' + ContainerID).data('search_type'),
305            'filterregion': jQuery('#' + ContainerID).data('search_region'),
306            'filterdestination': jQuery('#' + ContainerID).data('search_destination'),
307            'filterduration': jQuery('#' + ContainerID).data('search_duration'),
308            'filterprice': jQuery('#' + ContainerID).data('search_price'),
309            'filterrating': jQuery('#' + ContainerID).data('search_rating'),
310            'filtercategory': category,
311            'filtervacationcategory': jQuery('#' + ContainerID).data('search-vactioncategory_fixed'),
312            'filteractivitycategory': jQuery('#' + ContainerID).data('search_activity_category'),
313            'filterfeatured': jQuery('#' + ContainerID).data('search_featured'),
314            'filterbrewsterowned': jQuery('#' + ContainerID).data('search_brewsterowned'),
315            'path': jQuery('#' + ContainerID).data('search_path'),
316            'filterstartinglocation': jQuery('#' + ContainerID).data('search_starting_location'),
317            'filterendinglocation': jQuery('#' + ContainerID).data('search_ending_location'),
318            'searchrandtoken': jQuery('#' + ContainerID).data('search_randomsorttoken'),
319            'staticlist': jQuery('#' + ContainerID).data('search_staticlist'),
320            'staticlistpad': jQuery('#' + ContainerID).data('search_staticlistpad'),
321            'staticlistshowfeatured': jQuery('#' + ContainerID).data('search_staticlistshowfeatured'),
322            'uicontainerid': ContainerID
323        }
324
325        // console.log(data.Debug);
326
327        return options;
328    };
329     
330    var loadStartingLocations = function () {
331        jQuery('#' + ContainerID + ' .ddlFilterStartLocation li.city').remove(); /* Empty out the drop down. */
332        var options = getFilterOptions();
333        jQuery.post("/viadapi/cardlisting/get?action=startlocations", options, function (data, textStatus, jqXHR) {
334            if (data.Locations && data.Locations.length > 0) {
335                var cityItem = jQuery('<li>');
336                cityItem.addClass('city');
337                var cityLink = jQuery('<a>');
338                cityItem.append(cityLink);
339                cityLink.attr('href', '#');
340                cityLink.text('Show All');
341                jQuery('#' + ContainerID + ' .ddlFilterStartLocation ul.dropdown').append(cityItem);
342
343                for (var i = 0; i < data.Locations.length; i++) {
344                    var cityItem = jQuery('<li>');
345                    cityItem.addClass('city');
346                    var cityLink = jQuery('<a>');
347                    cityItem.append(cityLink);
348                    cityLink.attr('href', '#' + data.Locations[i].Code);
349                    cityLink.text(data.Locations[i].Name);
350                    jQuery('#' + ContainerID + ' .ddlFilterStartLocation ul.dropdown').append(cityItem);
351                }
352            }
353
354            if (data.Debug) {
355                /* jQuery('#p_lt_ctl13_CardsListingPlaceholder_p_lt_ctl00_CardListing_pnlCardsBox .debug').text(data.Debug); */
356                console.log(data.Debug);
357            }
358        });
359    };
360
361    var loadEndingLocations = function (startlocation) {
362        jQuery('#' + ContainerID + ' .ddlFilterEndLocation li.city').remove(); /* Empty out the drop down. */
363        var options = getFilterOptions();
364        jQuery.post("viadapi/cardlisting/get?action=endlocations&startlocation=" + escape(startlocation), options, function (data, textStatus, jqXHR) {
365            if (data.Locations && data.Locations.length > 0) {
366                for (var i = 0; i < data.Locations.length; i++) {
367                    var cityItem = jQuery('<li>');
368                    cityItem.addClass('city');
369                    var cityLink = jQuery('<a>');
370                    cityItem.append(cityLink);
371                    cityLink.attr('href', '#' + data.Locations[i].Code);
372                    cityLink.text(data.Locations[i].Name);
373                    jQuery('#' + ContainerID + ' .ddlFilterEndLocation ul.dropdown').append(cityItem);
374                }
375            }
376
377            if (data.Debug) {
378                /* jQuery('#' + ContainerID + ' .debug').text(data.Debug); */
379                console.log(data.Debug);
380            }
381        });
382    };
383
384    var loadStaticCards = function () {
385        var options = getFilterOptions();
386
387        /* DEBUG CODE */
388        /* console.log(JSON.stringify(options)); */
389
390        var oldCardResults = jQuery('#' + ContainerID + ' .cards:last');
391        oldCardResults.empty();
392
393        jQuery('#' + ContainerID + ' .loading').show(); /* Show the loading image. */
394        jQuery('#' + ContainerID + ' .showMeMoreRow').hide();
395
396        jQuery.post("/viadapi/cardlisting/get?action=static", options, function (data, textStatus, jqXHR) {
397            jQuery('#' + ContainerID + ' .loading').hide(); /* Hide the loading image. */
398
399            /* DEBUG CODE */
400            /* console.log(JSON.stringify(data)); */
401
402            var cardResults = jQuery('#' + ContainerID + ' .cards:last');
403            var cardsRef = jQuery('#' + ContainerID + '.clearfix:first');
404
405            if (data.Cards && data.Cards.length > 0) {
406                for (var i = 0; i < data.Cards.length; i++) {
407                    var card = createGridCard(data.Cards[i], i, window.prevCard);
408                    window.prevCard = card;
409
410
411                    if (i > 0 && i % 8 === 0 || i % 8 === 5) {
412                        cardResults = jQuery("<div>", {
413                            "class": "row cards"
414                        });
415                        cardResults.insertBefore(cardsRef);
416                    }
417                    cardResults.append(card);
418                }
419
420                if (data.MorePages) {
421                    jQuery('#' + ContainerID + ' .showMeMoreRow').show();
422                }
423            } else {
424                cardResults.append('<span class="nodata">' + data.Status + '</span>');
425            }
426
427            if (data.Debug) {
428                /* jQuery('#' + ContainerID + ' .debug').text(data.Debug); */
429                console.log(data.Debug);
430            }
431        }).fail(function (e) {
432            console.log(e.statusText);
433            jQuery('#' + ContainerID + ' .loading').hide(); /* Hide the loading image. */
434            jQuery('#' + ContainerID + ' .cards:last').append('<span class="error">Sorry. This feature is currently unavailable.</span>');
435        });
436    };
437
438    var searchCards = function (position, leaveCards) {
439        if (!position) {
440            position = 0;
441        }
442        var fixedSearchSort = '';
443        var options = getFilterOptions();
444
445        /* DEBUG CODE */
446        /* console.log(JSON.stringify(options)); */
447
448        /* If we're not to leave existing cards (append cards), then... */
449       
450        if (!leaveCards) {
451            jQuery('#' + ContainerID + ' .cards').remove();
452            var cRef = jQuery('#' + ContainerID).find('.next-cards:first');
453
454            var newCardResults = jQuery("<div>", {
455                "class": "row cards"
456            });
457            newCardResults.insertBefore(cRef);
458            
459           // oldCardResults.empty();
460            currentPosition = 0; /* Reset current position to 0. */
461            cardSlotsFilled = 0; /* All card slots have been emptied. */
462            window.prevCard = undefined;
463        }
464        jQuery('#' + ContainerID + ' .loading').show(); // Show the loading image.
465        jQuery('#' + ContainerID + ' .showMeMoreRow').hide();
466
467        jQuery.post("/viadapi/cardlisting/get?position=" + position, options, function (data, textStatus, jqXHR) {
468            var ContainerID = data.UIContainerID;
469
470            jQuery('#' + ContainerID + ' .loading').hide(); /* Hide the loading image. */
471
472            /* DEBUG CODE */
473            /* console.log(JSON.stringify(data)); */
474
475            var cardResults = jQuery('#' + ContainerID + ' .cards:last');
476            var cardsRef = jQuery('#' + ContainerID).find('.next-cards:first');
477
478            if (data.Cards && data.Cards.length > 0) {
479                var moreCards = false;
480
481             
482                for (var i = 0; i < data.Cards.length; i++) {
483                    
484                    var card = createGridCard(data.Cards[i], currentPosition, window.prevCard);
485                    window.prevCard = card;
486                    if (currentPosition > 0 && currentPosition % 8 === 0 || currentPosition % 8 === 5) {
487                        cardResults = jQuery("<div>", {
488                            "class": "row cards"
489                        });
490                        cardResults.insertBefore(cardsRef);
491                    }
492                    cardResults.append(card);
493                    
494                    /* Add to the current position. */
495                    currentPosition++;
496                    /* Add to the card slots. */
497                    cardSlotsFilled++;
498                    //if (data.Cards[i].IsFeatured)
499                    //    cardSlotsFilled++;
500
501                 
502
503                    /* Break if we're up to the limit for cards per page. */
504                    if (cardSlotsFilled % jQuery('#' + ContainerID).data('search_resultsperpage') == 0) {
505                        moreCards = true;                        
506                        break;
507                    }
508                }
509                if (data.MorePages){// || moreCards) {
510                    jQuery('#' + ContainerID + ' .showMeMoreRow').show();
511                }
512            } else {
513                cardResults.append('<div class="nocards"><span class="nomessage">' + data.Status + '</span></div>');
514            }
515
516            if (data.Debug) {
517                console.log(data.Debug);
518            }
519        }).fail(function (e) {
520            console.log(e.statusText);
521            jQuery('#' + ContainerID + ' .loading').hide(); /* Hide the loading image. */
522            jQuery('#' + ContainerID + ' .cards:last').append('<span class="error">Sorry. This feature is currently unavailable.</span>');
523        });
524    };
525
526    /* Determine what to do based on options passed in. */
527    return this.each(function () {
528        /* Method calling logic */
529        if (methods[options]) {
530            /* If the first param is a method name, fire that method. */
531            return methods[options].apply(this, Array.prototype.slice.call(arguments, 1));
532        } else if (!options) {
533            setup();
534        } else {
535            /* Unrecognized method. */
536            console.log('Method ' + options + ' does not exist on jQuery.CardListing');
537        }
538    });
539};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.