{"version":3,"sources":["programmeplan.js","tablesorter.js","components/accordion.js","components/studyGuideSearch.js","utils/scrollUtil.js","utils/clickToggle.js","utils/getSize.js"],"names":["ProgramPlan","$","TableSorter","element","this","el","$el","$otherInfoButtons","find","showOnlySpecializationFilter","querySelector","vofFilter","querySelectorAll","specializationFilter","fieldOfStudyFilter","semesters","specializations","courses","registerEvents","prototype","click","toggleOtherInformation","bind","onchange","applyFilter","i","len","length","event","preventDefault","mainRow","target","closest","id","data","toggleClass","specialization","value","fieldOfStudy","showOnlySpecialization","checked","showAllSpecializations","allVofs","Array","slice","call","map","x","selectedVof","filter","item","fieldOfStudySplit","dataset","split","matchFieldOfStudy","indexOf","matchVof","vof","some","style","display","k","sp_item","hasCourses","hasVisibleChild","isShared","specialicationMatch","periods","j","period","s","se_item","childSelector","children","navSelect","document","location","href","hash","window","tabLink","scrollTo","on","attr","history","pushState","headers","tbodies","classList","add","header","iconElement","createElement","appendChild","addEventListener","sort","tableHeader","contains","parentNode","sortDesc","sortBy","cellIndex","setHeaderClasses","sortTableBody","remove","tbody","sortOrder","colNumber","Number","rows","rowsArray","sortFunc","getSortFunc","a","b","row","detailRow","sortable","vofCompareRows","numberCompareRows","defaultCompareRows","valueA","getDefaultSortValue","valueB","compareNumber","localeCompare","compareCourseCode","replace","innerText","vofOrder","origin","indexA","toLowerCase","indexB","courseCodeA","courseCode","courseCodeB","Accordion","scrollUtil","accordionHead","$toggleElement","GetToggleElement","toggleElementHeight","getSize","height","updateKeyframeRules","events","self","clickToggle","targetIsParent","targetClass","toggleElement","hasClass","removeClass","setAnimation","focus","e","currentTarget","addClass","hide","findKeyframesRule","rule","ss","styleSheets","cssRules","type","CSSRule","KEYFRAMES_RULE","name","fadeInRule","fadeOutRule","deleteRule","appendRule","show","next","parent","SetupStudyGuideSearch","select2","width","dropdownCssClass","selectionCssClass","minimumResultsForSearch","Infinity","onSelectedTypeChanged","matcher","select2Matcher","onMainFieldOfStudyChanged","filterCourses","matches","getElementsByClassName","forEach","index","array","numberOfCourseHits","getElementById","innerHTML","filterCoursesByMainFieldOfStudy","undefined","options","selectedIndex","url","URL","searchParams","set","replaceState","state","course","programme","mainFieldOfStudyFilter","params","term","trim","match","extend","c","splice","original","text","toUpperCase","getTargetPosition","skipHeader","totalHeaderHeight","outerHeight","offset","top","duration","targetPosition","animate","scrollTop","step","now","fx","newTargetPosition","end","fn","settings","className","callback","toggle","nodeName","$target","toggleTrigger","which","$wrap","appendTo","css","position","visibility","$clone","clone","sizes"],"mappings":"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","file":"site.min.js","sourcesContent":["var ProgramPlan = function ($, TableSorter) {\n var ProgramPlan = function (element) {\n this.el = element;\n this.$el = $(element);\n\n this.$otherInfoButtons = this.$el.find('.other-information-button');\n this.showOnlySpecializationFilter = this.el.querySelector('.show-only-specialization');\n this.vofFilter = this.el.querySelectorAll('.vof-filter input');\n this.specializationFilter = this.el.querySelector('.specializations-filter');\n this.fieldOfStudyFilter = this.el.querySelector('.field-of-study-filter');\n\n this.semesters = this.el.querySelectorAll('.js-semester');\n this.specializations = this.el.querySelectorAll('.specialization');\n this.courses = this.el.querySelectorAll('.main-row, .details-row ');\n\n this.registerEvents();\n\n new TableSorter(this.el);\n };\n\n ProgramPlan.prototype.registerEvents = function () {\n this.$otherInfoButtons.click(this.toggleOtherInformation.bind(this));\n\n this.specializationFilter.onchange = this.applyFilter.bind(this);\n this.fieldOfStudyFilter.onchange = this.applyFilter.bind(this);;\n this.showOnlySpecializationFilter.onchange = this.applyFilter.bind(this);;\n for (var i = 0, len = this.vofFilter.length; i < len; i++) {\n this.vofFilter[i].onchange = this.applyFilter.bind(this);;\n }\n };\n\n ProgramPlan.prototype.toggleOtherInformation = function (event) {\n event.preventDefault();\n var mainRow = $(event.target).closest('.main-row');\n var id = mainRow.data('id');\n\n var otherInfoRow = this.$el.find('.details-row[data-id=\"' + id + '\"]');\n otherInfoRow.toggleClass('expanded');\n mainRow.toggleClass('expanded');\n };\n\n ProgramPlan.prototype.applyFilter = function (event) {\n var specialization = this.specializationFilter.value;\n var fieldOfStudy = this.fieldOfStudyFilter.value;\n var showOnlySpecialization = this.showOnlySpecializationFilter.checked;\n var showAllSpecializations = !specialization;\n\n var allVofs = Array.prototype.slice.call(this.vofFilter)\n .map(function (x) { return x.value; });\n var selectedVof = Array.prototype.slice.call(this.vofFilter)\n .filter(function (x) { return x.checked; })\n .map(function (x) { return x.value; })\n\n for (var i = 0; i < this.courses.length; ++i) {\n var item = this.courses[i];\n\n var fieldOfStudySplit = item.dataset.fieldOfStudy.split('|');\n var matchFieldOfStudy = !fieldOfStudy ||\n fieldOfStudySplit.indexOf(fieldOfStudy) > -1;\n\n var vofs = item.dataset.vof.split('/');\n var matchVof = vofs.some(function (value) {\n return selectedVof.indexOf(value) > -1 || allVofs.indexOf(value) < 0;\n });\n\n var match = matchFieldOfStudy && matchVof;\n item.style.display = match ? '' : 'none';\n }\n\n for (var k = 0; k < this.specializations.length; ++k) {\n var sp_item = this.specializations[k];\n\n var hasCourses = hasVisibleChild(sp_item, '.main-row');\n var isShared = !sp_item.dataset.specialization;\n var sharedMatch = isShared && !showOnlySpecialization;\n var specialicationMatch = !isShared &&\n (showAllSpecializations || (sp_item.dataset.specialization === specialization));\n\n var sp_match = hasCourses && (sharedMatch || specialicationMatch);\n\n sp_item.style.display = sp_match ? '' : 'none';\n\n var periods = sp_item.querySelectorAll('.period');\n for (var j = 0; j < periods.length; ++j) {\n var period = periods[j];\n period.style.display = hasVisibleChild(period, '.main-row') ? '' : 'none';\n }\n }\n\n for (var s = 0; s < this.semesters.length; ++s) {\n var se_item = this.semesters[s];\n se_item.style.display = hasVisibleChild(se_item, '.specialization') ? '' : 'none';\n }\n }\n\n var hasVisibleChild = function (item, childSelector) {\n var children = item.querySelectorAll(childSelector);\n var visibleChildern = Array.prototype.slice.call(children)\n .filter(function (x) { return x.style.display !== 'none'; });\n return visibleChildern.length > 0;\n };\n\n return ProgramPlan;\n};\n","var TableSorter = function () {\n\n var TableSorter = function (element) {\n this.el = element;\n this.headers = element.querySelectorAll('[data-sortable]');\n this.tbodies = element.querySelectorAll('tbody');\n\n this.el.classList.add('tablesorter')\n\n for (var i = 0; i < this.headers.length; ++i) {\n var header = this.headers[i];\n header.classList.add('tablesorter-header');\n\n //Add sort icon\n var iconElement = document.createElement('span');\n iconElement.classList.add('table-header-icon');\n header.appendChild(iconElement);\n\n header.addEventListener(\"click\", this.sort.bind(this), false);\n }\n };\n\n\n TableSorter.prototype.sort = function (event) {\n var tableHeader;\n //Get tableHeader. event.target could be both the header and the icon (then the header is target.parentNode).\n if (event.target.classList.contains('tablesorter-header')) {\n tableHeader = event.target;\n } else {\n if (event.target.parentNode.classList.contains('tablesorter-header')) {\n tableHeader = event.target.parentNode;\n } else {\n return;\n }\n }\n\n //Toggle sortDesc if already sort by current column otherwise sort asc.\n var sortDesc = this.el.dataset.sortBy == tableHeader.cellIndex ?\n !(this.el.dataset.sortDesc === 'true') : false;\n\n this.el.dataset.sortBy = tableHeader.cellIndex;\n this.el.dataset.sortDesc = sortDesc;\n\n setHeaderClasses(this.headers, tableHeader.cellIndex, sortDesc);\n\n //Sort each tbody seperatly.\n for (var i = 0; i < this.tbodies.length; i++) {\n sortTableBody(this.tbodies[i], sortDesc, tableHeader);\n }\n };\n\n var setHeaderClasses = function (headers, sortBy, sortDesc) {\n for (var i = 0; i < headers.length; i++) {\n\n var header = headers[i];\n if (header.cellIndex === sortBy) {\n header.classList.add(sortDesc ? 'desc' : 'asc');\n header.classList.remove(!sortDesc ? 'desc' : 'asc');\n } else {\n header.classList.remove('desc');\n header.classList.remove('asc');\n }\n }\n }\n\n var sortTableBody = function (tbody, sortDesc, tableHeader) {\n var sortOrder = sortDesc ? -1 : 1;\n\n var colNumber = Number(tableHeader.cellIndex);\n\n var rows = tbody.querySelectorAll('tr.main-row');\n var rowsArray = Array.prototype.slice.call(rows);\n var sortFunc = getSortFunc(tableHeader);\n\n //Sort the rows...\n rowsArray.sort(function (a, b) { return sortFunc(a, b, colNumber, sortOrder); });\n\n //...and move them in the DOM.\n for (var i = 0; i < rowsArray.length; i++) {\n var row = rowsArray[i];\n row.parentNode.appendChild(row);\n\n //Move details rows to be direct after connected main row.\n var detailRow = row.parentNode.querySelector('tr.details-row[data-id=\"' + row.dataset.id + '\"]');\n row.parentNode.appendChild(detailRow);\n }\n }\n\n var getSortFunc = function (tableHeader) {\n switch (tableHeader.dataset.sortable) {\n case 'vof':\n return vofCompareRows;\n case 'number':\n return numberCompareRows;\n default:\n return defaultCompareRows;\n }\n }\n\n var defaultCompareRows = function (a, b, colNumber, sortOrder) {\n var valueA = getDefaultSortValue(a, colNumber);\n var valueB = getDefaultSortValue(b, colNumber);\n var compareNumber = valueA.localeCompare(valueB) * sortOrder;\n if (compareNumber === 0) {\n return compareCourseCode(a, b, colNumber, sortOrder);\n }\n return compareNumber;\n };\n\n var numberCompareRows = function (a, b, colNumber, sortOrder) {\n var valueA = getDefaultSortValue(a, colNumber);\n var valueB = getDefaultSortValue(b, colNumber);\n\n //Removed asterix (*) if any before trying to cast to number\n valueA = valueA.replace(/\\*+$/g, '');\n valueB = valueB.replace(/\\*+$/g, '');\n\n var numberA = Number(valueA) || 0;\n var numberB = Number(valueB) || 0;\n var compareNumber = (numberA - numberB) * sortOrder;\n if (compareNumber === 0) {\n return compareCourseCode(a, b, colNumber, sortOrder);\n }\n return compareNumber;\n };\n\n var getDefaultSortValue = function (row, colNumber) {\n var td = row.querySelectorAll('td')[colNumber];\n return td.innerText;\n };\n\n var vofOrder = ['o', 'o/v', 'v', 'f'];\n if (window.location.href.indexOf(window.location.origin + \"/en\") > -1) vofOrder = ['c', 'c/e', 'e', 'v'];\n\n var vofCompareRows = function (a, b, colNumber, sortOrder) {\n var indexA = vofOrder.indexOf(a.dataset.vof.toLowerCase());\n var indexB = vofOrder.indexOf(b.dataset.vof.toLowerCase());\n\n if (indexA < 0) {\n return -1 * sortOrder;\n }\n if (indexB < 0) {\n return 1 * sortOrder;\n }\n\n var compareNumber = (indexA - indexB) * sortOrder;\n if (compareNumber === 0) {\n return compareCourseCode(a, b, colNumber, sortOrder);\n }\n return compareNumber;\n };\n\n var compareCourseCode = function (a, b, colNumber, sortOrder) {\n var courseCodeA = a.dataset.courseCode || \"\";\n var courseCodeB = b.dataset.courseCode || \"\";\n return courseCodeA.localeCompare(courseCodeB) * sortOrder;\n };\n\n return TableSorter;\n};\n","//function ($, clickToggle, scrollUtil, layoutUtil, getSize, checkIfBrowserIsIE) { \r\nvar Accordion = function ($, scrollUtil) {\r\n var Accordion = function (element) {\r\n this.el = element;\r\n this.$el = $(element);\r\n\r\n this.accordionHead = this.$el.find('.js-accordion-head');\r\n\r\n this.$toggleElement = GetToggleElement(this);\r\n this.toggleElementHeight = this.$toggleElement.getSize().height;\r\n\r\n this.updateKeyframeRules();\r\n\r\n this.events();\r\n };\r\n\r\n Accordion.prototype.events = function () {\r\n var self = this;\r\n\r\n self.accordionHead.clickToggle({\r\n targetIsParent: true,\r\n targetClass: \"is-toggled\"\r\n }).click(function () {\r\n toggleElement = GetToggleElement(self);\r\n\r\n // If the accordion should be animated, toggle the animation classes\r\n if (toggleElement.hasClass(\"animateVisibility\")) {\r\n toggleElement.removeClass('finished-animation');\r\n setAnimation(toggleElement);\r\n }\r\n else {\r\n if (toggleElement.attr('aria-hidden')) {\r\n if (toggleElement.attr('aria-hidden') === 'false') {\r\n toggleElement.attr('aria-hidden', 'true');\r\n } else {\r\n toggleElement.attr('aria-hidden', 'false');\r\n }\r\n }\r\n }\r\n\r\n toggleElement.focus();\r\n });\r\n\r\n self.$toggleElement.on('animationend', function (e) {\r\n if ($(e.currentTarget).hasClass(\"fade-out-visibility\")) {\r\n scrollUtil.scrollTo($(\".scrollable-tabs\"), true);\r\n }\r\n\r\n // update the rules if the height has changed\r\n self.updateKeyframeRules();\r\n });\r\n\r\n // Prevent animation from running in chrome on display property switch\r\n $(\".scrollable-tabs\").find('.tabs-nav__item a').click(function (e) {\r\n var toggleElement = GetToggleElement(self);\r\n\r\n toggleElement.addClass('finished-animation');\r\n\r\n if (toggleElement.hasClass('fade-out-visibility')) {\r\n toggleElement.hide();\r\n }\r\n });\r\n };\r\n\r\n\r\n // search the CSSOM for a specific -webkit-keyframe rule\r\n Accordion.prototype.findKeyframesRule = function (rule) {\r\n // gather all stylesheets into an array\r\n var ss = document.styleSheets;\r\n\r\n // loop through the stylesheets\r\n for (var i = 0; i < ss.length; ++i) {\r\n\r\n // loop through all the rules\r\n for (var j = 0; j < ss[i].cssRules.length; ++j) {\r\n\r\n // find the -webkit-keyframe rule whose name matches our passed over parameter and return that rule\r\n if (ss[i].cssRules[j].type === window.CSSRule.KEYFRAMES_RULE && ss[i].cssRules[j].name === rule)\r\n return ss[i].cssRules[j];\r\n }\r\n }\r\n\r\n // rule not found\r\n return null;\r\n };\r\n\r\n\r\n // Update the animation rules with the correct height of visible element\r\n Accordion.prototype.updateKeyframeRules = function () {\r\n var fadeInRule = this.findKeyframesRule(\"fadeInVisibility\");\r\n var fadeOutRule = this.findKeyframesRule(\"fadeOutVisibility\");\r\n // remove the existing 0% and 100% rules\r\n fadeInRule.deleteRule(\"0%\");\r\n fadeInRule.deleteRule(\"100%\");\r\n fadeOutRule.deleteRule(\"0%\");\r\n fadeOutRule.deleteRule(\"100%\");\r\n // add the correct height for the keyframes animations.\r\n fadeInRule.appendRule(\"0% { max-height:0px; }\");\r\n fadeInRule.appendRule(\"100% { max-height:\" + this.toggleElementHeight + \"px; }\");\r\n fadeOutRule.appendRule(\"0% { max-height:\" + this.toggleElementHeight + \"px; padding-top: 30px; padding-bottom: 10px; } \");\r\n fadeOutRule.appendRule(\"100% { max-height:0px; padding-top: 0px; padding-bottom: 0px; } \");\r\n };\r\n\r\n\r\n return Accordion;\r\n};\r\n\r\n\r\nfunction setAnimation(toggleElement) {\r\n if (toggleElement.hasClass('fade-in-visibility')) {\r\n // Make sure the element is visible first, before animating height.\r\n toggleElement.show();\r\n toggleElement.addClass(\"fade-out-visibility\");\r\n toggleElement.removeClass(\"fade-in-visibility\");\r\n }\r\n else if (toggleElement.hasClass('fade-out-visibility')) {\r\n toggleElement.show();\r\n toggleElement.addClass(\"fade-in-visibility\");\r\n toggleElement.removeClass(\"fade-out-visibility\");\r\n }\r\n else {\r\n toggleElement.show();\r\n toggleElement.addClass(\"fade-in-visibility\");\r\n toggleElement.removeClass(\"fade-out-visibility\");\r\n }\r\n}\r\n\r\n// Get the content element that is toggled.\r\nfunction GetToggleElement(self) {\r\n var toggleElement = self.accordionHead.next(\".toggle-content\");\r\n if (toggleElement.length === 0) {\r\n toggleElement = self.accordionHead.parent().next(\".toggle-content\");\r\n }\r\n if (toggleElement.length === 0) {\r\n toggleElement = self.accordionHead.parent().find(\".toggle-content\");\r\n }\r\n\r\n return toggleElement;\r\n}\r\n","var SetupStudyGuideSearch = function () {\r\n $('#searchtype-select').select2({\r\n width: '100%',\r\n dropdownCssClass: 'custom-select2dd',\r\n selectionCssClass: 'custom-select2selection',\r\n minimumResultsForSearch: Infinity\r\n })\r\n .on('select2:select', function (e) {\r\n onSelectedTypeChanged(e.target)\r\n });\r\n\r\n $('#mainfieldofstudy-select').select2({\r\n width: '100%',\r\n dropdownCssClass: 'custom-select2dd',\r\n selectionCssClass: 'custom-select2selection',\r\n matcher: select2Matcher\r\n })\r\n .on('select2:select', function (e) {\r\n onMainFieldOfStudyChanged(e.target)\r\n });\r\n};\r\n\r\nfunction filterCourses(value) {\r\n var matches = 0;\r\n var courses = document.getElementsByClassName('sr-course');\r\n [...courses].forEach((element, index, array) => {\r\n // Show (all or those that matches selected mainFieldOfStudy) or hide (the others)\r\n if (value === \"\" || element.classList.contains(\"mfid\" + value)) {\r\n element.classList.remove('hidden');\r\n matches++;\r\n } else {\r\n element.classList.add('hidden');\r\n }\r\n });\r\n\r\n // Update number of hits\r\n var numberOfCourseHits = document.getElementById('search-results-course-hits');\r\n if (numberOfCourseHits !== null) numberOfCourseHits.innerHTML = matches;\r\n}\r\n\r\nfunction filterCoursesByMainFieldOfStudy(element) {\r\n\r\n var value = element === undefined ? \"\" : element.options[element.selectedIndex].value;\r\n\r\n filterCourses(value);\r\n\r\n const url = new URL(window.location.href);\r\n url.searchParams.set('MainFieldOfStudy', value);\r\n\r\n if (history.replaceState) {\r\n history.replaceState(history.state, \"\", url);\r\n }\r\n}\r\n\r\nfunction onSelectedTypeChanged(element) {\r\n var value = element.options[element.selectedIndex].value;\r\n\r\n var course = document.getElementById('study-guide-search-results-course');\r\n var programme = document.getElementById('study-guide-search-results-programme');\r\n var mainFieldOfStudyFilter = document.getElementById('mainfieldofstudy-filter');\r\n\r\n // Hide/show as appropriate\r\n if (value === \"programme\") {\r\n if (course !== null) course.classList.add('hidden');\r\n if (programme !== null) programme.classList.remove('hidden');\r\n if (mainFieldOfStudyFilter !== null) mainFieldOfStudyFilter.classList.add('hidden');\r\n filterCoursesByMainFieldOfStudy();\r\n } else if (value === \"course\") {\r\n if (course !== null) course.classList.remove('hidden');\r\n if (programme !== null) programme.classList.add('hidden');\r\n if (mainFieldOfStudyFilter !== null) mainFieldOfStudyFilter.classList.remove('hidden');\r\n var mainFieldOfStudySelect = document.getElementById('mainfieldofstudy-select');\r\n filterCoursesByMainFieldOfStudy(mainFieldOfStudySelect);\r\n } else {\r\n if (course !== null) course.classList.remove('hidden');\r\n if (programme !== null) programme.classList.remove('hidden');\r\n if (mainFieldOfStudyFilter !== null) mainFieldOfStudyFilter.classList.add('hidden');\r\n filterCoursesByMainFieldOfStudy();\r\n }\r\n\r\n const url = new URL(window.location.href);\r\n url.searchParams.set('Type', value);\r\n\r\n if (history.replaceState) {\r\n history.replaceState(history.state, \"\", url);\r\n }\r\n}\r\n\r\nfunction onMainFieldOfStudyChanged(element) {\r\n filterCoursesByMainFieldOfStudy(element);\r\n}\r\n\r\n// Function matcher taken from https://github.com/select2/select2/blob/develop/src/js/select2/defaults.js but with stripDiacritics removed\r\nfunction select2Matcher(params, data) {\r\n // Always return the object if there is nothing to compare\r\n if (params.term == null || params.term.trim() === '') {\r\n return data;\r\n }\r\n\r\n // Do a recursive check for options with children\r\n if (data.children && data.children.length > 0) {\r\n // Clone the data object if there are children\r\n // This is required as we modify the object to remove any non-matches\r\n var match = $.extend(true, {}, data);\r\n\r\n // Check each child of the option\r\n for (var c = data.children.length - 1; c >= 0; c--) {\r\n var child = data.children[c];\r\n\r\n var matches = select2Matcher(params, child);\r\n\r\n // If there wasn't a match, remove the object in the array\r\n if (matches == null) {\r\n match.children.splice(c, 1);\r\n }\r\n }\r\n\r\n // If any children matched, return the new object\r\n if (match.children.length > 0) {\r\n return match;\r\n }\r\n\r\n // If there were no matching children, check just the plain object\r\n return select2Matcher(params, match);\r\n }\r\n\r\n var original = data.text.toUpperCase();\r\n var term = params.term.toUpperCase();\r\n\r\n // Check if the text contains the term\r\n if (original.indexOf(term) > -1) {\r\n return data;\r\n }\r\n\r\n // If it doesn't contain the term, don't return anything\r\n return null;\r\n}\r\n","function scrollUtil() {\r\n var getTargetPosition = function (target, skipHeader) {\r\n if (skipHeader) {\r\n var $headerGlobal = $('.js-site-header');\r\n var totalHeaderHeight = $headerGlobal.outerHeight();\r\n return $(target).offset().top - totalHeaderHeight;\r\n }\r\n return $(target).offset().top;\r\n };\r\n\r\n var scrollTo = function (target, skipHeader, duration) {\r\n if (duration === undefined) duration = 800;\r\n var targetPosition = getTargetPosition(target, skipHeader);\r\n $('html, body').animate({ scrollTop: targetPosition },\r\n {\r\n duration: duration,\r\n step: function (now, fx) {\r\n var newTargetPosition = getTargetPosition(target, skipHeader);\r\n if (targetPosition !== newTargetPosition) {\r\n targetPosition = newTargetPosition;\r\n //target position has changed during scrolling because the header height has changed, set new target posistion as end of scrolling.\r\n fx.end = targetPosition;\r\n }\r\n }\r\n });\r\n };\r\n\r\n return {\r\n scrollTo: scrollTo\r\n };\r\n};\r\n","$.fn.clickToggle = function (options) {\r\n\r\n var settings = $.extend({\r\n className: \"ev-click-toggled\",\r\n target: null,\r\n targetClass: \"ev-toggle\",\r\n targetIsParent: false,\r\n callback: null\r\n },\r\n options);\r\n\r\n function toggle(e) {\r\n // avoid toggling event expand animation when clicking on links.\r\n if (e.target.nodeName === 'A') {\r\n return;\r\n }\r\n\r\n var target = $(this).attr(\"data-target\");\r\n if (settings.target) {\r\n target = settings.target;\r\n }\r\n\r\n var $target = $(target);\r\n\r\n if (settings.targetIsParent) {\r\n $target = $(this).parent();\r\n }\r\n\r\n $target.toggleClass(settings.targetClass);\r\n $(this).toggleClass(settings.className);\r\n\r\n if (settings.callback !== null) {\r\n settings.callback(this);\r\n }\r\n\r\n var toggleTrigger = $(this).find(\"button\");\r\n\r\n if (toggleTrigger.length === 0) {\r\n toggleTrigger = $(this);\r\n }\r\n\r\n if (toggleTrigger.attr('aria-expanded')) {\r\n if (toggleTrigger.attr('aria-expanded') === 'false') {\r\n toggleTrigger.attr('aria-expanded', 'true');\r\n } else {\r\n toggleTrigger.attr('aria-expanded', 'false');\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n //console.log(['clickToggle', this]);\r\n return this.click(toggle).on('keydown', function (e) {\r\n if (e.which === 13) { // Enter key\r\n toggle(e);\r\n }\r\n });\r\n};\r\n","$.fn.getSize = function () {\r\n var $wrap = $(\"
\").appendTo($(\"body\"));\r\n $wrap.css({\r\n \"position\": \"absolute !important\",\r\n \"visibility\": \"hidden !important\",\r\n \"display\": \"block !important\"\r\n });\r\n\r\n $clone = $(this).clone().appendTo($wrap);\r\n\r\n sizes = {\r\n \"width\": $clone.width(),\r\n \"height\": $clone.height()\r\n };\r\n\r\n $wrap.remove();\r\n\r\n return sizes;\r\n};\r\n"]}