{"version":3,"sources":["../js/Common.js"],"names":["eAnnotationHandleTypes","DragRect","DeleteButton","LeftResize","RightResize","TopResize","BottomResize","CreateNewAnnotation","sortAlphabetical","a","b","DocumentName","toLowerCase","sortAnnotationCoords","returnXMin","returnXMax","returnYMin","returnYMax","eApproverType","Individual","Group","Hidden","eApproverStatus","Pending","Approved","ApprovedChanges","Rejected","eApprovalStatus","AwaitingMyReview","eCompareMode","NoCompare","Blink","Overlay","SliderHorizontal","SliderVertical","SideBySide","SideBySideDiff","DifferencesOnly","eDocumentTypes","PDF","Image","ThreeD","Office","SVG","AnnotationAttachment","AI","CopyMagic","eRetrievalSource","ApprovalId","DocumentPageId","DocumentId","eCanvasType","Artwork","Annotation","eMessageType","Success","Error","eAnnotationDivType","Popup","ListItem","eAnnotationTypes","Postit","Freedraw","Rectangle","Ellipse","Line","Global","TextMeasurement","PointToPointMeasurement","AreaMeasurement","HorizontalCalliperMeasurement","VerticalCalliperMeasurement","ColourDensityMeasurement","BarcodeMeasurement","ColourDensityMeasurementPostit","SVGRectangle","SVGEllipse","SVGPolygon","TextHighlight","TextClassification","eAnnotationColours","blue","red","green","orange","purple","cyan","magenta","yellow","grey","eAnnotationStatuses","Initial","Query","ToDo","eAnnotationStatusUpdateType","addStatus","deleteStatus","updateStatus","eFieldTypes","AnnotationMainHeader","ReplyHeader","StatusHeader","DifferenceHeader","eKeyboardShorcutBehaviours","ZoomIn","ZoomOut","ZoomReset","Pan","PanTextCompare","eWheelZoomType","Static","Centered","Smart","eZoomSpeed","Slow","Medium","Fast","eZoomIncrements","Smallest","Small","Large","Largest","eAlignmentType","OnRequest","Always","eHighlightType","LeftToRight","RightToLeft","eSVGNodeType","None","PointText","AreaText","PathText","eSVGBoundingElementType","Polygon","eReviewType","ReadOnly","Approver","Sheriff","events","g_oActiveBubbles","g_iActiveBubbleId","g_iBubbleCloseSeconds","ActiveBubble","id","type","displayTop","autoClose","this","displayDate","Date","addDomElement","src","className","title","clickFunction","destination","dataAttribute","dataAttributeValue","element","createDomElement","appendChild","prependDomElement","prepend","document","createElement","length","onclick","setAttribute","addPlaceholderToTextbox","input","placeholderText","$","val","on","e","value","changeCanvasFunction","eventType","functionToBind","undefined","clearCanvasBindings","clearElementBindings","bindFunctionToElement","off","g_oViewer","g_oArtworkViewer","g_oDoc","documentType","oAnnotationCanvas","getCanvas","target","oArtworkCanvas","getLinkedArtworkCanvas","g_oAnnotations","findAnnotation","AnnotationAction","prototype","mouseMove","mouseMoveLite","handleClick","g_oTextCompare","g_bTextCompareInProgress","findThreeDAnnotations","documentDisplaysAsPDF","documentDisplaysAsSVG","documentHasSeparations","documentPages","MeasurementInMM","num","g_oSettings","g_oUserSettings","UseMetricUnits","Number","DelimitNum","decimalPoints","i","toFixed","GetElementId","scrollElement","time","stop","animate","scrollTop","AscendingOrder","clearHighlightSelectedButton","elem","removeClass","convertUTCDateToLocal","utcDate","moment","utc","local","format","debounce","func","wait","immediate","timeout","context","args","arguments","callNow","clearTimeout","setTimeout","apply","deepCopyArray","oldArray","jQuery","extend","deepCopyObject","oldObject","displayErrorContentHTML","errors","szHTML","Array","isArray","errorDescription","displayErrorResultHTML","errorMessage","formatDate","oDateElements","isNothing","c_szDateFormat","split","szDate","toUpperCase","substring","generateGuid","s4","Math","floor","random","toString","getClientHeight","window","height","getClientWidth","width","getScrollAmountY","highlightSelectedButton","removeCurrentHighlight","removeExistingHighlights","addClass","highlightButtonClearingAllIcons","string","isNumeric","required","szTxt","iLen","aChar","notSelector","not","c_bFindSVGText","slideToggle","resizeViewerCell","iWidth","iHeight","css","calculateSlideOutDivSize","slideDiv","leftMenu","toggle","iCanvasWidth","iCanvasHeight","divWidth","children","g_oCompare","g_bAlignmentModeActive","iLeftPos","parseInt","iTargetLeftPos","bSlideOut","bRotate","LeftMenuCollapse","RightMenuCollapse","iAnimateLeft","show","left","hide","resizeSeparationListItems","reziseChecklistItems","resizeAnnotationListItems","isEmptyObject","getAnnotationCanvasId","redraw","iAnnotationsListHeight","offsetHeight","iSeparationsListHeight","iChecklistListHeight","swapImage","imgElement","newImageSrc","exists","attr","lockScreen","fadeIn","unlockScreen","fadeOut","showSpinnerMessage","message","html","hideSpinnerMessage","displayPopupWindow","div","percentX","percentY","calculateContentPositions","flatten","array","concat","hidePopupWindow","getScrollAmountX","scrollLeft","dragOverFile","preventDefault","stopPropagation","dragLeaveFile","droppedFile","g_oAnnotationAttachments","setUploadingStatus","dt","dataTransfer","addAnnotationAttachments","files","x","y","switched","idivHeight","idivWidth","iTop","calculateCentralYCoordinate","iLeft","calculateCentralXCoordinate","round","oPopup","top","oPopupContent","iHeaderHeight","has","mainHeight","header","find","elementExistsAndIsVisible","is","objectHeight","objectWidth","exp","isNaN","NaN","addFloats","subtractFloats","isInt","parseFloat","contains","R1_x","R1_y","R1_w","R1_h","R2_x","R2_y","R2_w","R2_h","getClickCoords","event","oViewer","clientX","body","getElementById","g_szCanvasId","documentElement","clientY","rect","g_oCanvas","getBoundingClientRect","c_iDPI","getAnimationFramesForZoomSpeed","zoomSpeed","getZoomMultiplierForZoomIncrement","zoomIncrement","fakeClickCoords","findClickCanvasCoordinates","oAnnotationsUI","oCoords","getClick","iCompareOffset","calculateCompareOffsetInPx","g_iRotDegrees","g_iScaledImageHeight","g_iScaledImageWidth","Seperation","SeperationName","Red","Green","Blue","Opaque","OriginalRed","OriginalGreen","OriginalBlue","OriginalOpaque","ImageWidth","ImageHeight","Visable","WidthResolution","HeightResolution","ImageDimensions","MinX","MinY","MaxX","MaxY","ImageObject","Width","Height","ImageBox","RequestApproval","RequestedPage","RequestedImageObject","ImagePercentages","UserImageObject","CompareImageObject","ScaledImageObject","CompareOffsetX","CompareOffsetY","CompareRotationDegrees","VisibleSeparations","ImageRequest","SessionId","OriginalResolution","CompareMode","ImageRequestName","ArtworkViewerImageBox","CompareViewerImageBox","IsCompareImageRequest","CompareGhosting","CompareTolerance","IsGetNewImageCallType","OverrideSingleColourChange","ExamineImageRequest","Dimensions","ApprovalID","PageNumber","ExamTypeCode","g_oTechTools","g_eExamTypes","COLOURDENSITY","CurrentResolution","RealtimeRenderReference","AnnotationID","FullImageHeight","FullImageWidth","SeparationName","CodeType","CodeData","DisplayText","MarqueeCoordinates","widthMagnification","X","Y","GetFileNameWithoutExtension","FileName","lastIndexOf","ProcessApiError","xhr","textStatus","bNoFormatting","szMessage","status","responseJSON","Message","g_oGreenlightMessages","c_szUnauthorisedMessage","responseText","displayErrorBubble","matrix_invert","M","ii","j","dim","I","C","convertColourHexToRGB","szHex","result","exec","r","g","convertColourToRBG","szRGB","replace","convertRGBToSRGB","oRGB","convertRGBToHex","max","min","convertRGBComponentToHex","c","hex","calculateLuminance","oSRGB","pow","isIE","ua","navigator","userAgent","msie","indexOf","trident","dtNow","parents","closeBubble","log2","log","LOG2E","String","Element","Document","DocumentFragment","forEach","item","hasOwnProperty","Object","defineProperty","configurable","enumerable","writable","argArr","slice","call","docFrag","createDocumentFragment","argItem","isNode","Node","createTextNode","insertBefore","firstChild"],"mappings":"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","file":"Common-6f2920b63d.js","sourcesContent":["/*\r\n* Copyright (c) 2017 SGS Europe. All rights reserved.\r\n*\r\n* This program is the CONFIDENTIAL and PROPRIETARY property of 2017 SGS Europe.\r\n* Any unauthorised use, reproduction, or transfer of this program is strictly\r\n* prohibited.\r\n*\r\n* File Name:\tCommon.js\r\n*\r\n* Description:\tCommon JavaScript functions between all objects.\r\n*\r\n* History:\t\t01-AUG-17\tJ Fuller\tInitial implementation.\r\n*\t\t\t\t22-NOV-17\tM Sherer\tChanges for the Greenlight Annotation Module (DR207).\r\n*\t\t\t\t14-DEC-17\tN Settle\tAdded a rounding function for the Greenlight Tech Tools Module (DR208).\r\n*\t\t\t\t19-JAN-18\tN Settle\tAdded TextMeasurement Annotation Type to the eAnnotationTypes enumerator (DR208).\r\n*\t\t\t\t14-FEB-18\tJ Fuller\tAdded warning bubble and function to add placeholder text to input box.\r\n*\t\t\t\t21-FEB-18\tP Raper\t\tAdded lockScreen() and formatDate() as part of UAT enhancements.\r\n*\t\t\t\t06-MAR-18\tN Settle\tModified the slideDiv() function to take a boolean parameter to control whether the canvas is redrawn after the animate (DR208).\r\n*\t\t\t\t28-MAR-18\tN Settle\tMade the Pan function re-render the Barcode Measurement details so that it can move it into a better position to view (DR208).\r\n*\t\t\t\t12-OCT-18\tS Dervey\tAdded eKeyboardShorcutBehaviours (GL205006).\r\n*\t\t\t\t16-OCT-18\tJ Swan\t\tAdded eAppovalStatus enum (GL205006)\r\n*\t\t\t\t07-NOV-18 S Norman Added functions to display a pop-up window within greenlight. (DR212)\r\n* \t\t\t19-NOV-18 R Pavolas Moved bubble logic to new file,\tchanged the default changeCanvasFunction(), added ColourDensityPostit annotation type (DR158989).\r\n*\t\t\t\t05-DEC-18\tN Alexander\tModified formatDate to apply a full date time format or time format if either is missing.\r\n*\t\t\t\t07-DEC-18\tP Dickson\tAdded high pixel density support. (Feature 5334)\r\n*\t\t\t\t30-MAY-19\tP Dickson\tImplemented the SVG text functionality.\r\n*\t\t\t\t20-JAN-20\tS Norman\tAdded drag, drop attachments functions, resize attachment pop-up functions\r\n*\t\t\t\t\t\t\t\t\t\tand general clean-up as part of UserStory 43113 - Upload Documents to Annotations)\r\n*\t\t\t 22-JAN-20 P Raper Added generic method for processing API responses.\r\n*\t\t\t 05-FEB-20\tR Pavolas\tAdded a bunch of helper methods and refactored changeCanvasFunction\r\n*\t\t\t 22-APR-20\tJ Morris\tAdded a prependDomElement function for adding new elements at the beginning of containers.\r\n*/\r\n\r\n/*\r\n * - - - G L O B A L V A R I A B L E S - - -\r\n */\r\n\r\nvar eAnnotationHandleTypes = {\r\n\tDragRect: 0,\r\n\tDeleteButton: 1,\r\n\tLeftResize: 2,\r\n\tRightResize: 3,\r\n\tTopResize: 4,\r\n\tBottomResize: 5,\r\n\tCreateNewAnnotation: 6\r\n};\r\n\r\n/**\r\n * Sort documents alphabetically.\r\n * @param {any} a - first parameter a\r\n * @param {any} b - Second parameter B\r\n * @returns {object} - sorted document\r\n */\r\nfunction sortAlphabetical(a, b) {\r\n\treturn a.DocumentName.toLowerCase() > b.DocumentName.toLowerCase() ? 1 : -1;\r\n}\r\n\r\n// Sorts annotation coordinates min/max of x or y.\r\nvar sortAnnotationCoords = {\r\n\treturnXMin: function (a, b) {\r\n\t\treturn a[0] - b[0];\r\n\t},\r\n\treturnXMax: function (a, b) {\r\n\t\treturn b[0] - a[0];\r\n\t},\r\n\treturnYMin: function (a, b) {\r\n\t\treturn a[1] - b[1];\r\n\t},\r\n\treturnYMax: function (a, b) {\r\n\t\treturn b[1] - a[1];\r\n\t}\r\n};\r\n\r\nvar eApproverType = {\r\n\tIndividual: 1,\r\n\tGroup: 2,\r\n\tHidden: 3\r\n}\r\n\r\nvar eApproverStatus = {\r\n\tPending: 0,\r\n\tApproved: 1,\r\n\tApprovedChanges: 2,\r\n\tRejected: 3\r\n};\r\n\r\nvar eApprovalStatus = {\r\n\tPending: 0,\r\n\tApproved: 1,\r\n\tApprovedChanges: 2,\r\n\tRejected: 3,\r\n\tAwaitingMyReview: 4\r\n};\r\n\r\nvar eCompareMode = {\r\n\tNoCompare: 0,\r\n\tBlink: 1,\r\n\tOverlay: 2,\r\n\tSliderHorizontal: 3,\r\n\tSliderVertical: 4,\r\n\tSideBySide: 5,\r\n\tSideBySideDiff: 6,\r\n\tDifferencesOnly: 7\r\n};\r\n\r\nvar eDocumentTypes = {\r\n\tPDF: 1,\r\n\tImage: 2,\r\n\tThreeD: 3,\r\n\tOffice: 4,\r\n\tSVG: 5,\r\n\tAnnotationAttachment: 6,\r\n\tAI: 7,\r\n\tCopyMagic: 8\r\n};\r\n\r\nvar eRetrievalSource = {\r\n\tApprovalId: 1,\r\n\tDocumentPageId: 2,\r\n\tDocumentId: 3\r\n};\r\n\r\nvar eCanvasType = {\r\n\tArtwork: 1,\r\n\tAnnotation: 2\r\n};\r\n\r\nvar eMessageType = {\r\n\tSuccess: 1,\r\n\tError: 2\r\n};\r\n\r\nvar eAnnotationDivType = {\r\n\tPopup: 1,\r\n\tListItem: 2\r\n};\r\n\r\nvar eAnnotationTypes = {\r\n\tPostit: 0,\r\n\tFreedraw: 1,\r\n\tRectangle: 2,\r\n\tEllipse: 3,\r\n\tLine: 4,\r\n\tGlobal: 5,\r\n\tThreeD: 6,\r\n\tTextMeasurement: 7,\r\n\tPointToPointMeasurement: 8,\r\n\tAreaMeasurement: 9,\r\n\tHorizontalCalliperMeasurement: 10,\r\n\tVerticalCalliperMeasurement: 11,\r\n\tColourDensityMeasurement: 12,\r\n\tBarcodeMeasurement: 13,\r\n\tColourDensityMeasurementPostit: 14,\r\n\tSVGRectangle: 15,\r\n\tSVGEllipse: 16,\r\n\tSVGPolygon: 17,\r\n\tTextHighlight: 18,\r\n\tTextClassification: 19\r\n};\r\n\r\nvar eAnnotationColours = {\r\n\tblue: \"#0000FF\",\r\n\tred: \"#FF0000\",\r\n\tgreen: \"#008000\",\r\n\torange: \"#FFA500\",\r\n\tpurple: \"#800080\",\r\n\tcyan: \"#00FFFF\",\r\n\tmagenta: \"#FF00FF\",\r\n\tyellow: \"#FFFF00\",\r\n\tgrey: \"#999999\"\r\n};\r\n\r\nvar eAnnotationStatuses = {\r\n\tInitial: 0,\r\n\tApproved: 1,\r\n\tRejected: 2,\r\n\tQuery: 3,\r\n\tToDo: 4\r\n};\r\n\r\nvar eAnnotationStatusUpdateType = {\r\n\taddStatus: 1,\r\n\tdeleteStatus: 2,\r\n\tupdateStatus: 3\r\n};\r\n\r\nvar eFieldTypes = {\r\n\tAnnotationMainHeader: 0,\r\n\tReplyHeader: 1,\r\n\tStatusHeader: 2,\r\n\tDifferenceHeader: 3,\r\n\tCopyMagic: 4\r\n};\r\n\r\nvar eKeyboardShorcutBehaviours = {\r\n\tZoomIn: 1,\r\n\tZoomOut: 2,\r\n\tZoomReset: 3,\r\n\tPan: 4,\r\n\tPanTextCompare: 5\r\n};\r\n\r\nvar eWheelZoomType = {\r\n\tStatic: 1,\r\n\tCentered: 2,\r\n\tSmart: 3\r\n};\r\n\r\nvar eZoomSpeed = {\r\n\tSlow: 1,\r\n\tMedium: 2,\r\n\tFast: 3\r\n};\r\n\r\nvar eZoomIncrements = {\r\n\tSmallest: 1,\r\n\tSmall: 2,\r\n\tMedium: 3,\r\n\tLarge: 4,\r\n\tLargest: 5\r\n};\r\n\r\nvar eAlignmentType = {\r\n\tOnRequest: 1,\r\n\tAlways: 2\r\n};\r\n\r\nvar eHighlightType = {\r\n\tLeftToRight: 1,\r\n\tRightToLeft: 2\r\n};\r\n\r\nvar eSVGNodeType = {\r\n\tNone: 0,\r\n\tPointText: 1,\r\n\tAreaText: 2,\r\n\tPathText: 3\r\n};\r\n\r\nvar eSVGBoundingElementType = {\r\n\tNone: 0,\r\n\tRectangle: 1,\r\n\tEllipse: 2,\r\n\tPolygon: 3\r\n};\r\n\r\nvar eReviewType = {\r\n\tReadOnly: 1,\r\n\tApprover: 2,\r\n\tSheriff: 3\r\n};\r\n\r\n// JQuery PEP setup to allow touch events\r\nvar events = [\r\n // base events\r\n 'click',\r\n 'pointerdown',\r\n 'pointerup',\r\n 'pointermove',\r\n 'pointerover',\r\n 'pointerout',\r\n 'pointerenter',\r\n 'pointerleave'\r\n];\r\n\r\n// Active Bubbles.\r\nvar g_oActiveBubbles = [];\r\n\r\n// Keeps track of the next id to be used for the active bubble.\r\nvar g_iActiveBubbleId = 1;\r\n\r\n// The number of seconds before a static bubble will auto-hide.\r\nvar g_iBubbleCloseSeconds = 5;\r\n\r\n/**\r\n * Creates a new active bubble object.\r\n * @param {int} id - The id of the bubble.\r\n * @param {string} type - The type of bubble.\r\n * @param {bool} displayTop - If the bubble should be displayed at the top of the screen.\r\n * @param {bool} autoClose - If the bubble should auto close.\r\n */\r\nfunction ActiveBubble(id, type, displayTop, autoClose) {\r\n\tthis.id = id;\r\n\tthis.type = type;\r\n\tthis.displayTop = displayTop;\r\n\tthis.autoClose = autoClose;\r\n\tthis.displayDate = new Date();\r\n}\r\n\r\n/*\r\n * - - - P U B L I C M E T H O D S - - -\r\n */\r\n\r\n/**\r\n * Adds a DOM Element to the Canvas\r\n * @param {int} id - ID of the notification\r\n * @param {string} type - Type of Action the DOM element will perform\r\n * @param {string} src - The location of the image\r\n * @param {string} className - The class identifier\r\n * @param {string} title - The tooltip.\r\n * @param {event} clickFunction - The click function to bind to the new element\r\n * @param {string} destination - The Div to append the element to.\r\n * @param {string} dataAttribute - The data attribute at be attached to element.\r\n * @param {string} dataAttributeValue - The data attribute value.\r\n * @returns {object} - The new element.\r\n */\r\nfunction addDomElement(id, type, src, className, title, clickFunction, destination, dataAttribute, dataAttributeValue) {\r\n\tvar element = createDomElement(id, type, src, className, title, clickFunction, dataAttribute, dataAttributeValue);\r\n\tdestination.appendChild(element);\r\n\r\n\treturn element;\r\n}\r\n\r\n/**\r\n * Adds a DOM Element to the Canvas as the first child within the container.\r\n * @param {int} id - ID of the notification\r\n * @param {string} type - Type of Action the DOM element will perform\r\n * @param {string} src - The location of the image\r\n * @param {string} className - The class identifier\r\n * @param {string} title - The tooltip.\r\n * @param {event} clickFunction - The click function to bind to the new element\r\n * @param {string} destination - The Div to append the element to.\r\n * @param {string} dataAttribute - The data attribute at be attached to element.\r\n * @param {string} dataAttributeValue - The data attribute value.\r\n * @returns {object} - The new element.,\r\n */\r\nfunction prependDomElement(id, type, src, className, title, clickFunction, destination, dataAttribute, dataAttributeValue) {\r\n\tvar element = createDomElement(id, type, src, className, title, clickFunction, dataAttribute, dataAttributeValue);\r\n\tdestination.prepend(element);\r\n\r\n\treturn element;\r\n}\r\n\r\n\r\n/**\r\n * Adds a DOM Element to the Canvas\r\n * @param {number} id - ID of the notification\r\n * @param {string} type - Type of Action the DOM element will perform\r\n * @param {string} src - The location of the image\r\n * @param {string} className - The class identifier\r\n * @param {string} title - The tooltip.\r\n * @param {event} clickFunction - The click function to bind to the new element\r\n * @param {string} destination - The Div to append the element to.\r\n * @returns {object} - The new element.\r\n */\r\nfunction createDomElement(id, type, src, className, title, clickFunction, dataAttribute, dataAttributeValue) {\r\n\tvar element = document.createElement(type);\r\n\r\n\t// Set the ID if we have it.\r\n\tif (id) {\r\n\t\telement.id = id;\r\n\t}\r\n\r\n\t// If it's an input, set type to image.\r\n\tif (type === \"input\") {\r\n\t\telement.type = \"image\";\r\n\t\telement.src = src;\r\n\t}\r\n\r\n\t// Set the class name\r\n\tif (className) {\r\n\t\telement.className = className;\r\n\t}\r\n\r\n\t// Set the title\r\n\tif (title) {\r\n\t\telement.title = title;\r\n\r\n\t\tif (element.className.length > 0) {\r\n\t\t\telement.className = element.className + \" \";\r\n\t\t}\r\n\r\n\t\telement.className = element.className + \"tooltip\";\r\n\t}\r\n\r\n\t// Set the onclick function\r\n\tif (clickFunction) {\r\n\t\telement.onclick = clickFunction;\r\n\t}\r\n\r\n\t// Set the data attribute\r\n\tif (typeof (dataAttribute) !== 'undefined' && typeof (dataAttributeValue) !== 'undefined' && dataAttribute.length > 0 && dataAttributeValue.length > 0) {\r\n\t\telement.setAttribute(dataAttribute, dataAttributeValue);\r\n\t}\r\n\r\n\treturn element;\r\n}\r\n\r\n/*\r\n * Adds placeholder text to a text box.\r\n * Added due to not all browsers supporting the placeholder attribute.\r\n * @param {string} input - The element name.\r\n * @param {string} placeholderText - The text to used as the placeholder.\r\n */\r\nfunction addPlaceholderToTextbox(input, placeholderText) {\r\n\r\n\t// Set the value of the placeholder text.\r\n\t$(\"#\" + input).val(placeholderText);\r\n\r\n\t// On focus.\r\n\t$(\"#\" + input).on(\"focus\", function (e) {\r\n\t\tif (this.value === placeholderText) {\r\n\t\t\tthis.value = \"\";\r\n\t\t}\r\n\t});\r\n\r\n\t// On blur.\r\n\t$(\"#\" + input).on(\"blur\", function (e) {\r\n\t\tif (this.value === \"\") {\r\n\t\t\tthis.value = placeholderText;\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/**\r\n * Helper function to change canvas event bindings.\r\n * @param {string} element - The element we are updating the event for.\r\n * @param {string} eventType - The event type we are updating.\r\n * @param {function} functionToBind - The function we are binding to the event.\r\n */\r\nfunction changeCanvasFunction(element, eventType, functionToBind) {\r\n\tif (element === undefined && eventType === undefined && functionToBind === undefined) {\r\n\t\tclearCanvasBindings();\r\n\t}\r\n\telse if (eventType === undefined && functionToBind === undefined) {\r\n\t\tclearElementBindings(element);\r\n\t}\r\n\telse {\r\n\t\tbindFunctionToElement(element, eventType, functionToBind);\r\n\t}\r\n}\r\n\r\n/**\r\n * Removes most binding from a given element\r\n * @param {object} element The element to unbind events for\r\n */\r\nfunction clearElementBindings(element) {\r\n\t$(element).off(\"click\");\r\n\t$(element).off(\"pointerdown\");\r\n\t$(element).off(\"pointerup\");\r\n\t$(element).off(\"pointermove.annotationUI\");\r\n}\r\n\r\n/**\r\n * Binds a function to an event for a given element\r\n * @param {object} element The element to bind for\r\n * @param {string} eventType The type of event\r\n * @param {function} functionToBind The function to bind\r\n */\r\nfunction bindFunctionToElement(element, eventType, functionToBind) {\r\n\t$(element).off(eventType);\r\n\tif (functionToBind !== undefined) {\r\n\t\t$(element).on(eventType, functionToBind);\r\n\t}\r\n}\r\n\r\n/**\r\n * Reset most bindings to their defaults\r\n */\r\nfunction clearCanvasBindings() {\r\n\t// Clear current bindings\r\n\t$(\".annotationViewer\").off(\"click\");\r\n\t$(\".annotationViewer\").off(\"pointerdown\");\r\n\t$(\".annotationViewer\").off(\"pointerup\");\r\n\t$(\".annotationViewer\").off(\"pointermove.annotationUI\");\r\n\r\n\tif (g_oViewer.g_oArtworkViewer.g_oDoc.documentType !== eDocumentTypes.ThreeD) {\r\n\t\t$(\".annotationViewer\").on(\"click\", function (e) {\r\n\t\t\t// Get the annotation and artwork viewer.\r\n\t\t\toAnnotationCanvas = g_oViewer.getCanvas(e.target.id);\r\n\t\t\toArtworkCanvas = g_oViewer.getLinkedArtworkCanvas(e.target.id);\r\n\r\n\t\t\t// Find annotations.\r\n\t\t\tg_oAnnotations.findAnnotation(e, oArtworkCanvas, oAnnotationCanvas);\r\n\t\t});\r\n\t\t$(\"#AnnotationViewer\").on(\"pointermove.annotationUI\", function (e) {\r\n\t\t\toAnnotationCanvas = g_oViewer.getCanvas(e.target.id);\r\n\t\t\toArtworkCanvas = g_oViewer.getLinkedArtworkCanvas(e.target.id);\r\n\t\t\tAnnotationAction.prototype.mouseMove(e, oArtworkCanvas, oAnnotationCanvas);\r\n\t\t});\r\n\t\t$(\"#CompareAnnotationViewer\").on(\"pointermove.annotationUI\", function (e) {\r\n\t\t\toAnnotationCanvas = g_oViewer.getCanvas(e.target.id);\r\n\t\t\toArtworkCanvas = g_oViewer.getLinkedArtworkCanvas(e.target.id);\r\n\t\t\tAnnotationAction.prototype.mouseMoveLite(e, oArtworkCanvas, oAnnotationCanvas);\r\n\t\t});\r\n\t\t$(\"#AnnotationViewer\").on(\"pointerdown\", function (e) {\r\n\t\t\t// Get the annotation and artwork viewer.\r\n\t\t\toAnnotationCanvas = g_oViewer.getCanvas(e.target.id);\r\n\t\t\toArtworkCanvas = g_oViewer.getLinkedArtworkCanvas(e.target.id);\r\n\r\n\t\t\t// Check if any handles were clicked.\r\n\t\t\tAnnotationAction.prototype.handleClick(e, oArtworkCanvas, oAnnotationCanvas);\r\n\t\t});\r\n\t\t// If we are in text compare, add the pointer down for the compare canvas.\r\n\t\tif (g_oTextCompare.g_bTextCompareInProgress) {\r\n\t\t\t$(\"#CompareAnnotationViewer\").on(\"pointerdown\", function (e) {\r\n\t\t\t\t// Get the annotation and artwork viewer.\r\n\t\t\t\toAnnotationCanvas = g_oViewer.getCanvas(e.target.id);\r\n\t\t\t\toArtworkCanvas = g_oViewer.getLinkedArtworkCanvas(e.target.id);\r\n\r\n\t\t\t\t// Check if any handles were clicked.\r\n\t\t\t\tAnnotationAction.prototype.handleClick(e, oArtworkCanvas, oAnnotationCanvas);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\telse {\r\n\t\t$(\".annotationViewer\").on(\"click\", function (e) {\r\n\t\t\t// Get the annotation and artwork viewer.\r\n\t\t\toAnnotationCanvas = g_oViewer.getCanvas(e.target.id);\r\n\t\t\toArtworkCanvas = g_oViewer.getLinkedArtworkCanvas(e.target.id);\r\n\r\n\t\t\t// Find annotations.\r\n\t\t\tg_oAnnotations.findThreeDAnnotations(e, oArtworkCanvas, oAnnotationCanvas);\r\n\t\t});\r\n\t}\r\n}\r\n\r\n/**\r\n * Determines if a document displays as a PDF.\r\n * @param {eDocumentType} documentType - The document type to check.\r\n * @returns {bool} - If the document displays as a PDF.\r\n */\r\nfunction documentDisplaysAsPDF(documentType) {\r\n\treturn documentType === eDocumentTypes.PDF || documentType === eDocumentTypes.Office || documentType === eDocumentTypes.AI;\r\n}\r\n\r\n/**\r\n * Determines if a document displays as an SVG.\r\n * @param {eDocumentType} documentType - The document type to check.\r\n * @returns {bool} - If the document displays as an SVG.\r\n */\r\nfunction documentDisplaysAsSVG(documentType) {\r\n\treturn documentType === eDocumentTypes.SVG || documentType === eDocumentTypes.CopyMagic;\r\n}\r\n\r\n/**\r\n * Determines if a document has separations.\r\n * @param {eDocumentType} documentType - The document type to check.\r\n * @param {int} documentPages - The number of document pages.\r\n * @returns {bool} - If the document has separations.\r\n */\r\nfunction documentHasSeparations(documentType, documentPages) {\r\n\treturn documentType === eDocumentTypes.PDF || documentType === eDocumentTypes.Office || documentType === eDocumentTypes.AI || (documentType === eDocumentTypes.Image && documentPages > 0);\r\n}\r\n\r\n/**\r\n * Takes a measurement and converts it to millimetres if needed\r\n * @param {number} num The measurement in MM or Inches\r\n * @returns {number} The measurement in MM\r\n */\r\nvar MeasurementInMM = function (num) {\r\n\tif (g_oSettings.g_oUserSettings.UseMetricUnits) {\r\n\t\t// Came in as a mm\r\n\t\treturn Number(DelimitNum(num, 4));\r\n\t}\r\n\telse {\r\n\t\t// Came in as inch, convert to mm\r\n\t\treturn Number(DelimitNum(num * 25.4, 4));\r\n\t}\r\n};\r\n\r\n/**\r\n * Dynamically delimit a number and remove any trailing zeroes.\r\n * @param {number} num Number to delimit\r\n * @param {number} decimalPoints Max number of decimal points\r\n * @returns {number} Delimited number\r\n */\r\nfunction DelimitNum(num, decimalPoints) {\r\n\tfor (var i = 0; i < decimalPoints; i++) {\r\n\t\tif (num.toFixed(decimalPoints) % num.toFixed(i) === 0) {\r\n\t\t\treturn num.toFixed(i);\r\n\t\t}\r\n\t}\r\n\treturn num.toFixed(decimalPoints);\r\n}\r\n\r\n/**\r\n * Retrieve the element id from a given element.\r\n * @param {object} element Element in question\r\n * @returns {string} The element's id\r\n */\r\nfunction GetElementId(element) {\r\n\treturn element.id || element[0].id;\r\n}\r\n\r\n/**\r\n * Scroll a given element to a specific point over a certain time-frame\r\n * @param {object} element The element to scroll\r\n * @param {number} target Where to scroll it to in pixels\r\n * @param {number} time How much time to take to scroll there in milliseconds\r\n */\r\nfunction scrollElement(element, target, time) {\r\n\t$(element).stop().animate({\r\n\t\t'scrollTop': target\r\n\t}, time);\r\n}\r\n\r\n/**\r\n * Sorting method to sort elements in an ascending order\r\n * @param {any} a Item a\r\n * @param {any} b Item B\r\n * @returns {number} Positive if a > b, negative if b < a, 0 otherwise\r\n */\r\nfunction AscendingOrder(a, b) {\r\n\treturn a - b;\r\n}\r\n\r\n/**\r\n * Un-highlights a button.\r\n * @param {element} elem - The button we are removing the highlighting from.\r\n */\r\nfunction clearHighlightSelectedButton(elem) {\r\n\t$(elem).removeClass(\"selectedButton\");\r\n}\r\n\r\n/**\r\n * Converts the UTC date to the users local using the browser time settings.\r\n * @param {Object|string} utcDate - The UTC date we are converting.\r\n * @returns {string} - The local date time AS A STRING.\r\n */\r\nfunction convertUTCDateToLocal(utcDate) {\r\n\tvar szDateFormat = \"DD/MM/YYYY HH:mm:ss\";\r\n\tvar oDate = moment.utc(utcDate).local();\r\n\treturn oDate.format(szDateFormat);\r\n}\r\n\r\n/* Returns a function, that, as long as it continues to be invoked, will not\r\n * be triggered. The function will be called after it stops being called for\r\n * N milliseconds. If `immediate` is passed, trigger the function on the\r\n * leading edge, instead of the trailing.\r\n*/\r\nfunction debounce(func, wait, immediate) {\r\n\tvar timeout;\r\n\treturn function () {\r\n\t\tvar context = this, args = arguments;\r\n\t\tvar later = function () {\r\n\t\t\ttimeout = null;\r\n\t\t\tif (!immediate) func.apply(context, args);\r\n\t\t};\r\n\t\tvar callNow = immediate && !timeout;\r\n\t\tclearTimeout(timeout);\r\n\t\ttimeout = setTimeout(later, wait);\r\n\t\tif (callNow) func.apply(context, args);\r\n\t};\r\n}\r\n\r\n/**\r\n * Performs a deep copy on an array.\r\n * @param {array} oldArray Array to deep copy.\r\n * @returns {array} The deep copy of the array.\r\n */\r\nfunction deepCopyArray(oldArray) {\r\n\treturn jQuery.extend(true, [], oldArray);\r\n}\r\n\r\n/**\r\n * Performs a deep copy on an object\r\n * @param {object} oldObject Object to deep copy.\r\n * @returns {object} The deep copy of the object.\r\n */\r\nfunction deepCopyObject(oldObject) {\r\n\treturn jQuery.extend(true, {}, oldObject);\r\n}\r\n\r\n/**\r\n * Displays any errors within the html.\r\n * @param {array} errors - The list of errors.\r\n * @returns {string} HTML of the errors.\r\n */\r\nfunction displayErrorContentHTML(errors) {\r\n\r\n\t// Declare a variable to hold the error content.\r\n\tvar szHTML = \"\";\r\n\r\n\t// If the error object is an array, add each of the errors to the list.\r\n\tif (Array.isArray(errors)) {\r\n\t\tif (errors.length > 0) {\r\n\t\t\tfor (var i = 0; i < errors.length; i++) {\r\n\t\t\t\tvar oErr = errors[i];\r\n\t\t\t\tszHTML += \"