PageSourceSearch

https://www.vieuxportdemontreal.com/themes/vpm_d8/js/flickr.js?v=10.6.14

js vieuxportdemontreal.com collected 2026-10-02 05:26:30 UTC 7,758 bytes, 196 lines download raw bytes

1(function ($) {
2    var tags = [];
3    var deletedImages = [];
4    var api = null;
5    var resizeInterval;
6
7    $(document).ready(function () {
8            $('body').onPageLoadFlickr();
9    });
10    $.fn.onPageLoadFlickr = function(){
11
12        if(window.isMobile == null){
13        getFlickrData();
14        }else{
15            $('.movie-shoots-btn').removeClass('hidden');
16            $('#flickr-btn-activate').click(function(){
17                $(this).addClass('hidden');
18                $('#flickr-waiting-text').removeClass('hidden');
19                getFlickrData();
20            });
21        }
22
23        $(window).on('flickr-gallery-ready', function(){
24            setTimeout(function(){
25                var $filter = $('.vpm-filter-delete'),
26                    $first = $filter.find('>ul>li').first();
27                $first.addClass('current');
28                $filter.vpmBeginFilter({delete: true});
29                $filter.find(".current-item").text($first.text());
30            },100);
31        });
32    };
33    /**
34     * Get Flickr preprocessed data from Flickr custom module
35     */
36    function getFlickrData(param) {
37        if (typeof param === 'undefined') {
38            param = {};
39        }
40        $.ajax({
41            type: "GET",
42            url: "/ajax/flickr/get-images",
43            success: function (data) {
44                $('#flickr-waiting-text').addClass('hidden');
45                if (data.hasOwnProperty('photos')) {
46                    var images = [];
47                    for (var i = 0; i < data.photos.length; i++) {
48                        images.push(buildFlickrImage(data.photos[i]));
49                    }
50                    images = images.join('');
51                    var $flickr = $('#flickr-images-wrapper');
52                    if ($flickr.length == 1) {
53                        $flickr.html(images);
54                        api = $flickr.unitegallery({
55                            gallery_theme: 'tiles',
56                            tiles_type: 'nested',
57                            tiles_nested_optimal_tile_width: 500
58                        });
59                        $flickr.find('.ug-thumb-wrapper').each(function () {
60                            $(this)[0].setAttribute('data-vpm-tag', $(this).find('img').attr('alt'));
61                            $(this)[0].setAttribute('data-vpm-no-split', 'true');
62                        });
63                        $('#flickr-bar-filter').removeClass('hidden');
64                        var $filter = $('.bar-filter ul');
65                        tags.sort(function (a, b) {
66                            return flickrTranslate(tagSorting(a)).localeCompare(flickrTranslate(tagSorting(b)));
67                        });
68                        function tagSorting(visibleTag){
69                            if (visibleTag.indexOf('/') != -1) {
70                                switch ($('html').attr('lang')) {
71                                    case 'fr':
72                                        visibleTag = visibleTag.substr(0, visibleTag.indexOf('/') - 1);
73                                        break;
74                                    case 'en':
75                                        visibleTag = visibleTag.substr(visibleTag.indexOf('/') + 1);
76                                        break;
77                                }
78                            }
79                            return visibleTag;
80                        }
81                        for (var j = 0; j < tags.length; j++) {
82                            var visibleTag = tags[j];
83                            if (visibleTag.indexOf('/') != -1) {
84                                switch ($('html').attr('lang')) {
85                                    case 'fr':
86                                        visibleTag = visibleTag.substr(0, visibleTag.indexOf('/') - 1);
87                                        break;
88                                    case 'en':
89                                        visibleTag = visibleTag.substr(visibleTag.indexOf('/') + 1);
90                                        break;
91                                }
92                            }
93                            var tag = tags[j].replace(/'/g, ' ');
94                            $filter.append('<li data-vpm-tag="' + tag + '">' + flickrTranslate(visibleTag) + '</li>');
95                        }
96                        $filter.find('li').initDropdownElementClick();
97                        $('.vpm-filter-delete').on('dropdown-completed', function () {
98                            var $wrapper = $flickr.find('.ug-tiles-wrapper');
99                            for (var i = 0; i < deletedImages.length; i++) {
100                                $wrapper.append($(deletedImages[i][0].outerHTML).vpmHide());
101                            }
102                            deletedImages = [];
103                            $(this).vpmBeginFilter({delete: true});
104                            $wrapper.children().vpmShow();
105                        });
106                        $(document).on('vpmFilterEnd', function (e, deleted) {
107                            deletedImages = deleted.slice(0);
108                            setTimeout(function(){
109                                replaceFlickr();
110                            },100);
111                        });
112                    }
113                }
114            }
115        });
116    }
117
118    /**
119     * Resize the Flickr gallery
120     */
121    function replaceFlickr() {
122        if (api != null) {
123            var $flickr = $('#flickr-images-wrapper');
124            api.resize($flickr.innerWidth() - 1);
125            api.resize($flickr.innerWidth());
126        }
127    }
128
129    /**
130     * Build HTML image from Flickr preprocessed data
131     *
132     * @param data
133     * @returns {string}
134     */
135    function buildFlickrImage(data) {
136        // Data parsing
137        var attr = {
138            'src': data.small,
139            'data-src': data.large,
140            'data-src-small': data.large,
141            'data-image': data.original,
142            'data-description': data.title,
143            'alt': data.album.replace(/'/g, ' ')
144        };
145        // Image construction
146        var img = '<img ';
147        for (var k in attr) {
148            img += k + '="' + attr[k] + '" ';
149        }
150        img += ' />';
151
152        if (tags.indexOf(data.album) == -1) {
153            tags.push(data.album);
154        }
155        return img;
156    }
157
158    /**
159     *
160     * @param str
161     * @returns {string}
162     */
163    function flickrTranslate(str) {
164        var translations = {
165            "AIRPORT SCENES": "SCÈNES D'AÉROPORT",
166            "CLOCK TOWER": "TOUR DE L'HORLOGE",
167            "OUTSIDE AND INSIDE LOCATIONS": "SITES EXTÉRIEURS ET INTÉRIEURS",
168            "WINTER SCENES AT THE OLD PORT": "SCÈNES D'HIVER AU VIEUX-PORT",
169            "AUTUMN SCENES AT THE OLD PORT": "SCÈNES D'AUTOMNE AU VIEUX PORT",
170            "CONVEYOR QUAY": "QUAI DES CONVOYEURS",
171            "MONTREAL SCIENCE CENTRE": "CENTRE DES SCIENCES DE MONTRÉAL",
172            "CLOCK TOWER BEACH": "PLAGE DE L'HORLOGE",
173            "PORT OF CALL & YACHT CLUB - OLD PORT OF MONTREAL": "PORT D'ESCALE & YACHT CLUB - VIEUX-PORT DE MONTRÉAL"
174        };
175        while (str.charAt(0) == ' ') {
176            str = str.substr(1);
177        }
178        while (str.charAt(str.length - 1) == ' ') {
179            str = str.substr(0, str.length - 2);
180        }
181        var lang = $('html').attr('lang');
182        if (lang == 'fr') {
183            if (translations.hasOwnProperty(str)) {
184                return translations[str];
185            }
186        }
187        if (lang == 'en') {
188            for (var i in translations) {
189                if (translations[i] == str) {
190                    return i;
191                }
192            }
193        }
194        return str;
195    }
196})(jQuery);

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.