Calcul de la retaille prenant en compte l'absence de barre de scroll horizontal
[Portfolio.git] / skins / photo_film_viewer.js
index 5ba1b5b..ff8d61e 100644 (file)
@@ -73,11 +73,16 @@ FilmSlider = function(filmBar, slider, ctxInfos, image, toolbar, breadcrumbs) {
                                           'out' :      function(evt){thisSlider.mouseOutHandler(evt);}
                                          };
 
-       this.resizeSlider();
+       if (browser.isMobile) {
+               this.rail.className = 'hidden';
+       }
+       else { 
+               this.resizeSlider();
+       }
        this.addEventListeners();
 };
 
-
+if (!browser.isMobile) {
 FilmSlider.prototype.resizeSlider = function(evt) {
        var filmBarWidth = this.filmBarWidth;
        if (!filmBarWidth) { return; }
@@ -105,6 +110,12 @@ FilmSlider.prototype.resizeSlider = function(evt) {
                this.initialized = true;
        }
 };
+}
+
+else {
+       // pas de barre de scroll horizontal pour les tablettes
+       FilmSlider.prototype.resizeSlider = function(evt) {};
+}
 
 FilmSlider.prototype._checkSizeAfterLoad = function(evt) {
        this._barSizes = [];
@@ -136,7 +147,8 @@ FilmSlider.prototype._checkSizeStability = function(evt) {
                }
        }
        clearInterval(this._checkSizeIntervalId);
-       delete this._barSizes, this._checkSizeIntervalId;
+       delete this._barSizes;
+       delete this._checkSizeIntervalId;
 };
 
 FilmSlider.prototype.fitToScreen = function(evt) {
@@ -147,7 +159,12 @@ FilmSlider.prototype.fitToScreen = function(evt) {
 
 FilmSlider.prototype._fitToScreen = function(evt) {
        var wh = getWindowHeight();
+       if (!browser.isMobile) {
        var rb = getObjectTop(this.rail) + getObjectHeight(this.rail); // rail bottom
+       }
+       else {
+               var rb = getObjectTop(this.filmBar) + getObjectHeight(this.filmBar); // film bottom
+       }
        var delta = wh - rb;
        var sh = getObjectHeight(this.stretchable);
        var newSize = sh + delta;
@@ -260,6 +277,11 @@ FilmSlider.prototype.addEventListeners = function() {
        else if (browser.isIE6up) {
                addListener(this.filmBar, 'mousewheel', function(evt){thisSlider.mouseWheelHandler(evt);});
        }
+       if (browser.isMobile) {
+               this.filmBar.addEventListener('touchstart', function(evt){thisSlider.touchStartHandler(evt);}, false);
+               this.filmBar.addEventListener('touchmove', function(evt){thisSlider.touchMoveHandler(evt);}, false);
+               this.filmBar.addEventListener('touchend', function(evt){thisSlider.touchEndHandler(evt);}, false);
+       }
        
        addListener(document, 'keydown', function(evt){thisSlider.keyDownHandler(evt);});
        addListener(document, 'keypress', function(evt){thisSlider.keyPressHandler(evt);});
@@ -563,6 +585,21 @@ else if (browser.isIE6up) {
        };
 }
 
+FilmSlider.prototype.touchStartHandler = function(evt) {
+       this.filmStartX = parseInt(this.film.style.left, 10);
+       this.touchStartX = evt.pageX;
+};
+
+FilmSlider.prototype.touchMoveHandler = function(evt) {
+       var delta = this.touchStartX - evt.pageX;
+       this.film.style.left = String(this.filmStartX - delta) + 'px';
+};
+
+FilmSlider.prototype.touchEndHandler = function(evt) {
+       this.touchStartX = undefined;
+};
+
+
 FilmSlider.prototype.keyDownHandler = function(evt) {
        evt = getEventObject(evt);
        switch (evt.keyCode) {
@@ -603,13 +640,13 @@ FilmSlider.prototype.populateViewer = function(req) {
                                break;
                        case 'imageattributes' :
                                var link = this.buttons.back_to_portfolio.parentNode;
-                               link.href = element.getAttribute('backToContextUrl');
+                               link.href = element.getAttribute('back_to_context_url');
                                link = this.buttons.show_buyable.parentNode;
                                var buyable = element.getAttribute('buyable');
                                if(buyable === 'True') { link.className = null; }
                                else if(buyable === 'False') { link.className = 'hidden'; }
                                this.image.alt = element.getAttribute('alt');
-                               this.updateBreadcrumbs(element.getAttribute('lastBcUrl'),
+                               this.updateBreadcrumbs(element.getAttribute('last_bc_url'),
                                                                           element.getAttribute('img_id'));
                                break;
                }