/** * tiles class */ function UGLightbox(){ var t = this, g_objThis = jQuery(this); var g_gallery = new UniteGalleryMain(), g_objGallery, g_objWrapper; var g_objSlider = new UGSlider(), g_objOverlay, g_objArrowLeft, g_objArrowRight, g_objButtonClose; var g_functions = new UGFunctions(), g_objTextPanel = new UGTextPanel(), g_objNumbers; var g_objTopPanel; var g_options = { lightbox_type: "wide", //compact / wide - lightbox type lightbox_show_textpanel: true, //show the text panel lightbox_textpanel_width: 550, //the width of the text panel. lightbox_hide_arrows_onvideoplay: true, //hide the arrows when video start playing and show when stop lightbox_arrows_position: "sides", //sides, inside: position of the arrows, used on compact type lightbox_arrows_offset: 10, //The horizontal offset of the arrows lightbox_arrows_inside_offset: 10, //The offset from the image border if the arrows placed inside lightbox_arrows_inside_alwayson: false, //Show the arrows on mouseover, or always on. lightbox_overlay_color:null, //the color of the overlay. if null - will take from css lightbox_overlay_opacity:1, //the opacity of the overlay. if null - will take from css lightbox_top_panel_opacity: null, //the opacity of the top panel lightbox_show_numbers: true, //show numbers on the right side lightbox_numbers_size: null, //the size of the numbers string lightbox_numbers_color: null, //the color of the numbers lightbox_numbers_padding_top:null, //the top padding of the numbers (used in compact mode) lightbox_numbers_padding_right:null, //the right padding of the numbers (used in compact mode) lightbox_compact_closebutton_offsetx: 1, //the offsetx of the close button. Valid only for compact mode lightbox_compact_closebutton_offsety: 1 //the offsetx of the close button. Valid only for compact mode }; this.events = { }; var g_temp = { topPanelHeight: 44, initTextPanelHeight: 26, //init height for compact mode isOpened: false, putSlider: true, isCompact: false, fadeDuration: 300, positionFrom: null, textPanelTop: null, textPanelLeft: null, isArrowsInside: false, isArrowsOnHoverMode: false, lastMouseX: null, lastMouseY: null }; var g_defaults = { lightbox_slider_controls_always_on: true, lightbox_slider_enable_bullets: false, lightbox_slider_enable_arrows: false, lightbox_slider_enable_progress_indicator: false, lightbox_slider_enable_play_button: false, lightbox_slider_enable_fullscreen_button: false, lightbox_slider_enable_zoom_panel: false, lightbox_slider_enable_text_panel: false, lightbox_slider_scale_mode_media: "down", lightbox_slider_scale_mode: "down", lightbox_slider_loader_type: 3, lightbox_slider_loader_color: "black", lightbox_slider_image_padding_top: g_temp.topPanelHeight, lightbox_slider_image_padding_bottom: 10, lightbox_slider_video_padding_top: g_temp.topPanelHeight, lightbox_slider_video_padding_bottom: 0, lightbox_textpanel_align: "middle", lightbox_textpanel_padding_top: 5, lightbox_textpanel_padding_bottom: 5, lightbox_textpanel_enable_title: true, lightbox_textpanel_enable_description: false, lightbox_textpanel_enable_bg:false, video_enable_closebutton: false, slider_video_enable_closebutton: false, video_youtube_showinfo: false }; var g_defaultsCompact = { lightbox_slider_image_border: true, lightbox_slider_image_shadow:true, lightbox_overlay_opacity:0.6, lightbox_slider_image_padding_top: 30, lightbox_slider_image_padding_bottom: 30, lightbox_slider_video_padding_top: 0, lightbox_slider_video_padding_bottom: 0, lightbox_textpanel_align: "bottom", lightbox_textpanel_title_text_align: "left", lightbox_textpanel_desc_text_align: "left", lightbox_textpanel_padding_left: 10, //the padding left of the textpanel lightbox_textpanel_padding_right: 10 }; function __________GENERAL_________(){}; /** * init the gallery */ function initLightbox(gallery, customOptions){ g_gallery = gallery; g_objGallery = jQuery(gallery); g_options = jQuery.extend(g_options, g_defaults); g_options = jQuery.extend(g_options, customOptions); if(g_options.lightbox_type == "compact"){ g_temp.isCompact = true; g_options = jQuery.extend(g_options, g_defaultsCompact); g_options = jQuery.extend(g_options, customOptions); } //modify some options modifyOptions(); if(g_temp.putSlider == true){ g_gallery.initSlider(g_options, "lightbox"); g_objects = gallery.getObjects(); g_objSlider = g_objects.g_objSlider; }else{ g_objSlider = null; } if(g_options.lightbox_show_textpanel == true){ g_objTextPanel.init(g_gallery, g_options, "lightbox"); } else g_objTextPanel = null; } /** * modify some options according user options */ function modifyOptions(){ if(g_temp.isCompact == true && g_options.lightbox_show_textpanel == true){ g_options.lightbox_slider_image_padding_bottom = g_temp.initTextPanelHeight; } if(g_temp.isCompact == true && g_options.lightbox_arrows_position == "inside"){ g_temp.isArrowsInside = true; } if(g_temp.isArrowsInside == true && g_options.lightbox_arrows_inside_alwayson == false) g_temp.isArrowsOnHoverMode = true; } /** * put the lightbox html */ function putLightboxHtml(){ var html = ""; var classAddition = ""; if(g_temp.isCompact == true){ classAddition = " ug-lightbox-compact"; } html += ""; g_objWrapper = jQuery(html); jQuery("body").append(g_objWrapper); if(g_objSlider) g_objSlider.setHtml(g_objWrapper); g_objOverlay = g_objWrapper.children(".ug-lightbox-overlay"); if(g_temp.isCompact == false) g_objTopPanel = g_objWrapper.children(".ug-lightbox-top-panel"); g_objButtonClose = g_objWrapper.find(".ug-lightbox-button-close"); if(g_options.lightbox_show_numbers) g_objNumbers = g_objWrapper.find(".ug-lightbox-numbers"); g_objArrowLeft = g_objWrapper.children(".ug-lightbox-arrow-left"); g_objArrowRight = g_objWrapper.children(".ug-lightbox-arrow-right"); if(g_objTextPanel){ if(g_objTopPanel) g_objTextPanel.appendHTML(g_objTopPanel); else g_objTextPanel.appendHTML(g_objWrapper); } } /** * set lightbox properties */ function setProperties(){ if(g_options.lightbox_overlay_color !== null) g_objOverlay.css("background-color", g_options.lightbox_overlay_color); if(g_options.lightbox_overlay_opacity !== null) g_objOverlay.fadeTo(0, g_options.lightbox_overlay_opacity); if(g_objTopPanel && g_options.lightbox_top_panel_opacity !== null) g_objTopPanel.css("background-color","rgb(0,0,0,"+g_options.lightbox_top_panel_opacity+")"); //set numbers properties if(g_objNumbers){ var cssNumbers = {}; if(g_options.lightbox_numbers_size !== null) cssNumbers["font-size"] = g_options.lightbox_numbers_size+"px"; if(g_options.lightbox_numbers_color) cssNumbers["color"] = g_options.lightbox_numbers_color; if(g_options.lightbox_numbers_padding_right !== null) cssNumbers["padding-right"] = g_options.lightbox_numbers_padding_right + "px"; if(g_options.lightbox_numbers_padding_top !== null) cssNumbers["padding-top"] = g_options.lightbox_numbers_padding_top + "px"; g_objNumbers.css(cssNumbers); } } /** * refresh slider item with new height */ function refreshSliderItem(newHeight){ if(!g_objSlider) return(true); //set slider new image position var objOptions = { slider_image_padding_top: newHeight, slider_video_padding_top: newHeight }; g_objSlider.setOptions(objOptions); g_objSlider.refreshSlideItems(); } /** * handle panel height according text height */ function handlePanelHeight(){ if(!g_objTopPanel) return(false); if(!g_objTextPanel) return(false); //check text panel size, get the panel bigger then var panelHeight = g_objTopPanel.height(); if(panelHeight == 0) return(false); var newPanelHeight = panelHeight; var textPanelHeight = g_objTextPanel.getSize().height; if(panelHeight != g_temp.topPanelHeight) newPanelHeight = g_temp.topPanelHeight; if(textPanelHeight > newPanelHeight) newPanelHeight = textPanelHeight; if(panelHeight != newPanelHeight){ g_objTopPanel.height(newPanelHeight); if(g_objSlider && g_objSlider.isAnimating() == false) refreshSliderItem(newPanelHeight); } } /** * handle slider image height according the textpanel height * refresh the slider if the height is not in place */ function handleCompactHeight(objImageSize){ if(g_temp.isOpened == false) return(false); if(!g_objTextPanel) return(false); if(!g_objSlider) return(false); var wrapperSize = g_functions.getElementSize(g_objWrapper); var textPanelSize = g_objTextPanel.getSize(); if(textPanelSize.width == 0 || textPanelSize.height > 120) return(false); if(!objImageSize){ var objImage = g_objSlider.getSlideImage(); var objImageSize = g_functions.getElementSize(objImage); } if(objImageSize.height == 0 || objImageSize.width == 0) return(false); //check elements end size var totalBottom = objImageSize.bottom + textPanelSize.height; if(totalBottom < wrapperSize.height) return(false); var sliderOptions = g_objSlider.getOptions(); var imagePaddingBottom = textPanelSize.height; if(imagePaddingBottom != sliderOptions.slider_image_padding_bottom){ var objOptions = { slider_image_padding_bottom: imagePaddingBottom }; if(g_objSlider.isAnimating() == false){ g_objSlider.setOptions(objOptions); g_objSlider.refreshSlideItems(); return(true); } } return(false); } /** * set text panel top of compact mode */ function setCompactTextpanelTop(objImageSize, positionPanel){ if(!objImageSize){ var objImage = g_objSlider.getSlideImage(); var objImageSize = g_functions.getElementSize(objImage); } g_temp.textPanelTop = objImageSize.bottom; if(positionPanel === true) g_objTextPanel.positionPanel(g_temp.textPanelTop, g_temp.textPanelLeft); } /** * handle text panel width on compact mode, * run when the image is ready. * Set top position of the panel as well * position numbers as well */ function handleCompactTextpanelSizes(showTextpanel){ var isActionActive = g_objSlider.isSlideActionActive(); if(isActionActive) return(false); var wrapperSize = g_functions.getElementSize(g_objWrapper); var objImage = g_objSlider.getSlideImage(); var objImageSize = g_functions.getElementSize(objImage); if(objImageSize.width == 0) return(false); g_temp.textPanelLeft = objImageSize.left; g_temp.textPanelTop = objImageSize.bottom; var textPanelWidth = objImageSize.width; if(g_objNumbers){ var objNumbersSize = g_functions.getElementSize(g_objNumbers); textPanelWidth -= objNumbersSize.width; //place numbers object var numbersLeft = objImageSize.right - objNumbersSize.width; g_functions.placeElement(g_objNumbers, numbersLeft, g_temp.textPanelTop); } if(g_objTextPanel){ g_objTextPanel.refresh(true, true, textPanelWidth); setCompactTextpanelTop(objImageSize); } var isChanged = handleCompactHeight(objImageSize); if(isChanged == false){ g_temp.positionFrom = "handleCompactTextpanelSizes"; if(g_objTextPanel){ g_objTextPanel.positionPanel(g_temp.textPanelTop, g_temp.textPanelLeft); if(showTextpanel === true){ showTextpanel(); showNumbers(); } } } } /** * return that current slider image is in place */ function isSliderImageInPlace(){ var isImageInPlace = (g_objSlider.isCurrentImageInPlace() == true); if(g_objSlider.isCurrentSlideType("image") == false && g_objSlider.isSlideActionActive() == true) isImageInPlace = false; return(isImageInPlace); } /** * position the arrows inside mode */ function positionArrowsInside(toShow, isAnimation){ if(g_temp.isArrowsInside == false) return(false); if(!g_objArrowLeft) return(false); var isImageInPlace = isSliderImageInPlace(); g_objArrowLeft.show(); g_objArrowRight.show(); g_temp.positionFrom = "positionArrowsInside"; if(g_temp.isArrowsOnHoverMode == true && isImageInPlace == true && isMouseInsideImage() == false) hideArrows(true); if(isImageInPlace == false){ var leftArrowLeft = g_functions.getElementRelativePos(g_objArrowLeft, "left", g_options.lightbox_arrows_offset); var leftArrowTop = g_functions.getElementRelativePos(g_objArrowLeft, "middle"); var rightArrowLeft = g_functions.getElementRelativePos(g_objArrowRight, "right", g_options.lightbox_arrows_offset); var rightArrowTop = leftArrowTop; }else{ var objImage = g_objSlider.getSlideImage(); var objImageSize = g_functions.getElementSize(objImage); var objSliderSize = g_functions.getElementSize(g_objSlider.getElement()); var leftArrowLeft = g_functions.getElementRelativePos(g_objArrowLeft, "left", 0, objImage) + objImageSize.left + g_options.lightbox_arrows_inside_offset; var leftArrowTop = g_functions.getElementRelativePos(g_objArrowLeft, "middle", 0, objImage) + objImageSize.top; var rightArrowLeft = g_functions.getElementRelativePos(g_objArrowLeft, "right", 0, objImage) + objImageSize.left - g_options.lightbox_arrows_inside_offset; var rightArrowTop = leftArrowTop; } //place the image with animation or not if(isAnimation === true){ var objCssLeft = { left: leftArrowLeft, top: leftArrowTop }; var objCssRight = { left: rightArrowLeft, top: rightArrowTop }; g_objArrowLeft.stop().animate(objCssLeft,{ duration: g_temp.fadeDuration, }); g_objArrowRight.stop().animate(objCssRight,{ duration: g_temp.fadeDuration, }); }else{ g_objArrowLeft.stop(); g_objArrowRight.stop(); g_functions.placeElement(g_objArrowLeft, leftArrowLeft, leftArrowTop); g_functions.placeElement(g_objArrowRight, rightArrowLeft, rightArrowTop); } if(toShow == true) showArrows(isAnimation); } /** * position close button for compact type */ function positionCloseButton(toShow, isAnimation){ g_temp.positionFrom = null; var isImageInPlace = isSliderImageInPlace(); if(isImageInPlace == false){ //put image to corner var closeButtonTop = 2; var closeButtonLeft = g_functions.getElementRelativePos(g_objButtonClose, "right", 2, g_objWrapper); }else{ var objImage = g_objSlider.getSlideImage(); var objImageSize = g_functions.getElementSize(objImage); var objSliderSize = g_functions.getElementSize(g_objSlider.getElement()); var objButtonSize = g_functions.getElementSize(g_objButtonClose); //some strange bug if(objSliderSize.top == objSliderSize.height) objSliderSize.top = 0; var closeButtonLeft = objSliderSize.left + objImageSize.right - objButtonSize.width / 2 + g_options.lightbox_compact_closebutton_offsetx; var closeButtonTop = objSliderSize.top + objImageSize.top - objButtonSize.height / 2 - g_options.lightbox_compact_closebutton_offsety; } //place the image with animation or not if(isAnimation === true){ var objCss = { left: closeButtonLeft, top: closeButtonTop }; g_objButtonClose.stop().animate(objCss,{ duration: g_temp.fadeDuration, }); }else{ g_objButtonClose.stop(); g_functions.placeElement(g_objButtonClose, closeButtonLeft, closeButtonTop); } if(toShow === true) showCloseButton(isAnimation); } /** * position text panel for wide * size - wrapper size */ function positionTextPanelWide(size){ var objOptions = {}; var textWidth = g_options.lightbox_textpanel_width; var minPaddingLeft = 47; var minPaddingRight = 40; var maxTextPanelWidth = size.width - minPaddingLeft - minPaddingRight; if(textWidth > maxTextPanelWidth){ //mobile mode objOptions.textpanel_padding_left = minPaddingLeft; objOptions.textpanel_padding_right = minPaddingRight; objOptions.textpanel_title_text_align = "center"; objOptions.textpanel_desc_text_align = "center"; }else{ objOptions.textpanel_padding_left = Math.floor((size.width - textWidth) / 2); objOptions.textpanel_padding_right = objOptions.textpanel_padding_left; objOptions.textpanel_title_text_align = "left"; objOptions.textpanel_desc_text_align = "left"; if(g_options.lightbox_textpanel_title_text_align) objOptions.textpanel_title_text_align = g_options.lightbox_textpanel_desc_text_align; if(g_options.lightbox_textpanel_desc_text_align) objOptions.textpanel_desc_text_align = g_options.lightbox_textpanel_desc_text_align; } g_objTextPanel.setOptions(objOptions); g_objTextPanel.refresh(true, true); handlePanelHeight(); g_objTextPanel.positionPanel(); } /** * position the elements */ function positionElements(){ var size = g_functions.getElementSize(g_objWrapper); //position top panel: if(g_objTopPanel) g_functions.setElementSizeAndPosition(g_objTopPanel, 0, 0, size.width, g_temp.topPanelHeight); //position arrows if(g_objArrowLeft && g_temp.isArrowsInside == false){ if(g_options.lightbox_hide_arrows_onvideoplay == true){ g_objArrowLeft.show(); g_objArrowRight.show(); } g_functions.placeElement(g_objArrowLeft, "left", "middle", g_options.lightbox_arrows_offset); g_functions.placeElement(g_objArrowRight, "right", "middle", g_options.lightbox_arrows_offset); } if(g_temp.isCompact == false) g_functions.placeElement(g_objButtonClose, "right", "top", 2, 2); //place text panel if(g_objTextPanel){ g_temp.positionFrom = "positionElements"; if(g_temp.isCompact == false) positionTextPanelWide(size); else{ showTextPanel(); showNumbers(); } } var sliderWidth = size.width; var sliderHeight = size.height; var sliderTop = 0; var sliderLeft = 0; if(g_objSlider){ if(g_objTopPanel){ var topPanelHeight = g_objTopPanel.height(); var objOptions = { slider_image_padding_top: topPanelHeight, slider_video_padding_top: topPanelHeight }; g_objSlider.setOptions(objOptions); } g_objSlider.setSize(sliderWidth, sliderHeight); g_objSlider.setPosition(sliderLeft, sliderTop); } } /** * hide the text panel */ function hideTextPanel(){ if(g_objTextPanel) g_objTextPanel.getElement().stop().fadeTo(g_temp.fadeDuration, 0); } /** * hide the numbers text */ function hideNumbers(){ if(g_objNumbers) g_objNumbers.stop().fadeTo(g_temp.fadeDuration, 0); } /** * is mouse inside image */ function isMouseInsideImage(){ if(!g_temp.lastMouseX) return(true); var obj = { pageX: g_temp.lastMouseX, pageY: g_temp.lastMouseY }; var isMouseInside = g_objSlider.isMouseInsideSlideImage(obj); return(isMouseInside); } /** * hide the arrows */ function hideArrows(noAnimation, isForce){ if(!g_objArrowLeft) return(false); //don't hide the arrows if mouse inside image if(g_temp.isArrowsOnHoverMode == true && isForce === false){ if(isMouseInsideImage() == true); return(true); } if(noAnimation === true){ g_objArrowLeft.stop().fadeTo(0, 0); g_objArrowRight.stop().fadeTo(0, 0); }else{ g_objArrowLeft.stop().fadeTo(g_temp.fadeDuration, 0); g_objArrowRight.stop().fadeTo(g_temp.fadeDuration, 0); } } /** * get if the arrows are hidden */ function isArrowsHidden(){ if(!g_objArrowLeft) return(true); if(g_objArrowLeft.is(":visible") == false) return(true); var opacity = g_objArrowLeft.css("opacity"); if(opacity != 1) return(true); return(false); } /** * show the arrows */ function showArrows(noStop, fromHover){ if(!g_objArrowLeft) return(false); //don't show every time on arrowsonhover mode if(g_temp.isArrowsOnHoverMode == true && fromHover !== true && isSliderImageInPlace() == true) return(true); //don't show if swiping if(g_objSlider.isSwiping() == true) return(true); if(noStop !== true){ g_objArrowLeft.stop(); g_objArrowRight.stop(); } g_objArrowLeft.fadeTo(g_temp.fadeDuration, 1); g_objArrowRight.fadeTo(g_temp.fadeDuration, 1); } /** * hide close button */ function hideCompactElements(){ if(g_objButtonClose) g_objButtonClose.stop().fadeTo(g_temp.fadeDuration, 0); hideTextPanel(); hideNumbers(); g_temp.positionFrom = "hideCompactElements"; if(g_temp.isArrowsInside == true) hideArrows(); } /** * show close button */ function showCloseButton(noStop){ if(noStop !== true) g_objButtonClose.stop(); g_objButtonClose.fadeTo(g_temp.fadeDuration, 1); } /** * update text panel text of the curren item */ function updateTextPanelText(currentItem){ if(!g_objTextPanel) return(false); if(!currentItem) var currentItem = g_objSlider.getCurrentItem(); g_objTextPanel.setTextPlain(currentItem.title, currentItem.description); } /** * update numbers text */ function updateNumbersText(currentItem){ if(!g_objNumbers) return(false); if(!currentItem) var currentItem = g_objSlider.getCurrentItem(); var numItems = g_gallery.getNumItems(); var numCurrentItem = currentItem.index + 1; g_objNumbers.html(numCurrentItem + " / " + numItems); } /** * show the text panel */ function showTextPanel(){ if(!g_objTextPanel) return(false); g_objTextPanel.getElement().show().stop().fadeTo(g_temp.fadeDuration, 1); } /** * Show the numbers object */ function showNumbers(){ if(g_objNumbers) g_objNumbers.stop().fadeTo(g_temp.fadeDuration, 1); } function __________EVENTS_________(){}; /** * on start dragging slider item event. hide the elements */ function onSliderDragStart(){ if(g_temp.isCompact == false) return(true); hideCompactElements(); } /** * on zoom change * move the assets of compact to their places */ function onZoomChange(){ if(g_temp.isCompact == false) return(true); g_temp.positionFrom = "onZoomChange"; positionCloseButton(false, true); positionArrowsInside(false, true); //handle compact text panel mode if(g_temp.isCompact == true){ var isImageInPlace = (g_objSlider.isCurrentSlideType("image") && g_objSlider.isCurrentImageInPlace() == true); if(isImageInPlace == false){ hideTextPanel(); hideNumbers(); } else{ g_temp.positionFrom = "onZoomChange"; showTextPanel(); showNumbers(); } } } /** * after return slider to it's place * show close button */ function onSliderAfterReturn(){ if(g_temp.isCompact == false) return(true); g_temp.positionFrom = "onSliderAfterReturn"; positionCloseButton(true); positionArrowsInside(true); var isChanged = handleCompactHeight(); if(isChanged == false) handleCompactTextpanelSizes(); showTextPanel(); showNumbers(); } /** * after put image to the slide * position compact elements */ function onSliderAfterPutImage(data, objSlide){ objSlide = jQuery(objSlide); if(g_temp.isCompact == false) return(true); if(g_objSlider.isSlideCurrent(objSlide) == false) return(true); g_temp.positionFrom = "onSliderAfterPutImage"; positionCloseButton(true); positionArrowsInside(true); handleCompactTextpanelSizes(); } /** * on slider transition end, handle panel height */ function onSliderTransitionEnd(){ var sliderOptions = g_objSlider.getOptions(); var imagePaddingTop = sliderOptions.slider_image_padding_top; //handle wide if(g_objTopPanel){ var panelHeight = g_objTopPanel.height(); if(panelHeight != imagePaddingTop) refreshSliderItem(panelHeight); } //handle compact if(g_temp.isCompact == true){ updateTextPanelText(); updateNumbersText(); g_temp.positionFrom = "onSliderTransitionEnd"; positionCloseButton(true); positionArrowsInside(true); if(g_objSlider.isSlideActionActive() == false){ var isChanged = handleCompactHeight(); if(isChanged == false) handleCompactTextpanelSizes(); showTextPanel(); showNumbers(); } } } /** * on item change * update numbers text and text panel text/position */ function onItemChange(data, currentItem){ if(g_temp.isCompact == false){ //wide mode if(g_objNumbers) updateNumbersText(currentItem); if(g_objTextPanel){ updateTextPanelText(currentItem); g_objTextPanel.positionElements(false); handlePanelHeight(); g_objTextPanel.positionPanel(); } }else{ if(g_objSlider.isAnimating() == false){ if(g_objTextPanel) updateTextPanelText(currentItem); if(g_objNumbers) updateNumbersText(currentItem); } } } /** * on slider click */ function onSliderClick(data, event){ var slideType = g_objSlider.getSlideType(); if(slideType != "image") return(true); var isPreloading = g_objSlider.isPreloading(); if(isPreloading == true){ t.close("slider"); return(true); } var isInside = g_objSlider.isMouseInsideSlideImage(event); if(isInside == false) t.close("slider_inside"); } /** * on lightbox resize */ function onResize(){ positionElements(); } /** * on slider action start. remove extras */ function onSliderActionStart(){ if(g_temp.isCompact == false) return(true); positionCloseButton(true); positionArrowsInside(true); if(g_objTextPanel) g_objTextPanel.getElement().hide(); if(g_objNumbers) g_objNumbers.hide(); } //show extras function onSliderActionEnd(){ if(g_temp.isCompact == false) return(true); positionCloseButton(true); positionArrowsInside(true); if(g_objTextPanel) g_objTextPanel.getElement().show(); if(g_objNumbers) g_objNumbers.show(); } /** * on start play - hide the side buttons */ function onPlayVideo(){ if(g_objArrowLeft && g_options.lightbox_hide_arrows_onvideoplay == true){ g_objArrowLeft.hide(); g_objArrowRight.hide(); } } /** * on stop video - show the side buttons */ function onStopVideo(){ if(g_objArrowLeft && g_options.lightbox_hide_arrows_onvideoplay == true){ g_objArrowLeft.show(); g_objArrowRight.show(); } } /** * on gallery keypres, do operations */ function onKeyPress(data, key){ switch(key){ case 27: //escape - close lightbox if(g_temp.isOpened == true) t.close("keypress"); break; } } /** * on image mouse enter event */ function onImageMouseEnter(){ if(g_temp.isArrowsOnHoverMode == true) showArrows(false, true); } /** * on image mouse leave */ function onImageMouseLeave(event){ g_temp.positionFrom = "hideCompactElements"; if(g_temp.isArrowsOnHoverMode == true && isSliderImageInPlace() == true) hideArrows(false, true); } /** * on mouse move event * show arrows if inside image */ function onMouseMove(event){ g_temp.lastMouseX = event.pageX; g_temp.lastMouseY = event.pageY; var isHidden = isArrowsHidden() if(isHidden == true && isMouseInsideImage() && g_objSlider.isAnimating() == false){ g_temp.positionFrom = "onMouseMove"; if(g_objArrowLeft && g_objArrowLeft.is(":animated") == false) showArrows(false, true); } } /** * init events */ function initEvents(){ //g_objOverlay.on("click touchstart", onOverlayClick); g_objOverlay.on("touchstart", function(event){ event.preventDefault(); }); g_objOverlay.on("touchend", function(event){ t.close("overlay"); }); g_functions.addClassOnHover(g_objArrowRight, "ug-arrow-hover"); g_functions.addClassOnHover(g_objArrowLeft, "ug-arrow-hover"); g_functions.addClassOnHover(g_objButtonClose); g_gallery.setNextButton(g_objArrowRight); g_gallery.setPrevButton(g_objArrowLeft); g_objButtonClose.click(function(){ t.close("button"); }); g_objGallery.on(g_gallery.events.ITEM_CHANGE, onItemChange); if(g_objSlider){ jQuery(g_objSlider).on(g_objSlider.events.TRANSITION_END, onSliderTransitionEnd); //on slider click event jQuery(g_objSlider).on(g_objSlider.events.CLICK, onSliderClick); jQuery(g_objSlider).on(g_objSlider.events.ACTION_START, onSliderActionStart); jQuery(g_objSlider).on(g_objSlider.events.ACTION_END, onSliderActionEnd); //on slider video var objVideo = g_objSlider.getVideoObject(); jQuery(objVideo).on(objVideo.events.PLAY_START, onPlayVideo); jQuery(objVideo).on(objVideo.events.PLAY_STOP, onStopVideo); //handle close button hide / appear jQuery(g_objSlider).on(g_objSlider.events.START_DRAG, onSliderDragStart); jQuery(g_objSlider).on(g_objSlider.events.TRANSITION_START, onSliderDragStart); jQuery(g_objSlider).on(g_objSlider.events.AFTER_DRAG_CHANGE, onSliderAfterReturn); jQuery(g_objSlider).on(g_objSlider.events.AFTER_RETURN, onSliderAfterReturn); jQuery(g_objSlider).on(g_objSlider.events.AFTER_PUT_IMAGE, onSliderAfterPutImage); jQuery(g_objSlider).on(g_objSlider.events.ZOOM_CHANGE, onZoomChange); jQuery(g_objSlider).on(g_objSlider.events.IMAGE_MOUSEENTER, onImageMouseEnter); jQuery(g_objSlider).on(g_objSlider.events.IMAGE_MOUSELEAVE, onImageMouseLeave); } //on resize jQuery(window).resize(function(){ if(g_temp.isOpened == false) return(true); g_functions.whenContiniousEventOver("lightbox_resize", onResize, 100); }); g_objGallery.on(g_gallery.events.GALLERY_KEYPRESS, onKeyPress); //store last mouse x and y if(g_temp.isArrowsOnHoverMode == true){ jQuery(document).bind('mousemove', onMouseMove); } } /** * destroy the lightbox events */ this.destroy = function(){ jQuery(document).unbind("mousemove"); g_objOverlay.off("touchstart"); g_objOverlay.off("touchend"); g_objButtonClose.off("click"); g_objGallery.off(g_gallery.events.ITEM_CHANGE); if(g_objSlider){ jQuery(g_objSlider).off(g_objSlider.events.ACTION_START); jQuery(g_objSlider).off(g_objSlider.events.ACTION_END); jQuery(g_objSlider).off(g_objSlider.events.TRANSITION_END); jQuery(g_objSlider).off(g_objSlider.events.CLICK); jQuery(g_objSlider).off(g_objSlider.events.START_DRAG); jQuery(g_objSlider).off(g_objSlider.events.TRANSITION_START); jQuery(g_objSlider).off(g_objSlider.events.AFTER_DRAG_CHANGE); jQuery(g_objSlider).off(g_objSlider.events.AFTER_RETURN); var objVideo = g_objSlider.getVideoObject(); jQuery(objVideo).off(objVideo.events.PLAY_START); jQuery(objVideo).off(objVideo.events.PLAY_STOP); jQuery(g_objSlider).on(g_objSlider.events.IMAGE_MOUSEENTER, onImageMouseEnter); jQuery(g_objSlider).on(g_objSlider.events.IMAGE_MOUSELEAVE, onImageMouseLeave); g_objSlider.destroy(); } jQuery(window).unbind("resize"); g_objGallery.off(g_gallery.events.GALLERY_KEYPRESS, onKeyPress); } /** * actual hide all compacy type elements */ function actualHideCompactElements(){ if(g_objButtonClose) g_objButtonClose.hide(); if(g_objArrowLeft && g_temp.isArrowsInside == true){ g_objArrowLeft.hide(); g_objArrowRight.hide(); } if(g_objNumbers) g_objNumbers.hide(); if(g_objTextPanel) g_objTextPanel.hide(); } /** * open the lightbox with some item index */ this.open = function(index){ var objItem = g_gallery.getItem(index); g_temp.isOpened = true; if(g_objSlider){ g_objSlider.setItem(objItem, "fade"); } if(g_objTextPanel) g_objTextPanel.setTextPlain(objItem.title, objItem.description); g_objOverlay.stop().fadeTo(0,0); g_objWrapper.show(); g_objWrapper.fadeTo(0,1); g_objOverlay.stop().fadeTo(g_temp.fadeDuration, g_options.lightbox_overlay_opacity); positionElements(); if(g_temp.isCompact == true){ var isPreloading = g_objSlider.isPreloading(); if(isPreloading == true){ actualHideCompactElements(); }else{ //hide only arrows if they are inside if(g_temp.isArrowsInside == true){ g_objArrowLeft.hide(); g_objArrowRight.hide(); } } } if(g_objSlider) g_objSlider.startSlideAction(); } /** * close the lightbox */ this.close = function(fromWhere){ g_temp.isOpened = false; if(g_temp.isCompact == true) hideCompactElements(); if(g_objSlider) g_objSlider.stopSlideAction(); var slideType = g_objSlider.getSlideType(); if(slideType != "image") g_objWrapper.hide(); else{ g_objWrapper.fadeTo(g_temp.fadeDuration,0,function(){ g_objWrapper.hide(); }); } } /** * external init function */ this.init = function(gallery, customOptions){ initLightbox(gallery, customOptions); } /** * external put html function */ this.putHtml = function(){ putLightboxHtml(); } /** * run lightbox elements */ this.run = function(){ setProperties(); if(g_objSlider) g_objSlider.run(); initEvents(); } }