FilmSlider = function(filmBar, slider, ctxInfos, image, toolbar, breadcrumbs) {
var thisSlider = this;
this.filmBar = filmBar;
+ this.filmBarWidth = getObjectWidth(this.filmBar);
var film = filmBar.firstChild;
if (film.nodeType === 3) { film = film.nextSibling; }
this.film = film;
'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 = getObjectWidth(this.filmBar);
- if (!filmBarWidth) {
- var thisSlider = this;
- addListener(window, 'load', function(evt){thisSlider.resizeSlider(evt);});
- return;
- }
-
+ var filmBarWidth = this.filmBarWidth;
+ if (!filmBarWidth) { return; }
var filmWidth = this.slideSize * this.filmLength;
var sliderRatio = this.sliderRatio = filmBarWidth / filmWidth;
var sliderWidth = filmBarWidth * sliderRatio;
this.initialized = true;
}
};
+}
+
+else {
+ FilmSlider.prototype.resizeSlider = function(evt) {};
+}
+
+FilmSlider.prototype._checkSizeAfterLoad = function(evt) {
+ this._barSizes = [];
+ this.filmBarWidth = this._barSizes[this._barSizes.length] = getObjectWidth(this.filmBar);
+ this.resizeSlider();
+ var self = this;
+ this._checkSizeIntervalId = setInterval(function(evt){self._checkSize(evt);}, 25);
+ setTimeout(function(evt){self._checkSizeStability();}, 250);
+};
+
+FilmSlider.prototype._checkSize = function(evt) {
+ this._barSizes[this._barSizes.length] = getObjectWidth(this.filmBar);
+ if (this._barSizes.length >= 2 &&
+ this._barSizes[this._barSizes.length-2] !== this._barSizes[this._barSizes.length-1]) {
+ this.filmBarWidth = this._barSizes[this._barSizes.length-1];
+ this.initialized = false;
+ this.resizeSlider();
+ }
+};
+
+FilmSlider.prototype._checkSizeStability = function(evt) {
+ var self = this;
+ var i;
+ for (i=0 ; i<this._barSizes.length - 1 ; i++) {
+ if (this._barSizes[i] !== this._barSizes[i+1]) {
+ this._barSizes = [];
+ setTimeout(function(evt){self._checkSizeStability();}, 250);
+ return;
+ }
+ }
+ clearInterval(this._checkSizeIntervalId);
+ delete this._barSizes;
+ delete this._checkSizeIntervalId;
+};
FilmSlider.prototype.fitToScreen = function(evt) {
this._fitToScreen();
addListener(this.filmBar, 'click', function(evt){thisSlider.thumbnailClickHandler(evt);});
addListener(this.toolbar, 'click', function(evt){thisSlider.toolbarClickHandler(evt);});
addListener(window, 'load', function(evt){thisSlider.fitToScreen(evt);});
+ addListener(window, 'load', function(evt){thisSlider._checkSizeAfterLoad(evt);});
// dd listeners
addListener(this.slider, 'mousedown', this.ddHandlers.down);
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);});
};
}
+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) {
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;
}