{"version":3,"file":"sitejs.js","mappings":"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","sources":["webpack://TestMasters/./node_modules/to-style/index.js","webpack://TestMasters/./node_modules/to-style/src/cssPrefix.js","webpack://TestMasters/./node_modules/to-style/src/cssUnitless.js","webpack://TestMasters/./node_modules/to-style/src/hasOwn.js","webpack://TestMasters/./node_modules/to-style/src/isFunction.js","webpack://TestMasters/./node_modules/to-style/src/isObject.js","webpack://TestMasters/./node_modules/to-style/src/prefixInfo.js","webpack://TestMasters/./node_modules/to-style/src/prefixProperties.js","webpack://TestMasters/./node_modules/to-style/src/prefixer.js","webpack://TestMasters/./node_modules/to-style/src/stringUtils/camelize.js","webpack://TestMasters/./node_modules/to-style/src/stringUtils/hyphenRe.js","webpack://TestMasters/./node_modules/to-style/src/stringUtils/hyphenate.js","webpack://TestMasters/./node_modules/to-style/src/stringUtils/separate.js","webpack://TestMasters/./node_modules/to-style/src/stringUtils/toLowerFirst.js","webpack://TestMasters/./node_modules/to-style/src/stringUtils/toUpperFirst.js","webpack://TestMasters/./node_modules/to-style/src/toStyleObject.js","webpack://TestMasters/./node_modules/to-style/src/toStyleString.js","webpack://TestMasters/./src/js/site.ts","webpack://TestMasters/./src/js/site/autotimezone.ts","webpack://TestMasters/./src/js/site/diaginstructions.ts","webpack://TestMasters/./src/js/site/explaindraw.ts","webpack://TestMasters/./src/js/site/explainvideo.ts","webpack://TestMasters/./src/js/site/explainwritten.ts","webpack://TestMasters/./src/js/site/formtools.ts","webpack://TestMasters/./src/js/site/lessonplan.ts","webpack://TestMasters/./src/js/site/lsatsearch.ts","webpack://TestMasters/./src/js/site/monitor.ts","webpack://TestMasters/./src/js/site/problempage.ts","webpack://TestMasters/./src/js/site/questionshowinfo.ts","webpack://TestMasters/./src/js/site/questionshowinfo2.ts","webpack://TestMasters/./src/js/site/showanswerbutton.ts","webpack://TestMasters/./src/js/site/startup.ts","webpack://TestMasters/./src/js/site/writingsample.ts","webpack://TestMasters/./src/js/site/writtensetup.ts","webpack://TestMasters/external var \"jQuery\"","webpack://TestMasters/webpack/bootstrap","webpack://TestMasters/webpack/startup"],"sourcesContent":["'use strict'\n\nmodule.exports = {\n prefixProperties: require('./src/prefixProperties') ,\n cssUnitless: require('./src/cssUnitless') ,\n object: require('./src/toStyleObject'),\n string: require('./src/toStyleString')\n}","module.exports = require('./prefixer')()","'use exports'\n\n//make sure properties are in hyphenated form\n\nmodule.exports = {\n 'animation' : 1,\n 'column-count' : 1,\n 'columns' : 1,\n 'font-weight' : 1,\n 'opacity' : 1,\n 'order ' : 1,\n 'z-index' : 1,\n 'zoom' : 1,\n 'flex' : 1,\n 'box-flex' : 1,\n 'transform' : 1,\n 'perspective' : 1,\n 'box-pack' : 1,\n 'box-align' : 1,\n 'colspan' : 1,\n 'rowspan' : 1\n}","'use strict'\n\nvar objectHasOwn = Object.prototype.hasOwnProperty\n\nmodule.exports = function(object, propertyName){\n return objectHasOwn.call(object, propertyName)\n}","'use strict'\n\nvar objectToString = Object.prototype.toString\n\nmodule.exports = function(v) {\n return objectToString.apply(v) === '[object Function]'\n}\n","'use strict'\n\nvar objectToString = Object.prototype.toString\n\nmodule.exports = function(v){\n return !!v && objectToString.call(v) === '[object Object]'\n}\n\n","'use strict';\n\nvar toUpperFirst = require('./stringUtils/toUpperFirst')\n\nvar re = /^(Moz|Webkit|Khtml|O|ms|Icab)(?=[A-Z])/\n\nvar docStyle = typeof document == 'undefined'?\n {}:\n document.documentElement.style\n\nvar prefixInfo = (function(){\n\n var prefix = (function(){\n\n for (var prop in docStyle) {\n if( re.test(prop) ) {\n // test is faster than match, so it's better to perform\n // that on the lot and match only when necessary\n return prop.match(re)[0]\n }\n }\n\n // Nothing found so far? Webkit does not enumerate over the CSS properties of the style object.\n // However (prop in style) returns the correct value, so we'll have to test for\n // the precence of a specific property\n if ('WebkitOpacity' in docStyle){\n return 'Webkit'\n }\n\n if ('KhtmlOpacity' in docStyle) {\n return 'Khtml'\n }\n\n return ''\n })(),\n\n lower = prefix.toLowerCase()\n\n return {\n style : prefix,\n css : '-' + lower + '-',\n dom : ({\n Webkit: 'WebKit',\n ms : 'MS',\n o : 'WebKit'\n })[prefix] || toUpperFirst(prefix)\n }\n\n})()\n\nmodule.exports = prefixInfo","module.exports = {\n 'border-radius' : 1,\n 'border-top-left-radius' : 1,\n 'border-top-right-radius' : 1,\n 'border-bottom-left-radius' : 1,\n 'border-bottom-right-radius' : 1,\n 'box-shadow' : 1,\n 'order' : 1,\n 'flex' : function(name, prefix){\n return [prefix + 'box-flex']\n },\n 'box-flex' : 1,\n 'box-align' : 1,\n 'animation' : 1,\n 'animation-duration' : 1,\n 'animation-name' : 1,\n 'transition' : 1,\n 'transition-duration' : 1,\n 'transform' : 1,\n 'transform-style' : 1,\n 'transform-origin' : 1,\n 'backface-visibility' : 1,\n 'perspective' : 1,\n 'box-pack' : 1\n}","'use strict'\n\nvar camelize = require('./stringUtils/camelize')\nvar hyphenate = require('./stringUtils/hyphenate')\nvar toLowerFirst = require('./stringUtils/toLowerFirst')\nvar toUpperFirst = require('./stringUtils/toUpperFirst')\n\nvar prefixInfo = require('./prefixInfo')\nvar prefixProperties = require('./prefixProperties')\n\nvar docStyle = typeof document == 'undefined'?\n {}:\n document.documentElement.style\n\nmodule.exports = function(asStylePrefix){\n\n return function(name, config){\n config = config || {}\n\n var styleName = toLowerFirst(camelize(name)),\n cssName = hyphenate(name),\n\n theName = asStylePrefix?\n styleName:\n cssName,\n\n thePrefix = prefixInfo.style?\n asStylePrefix?\n prefixInfo.style:\n prefixInfo.css\n :\n ''\n\n if ( styleName in docStyle ) {\n return config.asString?\n theName :\n [ theName ]\n }\n\n //not a valid style name, so we'll return the value with a prefix\n\n var upperCased = theName,\n prefixProperty = prefixProperties[cssName],\n result = []\n\n if (asStylePrefix){\n upperCased = toUpperFirst(theName)\n }\n\n if (typeof prefixProperty == 'function'){\n var prefixedCss = prefixProperty(theName, thePrefix) || []\n if (prefixedCss && !Array.isArray(prefixedCss)){\n prefixedCss = [prefixedCss]\n }\n\n if (prefixedCss.length){\n prefixedCss = prefixedCss.map(function(property){\n return asStylePrefix?\n toLowerFirst(camelize(property)):\n hyphenate(property)\n\n })\n }\n\n result = result.concat(prefixedCss)\n }\n\n if (thePrefix){\n result.push(thePrefix + upperCased)\n }\n\n result.push(theName)\n\n if (config.asString || result.length == 1){\n return result[0]\n }\n\n return result\n }\n}","'use strict'\n\nvar toCamelFn = function(str, letter){\n return letter ? letter.toUpperCase(): ''\n }\n\nvar hyphenRe = require('./hyphenRe')\n\nmodule.exports = function(str){\n return str?\n str.replace(hyphenRe, toCamelFn):\n ''\n}","module.exports = /[-\\s]+(.)?/g","'use strict'\n\nvar separate = require('./separate')\n\nmodule.exports = function(name){\n return separate(name).toLowerCase()\n}","'use strict'\n\nvar doubleColonRe = /::/g\nvar upperToLowerRe = /([A-Z]+)([A-Z][a-z])/g\nvar lowerToUpperRe = /([a-z\\d])([A-Z])/g\nvar underscoreToDashRe = /_/g\n\nmodule.exports = function(name, separator){\n\n return name?\n name.replace(doubleColonRe, '/')\n .replace(upperToLowerRe, '$1_$2')\n .replace(lowerToUpperRe, '$1_$2')\n .replace(underscoreToDashRe, separator || '-')\n :\n ''\n}","'use strict'\n\nmodule.exports = function(value){\n return value.length?\n value.charAt(0).toLowerCase() + value.substring(1):\n value\n}","'use strict'\n\nmodule.exports = function(value){\n return value.length?\n value.charAt(0).toUpperCase() + value.substring(1):\n value\n}","'use strict'\n\nvar prefixInfo = require('./prefixInfo')\nvar cssPrefixFn = require('./cssPrefix')\n\nvar HYPHENATE = require('./stringUtils/hyphenate')\nvar CAMELIZE = require('./stringUtils/camelize')\nvar HAS_OWN = require('./hasOwn')\nvar IS_OBJECT = require('./isObject')\nvar IS_FUNCTION = require('./isFunction')\n\nvar applyPrefix = function(target, property, value, normalizeFn){\n cssPrefixFn(property).forEach(function(p){\n target[normalizeFn? normalizeFn(p): p] = value\n })\n}\n\nvar toObject = function(str){\n str = (str || '').split(';')\n\n var result = {}\n\n str.forEach(function(item){\n var split = item.split(':')\n\n if (split.length == 2){\n result[split[0].trim()] = split[1].trim()\n }\n })\n\n return result\n}\n\nvar CONFIG = {\n cssUnitless: require('./cssUnitless')\n}\n\n/**\n * @ignore\n * @method toStyleObject\n *\n * @param {Object} styles The object to convert to a style object.\n * @param {Object} [config]\n * @param {Boolean} [config.addUnits=true] True if you want to add units when numerical values are encountered.\n * @param {Object} config.cssUnitless An object whose keys represent css numerical property names that will not be appended with units.\n * @param {Object} config.prefixProperties An object whose keys represent css property names that should be prefixed\n * @param {String} config.cssUnit='px' The css unit to append to numerical values. Defaults to 'px'\n * @param {String} config.normalizeName A function that normalizes a name to a valid css property name\n * @param {String} config.scope\n *\n * @return {Object} The object, normalized with css style names\n */\nvar TO_STYLE_OBJECT = function(styles, config, prepend, result){\n\n if (typeof styles == 'string'){\n styles = toObject(styles)\n }\n\n config = config || CONFIG\n\n config.cssUnitless = config.cssUnitless || CONFIG.cssUnitless\n\n result = result || {}\n\n var scope = config.scope || {},\n\n //configs\n addUnits = config.addUnits != null?\n config.addUnits:\n scope && scope.addUnits != null?\n scope.addUnits:\n true,\n\n cssUnitless = (config.cssUnitless != null?\n config.cssUnitless:\n scope?\n scope.cssUnitless:\n null) || {},\n cssUnit = (config.cssUnit || scope? scope.cssUnit: null) || 'px',\n prefixProperties = (config.prefixProperties || (scope? scope.prefixProperties: null)) || {},\n\n camelize = config.camelize,\n normalizeFn = camelize? CAMELIZE: HYPHENATE\n\n // Object.keys(cssUnitless).forEach(function(key){\n // cssUnitless[normalizeFn(key)] = 1\n // })\n\n var processed,\n styleName,\n\n propName,\n propValue,\n propCssUnit,\n propType,\n propIsNumber,\n\n fnPropValue,\n prefix\n\n for (propName in styles) if (HAS_OWN(styles, propName)) {\n\n propValue = styles[ propName ]\n\n //the hyphenated style name (css property name)\n styleName = HYPHENATE(prepend? prepend + propName: propName)\n\n processed = false\n prefix = false\n\n if (IS_FUNCTION(propValue)) {\n\n //a function can either return a css value\n //or an object with { value, prefix, name }\n fnPropValue = propValue.call(scope || styles, propValue, propName, styleName, styles)\n\n if (IS_OBJECT(fnPropValue) && fnPropValue.value != null){\n\n propValue = fnPropValue.value\n prefix = fnPropValue.prefix\n styleName = fnPropValue.name?\n HYPHENATE(fnPropValue.name):\n styleName\n\n } else {\n propValue = fnPropValue\n }\n }\n\n propType = typeof propValue\n propIsNumber = propType == 'number' || (propType == 'string' && propValue != '' && propValue * 1 == propValue)\n\n if (propValue == null || styleName == null || styleName === ''){\n continue\n }\n\n if (propIsNumber || propType == 'string'){\n processed = true\n }\n\n if (!processed && propValue.value != null && propValue.prefix){\n processed = true\n prefix = propValue.prefix\n propValue = propValue.value\n }\n\n // hyphenStyleName = camelize? HYPHENATE(styleName): styleName\n\n if (processed){\n\n prefix = prefix || !!prefixProperties[styleName]\n\n if (propIsNumber){\n propValue = addUnits && !(styleName in cssUnitless) ?\n propValue + cssUnit:\n propValue + ''//change it to a string, so that jquery does not append px or other units\n }\n\n //special border treatment\n if (\n (\n styleName == 'border' ||\n (!styleName.indexOf('border')\n &&\n !~styleName.indexOf('radius')\n &&\n !~styleName.indexOf('width'))\n ) &&\n propIsNumber\n ){\n\n styleName = styleName + '-width'\n }\n\n //special border radius treatment\n if (!styleName.indexOf('border-radius-')){\n styleName.replace(/border(-radius)(-(.*))/, function(str, radius, theRest){\n var positions = {\n '-top' : ['-top-left', '-top-right' ],\n '-left' : ['-top-left', '-bottom-left' ],\n '-right' : ['-top-right', '-bottom-right'],\n '-bottom' : ['-bottom-left', '-bottom-right']\n }\n\n if (theRest in positions){\n styleName = []\n\n positions[theRest].forEach(function(pos){\n styleName.push('border' + pos + radius)\n })\n } else {\n styleName = 'border'+ theRest + radius\n }\n\n })\n\n if (Array.isArray(styleName)){\n styleName.forEach(function(styleName){\n if (prefix){\n applyPrefix(result, styleName, propValue, normalizeFn)\n } else {\n result[normalizeFn(styleName)] = propValue\n }\n })\n\n continue\n }\n }\n\n if (prefix){\n applyPrefix(result, styleName, propValue, normalizeFn)\n } else {\n result[normalizeFn(styleName)] = propValue\n }\n\n } else {\n //the propValue must be an object, so go down the hierarchy\n TO_STYLE_OBJECT(propValue, config, styleName + '-', result)\n }\n }\n\n return result\n}\n\nmodule.exports = TO_STYLE_OBJECT","'use strict'\n\nvar toStyleObject = require('./toStyleObject')\nvar hasOwn = require('./hasOwn')\n\n/**\n * @ignore\n * @method toStyleString\n *\n * @param {Object} styles The object to convert to a style string.\n * @param {Object} config\n * @param {Boolean} config.addUnits=true True if you want to add units when numerical values are encountered. Defaults to true\n * @param {Object} config.cssUnitless An object whose keys represent css numerical property names that will not be appended with units.\n * @param {Object} config.prefixProperties An object whose keys represent css property names that should be prefixed\n * @param {String} config.cssUnit='px' The css unit to append to numerical values. Defaults to 'px'\n * @param {String} config.scope\n *\n * @return {Object} The object, normalized with css style names\n */\nmodule.exports = function(styles, config){\n styles = toStyleObject(styles, config)\n\n var result = []\n var prop\n\n for(prop in styles) if (hasOwn(styles, prop)){\n result.push(prop + ': ' + styles[prop])\n }\n\n return result.join('; ')\n}","import './site/startup';\r\nexport * from './site/formtools';\r\nexport * from './site/writtensetup';\r\nexport { ExplainDraw } from './site/explaindraw';\r\nexport { QuestionShowInfo } from './site/questionshowinfo';\r\nexport { ProblemPage } from './site/problempage';\r\nexport { LsatSearch } from './site/lsatsearch';\r\nexport { DiagInstructions } from './site/diaginstructions';\r\nexport { LessonPlan } from './site/lessonplan';\r\nexport { QuestionShowInfo2 } from './site/questionshowinfo2';\r\nexport { ShowAnswerButton } from './site/showanswerbutton';\r\nexport { ExplainVideo } from './site/explainvideo';\r\nexport { ExplainWritten } from './site/explainwritten';\r\nexport { WritingSample } from './site/writingsample';\r\nexport { AutoTimeZone } from './site/autotimezone';\r\nexport { Monitor } from './site/monitor';\r\n","import * as $ from 'jquery';\r\n\r\nconst ZONEDEFAULT = \"PT\";\r\n//const MDASH = \"—\";\r\n//const NDASH = \"–\";\r\nconst RANGESEPARATOR = \" – \";\r\n\r\nconst zoneadjust = {\r\n 'PT': 0,\r\n 'MT': 60,\r\n 'CT': 120,\r\n 'ET': 180\r\n}\r\n\r\nconst zonenamelong = {\r\n 'PT': 'Pacific Time',\r\n 'MT': 'Mountain Time',\r\n 'CT': 'Central Time',\r\n 'ET': 'Eastern Time'\r\n}\r\n\r\nconst recognizedzones = {\r\n \"America/Los_Angeles\": \"PT\",\r\n \"America/Denver\": \"MT\",\r\n \"America/Chicago\": \"CT\",\r\n \"America/New_York\": \"ET\"\r\n}\r\n\r\nfunction getBrowserTimeZoneCode(): string {\r\n try {\r\n const browserTZ = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n //console.log(\"Browser timezone=\" + browserTZ);\r\n if (browserTZ) {\r\n var mappedzone = recognizedzones[browserTZ];\r\n if (mappedzone) {\r\n return mappedzone;\r\n }\r\n }\r\n }\r\n catch (error) {\r\n }\r\n return ZONEDEFAULT;\r\n}\r\n\r\nexport class AutoTimeZone {\r\n myzone: string;\r\n myadjust: number;\r\n myzonename: number;\r\n\r\n constructor() {\r\n this.myzone = getBrowserTimeZoneCode();\r\n this.myadjust = zoneadjust[this.myzone];\r\n this.myzonename = zonenamelong[this.myzone];\r\n }\r\n\r\n fixAutoTimes() {\r\n const self = this;\r\n // find auto time numbers\r\n const $autotimes = $('.autotz-time');\r\n $autotimes.each(function () {\r\n self.fixTime($(this));\r\n });\r\n const $autotimerange = $('.autotz-range');\r\n $autotimerange.each(function () {\r\n self.fixTimeRange($(this));\r\n });\r\n const $autotimezone = $('.autotz-timezone');\r\n $autotimezone.each(function () {\r\n self.fixTimezone($(this));\r\n });\r\n const $autotimezoneshort = $('.autotz-timezoneshort');\r\n $autotimezoneshort.each(function () {\r\n self.fixTimezoneShort($(this));\r\n });\r\n }\r\n\r\n // Show a time adjusted for timezone\r\n private fixTime($autotime: JQuery) {\r\n const startmin: number = parseInt(($autotime.data(\"startmin\")));\r\n const startminadjust = startmin + this.getTotalAdjustment($autotime);\r\n\r\n const text = this.formatMinutes(startminadjust);\r\n $autotime.text(text);\r\n }\r\n\r\n // Show a time range adjusted for timezone\r\n private fixTimeRange($autotime: JQuery) {\r\n const startmin: number = parseInt(($autotime.data(\"startmin\")));\r\n const endmin: number = parseInt(($autotime.data(\"endmin\")));\r\n const adjustment = this.getTotalAdjustment($autotime);\r\n const startminadjust = startmin + adjustment;\r\n const endminadjust = endmin + adjustment;\r\n\r\n const text = this.formatMinutes(startminadjust) + RANGESEPARATOR + this.formatMinutes(endminadjust);\r\n $autotime.text(text);\r\n }\r\n\r\n // Show a shortened timezone\r\n private fixTimezoneShort($autotime: JQuery) {\r\n $autotime.text(this.myzone);\r\n }\r\n\r\n // Show a timezone\r\n private fixTimezone($autotime: JQuery) {\r\n $autotime.text(this.myzonename);\r\n }\r\n\r\n // Calculates how much we should adjust the time\r\n private getTotalAdjustment($autotime: JQuery): number {\r\n const timezone: string = $autotime.data(\"timezone\");\r\n if (timezone) {\r\n const tzadjust = zoneadjust[timezone];\r\n if (tzadjust) {\r\n return this.myadjust - tzadjust;\r\n }\r\n }\r\n\r\n return this.myadjust;\r\n }\r\n\r\n /* Don't show the minutes if ===0 */\r\n formatMinutes(totalminutes: number): string {\r\n const hour = Math.floor(totalminutes / 60);\r\n const minute = totalminutes - (hour * 60);\r\n const isPm = hour >= 12;\r\n const ampm = isPm ? \"PM\" : \"AM\";\r\n const hour12 = hour === 0 ? 12 : (hour > 12 ? hour - 12 : hour);\r\n\r\n if (minute === 0) {\r\n return hour12.toString() + ampm;\r\n }\r\n else {\r\n const smin = minute > 10 ? minute.toString() : \"0\" + minute;\r\n return hour12.toString() + \":\" + smin + ampm;\r\n }\r\n }\r\n}","import * as $ from 'jquery';\r\n\r\nexport class DiagInstructions {\r\n $pages: JQuery;\r\n $titles: JQuery;\r\n $controlNext: JQuery;\r\n $controlPrev: JQuery;\r\n $controlFinish: JQuery;\r\n currentPageIndex: number;\r\n pageCount: number;\r\n\r\n constructor() {\r\n const self = this;\r\n this.$pages = $(\".instructions-pages .page\");\r\n this.$titles = $(\".instructions-titles .title\");\r\n this.currentPageIndex = 0;\r\n this.pageCount = this.$pages.length;\r\n this.$controlNext = $(\"#control-nextpage\");\r\n this.$controlPrev = $(\"#control-prevpage\");\r\n this.$controlFinish = $(\"#control-finish\").hide();\r\n\r\n $(\"#butNextPage\").on(\"click\",function () {\r\n if (self.currentPageIndex < self.pageCount - 1) {\r\n self.currentPageIndex++;\r\n }\r\n self.updateHash(false);\r\n self.updateVisiblePages();\r\n });\r\n\r\n $(\"#butPrevPage\").on(\"click\", function () {\r\n if (self.currentPageIndex > 0) {\r\n self.currentPageIndex--;\r\n }\r\n self.updateHash(false);\r\n self.updateVisiblePages();\r\n });\r\n\r\n window.onpopstate = (event: PopStateEvent) => self.handleHistory(event);\r\n\r\n const hash = window.location.hash;\r\n if (hash) {\r\n // pageno is the hash\r\n const pageno = parseInt(hash.substring(1));\r\n if (pageno && pageno > 0 && pageno < this.pageCount) {\r\n this.currentPageIndex = pageno;\r\n }\r\n }\r\n\r\n self.updateHash(true);\r\n self.updateVisiblePages();\r\n }\r\n\r\n handleHistory(event: PopStateEvent) {\r\n if (event.state) {\r\n const pageno = event.state.page;\r\n this.currentPageIndex = pageno;\r\n this.updateVisiblePages();\r\n }\r\n }\r\n\r\n updateVisiblePages() {\r\n this.$pages.hide();\r\n this.$pages.eq(this.currentPageIndex).show();\r\n this.$titles.hide();\r\n this.$titles.eq(this.currentPageIndex).css('display', 'inline-block');\r\n this.showButton(this.$controlPrev, this.currentPageIndex > 0);\r\n\r\n const onLastPage = this.currentPageIndex >= this.pageCount - 1;\r\n this.showButton(this.$controlNext, !onLastPage);\r\n this.showButton(this.$controlFinish, onLastPage);\r\n $(\".instructions-pages\").scrollTop(0);\r\n }\r\n\r\n updateHash(replace: boolean) {\r\n if (history.pushState) {\r\n const hash = \"#\" + this.currentPageIndex;\r\n if (replace) {\r\n history.replaceState({ page: this.currentPageIndex }, null, hash);\r\n }\r\n else {\r\n history.pushState({ page: this.currentPageIndex }, null, hash);\r\n }\r\n }\r\n }\r\n\r\n showButton($but: JQuery, show: boolean) {\r\n if (show) {\r\n $but.css('display', 'inline-block');\r\n }\r\n else {\r\n $but.hide();\r\n }\r\n }\r\n}","import * as $ from 'jquery';\r\nimport { string as toStyleString } from \"to-style\";\r\n\r\ninterface ExplainDrawItem {\r\n width: number;\r\n height: number;\r\n x: number;\r\n y: number;\r\n image: string;\r\n}\r\n\r\ninterface ExplainDrawImages {\r\n width: number;\r\n height: number;\r\n basepath: string;\r\n error: string;\r\n images: Array;\r\n}\r\n\r\nexport class ExplainDraw {\r\n eimages: ExplainDrawImages\r\n $container: JQuery;\r\n explainLinkSuffix: string;\r\n readonly maxcanvasheight = 6000;\r\n readonly standardcanvaswidth = 700;\r\n useScale: boolean;\r\n scaleFactor: number;\r\n totalWidth: number;\r\n totalHeight: number;\r\n calcCanvasWidth: number;\r\n\r\n constructor(containerid: string, canvaswidth?: number) {\r\n this.$container = $(\"#\" + containerid);\r\n this.explainLinkSuffix = \"\";\r\n\r\n if (canvaswidth) {\r\n this.calcCanvasWidth = canvaswidth;\r\n }\r\n else {\r\n this.calcCanvasWidth = this.standardcanvaswidth;\r\n }\r\n }\r\n\r\n calculateScale() {\r\n if (this.eimages.width > this.calcCanvasWidth) {\r\n this.useScale = true;\r\n this.scaleFactor = this.calcCanvasWidth / this.eimages.width;\r\n this.totalWidth = this.calcCanvasWidth;\r\n this.totalHeight = this.eimages.height * this.scaleFactor;\r\n }\r\n else {\r\n this.useScale = false;\r\n this.scaleFactor = 1;\r\n this.totalWidth = this.eimages.width;\r\n this.totalHeight = this.eimages.height;\r\n }\r\n }\r\n\r\n loadData(explainid: number, code: string, hasBlueBar: boolean) {\r\n if (!explainid) {\r\n return;\r\n }\r\n const self = this;\r\n const explainurl = '/Explain2/Images/' + explainid + \"?code=\" + encodeURIComponent(code);\r\n $.getJSON(explainurl, function (data) {\r\n self.eimages = data;\r\n self.calculateScale();\r\n self.draw(hasBlueBar);\r\n });\r\n }\r\n\r\n loadDataGame(gamefile: string, code: string, hasBlueBar: boolean) {\r\n if (!gamefile) {\r\n return;\r\n }\r\n const self = this;\r\n const explainurl = '/Explain2/ImagesGame?file=' + encodeURIComponent(gamefile) +\r\n \"&code=\" + encodeURIComponent(code);\r\n $.getJSON(explainurl, function (data) {\r\n self.eimages = data;\r\n self.calculateScale();\r\n self.draw(hasBlueBar);\r\n });\r\n }\r\n\r\n getImageHtml(item: ExplainDrawItem): string {\r\n const imageurl = this.eimages.basepath + item.image;\r\n const style = {\r\n backgroundImage: \"url(\" + imageurl + \")\",\r\n width: (item.width * this.scaleFactor) + \"px\",\r\n height: (item.height * this.scaleFactor) + \"px\",\r\n left: (item.x * this.scaleFactor) + \"px\",\r\n top: (item.y * this.scaleFactor) + \"px\"\r\n };\r\n\r\n return \"
\";\r\n }\r\n\r\n draw(hasBlueBar: boolean) {\r\n const cssClass =\r\n hasBlueBar ? \"explain-imgwrapper explain-hasbluebar\" : \"explain-imgwrapper\";\r\n\r\n let html = \"
\";\r\n\r\n if (this.eimages.error) {\r\n html += \"
\";\r\n html += this.eimages.error;\r\n html += \"
\";\r\n }\r\n else {\r\n const style = {\r\n width: (this.eimages.width * this.scaleFactor) + \"px\",\r\n height: (this.eimages.height * this.scaleFactor) + \"px\"\r\n }\r\n html += \"
\";\r\n for (var img of this.eimages.images) {\r\n html += this.getImageHtml(img);\r\n }\r\n html += \"
\";\r\n }\r\n\r\n html += \"
\";\r\n\r\n this.$container.html(html);\r\n }\r\n}\r\n\r\n\r\n\r\n","import * as $ from 'jquery';\r\n\r\nexport class ExplainVideo {\r\n $tabs: JQuery;\r\n $tabsli: JQuery;\r\n videoplaying: boolean;\r\n explainHidden: boolean;\r\n constructor() {\r\n const self = this;\r\n this.$tabs = $('.tabs');\r\n this.$tabsli = this.$tabs.find('li');\r\n this.videoplaying = false;\r\n this.explainHidden = true;\r\n\r\n // register the tabs\r\n this.$tabs.find('#question-tab').on(\"click\",function () {\r\n self.showQuestionTab();\r\n });\r\n this.$tabs.find('#video-tab').on(\"click\", function () {\r\n self.showVideoTab();\r\n });\r\n this.$tabs.find('#answerkey-tab').on(\"click\", function () {\r\n self.showAnswerKeyTab();\r\n });\r\n\r\n $('#video-help .link').on(\"click\", function () {\r\n const explainid = parseInt($(this).data(\"explainid\"));\r\n const explaincode = $(this).data(\"explaincode\");\r\n self.showExplainIframe(explainid, explaincode);\r\n })\r\n }\r\n\r\n showExplainIframe(id: number, code: string) {\r\n ($(\"#dialog-special\")).dialog({\r\n modal: true,\r\n width: 790,\r\n resizable: false\r\n });\r\n $('#explain-special')\r\n .attr(\"src\", \"/explain/inset/\" + id + \"?code=\" + encodeURIComponent(code));\r\n }\r\n\r\n showExplainTab(tabname: string) {\r\n if (tabname == 'question') {\r\n this.showQuestionTab();\r\n } else if (tabname == 'answerkey') {\r\n this.showAnswerKeyTab();\r\n } else {\r\n this.showVideoTab();\r\n }\r\n\r\n if (this.explainHidden) {\r\n $(\".explain-hidden\").removeClass('explain-hidden');\r\n this.explainHidden = false;\r\n }\r\n }\r\n\r\n showVideoTab() {\r\n this.showTab($('#video-tab'));\r\n if (!this.videoplaying) {\r\n const $vidbox = $('#video-box');\r\n const dataiframe = $vidbox.data(\"iframe\");\r\n const html = '
';\r\n $vidbox.prepend(html);\r\n this.videoplaying = true;\r\n }\r\n $('#video-help,#video-box').show();\r\n $('#video-box').css({ \"width\": \"100%\", opacity: 1 });\r\n $('#question-box,#answerkey-box').hide();\r\n }\r\n\r\n showQuestionTab() {\r\n this.showTab($('#question-tab'));\r\n $('#question-box').show();\r\n this.hideVideoTab();\r\n $('#answerkey-box').hide();\r\n }\r\n\r\n showAnswerKeyTab() {\r\n this.showTab($('#answerkey-tab'));\r\n $('#answerkey-box').show();\r\n $('#question-box').hide();\r\n this.hideVideoTab();\r\n }\r\n\r\n hideVideoTab() {\r\n $('#videospacertop,#videospacerbottom,#video-help').hide();\r\n $('#video-box').css({ \"width\": \"1px\", opacity: 0.01 });\r\n }\r\n\r\n showTab($tab: JQuery) {\r\n this.$tabsli.removeClass('current');\r\n $tab.addClass('current');\r\n }\r\n}\r\n","import * as $ from 'jquery';\r\n\r\nexport class ExplainWritten {\r\n $tabs: JQuery;\r\n $tabsli: JQuery;\r\n explainHidden: boolean;\r\n constructor() {\r\n // register the tabs\r\n const self = this;\r\n this.explainHidden = true;\r\n\r\n this.$tabs = $('.tabs');\r\n this.$tabsli = this.$tabs.find('li');\r\n\r\n this.$tabsli.on(\"click\", function () {\r\n self.showExplainTab(self.getExplainTabName($(this)));\r\n });\r\n }\r\n\r\n showExplainTab(tabname: string) {\r\n this.$tabsli.removeClass('current');\r\n $('.tabbox').hide();\r\n let $seltab = this.$tabs.find('#' + tabname + '-tab');\r\n if ($seltab.length === 0) {\r\n $seltab = this.$tabsli.first();\r\n tabname = this.getExplainTabName($seltab)\r\n }\r\n $seltab.addClass('current');\r\n $(\"#\" + tabname + \"-box\").show();\r\n\r\n if (this.explainHidden) {\r\n $(\".explain-hidden\").removeClass('explain-hidden');\r\n this.explainHidden = false;\r\n }\r\n }\r\n\r\n getExplainTabName($tab):string {\r\n const tabid = $tab.attr(\"id\");\r\n const starttab = tabid.indexOf(\"-tab\");\r\n return tabid.substring(0, starttab);\r\n }\r\n}\r\n\r\n\r\n","import * as $ from 'jquery';\r\n\r\nexport namespace FormTools {\r\n\r\n interface DropDownData {\r\n Value: string;\r\n Text: string;\r\n }\r\n\r\n export function populateDropDownChange($parent: JQuery, $child: JQuery, baseurl: string, selecttext: string) {\r\n $parent.on(\"change\",function () {\r\n populateDropDown($parent, $child, baseurl, selecttext);\r\n });\r\n }\r\n\r\n export function populateDropDown($parent: JQuery, $child: JQuery, baseurl: string, selecttext: string) {\r\n const parentval = ($parent.val());\r\n if (!parentval) {\r\n clearDropDown($child, selecttext);\r\n }\r\n else {\r\n $.getJSON(baseurl + parentval, {}, function (data: Array, textStatus) {\r\n fillDropDownJson($child, data, selecttext);\r\n });\r\n }\r\n }\r\n\r\n export function clearDropDown($child: JQuery, selecttext: string) {\r\n $child.html(''); // empty the select\r\n $child.append($(''));\r\n }\r\n\r\n export function fillDropDownJson($dd: JQuery, json: Array, selecttext: string) {\r\n let myselect = '\";\r\n for (let jsonData of json) {\r\n myselect += \"\";\r\n }\r\n $dd.html(''); // empty the select\r\n $dd.append(myselect);\r\n }\r\n\r\n export function fillDropDownStrings($dd: JQuery, datalist: Array, selecttext: string) {\r\n let myselect = '\";\r\n for (let dataitem of datalist) {\r\n myselect += \"\";\r\n }\r\n $dd.html(''); // empty the select\r\n $dd.append(myselect);\r\n }\r\n\r\n export function fillDropDownOnRadio($radiolist: JQuery, $dd: JQuery, jsonobject: object) {\r\n $radiolist.on(\"click\", function () {\r\n const value = $(this).val();\r\n const arr = jsonobject[value];\r\n if (arr) {\r\n $dd.show();\r\n fillDropDownJson($dd, arr, 'Select');\r\n } else {\r\n $dd.hide();\r\n }\r\n });\r\n }\r\n\r\n export function fillDropDownOnSelection($radiolist: JQuery, $dd: JQuery, jsonobject: object) {\r\n const $checked = $radiolist.filter(\":checked\");\r\n if ($checked.length > 0) {\r\n const value = $checked.val();\r\n if (value) {\r\n const arr = jsonobject[value];\r\n if (arr) {\r\n $dd.show();\r\n fillDropDownJson($dd, arr, 'Select');\r\n } else {\r\n $dd.hide();\r\n }\r\n }\r\n }\r\n }\r\n}","import * as $ from 'jquery';\r\nvar HistoryJS: any = History; // to trick typescript to compile\r\n\r\n\r\nconst PADDINGADJUST = -16;\r\nconst AKPADDINGADJUST = - 42;\r\n\r\nexport class LessonPlan {\r\n pagename: string;\r\n urlParams: { [id: string]: string };\r\n readonly regPlus = /\\+/g; // Regex for replacing addition symbol with a space\r\n readonly search = /([^&=]+)=?([^&]*)/g;\r\n\r\n constructor() {\r\n const self = this;\r\n // links to explanations\r\n $('.PlanContent .explain, .PlanContent .explainmini, .PlanContent .explainline').on(\"click\", function () {\r\n const $explain = $(this);\r\n const explainid = $explain.data(\"explainid\");\r\n const code = $explain.data(\"code\");\r\n const url = \"/lsatexplain3/setup.ashx?id=\" + encodeURIComponent(explainid) + \"&code=\" + encodeURIComponent(code);\r\n window.location.href = url;\r\n });\r\n $('.PlanContent .drill').on(\"click\", function () {\r\n const $drill = $(this);\r\n const drillid = $drill.data(\"drillid\");\r\n const code = $drill.data(\"code\");\r\n const url = \"/drill/view.ashx?ID=\" + encodeURIComponent(drillid) + \"&code=\" + encodeURIComponent(code);\r\n window.location.href = url;\r\n });\r\n\r\n $('.PlanContent .aklr .title').on(\"click\", function () {\r\n $(this).parent().toggleClass(\"expand\");\r\n self.saveExpanded();\r\n });\r\n $('.PlanContent .akprob .title').on(\"click\", function () {\r\n $(this).parent().toggleClass(\"expand\");\r\n self.saveExpanded();\r\n });\r\n\r\n // fix width of \r\n const PlanContentWidth = $('.PlanContent').width();\r\n const $explainmove = $('.PlanContent .explain,.PlanContent .drill');\r\n const $explainlinks = $explainmove.find(\".title\");\r\n const explainlinksmaxwidth = this.calcMaxWidth($explainlinks);\r\n\r\n const $answerkeymove = $('.PlanContent .aklr,.PlanContent .akprob,.PlanContent .lunitcategory');\r\n const $answerkeylinks = $answerkeymove.find(\".title .text\");\r\n const answerkeymaxwidth = this.calcMaxWidth($answerkeylinks);\r\n\r\n const totalmaxwidth = Math.max(explainlinksmaxwidth, answerkeymaxwidth);\r\n\r\n if (totalmaxwidth > 0) {\r\n const newMarginLeftExplain = (Math.round((PlanContentWidth - totalmaxwidth) / 2) + PADDINGADJUST) + \"px\";\r\n $explainmove.css({ marginLeft: newMarginLeftExplain }).addClass(\"visible\");\r\n const newMarginLeftAk = (Math.round((PlanContentWidth - (totalmaxwidth)) / 2) + AKPADDINGADJUST) + \"px\";\r\n $answerkeymove.css({ marginLeft: newMarginLeftAk }).addClass(\"visible\");\r\n }\r\n else {\r\n $explainmove.addClass(\"visible\");\r\n $answerkeymove.addClass(\"visible\");\r\n }\r\n\r\n this.calculatePageName();\r\n let state = HistoryJS.getState();\r\n if (state.data.ellist) {\r\n this.updateExpanded(state.data.ellist);\r\n }\r\n }\r\n\r\n calculatePageName() {\r\n const path = window.location.pathname;\r\n this.pagename = path.split(\"/\").pop();\r\n\r\n let match:RegExpExecArray;\r\n const query = window.location.search.substring(1);\r\n\r\n this.urlParams = {};\r\n while (match = this.search.exec(query)) {\r\n this.urlParams[this.decodeQueryString(match[1])] = this.decodeQueryString(match[2]);\r\n }\r\n }\r\n\r\n decodeQueryString(s:string):string {\r\n return decodeURIComponent(s.replace(this.regPlus, \" \"));\r\n }\r\n\r\n calcMaxWidth($items): number {\r\n let explainlinksmaxwidth = 0;\r\n $items.each(function () {\r\n let width = $(this).width();\r\n if (width > explainlinksmaxwidth) {\r\n explainlinksmaxwidth = width;\r\n }\r\n });\r\n return explainlinksmaxwidth;\r\n }\r\n\r\n saveExpanded() {\r\n const $expanded = $('.PlanContent .aklr.expand .title,.PlanContent .akprob.expand .title');\r\n\r\n let elements: Array = [];\r\n\r\n $expanded.each(function () {\r\n elements.push($(this).parent().attr(\"id\"));\r\n });\r\n\r\n const pagetitle = document.getElementsByTagName(\"title\")[0].innerHTML;\r\n\r\n if (elements.length > 0) {\r\n const ellist = elements.join(\",\");\r\n\r\n this.urlParams.state = ellist;\r\n let querystring = \"\";\r\n for (let key in this.urlParams) {\r\n let value = this.urlParams[key];\r\n if (querystring.length > 0) {\r\n querystring += \"&\";\r\n }\r\n querystring += key;\r\n querystring += \"=\";\r\n querystring += encodeURIComponent(value);\r\n }\r\n\r\n HistoryJS.replaceState({ ellist: ellist }, pagetitle, this.pagename + \"?\" + querystring);\r\n }\r\n else {\r\n HistoryJS.replaceState(null, pagetitle, \"\");\r\n }\r\n }\r\n\r\n updateExpanded(data: string) {\r\n if (data) {\r\n const res = data.split(\",\");\r\n for (var value of res) {\r\n let $ak = $('#' + value);\r\n $ak.addClass(\"expand\");\r\n };\r\n }\r\n }\r\n}\r\n\r\n\r\n","import * as $ from 'jquery';\r\n\r\nexport class LsatSearch {\r\n $radioExplain: JQuery;\r\n $radioQuestion: JQuery;\r\n\r\n $radioAll: JQuery;\r\n $radioLR: JQuery;\r\n $radioRC: JQuery;\r\n\r\n // checkboxes\r\n $checkTypeP: JQuery\r\n $checkTypeS: JQuery;\r\n $checkTypeQ: JQuery;\r\n $checkTypeA: JQuery;\r\n\r\n // labels\r\n $labelTypeP: JQuery;\r\n $labelTypeS: JQuery;\r\n $labelTypeQ: JQuery;\r\n $labelTypeA: JQuery;\r\n\r\n // textbox\r\n $txtSearch: JQuery;\r\n $butSearch: JQuery;\r\n\r\n constructor() {\r\n const self = this;\r\n this.$txtSearch = $('#txtQSearch');\r\n this.$butSearch = $('#butQSearch');\r\n\r\n this.$radioQuestion = $('.lsatsearchbox .SearchTypeQuestion');\r\n this.$radioExplain = $('.lsatsearchbox .SearchTypeExplain');\r\n this.$radioAll = $('.lsatsearchbox .SearchSectionAll');\r\n this.$radioLR = $('.lsatsearchbox .SearchSectionLR');\r\n this.$radioRC = $('.lsatsearchbox .SearchSectionRC');\r\n\r\n // checkboxes\r\n this.$checkTypeP = $('.lsatsearchbox .PartP');\r\n this.$checkTypeS = $('.lsatsearchbox .PartS');\r\n this.$checkTypeQ = $('.lsatsearchbox .PartQ');\r\n this.$checkTypeA = $('.lsatsearchbox .PartA');\r\n\r\n // labels\r\n this.$labelTypeP = $('.lsatsearchbox .SearchLabelP');\r\n this.$labelTypeS = $('.lsatsearchbox .SearchLabelS');\r\n this.$labelTypeQ = $('.lsatsearchbox .SearchLabelQ');\r\n this.$labelTypeA = $('.lsatsearchbox .SearchLabelA');\r\n\r\n $('.SearchRadioSection').on(\"click\", function () {\r\n self.updateChecks(true);\r\n });\r\n\r\n this.$butSearch.on(\"click\", function () {\r\n self.doSearch();\r\n });\r\n\r\n this.$txtSearch.on(\"keypress\", function (e) {\r\n if (e.key === \"Enter\") {\r\n self.doSearch();\r\n e.preventDefault();\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n // Call this to update every check from the queries\r\n updateChecksFromQuery() {\r\n const querystring = document.location.search.substring(1);\r\n const sp = new URLSearchParams(querystring);\r\n\r\n this.$txtSearch.trigger(\"focus\");\r\n const searchquery = sp.get(\"q\");\r\n if (searchquery) {\r\n this.$txtSearch.val(searchquery);\r\n }\r\n // LR/RC\r\n const isLR = this.isCheckedonQuery(\"LR\", sp);\r\n const isRC = this.isCheckedonQuery(\"RC\", sp);\r\n if (!isLR || !isRC) {\r\n if (isLR) {\r\n this.$radioLR.prop(\"checked\", true);\r\n }\r\n else {\r\n this.$radioRC.prop(\"checked\", true);\r\n }\r\n }\r\n\r\n if (this.isCheckedonQuery(\"exp\", sp)) {\r\n this.$radioExplain.prop(\"checked\", true);\r\n }\r\n else {\r\n this.$checkTypeP.prop(\"checked\", this.isCheckedonQuery(\"PP\", sp));\r\n this.$checkTypeS.prop(\"checked\", this.isCheckedonQuery(\"PS\", sp));\r\n this.$checkTypeQ.prop(\"checked\", this.isCheckedonQuery(\"PQ\", sp));\r\n this.$checkTypeA.prop(\"checked\", this.isCheckedonQuery(\"PA\", sp));\r\n }\r\n // \r\n this.updateChecks(false);\r\n }\r\n\r\n doSearch() {\r\n const qs = new URLSearchParams();\r\n const ss = this.$txtSearch.val();\r\n // replace curly quotes with straight quotes\r\n const ssNoCurly = ss\r\n .replace(/[\\u2018\\u2019]/g, \"'\")\r\n .replace(/[\\u201C\\u201D]/g, '\"');\r\n qs.append(\"q\", ssNoCurly);\r\n this.appendQuery(qs);\r\n window.location.href = \"/search/default.aspx?\" + qs.toString();\r\n }\r\n\r\n appendQuery(qs: URLSearchParams) {\r\n qs.append(\"exp\", this.$radioQuestion.is(':checked') ? \"0\" : \"1\");\r\n if (this.$radioAll.is(':checked')) {\r\n qs.append(\"LR\", \"1\");\r\n qs.append(\"RC\", \"1\");\r\n }\r\n else {\r\n this.appendQueryChecked(qs, this.$radioLR, \"LR\");\r\n this.appendQueryChecked(qs, this.$radioRC, \"RC\");\r\n }\r\n this.appendQueryChecked(qs, this.$checkTypeP, \"PP\");\r\n this.appendQueryChecked(qs, this.$checkTypeS, \"PS\");\r\n this.appendQueryChecked(qs, this.$checkTypeQ, \"PQ\");\r\n this.appendQueryChecked(qs, this.$checkTypeA, \"PA\");\r\n }\r\n\r\n appendQueryChecked(qs: URLSearchParams, $control: JQuery, name: string) {\r\n qs.append(name, $control.is(':checked') ? \"1\" : \"0\");\r\n }\r\n\r\n updateChecks(changeCheck: boolean) {\r\n if (this.$radioQuestion.is(':checked')) {\r\n this.enableCheck(this.$checkTypeQ, this.$labelTypeQ, true, changeCheck);\r\n this.enableCheck(this.$checkTypeA, this.$labelTypeA, true, changeCheck);\r\n if (this.$radioAll.is(':checked')) {\r\n this.enableCheck(this.$checkTypeP, this.$labelTypeP, true, changeCheck);\r\n this.enableCheck(this.$checkTypeS, this.$labelTypeS, true, changeCheck);\r\n }\r\n else if (this.$radioLR.is(':checked')) {\r\n this.enableCheck(this.$checkTypeP, this.$labelTypeP, false, changeCheck);\r\n this.enableCheck(this.$checkTypeS, this.$labelTypeS, true, changeCheck);\r\n }\r\n else if (this.$radioRC.is(':checked')) {\r\n this.enableCheck(this.$checkTypeP, this.$labelTypeP, true, changeCheck);\r\n this.enableCheck(this.$checkTypeS, this.$labelTypeS, false, changeCheck);\r\n }\r\n }\r\n else {\r\n this.enableCheck(this.$checkTypeQ, this.$labelTypeQ, false, changeCheck);\r\n this.enableCheck(this.$checkTypeA, this.$labelTypeA, false, changeCheck);\r\n this.enableCheck(this.$checkTypeP, this.$labelTypeP, false, changeCheck);\r\n this.enableCheck(this.$checkTypeS, this.$labelTypeS, false, changeCheck);\r\n }\r\n }\r\n\r\n enableCheck($button: JQuery, $label: JQuery, newstatus: boolean, changeCheck: boolean) {\r\n if (newstatus) {\r\n $button.prop(\"disabled\", false);\r\n if (changeCheck) {\r\n $button.prop('checked', true);\r\n }\r\n $label.removeClass('disabled');\r\n }\r\n else {\r\n if (changeCheck) {\r\n $button.prop('checked', false);\r\n }\r\n $button.prop(\"disabled\", true);\r\n $label.addClass('disabled');\r\n }\r\n }\r\n\r\n isCheckedonQuery(key: string, sp: URLSearchParams): boolean {\r\n return parseInt(sp.get(key)) !== 0;\r\n }\r\n}\r\n","import * as $ from 'jquery';\r\n\r\nexport class Monitor {\r\n private clockStart: number;\r\n instructorViewLogID: number;\r\n private monitorIntervalId: number;\r\n\r\n constructor() {\r\n const self = this;\r\n this.instructorViewLogID = 0;\r\n this.clockStart = 0;\r\n this.monitorIntervalId = 0;\r\n window.addEventListener(\"unload\",\r\n function (evt) {\r\n self.postComplete();\r\n }, false);\r\n }\r\n\r\n create(videoViewItemID: number, extra?: string, firstclick?: boolean) {\r\n this.postComplete();\r\n\r\n const self = this;\r\n const extraparam = extra || '';\r\n if (firstclick === undefined) {\r\n firstclick = true;\r\n }\r\n const monitorurl = \"/Monitor/Create/\" + videoViewItemID +\r\n \"?extra=\" + encodeURIComponent(extraparam) +\r\n \"&first=\" + (firstclick ? 1 : 0);\r\n $.post(monitorurl, function (data) {\r\n if (data) {\r\n self.instructorViewLogID = parseInt(data);\r\n self.startClock();\r\n }\r\n });\r\n }\r\n\r\n createDynamic(viewClass: number, title: string, extra?: string, firstclick?: boolean) {\r\n this.postComplete();\r\n\r\n const self = this;\r\n const extraparam = extra || '';\r\n if (firstclick === undefined) {\r\n firstclick = true;\r\n }\r\n const monitorurl = \"/Monitor/CreateDynamic/\" + viewClass +\r\n \"?title=\" + encodeURIComponent(title) +\r\n \"&extra=\" + encodeURIComponent(extraparam) +\r\n \"&first=\" + (firstclick ? 1 : 0);\r\n $.post(monitorurl, function (data) {\r\n if (data) {\r\n self.instructorViewLogID = parseInt(data);\r\n self.startClock();\r\n\r\n }\r\n });\r\n }\r\n\r\n // Usually created in javascript\r\n createExisting(vvlid: number) {\r\n this.postComplete();\r\n\r\n this.instructorViewLogID = vvlid;\r\n this.startClock();\r\n }\r\n\r\n updateMonitor() {\r\n if (this.instructorViewLogID) {\r\n const diffSecs = (this.getTimeDiff() / 1000).toFixed(0);\r\n $.post(\"/Monitor/Update/\" + this.instructorViewLogID + '?sec=' + diffSecs);\r\n }\r\n }\r\n\r\n // manually stop a monitor\r\n stop() {\r\n this.postComplete();\r\n }\r\n\r\n // Starts the clock \r\n startClock() {\r\n const startday = new Date();\r\n this.clockStart = startday.getTime();\r\n this.monitorIntervalId = window.setInterval(() => this.updateMonitor(), 30000);\r\n }\r\n\r\n // If we have an unload beacon, then add a log entry\r\n private postComplete() {\r\n if (this.clockStart && this.instructorViewLogID) {\r\n const data = new FormData();\r\n\r\n const timeDiff = this.getTimeDiff();\r\n\r\n // debug\r\n //console.log(`View ${this.videoViewLogID} for ${timeDiff} ms`);\r\n\r\n data.append('InstructorViewLogID', this.instructorViewLogID.toString());\r\n data.append('ms', timeDiff.toString());\r\n\r\n if (navigator.sendBeacon) {\r\n if (!navigator.sendBeacon(\"/Monitor/Complete\", data)) {\r\n this.postBeaconFallback(data);\r\n }\r\n }\r\n else {\r\n this.postBeaconFallback(data);\r\n }\r\n }\r\n\r\n if (this.monitorIntervalId) {\r\n window.clearInterval(this.monitorIntervalId);\r\n this.monitorIntervalId = 0;\r\n }\r\n\r\n // don't allow to be posted multiple times\r\n this.instructorViewLogID = 0;\r\n this.clockStart = 0;\r\n }\r\n\r\n // If for some reason beacons aren't working\r\n postBeaconFallback(data: FormData) {\r\n $.ajax({\r\n url: \"/Monitor/Complete\",\r\n data: data,\r\n processData: false,\r\n contentType: false,\r\n type: 'POST'\r\n });\r\n }\r\n\r\n // calculate the elapsed second\r\n getTimeDiff(): number {\r\n const myTime = new Date();\r\n return myTime.getTime() - this.clockStart;\r\n }\r\n}\r\n\r\n\r\n","import * as $ from 'jquery';\r\n\r\nimport { QuestionShowInfo } from \"./questionshowinfo\";\r\n\r\nexport interface IProblemStats {\r\n readonly [index: string]: Array;\r\n}\r\n\r\nexport class ProblemPage {\r\n $alllinks: JQuery;\r\n $allquestions: JQuery;\r\n problemStats: IProblemStats;\r\n questionShowInfo: QuestionShowInfo;\r\n\r\n constructor(problemStats: IProblemStats) {\r\n const self = this;\r\n this.problemStats = problemStats;\r\n this.$alllinks = $('#questionselect .link');\r\n this.$allquestions = $('.exampleBox');\r\n this.questionShowInfo = null;\r\n\r\n this.$alllinks.on(\"click\", function () {\r\n const lquestionid = parseInt($(this).data(\"questionid\"));\r\n self.selectQuestion(lquestionid);\r\n });\r\n }\r\n\r\n selectQuestion(lquestionid: number) {\r\n // try to find the question first\r\n const $question = $('#ques-' + lquestionid);\r\n if ($question.length == 0) {\r\n // show all\r\n lquestionid = 0;\r\n this.$allquestions.show();\r\n }\r\n else {\r\n this.$allquestions.hide();\r\n $question.show();\r\n }\r\n this.$alllinks.removeClass(\"active\");\r\n $('#link-' + lquestionid).addClass(\"active\");\r\n\r\n if (this.questionShowInfo) {\r\n this.questionShowInfo.removeAllDomElements();\r\n this.questionShowInfo = null;\r\n }\r\n\r\n if (lquestionid) {\r\n this.questionShowInfo = new QuestionShowInfo($question,this.problemStats[lquestionid.toString()]);\r\n }\r\n }\r\n}\r\n\r\n","import * as $ from 'jquery';\r\n\r\nexport class QuestionShowInfo {\r\n statsList: Array\r\n answersShown: boolean;\r\n $hilighterCorrect: JQuery;\r\n $showanswerbutton: JQuery;\r\n $statsHolders: Array;\r\n $container: JQuery;\r\n\r\n constructor($container: JQuery, statsList: Array) {\r\n const self = this;\r\n this.$container = $container;\r\n this.statsList = statsList;\r\n this.answersShown = false;\r\n this.$hilighterCorrect = null; // no hilighter yet\r\n this.$showanswerbutton = $('#butshowanswer');\r\n this.$showanswerbutton\r\n .attr('value', 'Show Answer')\r\n .show();\r\n\r\n this.createStatsPlaceholders();\r\n\r\n $(\"body\").on(\"click\", '#butshowanswer', function () {\r\n self.answersShown = !self.answersShown;\r\n self.showAnswer(self.answersShown);\r\n if (self.answersShown) {\r\n self.showStats();\r\n }\r\n else {\r\n self.hideStats();\r\n }\r\n })\r\n }\r\n\r\n // Removes DOM events and handlers\r\n removeAllDomElements() {\r\n if (this.$statsHolders!==null) {\r\n for (var $sh of this.$statsHolders) {\r\n $sh.remove();\r\n }\r\n }\r\n const $hilighter = $('.AnswerCorrectCircle');\r\n if ($hilighter.length > 0) {\r\n $hilighter.remove();\r\n }\r\n $(\"body\").off(\"click\", '#butshowanswer');\r\n this.$showanswerbutton.hide();\r\n\r\n }\r\n\r\n createStatsPlaceholders() {\r\n const self = this;\r\n this.$statsHolders = [];\r\n const $holderall = this.$container.find('.aIndexCorrect .aLetter,.aIndex .aLetter');\r\n $holderall.each(function () {\r\n const $span = $(this);\r\n const $rightdude = $(\"
\");\r\n $span.append($rightdude);\r\n self.$statsHolders.push($rightdude);\r\n });\r\n }\r\n\r\n showStats() {\r\n for (var idx = 0; idx < this.statsList.length && idx < this.$statsHolders.length; ++idx) {\r\n this.$statsHolders[idx].text(this.statsList[idx]);\r\n this.$statsHolders[idx].show();\r\n }\r\n }\r\n\r\n hideStats() {\r\n for (var idx = 0; idx < this.$statsHolders.length; ++idx) {\r\n this.$statsHolders[idx].hide();\r\n }\r\n }\r\n\r\n showAnswer(isShown: boolean) {\r\n const $hilighter = $('.AnswerCorrectCircle');\r\n if (isShown) {\r\n if ($hilighter.length == 0) {\r\n this.createShowAnswer();\r\n }\r\n else {\r\n $hilighter.show();\r\n }\r\n }\r\n else {\r\n if ($hilighter.length > 0) {\r\n $hilighter.hide();\r\n }\r\n }\r\n this.$showanswerbutton.attr('value', isShown ? 'Hide Answer': 'Show Answer');\r\n }\r\n\r\n showError(errorletter: string) {\r\n const $answer = $('.Answer' + errorletter);\r\n $answer.addClass('AnswerWrong');\r\n const $span = $answer.find('.aIndex .aLetter,td.aIndexCorrect .aLetter');\r\n const xpos = ($span.width() * 0.5) - 16;\r\n const ypos = ($span.height() * 0.5) - 15;\r\n const $wrongdude = $(\"
\");\r\n $span.append($wrongdude);\r\n $wrongdude.css(\"left\", xpos + \"px\");\r\n $wrongdude.css(\"top\", ypos + \"px\");\r\n }\r\n\r\n /* Show the correct answer */\r\n createShowAnswer() {\r\n const $spanall = this.$container.find('.aIndexCorrect .aLetter');\r\n $spanall.each(function () {\r\n const $span = $(this);\r\n const $rightdude = $(\"
\");\r\n const xpos = ($span.width() * 0.5) - 16;\r\n const ypos = ($span.height() * 0.5) - 15;\r\n $span.append($rightdude);\r\n $rightdude.css(\"left\", xpos + \"px\");\r\n $rightdude.css(\"top\", ypos + \"px\");\r\n });\r\n };\r\n}\r\n\r\n\r\n","import * as $ from 'jquery';\r\nimport { IQuestionItem } from \"./questionitem\";\r\n\r\nexport class QuestionShowInfo2 {\r\n questionList: Array;\r\n isShownList: Array; // store to avoid unnecessary DOM changes\r\n\r\n constructor(questionList: Array) {\r\n const self = this;\r\n this.questionList = questionList;\r\n this.isShownList = [];\r\n\r\n for (var ques of this.questionList) {\r\n this.createStatsPlaceholders(ques);\r\n this.isShownList.push(false);\r\n }\r\n }\r\n\r\n createStatsPlaceholders(ques: IQuestionItem) {\r\n const self = this;\r\n const $holderall = ques.$question.find('.aIndexCorrect .aLetter,.aIndex .aLetter');\r\n $holderall.each(function (index, value) {\r\n const $span = $(this);\r\n const $rightdude = $(\"
\" + ques.stats[index] + \"
\");\r\n $span.append($rightdude);\r\n });\r\n const $holdercorr = ques.$question.find('.aIndexCorrect .aLetter');\r\n $holdercorr.each(function () {\r\n const $span = $(this);\r\n const $rightdude = $(\"
\");\r\n $span.append($rightdude);\r\n });\r\n if (ques.response) {\r\n ques.$question.find(\".Answer\" + ques.response).addClass(\"student-response\");\r\n }\r\n if (ques.slashes) {\r\n for (var char of ques.slashes) {\r\n ques.$question.find(\".Answer\" + char).addClass(\"student-slash\");\r\n }\r\n }\r\n }\r\n\r\n showStatsAll(display: boolean) {\r\n for (var idx = 0; idx < this.questionList.length; ++idx) {\r\n this.showStats(idx, display);\r\n }\r\n }\r\n\r\n showStats(index: number, display: boolean) {\r\n const ques = this.questionList[index];\r\n if (this.isShownList[index] !== display) {\r\n this.isShownList[index] = display;\r\n ques.$question.find('.statsholder,.AnswerCorrectCircle').toggleClass('visible', display);\r\n ques.$question.find('.student-response .letter-key').toggleClass('visible', display);\r\n }\r\n }\r\n\r\n // Show any stats where we're past the provided time\r\n showStatsTime(seconds: number) {\r\n for (var idx = 0; idx < this.questionList.length; ++idx) {\r\n if (!this.isShownList[idx] &&\r\n this.questionList[idx].time &&\r\n this.questionList[idx].time <= seconds) {\r\n this.showStats(idx, true);\r\n }\r\n }\r\n }\r\n}\r\n","import * as $ from 'jquery';\r\n\r\nimport { QuestionShowInfo2 } from \"./questionshowinfo2\";\r\n\r\nexport class ShowAnswerButton {\r\n answersShown: boolean;\r\n readonly $showanswerbutton: JQuery;\r\n questionShowInfo: QuestionShowInfo2;\r\n\r\n constructor(questionShowInfo: QuestionShowInfo2) {\r\n const self = this;\r\n this.answersShown = false;\r\n this.questionShowInfo = questionShowInfo;\r\n this.$showanswerbutton = $('#butshowanswer');\r\n this.$showanswerbutton\r\n .attr('value', 'Show Answer')\r\n .show();\r\n\r\n $(\"body\").on(\"click\", '#butshowanswer', () => {\r\n self.showAnswer(!self.answersShown);\r\n });\r\n }\r\n\r\n // If we externally want to trigger the button\r\n showAnswer(toggle: boolean) {\r\n this.answersShown = toggle;\r\n this.$showanswerbutton.attr('value', this.answersShown ? 'Hide Answer' : 'Show Answer');\r\n if (this.questionShowInfo) {\r\n this.questionShowInfo.showStatsAll(this.answersShown);\r\n }\r\n }\r\n}","import * as $ from 'jquery';\r\n\r\n$(document).ready(function () {\r\n $(\".redirect\").click(function () {\r\n window.location.href = $(this).data(\"redirect\");\r\n })\r\n});\r\n","import * as $ from 'jquery';\r\n\r\ninterface WritingSampleItem {\r\n ID: number;\r\n Name: string;\r\n ViewID: number;\r\n IsInstruction: boolean;\r\n}\r\n\r\nexport class WritingSample {\r\n WritingSampleList: Array;\r\n InstructionList: Array;\r\n SelectedWritingSample: number;\r\n readonly itemsPerPage = 15;\r\n samplepages: Array;\r\n $sampleitems: JQuery;\r\n $instructionitems: JQuery;\r\n $allitems: JQuery;\r\n currentpage: number;\r\n selectedSample: WritingSampleItem;\r\n\r\n constructor(inslist: Array, wsl: Array, sws: number) {\r\n this.InstructionList = inslist;\r\n this.WritingSampleList = wsl;\r\n this.SelectedWritingSample = sws;\r\n this.samplepages = [];\r\n this.currentpage = 0;\r\n this.selectedSample = null;\r\n const self = this;\r\n\r\n this.$instructionitems = $('#instructionlist li');\r\n this.$instructionitems.first().addClass(\"topitem\");\r\n this.$sampleitems = $('#samplelist li');\r\n this.$allitems = $('.linklist li');\r\n this.$allitems.on(\"click\",function () {\r\n self.selectQuestion($(this));\r\n });\r\n\r\n // figure out current item\r\n let $selectedsample = $('.linklist li#sample' + this.SelectedWritingSample).first();\r\n if ($selectedsample.length == 0) {\r\n $selectedsample = this.$instructionitems.first();\r\n }\r\n\r\n let selectedpage = 0;\r\n\r\n // create pages of items\r\n const $pager = $('#pager');\r\n const pagecount = Math.ceil(this.$sampleitems.length / (this.itemsPerPage * 1.0));\r\n\r\n $pager.append('< ');\r\n\r\n for (var pageno = 0; pageno < pagecount; ++pageno) {\r\n const firstpage = (pageno * this.itemsPerPage) + 1;\r\n let lastpage = firstpage + this.itemsPerPage - 1;\r\n if (lastpage >= this.$sampleitems.length) {\r\n lastpage = this.$sampleitems.length;\r\n }\r\n const pagertext = '' + (pageno + 1);\r\n $pager.append('' + pagertext + ' ');\r\n const $page = this.$sampleitems.slice(firstpage - 1, lastpage);\r\n $page.first().addClass(\"topitem\");\r\n this.samplepages.push($page);\r\n\r\n // see if selected item is on this page\r\n if ($selectedsample) {\r\n $page.each(function (index) {\r\n if ($(this).attr(\"id\") == $selectedsample.attr(\"id\")) {\r\n selectedpage = pageno;\r\n return false;\r\n }\r\n });\r\n }\r\n }\r\n\r\n $pager.append('> ');\r\n\r\n $('#pager').on(\"click\", '.pageitem', function () {\r\n let pageno = parseInt($(this).data(\"page\"));\r\n if (pageno == -1) {\r\n pageno = 0;\r\n }\r\n else if (pageno == -2) {\r\n pageno = self.samplepages.length - 1\r\n }\r\n const selectFirstItem = self.selectedSample &&\r\n !self.selectedSample.IsInstruction &&\r\n pageno != self.currentpage;\r\n self.showSamplePage(pageno, selectFirstItem);\r\n });\r\n\r\n // hide everything except the first page\r\n this.$sampleitems.hide();\r\n\r\n // select selected item\r\n this.selectQuestion($selectedsample);\r\n\r\n // show the page on which the selected item sits\r\n this.showSamplePage(selectedpage, false);\r\n }\r\n\r\n showSamplePage(pageno: number, selectfirstitem: boolean) {\r\n this.$sampleitems.hide();\r\n const $page = this.samplepages[pageno];\r\n $page.show();\r\n $('#pager .pageitem').removeClass('selected');\r\n $('#pageitem' + pageno).addClass('selected');\r\n if (selectfirstitem) {\r\n this.selectQuestion($page.first());\r\n }\r\n\r\n const pagecount = this.samplepages.length;\r\n\r\n if (pageno == 0 && pagecount > 1) {\r\n $('#pageitemprev').hide();\r\n }\r\n else {\r\n $('#pageitemprev').show();\r\n }\r\n\r\n if (pageno >= pagecount - 1) {\r\n $('#pageitemnext').hide();\r\n }\r\n else {\r\n $('#pageitemnext').show();\r\n }\r\n\r\n this.currentpage = pageno;\r\n }\r\n\r\n selectQuestion($selectedsample: JQuery) {\r\n this.$allitems.removeClass('selected');\r\n $selectedsample.addClass('selected');\r\n const questionid = parseInt($selectedsample.attr(\"id\").substring(6));\r\n\r\n // display the particular sample\r\n const iframehtml = '';\r\n $('#writingsampleframe').html(iframehtml);\r\n\r\n this.selectedSample = this.findSample(questionid);\r\n }\r\n\r\n findSample(questionid: number): WritingSampleItem {\r\n // setup the monitor\r\n for (var i = this.WritingSampleList.length - 1; i >= 0; i--) {\r\n if (questionid == this.WritingSampleList[i].ID) {\r\n return this.WritingSampleList[i];\r\n }\r\n }\r\n for (var i = this.InstructionList.length - 1; i >= 0; i--) {\r\n if (questionid == this.InstructionList[i].ID) {\r\n return this.InstructionList[i];\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","import * as $ from 'jquery';\r\nimport { FormTools } from './formtools'\r\n\r\nexport namespace WrittenSetup {\r\n function populateDropDown($parent: JQuery, $child: JQuery) {\r\n const parentval = ($parent.val());\r\n if (!parentval) {\r\n FormTools.clearDropDown($child, '- Select -');\r\n }\r\n else {\r\n const url = '/api/explain/setupsinfolder/' + parentval;\r\n $.post(url, {}, function (data: Array, textStatus) {\r\n FormTools.fillDropDownStrings($child, data, '- Select -');\r\n }, 'json');\r\n }\r\n }\r\n\r\n export function watchFolderChange($parent: JQuery, $child: JQuery) {\r\n $parent.on(\"change\", function () {\r\n populateDropDown($parent, $child);\r\n });\r\n }\r\n}","module.exports = jQuery;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(835);\n"],"names":["module","exports","prefixProperties","cssUnitless","object","string","objectHasOwn","Object","prototype","hasOwnProperty","propertyName","call","objectToString","toString","v","apply","prefix","lower","toUpperFirst","re","docStyle","document","documentElement","style","prefixInfo","prop","test","match","toLowerCase","css","dom","Webkit","ms","o","name","camelize","hyphenate","toLowerFirst","asStylePrefix","config","styleName","cssName","theName","thePrefix","asString","upperCased","prefixProperty","result","prefixedCss","Array","isArray","length","map","property","concat","push","toCamelFn","str","letter","toUpperCase","hyphenRe","replace","separate","doubleColonRe","upperToLowerRe","lowerToUpperRe","underscoreToDashRe","separator","value","charAt","substring","cssPrefixFn","HYPHENATE","CAMELIZE","HAS_OWN","IS_OBJECT","IS_FUNCTION","applyPrefix","target","normalizeFn","forEach","p","CONFIG","TO_STYLE_OBJECT","styles","prepend","split","item","trim","toObject","processed","propName","propValue","propType","propIsNumber","fnPropValue","scope","addUnits","cssUnit","indexOf","radius","theRest","positions","pos","toStyleObject","hasOwn","join","ExplainDraw","QuestionShowInfo","ProblemPage","LsatSearch","DiagInstructions","LessonPlan","QuestionShowInfo2","ShowAnswerButton","ExplainVideo","ExplainWritten","WritingSample","AutoTimeZone","Monitor","zoneadjust","zonenamelong","recognizedzones","constructor","this","myzone","browserTZ","Intl","DateTimeFormat","resolvedOptions","timeZone","mappedzone","error","getBrowserTimeZoneCode","myadjust","myzonename","fixAutoTimes","self","$","each","fixTime","fixTimeRange","fixTimezone","fixTimezoneShort","$autotime","startminadjust","parseInt","data","getTotalAdjustment","text","formatMinutes","startmin","endmin","adjustment","endminadjust","timezone","tzadjust","totalminutes","hour","Math","floor","minute","ampm","hour12","smin","$pages","$titles","currentPageIndex","pageCount","$controlNext","$controlPrev","$controlFinish","hide","on","updateHash","updateVisiblePages","window","onpopstate","event","handleHistory","hash","location","pageno","state","page","eq","show","showButton","onLastPage","scrollTop","history","pushState","replaceState","$but","containerid","canvaswidth","maxcanvasheight","standardcanvaswidth","$container","explainLinkSuffix","calcCanvasWidth","calculateScale","eimages","width","useScale","scaleFactor","totalWidth","totalHeight","height","loadData","explainid","code","hasBlueBar","explainurl","encodeURIComponent","getJSON","draw","loadDataGame","gamefile","getImageHtml","backgroundImage","basepath","image","left","x","top","y","html","img","images","$tabs","$tabsli","find","videoplaying","explainHidden","showQuestionTab","showVideoTab","showAnswerKeyTab","explaincode","showExplainIframe","id","dialog","modal","resizable","attr","showExplainTab","tabname","removeClass","showTab","$vidbox","opacity","hideVideoTab","$tab","addClass","getExplainTabName","$seltab","first","tabid","starttab","FormTools","populateDropDown","$parent","$child","baseurl","selecttext","parentval","val","textStatus","fillDropDownJson","clearDropDown","append","$dd","json","myselect","jsonData","Value","Text","populateDropDownChange","fillDropDownStrings","datalist","dataitem","fillDropDownOnRadio","$radiolist","jsonobject","arr","fillDropDownOnSelection","$checked","filter","HistoryJS","History","regPlus","search","$explain","url","href","$drill","drillid","parent","toggleClass","saveExpanded","PlanContentWidth","$explainmove","$explainlinks","explainlinksmaxwidth","calcMaxWidth","$answerkeymove","$answerkeylinks","answerkeymaxwidth","totalmaxwidth","max","newMarginLeftExplain","round","marginLeft","newMarginLeftAk","calculatePageName","getState","ellist","updateExpanded","path","pathname","pagename","pop","query","urlParams","exec","decodeQueryString","s","decodeURIComponent","$items","$expanded","elements","pagetitle","getElementsByTagName","innerHTML","querystring","key","res","$txtSearch","$butSearch","$radioQuestion","$radioExplain","$radioAll","$radioLR","$radioRC","$checkTypeP","$checkTypeS","$checkTypeQ","$checkTypeA","$labelTypeP","$labelTypeS","$labelTypeQ","$labelTypeA","updateChecks","doSearch","e","preventDefault","updateChecksFromQuery","sp","URLSearchParams","trigger","searchquery","get","isLR","isCheckedonQuery","isRC","qs","ssNoCurly","appendQuery","is","appendQueryChecked","$control","changeCheck","enableCheck","$button","$label","newstatus","instructorViewLogID","clockStart","monitorIntervalId","addEventListener","evt","postComplete","create","videoViewItemID","extra","firstclick","undefined","monitorurl","post","startClock","createDynamic","viewClass","title","extraparam","createExisting","vvlid","updateMonitor","diffSecs","getTimeDiff","toFixed","stop","startday","Date","getTime","setInterval","FormData","timeDiff","navigator","sendBeacon","postBeaconFallback","clearInterval","ajax","processData","contentType","type","problemStats","$alllinks","$allquestions","questionShowInfo","lquestionid","selectQuestion","$question","removeAllDomElements","statsList","answersShown","$hilighterCorrect","$showanswerbutton","createStatsPlaceholders","showAnswer","showStats","hideStats","$statsHolders","$sh","remove","$hilighter","off","$span","$rightdude","idx","isShown","createShowAnswer","showError","errorletter","$answer","xpos","ypos","$wrongdude","questionList","ques","isShownList","index","stats","response","slashes","char","showStatsAll","display","showStatsTime","seconds","time","toggle","ready","click","inslist","wsl","sws","itemsPerPage","InstructionList","WritingSampleList","SelectedWritingSample","samplepages","currentpage","selectedSample","$instructionitems","$sampleitems","$allitems","$selectedsample","selectedpage","$pager","pagecount","ceil","firstpage","lastpage","pagertext","$page","slice","selectFirstItem","IsInstruction","showSamplePage","selectfirstitem","questionid","iframehtml","findSample","i","ID","WrittenSetup","watchFolderChange","jQuery","__webpack_module_cache__","__webpack_exports__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""}