PageSourceSearch

https://history.house.gov/_js/OHH.smallviewer.js?nc=100120260020

js house.gov collected 2026-10-01 07:02:11 UTC 8,492 bytes, 289 lines download raw bytes

1(function() {
2    //They will probably only be one player on a page, but we want to support multiples, so we can't store a list
3    //of elems we work with, we must always work relative to our parent .advm class
4
5    var 
6
7    init = function() {
8
9        //setup initial layout for each viewer
10        $(this).find('.small-viewer').each(function() {
11            setupViewer($(this));
12        });
13
14        //setup thumb click handler
15        setupThumbnail();
16
17        //setup the next/prev buttons
18        setupNextPrev();
19    },
20
21    //
22    // setup each basic viewer
23    //
24    setupViewer = function($viewer) {
25        //get the count, add rows to viewer
26        var cnt = $viewer.find('.large-image').length;
27        $viewer.attr('data-rows', Math.ceil(cnt/3));
28        $viewer.attr('data-current-row', 0);
29
30        //hide large images except first
31        $viewer.find('.large-image:not(:first)').addClass('visuallyhidden');
32
33        //hide the thumbnails, add index to each
34        if (cnt == 1) {
35            $viewer.find('.small-image-hole').addClass('visuallyhidden');
36        } else {
37            $viewer.find('.small-image-hole').each(function(index) {
38                //add the index
39                $(this).attr('data-index', index);
40
41                //add the row
42                $(this).attr('data-row', Math.floor(index/3));
43            
44            
45                //hide those not on first row
46                if (index > 2) {
47                    $(this).addClass('visuallyhidden');
48                }
49
50                //set selected
51                if (index == 0) {
52                    $(this).addClass('selected');
53                }
54
55                //add first/middle/last class so css is correct.
56                switch(index % 3) {
57                    case 0:
58                        $(this).addClass('first');
59                        break;
60                    case 1:
61                        $(this).addClass('middle');
62                        break;
63                    case 2:
64                        $(this).addClass('last');
65                        break;
66                }
67            });
68        }
69
70        //setup buttons
71        if (cnt <= 3) {
72            //hide buttons
73            $viewer.find('a.replace.button').css('display', 'none');
74        } else {
75            //set prev to diabled
76            $viewer.find('.btn_previous').addClass('disabled');
77        }
78
79    },
80
81    //
82    // setup the thumbnail click hanlder
83    //
84    setupThumbnail = function() {
85        $('.small-viewer').on('click', '.small-image-hole', function() {
86            thumbnailClick($(this));
87        });
88    },
89
90    //
91    // setup the next prev buttons
92    //
93    setupNextPrev = function() {
94        //$('.small-viewer').on('click', 'a.replace.button', function() {
95        $('.small-viewer').on('click', 'a.btn_previous, a.btn_next', function() {
96            nextPrevClick($(this));
97            return false;
98        });
99
100    },
101
102
103    //
104    // handle thumbnail click
105    //
106    thumbnailClick = function($img) {
107        //get the viewer
108        var $viewer = $img.closest('.small-viewer');
109
110        //get the thumb index
111        var index = $img.attr('data-index');
112
113        //hide/show the main image
114        $viewer.find('.large-image').addClass('visuallyhidden');
115        $viewer.find('.large-image').eq(index).removeClass('visuallyhidden');
116
117        //set selected thumb
118        $viewer.find('.small-image-hole').removeClass('selected');
119        $img.addClass('selected');
120    },
121
122    //
123    // next/prev button click
124    //
125    nextPrevClick = function($btn) {
126        //only if not disabled
127        if (!$btn.hasClass('disabled')) {
128            //find the viewer
129            $viewer = $btn.closest('.small-viewer');
130
131            //get the current row & row count
132            var row = parseInt($viewer.attr('data-current-row'));
133            var row_count = parseInt($viewer.attr('data-rows'));
134
135            //update the current row
136            if ($btn.hasClass('btn_next')) {
137                row++;
138            } else if ($btn.hasClass('btn_previous')) {
139                row--;
140            }
141            $viewer.attr('data-current-row', row);
142
143            //hide show the thumbs
144            $thumbs = $viewer.find('.small-image-hole');
145            $thumbs.removeClass('visuallyhidden');
146            $thumbs.siblings('.small-image-hole[data-row!="' + row + '"]').addClass('visuallyhidden');
147
148            //enable/disable the buttons
149            if (row > 0) {
150                $viewer.find('.btn_previous').removeClass('disabled');
151            } else {
152                $viewer.find('.btn_previous').addClass('disabled');
153            }
154
155            if (row < row_count -1) {
156                $viewer.find('.btn_next').removeClass('disabled');
157            } else {
158                $viewer.find('.btn_next').addClass('disabled');
159            }
160        }
161    },
162    
163    dummy = function() {};
164
165    $(document).ready(init);
166
167
168})();
169
170
171/*
172
173// http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth
174// http://peter.michaux.ca/articles/wrapping-functions-in-javascript
175
176;var OHH = (function(parent, $, UTIL, undefined) {
177	var me = parent.smallviewer = parent.smallviewer || {};
178	
179	me.name = parent.name + ".smallviewer";
180	
181	var nimages = 0;
182	var npages = 0;
183	var perpage = 3;
184	var page = 0;
185	
186	function setPage (i) {
187		$(".small-viewer .nav .small-image-hole").addClass("visuallyhidden").removeClass("middle").removeClass("first").removeClass("last");
188		
189		for (var j = 0; j < perpage; j++) {
190			if (j == 0) {
191				$(".small-viewer .nav .small-image-hole:eq(" + (i * perpage + j) + ")").removeClass("visuallyhidden").addClass("first");
192			} else if (j == perpage - 1) {
193				$(".small-viewer .nav .small-image-hole:eq(" + (i * perpage + j) + ")").removeClass("visuallyhidden").addClass("last");
194			} else {
195				$(".small-viewer .nav .small-image-hole:eq(" + (i * perpage + j) + ")").removeClass("visuallyhidden").addClass("middle");
196			}
197		}
198		
199		page = i;
200		
201		if (i == 0) $(".small-viewer .nav .btn_previous").addClass("disabled");
202		else $(".small-viewer .nav .btn_previous").removeClass("disabled");
203		
204		if (i == npages - 1) $(".small-viewer .nav .btn_next").addClass("disabled");
205		else $(".small-viewer .nav .btn_next").removeClass("disabled");
206		
207		//console.log(me.name + ".setPage()", i, npages);
208	}
209	
210	function setActive (i) {
211		$(".small-viewer .large-image").addClass("visuallyhidden");
212		$(".small-viewer .large-image:eq(" + i + ")").removeClass("visuallyhidden");
213		
214		$(".small-viewer .nav .small-image-hole").removeClass("selected");
215		$(".small-viewer .nav .small-image-hole:eq(" + i + ")").addClass("selected");
216
217		var h1 = $(".small-viewer").data("h");
218		if (! h1) h1 = $(".small-viewer .large-image:eq(" + i + ")").height();
219		
220		var h2 = $(".small-viewer .large-image:eq(" + i + ")").height();
221		
222		var h = Math.max(h1, h2);
223		
224		$(".small-viewer .large-images").height(h);
225		$(".small-viewer").data("h", h);
226		
227		//console.log(me.name + ".setActive()", i, nimages, h);
228	}
229
230	function setupViewer () {
231		nimages = $(".small-viewer .large-image").length;
232		npages = Math.ceil(nimages / perpage);
233
234		if (nimages == 1) {
235			$(".small-viewer .nav").remove();
236			return;
237		} else if (nimages <= perpage) {
238			$(".small-viewer .nav .btn_previous, .small-viewer .nav .btn_next").remove();
239		}
240		
241		$(".small-viewer .large-image").each(function (i) {
242			var $this = $(this);
243			
244			$this.data("pos", i);
245		});
246		
247		$(".small-viewer .nav .small-image-hole").each(function (i) {
248			var $this = $(this);
249			
250			$this.data("pos", i);
251		}).on("click", function () {
252			var $this = $(this);
253			
254			var i = $(this).data("pos");
255			
256			setActive(i);
257		});
258		
259		$(".small-viewer .nav .btn_previous").on("click", function () {
260			if (page > 0) {
261				setPage(page - 1);
262			}
263			
264			return false;
265		});
266		
267		$(".small-viewer .nav .btn_next").on("click", function () {
268			if (page < npages - 1) {
269				setPage(page + 1);
270			}
271			
272			return false;
273		});
274
275		setPage(0);
276		setActive(0);
277		
278		//console.log(me.name + ".setupViewer()", nimages, npages);
279	}
280
281	function init () {
282		//setupViewer();
283	};
284	
285	$(document).ready(init);
286	
287	return parent;
288}(OHH || {}, jQuery, UTIL));
289*/

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.