* © 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(),
+ this.winSize = {'width' : getWindowWidth(),
'height' : getWindowHeight()};
this.maxRightPosition = filmBarWidth - sliderWidth
this.sliderSpeedRatio = - (filmBarWidth - sliderWidth) / (filmWidth - filmBarWidth);
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;
disableDefault(evt);
disablePropagation(evt);
target.blur();
+ history.pushState(target.href, '', target.href);
var imgBaseUrl = target.href;
var canonicalImgUrl;
if (this.ctxUrlTranslation[0])
canonicalImgUrl = imgBaseUrl.replace(this.ctxUrlTranslation[0],
- this.ctxUrlTranslation[1]);
+ this.ctxUrlTranslation[1]);
else
canonicalImgUrl = imgBaseUrl;
var target = getTargetedObject(evt);
if (target.tagName == 'INPUT' || target.tagName== 'TEXTAREA')
return;
- var evt = evt = getEventObject(evt);
- evt = getEventObject(evt);
+ var evt = getEventObject(evt);
var charPress = String.fromCharCode((evt.keyCode) ? evt.keyCode : evt.which);
switch(charPress) {
case 'f':
};
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() {