* © 2008 Benoît Pin – Centre de recherche en informatique – École des mines de Paris
* http://plinn.org
* Licence Creative Commons http://creativecommons.org/licenses/by-nc/2.0/
-* $Id: photo_film_viewer.js 1303 2009-08-21 22:19:05Z pin $
-* $URL: http://svn.luxia.fr/svn/labo/projects/zope/Portfolio/trunk/skins/photo_film_viewer.js $
+*
+*
*/
var FilmSlider;
var filmWidth = this.slideSize * this.filmLength;
var sliderRatio = this.sliderRatio = filmBarWidth / filmWidth;
var sliderWidth = filmBarWidth * sliderRatio;
+ this.rail.style.width = filmBarWidth + 'px';
+ this.rail.style.display = 'block';
+ this.rail.style.visibility = 'visible';
if (sliderRatio < 1) {
- this.rail.style.width = filmBarWidth + 'px';
this.slider.style.width = Math.round(sliderWidth) + 'px';
- this.rail.style.display = 'block';
- this.rail.style.visibility = 'visible';
+ this.slider.style.visibility = 'visible';
}
else {
- this.rail.style.display = 'none';
- this.rail.style.visibility = 'hidden';
+ this.slider.style.visibility = 'hidden';
}
this.winSize = {'width' : getWindowWidth(),
FilmSlider.prototype._fitToScreen = function(evt) {
var wh = getWindowHeight();
- var ch = document.body.clientHeight;
+ var rb = getObjectTop(this.rail) + getObjectHeight(this.rail); // rail bottom
+ var delta = wh - rb
var sh = getObjectHeight(this.stretchable);
- var newSize = sh + wh - ch;
+ var newSize = sh + delta;
this.stretchable.style.height = newSize + 'px';
var ratio = this.image.height / this.image.width;
};
FilmSlider.prototype.startSlideShow = function() {
- this.slideShowSlide = this.selectedSlide;
- this.nextSlideShowSlide = this.selectedSlide;
+ this.slideShowSlide = this.pendingSlideShowSlide = this.selectedSlide;
return this.slideShowSlide.href;
};
FilmSlider.prototype.slideShowNext = function() {
- this.slideShowSlide = this.nextSlideShowSlide;
var nextSlide = this.slideShowSlide.parentNode.nextSibling;
if (nextSlide && nextSlide.nodeType==3)
nextSlide = nextSlide.nextSibling;
if (nextSlide) {
nextSlide = nextSlide.getElementsByTagName('a')[0];
- this.nextSlideShowSlide = nextSlide;
- return nextSlide.href;
+ this.pendingSlideShowSlide = nextSlide;
+ return this.pendingSlideShowSlide.href;
}
else {
var row = this.slideShowSlide.parentNode.parentNode;
var first = row.firstChild;
if (first.nodeType==3)
first = first.nextSibling;
- this.nextSlideShowSlide = first.getElementsByTagName('a')[0];
- return this.nextSlideShowSlide.href;
+ this.pendingSlideShowSlide = first.getElementsByTagName('a')[0];
+ return this.pendingSlideShowSlide.href;
}
};
+FilmSlider.prototype.slideShowPrevious = function() {
+ var previousSlide = this.slideShowSlide.parentNode.previousSibling;
+ if (previousSlide && previousSlide.nodeType==3)
+ previousSlide = previousSlide.previousSibling;
+
+ if (previousSlide) {
+ previousSlide = previousSlide.getElementsByTagName('a')[0];
+ this.pendingSlideShowSlide = previousSlide;
+ return this.pendingSlideShowSlide.href;
+ }
+ else {
+ var row = this.slideShowSlide.parentNode.parentNode;
+ var last = row.lastChild;
+ if (last.nodeType==3)
+ last = last.previousSibling;
+ this.pendingSlideShowSlide = last.getElementsByTagName('a')[0];
+ return this.pendingSlideShowSlide.href;
+ }
+};
+
+FilmSlider.prototype.slideShowImageLoaded = function() {
+ this.slideShowSlide = this.pendingSlideShowSlide;
+};
+
FilmSlider.prototype.stopSlideShow = function() {
raiseMouseEvent(this.slideShowSlide, 'click');
var index = parseInt(this.selectedSlide.getAttribute('portfolio:position'));