CINXE.COM
HMH Educator Input
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no, user-scalable=0" /> <meta name="robots" content="index" /> <!-- Google email inbox code verification --> <link rel="icon" href="https://thinkpassenger-prod.s3.amazonaws.com/company_148/community_275/asset/LrPeg7YCKti13uE.ico" type="image/x-icon"> <link rel="apple-touch-icon-precomposed" href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/icons/appleTouchIcon/apple-touch-icon.png"> <link rel="apple-touch-icon-precomposed" sizes="57x57" href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/icons/appleTouchIcon/apple-touch-icon-57x57.png"> <link rel="apple-touch-icon-precomposed" sizes="114x114" href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/icons/appleTouchIcon/apple-touch-icon-114x114.png"> <link rel="apple-touch-icon-precomposed" sizes="72x72" href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/icons/appleTouchIcon/apple-touch-icon-72x72.png"> <link rel="apple-touch-icon-precomposed" sizes="144x144" href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/icons/appleTouchIcon/apple-touch-icon-114x114.png"> <link rel="apple-touch-icon-precomposed" sizes="60x60" href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/icons/appleTouchIcon/apple-touch-icon-60x60.png"> <link rel="apple-touch-icon-precomposed" sizes="120x120" href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/icons/appleTouchIcon/apple-touch-icon-120x120.png"> <link rel="apple-touch-icon-precomposed" sizes="76x76" href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/icons/appleTouchIcon/apple-touch-icon-76x76.png"> <link rel="apple-touch-icon-precomposed" sizes="152x152" href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/icons/appleTouchIcon/apple-touch-icon-152x152.png"> <link rel="apple-touch-icon-precomposed" sizes="180x180" href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/icons/appleTouchIcon/apple-touch-icon-180x180.png"> <link rel="apple-touch-icon" href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/icons/appleTouchIcon/apple-touch-icon.png"> <link rel="apple-touch-icon" sizes="57x57" href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/icons/appleTouchIcon/apple-touch-icon-57x57.png"> <link rel="apple-touch-icon" sizes="114x114" href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/icons/appleTouchIcon/apple-touch-icon-114x114.png"> <link rel="apple-touch-icon" sizes="72x72" href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/icons/appleTouchIcon/apple-touch-icon-72x72.png"> <link rel="apple-touch-icon" sizes="144x144" href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/icons/appleTouchIcon/apple-touch-icon-114x114.png"> <link rel="apple-touch-icon" sizes="60x60" href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/icons/appleTouchIcon/apple-touch-icon-60x60.png"> <link rel="apple-touch-icon" sizes="120x120" href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/icons/appleTouchIcon/apple-touch-icon-120x120.png"> <link rel="apple-touch-icon" sizes="76x76" href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/icons/appleTouchIcon/apple-touch-icon-76x76.png"> <link rel="apple-touch-icon" sizes="152x152" href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/icons/appleTouchIcon/apple-touch-icon-152x152.png"> <link rel="apple-touch-icon" sizes="180x180" href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/icons/appleTouchIcon/apple-touch-icon-180x180.png"> <link href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v3/mdb/font/fontawesome/fontawesome-all.min.css" rel="stylesheet" type="text/css"> <link href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v3/mdb/css/bootstrap.min.css" rel="stylesheet" type="text/css" > <link href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v3/mdb/css/mdb.min.css" rel="stylesheet" type="text/css" > <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet"> <link href="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v3/css/login.less" rel="stylesheet/less" type="text/css" data-global-vars='{"communityFontColor": "#ffffff", "communityColor": "#00a8c8" , "communityButtonBackgroundColor": "#ff00b3"}' /> <script src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v3/js/less.js" data-env="development"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/js/jquery/jquery-3.5.1.js"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/js/jquery/jquery-ui.min.js"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/js/lib/moment.js"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v3/mdb/js/popper.min.js"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v3/mdb/js/bootstrap.min.js"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v3/mdb/js/mdb.min.js"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v3/mdb/js/addons/datatables.min.js"></script> <script type="text/javascript" src="/messageProperties.js?locale=en" charset="utf-8"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/js/lib/modernizr.js" charset="utf-8"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/js/lib/jquery.imgareaselect.min.js" charset="utf-8"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/js/jquery/plugin/jquery.alphanum.js" charset="utf-8"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/js/lib/jquery.inview.min.js" charset="utf-8"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/js/lib/toastr.min.js" charset="utf-8"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/js/lib/imagesLoaded.min.js" charset="utf-8"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/js/urlTracking.js" charset="utf-8"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/js/jquery/plugin/jquery.cookies.2.2.0.min.js" charset="utf-8"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/js/jquery/plugin/jquery.dateFormat-1.0.js" charset="utf-8"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/js/jquery/plugin/timeout-dialog.js"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/ckeditor/ckeditor.js" charset="utf-8"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/ckeditor/adapters/jquery.js" charset="utf-8"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/mediaElement/mediaelement.js" charset="utf-8"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/js/lib/jquery.form.js"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/js/lib/addEvent.min.js" async defer></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/js/jquery/plugin/jquery.paginate.js"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/js/jquery/plugin/jquery-switchButton/jquery.switchButton.min.js"></script> <script> var loggingEnabled = false; var isMobile = false; function isBrowserIE(userAgent) { userAgent = userAgent || navigator.userAgent; return userAgent.indexOf("MSIE ") > -1 || userAgent.indexOf("Trident/") > -1 || userAgent.indexOf("Edge/") > -1; } function createParentMessageReceiver() { //Create IE + others compatible event handler var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent"; var eventer = window[eventMethod]; var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message"; // Listen to message from child window eventer(messageEvent,function(e) { try { if (e.origin == 'https://www.hmheducatorinput.com') { var data = JSON.parse(e.data); if (data.action == 'surveyResponseSuccess') { console.log('surveyResponseSuccess: ', data.surveyResponseId); onSurveyResponseSuccess(data.surveyResponseId); } } } catch(err) { console.log(e.origin + " - " + e.data); } },false); } function replaceDates() { $("div.tpDate").each(function() { var format = $(this).attr("data-format"); var millis = parseInt($(this).text()); var dateString = $.format.date(millis, format); $(this).replaceWith(dateString); }); } function getTimeZone() { var rightNow = new Date(); var date1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0); var date2 = new Date(rightNow.getFullYear(), 6, 1, 0, 0, 0, 0); var temp = date1.toGMTString(); var date3 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1)); var temp = date2.toGMTString(); var date4 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1)); var hoursDiffStdTime = (date1 - date3) / (1000 * 60 * 60); var hoursDiffDaylightTime = (date2 - date4) / (1000 * 60 * 60); var timeZoneMinute = (hoursDiffStdTime%1)*60; var timeZoneHour = hoursDiffStdTime-(hoursDiffStdTime%1); var timeZoneName = Intl.DateTimeFormat().resolvedOptions().timeZone; var timeZoneId = "GMT-0800"; var daylightSaving = true; if (timeZoneHour >=0 && timeZoneHour < 10) { timeZoneId = 'GMT+0' + timeZoneHour; } else if (timeZoneHour < 0 && timeZoneHour > -10) { timeZoneId = 'GMT-0' + (-1*timeZoneHour); } else { timeZoneId = 'GMT+' + timeZoneHour; } if (timeZoneMinute > 0) { timeZoneId += timeZoneMinute; } else { timeZoneId += '00'; } if (hoursDiffDaylightTime == hoursDiffStdTime) { daylightSaving = false; } var timeZone = {'timeZoneName':timeZoneName, 'timeZoneId':timeZoneId, 'daylightSaving':daylightSaving}; return timeZone; } function writeTimeZoneFormHiddenInputs() { var timeZone = getTimeZone(); document.writeln('<input type="hidden" name="timeZoneId" value="'+timeZone.timeZoneId+'"/>'); document.writeln('<input type="hidden" name="daylightSaving" value="'+timeZone.daylightSaving+'"/>'); return false; } function loadLocalizedBadge(){ $('.app-download.app-store').attr('src',"https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/appBadges/apple-en.png"); $('.app-download.google-play').attr('src',"https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/appBadges/android-en.png"); } function getjQueryObjectById(elementId) { return jQuery('[id="'+elementId+'"]'); } function log(message) { var messageToShow; if (loggingEnabled){ if(arguments.callee.caller){ messageToShow = new Date() + "| caller is '" +arguments.callee.caller.name+ "' + Message: " + message; }else{ messageToShow = message; } console.log(messageToShow); } } function enableLogging(){ loggingEnabled = true; } function disableLogging(){ loggingEnabled = false; } function addScript( src, callback ) { var s = document.createElement( 'script' ); s.setAttribute( 'src', src ); s.onload = callback; document.body.appendChild( s ); } jQuery.fn.exists = function () { return this.length !== 0; }; $.fn.isOnScreen = function(){ var element = this.get(0); var bounds = element.getBoundingClientRect(); return bounds.top < window.innerHeight && bounds.bottom > 0; } jQuery.booleanValue = function (value) { if (value != null && value.toString().toLowerCase() == 'true') return true; else return false; }; escapeHtmlEntities = function (text, isSoftEscape) { if(typeof text === 'undefined' || text === null) { return; }; if(typeof text !== 'string') { return text.toString(); }; // all HTML4 entities as defined here: http://www.w3.org/TR/html4/sgml/entities.html // added: amp, lt, gt, quot and apos var entityTable = { 34 : 'quot', // 38 : 'amp', 39 : 'apos', 60 : 'lt', 62 : 'gt', 92 : 'bsol', 160 : 'nbsp', 161 : 'iexcl', 162 : 'cent', 163 : 'pound', 164 : 'curren', 165 : 'yen', 166 : 'brvbar', 167 : 'sect', 168 : 'uml', 169 : 'copy', 170 : 'ordf', 171 : 'laquo', 172 : 'not', 173 : 'shy', 174 : 'reg', 175 : 'macr', 176 : 'deg', 177 : 'plusmn', 178 : 'sup2', 179 : 'sup3', 180 : 'acute', 181 : 'micro', 182 : 'para', 183 : 'middot', 184 : 'cedil', 185 : 'sup1', 186 : 'ordm', 187 : 'raquo', 188 : 'frac14', 189 : 'frac12', 190 : 'frac34', 191 : 'iquest', 192 : 'Agrave', 193 : 'Aacute', 194 : 'Acirc', 195 : 'Atilde', 196 : 'Auml', 197 : 'Aring', 198 : 'AElig', 199 : 'Ccedil', 200 : 'Egrave', 201 : 'Eacute', 202 : 'Ecirc', 203 : 'Euml', 204 : 'Igrave', 205 : 'Iacute', 206 : 'Icirc', 207 : 'Iuml', 208 : 'ETH', 209 : 'Ntilde', 210 : 'Ograve', 211 : 'Oacute', 212 : 'Ocirc', 213 : 'Otilde', 214 : 'Ouml', 215 : 'times', 216 : 'Oslash', 217 : 'Ugrave', 218 : 'Uacute', 219 : 'Ucirc', 220 : 'Uuml', 221 : 'Yacute', 222 : 'THORN', 223 : 'szlig', 224 : 'agrave', 225 : 'aacute', 226 : 'acirc', 227 : 'atilde', 228 : 'auml', 229 : 'aring', 230 : 'aelig', 231 : 'ccedil', 232 : 'egrave', 233 : 'eacute', 234 : 'ecirc', 235 : 'euml', 236 : 'igrave', 237 : 'iacute', 238 : 'icirc', 239 : 'iuml', 240 : 'eth', 241 : 'ntilde', 242 : 'ograve', 243 : 'oacute', 244 : 'ocirc', 245 : 'otilde', 246 : 'ouml', 247 : 'divide', 248 : 'oslash', 249 : 'ugrave', 250 : 'uacute', 251 : 'ucirc', 252 : 'uuml', 253 : 'yacute', 254 : 'thorn', 255 : 'yuml', 402 : 'fnof', 913 : 'Alpha', 914 : 'Beta', 915 : 'Gamma', 916 : 'Delta', 917 : 'Epsilon', 918 : 'Zeta', 919 : 'Eta', 920 : 'Theta', 921 : 'Iota', 922 : 'Kappa', 923 : 'Lambda', 924 : 'Mu', 925 : 'Nu', 926 : 'Xi', 927 : 'Omicron', 928 : 'Pi', 929 : 'Rho', 931 : 'Sigma', 932 : 'Tau', 933 : 'Upsilon', 934 : 'Phi', 935 : 'Chi', 936 : 'Psi', 937 : 'Omega', 945 : 'alpha', 946 : 'beta', 947 : 'gamma', 948 : 'delta', 949 : 'epsilon', 950 : 'zeta', 951 : 'eta', 952 : 'theta', 953 : 'iota', 954 : 'kappa', 955 : 'lambda', 956 : 'mu', 957 : 'nu', 958 : 'xi', 959 : 'omicron', 960 : 'pi', 961 : 'rho', 962 : 'sigmaf', 963 : 'sigma', 964 : 'tau', 965 : 'upsilon', 966 : 'phi', 967 : 'chi', 968 : 'psi', 969 : 'omega', 977 : 'thetasym', 978 : 'upsih', 982 : 'piv', 8226 : 'bull', 8230 : 'hellip', 8242 : 'prime', 8243 : 'Prime', 8254 : 'oline', 8260 : 'frasl', 8472 : 'weierp', 8465 : 'image', 8476 : 'real', 8482 : 'trade', 8501 : 'alefsym', 8592 : 'larr', 8593 : 'uarr', 8594 : 'rarr', 8595 : 'darr', 8596 : 'harr', 8629 : 'crarr', 8656 : 'lArr', 8657 : 'uArr', 8658 : 'rArr', 8659 : 'dArr', 8660 : 'hArr', 8704 : 'forall', 8706 : 'part', 8707 : 'exist', 8709 : 'empty', 8711 : 'nabla', 8712 : 'isin', 8713 : 'notin', 8715 : 'ni', 8719 : 'prod', 8721 : 'sum', 8722 : 'minus', 8727 : 'lowast', 8730 : 'radic', 8733 : 'prop', 8734 : 'infin', 8736 : 'ang', 8743 : 'and', 8744 : 'or', 8745 : 'cap', 8746 : 'cup', 8747 : 'int', 8756 : 'there4', 8764 : 'sim', 8773 : 'cong', 8776 : 'asymp', 8800 : 'ne', 8801 : 'equiv', 8804 : 'le', 8805 : 'ge', 8834 : 'sub', 8835 : 'sup', 8836 : 'nsub', 8838 : 'sube', 8839 : 'supe', 8853 : 'oplus', 8855 : 'otimes', 8869 : 'perp', 8901 : 'sdot', 8968 : 'lceil', 8969 : 'rceil', 8970 : 'lfloor', 8971 : 'rfloor', 9001 : 'lang', 9002 : 'rang', 9674 : 'loz', 9824 : 'spades', 9827 : 'clubs', 9829 : 'hearts', 9830 : 'diams', 338 : 'OElig', 339 : 'oelig', 352 : 'Scaron', 353 : 'scaron', 376 : 'Yuml', 710 : 'circ', 732 : 'tilde', 8194 : 'ensp', 8195 : 'emsp', 8201 : 'thinsp', 8204 : 'zwnj', 8205 : 'zwj', 8206 : 'lrm', 8207 : 'rlm', 8211 : 'ndash', 8212 : 'mdash', 8216 : 'lsquo', 8217 : 'rsquo', 8218 : 'sbquo', 8220 : 'ldquo', 8221 : 'rdquo', 8222 : 'bdquo', 8224 : 'dagger', 8225 : 'Dagger', 8240 : 'permil', 8249 : 'lsaquo', 8250 : 'rsaquo', 8364 : 'euro' }; var softEscapeValues = ['&', '%']; return text.replace(/[\u00A0-\u2666<>\&\\]/g, function(c) { if(isSoftEscape && softEscapeValues.indexOf(c) > -1) { return c; }; return '&' + (entityTable[c.charCodeAt(0)] || '#' + c.charCodeAt(0)) + ';'; }); }; (function(jQuery) { jQuery.fn.extend( { limiter: function(limit, elem) { jQuery(this).on("keyup focus paste", function() { setCount(this, elem); }); function setCount(src, elem) { var chars = src.value.length; if (chars > limit) { src.value = src.value.substr(0, limit); chars = limit; } elem.html( limit - chars ); } setCount(jQuery(this)[0], elem); } }); })(jQuery); function triggerClick(elementId) { jQuery("#" + elementId).trigger('click'); } function bytesToSize(bytes) { var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']; if (bytes == 0) return 'n/a'; var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024))); return Math.round(bytes / Math.pow(1024, i), 2) + ' ' + sizes[i]; }; function showProcessingOverlay() { jQuery.magnificPopup.open({ items: { src: '/util/processingImage', type: 'image'}, modal: true, overflowY: 'hidden', }); } function hideProcessingOverlay() { jQuery.magnificPopup.close(); // Close popup that is currently opened (shorthand) } function showProcessingOverlayV2() { var over = '<div id="overlay">' + '<img id="loading" src="/util/processingImage">' + '</div>'; $(over).appendTo('body'); } function hideProcessingOverlayV2() { $('#overlay').remove(); } function sessionPing(delay) { setTimeout(function() { jQuery.getJSON( "/sessionPing", function(data) { if (data.success) { sessionPing(data.interval); } }); }, delay); } function configureToastr() { if(toastr == null) return; toastr.options.closeButton = true; toastr.options.progressBar = true; toastr.options.timeOut = 1500; toastr.options.extendedTimeOut = 1500; } function ImagePreviewUtil(previewBoxId, fileId, maxPreviewWidth, maxPreviewHeight, showCroppingTool, croppingCoordinatesId, croppingRatioWidth, croppingRatioHeight, fixedAspectRatio, onSelectChange) { var previewImageId; var imageAreaSelector = null; this.previewImage = function () { previewImageId = previewBoxId + 'Image'; if (imageAreaSelector != null) { imageAreaSelector.setOptions({ remove: true }); } if (jQuery('#' + previewImageId).attr('src')) { jQuery('#'+previewBoxId).html(''); } jQuery('#'+previewBoxId).html('<img id="' + previewImageId +'" style="display:none;"/>'); var file = document.getElementById(fileId).files[0]; if (file == null) { jQuery('#'+previewBoxId).html(); return false; } else if (!file.type.match('image.*')) { jQuery('#'+previewBoxId).html(file.name); return false; } var oFReader = new FileReader(); oFReader.readAsDataURL(document.getElementById(fileId).files[0]); oFReader.onload = function (oFREvent) { jQuery('#' + previewImageId).on('load', function() { var width = this.naturalWidth; var height = this.naturalHeight; var ratio = width/height; var displayWidth = width; var displayHeight = height; jQuery('#' + previewImageId).css('transform','rotate(0deg)'); if(isMobile){ displayWidth = 200; displayHeight = 200; if(getMobileOperatingSystem() == 'Android'){ var rotationNeeded = 360 - parseInt($('#orientation').val()); jQuery('#' + previewImageId).css('transform','rotate('+rotationNeeded+'deg)'); } showCroppingTool = false; var mobileSquare = Math.min(width, height); $('#'+croppingCoordinatesId).val("0,0,"+mobileSquare+','+mobileSquare); }else{ if (ratio >= 1) { displayWidth = Math.min(width,maxPreviewWidth); displayHeight = Math.round(displayWidth / ratio); } else { displayHeight = Math.min(height,maxPreviewHeight); displayWidth = Math.round(displayHeight * ratio); } } jQuery('#' + previewImageId).width(displayWidth); jQuery('#' + previewImageId).height(displayHeight); jQuery('#' + previewImageId).show(); if (showCroppingTool) { var croppingCoordinates = new Array(0,0,0,0); var croppingAspectRatio = croppingRatioWidth+":"+croppingRatioHeight; var croppingCoordinatesInput = jQuery('#'+croppingCoordinatesId); croppingRatioWidth = Number(croppingRatioWidth); croppingRatioHeight = Number(croppingRatioHeight); fixedAspectRatio = jQuery.booleanValue(fixedAspectRatio); if (croppingCoordinatesInput.val() == '') { var min = Math.min(width, height * croppingRatioWidth / croppingRatioHeight); var croppingWidth = Math.round(min / 2); var croppingHeight = Math.round(croppingWidth * croppingRatioHeight / croppingRatioWidth); croppingCoordinates[0] = Math.round((width - croppingWidth) / 2); croppingCoordinates[1] = Math.round((height - croppingHeight) / 2); croppingCoordinates[2] = Math.round((width - croppingWidth) / 2 + croppingWidth); croppingCoordinates[3] = Math.round((height - croppingHeight) / 2 + croppingHeight); croppingCoordinatesInput.val(croppingCoordinates); } else { croppingCoordinates = croppingCoordinatesInput.val().split(","); } jQuery(function () { imageAreaSelector = jQuery('#' + previewImageId).imgAreaSelect({ imageWidth:width, imageHeight:height, parent: '#'+previewBoxId, noScale: false,persistent:true, instance:true, handles:true, show: true, fadeSpeed:500, x1: croppingCoordinates[0], y1: croppingCoordinates[1], x2: croppingCoordinates[2], y2: croppingCoordinates[3], onSelectEnd: function (img, selection) { croppingCoordinates[0] = selection.x1; croppingCoordinates[1] = selection.y1; croppingCoordinates[2] = selection.x2; croppingCoordinates[3] = selection.y2; croppingCoordinatesInput.val(croppingCoordinates); }, onInit: function (img, selection) { } }); if (fixedAspectRatio) { imageAreaSelector.setOptions({ aspectRatio:croppingAspectRatio}); imageAreaSelector.update(); } if (onSelectChange) { imageAreaSelector.setOptions({ onSelectChange:onSelectChange}); imageAreaSelector.update(); } }); } }); jQuery('#' + previewImageId).attr('src', oFREvent.target.result); }; }; } function displayEmailPreview(mode, content, emailTemplateId, emailCampaignId, emailRecruitmentId, emailType) { jQuery.ajax({ type: "POST", url: "/mod/communicationCenter/email/generatePreview", data: {content:content, emailTemplateId:emailTemplateId, emailCampaignId:emailCampaignId, emailRecruitmentId:emailRecruitmentId, emailType:emailType} }).done(function(data) { var previewUrl = "/mod/communicationCenter/email/displayPreview?mode="+mode+"&emailPreviewToken="+data.emailPreviewToken; window.open(previewUrl, "_blank", "width=1024, height=768, location=0, menubar=0, status=0, titlebar=0, toolbar=0, scrollbars=1, resizable=1"); }); } function displayErrors(errors) { $("p.error").html(''); $("*").removeClass("error"); for (var i=0; i<errors.length; i++) { var error = errors[i]; var $element = $("[name='" + error.field + "']"); var $div = $element.closest("div.richTextEditorWrapper"); if ($div.length) $element = $div; $element.addClass("error"); $element.after('<p class="error">' + error.message + '</p>'); } } String.prototype.toTitleCase = function () { return this.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); }; function displayPathErrors(errors) { $("p.error").html(''); $("*").removeClass("error"); for (var i=0; i<errors.length; i++) { var error = errors[i]; var $element = $("[name='" + error.field + "']"); var $div = $element.closest("div.richTextEditorWrapper"); if ($div.length) $element = $div; $element.addClass("error"); $element.after('<p class="error">' + error.message + '</p>'); } for (var i=0; i<errors.length; i++) { var error = errors[i]; var $element = $("[id='" + error.field + "']"); var $div = $element.closest("div.richTextEditorWrapper"); if ($div.length) $element = $div; $element.addClass("error"); $element.after('<p class="error">' + error.message + '</p>'); } } var CKEditorRichTextEditor = function () { var myCKEditor = null; //initialize ckEditor this.createRichTextEditor = function(richTextZoneId, width, height, customToolbar, customFormatTags) { var isMobile = false; var isUserwayEnabled = false; var customConfig = { height: height, width: width, baseFloatZIndex: 10000 // toolbar: customToolbar, // Optional. If nothing is passed, src/main/webapp/resources/ckeditor/config.js is used. //removePlugins: "liststyle,tableselection,tabletools,contextmenu", }; // Check the boolean condition (replace 'yourBooleanVariable' with your actual boolean variable) if (isUserwayEnabled) { // Set the toolbar property to an empty array to remove all buttons from the CKEditor toolbar customConfig.toolbar = []; } else { // If the boolean condition is not met, use the provided customToolbar or default toolbar (src/main/webapp/resources/ckeditor/config.js) customConfig.toolbar = customToolbar || 'Custom'; } /* if(customFormatTags) { customConfig['format_tags'] = customFormatTags; } */ if(isMobile) { CKEDITOR.config.removePlugins='emoji'; } var language = 'en'.substring(0,2); CKEDITOR.config.language = language; myCKEditor = CKEDITOR.replace(richTextZoneId, customConfig); CKEDITOR.on( 'dialogDefinition', function( ev ) { var dialogName = ev.data.name; var dialogDefinition = ev.data.definition; if (dialogName == 'link') { var protocols = dialogDefinition.getContents( 'info' ).get( 'urlOptions' ); protocols.children[0].children[0]['default'] = ''; var lastElem = protocols.children[0].children[0].items.pop(); protocols.children[0].children[0].items.unshift(lastElem); } }); myCKEditor.on('change', function(evt) { myCKEditor.updateElement(); } ); if (isUserwayEnabled) { myCKEditor.ui.items.toolbar = []; } return myCKEditor; }; this.setContent = function(contentHtml) { myCKEditor.setData(contentHtml); }; this.getContent = function() { return myCKEditor.getData(); }; this.clearContent = function(){ myCKEditor.setData(""); }; this.destroy = function(){ myCKEditor.destroy(); }; }; // Init CKEditor Instances from array. var loadCKEditorRichTextEditors = function(ckEditorData) { ckEditorData.width = ckEditorData.width || '100%'; ckEditorData.height = ckEditorData.height || 100; $.each(ckEditorData.textAreaIdsToConvert, function(index, textAreaIdAttr) { var instanceVarName = textAreaIdAttr + 'CKEditor'; if($('#' + textAreaIdAttr).exists() && window[instanceVarName]) { window[instanceVarName].createRichTextEditor(textAreaIdAttr, ckEditorData.width, ckEditorData.height, ckEditorData.configOptions, ckEditorData.formatTagsOptions); }; }); }; var DropZoneFileUploader = function () { var myDropzone = null; var referenceId = null; var orientation = null; Dropzone.autoDiscover = false; this.createFileUploader = function(uploadZoneId, autoProcessQueue, maxFiles, parallelUploads, maxFilesize, acceptedFiles, fileClass, attachedToId, onSuccess, onError, onComplete, onCompleteRemoveFileDelay, onQueueComplete, accept) { var isVideoFile = null; var uploadedFile = null; var uploadSucceeded = 0; if(accept == null){ accept = function(file, done) { return done(); } } referenceId = attachedToId; myDropzone = new Dropzone('#'+uploadZoneId, {url:"https://thinkpassenger-prod.s3.amazonaws.com/", autoProcessQueue: autoProcessQueue, maxFiles: maxFiles, parallelUploads: parallelUploads, maxFilesize: maxFilesize, // MB uploadMultiple: false, addRemoveLinks: true, acceptedFiles: acceptedFiles, // "file_extension,audio/*,video/*,image/*,media_type" dictDefaultMessage: "Drop file here or click to upload", dictRemoveFile: "Remove File", dictCancelUpload: "Cancel Upload", accept: accept } ); myDropzone.on("processing", function(file) { isVideoFile = file.type.match('video.*'); uploadedFile = null; uploadSucceeded = null; if (isVideoFile) { myDropzone.options.url = "https://thinkpassenger-prod.s3.amazonaws.com/"; } else { myDropzone.options.url = "/member/v2/uploadFile"; // <--- is this working? } }); myDropzone.on("sending", function(file, xhr, formData) { var uploadData = null; if (isVideoFile) { jQuery.ajax({ async: false, cache: false, type: "POST", url: "/member/v2/prepareVideoUpload", data: {fileClass:fileClass, referenceId:referenceId, originalName:file.name, totalBytes:file.size} }).done(function(data) { uploadData = data; }).fail(function() { alert("error"); }); if (uploadData == null || uploadData.error) { if (uploadData.error) alert(uploadData.errorMessage); myDropzone.cancelUpload(file); } else { if(typeof sendFileToCreateDescription != 'undefined'){ sendFileToCreateDescription(uploadData); } uploadedFile = uploadData.uploadedFile; formData.append("Content-Type", file.type); formData.append("acl", uploadData.acl); formData.append("success_action_status", uploadData.successActionStatus); formData.append("key", uploadData.key); formData.append("x-amz-date", uploadData.expiration); formData.append("x-amz-algorithm", uploadData.algorithm); formData.append("x-amz-credential", uploadData.credential); formData.append("policy", uploadData.policy); formData.append("x-amz-signature", uploadData.signature); } } else { orientation = file.rotationTag; if(orientation){ formData.append("orientation", orientation); } formData.append("fileClass", fileClass); if (referenceId != null) { formData.append("referenceId", referenceId); } } }); myDropzone.on("success", function(file, response) { if (isVideoFile) { uploadSucceeded = true; } else { if (response.error) { uploadSucceeded = false; file.previewElement.classList.remove("dz-success"); file.previewElement.classList.add("dz-error"); alert(response.errorMessage); } else { if(typeof sendFileToCreateDescription != 'undefined'){ sendFileToCreateDescription(response); } if (onSuccess) onSuccess(file,response.uploadedFile, referenceId); } } }); myDropzone.on("error", function(file, errorMessage, xhr) { uploadSucceeded = false; if (onError) onError(file,errorMessage); else { alert(errorMessage); } }); myDropzone.on("complete", function(file) { if (isVideoFile) { jQuery.ajax({ async: false, cache: false, type: "POST", url: "/member/v2/finalizeVideoUpload", data: {uploadedFileId:uploadedFile.id, uploadSucceeded:uploadSucceeded} }).done(function(response) { if (response.error) { uploadSucceeded = false; file.previewElement.classList.remove("dz-success"); file.previewElement.classList.add("dz-error"); //alert(response.errorMessage) } else { if (onSuccess){ onSuccess(file,response.uploadedFile, referenceId); } } }).fail(function() { alert("error"); }); } if (onComplete) onComplete(file); if (onCompleteRemoveFileDelay) setTimeout(function(){myDropzone.removeFile(file);}, onCompleteRemoveFileDelay); }); myDropzone.on("queuecomplete", function() { this.options.autoProcessQueue = autoProcessQueue; if (onQueueComplete){ onQueueComplete();} if(typeof sendCompleteSignal != 'undefined') sendCompleteSignal(); }); return myDropzone; }; this.startUpload = function(attachedToId) { referenceId = attachedToId; if (myDropzone.getQueuedFiles().length > 0) { myDropzone.options.autoProcessQueue = true; myDropzone.processQueue(); } else { myDropzone.emit("queuecomplete"); } }; this.getQueuedFiles = function() { return myDropzone.getQueuedFiles().length; }; this.removeAllFiles = function() { myDropzone.removeAllFiles(true); }; this.destroy = function() { myDropzone.destroy(); }; } String.prototype.capitalize = function(str) { return this.charAt(0).toUpperCase() + this.slice(1).toLowerCase(); } function roundToTwoDecimal(str) { var thisNum = parseFloat(str); if(!isNaN(thisNum)){ return Math.round(thisNum * 100) / 100; }else{ return str; } } function updateOrientationInput (file){ getOrientation(file, function(orientation) { imageRotationCallBack(file,orientation); }); } var imageRotationCallBack = function(file,value){ var returnValue = 0; switch(value){ case 8 : returnValue = 90; break; case 3: returnValue = 180; break; case 6: returnValue = 270; break; } file.rotationTag = returnValue; } function getOrientation(file, callback) { var reader = new FileReader(); reader.onload = function(e) { var view = new DataView(e.target.result); if (view.getUint16(0, false) != 0xFFD8) { return callback(-2); } var length = view.byteLength, offset = 2; while (offset < length) { if (view.getUint16(offset+2, false) <= 8) return callback(-1); var marker = view.getUint16(offset, false); offset += 2; if (marker == 0xFFE1) { if (view.getUint32(offset += 2, false) != 0x45786966) { return callback(-1); } var little = view.getUint16(offset += 6, false) == 0x4949; offset += view.getUint32(offset + 4, little); var tags = view.getUint16(offset, little); offset += 2; for (var i = 0; i < tags; i++) { if (view.getUint16(offset + (i * 12), little) == 0x0112) { return callback(view.getUint16(offset + (i * 12) + 8, little)); } } } else if ((marker & 0xFF00) != 0xFF00) { break; } else { offset += view.getUint16(offset, false); } } return callback(-1); }; reader.readAsArrayBuffer(file); } function getMobileOperatingSystem() { var userAgent = navigator.userAgent || navigator.vendor || window.opera; if (/windows phone/i.test(userAgent)) { return "Windows Phone"; } if (/android/i.test(userAgent)) { return "Android"; } if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) { return "iOS"; } return "unknown"; } function parseParams(str) { return str.split('&').reduce(function (params, param) { var paramSplit = param.split('=').map(function (value) { return decodeURIComponent(value.replace(/\+/g, ' ')); }); params[paramSplit[0]] = paramSplit[1]; return params; }, {}); } function parseHash(windowLocationHash) { let hash = decodeURI(windowLocationHash); if(hash) { hash = hash.substring(1); return parseQuery(hash); } } function removeHash() { history.pushState("", document.title, window.location.pathname + window.location.search); } function getBrowserAndVersion() { var ua=navigator.userAgent,tem,M=ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; if(/trident/i.test(M[1])){ tem=/\brv[ :]+(\d+)/g.exec(ua) || []; return {name:'IE',version:(tem[1]||'')}; } if(M[1]==='Chrome'){ tem=ua.match(/\bOPR|Edge\/(\d+)/) if(tem!=null) {return {name:'Opera', version:tem[1]};} } M=M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?']; if((tem=ua.match(/version\/(\d+)/i))!=null) {M.splice(1,1,tem[1]);} return { name: M[0], version: M[1] }; } function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); var expires = "expires="+d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; } function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); for(var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; } function deleteCookie(cookieName, path) { if(getCookie(cookieName)) { document.cookie = cookieName + "=" + ((path) ? ";path="+path:"") + ";expires=Thu, 01 Jan 1970 00:00:01 GMT"; } }; function parseQuery(queryString) { var query = {}; var pairs = (queryString[0] === '?' ? queryString.substr(1) : queryString).split('&'); for (var i = 0; i < pairs.length; i++) { var pair = pairs[i].split('='); query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || ''); } return query; } function ellipsisAtChar(str , number) { if(str){ if(str.length > number){ str = str.substr(0, number-3) + '...'; } } return str; } /** * @description Acquire all JSP EL variables (contained, in HTML hidden inputs, in the .jsp) into a * single JS object so it can be used in an external JS file. * @param {string} jspVarsElemId - The container #ID of all the hidden inputs * @returns {object} */ function getJspVars(jspVarsElemId) { var jspVars = {}; $('#' + jspVarsElemId + ' input').each(function(i, $inputElem) { var jspVarValue = $(this).val(); // Convert strings into Number, Bool, or String. if ($.isNumeric(jspVarValue)) { jspVars[$inputElem.name] = parseInt(jspVarValue); } else if(jspVarValue === "true" || jspVarValue === "false" ) { jspVars[$inputElem.name] = (jspVarValue === "true"); } else { jspVars[$inputElem.name] = jspVarValue; } }); return jspVars; } function disableHrefWhenUserIsNotAvailable(){ $('a').each(function(){ if($(this).attr('href')=='#') { $(this).removeAttr('href').css('cursor', 'initial'); } }); }; function copyContentToClipboard(content) { var $temp = $("<input>"); $("body").append($temp); $temp.val(content).select(); document.execCommand("copy"); $temp.remove(); toastr.success("Copied to clipboard"); } function resetMaterialSelect($selector) { var $selector = $selector || '.mdb-select'; $($selector).materialSelect({ destroy: true }); $($selector).materialSelect(); } function removeValuesFromArray(arr, valuesToRemove) { return $.grep(arr, function(arrItem){ arrItem.trim(); return valuesToRemove.indexOf(arrItem) <= -1; }); } function generateCustomSelectOptionsByTeam(contents, filterByTeams, teamsIds) { var $options = []; if(filterByTeams) { contents = filterContentsByAssignedTeam(contents, teamsIds); }; for (var i = 0; i < contents.length; i++) { var $newOption = $('<option />', { value: contents[i].value, text: contents[i].label + ' (' + moment(contents[i].publishDate).format('MM/DD/YY') + ')' }); $options.push($newOption); } return $options; }; function checkScroll() { var scrollableDiv = document.getElementById("scrollableDiv"); if (scrollableDiv.scrollTop + scrollableDiv.clientHeight === scrollableDiv.scrollHeight) { var termsAgreedCheckBox = document.getElementById("termsAgreed"); termsAgreedCheckBox.disabled = false; } }; function filterContentsByAssignedTeam(contentsData, teamIds) { var newContentsByAssignedTeam = []; for(let i = 0, contentsDataArrLen = contentsData.length; i < contentsDataArrLen; i++) { var contentData = contentsData[i]; if(contentData.accessType === 'ALL') { newContentsByAssignedTeam.push(contentData); continue; }; for(let k = 0, teamsArrLen = contentData.teams.length; k < teamsArrLen; k++) { if(contentData.teams[k].id === teamIds) { newContentsByAssignedTeam.push(contentData); break; }; }; }; return newContentsByAssignedTeam; }; </script> <script> $(document).ready(function() { toastr.options = { "closeButton": true, "debug": false, "newestOnTop": false, "progressBar": true, "positionClass": "toast-top-right", "preventDuplicates": false, "onclick": null, "showDuration": "300", "hideDuration": "1000", "timeOut": "5000", "extendedTimeOut": "500", "showEasing": "swing", "hideEasing": "linear", "showMethod": "fadeIn", "hideMethod": "fadeOut" } $("[id$='SubnavIcon'], #mod-header-notification-btn").click(function(event){event.stopPropagation();}); var timeZone = encodeURIComponent(JSON.stringify(getTimeZone())); setCookie('timeZoneCookie', timeZone, 30); // i don't like this here, but I'm remiss to create yet another .js file for it // for now i'll make it generic enough to be used in many places $('body').on('click', '.m_button.follow', function() { var $this= $(this); var baseUrl = $this.attr("data-base-url"); var followId = $this.attr("data-obj-id"); var dataType = $this.attr("data-type"); var isButton = $this.attr("data-is-button"); var parentDiv = $this.parent(); $.ajax({ type: "POST", url: baseUrl+"/follow", data: { followedId: followId, dataType: dataType } }).done(function ( data ) { if (data.toggleLink == true) { if(isButton == 'true'){ parentDiv.html("<a href=\"#\" data-is-button=\"true\" class=\"m_button m_unfollow unfollow\" data-obj-id=\"" + followId + "\" data-base-url=\""+baseUrl+"\" title='Unsubscribe'>Unsubscribe</a>"); }else{ parentDiv.html("<a href=\"#\" data-is-button=\"false\" class=\"m_button m_unfollow unfollow\" data-obj-id=\"" + followId + "\" data-base-url=\""+baseUrl+"\" title='Unsubscribe'>Unsubscribe</a>"); } } else { parentDiv.html("<br/>"); } }).fail(function() { alert("error"); }); return false; }); $('body').on('click', '.m_button.unfollow', function() { var $this= $(this); var baseUrl = $this.attr("data-base-url"); var followId = $this.attr("data-obj-id"); var dataType = $this.attr("data-type"); var isButton = $this.attr("data-is-button"); var parentDiv = $this.parent(); $.ajax({ type: "POST", url: baseUrl+"/unfollow", data: { unfollowedId: followId, dataType: dataType }, }).done(function ( data ) { if (data.toggleLink == true) { if(isButton == 'true'){ parentDiv.html("<a href=\"#\" data-is-button=\"true\" class=\"m_button m_follow follow\" data-obj-id=\"" + followId + "\" data-base-url=\""+baseUrl+"\" title='Subscribe'>Subscribe</a>"); }else{ parentDiv.html("<a href=\"#\" data-is-button=\"false\" class=\"m_button m_follow follow\" data-obj-id=\"" + followId + "\" data-base-url=\""+baseUrl+"\" title='Subscribe'>Subscribe</a>"); } } else { parentDiv.html("<br/>"); } }).fail(function() { alert("error"); }); return false; }); }); function setToastr(type, message, onSuccess) { $.ajax({ type: "POST", url: "/toastr/set", data: {type:type, message:message} }).done(function(data) { if (data.success) { onSuccess(); } else { alert("error"); } }).fail(function() { alert("error"); }); } function toggleSubNav(subnavId) { var subnav = $('#'+subnavId); var subnavIsHidden = subnav.hasClass('hidden'); if (subnavIsHidden) { hideAllSubnavs(); subnav.removeClass('hidden'); subnav.parent().parent().addClass('open open-modHeaderNotificationsSubnav'); $('html').one('click', hideAllSubnavs); $('html').one('keyup', function(event) {if (event.keyCode == 27) {hideAllSubnavs();}}); subnav.click(function(event){event.stopPropagation();}); } else { subnav.addClass('hidden'); subnav.parent().parent().removeClass('open'); } } function hideAllSubnavs() { var $subnav = $('.subnav'); $subnav.addClass('hidden'); $subnav.parent().parent().removeClass('open open-modHeaderNotificationsSubnav'); } function replaceDates() { $("div.tpDate").each(function() { var format = $(this).attr("data-format"); var millis = parseInt($(this).text()); var dateString = $.format.date(millis, format); $(this).replaceWith(dateString); }); } $(document).ready(function() { replaceDates(); }); function openCommentAttachmentDetail(attachmentId,skipNavigation, approvalStatus) { if(approvalStatus != 'APPROVED'){ alert('Pending approval'); return false; } $.magnificPopup.open({ items:{src:'/member/commentAttachment/'+attachmentId+'?skipNavigation='+skipNavigation, type:'iframe'}, showCloseBtn:true, closeBtnInside:true, closeOnBgClick:true, width:1000 }); } function openAttachmentDetail(attachmentId, skipNavigation, approvalStatus, isDocument) { if(approvalStatus != 'APPROVED'){ alert('Pending approval'); return false; } $.magnificPopup.open({ items:{src:'/member/attachment/'+attachmentId+'?skipNavigation='+skipNavigation, type:'iframe'}, showCloseBtn:true, closeBtnInside:true, closeOnBgClick:true }); } function openAttachmentDetailPublic(attachmentId,skipNavigation, approvalStatus) { if(approvalStatus != 'APPROVED'){ alert('Pending approval'); return false; } $.magnificPopup.open({ items:{src:'/public/attachment/'+attachmentId+'?skipNavigation='+skipNavigation, type:'iframe'}, showCloseBtn:true, closeBtnInside:true, closeOnBgClick:true }); } function openInternalFooterPage(footerPageId){ $.magnificPopup.open({ items:{src:'/page/' + footerPageId, type:'iframe'}, showCloseBtn:true, closeBtnInside:true, closeOnBgClick:true, width:1000 }); } function setContactOverlaySize(whatWidth, whatHeight){ $(".mfp-iframe-holder .mfp-content").css({"width":"100%", "max-width":whatWidth + "px", "height":whatHeight + "px"}); } function openContactModerator(){ window.location.href = "/member/messaging/support" } //general delete function function confirmDelete(deleteUrl, title){ var r = confirm("Are you sure you want to delete " + title); if (r == true){ window.location.href = deleteUrl; } } //send Activation email var ajaxSendActivationEmailProcessing = false; function ajaxSendActivationEmail() { if (!ajaxSendActivationEmailProcessing) { ajaxSendActivationEmailProcessing = true; $.ajax({ url: "/member/sendActivationEmail", type: 'POST', dataType: 'json', data: {}, timeout: 10000, success: sendActivationEmailSuccess, error: sendActivationEmailError }); } } function sendActivationEmailSuccess(data, textStatus, XMLHttpRequest) { if (data.error) { $('#sendActivationLink').html('Activation Email Failed'); } else { $('#sendActivationLink').html('\u003Cspan style=\"color: green;\"\u003EActivation Email Sent\u003C\/span\u003E'); } ajaxSendActivationEmailProcessing = false; } function sendActivationEmailError(XMLHttpRequest, textStatus, errorThrown) { ajaxSendActivationEmailProcessing = false; var alertMsg = "Internal Server Error"; if (errorThrown) alertMsg = errorThrown; if (textStatus) alertMsg = "Error " + textStatus + ": " + textStatus; alert(alertMsg); } function toggleMore(contentId) { $('#'+contentId).toggle(); $('#'+contentId+"_full").toggle(); } ///////////////////////////// old code (function() { function initHeaderLinks() { $('#contentFilter').on('click', toggleFilters); $('#filters .inactive a, #filters .active a').on('click', function() { toggleContentType(this); return false; }); } function toggleFilters() { $('#filters').toggleClass('hidden'); $('#contentFilter .arrow').toggleClass('open'); return false; } function toggleContentType(button) { var target = ($(button).parent().hasClass('active')) ? 'inactive' : 'active'; $(button).appendTo($('#filters .' + target)); } function initBoardingPass() { if ($('#createNewContent_boardingpass').length > 0) { var boardingPassInput = $('#createNewContent_boardingpass'), boardingPassElements = $('form.settings li.publish .boardingpass input, form.settings li.publish .boardingpass label'), toggleBoardingPass = function() { var boardingPassInputIsChecked = boardingPassInput.prop('checked'); if (boardingPassInputIsChecked) { boardingPassElements .removeClass('grayed') .unbind('click') .on('click', function(event) { return true; }); } else { boardingPassElements .addClass('grayed') .unbind('click') .on('click', function(event) { event.preventDefault(); }); } }; toggleBoardingPass(); boardingPassInput.on('change', function() { toggleBoardingPass(); }); } } function initModals() { $('.popup_link').magnificPopup({ closeBtnInside: true, midClick: true }); $('.popup .button.cancel').on('click', function() { $('.mfp-close').trigger('click'); return false; }); } $(function() { if ($('.raty').length > 0) { $('.raty.active').raty({ number: 4, size: 22, starOff: 'https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/star_off.png', starOn: 'https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/star_on.png', half : true, starHalf: 'https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/star_half.png', width: false }); $('.raty.readOnly').raty({ number: 4, size: 22, starOff: 'https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/star_off.png', starOn: 'https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/star_on.png', half : true, starHalf: 'https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/img/star_half.png', width: false, readOnly: true, score: 3 }); } initHeaderLinks(); initBoardingPass(); if ($.magnificPopup) { initModals(); } var hideShowCommentLink = $('li.activity h5 .hide, li.activity h5 .show'); hideShowCommentLink.on('click', function() { var thisLink = $(this), isFlagReason = thisLink.hasClass('reason'), thisReason = thisLink.parent().parent().next('.activity.reason'), thisComment = thisLink.parent().next('.comment'), nextComment = thisLink.parent().next('.activity'); if (isFlagReason) { thisReason.toggleClass('hidden'); } else { thisComment.toggleClass('hidden'); nextComment.toggleClass('originalHidden'); } hideShowCommentLink.toggleClass('hidden'); return false; }); }); })(); </script> <script src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v2/js/lib/dropzone-4.0.1.js" type="text/javascript"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v3/mdb/js/mdbOverwrite.js"></script> <!-- Google analytics gtag.js for GA4 --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JHM3DWQ7LH"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-JHM3DWQ7LH'); </script> <!-- enf gtag js--> <title>HMH Educator Input</title> <style>body{background-color:#b9d8e5;background-repeat: no-repeat;background-attachment:scroll;}</style> </head> <body> <div class="main-container"> <div class="container " id="main-content"> <div class="login-page-logo-container" > <img alt="HMH Educator Input" src="https://thinkpassenger-prod.s3.amazonaws.com/company_148/community_275/asset/7nVc4mHRlxfUlEQ.jpg" title="HMH Educator Input"/> </div> <div class="login-page-form-container"> <div class="login-page-form"> <form id="login" name='f' action='/j_spring_security_check' method="post"> <input name="v2" value="v2" type="hidden" /> <input type="hidden" name="CSRFToken" id="CSRFToken" value="uH3JwqVrmAmzeVgbUbd3Hh39cHyDZ9ofyGFsCpyd" /> <div class="md-form"> <input type="text" id="j_username" name="username" class="form-control" > <label id="for_username" for="username" > Email </label> </div> <div class="md-form"> <input type="password" id="j_password" name="password" class="form-control" autocomplete="off"> <label id="for_password" for="password" >Password</label> </div> <div class="login-form-button-container"> <button type="submit" class="btn btn-full btn-primary" value="Login" title="Login">Login</button> <a href="#" data-toggle="modal" data-target="#forgot-password-modal" title="Forgot Password" class="forgot-password" style="text-decoration: underline">Forgot Password</a> </div> </form> <div class="login-join-app-container"> <button class="btn btn-full" id="passwordless-login" data-toggle="modal" data-target="#passwordless-login-modal" title="Email Me A Link"> Email Me A Link </button> </div> </div> </div> </div> </div> <footer class="navbar-fixed-bottom"> <div class="footer-logo-links-container"> <a href="/privacy" target="_blank" title="Privacy">Privacy</a> </div> <div class="footer-text-container container"> <span>HMH<br /> © 2021 HMH Educator Input. All Rights Reserved</span> </div> </footer> <div id="processing-indicator"> <img src="/util/processingImage" /> </div> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v3/mdb/js/mdb.min.js"></script> <script type="text/javascript" src="https://d38mlp4b2cwzzg.cloudfront.net/163/resources/v3/js/login.js"></script> </body> </html> <div class="modal fade" id="passwordless-login-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-show="true" aria-hidden="false" data-backdrop="static"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header text-center"> <h4 class="modal-title">Passwordless Login</h4> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <i class="fal fa-times" aria-hidden="true"></i> </button> </div> <div class="modal-body"> <div class="forgot-password-description"> Please enter your email address to receive a link to log in. </div> <input type="hidden" name="CSRFToken" id="CSRFToken" value="uH3JwqVrmAmzeVgbUbd3Hh39cHyDZ9ofyGFsCpyd" /> <div class="md-form"> <input type="text" class="form-control" name="email" id="email"> <label for="username">Email</label> </div> <div class="modal-button"> <button id="passwordless-login-submit" class="btn" title="Submit"> Submit </button> </div> </div> </div> </div> </div> <div class="modal fade" id="passwordless-login-link-sent-modal" tabindex="-1" role="dialog" aria-hidden="true" data-backdrop="static"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="exampleModalLabel">Passwordless Login Link Sent</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <i class="fal fa-times" aria-hidden="true"></i> </button> </div> <div class="modal-body"> <p>Please check your email. The link to log in has been sent to your inbox.</p> <p>Didn't receive the passwordless login link?</p> <ul class="list"> <li>Check your spam/junk folder</li> <li>Add noply@fuelcyclecore.com to your Address Book</li> </ul> </div> </div> </div> </div> <div class="modal fade" id="forgot-password-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-show="true" aria-hidden="false" data-backdrop="static"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header text-center"> <h4 class="modal-title">Forgot Password</h4> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <i class="fal fa-times" aria-hidden="true"></i> </button> </div> <div class="modal-body"> <div class="forgot-password-description"> To reset your password, enter the email you use to sign in. </div> <input type="hidden" name="CSRFToken" id="CSRFToken" value="uH3JwqVrmAmzeVgbUbd3Hh39cHyDZ9ofyGFsCpyd" /> <div class="md-form"> <input type="text" class="form-control" name="username" id="username"> <label for="username">Email</label> </div> <div class="modal-button"> <button id="forgot-password-submit" class="btn" title="Submit"> Submit </button> </div> </div> </div> </div> </div> <div class="modal fade" id="forgot-password-link-sent-modal" tabindex="-1" role="dialog" aria-hidden="true" data-backdrop="static"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="exampleModalLabel">Reset Password Link Sent</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <i class="fal fa-times" aria-hidden="true"></i> </button> </div> <div class="modal-body"> <p>Please check your email. The information you have requested has been sent to your inbox.</p> <p>Didn't receive the reset password link?</p> <ul class="list"> <li>Check your spam/junk folder</li> <li>Add <em>moderator@hmheducatorinput.com</em> to your Address Book</li> </ul> </div> </div> </div> </div> <div class="modal fade" id="login-info-modal" tabindex="-1" role="dialog" aria-labelledby="loginInfoModalLabel" aria-hidden="true" data-backdrop="static"> <div class="modal-dialog modal-lg" role="document"> <div class="modal-content"> <div class="modal-body"> <div class="button-container"> <button type="button" class="btn" data-dismiss="modal">Close</button> </div> </div> </div> </div> </div> <div class="modal fade" id="internal-footer-page-modal" tabindex="-1" role="dialog" aria-labelledby="internalFooterPageModalLabel" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title"></h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <i class="fal fa-times" aria-hidden="true"></i> </button> </div> <div class="modal-body"> </div> </div> </div> </div> <div class="modal fade" id="join-modal" tabindex="-1" role="dialog" aria-labelledby="joinModalLabel" aria-hidden="true" data-backdrop="static"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-body"> <div class="button-container"> <button type="button" class="btn" data-dismiss="modal">Close</button> </div> </div> </div> </div> </div>