2 This is a part of mkgallery.pl suite
3 http://www.average.org/mkgallery/
5 Uses mootools (1.2) http://www.mootools.net/
6 Uses slideshow http://www.phatfusion.net/slideshow/
13 var showWindow = new Class({
15 getOptions: function(){
19 container: document.body,
24 initialize: function(name,options){
25 this.setOptions(this.getOptions(), options)
27 this.options.container = $(this.options.container)
29 this.container = new Element('div').addClass(name).setStyles({
34 zIndex: this.options.zIndex,
37 }).addEvent('click', function(){
38 this.options.onClick()
39 }.bind(this)).injectInside(this.options.container);
41 this.options.embed.each(function(el){
42 var sub = new Element('div')
43 sub.addClass(el).setProperties({
46 }).injectInside(this.container)
51 window.addEvent('resize', this.position.bind(this))
52 window.addEvent('scroll', this.position.bind(this))
56 if(this.options.container == document.body){
57 var h = window.getHeight()+'px'
58 var s = window.getScrollTop()+'px'
59 this.container.setStyles({top: s, height: h})
61 var myCoords = this.options.container.getCoordinates()
62 this.container.setStyles({
63 top: myCoords.top+'px',
64 height: myCoords.height+'px',
65 left: myCoords.left+'px',
66 width: myCoords.width+'px'
72 this.container.setStyle('display', 'block')
76 this.container.setStyle('display', 'none')
79 showWindow.implement(new Options)
81 var showControls = new Class({
83 getOptions: function(){
93 initialize: function(name,options){
94 this.setOptions(this.getOptions(), options)
96 this.container = $(name)
98 var buttons = ['prev','stop','play','next','exit','comm']
99 buttons.each(function(el){
100 var sub = new Element('div')
103 sub.set('text', 'this is a comment field')
109 if (this.options[el]) {
110 sub.addEvent('click', function() {
114 sub.addClass('controlButton').setProperties({
117 }).injectInside(this.container)
121 settext: function(text) {
125 showControls.implement(new Options)
127 /* Make overlay window and start slideshow */
128 function showImage(id,doplay) {
130 /* alert('show id='+id+' index='+i+' doplay='+doplay) */
139 /* Stop slideshow and return to index page */
140 function showStop() {
144 var img = show.newImage.getElement('img');
146 alert('remove element: '+img.get('tag')+'.'+img.get('class')+
147 '#'+img.get('id')+' src='+img.get('src'))
151 img = show.oldImage.getElement('img');
153 alert('remove element: '+img.get('tag')+'.'+img.get('class')+
154 '#'+img.get('id')+' src='+img.get('src'))
158 show.imagesHolder.getElements('img').each(function(el){
159 alert('remove element: '+el.get('tag')+'.'+el.get('class')+'#'+el.get('id')+
160 ' src='+el.get('src'))
167 /* List of lists of img variations. Each image variation is a three-element */
168 /* array: [width, height, url]. Index of the outer array is the global ID. */
173 * [width, height, url]
179 /* resolve string ID to index */
182 /* Initialize everything, to be called on domready */
183 function init_gallery() {
184 $$('.conceal').each(function(el){
185 el.setStyle('display', 'none')
187 $$('a.infoBox').each(function(el){
188 var url=el.get('href')
189 el.set('href',url+'?conceal')
191 $$('a.showStart').each(function(el){
192 el.addEvent('click', showImage.bind(el,[el.get('id'),1]))
194 $$('a.showImage').each(function(el){
195 el.addEvent('click', showImage.bind(el,[el.get('id'),0]))
197 $$('div.varimages').each(function(el,i){
198 rimgs[el.id] = [i, el.title]
200 el.getElements('a').each(function(ael,j){
201 dim = /(\d+)[^\d](\d+)/.exec(ael.text)
204 vimgs[i][j]=[w,h,ael.href]
208 var msg='loaded '+vimgs.length+' image descriptions:'
209 vimgs.each(function(vimg,i){
211 vimg.each(function(vimg,i){
212 msg+='\n w='+vimg[0]+' h='+vimg[1]+' url='+vimg[2]
216 /* end debugging output */
219 ovl = new overlay(ovlparams)
228 descClassName: 'infoBoxDesc',
230 ibox = new multiBox('infoBox', iboxparams)
233 /* onClick: showStop, /* temporarily */
234 embed: ['slideshowContainer', 'slideshowControls'],
236 showwin = new showWindow('slideshowWindow',winparms)
244 onClick: function(i){alert(i)}
246 show = new slideShow('slideshowContainer',vimgs,showparms)
249 next: function(){show.next()},
250 prev: function(){show.previous()},
251 stop: function(){show.stop()},
252 play: function(){show.play()},
253 exit: function(){showStop()},
255 ctl = new showControls('slideshowControls',ctlparams)
257 parsedurl = parseUrl(document.URL)
258 /* alert('Anchor: '+parsedurl['anchor']+'\nURL: '+document.URL) */
259 if ($chk(parsedurl['anchor'])){
260 showImage(parsedurl['anchor'],0)
265 window.addEvent('domready',init_gallery)