Roo.apply(Roo.ux.Lightbox.prototype,
{
// optiosn..
- /**
- * @cfg fileLoadingImage {string} loading image
- */
- fileLoadingImage: '/lightbox/images/loading.gif',
- /**
- * @cfg fileBottomNavCloseImage {string} close image
- */
- fileBottomNavCloseImage: '/lightbox/images/closelabel.gif',
+
/**
* @cfg overlayOpacity {number} controls transparency of shadow overlay
*/
overlayOpacity: 0.8,
/**
- * @cfg fileLoadingImage {boolean} toggles resizing animations
+ * @cfg animate {boolean} toggles resizing animations
*/
animate: true,
/**
/**
- * List of images
+ * Array of images Roo.Elements (which should be images)
+ * properties can be
*/
imageArray: false,
this.resizeSpeed = Math.min(this.resizeSpeed, 10);
this.resizeSpeed = Math.max(this.resizeSpeed, 1);
- this.resizeDuration = this.animate ? ((11 - this.resizeSpeed) * 0.15) : 0;
- this.overlayDuration = this.animate ? 0.2 : 0; // shadow fade in/out duration
+ this.resizeDuration = this.animate ? ((11 - this.resizeSpeed) * 0.15) : 0;
+ this.overlayDuration = this.animate ? 0.2 : 0; // shadow fade in/out duration
// When Lightbox starts it will resize itself from 250 by 250 to the current image dimension.
// If animations are turned off, it will be hidden as to prevent a flicker of a
// white 250 by 250 box.
var size = (this.animate ? 250 : 1) + 'px';
var dh = Roo.DomHelper;
- this.el = dh.append(document.body, {
+ this.el = Roo.DomHelper.append(document.body, {
html:
- // '<div id="overlay"></div>' +
- '<div class="lightbox">' +
+ '<div class="roo-lightbox-overlay"></div>' +
+ '<div class="roo-lightbox">' +
' <div class="outer-image-container">' +
' <div class="image-container">' +
' <img class="lightbox-image">' +
var th = this;
- var ids =
- 'lightbox outer-image-container image-container ' +
+ var ids = 'roo-lightbox outer-image-container image-container ' +
'lightbox-image hover-nav prev-link next-link loading loading-link ' +
- 'image-data-container image-data image-details caption number-display '
- 'bottom-nav bottom-nav-close';
+ 'image-data-container image-data image-details caption number-display ' +
+ 'bottom-nav bottom-nav-close roo-lightbox-overlay';
Roo.each(ids.split(' '),
function(id){
var vid = id.replace(/\-/g,'');
- th[vid] = this.el.child('.'+id);
+ th[vid] = th.el.child('.'+id);
if (!th[vid]) {
return;
}
th[vid].setVisibilityMode(Roo.Element.DISPLAY);
});
-
+ this.lightbox = this.roolightbox;
- //Roo.get('overlay').hide();
- //Roo.get('overlay').on('click', this.end, this);
+ this.overlay = this.roolightboxoverlay;
+ this.overlay.hide();
+
this.lightbox.hide();
this.lightbox.on('click', function(event) {
- if (Roo.get(event.getTarget()).hasClass('lightbox')) {
+ if (Roo.get(event.getTarget()).hasClass('roo-lightbox')) {
this.end();
}
}, this);
this.end();
}, this);
-
+ this.overlay.on('click',
+ function(event) {
+ event.stopEvent();
+ this.end();
+ }, this);
+
},
initializeCSS: function() {
if (typeof(Roo.ux.Lightbox.css) != 'undefined') {
return;
}
+ var rootURL = Roo.BLANK_IMAGE_URL.replace(/\/gray\/s\.gif$/, '');
+
Roo.ux.Lightbox.css = Roo.util.CSS.createStyleSheet( {
'.roo-lightbox' : {
position: 'absolute',
left: 0,
width: '100%',
'text-align': 'center',
- 'line-height': 0,
+ 'line-height': 0
},
'.roo-lightbox a img' : { border: 'none' },
'.roo-lightbox .outer-image-container' : {
'text-align':'center',
'line-height':'0'
- }
- '.roo-lightbox loading a' : {
- background:'url(../images/loading.gif) 0 0 no-repeat',
+ },
+ '.roo-lightbox .loading a' : {
+ background:'url('+ rootURL + '/ux/lightbox/loading.gif) 0 0 no-repeat',
display:'block',
width:'32px',
height:'32px',
cursor:'pointer'
- }
- '.roo-lightbox bottom-nav-close' : {
- background:'url(../images/close.gif) 0 0 no-repeat',
+ },
+ '.roo-lightbox .bottom-nav-close' : {
+ background:'url('+ rootURL + '/ux/lightbox/close.gif) 0 0 no-repeat',
height:'26px',
width:'26px',
cursor:'pointer'
- }
- '.roo-lightbox .hoverNav' :{
+ },
+ '.roo-lightbox .hover-nav' :{
position:'absolute',
top:'0',
left:'0',
height:'100%',
width:'100%',
'z-index':'10'
- }
+ },
'.roo-lightbox .image-container>.hover-nav' :{ left:'0' },
'.roo-lightbox .hover-nav a' :{ outline:'none'},
'.roo-lightbox .prev-link' : { left:'0','float':'left'},
'.roo-lightbox .next-link' : { right:'0','float':'right'},
'.roo-lightbox .prev-link:hover, .roo-lightbox .prev-link:visited:hover ' :{
- background:'url(../images/prevlabel.gif) left 15% no-repeat'
+ background:'url('+ rootURL + '/ux/lightbox/prevlabel.gif) left 15% no-repeat'
},
'.roo-lightbox .next-link:hover, .roo-lightbox .next-link:visited:hover ' :{
- background:'url(../images/nextlabel.gif) right 15% no-repeat'
+ background:'url('+ rootURL + '/ux/lightbox/nextlabel.gif) right 15% no-repeat'
},
'.roo-lightbox .image-data-container' : {
margin: '0 auto',
'line-height': '1.4em',
overflow: 'auto',
- width: '100%',
+ width: '100%'
},
'.roo-lightbox .image-data' : { padding:'0 10px', color: '#666' },
'.roo-lightbox .image-data .image-details ' : { width: '70%', 'float': 'left', 'text-align': 'left'} ,
'.roo-lightbox .image-data .caption' : { 'font-weight': 'bold' },
- '.roo-lightbox .image-data .numberDisplay' : { 'display': 'block', clear: 'left', 'padding-bottom': '1.0em' } ,
- '.roo-lightbox .image-data .bottomNavClose' : { 'float': 'right', 'padding-bottom': '0.7em','outline': 'none'}
+ '.roo-lightbox .image-data .number-display' : { 'display': 'block', clear: 'left', 'padding-bottom': '1.0em' } ,
+ '.roo-lightbox .image-data .bottom-nav-close' : { 'float': 'right', 'padding-bottom': '0.7em','outline': 'none'} ,
+ '.roo-lightbox-overlay' : {
+ 'background-color': 'black',
+ height: '500px',
+ left: '0px',
+ position: 'absolute',
+ top: '0px',
+ width: '100%',
+ 'z-index': '40999'
+ }
});
},
*/
// stretch overlay to fill page and fade in
//var arrayPageSize = this.getPageSize();
- Roo.get(document.body).mask(false);
- Roo.get(document.body)._mask.setHeight(Roo.lib.Dom.getDocumentHeight())
- //new Effect.Appear(this.overlay,
- // { duration: this.overlayDuration, from: 0.0, to: this.overlayOpacity });
-
+
+ this.onResize();
+ if (!this.resizer) {
+ this.resizer = Roo.EventManager.onWindowResize(this.onResize, this, true);;
+ }
+
+
+ this.overlay.fadeIn({
+ endOpacity: this.overlayOpacity,
+ easing: 'easeOut',
+ duration: this.overlayDuration
+ });
+
//this.imageArray = [];
- var imageNum = 0;
+ var imageNum = -1;
if (imageLink) {
imageLink = Roo.get(imageLink);
imageNum = i;
}
});
+ if (imageNum < 0) {
+
+ this.imageArray.push(imageLink);
+ imageNum = this.imageArray.length-1;
+ }
}
-
+
// let's assume the constructor sorts out the list of images..
/*
if ((imageLink.rel == 'lightbox')){
}
*/
var s = Roo.get(document).getScroll();
-
- // calculate top and left offset for the lightbox
+ // calculate top and left offset for the lightbox
// weird.. why / 10?
- var lightboxTop = s.top + (Roo.lib.Dom.getViewHeight() / 10);
- var lightboxLeft = s.left
+
+ //var lightboxTop = s.top + (Roo.lib.Dom.getViewHeight() / 10);
+ var lightboxTop = (Roo.lib.Dom.getViewHeight() / 10) + document.body.scrollTop;
+ var lightboxLeft = s.left;
this.lightbox.setStyle({
top: lightboxTop + 'px',
left: lightboxLeft + 'px' ,
- zIndex : Roo.get(document.body)._mask.getStyle('zIndex') * 1.1
- })
+ zIndex : 41000
+ });
//console.log("show lightbox");
this.lightbox.show();
-
this.changeImage(imageNum);
},
+ onResize : function()
+ {
+ this.overlay.setHeight(Roo.lib.Dom.getDocumentHeight()) ;
+ this.overlay.setWidth(Roo.lib.Dom.getDocumentWidth());
+ },
//
// changeImage()
// Hide most elements and preload image in preparation for resizing image container.
// hide elements during transition
if (this.animate) {
this.loading.setStyle({
- zIndex : Roo.get(document.body)._mask.getStyle('zIndex') * 1.2
+ zIndex : 41200
});
this.loading.show();
this.loadinglink.setX( (Roo.lib.Dom.getViewWidth() / 2) - 16);
imgPreloader.on('load', function() {
- this.lightboximage.dom.src = this.imageArray[this.activeImage].dom.href;
+ this.lightboximage.dom.src = this.imageArray[this.activeImage].srcfull || this.imageArray[this.activeImage].href ||
+ this.imageArray[this.activeImage].dom.href || this.imageArray[this.activeImage].dom.src;
- this.resizeimagecontainer(imgPreloader.getWidth(), imgPreloader.getHeight());
+ this.resizeImageContainer(this.imageArray[this.activeImage].dom.lwidth || imgPreloader.getWidth(),
+ this.imageArray[this.activeImage].dom.lheight || imgPreloader.getHeight());
imgPreloader.remove();
}, this);
- imgPreloader.dom.src = this.imageArray[this.activeImage].dom.href;
+ Roo.log(this.imageArray[this.activeImage]);
+ imgPreloader.dom.src = this.imageArray[this.activeImage].srcfull || this.imageArray[this.activeImage].href ||
+ this.imageArray[this.activeImage].dom.href || this.imageArray[this.activeImage].dom.src;
},
ww -= 150;
wh -= 150;
+
// get new width and height
var bs = this.borderSize * 2;
'easeOut', // easing
'run' // effect
- )
+ );
// if new and old image are same size and no scaling transition is necessary,
var timeout = 0;
if ((hDiff == 0) && (wDiff == 0)){
timeout = 100;
- if (Roo.isIE) timeout = 250;
+ if (Roo.isIE) {
+ timeout = 250;
+ }
}
(function(){
// if image is part of set display 'Image x of x'
if (this.imageArray.length > 1){
this.numberdisplay.update(
- this.labelImage + ' ' + (this.activeImage + 1) + ' ' + this.labelOf + ' ' + this.imageArray.length)
- this.numberDisplay.show();
+ this.labelImage + ' ' + (this.activeImage + 1) + ' ' + this.labelOf + ' ' + this.imageArray.length);
+ this.numberdisplay.show();
}
var _this = this;
this.imagedatacontainer.animate(
this.hovernav.show();
// if not first image in set, display prev image button
- if (this.activeImage > 0) this.prevlink.show();
+ if (this.activeImage > 0) {
+ this.prevlink.show();
+ }
// if not last image in set, display next image button
- if (this.activeImage < (this.imageArray.length - 1)) this.nextlink.show();
+ if (this.activeImage < (this.imageArray.length - 1)) {
+ this.nextlink.show();
+ }
this.enableKeyboardNav();
},
if (this.imageArray.length > this.activeImage + 1){
preloadNextImage = Roo.DomHelper.append(document.body, { tag: 'img' } , true);
preloadNextImage.on('load', function() { preloadNextImage.remove() });
- preloadNextImage.dom.src = this.imageArray[this.activeImage + 1].dom.href;
+ preloadNextImage.dom.src = this.imageArray[this.activeImage + 1].href ||
+ this.imageArray[this.activeImage + 1].dom.href || this.imageArray[this.activeImage + 1 ].dom.src;;
}
if (this.activeImage > 0){
preloadPrevImage = Roo.DomHelper.append(document.body, { tag: 'img' } , true);
preloadPrevImage.on('load', function() { preloadPrevImage.remove() });
- preloadPrevImage.dom.src = this.imageArray[this.activeImage - 1].dom.href;
+ preloadPrevImage.dom.src = this.imageArray[this.activeImage - 1].href ||
+ this.imageArray[this.activeImage - 1].dom.href || this.imageArray[this.activeImage - 1].dom.src;
}
},
//console.log('lightbox hide');
this.lightbox.hide();
this.loading.hide();
+ this.overlay.hide();
Roo.get(document.body).unmask();
// show all the objects that cause problems..
//$$('select', 'object', 'embed').each(function(node){ node.style.visibility = 'visible' });