/* Image manager */ (function (){ var FWDMImageManager = function(_d, prt){ var _s = this; var prototype = FWDMImageManager.prototype; _s.originalImage_img; _s.toolTipLeft_img = _d.toolTipLeft_img; _s.toolTipPointer_img = _d.toolTipPointer_img; _s.markers_ar = []; _s.toolTipWindows_ar = []; _s.toolTipDataWindows_ar = _d.toolTipWindows_ar; _s.markersList_ar = _d.markersList_ar; _s.markersPosition_ar = _d.markersPosition_ar; _s.largeImagesPaths_ar = _d.largeImagesPaths_ar; _s.curMarker_do; _s.markersToolTip_do; _s.markersToolTipWindow_do; _s.hider; _s.dumy_sdo; _s.slicesHolder_do; _s.smallImage_sdo; _s.markersPositionInfo_sdo; _s.disableMouseWheel_bl = _d.disableMouseWheel_bl; if(_d.disableZoom) _s.disableMouseWheel_bl = true; _s.handMovePath_str = _d.handMovePath_str; _s.handGrabPath_str = _d.handGrabPath_str; _s.backgroundColor_str = prt.backgroundColor_str; _s.draggingMode_str = _d.startDraggingMode_str; _s.controllerVerticalPosition_str = _d.controllerVerticalPosition_str; _s.buttonToolTipLeft_str = _d.buttonToolTipLeft_str; _s.buttonToolTipMiddle_str = _d.buttonToolTipMiddle_str; _s.buttonToolTipRight_str = _d.buttonToolTipRight_str; _s.buttonToolTipFontColor_str = _d.buttonToolTipFontColor_str; _s.buttonToolTipBottomPointer_str = _d.buttonToolTipBottomPointer_str; _s.buttonToolTipTopPointer_str = _d.buttonToolTipTopPointer_str; _s.lastMarkerId_str; _s.curId = 0; _s.prevId = 1000; _s.curLargeImageId = 1000; _s.totalImages = _d.totalImages; _s.totalToolTipsWindows = _s.toolTipDataWindows_ar.length; _s.stageWidth; _s.stageHeight; _s.smallestPossibleScale; _s.currentScale = undefined; _s.sliceCurrentScale = 1; _s.prevScale = 0; _s.percentZoomed = 0.1; _s.imageWidth; _s.imageHeight; _s.doubleClickZoomFactor = _d.doubleClickZoomFactor; _s.zoomFactor = _d.zoomFactor; _s.startZoomFactor = _d.startZoomFactor; _s.zoomSpeed = _d.zoomSpeed; _s.finalX = 0; _s.finalY = 0; _s.xPositionOnPress; _s.yPositionOnPress; _s.lastPresedX = 0; _s.lastPresedY = 0; _s.lastPresedX2 = 0; _s.lastPresedY2 = 0; _s.mouseX = 0; _s.mouseY = 0; _s.controllerHeight; _s.controllerOffsetY = _d.controllerOffsetY; _s.rotationSpeed = Math.abs(-1.1 + _d.dragRotationSpeed); _s.startScaleForMobileZoom; _s.totalMarkers; _s.globalX; _s.globalY; _s.markerToolTipOffsetY = _d.markerToolTipOffsetY; _s.toolTipWindowMaxWidth = _d.toolTipWindowMaxWidth; _s.sliceWidth = _d.sliceWidth; _s.sliceHeight = _d.sliceHeight; _s.cols = _d.cols; _s.rows = _d.rows; _s.panSpeed = _d.panSpeed; _s.panDirectionSign = _d.inversePanDirection_bl ? -1 : 1; _s.tweenDone_to; _s.removeSmallSDOId_to; _s.setAlphaWithDelayId_to; _s.hideToolTipWindowId_to; _s.addHideToolTipWindowTestWithDelayId_to; _s.showToolTipWindoId_to; _s.showMarkerToolTipId_to; _s.setupMarkersAndToolTipWindowsId_to; _s.secondTapId_to; _s.enableMarkersId_to; _s.showMarkersFirstTimeId_to; _s.showMarkersFirstTimeDone_bl = false; _s.allowToDragHoriz_bl = false; _s.allowToDragVert_bl = false; _s.isTweening_bl = false; _s.isDragging_bl = false; _s.isScrollBarHandlerPressed_bl = false; _s.isResizingFirstTime_bl = true; _s.isControllerActive_bl = false; _s.useEntireScreen_bl = _d.useEntireScreen_bl; _s.isMobile_bl = _d.isMobile_bl; _s.showNavigator_bl = _d.showNavigator_bl; _s.showMarkers_bl = _d.showMarkers_bl; _s.isNavigatorShowed_bl = false; _s.addImageFirstTimeOnActivate_bl = true; _s.showMarkersInfo_bl = _d.showMarkersInfo_bl; _s.updateScrollBarWithDelay_bl = true; _s.areLeftAndRightButtonsDisabled_bl = false; _s.areUpAndDownButtonsDisabled_bl = false; _s.isMobile_bl = _d.isMobile_bl; _s.addDoubleClickSupport_bl = _d.addDoubleClickSupport_bl; _s.showLargeImageVersionOnZoom_bl = _d.showLargeImageVersionOnZoom_bl; _s.hasPointerEvent_bl = FWDMUtils.hasPointerEvent; _s.init = function(){ _s.setOverflow('visible'); if(_d.useVectorIcons){ _s.controllerHeight = prt.controllerHeight; }else{ _s.controllerHeight = _d.controllerHeight; } _s.setupMainContiners(); _s.originalImage_img = _d.image_img; _s.imageWidth = _d.imageWidth; _s.imageHeight = _d.imageHeight; _s.addImage(); if(!_d.disablePan){ if(!_s.showMarkersInfo_bl) _s.dumy_sdo.screen.style.cursor = 'url(' + _s.handMovePath_str + '), default'; if(_s.isMobile_bl){ _s.addPannSupportForMobile(); }else{ _s.addPannSupport(); } } if(!_s.disableMouseWheel_bl) _s.addMouseWheelSupport(); if(_s.addDoubleClickSupport_bl) _s.addDoubleClickSupport(); _s.setupMarkersAndToolTipWindowsId_to = setTimeout(_s.setupMarkersAndToolTipWindows, 1000); if(_s.showMarkersInfo_bl) _s.setupMarkersInfo(); _s.setX(_d.imageOffsetX); _s.resizeAndPosition(true); _s.showMarkersFirstTime(); }; //###########################################// /* Setup markers */ //###########################################// _s.setupMarkersAndToolTipWindows = function(){ if(_s.showMarkers_bl){ _s.setupMarkers(); if(!_s.isMobile_bl || _s.hasPointerEvent_bl) _s.setupMarkersToolTip(); _s.setupMarkersToolTipWindow(); _s.positionMarkers(false); } if(_s.showNavigator_bl){ _s.hideOrShowNavigator(); _s.updateNavigator(false); } if(_s.stageHeight < _s.finalHeight){ _s.dispatchEvent(FWDMImageManager.ENABLE_UP_AND_DOWN_BUTTONS); _s.areUpAndDownButtonsDisabled_bl = true; } if(_s.stageWidth < _s.finalWidth){ _s.dispatchEvent(FWDMImageManager.ENABLE_LEFT_AND_RIGHT_BUTTONS); _s.areLeftAndRightButtonsDisabled_bl = true; } }; //##########################################// //Setup hider. //##########################################// _s.setupHider = function(hider){ _s.hider = hider; }; //################################################// //add small and large image. //################################################// _s.addImage = function(){ _s.smallImage_sdo = new FWDMTransformDisplayObject("img"); _s.smallImage_sdo.setScreen(_s.originalImage_img); _s.smallImage_sdo.setTransformOrigin(0,0); _s.addImageFirstTimeOnActivate_bl = false; _s.addChild(_s.smallImage_sdo); _s.addChild(_s.dumy_sdo); _s.setAlpha(0); FWDAnimation.to(_s, .8, {alpha:1, delay:.3}); }; //###########################################// //Setup main containers //###########################################// _s.setupMainContiners = function(){ //_s.setBkColor(_s.backgroundColor_str); _s.dumy_sdo = new FWDMSimpleDisplayObject("div"); if(FWDMUtils.isIE){ _s.dumy_sdo.setBkColor("#00FF00"); _s.dumy_sdo.setAlpha(.01); } if(_s.controllerVerticalPosition_str == FWDMController.POSITION_TOP && !_s.useEntireScreen_bl){ _s.dumy_sdo.setY(- _s.controllerHeight); _s.setY(_s.controllerHeight + _d.imageOffsetY + _s.controllerOffsetY); }else{ _s.setY(_d.imageOffsetY); } }; //###########################################// // Resize and position _s... //###########################################// _s.resizeAndPosition = function(centerImage_bl, overwrite){ if(_s.stageWidth == prt.stageWidth && _s.tempStageH == prt.stageHeight && !overwrite) return; _s.stageWidth = prt.stageWidth; _s.tempStageH = prt.stageHeight; if(_s.useEntireScreen_bl){ _s.stageHeight = prt.stageHeight; }else{ _s.stageHeight = prt.stageHeight - _s.controllerHeight - _s.controllerOffsetY; } _s.setWidth(_s.stageWidth); _s.setHeight(_s.stageHeight); var scX = _s.stageWidth/_s.imageWidth; var scY = _s.stageHeight/_s.imageHeight; var totalScale; if(scX < scY){ totalScale = scX; }else{ totalScale = scY; } if(totalScale >= _s.zoomFactor) totalScale = _s.zoomFactor; if(totalScale >= _s.zoomFactor){ _s.currentScale = _s.prevScale = _s.smallestPossibleScale = _s.zoomFactor; }else{ _s.smallestPossibleScale = totalScale; _s.currentScale = _s.prevScale = totalScale; } if(_s.isResizingFirstTime_bl){ if(!isNaN(_s.startZoomFactor)){ if(_s.startZoomFactor > _s.currentScale){ _s.currentScale = _s.prevScale = _s.startZoomFactor; } } _s.isResizingFirstTime_bl = false; } _s.finalWidth = Math.round(_s.currentScale * _s.imageWidth); _s.finalHeight = Math.round(_s.currentScale * _s.imageHeight); if(scX <= scY && totalScale != _s.zoomFactor){ if(_s.finalWidth < _s.stageWidth){ _s.currentScale = _s.stageWidth/_s.imageWidth; _s.smallestPossibleScale = _s.currentScale; } }else if(scX >= scY && totalScale != _s.zoomFactor){ if(_s.finalHeight < _s.stageHeight){ _s.currentScale = _s.stageHeight/_s.imageHeight; _s.smallestPossibleScale = _s.currentScale; } } _s.finalWidth = Math.round(_s.currentScale * _s.imageWidth); _s.finalHeight = Math.round(_s.currentScale * _s.imageHeight); _s.dumy_sdo.setWidth(_s.stageWidth); if(_s.useEntireScreen_bl){ _s.dumy_sdo.setHeight(_s.stageHeight); }else{ _s.dumy_sdo.setHeight(_s.stageHeight + _s.controllerHeight); } _s.checkXAndYBouds(); if(centerImage_bl) _s.centerImage(); _s.resizeAndPositionImage(); if(_s.showNavigator_bl){ _s.hideOrShowNavigator(); _s.updateNavigator(false); } _s.positionMarkers(false); clearTimeout(_s.dispDl_to); _s.dispDl_to = setTimeout(function(){ if(_s == null) return; _s.dispatchScrollBarUpdate(false); } , 400); _s.disableOrEnableMoveButtons(); _s.dispatchScrollBarUpdate(false); }; //###############################################// //resize and position small image and large image. //###############################################// _s.resizeAndPositionImage = function(animate){ _s.isTweening_bl = true; FWDAnimation.killTweensOf(_s.smallImage_sdo); clearTimeout(_s.tweenDone_to); if(animate){ if(_s.smallImage_sdo.hasTransform2d_bl){ FWDAnimation.to(_s.smallImage_sdo, .3, {x:_s.finalX, y:_s.finalY, scale:_s.currentScale}); }else{ FWDAnimation.to(_s.smallImage_sdo, .3, {w:_s.finalWidth, h:_s.finalHeight, x:_s.finalX, y:_s.finalY}); } _s.tweenDone_to = setTimeout(_s.tweenDoneHandler, 300); }else{ if(_s.smallImage_sdo.hasTransform2d_bl){ _s.smallImage_sdo.setScale2(_s.currentScale); _s.smallImage_sdo.setX(_s.finalX); _s.smallImage_sdo.setY(_s.finalY); }else{ _s.smallImage_sdo.setX(_s.finalX); _s.smallImage_sdo.setY(_s.finalY); _s.smallImage_sdo.setWidth(_s.finalWidth); _s.smallImage_sdo.setHeight(_s.finalHeight); } _s.isTweening_bl = false; _s.dispatchEvent(FWDMImageManager.IMAGE_ZOOM_COMPLETE); } }; _s.tweenDoneHandler = function(){ _s.isTweening_bl = false; _s.dispatchEvent(FWDMImageManager.IMAGE_ZOOM_COMPLETE); }; //###############################################// /* check x and y position */ //##############################################// _s.checkXAndYBouds = function(){ if(_s.finalWidth <= _s.stageWidth){ _s.finalX = Math.round((_s.stageWidth - _s.finalWidth)/2); }else if(_s.finalWidth > _s.stageWidth + 1){ _s.allowToDragHoriz_bl = true; if(_s.finalX > 0){ _s.finalX = 0; }else if(_s.finalX <= _s.stageWidth - _s.finalWidth + 1){ _s.finalX = _s.stageWidth - _s.finalWidth + 1; } }else{ _s.allowToDragHoriz_bl = false; } if(_s.finalHeight <= _s.stageHeight ){ _s.finalY = Math.round((_s.stageHeight - _s.finalHeight)/2); }else if(_s.finalHeight > _s.stageHeight + 1){ _s.allowToDragVert_bl = true; if(_s.finalY > 0){ _s.finalY = 0; }else if(_s.finalY <= _s.stageHeight - _s.finalHeight){ _s.finalY = _s.stageHeight - _s.finalHeight; } }else{ _s.allowToDragVert_bl = false; } }; //################################################// /* zoom image */ //################################################// _s.zoomImage = function(setPositionAndSize, animate){ if(setPositionAndSize){ _s.finalWidth = Math.round(_s.currentScale * _s.imageWidth); _s.finalHeight = Math.round(_s.currentScale * _s.imageHeight); _s.finalX -= Math.round((_s.mouseX - _s.finalX) * (_s.currentScale - _s.prevScale) / _s.prevScale); _s.finalY -= Math.round((_s.mouseY - _s.finalY) * (_s.currentScale - _s.prevScale) / _s.prevScale); } if(!_s.isControllerActive_bl) _s.dispatchScrollBarUpdate(animate); _s.checkXAndYBouds(); if(_s.showNavigator_bl){ _s.hideOrShowNavigator(); _s.updateNavigator(animate); } _s.positionMarkers(animate); _s.disableOrEnableMoveButtons(); _s.resizeAndPositionImage(animate); _s.prevScale = _s.currentScale; _s.dispatchEvent(FWDM.ZOOM, {scale:_s.currentScale}); }; //###############################################// //Add touch pann support //###############################################// _s.addPannSupport = function(){ if(_s.screen.addEventListener){ _s.dumy_sdo.screen.addEventListener("mousedown", _s.panStartHandler, true); }else if(_s.screen.attachEvent){ _s.dumy_sdo.screen.attachEvent("onmousedown", _s.panStartHandler); } }; _s.panStartHandler = function(e){ if(_s.isTweening_bl || _s.isControllerActive_bl || _s.isTweening_bl) return; if(e.preventDefault) e.preventDefault(); if(_s.finalWidth < _s.stageWidth && _s.finalHeight < _s.stageHeight) return; if(!_s.isMobile_bl || e.pointerType == e.MSPOINTER_TYPE_MOUSE){ if(e.button <= 1) prt.disableAll(); } var viewportMouseCoordinates = FWDMUtils.getViewportMouseCoordinates(e); _s.isDragging_bl = true; _s.xPositionOnPress = _s.smallImage_sdo.getX(); _s.yPositionOnPress = _s.smallImage_sdo.getY(); _s.lastPresedX = viewportMouseCoordinates.screenX; _s.lastPresedY = viewportMouseCoordinates.screenY; _s.hideToolTipWindow(); _s.dispatchEvent(FWDMImageManager.PAN_START); if(window.addEventListener){ window.addEventListener("mousemove", _s.panMoveHandler); window.addEventListener("mouseup", _s.panEndHandler); }else if(document.attachEvent){ document.attachEvent("onmousemove", _s.panMoveHandler); document.attachEvent("onmouseup", _s.panEndHandler); } }; _s.panMoveHandler = function(e){ if(e.preventDefault) e.preventDefault(); if(e.touches && e.touches.length != 1 || _s.isControllerActive_bl || _s.isTweening_bl) return; var viewportMouseCoordinates = FWDMUtils.getViewportMouseCoordinates(e); if(_s.finalWidth > _s.stageWidth + 1){ _s.finalX = Math.round(_s.xPositionOnPress + viewportMouseCoordinates.screenX - _s.lastPresedX); if(_s.finalX > 0){ _s.finalX = 0; }else if(_s.finalX <= _s.stageWidth - _s.finalWidth + 1){ _s.finalX = _s.stageWidth - _s.finalWidth + 1; } _s.smallImage_sdo.setX(_s.finalX); } if(_s.finalHeight > _s.stageHeight + 1){ _s.finalY = Math.round(_s.yPositionOnPress + viewportMouseCoordinates.screenY - _s.lastPresedY); if(_s.finalY > 0){ _s.finalY = 0; }else if(_s.finalY <= _s.stageHeight - _s.finalHeight){ _s.finalY = _s.stageHeight - _s.finalHeight; } _s.smallImage_sdo.setY(_s.finalY); } if(_s.showNavigator_bl){ _s.hideOrShowNavigator(); _s.updateNavigator(false); } _s.positionMarkers(false); }; _s.panEndHandler = function(e){ if(e.preventDefault) e.preventDefault(); _s.isDragging_bl = false; if(!_s.isMobile_bl || e.pointerType == e.MSPOINTER_TYPE_MOUSE) prt.enableAll(); if(window.removeEventListener){ window.removeEventListener("mousemove", _s.panMoveHandler); window.removeEventListener("mouseup", _s.panEndHandler); }else if(document.detachEvent){ document.detachEvent("onmousemove", _s.panMoveHandler); document.detachEvent("onmouseup", _s.panEndHandler); } }; //###############################################// //Add touch pann support //###############################################// _s.addPannSupportForMobile = function(){ if(_s.hasPointerEvent_bl){ _s.screen.addEventListener("MSPointerDown", _s.onTouchStart); }else{ _s.screen.addEventListener("touchstart", _s.onTouchStart); } }; _s.removeZoomDragAndSwipeForMobile = function(){ if(_s.hasPointerEvent_bl){ _s.screen.removeEventListener("MSPointerDown", _s.onTouchStart); window.removeEventListener("MSPointerUp", _s.windowOnTouchEnd); window.removeEventListener("MSPointerMove", _s.windowOnTouchMove); }else{ _s.screen.removeEventListener("touchstart", _s.onTouchStart); window.removeEventListener("touchend", _s.windowOnTouchEnd); window.removeEventListener("touchmove", _s.windowOnTouchMove); } }; _s.onTouchStart = function(e){ if(prt.isFullScreen_bl && e.preventDefault) e.preventDefault(); if(_s.isZooming_bl || (_s.currentScale == _s.smallestPossibleScale && e.touches.length == 1)) return; if(e.preventDefault) e.preventDefault(); clearTimeout(_s.disableOnDragOrSwipeId_to); _s.vx = 0; _s.vy = 0; if(e.touches){ _s.lastMouseX = _s.firstTouchMouseX = e.touches[0].pageX - prt.globalX - prt.scrollOffsets.x; _s.lastMouseY = _s.firstTouchMouseY = e.touches[0].pageY - prt.globalY - prt.scrollOffsets.y; }else{ _s.lastMouseX = _s.firstTouchMouseX = e.pageX - prt.globalX - prt.scrollOffsets.x; _s.lastMouseY = _s.firstTouchMouseY = e.pageY - prt.globalY - prt.scrollOffsets.y; } if(e.touches && e.touches.length == 2){ _s.disableOnDragOrSwipe_bl = true; _s.lastMouseX2 = e.touches[1].pageX - prt.globalX - prt.scrollOffsets.x; _s.lastMouseY2 = e.touches[1].pageY - prt.globalY - prt.scrollOffsets.y; }else if(e.touches && e.touches.length > 2){ return; } if(_s.hasPointerEvent_bl){ window.addEventListener("MSPointerUp", _s.windowOnTouchEnd); window.addEventListener("MSPointerMove", _s.windowOnTouchMove); }else{ window.addEventListener("touchend", _s.windowOnTouchEnd); window.addEventListener("touchmove", _s.windowOnTouchMove); } }; _s.finishPinching_bl = true; _s.windowOnTouchMove = function(e){ //if(_s.isZooming_bl) return; if(e.preventDefault) e.preventDefault(); var lcX; var lcY; var toAddX; var toAddY2; var posX1; var posY1; var posX2; var posY2; var pinchDist; var dx; var dy; var finalPosX; var finalPosY; if(prt.isFullScreen_bl){ prt.globalX = prt.globalY = 0; } if(e.touches){ lcX = e.touches[0].pageX - prt.globalX - prt.scrollOffsets.x; lcY = e.touches[0].pageY - prt.globalY - prt.scrollOffsets.y; }else{ lcX = e.pageX - prt.globalX - prt.scrollOffsets.x; lcY = e.pageY - prt.globalY - prt.scrollOffsets.y; } if(_s.firstTouchMouseX < lcX - 1 || _s.firstTouchMouseX > lcX + 1 || _s.firstTouchMouseY < lcY - 1 || _s.firstTouchMouseY > lcY + 1){ _s.disableOnDragOrSwipe_bl = true; } if(e.touches.length == 2){ _s.finishPinching_b = true; } if(_s.hasPointerEvent_bl){ toAddX = e.pageX - prt.globalX - _s.lastMouseX - prt.scrollOffsets.x; toAddY = e.pageY - prt.globalY - _s.lastMouseY - prt.scrollOffsets.y; _s.lastMouseX = lcX; _s.lastMouseY = lcY; _s.finalX += toAddX; _s.finalY += toAddY; _s.isDragged_bl = true; }else if(e.touches && e.touches.length == 1 && _s.finishPinching_bl){ toAddX = e.touches[0].pageX - prt.globalX - _s.lastMouseX - prt.scrollOffsets.x; toAddY = e.touches[0].pageY - prt.globalY - _s.lastMouseY - prt.scrollOffsets.y; _s.lastMouseX = lcX; _s.lastMouseY = lcY; if(_s.finalWidth > _s.stageWidth + 1){ _s.finalX += toAddX; if(_s.finalX > 0){ _s.finalX = 0; }else if(_s.finalX <= _s.stageWidth - _s.finalWidth + 1){ _s.finalX = _s.stageWidth - _s.finalWidth + 1; } _s.smallImage_sdo.setX(_s.finalX); } if(_s.finalHeight > _s.stageHeight + 1){ _s.finalY += toAddY; if(_s.finalY > 0){ _s.finalY = 0; }else if(_s.finalY <= _s.stageHeight - _s.finalHeight){ _s.finalY = _s.stageHeight - _s.finalHeight; } _s.smallImage_sdo.setY(_s.finalY); } if(_s.finalWidth > _s.stageWidth + 1 || _s.finalHeight > _s.stageHeight + 1){ if(_s.showNavigator_bl){ _s.hideOrShowNavigator(); _s.updateNavigator(false); } _s.positionMarkers(false); } _s.isDragged_bl = true; }else if(e.touches && e.touches.length == 2){ _s.finishPinching_bl = false; posX1 = lcX; posY1 = lcY; posX2 = e.touches[1].pageX - prt.globalX - prt.scrollOffsets.x; posY2 = e.touches[1].pageY - prt.globalY - prt.scrollOffsets.y; _s.mouseX = finalPosX = (posX2 + posX1)/2; _s.mouseY = finalPosY = (posY2 + posY1)/2; dx = posX1 - posX2; dy = posY1 - posY2; pinchDist = Math.sqrt(dx * dx + dy * dy); if(parseInt(_s.pinchDist) != parseInt(pinchDist)){ if(_s.pinchDist > pinchDist){ _s.currentScale -= 0.02; }else{ _s.currentScale += 0.01; } if(parseFloat(_s.currentScale.toFixed(5)) <= parseFloat(_s.smallestPossibleScale.toFixed(5))){ _s.currentScale = _s.smallestPossibleScale; }else if(_s.currentScale > _s.zoomFactor){ _s.currentScale = _s.zoomFactor; } } _s.zoomImage(true, true); _s.pinchDist = pinchDist; } }; _s.windowOnTouchEnd = function(e){ if(e.preventDefault) e.preventDefault(); if(_s.hasPointerEvent_bl){ window.removeEventListener("MSPointerUp", _s.windowOnTouchEnd); window.removeEventListener("MSPointerMove", _s.windowOnTouchMove); clearTimeout(_s.disableOnDragOrSwipeId_to); _s.disableOnDragOrSwipeId_to = setTimeout(function(){ _s.disableOnDragOrSwipe_bl = false; _s.finishPinching_bl = true; }, 200); }else{ if(e.touches.length == 0){ clearTimeout(_s.disableOnDragOrSwipeId_to); _s.disableOnDragOrSwipeId_to = setTimeout(function(){ _s.disableOnDragOrSwipe_bl = false; _s.finishPinching_bl = true; }, 200); window.removeEventListener("touchend", _s.windowOnTouchEnd); window.removeEventListener("touchmove", _s.windowOnTouchMove); } } _s.isDragged_bl = false; }; //###############################################// //Add mousewheel support. //###############################################// _s.addMouseWheelSupport = function(){ if(window.addEventListener){ _s.dumy_sdo.screen.addEventListener ("mousewheel", _s.mouseWheelHandler); _s.dumy_sdo.screen.addEventListener('DOMMouseScroll', _s.mouseWheelHandler); }else if(document.attachEvent){ _s.dumy_sdo.screen.attachEvent("onmousewheel", _s.mouseWheelHandler); } }; _s.mouseWheelHandler = function(e){ if(e.preventDefault) e.preventDefault(); if(_s.isDragging_bl || _s.isControllerActive_bl) return; var viewportMouseCoordinates = FWDMUtils.getViewportMouseCoordinates(e); if(_s.hider) _s.hider.reset(); _s.mouseX = viewportMouseCoordinates.screenX - _s.getGlobalX(); _s.mouseY = viewportMouseCoordinates.screenY - _s.getGlobalY(); var dir = e.detail || e.wheelDelta; if(e.wheelDelta) dir *= -1; if(dir > 0){ if(_s.currentScale == _s.smallestPossibleScale) return; _s.currentScale -= _s.zoomSpeed; if(parseFloat(_s.currentScale.toFixed(5)) <= parseFloat(_s.smallestPossibleScale.toFixed(5))) _s.currentScale = _s.smallestPossibleScale; }else if(dir < 0){ if(_s.currentScale == _s.zoomFactor) return; _s.currentScale += _s.zoomSpeed; if(_s.currentScale > _s.zoomFactor) _s.currentScale = _s.zoomFactor; } _s.zoomImage(true, true); if(e.preventDefault){ e.preventDefault(); }else{ return false; } }; //########################################// /* add double click and tap support */ //########################################// _s.addDoubleClickSupport = function(){ if(_s.isMobile_bl){ _s.dumy_sdo.screen.addEventListener("touchstart", _s.onFirstDown); }else{ _s.dumy_sdo.screen.addEventListener("mousedown", _s.onFirstDown); } }; _s.onFirstDown = function(e){ var viewportMouseCoordinates = FWDMUtils.getViewportMouseCoordinates(e); _s.firstTapX = viewportMouseCoordinates.screenX; _s.firstTapY = viewportMouseCoordinates.screenY; if(_s.isMobile_bl){ clearTimeout(_s.secondTapId_to); _s.secondTapId_to = setTimeout(_s.doubleTapExpired, 200); _s.dumy_sdo.screen.addEventListener("touchstart", _s.onSecondDown); _s.dumy_sdo.screen.removeEventListener("touchstart", _s.onFirstDown); }else{ clearTimeout(_s.secondTapId_to); _s.secondTapId_to = setTimeout(_s.doubleTapExpired, 200); _s.dumy_sdo.screen.addEventListener("mousedown", _s.onSecondDown); _s.dumy_sdo.screen.removeEventListener("mousedown", _s.onFirstDown); } }; _s.doubleTapExpired = function(){ clearTimeout(_s.secondTapId_to); if(_s.isMobile_bl){ _s.dumy_sdo.screen.removeEventListener("touchstart", _s.onSecondDown); _s.dumy_sdo.screen.addEventListener("touchstart", _s.onFirstDown); }else{ _s.dumy_sdo.screen.removeEventListener("mousedown", _s.onSecondDown); _s.dumy_sdo.screen.addEventListener("mousedown", _s.onFirstDown); } }; _s.onSecondDown = function(e){ var viewportMouseCoordinates = FWDMUtils.getViewportMouseCoordinates(e); var dx; var dy; if(e.touches && e.touches.length != 1) return; if(_s.currentScale == _s.zoomFactor || _s.doubleClickZoomFactor < _s.currentScale) return; dx = Math.abs(viewportMouseCoordinates.screenX - _s.firstTapX); dy = Math.abs(viewportMouseCoordinates.screenY - _s.firstTapY); if(_s.isMobile_bl && (dx > 10 || dy > 10)){ return; }else if(!_s.isMobile_bl && (dx > 2 || dy > 2)){ return } if(_s.isMobile_bl) _s.smallImage_sdo.screen.removeEventListener("touchstart", _s.onSecondDown); _s.mouseX = viewportMouseCoordinates.screenX - _s.getGlobalX(); _s.mouseY = viewportMouseCoordinates.screenY - _s.getGlobalY(); _s.currentScale = _s.zoomFactor; _s.zoomImage(true, true); _s.mouseX = _s.stageWidth/2; _s.mouseY = _s.stageHeight/2; }; //###########################################// /* Setup markers */ //###########################################// _s.setupMarkers = function(){ var marker; var objData; var id = 0; _s.totalMarkers = _s.markersList_ar.length; for(var i=0; i<_s.totalMarkers; i++){ objData = _s.markersList_ar[i]; id = i; FWDMMarker.setPrototype(); marker = new FWDMMarker(i+1, objData.normalStatePath_str, objData.selectedStatePath_str, objData.type, objData.regPoint, objData.toolTipLabel, i, objData.markerX, objData.markerY, objData.markerWidth, objData.markerHeight, objData.showAfterScale, objData.toolTipOffsetX, objData.hasContent_bl, _d.useVectorIcons); marker.addListener(FWDMMarker.MOUSE_OVER, _s.markerOnMouseOverHandler); marker.addListener(FWDMMarker.MOUSE_OUT, _s.markerOnMouseOutHandler); marker.addListener(FWDMMarker.MOUSE_DOWN, _s.markerOnStartHandler); if(objData.type == "tooltip" || objData.type == "tooltip-plus" || objData.type == "tooltip-play"){ marker.toolTipId = id; marker.innerHTML_str = objData.innerHTML; marker.toolTipWindowMaxWidth = objData.maxWidth; }else if(objData.type == "infowindow"){ marker.innerHTML_str = objData.innerHTML; }else if(objData.type == "link"){ marker.link_str = objData.link; marker.target_str = objData.target; } _s.markers_ar.push(marker); _s.addChild(marker); } }; _s.markerOnMouseOverHandler = function(e){ var marker = e.target; if(marker.hasToolTip_bl){ _s.showMarkerToolTip(marker, marker.toolTipLabel_str); }; if(marker.type_str == "tooltip" || marker.type_str == "tooltip-plus" || marker.type_str == "tooltip-play"){ if(_s.lastMarkerId_str != marker.markerId) _s.hideToolTipWindow(); _s.lastMarkerId_str = marker.markerId; _s.curMarker_do = marker; clearTimeout(_s.hideToolTipWindowId_to); _s.showToolTipWindow(marker, marker.innerHTML_str, marker.toolTipWindowMaxWidth); } }; _s.markerOnMouseOutHandler = function(e){ var marker = e.target; if(marker.hasToolTip_bl){ if(_s.markersToolTip_do){ if(_s.contains(_s.markersToolTip_do)) _s.removeChild(_s.markersToolTip_do); _s.markersToolTip_do.hide(); } }; if(marker.type_str == "tooltip" || marker.type_str == "tooltip-plus" || marker.type_str == "tooltip-play"){ _s.toolTipWindowAddEventsToSetGlobalXAndGlobalY(); clearTimeout(_s.hideToolTipWindowId_to); _s.hideToolTipWindowId_to = setTimeout(_s.hideToolTipWindowWithDelay, 300); } }; _s.markerOnStartHandler = function(e){ var marker = e.target; if(marker.type_str == "infowindow"){ _s.dispatchEvent(FWDMImageManager.SHOW_INFO, {text:marker.innerHTML_str}); }else if(marker.type_str == "tooltip" || marker.type_str == "tooltip-plus" || marker.type_str == "tooltip-play"){ if(_s.lastMarkerId_str != marker.markerId) _s.hideToolTipWindow(); _s.curMarker_do = marker; _s.lastMarkerId_str = marker.markerId; _s.toolTipWindowAddEventsToSetGlobalXAndGlobalY(); _s.showToolTipWindow(marker, marker.innerHTML_str, marker.toolTipWindowMaxWidth); } }; //show markers firs time _s.showMarkersFirstTime = function(){ //_s.showMarkersFirstTimeId_to = setTimeout(function(){ _s.showMarkersFirstTimeDone_bl = true; _s.positionMarkers(); //}, 50); }; //position markers. _s.positionMarkers = function(animate){ var marker; for(var i=0; i< _s.totalMarkers; i++){ marker = _s.markers_ar[i]; marker.finalX = _s.finalX + marker.offsetX + parseInt(marker.originalX * _s.currentScale); marker.finalY = _s.finalY + marker.offsetY + parseInt(marker.originalY * _s.currentScale); if(marker.showAfterScale <= _s.currentScale){ if(_s.showMarkersFirstTimeDone_bl) marker.show(); }else{ marker.hide(); } if(marker.isShowed_bl){ if(animate){ FWDAnimation.killTweensOf(marker); FWDAnimation.to(marker, .3, {x:marker.finalX, y:marker.finalY}); }else{ FWDAnimation.killTweensOf(marker); marker.setX(marker.finalX); marker.setY(marker.finalY); } } } }; _s.hideMarkers = function(){ var marker; for(var i=0; i< _s.totalMarkers; i++){ marker = _s.markers_ar[i]; marker.isHiddenFinal_bl = true; marker.hide(); } }; _s.showMarkers = function(){ var marker; for(var i=0; i< _s.totalMarkers; i++){ marker = _s.markers_ar[i]; marker.isHiddenFinal_bl = false; if(marker.showAfterScale <= _s.currentScale) marker.show(); } }; //###########################################// /* Setup markers tooltip */ //###########################################// _s.setupMarkersToolTip = function(){ FWDMMarkerToolTip.setPrototype(); _s.markersToolTip_do = new FWDMMarkerToolTip( _s, _s.buttonToolTipTopPointer_str, _s.buttonToolTipBottomPointer_str); _s.markersToolTip_do.screen.style.zIndex = 999999999; }; //###########################################// /* Setup markers tooltip window*/ //###########################################// _s.setupMarkersToolTipWindow = function(){ FWDMMarkerWindowToolTip.setPrototype(); _s.markersToolTipWindow_do = new FWDMMarkerWindowToolTip( _s, _s.buttonToolTipTopPointer_str, _s.buttonToolTipBottomPointer_str); _s.markersToolTipWindow_do.screen.style.zIndex = 999999999; document.documentElement.appendChild(_s.markersToolTipWindow_do.screen); }; //######################################################// /* show tool tip */ //######################################################// _s.showMarkerToolTip = function(marker, label){ var finalX; var finalY; var globalX = _s.getX(); var pointerOffsetX = 0; var pointerPostion; //_s.addChild(_s.markersToolTip_do); document.documentElement.appendChild(_s.markersToolTip_do.screen); _s.markersToolTip_do.setLabel(label); _s.markersToolTip_do.show(); clearTimeout(_s.showMarkerToolTipId_to); _s.showMarkerToolTipId_to = setTimeout(function(){ if(!_s.markersToolTip_do.isShowed_bl) return; finalY = marker.finalY - _s.markersToolTip_do.totalHeight - _s.markerToolTipOffsetY + _s.getGlobalY() + prt.scrollOffsets.y; if(finalY - prt.scrollOffsets.y < 0){ finalY = marker.finalY + marker.height + _s.markerToolTipOffsetY + _s.getGlobalY() + prt.scrollOffsets.y + _s.markersToolTip_do.pointerHeight; _s.markersToolTip_do.pointerUp_sdo.setVisible(true); _s.markersToolTip_do.pointerDown_sdo.setVisible(false); pointerPostion = FWDMMarkerWindowToolTip.POINTER_UP; }else{ _s.markersToolTip_do.pointerUp_sdo.setVisible(false); _s.markersToolTip_do.pointerDown_sdo.setVisible(true); pointerPostion = FWDMMarkerWindowToolTip.POINTER_DOWN; } finalX = parseInt(marker.finalX + (marker.width - _s.markersToolTip_do.totalWidth)/2) + _s.getGlobalX() + prt.scrollOffsets.x + marker.toolTipOffsetX; if(finalX < 0){ pointerOffsetX = finalX; finalX = 0; }else if(finalX + _s.markersToolTip_do.totalWidth > prt.ws.w){ pointerOffsetX = -(prt.ws.w - finalX - _s.markersToolTip_do.totalWidth); finalX = prt.ws.w - _s.markersToolTip_do.totalWidth; } _s.markersToolTip_do.setX(finalX); _s.markersToolTip_do.setY(finalY); _s.markersToolTip_do.positionPointer(pointerOffsetX - marker.toolTipOffsetX, pointerPostion); }, 80); }; //######################################################// /* show tool tip window */ //######################################################// _s.showToolTipWindow = function(marker, label, maxWidth){ if(_s.markersToolTipWindow_do.toolTipWindowId == marker.toolTipWindowId) return; _s.marker = marker; var finalX; var finalY; var globalX = _s.getX(); var pointerOffsetX = 0; var pointerPostion; _s.markersToolTipWindow_do.setLabel(label, maxWidth); _s.markersToolTipWindow_do.toolTipWindowId = marker.toolTipWindowId; clearTimeout(_s.showToolTipWindoId_to); _s.showToolTipWindoId_to = setTimeout(function(){ finalY = marker.finalY - _s.markersToolTipWindow_do.totalHeight - _s.markerToolTipOffsetY + _s.getGlobalY() + prt.scrollOffsets.y; if(finalY - prt.scrollOffsets.y < 0){ finalY = marker.finalY + marker.height + _s.markerToolTipOffsetY + _s.getGlobalY() + prt.scrollOffsets.y + _s.markersToolTipWindow_do.pointerHeight; _s.markersToolTipWindow_do.pointerUp_sdo.setVisible(true); _s.markersToolTipWindow_do.pointerDown_sdo.setVisible(false); pointerPostion = FWDMMarkerWindowToolTip.POINTER_UP; }else{ _s.markersToolTipWindow_do.pointerUp_sdo.setVisible(false); _s.markersToolTipWindow_do.pointerDown_sdo.setVisible(true); pointerPostion = FWDMMarkerWindowToolTip.POINTER_DOWN; } finalX = parseInt(marker.finalX + (marker.width - _s.markersToolTipWindow_do.totalWidth)/2) + _s.getGlobalX() + prt.scrollOffsets.x + marker.toolTipOffsetX; if(finalX < 0){ pointerOffsetX = finalX; finalX = 0; }else if(finalX + _s.markersToolTipWindow_do.totalWidth > prt.ws.w){ pointerOffsetX = -(prt.ws.w - finalX - _s.markersToolTipWindow_do.totalWidth); finalX = prt.ws.w - _s.markersToolTipWindow_do.totalWidth; } _s.markersToolTipWindow_do.show(); _s.markersToolTipWindow_do.setX(Math.round(finalX)); _s.markersToolTipWindow_do.setY(Math.round(finalY)); _s.markersToolTipWindow_do.positionPointer(pointerOffsetX - marker.toolTipOffsetX, pointerPostion); }, 80); }; //######################################################// /* hide tool tip window */ //######################################################// _s.toolTipWindowAddEventsToSetGlobalXAndGlobalY = function(){ if(_s.isMobile_bl){ _s.addHideToolTipWindowTestWithDelayId_to = setTimeout(function(){ if(_s.hasPointerEvent_bl){ window.addEventListener("MSPointerDown", _s.hideToolTipWindowTest); window.addEventListener("MSPointerMove", _s.hideToolTipWindowTest); }else{ window.addEventListener("touchstart", _s.hideToolTipWindowTest); } }, 50); }else{ if(window.addEventListener){ window.addEventListener("mousemove", _s.hideToolTipWindowTest); }else if(document.attachEvent){ document.attachEvent("onmousemove", _s.hideToolTipWindowTest); } } }; _s.hideToolTipWindowTest = function(e){ var viewportMouseCoordinates = FWDMUtils.getViewportMouseCoordinates(e); _s.globalX = viewportMouseCoordinates.screenX; _s.globalY = viewportMouseCoordinates.screenY; if(e.touches || e.pointerType != e.MSPOINTER_TYPE_MOUSE) _s.hideToolTipWindowWithDelay(); }; _s.hideToolTipWindowWithDelay = function(addDelay){ if(!FWDMUtils.hitTest(_s.markersToolTipWindow_do.screen, _s.globalX, _s.globalY) && !FWDMUtils.hitTest(_s.curMarker_do.screen, _s.globalX, _s.globalY) ){ _s.hideToolTipWindow(); if(_s.isMobile_bl){ clearTimeout(_s.addHideToolTipWindowTestWithDelayId_to); if(_s.hasPointerEvent_bl){ window.removeEventListener("MSPointerDown", _s.hideToolTipWindowTest); window.removeEventListener("MSPointerMove", _s.hideToolTipWindowTest); }else{ window.removeEventListener("touchstart", _s.hideToolTipWindowTest); } }else{ if(window.removeEventListener){ window.removeEventListener("mousemove", _s.hideToolTipWindowTest); }else if(document.detachEvent){ document.detachEvent("onmousemove", _s.hideToolTipWindowTest); } } }else{ _s.hideToolTipWindowId_to = setTimeout(_s.hideToolTipWindowWithDelay, 300); } }; _s.hideToolTipWindow = function(){ if(!_s.markersToolTipWindow_do) return; clearTimeout(_s.hideToolTipWindowId_to); _s.markersToolTipWindow_do.hide(); if(_s.marker) _s.marker.setNormalState(); _s.markersToolTipWindow_do.toolTipWindowId = "none"; }; //####################################// /* markers info */ //####################################// _s.setupMarkersInfo = function(){ if(window.addEventListener){ window.addEventListener("mousemove", _s.showMarkersInfoPosition); window.addEventListener ("mousewheel", _s.showMarkersInfoPosition); window.addEventListener('DOMMouseScroll', _s.showMarkersInfoPosition); }else if(document.attachEvent){ document.attachEvent("onmousemove", _s.showMarkersInfoPosition); document.attachEvent("onmousewheel", _s.showMarkersInfoPosition); } _s.markersPositionInfo_sdo = new FWDMSimpleDisplayObject("div"); _s.markersPositionInfo_sdo.setDisplay("inline-block"); _s.markersPositionInfo_sdo.getStyle().fontSmoothing = "antialiased"; _s.markersPositionInfo_sdo.getStyle().webkitFontSmoothing = "antialiased"; _s.markersPositionInfo_sdo.getStyle().textRendering = "optimizeLegibility"; _s.markersPositionInfo_sdo.getStyle().padding = "6px"; _s.markersPositionInfo_sdo.getStyle().fontFamily = "Arial"; _s.markersPositionInfo_sdo.getStyle().fontSize= "12px"; _s.markersPositionInfo_sdo.getStyle().color = "#000000"; _s.markersPositionInfo_sdo.setBkColor("#FFFFFF"); _s.addChild(_s.markersPositionInfo_sdo); }; _s.showMarkersInfoPosition = function(e){ var viewportMouseCoordinates = FWDMUtils.getViewportMouseCoordinates(e); var globalX = _s.getGlobalX(); var globalY = _s.getGlobalY(); var localX = viewportMouseCoordinates.screenX - globalX; var localY = viewportMouseCoordinates.screenY - globalY; var finalX = Math.round((localX - _s.finalX) * (1/_s.currentScale)) + 1; var finalY = Math.round((localY - _s.finalY) * (1/_s.currentScale)) + 1; var infoFinalX = localX + 10; var infoFinalY = localY + 10; _s.markersPositionInfo_sdo.setInnerHTML( "Left: " + finalX + "
Top:" + finalY + "
Zoom factor:" + parseFloat(_s.currentScale).toFixed(2)); var infoWidth = _s.markersPositionInfo_sdo.getWidth(); var infoHeight = _s.markersPositionInfo_sdo.getHeight(); if(infoFinalX + infoWidth > _s.stageWidth){ infoFinalX = infoFinalX - infoWidth - 10; } if(infoFinalY + infoHeight > _s.stageHeight){ infoFinalY = infoFinalY - infoHeight - 10; } _s.markersPositionInfo_sdo.setX(infoFinalX); _s.markersPositionInfo_sdo.setY(infoFinalY); }; //##################################// //various methods. //##################################// _s.setDraggingMode = function(draggingMode){ _s.draggingMode_str = draggingMode; }; _s.disableOrEnablePanOrTouch = function(bool){ _s.isControllerActive_bl = bool; }; _s.panWithButtons = function(dir){ if(dir == "left"){ _s.finalX -= _s.panSpeed * _s.panDirectionSign; }else if(dir == "right"){ _s.finalX += _s.panSpeed * _s.panDirectionSign; }else if(dir == "down"){ _s.finalY += _s.panSpeed * _s.panDirectionSign; }else if(dir == "up"){ _s.finalY -= _s.panSpeed * _s.panDirectionSign; } _s.checkXAndYBouds(); _s.resizeAndPositionImage(); _s.positionMarkers(false); _s.updateNavigator(); }; _s.zoomInOrOutWithScrollBar = function(percent){ _s.currentScale = percent * (_s.zoomFactor - _s.smallestPossibleScale) + _s.smallestPossibleScale; _s.mouseX = _s.stageWidth/2; _s.mouseY = _s.stageHeight/2; _s.zoomImage(true, true); }; _s.dispatchScrollBarUpdate = function(animate){ if(_s.currentScale < _s.zoomFactor){ _s.dispatchEvent(FWDMImageManager.SCROLL_BAR_UPDATE, {percent:(_s.currentScale - _s.smallestPossibleScale)/(_s.zoomFactor - _s.smallestPossibleScale), animate:animate}); }else{ _s.dispatchEvent(FWDMImageManager.SCROLL_BAR_UPDATE, {percent:1, animate:animate}); } }; _s.zoomInOrOutWithButtons = function(dir, withPause){ _s.mouseX = _s.stageWidth/2; _s.mouseY = _s.stageHeight/2; if(dir > 0){ //if(_s.currentScale == _s.zoomFactor) return; if(withPause){ _s.currentScale += _s.zoomSpeed; }else{ _s.currentScale += _s.zoomSpeed/15; } if(_s.currentScale > _s.zoomFactor) _s.currentScale = _s.zoomFactor; }else if(dir < 0){ //if(_s.finalWidth <= _s.stageWidth) return; if(withPause){ _s.currentScale -= _s.zoomSpeed; }else{ _s.currentScale -= _s.zoomSpeed/15; } if(parseFloat(_s.currentScale.toFixed(5)) <= parseFloat(_s.smallestPossibleScale.toFixed(5))) _s.currentScale = _s.smallestPossibleScale; } _s.dispatchScrollBarUpdate(true, true); _s.zoomImage(true, true); }; _s.centerImage = function(){ _s.mouseX = _s.stageWidth/2; _s.mouseY = _s.stageHeight/2; _s.finalX = Math.round((_s.stageWidth - _s.finalWidth)/2); _s.finalY = Math.round((_s.stageHeight - _s.finalHeight)/2); }; //############################################// /* navigator utils */ //############################################// _s.updateNavigator = function(animate){ if(!_s.isNavigatorShowed_bl) return; _s.dispatchEvent(FWDMImageManager.UPDATE_NAVIGATOR, { percentX:Math.abs(_s.finalX/(_s.finalWidth - _s.stageWidth)), percentY:Math.abs(_s.finalY/(_s.finalHeight - _s.stageHeight)), percentWidth:_s.stageWidth/_s.finalWidth, percentHeight:_s.stageHeight/_s.finalHeight, animate:animate }); }; _s.hideOrShowNavigator = function(){ if(_s.stageWidth < _s.finalWidth || _s.stageHeight < _s.finalHeight){ _s.isNavigatorShowed_bl = true; _s.dispatchEvent(FWDMImageManager.SHOW_NAVIGATOR); }else{ _s.isNavigatorShowed_bl = false; _s.dispatchEvent(FWDMImageManager.HIDE_NAVIGATOR); } }; _s.updateOnNavigatorPan = function(percentX, percentY){ _s.finalX = parseInt(percentX * (_s.stageWidth - _s.finalWidth)); _s.finalY = parseInt(percentY * (_s.stageHeight - _s.finalHeight)); _s.positionMarkers(true); _s.resizeAndPositionImage(true); }; _s.disableOrEnableMoveButtons = function(){ if(_s.stageHeight < _s.finalHeight){ if(!_s.areUpAndDownButtonsDisabled_bl ){ _s.dispatchEvent(FWDMImageManager.ENABLE_UP_AND_DOWN_BUTTONS); _s.areUpAndDownButtonsDisabled_bl = true; } }else{ if(_s.areUpAndDownButtonsDisabled_bl){ _s.dispatchEvent(FWDMImageManager.DISABLE_UP_AND_DOWN_BUTTONS); _s.areUpAndDownButtonsDisabled_bl = false; } } if(_s.stageWidth < _s.finalWidth){ if(!_s.areLeftAndRightButtonsDisabled_bl){ _s.dispatchEvent(FWDMImageManager.ENABLE_LEFT_AND_RIGHT_BUTTONS); _s.areLeftAndRightButtonsDisabled_bl = true; } }else{ if(_s.areLeftAndRightButtonsDisabled_bl){ _s.dispatchEvent(FWDMImageManager.DISABLE_LEFT_AND_RIGHT_BUTTONS); _s.areLeftAndRightButtonsDisabled_bl = false; } } }; //#################################// //Clean main events. //#################################// _s.cleanMainEvents = function(){ if(_s.isMobile_bl){ _s.dumy_sdo.screen.removeEventListener("touchstart", _s.panStartHandler); _s.dumy_sdo.screen.removeEventListener("MSPointerDown", _s.panStartHandler); window.removeEventListener("touchmove", _s.panMoveHandler); window.removeEventListener("touchend", _s.panEndHandler); window.removeEventListener("MSPointerMove", _s.panMoveHandler); window.removeEventListener("MSPointerUp", _s.panEndHandler); window.removeEventListener("touchstart", _s.hideToolTipWindowTest); window.removeEventListener("MSPointerDown", _s.hideToolTipWindowTest); window.removeEventListener("MSPointerMove", _s.hideToolTipWindowTest); _s.dumy_sdo.screen.removeEventListener('gesturestart', _s.gestureStartHandler); _s.dumy_sdo.screen.removeEventListener('gesturechange', _s.gestureChangeHandler); _s.dumy_sdo.screen.removeEventListener("touchstart", _s.onSecondDown); _s.dumy_sdo.screen.removeEventListener("touchstart", _s.onFirstDown); }else{ if(window.removeEventListener){ _s.dumy_sdo.screen.removeEventListener("mousedown", _s.panStartHandler); window.removeEventListener("mousemove", _s.panMoveHandler); window.removeEventListener("mouseup", _s.panEndHandler); _s.dumy_sdo.screen.removeEventListener ("mousewheel", _s.mouseWheelHandler); _s.dumy_sdo.screen.removeEventListener('DOMMouseScroll', _s.mouseWheelHandler); window.removeEventListener("mousemove", _s.hideToolTipWindowTest); window.removeEventListener("mousemove", _s.showMarkersInfoPosition); window.removeEventListener ("mousewheel", _s.showMarkersInfoPosition); window.removeEventListener('DOMMouseScroll', _s.showMarkersInfoPosition); _s.dumy_sdo.screen.removeEventListener("mousedown", _s.onSecondDown); _s.dumy_sdo.screen.removeEventListener("mousedown", _s.onFirstDown); }else if(document.detachEvent){ document.detachEvent("onmousemove", _s.panMoveHandler); document.detachEvent("onmouseup", _s.panEndHandler); _s.dumy_sdo.screen.detachEvent("onmousedown", _s.panStartHandler); _s.dumy_sdo.screen.detachEvent("onmousewheel", _s.mouseWheelHandler); document.detachEvent("onmousemove", _s.hideToolTipWindowTest); document.detachEvent("onmousemove", _s.showMarkersInfoPosition); document.detachEvent("onmousewheel", _s.showMarkersInfoPosition); } } clearTimeout(_s.dispDl_to); clearTimeout(_s.tweenDone_to); clearTimeout(_s.removeSmallSDOId_to); clearTimeout(_s.setAlphaWithDelayId_to); clearTimeout(_s.hideToolTipWindowId_to); clearTimeout(_s.addHideToolTipWindowTestWithDelayId_to); clearTimeout(_s.showToolTipWindoId_to); clearTimeout(_s.showMarkerToolTipId_to); clearTimeout(_s.setupMarkersAndToolTipWindowsId_to); clearTimeout(_s.secondTapId_to); clearTimeout(_s.enableMarkersId_to); clearTimeout(_s.showMarkersFirstTimeId_to); }; //#################################// /* destroy */ //################################// _s.destroy = function(){ _s.cleanMainEvents(); FWDAnimation.killTweensOf(_s); if(_s.smallImage_sdo){ FWDAnimation.killTweensOf(_s.smallImage_sdo); _s.smallImage_sdo.destroy(); } _s.removeZoomDragAndSwipeForMobile(); if(_s.showMarkers_bl){ var marker; var toolTipWindow; for(var i=0; i<_s.totalMarkers; i++){ marker = _s.markers_ar[i]; FWDAnimation.killTweensOf(marker); marker.destroy(); } if(_s.markersToolTip_do) _s.markersToolTip_do.destroy(); for(var i =0; i < _s.totalToolTipsWindows; i++){ toolTipWindow = _s.toolTipWindows_ar[i]; if(toolTipWindow) toolTipWindow.destroy(); } } _s.dumy_sdo.screen.style.cursor = "default"; _s.dumy_sdo.destroy(); if(_s.markersPositionInfo_sdo){ _s.markersPositionInfo_sdo.setInnerHTML(""); _s.markersPositionInfo_sdo.destroy(); } _d = null; prt = null; _s.toolTipDataWindows_ar = null; _s.markersList_ar = null; _s.markersPosition_ar = null; _s.largeImagesPaths_ar = null; _s.hider = null; _s.curMarker_do = null; _s.dumy_sdo = null; _s.smallImage_sdo = null; _s.markersPositionInfo_sdo = null; _s.handMovePath_str = null; _s.handGrabPath_str = null; _s.backgroundColor_str = null; _s.draggingMode_str = null; _s.setInnerHTML(""); prototype.destroy(); _s = null; prototype = null; FWDMImageManager.prototype = null; }; _s.init(); }; /* set prototype */ FWDMImageManager.setPrototype = function(){ FWDMImageManager.prototype = new FWDMDisplayObject("div"); }; FWDMImageManager.LARGE_IMAGE_LOAD_ERROR = "largeImageLoadError"; FWDMImageManager.IMAGE_ZOOM_COMPLETE = "zoomComplete"; FWDMImageManager.SCROLL_BAR_UPDATE = "scrollBarUpdate"; FWDMImageManager.PAN_START = "panStart"; FWDMImageManager.PAN = "pan"; FWDMImageManager.UPDATE_NAVIGATOR = "updateNavigator"; FWDMImageManager.SHOW_NAVIGATOR = "showNavigator"; FWDMImageManager.HIDE_NAVIGATOR = "hideNavigator"; FWDMImageManager.SHOW_INFO = "showInfo"; FWDMImageManager.DISABLE_LEFT_AND_RIGHT_BUTTONS = "disableLeftAndRightButtons"; FWDMImageManager.ENABLE_LEFT_AND_RIGHT_BUTTONS = "enableLeftAndRightButtons"; FWDMImageManager.DISABLE_UP_AND_DOWN_BUTTONS = "disableUpAndDownButtons"; FWDMImageManager.ENABLE_UP_AND_DOWN_BUTTONS = "enableUpAndDownButtons"; FWDMImageManager.prototype = null; window.FWDMImageManager = FWDMImageManager; }(window));