You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
1.0 MiB
1 lines
1.0 MiB
{"version":3,"sources":["site.js","form.js","accordion.js","checkbox.js","dimmer.js","dropdown.js","embed.js","modal.js","nag.js","popup.js","progress.js","rating.js","search.js","shape.js","sidebar.js","sticky.js","tab.js","transition.js","api.js","state.js","visibility.js"],"names":["$","window","document","undefined","site","fn","parameters","module","returnedValue","time","Date","getTime","performance","query","arguments","methodInvoked","queryArguments","slice","call","settings","isPlainObject","extend","namespace","error","moduleNamespace","$document","$module","element","this","instance","data","initialize","instantiate","verbose","normalize","fix","console","requestAnimationFrame","debug","log","disable","group","groupEnd","groupCollapsed","markTimeline","consoleClear","clear","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","callback","setTimeout","moduleExists","name","enabled","modules","enabledModules","each","index","push","disabled","disabledModules","change","setting","value","modifyExisting","$existingModules","length","newSettings","enable","cache","info","warn","destroy","removeData","internal","Function","prototype","bind","apply","message","currentTime","executionTime","previousTime","Element","Name","Arguments","Execution Time","clearTimeout","timer","display","title","totalTime","table","invoke","passedArguments","context","maxDepth","found","response","object","split","depth","camelCaseValue","charAt","toUpperCase","method","isFunction","isArray","siteNamespace","namespaceStub","config","sections","section","utilities","expr","createPseudo","dataName","elem","i","match","jQuery","Math","self","form","$allModules","moduleSelector","selector","legacyParameters","$field","$group","$message","$prompt","$submit","$clear","$reset","validation","metadata","className","eventNamespace","formErrors","keyHeldDown","get","bindEvents","set","defaults","removeEvents","refresh","find","field","prompt","submit","reset","attachEvents","action","on","event","preventDefault","validate","blur","keyboardShortcuts","keydown","$input","type","prop","inputEvent","changeEvent","$element","parent","$fieldGroup","closest","defaultValue","isCheckbox","is","uiCheckbox","isDropdown","uiDropdown","isErrored","hasClass","removeClass","remove","dropdown","val","bracketedRule","rule","regExp","bracket","empty","blank","trim","valid","allValid","fieldName","off","key","which","isInput","input","checkbox","isInDropdown","keyCode","enter","escape","ctrlKey","one","keyup","validationRules","revalidate","delay","ancillaryValue","ruleName","replace","createElement","oninput","onpropertychange","$label","ancillary","text","unspecifiedRule","requiresValue","search","requiresName","identifier","eq","unspecifiedField","ruleKeys","keys","Object","isLegacySettings","rules","oldSyntax","fields","filter","$fields","add","fieldValidation","results","values","isRadio","radio","isMultiple","indexOf","isChecked","has","errors","children","promptExists","addClass","inline","templates","appendTo","html","transition","duration","fadeIn","fadeOut","success","isEmptyObject","$multipleField","fieldExists","ignoreCallbacks","onSuccess","stopImmediatePropagation","onFailure","$dependsField","depends","fieldValid","fieldErrors","optional","onValid","concat","onInvalid","ruleFunction","noRule","silent","decimal","email","flags","integer","number","url","checked","isExactly","not","notExactly","contain","containExactly","doesntContain","doesntContainExactly","minLength","exactLength","maxLength","different","creditCard","minCount","exactCount","maxCount","label","pressed","test","RegExp","regExpParts","range","min","max","parts","intRegExp","toLowerCase","notValue","contains","containsExactly","requiredLength","matchingValue","toString","cardNumber","cardTypes","unionPay","cards","visa","pattern","amex","mastercard","discover","jcb","maestro","dinersClub","laser","visaElectron","validCard","requiredTypes","inArray","multiple","producedValue","sum","parseInt","accordion","observer","$title","$content","content","events","observeChanges","MutationObserver","mutations","observe","childList","subtree","trigger","click","toggle","$activeTitle","$activeContent","next","isAnimating","animating","isActive","active","isOpen","isOpening","collapsible","close","open","onOpening","exclusive","closeOthers","stop","animateChildren","animation","queue","useFailSafe","animate","opacity","resetOpacity","slideDown","easing","onOpen","onChange","isClosing","onClosing","slideUp","onClose","$openTitles","$nestedTitles","$openContents","$parentTitles","parents","prev","$activeAccordion","activeSelector","activeContent","closeNested","css","attr","removeAttr","easeOutQuad","x","t","b","c","d","initialLoad","shortcutPressed","create","tabbable","hide","setup","unbind","show","reference","indeterminate","check","uncheck","hidden","notFound","$target","target","link","focus","space","should","allowCheck","onChecked","allowUncheck","unchecked","onUnchecked","allowIndeterminate","onIndeterminate","determinate","allowDeterminate","onDeterminate","onEnable","onEnabled","onDisable","onDisabled","radios","otherRadios","forceCallbacks","beforeChecked","beforeUnchecked","beforeIndeterminate","beforeDeterminate","fireOnInit","can","readOnly","uncheckable","uncheckOthers","createEvent","inputElement","initEvent","dispatchEvent","prevAll","detach","insertAfter","$radios","dimmer","$dimmer","$dimmable","clickEvent","documentElement","preinitialize","dimmerName","variation","dimmable","page","pageDimmer","closable","addContent","template","dimmed","onShow","onHide","useCSS","onStart","onComplete","width","height","fadeTo","color","colorArray","isRGB","isRGBA","join","hasTouch","elementIndex","pageLostFocus","willRefocus","elementNamespace","id","selectObserver","menuObserver","$context","$text","$search","$sizer","sizer","$icon","icon","$combo","$menu","menu","$item","item","activated","itemActivated","internalChange","alreadySetup","layout","refreshData","save","restore","selected","disconnect","select","mutation","random","substr","userChoice","$userChoices","$userChoice","userValues","addition","variables","addResult","hideAdditions","userLabels","minCharacters","firstUnfiltered","selectedItem","unselectable","nextAvailable","$selected","$nextAvailable","nextAll","$prevAvailable","hasNext","api","apiSettings","urlData","returnedObject","insertBefore","searchSelection","allowTab","selectValues","selection","missingMultiple","prependTo","$firstModules","$lastModules","refreshSelectors","refreshItems","clearData","defaultText","placeholderText","maxSelections","allResultsFiltered","allFiltered","intent","menuSearch","focusSearch","visible","hideOthers","hideMenu","hideSubMenus","$subMenus","touchEvents","keyboardEvents","inputEvents","mouseEvents","single","mouseenter","mousedown","mouseup","mouseleave","touch","searchTerm","afterFiltered","filterActive","onNoResults","allowAdditions","noResults","userSuggestion","focusedOnSearch","useLabels","useAPI","queryRemote","noAPI","filterItems","errorDuration","throttle","onError","serverError","remoteValues","escapedTerm","beginsWithRegExp","$choice","String","choiceText","fullTextSearch","exactSearch","fuzzySearch","choiceValue","filteredItem","filtered","term","termLength","queryLength","characterIndex","nextCharacterIndex","queryCharacter","charCodeAt","skipHandler","forceSelection","$currentlySelected","$activeItem","$selectedItem","hasSelected","showOnFocus","activeElement","activeLabel","$labels","$activeLabels","$nextActive","$prevActive","$range","nextUntil","prevUntil","shiftKey","toggleClass","onLabelSelect","activeLabels","toggleBehavior","bubbledLabelClick","bubbledIconClick","determine","eventOnElement","stopPropagation","eventInModule","$addedNode","addedNodes","$removedNode","removedNodes","$changedNodes","isUserAddition","isMessage","$subMenu","$otherMenus","siblings","hasSubMenu","isBubbledEvent","itemTimer","skipRefocus","allowCategorySelection","userAddition","scrollPosition","selectAction","pressedKey","isShortcutKey","inObject","$activeLabel","labelIndex","labelCount","hasActiveLabel","hasMultipleActive","isFirstLabel","isLastLabel","isSearch","isFocusedOnSearch","isFocused","focused","caretAtStart","caretPosition","leftArrow","siblingLabel","end","last","rightArrow","first","deleteKey","backspace","$nextItem","isSubMenuItem","$visibleItems","addBack","$parentMenu","inVisibleMenu","hasSelectedItem","selectedIsSelectable","delimiterPressed","delimiter","isAdditionWithoutMenu","upArrow","selectOnKeydown","downArrow","pageUp","scrollPage","pageDown","selectedLetter","fromCharCode","inDocument","inModule","inVisibleDOM","body","notOnLabel","notInMenu","nothing","activate","hideAndClear","combo","searchWidth","ceil","selectionCount","count","upward","grep","uniqueArray","array","rangeLength","selectionStart","createRange","moveStart","isEmptyMultiselect","selectInput","read","remoteData","preserveHTML","clone","menuIcon","$option","placeholder","sortSelect","sort","a","activeItem","itemWithAdditions","$items","$userItems","hasUserItems","strict","shouldSearch","optionText","optionValue","labels","saveRemoteData","Storage","noStorage","sessionStorage","getItem","setItem","clearValue","direction","isWithinRange","$nextSelectedItem","$currentItem","menuHeight","outerHeight","currentScroll","scrollTop","itemHeight","itemsPerPage","floor","newScroll","$selectableItem","isSearchMultiple","searchValue","hasSearchValue","valueIsSet","glyphWidth","loading","partialSearch","forceScroll","hasActive","offset","itemOffset","menuOffset","menuScroll","abovePage","belowPage","edgeTolerance","position","top","letter","alreadySelectedLetter","firstLetter","$nextValue","onScreen","escapedValue","hasInput","currentValue","stringValue","allowReselection","extendSelect","exactly","selectedText","selectedValue","isFiltered","isUserValue","shouldAnimate","$next","onLabelCreate","hasOption","$addition","$existingItem","alreadyHasValue","hasUserSuggestion","hasCount","hasMaxCount","hasTerm","addedValue","addedText","newValue","onAdd","removedValue","removedText","$removedItem","arrayValue","onRemove","$removedLabel","userValue","onLabelRemove","items","$normalResults","hasValue","calculations","$currentMenu","canOpenDownward","above","below","needle","property","selectMutation","selectChanged","start","noTransition","multipleValues","isUnparsable","hasQuotes","quote","keepOnScreen","$selectedLabels","option","maybeText","maybeDisabled","choice","embed","sources","$placeholder","$embed","autoplay","createAndShow","createPlaceholder","generate","createEmbed","onCreate","changeEmbed","source","showPlaceholder","onReset","onDisplay","onPlaceholderDisplay","matchedSource","domain","encode","urlString","encodeURIComponent","iframe","noURL","extraParameters","onEmbed","video","hd","brandedUI","youtube","autohide","hq","jsapi","modestbranding","vimeo","byline","portrait","src","image","onPause","onPlay","onStop","modal","$window","$body","$allModals","$otherModals","$focusedElement","elementEventNamespace","$close","refreshModals","defaultSettings","dimmerSettings","inverted","detachable","undetached","blurring","scrolling","cacheSizes","screenHeight","$toggle","approve","deny","resize","onApprove","onDeny","isInModal","isInDOM","clickaway","allowMultiple","hideAll","debounce","keyboard","escapeKey","showModal","hideModal","showDimmer","others","onVisible","autofocus","keepDimmed","hideDimmer","onHidden","$visibleModals","bodyStyle","modalHeight","pageHeight","contextHeight","fit","padding","modernBrowser","ActiveXObject","$inputs","$autofocus","marginTop","nag","dismiss","displayTime","storageMethod","storage","persist","storageOptions","options","expires","path","localStorage","cookie","noCookieStorage","storedValue","removeItem","removeCookie","bottom","fixed","speed","popup","$popup","$offsetParent","documentObserver","$scrollContext","scrollContext","$boundary","boundary","searchDepth","triedPositions","openedWithTouch","createID","exists","preserve","documentChanged","offsetParent","movePopup","reposition","removePopup","hideTimer","showTimer","touchstart","forEach","node","hideGracefully","inPopup","activator","hoverable","conditions","supports","svg","SVGGraphicsElement","popupOffset","screen","targetElement","isWindow","targetPosition","screenPosition","left","scroll","scrollLeft","outerWidth","margin","setFluidWidth","fluid","container","getComputedStyle","getPropertyValue","rtl","right","startEvent","scrollEvent","endEvent","distanceFromBoundary","parentNode","$node","is2D","isStatic","isHTML","positions","top left","top center","top right","bottom left","bottom center","bottom right","left center","right center","nextPosition","verticalPosition","horizontalPosition","opposite","adjacent","center","backup","adjacentsAvailable","oppositeTried","adjacentTried","prefer","distanceAway","positioning","maxSearchDepth","lastResort","invalidPosition","offstage","cannotPlace","attempts","onUnplaceable","fluidWidth","hideOnScroll","distance","jitter","addTouchEvents","string","badChars","shouldEscape","&","<",">","\"","'","`","escapedChar","chr","progress","transitionEnd","$bar","bar","$progress","transitionEvent","clearInterval","interval","state","nextValue","update","complete","percent","progressPoll","total","failSafeTimer","triggerHandler","failSafeDelay","increment","incrementValue","maxValue","startValue","randomValue","normalizedValue","decrement","decrementValue","templateText","displayPercent","updateInterval","numericValue","transitions","OTransition","MozTransition","WebkitTransition","style","barWidth","totalWidth","minDisplay","precision","round","toNextValue","warning","tooHigh","tooLow","transition-duration","limitValues","labelInterval","animationCallback","setInterval","framerate","barLabel","autoSuccess","ratio","showActivity","onLabelUpdate","onActive","onWarning","totalValue","percentComplete","nonNumeric","variable","rating","interactive","initialRating","maxRating","$activeIcon","currentRating","canClear","clearable","clearRating","ratingIndex","onRate","slent","noMaximum","$searchButton","searchButton","$results","$result","result","$category","category","disabledBubbled","searchFields","refreshResults","automatic","handleKeyboard","searchDelay","minimumCharacters","showResults","cancel","hideResults","hideDelay","resultsClicked","inMessage","$link","href","onSelect","location","newIndex","$activeResult","currentIndex","resultSize","hasActiveResult","buttonPressed","buttonFocus","parse","onAbort","displayMessage","promptElement","lookupFields","firstResult","addResults","inject","local","remote","onSearchQuery","searchHTML","generateResults","write","fuzzyResults","searchExp","matchRegExp","beginsWith","notResult","notFuzzyResult","searchFullText","merge","numCharacters","resultIndex","categoryIndex","letterID","resultID","$selectedResult","onResultsAdd","selectFirstResult","onResultsOpen","onResultsClose","isProperObject","isProperArray","maxResults","noTemplate","showNoResults","onResults","displayField","logging","noEndpoint","categories","categoryName","categoryResults","description","price","actionText","actionURL","standard","shape","$activeSide","$nextSide","$sides","sides","$side","side","nextIndex","defaultSide","repaint","offsetWidth","propertyObject","beforeChange","-webkit-transition-duration","-moz-transition-duration","-ms-transition-duration","-o-transition-duration","currentStageSize","stageSize","$clone","newWidth","newHeight","nextSide","flip","up","allowRepeats","transform","stage","down","over","behind","back","translate","y","z","box","origin","sidebar","$html","$head","$style","$sidebars","$fixed","$pusher","pusher","ios","delaySetup","clickedInPusher","clickedContext","containScroll","offsetHeight","scrollHeight","scrollLock","inlineCSS","isRTL","ie","refreshSidebars","omitted","wrapAll","movedSidebar","pushable","overlay","othersActive","pushPage","pullPage","othersAnimating","othersVisible","$otherSidebars","sidebarCount","callbackCount","dim","$transition","scrollToTop","dimPage","returnScroll","mobile","scrollBack","scrollTo","pushed","mobileTransition","defaultTransition","computer","isIE11","isIE","userAgent","navigator","isIOS","isMobileChrome","mobileChrome","isMobile","closed","vertical","sticky","$container","$scroll","determineContainer","determineContext","checkErrors","load","scrollchange","changed","invalidContext","elementSize","stick","onScroll","hardRefresh","onReposition","supported","lastScroll","elementScroll","standardScroll","fits","containerSize","size","scrollChange","currentElementScroll","abs","delta","maxScroll","possibleScroll","tagName","minimumSize","setProperty","initialPosition","bound","cachedPosition","pushing","bottomOffset","doesntFit","elementVisible","bindBottom","fixTop","setInitialPosition","fixBottom","bindTop","marginBottom","onTop","onUnstick","onBottom","unfix","onStick","resetCSS","tab","initializedHistory","$tabs","activeTabPath","parameterArray","historyEvent","firstLoad","recursionDepth","callbacks","determineTabs","auto","history","initializeHistory","$reference","ui","childrenOnly","tabs","onTabLoad","onTabInit","onLoad","legacyLoad","onFirstLoad","legacyInit","address","historyType","tabPath","changeTab","pathNames","initialPath","pageTitle","determineTitle","cacheKey","$tab","tabElement","isLoading","onRequest","pushStateAvailable","pushState","shouldIgnoreLoad","ignoreFirstLoad","remoteContent","pathArray","pathToArray","defaultPathArray","arrayToPath","$anchor","nextPathArray","nextPath","isLastTab","currentPathArray","currentPath","isTab","isLastIndex","filterArray","all","navigation","fetch","missingTab","scrollOffset","evaluateScripts","cacheType","append","innerHTML","fullTabPath","requestSettings","cachedContent","dataType","encodeParameters","alwaysRefresh","headers","X-Remote","request","existingRequest","$deactiveTabs","deactivate","$navigation","navElement","$deactiveNavigation","tabName","defaultPath","$defaultNav","defaultTab","recursion","$fullPathTab","$simplePathTab","tabPathArray","lastTab","keepArray","removeArray","keepValue","pathName","tabArray","noContent","loaded","promise","moduleArguments","animationEnd","animationEndEvent","displayType","forceRepaint","$parentElement","$nextElement","shouldReverse","animationDirection","reverse","outward","overrideSettings","support","occurring","queuing","noAnimation","animationCallbacks","completeCallback","failSafe","looping","inward","force","userStyle","overrideStyle","currentDisplay","emptyStyle","hasDirection","word","inlineDisplay","animationClass","animationName","animation-duration","transitionExists","currentAnimation","queueCallback","directionClass","currentDirection","parseFloat","shouldDetermine","animationStartEvent","animations","OAnimation","MozAnimation","WebkitAnimation","forced","elementClass","inAnimation","directionExists","stopAll","repeated","ajaxSettings","requestStartTime","$form","stateContext","triggerEvent","decode","json","JSON","e","cachedResponse","stringify","interruptRequests","abort","defaultData","serializeForm","formData","cancelled","beforeSend","templatedURL","mocked","base","beforeXHR","failure","resolveWith","throttleFirstRequest","send","missingURL","removeError","hideError","expectingJSON","mockResponse","mockResponseAsync","responseAsync","abortedRequest","xhr","readyState","validResponse","successTest","was","succesful","requiredVariables","optionalVariables","required","templatedString","requiredParameter","urlEncodedValue","hasOtherData","canSerialize","serializeObject","serialize","missingSerialize","mockedXHR","always","done","textStatus","elapsedTime","timeLeft","loadingDuration","translatedResponse","onResponse","rejectWith","fail","status","httpMessage","firstParameter","secondParameter","responseFromXHR","errorMessage","errorFromRequest","statusMessage","Deferred","asyncCallback","responder","asyncResponder","responseText","ajax","runSettings","noReturnedValue","decodedValue","decodeURIComponent","encodedValue","alreadyEncoded","missingAction","exitConditions","JSONParse","parseError","timeout","states","userStates","typeStates","inactive","textEnabled","button","allow","disallow","allows","setState","removeState","apiRequest","requestCancelled","activateTest","deactivateTest","listenTo","when","then","sync","hover","onActivate","onDeactivate","textFor","flash","previousText","flashDuration","activeText","storedText","inactiveText","currentText","visibility","moduleCount","loadedCount","contextObserver","trackChanges","initialCheck","checkVisibility","resetFixed","contextChanged","refreshOnLoad","refreshOnResize","precache","images","Array","imagesLength","loadedCounter","cacheImage","handleLoad","onload","onerror","enableCallbacks","disableCallbacks","occurred","once","onOnScreen","onAllLoaded","onTopPassed","onTopPassedReverse","zIndex","onFixed","elementCalculations","offScreen","checkOnRefresh","onRefresh","passed","passingReverse","topVisibleReverse","bottomVisibleReverse","topPassedReverse","bottomPassedReverse","passing","topVisible","bottomVisible","topPassed","bottomPassed","onUpdate","amount","newCallback","onPassed","pixelsPassed","execute","callbackName","onOffScreen","onPassing","onTopVisible","onBottomVisible","onBottomPassed","onPassingReverse","onTopVisibleReverse","onBottomVisibleReverse","onBottomPassedReverse","screenCalculations","continuous","onUnfixed","elementPosition","screenSize","includeMargin","percentagePassed"],"mappings":"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","file":"semantic.min.js","sourcesContent":["/*!\n * # Semantic UI 2.2.6 - Site\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n$.site = $.fn.site = function(parameters) {\n var\n time = new Date().getTime(),\n performance = [],\n\n query = arguments[0],\n methodInvoked = (typeof query == 'string'),\n queryArguments = [].slice.call(arguments, 1),\n\n settings = ( $.isPlainObject(parameters) )\n ? $.extend(true, {}, $.site.settings, parameters)\n : $.extend({}, $.site.settings),\n\n namespace = settings.namespace,\n error = settings.error,\n\n eventNamespace = '.' + namespace,\n moduleNamespace = 'module-' + namespace,\n\n $document = $(document),\n $module = $document,\n element = this,\n instance = $module.data(moduleNamespace),\n\n module,\n returnedValue\n ;\n module = {\n\n initialize: function() {\n module.instantiate();\n },\n\n instantiate: function() {\n module.verbose('Storing instance of site', module);\n instance = module;\n $module\n .data(moduleNamespace, module)\n ;\n },\n\n normalize: function() {\n module.fix.console();\n module.fix.requestAnimationFrame();\n },\n\n fix: {\n console: function() {\n module.debug('Normalizing window.console');\n if (console === undefined || console.log === undefined) {\n module.verbose('Console not available, normalizing events');\n module.disable.console();\n }\n if (typeof console.group == 'undefined' || typeof console.groupEnd == 'undefined' || typeof console.groupCollapsed == 'undefined') {\n module.verbose('Console group not available, normalizing events');\n window.console.group = function() {};\n window.console.groupEnd = function() {};\n window.console.groupCollapsed = function() {};\n }\n if (typeof console.markTimeline == 'undefined') {\n module.verbose('Mark timeline not available, normalizing events');\n window.console.markTimeline = function() {};\n }\n },\n consoleClear: function() {\n module.debug('Disabling programmatic console clearing');\n window.console.clear = function() {};\n },\n requestAnimationFrame: function() {\n module.debug('Normalizing requestAnimationFrame');\n if(window.requestAnimationFrame === undefined) {\n module.debug('RequestAnimationFrame not available, normalizing event');\n window.requestAnimationFrame = window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || function(callback) { setTimeout(callback, 0); }\n ;\n }\n }\n },\n\n moduleExists: function(name) {\n return ($.fn[name] !== undefined && $.fn[name].settings !== undefined);\n },\n\n enabled: {\n modules: function(modules) {\n var\n enabledModules = []\n ;\n modules = modules || settings.modules;\n $.each(modules, function(index, name) {\n if(module.moduleExists(name)) {\n enabledModules.push(name);\n }\n });\n return enabledModules;\n }\n },\n\n disabled: {\n modules: function(modules) {\n var\n disabledModules = []\n ;\n modules = modules || settings.modules;\n $.each(modules, function(index, name) {\n if(!module.moduleExists(name)) {\n disabledModules.push(name);\n }\n });\n return disabledModules;\n }\n },\n\n change: {\n setting: function(setting, value, modules, modifyExisting) {\n modules = (typeof modules === 'string')\n ? (modules === 'all')\n ? settings.modules\n : [modules]\n : modules || settings.modules\n ;\n modifyExisting = (modifyExisting !== undefined)\n ? modifyExisting\n : true\n ;\n $.each(modules, function(index, name) {\n var\n namespace = (module.moduleExists(name))\n ? $.fn[name].settings.namespace || false\n : true,\n $existingModules\n ;\n if(module.moduleExists(name)) {\n module.verbose('Changing default setting', setting, value, name);\n $.fn[name].settings[setting] = value;\n if(modifyExisting && namespace) {\n $existingModules = $(':data(module-' + namespace + ')');\n if($existingModules.length > 0) {\n module.verbose('Modifying existing settings', $existingModules);\n $existingModules[name]('setting', setting, value);\n }\n }\n }\n });\n },\n settings: function(newSettings, modules, modifyExisting) {\n modules = (typeof modules === 'string')\n ? [modules]\n : modules || settings.modules\n ;\n modifyExisting = (modifyExisting !== undefined)\n ? modifyExisting\n : true\n ;\n $.each(modules, function(index, name) {\n var\n $existingModules\n ;\n if(module.moduleExists(name)) {\n module.verbose('Changing default setting', newSettings, name);\n $.extend(true, $.fn[name].settings, newSettings);\n if(modifyExisting && namespace) {\n $existingModules = $(':data(module-' + namespace + ')');\n if($existingModules.length > 0) {\n module.verbose('Modifying existing settings', $existingModules);\n $existingModules[name]('setting', newSettings);\n }\n }\n }\n });\n }\n },\n\n enable: {\n console: function() {\n module.console(true);\n },\n debug: function(modules, modifyExisting) {\n modules = modules || settings.modules;\n module.debug('Enabling debug for modules', modules);\n module.change.setting('debug', true, modules, modifyExisting);\n },\n verbose: function(modules, modifyExisting) {\n modules = modules || settings.modules;\n module.debug('Enabling verbose debug for modules', modules);\n module.change.setting('verbose', true, modules, modifyExisting);\n }\n },\n disable: {\n console: function() {\n module.console(false);\n },\n debug: function(modules, modifyExisting) {\n modules = modules || settings.modules;\n module.debug('Disabling debug for modules', modules);\n module.change.setting('debug', false, modules, modifyExisting);\n },\n verbose: function(modules, modifyExisting) {\n modules = modules || settings.modules;\n module.debug('Disabling verbose debug for modules', modules);\n module.change.setting('verbose', false, modules, modifyExisting);\n }\n },\n\n console: function(enable) {\n if(enable) {\n if(instance.cache.console === undefined) {\n module.error(error.console);\n return;\n }\n module.debug('Restoring console function');\n window.console = instance.cache.console;\n }\n else {\n module.debug('Disabling console function');\n instance.cache.console = window.console;\n window.console = {\n clear : function(){},\n error : function(){},\n group : function(){},\n groupCollapsed : function(){},\n groupEnd : function(){},\n info : function(){},\n log : function(){},\n markTimeline : function(){},\n warn : function(){}\n };\n }\n },\n\n destroy: function() {\n module.verbose('Destroying previous site for', $module);\n $module\n .removeData(moduleNamespace)\n ;\n },\n\n cache: {},\n\n setting: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, settings, name);\n }\n else if(value !== undefined) {\n settings[name] = value;\n }\n else {\n return settings[name];\n }\n },\n internal: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, module, name);\n }\n else if(value !== undefined) {\n module[name] = value;\n }\n else {\n return module[name];\n }\n },\n debug: function() {\n if(settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.debug.apply(console, arguments);\n }\n }\n },\n verbose: function() {\n if(settings.verbose && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.verbose.apply(console, arguments);\n }\n }\n },\n error: function() {\n module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n module.error.apply(console, arguments);\n },\n performance: {\n log: function(message) {\n var\n currentTime,\n executionTime,\n previousTime\n ;\n if(settings.performance) {\n currentTime = new Date().getTime();\n previousTime = time || currentTime;\n executionTime = currentTime - previousTime;\n time = currentTime;\n performance.push({\n 'Element' : element,\n 'Name' : message[0],\n 'Arguments' : [].slice.call(message, 1) || '',\n 'Execution Time' : executionTime\n });\n }\n clearTimeout(module.performance.timer);\n module.performance.timer = setTimeout(module.performance.display, 500);\n },\n display: function() {\n var\n title = settings.name + ':',\n totalTime = 0\n ;\n time = false;\n clearTimeout(module.performance.timer);\n $.each(performance, function(index, data) {\n totalTime += data['Execution Time'];\n });\n title += ' ' + totalTime + 'ms';\n if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n console.groupCollapsed(title);\n if(console.table) {\n console.table(performance);\n }\n else {\n $.each(performance, function(index, data) {\n console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n });\n }\n console.groupEnd();\n }\n performance = [];\n }\n },\n invoke: function(query, passedArguments, context) {\n var\n object = instance,\n maxDepth,\n found,\n response\n ;\n passedArguments = passedArguments || queryArguments;\n context = element || context;\n if(typeof query == 'string' && object !== undefined) {\n query = query.split(/[\\. ]/);\n maxDepth = query.length - 1;\n $.each(query, function(depth, value) {\n var camelCaseValue = (depth != maxDepth)\n ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n : query\n ;\n if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n object = object[camelCaseValue];\n }\n else if( object[camelCaseValue] !== undefined ) {\n found = object[camelCaseValue];\n return false;\n }\n else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n object = object[value];\n }\n else if( object[value] !== undefined ) {\n found = object[value];\n return false;\n }\n else {\n module.error(error.method, query);\n return false;\n }\n });\n }\n if ( $.isFunction( found ) ) {\n response = found.apply(context, passedArguments);\n }\n else if(found !== undefined) {\n response = found;\n }\n if($.isArray(returnedValue)) {\n returnedValue.push(response);\n }\n else if(returnedValue !== undefined) {\n returnedValue = [returnedValue, response];\n }\n else if(response !== undefined) {\n returnedValue = response;\n }\n return found;\n }\n };\n\n if(methodInvoked) {\n if(instance === undefined) {\n module.initialize();\n }\n module.invoke(query);\n }\n else {\n if(instance !== undefined) {\n module.destroy();\n }\n module.initialize();\n }\n return (returnedValue !== undefined)\n ? returnedValue\n : this\n ;\n};\n\n$.site.settings = {\n\n name : 'Site',\n namespace : 'site',\n\n error : {\n console : 'Console cannot be restored, most likely it was overwritten outside of module',\n method : 'The method you called is not defined.'\n },\n\n debug : false,\n verbose : false,\n performance : true,\n\n modules: [\n 'accordion',\n 'api',\n 'checkbox',\n 'dimmer',\n 'dropdown',\n 'embed',\n 'form',\n 'modal',\n 'nag',\n 'popup',\n 'rating',\n 'shape',\n 'sidebar',\n 'state',\n 'sticky',\n 'tab',\n 'transition',\n 'visit',\n 'visibility'\n ],\n\n siteNamespace : 'site',\n namespaceStub : {\n cache : {},\n config : {},\n sections : {},\n section : {},\n utilities : {}\n }\n\n};\n\n// allows for selection of elements with data attributes\n$.extend($.expr[ \":\" ], {\n data: ($.expr.createPseudo)\n ? $.expr.createPseudo(function(dataName) {\n return function(elem) {\n return !!$.data(elem, dataName);\n };\n })\n : function(elem, i, match) {\n // support: jQuery < 1.8\n return !!$.data(elem, match[ 3 ]);\n }\n});\n\n\n})( jQuery, window, document );\n","/*!\n * # Semantic UI 2.2.6 - Form Validation\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n ? window\n : (typeof self != 'undefined' && self.Math == Math)\n ? self\n : Function('return this')()\n;\n\n$.fn.form = function(parameters) {\n var\n $allModules = $(this),\n moduleSelector = $allModules.selector || '',\n\n time = new Date().getTime(),\n performance = [],\n\n query = arguments[0],\n legacyParameters = arguments[1],\n methodInvoked = (typeof query == 'string'),\n queryArguments = [].slice.call(arguments, 1),\n returnedValue\n ;\n $allModules\n .each(function() {\n var\n $module = $(this),\n element = this,\n\n formErrors = [],\n keyHeldDown = false,\n\n // set at run-time\n $field,\n $group,\n $message,\n $prompt,\n $submit,\n $clear,\n $reset,\n\n settings,\n validation,\n\n metadata,\n selector,\n className,\n error,\n\n namespace,\n moduleNamespace,\n eventNamespace,\n\n instance,\n module\n ;\n\n module = {\n\n initialize: function() {\n\n // settings grabbed at run time\n module.get.settings();\n if(methodInvoked) {\n if(instance === undefined) {\n module.instantiate();\n }\n module.invoke(query);\n }\n else {\n if(instance !== undefined) {\n instance.invoke('destroy');\n }\n module.verbose('Initializing form validation', $module, settings);\n module.bindEvents();\n module.set.defaults();\n module.instantiate();\n }\n },\n\n instantiate: function() {\n module.verbose('Storing instance of module', module);\n instance = module;\n $module\n .data(moduleNamespace, module)\n ;\n },\n\n destroy: function() {\n module.verbose('Destroying previous module', instance);\n module.removeEvents();\n $module\n .removeData(moduleNamespace)\n ;\n },\n\n refresh: function() {\n module.verbose('Refreshing selector cache');\n $field = $module.find(selector.field);\n $group = $module.find(selector.group);\n $message = $module.find(selector.message);\n $prompt = $module.find(selector.prompt);\n\n $submit = $module.find(selector.submit);\n $clear = $module.find(selector.clear);\n $reset = $module.find(selector.reset);\n },\n\n submit: function() {\n module.verbose('Submitting form', $module);\n $module\n .submit()\n ;\n },\n\n attachEvents: function(selector, action) {\n action = action || 'submit';\n $(selector)\n .on('click' + eventNamespace, function(event) {\n module[action]();\n event.preventDefault();\n })\n ;\n },\n\n bindEvents: function() {\n module.verbose('Attaching form events');\n $module\n .on('submit' + eventNamespace, module.validate.form)\n .on('blur' + eventNamespace, selector.field, module.event.field.blur)\n .on('click' + eventNamespace, selector.submit, module.submit)\n .on('click' + eventNamespace, selector.reset, module.reset)\n .on('click' + eventNamespace, selector.clear, module.clear)\n ;\n if(settings.keyboardShortcuts) {\n $module\n .on('keydown' + eventNamespace, selector.field, module.event.field.keydown)\n ;\n }\n $field\n .each(function() {\n var\n $input = $(this),\n type = $input.prop('type'),\n inputEvent = module.get.changeEvent(type, $input)\n ;\n $(this)\n .on(inputEvent + eventNamespace, module.event.field.change)\n ;\n })\n ;\n },\n\n clear: function() {\n $field\n .each(function () {\n var\n $field = $(this),\n $element = $field.parent(),\n $fieldGroup = $field.closest($group),\n $prompt = $fieldGroup.find(selector.prompt),\n defaultValue = $field.data(metadata.defaultValue) || '',\n isCheckbox = $element.is(selector.uiCheckbox),\n isDropdown = $element.is(selector.uiDropdown),\n isErrored = $fieldGroup.hasClass(className.error)\n ;\n if(isErrored) {\n module.verbose('Resetting error on field', $fieldGroup);\n $fieldGroup.removeClass(className.error);\n $prompt.remove();\n }\n if(isDropdown) {\n module.verbose('Resetting dropdown value', $element, defaultValue);\n $element.dropdown('clear');\n }\n else if(isCheckbox) {\n $field.prop('checked', false);\n }\n else {\n module.verbose('Resetting field value', $field, defaultValue);\n $field.val('');\n }\n })\n ;\n },\n\n reset: function() {\n $field\n .each(function () {\n var\n $field = $(this),\n $element = $field.parent(),\n $fieldGroup = $field.closest($group),\n $prompt = $fieldGroup.find(selector.prompt),\n defaultValue = $field.data(metadata.defaultValue),\n isCheckbox = $element.is(selector.uiCheckbox),\n isDropdown = $element.is(selector.uiDropdown),\n isErrored = $fieldGroup.hasClass(className.error)\n ;\n if(defaultValue === undefined) {\n return;\n }\n if(isErrored) {\n module.verbose('Resetting error on field', $fieldGroup);\n $fieldGroup.removeClass(className.error);\n $prompt.remove();\n }\n if(isDropdown) {\n module.verbose('Resetting dropdown value', $element, defaultValue);\n $element.dropdown('restore defaults');\n }\n else if(isCheckbox) {\n module.verbose('Resetting checkbox value', $element, defaultValue);\n $field.prop('checked', defaultValue);\n }\n else {\n module.verbose('Resetting field value', $field, defaultValue);\n $field.val(defaultValue);\n }\n })\n ;\n },\n\n is: {\n bracketedRule: function(rule) {\n return (rule.type && rule.type.match(settings.regExp.bracket));\n },\n empty: function($field) {\n if(!$field || $field.length === 0) {\n return true;\n }\n else if($field.is('input[type=\"checkbox\"]')) {\n return !$field.is(':checked');\n }\n else {\n return module.is.blank($field);\n }\n },\n blank: function($field) {\n return $.trim($field.val()) === '';\n },\n valid: function() {\n var\n allValid = true\n ;\n module.verbose('Checking if form is valid');\n $.each(validation, function(fieldName, field) {\n if( !( module.validate.field(field, fieldName) ) ) {\n allValid = false;\n }\n });\n return allValid;\n }\n },\n\n removeEvents: function() {\n $module\n .off(eventNamespace)\n ;\n $field\n .off(eventNamespace)\n ;\n $submit\n .off(eventNamespace)\n ;\n $field\n .off(eventNamespace)\n ;\n },\n\n event: {\n field: {\n keydown: function(event) {\n var\n $field = $(this),\n key = event.which,\n isInput = $field.is(selector.input),\n isCheckbox = $field.is(selector.checkbox),\n isInDropdown = ($field.closest(selector.uiDropdown).length > 0),\n keyCode = {\n enter : 13,\n escape : 27\n }\n ;\n if( key == keyCode.escape) {\n module.verbose('Escape key pressed blurring field');\n $field\n .blur()\n ;\n }\n if(!event.ctrlKey && key == keyCode.enter && isInput && !isInDropdown && !isCheckbox) {\n if(!keyHeldDown) {\n $field\n .one('keyup' + eventNamespace, module.event.field.keyup)\n ;\n module.submit();\n module.debug('Enter pressed on input submitting form');\n }\n keyHeldDown = true;\n }\n },\n keyup: function() {\n keyHeldDown = false;\n },\n blur: function(event) {\n var\n $field = $(this),\n $fieldGroup = $field.closest($group),\n validationRules = module.get.validation($field)\n ;\n if( $fieldGroup.hasClass(className.error) ) {\n module.debug('Revalidating field', $field, validationRules);\n if(validationRules) {\n module.validate.field( validationRules );\n }\n }\n else if(settings.on == 'blur' || settings.on == 'change') {\n if(validationRules) {\n module.validate.field( validationRules );\n }\n }\n },\n change: function(event) {\n var\n $field = $(this),\n $fieldGroup = $field.closest($group),\n validationRules = module.get.validation($field)\n ;\n if(settings.on == 'change' || ( $fieldGroup.hasClass(className.error) && settings.revalidate) ) {\n clearTimeout(module.timer);\n module.timer = setTimeout(function() {\n module.debug('Revalidating field', $field, module.get.validation($field));\n module.validate.field( validationRules );\n }, settings.delay);\n }\n }\n }\n\n },\n\n get: {\n ancillaryValue: function(rule) {\n if(!rule.type || (!rule.value && !module.is.bracketedRule(rule))) {\n return false;\n }\n return (rule.value !== undefined)\n ? rule.value\n : rule.type.match(settings.regExp.bracket)[1] + ''\n ;\n },\n ruleName: function(rule) {\n if( module.is.bracketedRule(rule) ) {\n return rule.type.replace(rule.type.match(settings.regExp.bracket)[0], '');\n }\n return rule.type;\n },\n changeEvent: function(type, $input) {\n if(type == 'checkbox' || type == 'radio' || type == 'hidden' || $input.is('select')) {\n return 'change';\n }\n else {\n return module.get.inputEvent();\n }\n },\n inputEvent: function() {\n return (document.createElement('input').oninput !== undefined)\n ? 'input'\n : (document.createElement('input').onpropertychange !== undefined)\n ? 'propertychange'\n : 'keyup'\n ;\n },\n prompt: function(rule, field) {\n var\n ruleName = module.get.ruleName(rule),\n ancillary = module.get.ancillaryValue(rule),\n prompt = rule.prompt || settings.prompt[ruleName] || settings.text.unspecifiedRule,\n requiresValue = (prompt.search('{value}') !== -1),\n requiresName = (prompt.search('{name}') !== -1),\n $label,\n $field,\n name\n ;\n if(requiresName || requiresValue) {\n $field = module.get.field(field.identifier);\n }\n if(requiresValue) {\n prompt = prompt.replace('{value}', $field.val());\n }\n if(requiresName) {\n $label = $field.closest(selector.group).find('label').eq(0);\n name = ($label.length == 1)\n ? $label.text()\n : $field.prop('placeholder') || settings.text.unspecifiedField\n ;\n prompt = prompt.replace('{name}', name);\n }\n prompt = prompt.replace('{identifier}', field.identifier);\n prompt = prompt.replace('{ruleValue}', ancillary);\n if(!rule.prompt) {\n module.verbose('Using default validation prompt for type', prompt, ruleName);\n }\n return prompt;\n },\n settings: function() {\n if($.isPlainObject(parameters)) {\n var\n keys = Object.keys(parameters),\n isLegacySettings = (keys.length > 0)\n ? (parameters[keys[0]].identifier !== undefined && parameters[keys[0]].rules !== undefined)\n : false,\n ruleKeys\n ;\n if(isLegacySettings) {\n // 1.x (ducktyped)\n settings = $.extend(true, {}, $.fn.form.settings, legacyParameters);\n validation = $.extend({}, $.fn.form.settings.defaults, parameters);\n module.error(settings.error.oldSyntax, element);\n module.verbose('Extending settings from legacy parameters', validation, settings);\n }\n else {\n // 2.x\n if(parameters.fields) {\n ruleKeys = Object.keys(parameters.fields);\n if( typeof parameters.fields[ruleKeys[0]] == 'string' || $.isArray(parameters.fields[ruleKeys[0]]) ) {\n $.each(parameters.fields, function(name, rules) {\n if(typeof rules == 'string') {\n rules = [rules];\n }\n parameters.fields[name] = {\n rules: []\n };\n $.each(rules, function(index, rule) {\n parameters.fields[name].rules.push({ type: rule });\n });\n });\n }\n }\n\n settings = $.extend(true, {}, $.fn.form.settings, parameters);\n validation = $.extend({}, $.fn.form.settings.defaults, settings.fields);\n module.verbose('Extending settings', validation, settings);\n }\n }\n else {\n settings = $.fn.form.settings;\n validation = $.fn.form.settings.defaults;\n module.verbose('Using default form validation', validation, settings);\n }\n\n // shorthand\n namespace = settings.namespace;\n metadata = settings.metadata;\n selector = settings.selector;\n className = settings.className;\n error = settings.error;\n moduleNamespace = 'module-' + namespace;\n eventNamespace = '.' + namespace;\n\n // grab instance\n instance = $module.data(moduleNamespace);\n\n // refresh selector cache\n module.refresh();\n },\n field: function(identifier) {\n module.verbose('Finding field with identifier', identifier);\n if( $field.filter('#' + identifier).length > 0 ) {\n return $field.filter('#' + identifier);\n }\n else if( $field.filter('[name=\"' + identifier +'\"]').length > 0 ) {\n return $field.filter('[name=\"' + identifier +'\"]');\n }\n else if( $field.filter('[name=\"' + identifier +'[]\"]').length > 0 ) {\n return $field.filter('[name=\"' + identifier +'[]\"]');\n }\n else if( $field.filter('[data-' + metadata.validate + '=\"'+ identifier +'\"]').length > 0 ) {\n return $field.filter('[data-' + metadata.validate + '=\"'+ identifier +'\"]');\n }\n return $('<input/>');\n },\n fields: function(fields) {\n var\n $fields = $()\n ;\n $.each(fields, function(index, name) {\n $fields = $fields.add( module.get.field(name) );\n });\n return $fields;\n },\n validation: function($field) {\n var\n fieldValidation,\n identifier\n ;\n if(!validation) {\n return false;\n }\n $.each(validation, function(fieldName, field) {\n identifier = field.identifier || fieldName;\n if( module.get.field(identifier)[0] == $field[0] ) {\n field.identifier = identifier;\n fieldValidation = field;\n }\n });\n return fieldValidation || false;\n },\n value: function (field) {\n var\n fields = [],\n results\n ;\n fields.push(field);\n results = module.get.values.call(element, fields);\n return results[field];\n },\n values: function (fields) {\n var\n $fields = $.isArray(fields)\n ? module.get.fields(fields)\n : $field,\n values = {}\n ;\n $fields.each(function(index, field) {\n var\n $field = $(field),\n type = $field.prop('type'),\n name = $field.prop('name'),\n value = $field.val(),\n isCheckbox = $field.is(selector.checkbox),\n isRadio = $field.is(selector.radio),\n isMultiple = (name.indexOf('[]') !== -1),\n isChecked = (isCheckbox)\n ? $field.is(':checked')\n : false\n ;\n if(name) {\n if(isMultiple) {\n name = name.replace('[]', '');\n if(!values[name]) {\n values[name] = [];\n }\n if(isCheckbox) {\n if(isChecked) {\n values[name].push(value || true);\n }\n else {\n values[name].push(false);\n }\n }\n else {\n values[name].push(value);\n }\n }\n else {\n if(isRadio) {\n if(isChecked) {\n values[name] = value;\n }\n }\n else if(isCheckbox) {\n if(isChecked) {\n values[name] = value || true;\n }\n else {\n values[name] = false;\n }\n }\n else {\n values[name] = value;\n }\n }\n }\n });\n return values;\n }\n },\n\n has: {\n\n field: function(identifier) {\n module.verbose('Checking for existence of a field with identifier', identifier);\n if(typeof identifier !== 'string') {\n module.error(error.identifier, identifier);\n }\n if( $field.filter('#' + identifier).length > 0 ) {\n return true;\n }\n else if( $field.filter('[name=\"' + identifier +'\"]').length > 0 ) {\n return true;\n }\n else if( $field.filter('[data-' + metadata.validate + '=\"'+ identifier +'\"]').length > 0 ) {\n return true;\n }\n return false;\n }\n\n },\n\n add: {\n prompt: function(identifier, errors) {\n var\n $field = module.get.field(identifier),\n $fieldGroup = $field.closest($group),\n $prompt = $fieldGroup.children(selector.prompt),\n promptExists = ($prompt.length !== 0)\n ;\n errors = (typeof errors == 'string')\n ? [errors]\n : errors\n ;\n module.verbose('Adding field error state', identifier);\n $fieldGroup\n .addClass(className.error)\n ;\n if(settings.inline) {\n if(!promptExists) {\n $prompt = settings.templates.prompt(errors);\n $prompt\n .appendTo($fieldGroup)\n ;\n }\n $prompt\n .html(errors[0])\n ;\n if(!promptExists) {\n if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) {\n module.verbose('Displaying error with css transition', settings.transition);\n $prompt.transition(settings.transition + ' in', settings.duration);\n }\n else {\n module.verbose('Displaying error with fallback javascript animation');\n $prompt\n .fadeIn(settings.duration)\n ;\n }\n }\n else {\n module.verbose('Inline errors are disabled, no inline error added', identifier);\n }\n }\n },\n errors: function(errors) {\n module.debug('Adding form error messages', errors);\n module.set.error();\n $message\n .html( settings.templates.error(errors) )\n ;\n }\n },\n\n remove: {\n prompt: function(identifier) {\n var\n $field = module.get.field(identifier),\n $fieldGroup = $field.closest($group),\n $prompt = $fieldGroup.children(selector.prompt)\n ;\n $fieldGroup\n .removeClass(className.error)\n ;\n if(settings.inline && $prompt.is(':visible')) {\n module.verbose('Removing prompt for field', identifier);\n if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) {\n $prompt.transition(settings.transition + ' out', settings.duration, function() {\n $prompt.remove();\n });\n }\n else {\n $prompt\n .fadeOut(settings.duration, function(){\n $prompt.remove();\n })\n ;\n }\n }\n }\n },\n\n set: {\n success: function() {\n $module\n .removeClass(className.error)\n .addClass(className.success)\n ;\n },\n defaults: function () {\n $field\n .each(function () {\n var\n $field = $(this),\n isCheckbox = ($field.filter(selector.checkbox).length > 0),\n value = (isCheckbox)\n ? $field.is(':checked')\n : $field.val()\n ;\n $field.data(metadata.defaultValue, value);\n })\n ;\n },\n error: function() {\n $module\n .removeClass(className.success)\n .addClass(className.error)\n ;\n },\n value: function (field, value) {\n var\n fields = {}\n ;\n fields[field] = value;\n return module.set.values.call(element, fields);\n },\n values: function (fields) {\n if($.isEmptyObject(fields)) {\n return;\n }\n $.each(fields, function(key, value) {\n var\n $field = module.get.field(key),\n $element = $field.parent(),\n isMultiple = $.isArray(value),\n isCheckbox = $element.is(selector.uiCheckbox),\n isDropdown = $element.is(selector.uiDropdown),\n isRadio = ($field.is(selector.radio) && isCheckbox),\n fieldExists = ($field.length > 0),\n $multipleField\n ;\n if(fieldExists) {\n if(isMultiple && isCheckbox) {\n module.verbose('Selecting multiple', value, $field);\n $element.checkbox('uncheck');\n $.each(value, function(index, value) {\n $multipleField = $field.filter('[value=\"' + value + '\"]');\n $element = $multipleField.parent();\n if($multipleField.length > 0) {\n $element.checkbox('check');\n }\n });\n }\n else if(isRadio) {\n module.verbose('Selecting radio value', value, $field);\n $field.filter('[value=\"' + value + '\"]')\n .parent(selector.uiCheckbox)\n .checkbox('check')\n ;\n }\n else if(isCheckbox) {\n module.verbose('Setting checkbox value', value, $element);\n if(value === true) {\n $element.checkbox('check');\n }\n else {\n $element.checkbox('uncheck');\n }\n }\n else if(isDropdown) {\n module.verbose('Setting dropdown value', value, $element);\n $element.dropdown('set selected', value);\n }\n else {\n module.verbose('Setting field value', value, $field);\n $field.val(value);\n }\n }\n });\n }\n },\n\n validate: {\n\n form: function(event, ignoreCallbacks) {\n var\n values = module.get.values(),\n apiRequest\n ;\n\n // input keydown event will fire submit repeatedly by browser default\n if(keyHeldDown) {\n return false;\n }\n\n // reset errors\n formErrors = [];\n if( module.is.valid() ) {\n module.debug('Form has no validation errors, submitting');\n module.set.success();\n if(ignoreCallbacks !== true) {\n return settings.onSuccess.call(element, event, values);\n }\n }\n else {\n module.debug('Form has errors');\n module.set.error();\n if(!settings.inline) {\n module.add.errors(formErrors);\n }\n // prevent ajax submit\n if($module.data('moduleApi') !== undefined) {\n event.stopImmediatePropagation();\n }\n if(ignoreCallbacks !== true) {\n return settings.onFailure.call(element, formErrors, values);\n }\n }\n },\n\n // takes a validation object and returns whether field passes validation\n field: function(field, fieldName) {\n var\n identifier = field.identifier || fieldName,\n $field = module.get.field(identifier),\n $dependsField = (field.depends)\n ? module.get.field(field.depends)\n : false,\n fieldValid = true,\n fieldErrors = []\n ;\n if(!field.identifier) {\n module.debug('Using field name as identifier', identifier);\n field.identifier = identifier;\n }\n if($field.prop('disabled')) {\n module.debug('Field is disabled. Skipping', identifier);\n fieldValid = true;\n }\n else if(field.optional && module.is.blank($field)){\n module.debug('Field is optional and blank. Skipping', identifier);\n fieldValid = true;\n }\n else if(field.depends && module.is.empty($dependsField)) {\n module.debug('Field depends on another value that is not present or empty. Skipping', $dependsField);\n fieldValid = true;\n }\n else if(field.rules !== undefined) {\n $.each(field.rules, function(index, rule) {\n if( module.has.field(identifier) && !( module.validate.rule(field, rule) ) ) {\n module.debug('Field is invalid', identifier, rule.type);\n fieldErrors.push(module.get.prompt(rule, field));\n fieldValid = false;\n }\n });\n }\n if(fieldValid) {\n module.remove.prompt(identifier, fieldErrors);\n settings.onValid.call($field);\n }\n else {\n formErrors = formErrors.concat(fieldErrors);\n module.add.prompt(identifier, fieldErrors);\n settings.onInvalid.call($field, fieldErrors);\n return false;\n }\n return true;\n },\n\n // takes validation rule and returns whether field passes rule\n rule: function(field, rule) {\n var\n $field = module.get.field(field.identifier),\n type = rule.type,\n value = $field.val(),\n isValid = true,\n ancillary = module.get.ancillaryValue(rule),\n ruleName = module.get.ruleName(rule),\n ruleFunction = settings.rules[ruleName]\n ;\n if( !$.isFunction(ruleFunction) ) {\n module.error(error.noRule, ruleName);\n return;\n }\n // cast to string avoiding encoding special values\n value = (value === undefined || value === '' || value === null)\n ? ''\n : $.trim(value + '')\n ;\n return ruleFunction.call($field, value, ancillary);\n }\n },\n\n setting: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, settings, name);\n }\n else if(value !== undefined) {\n settings[name] = value;\n }\n else {\n return settings[name];\n }\n },\n internal: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, module, name);\n }\n else if(value !== undefined) {\n module[name] = value;\n }\n else {\n return module[name];\n }\n },\n debug: function() {\n if(!settings.silent && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.debug.apply(console, arguments);\n }\n }\n },\n verbose: function() {\n if(!settings.silent && settings.verbose && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.verbose.apply(console, arguments);\n }\n }\n },\n error: function() {\n if(!settings.silent) {\n module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n module.error.apply(console, arguments);\n }\n },\n performance: {\n log: function(message) {\n var\n currentTime,\n executionTime,\n previousTime\n ;\n if(settings.performance) {\n currentTime = new Date().getTime();\n previousTime = time || currentTime;\n executionTime = currentTime - previousTime;\n time = currentTime;\n performance.push({\n 'Name' : message[0],\n 'Arguments' : [].slice.call(message, 1) || '',\n 'Element' : element,\n 'Execution Time' : executionTime\n });\n }\n clearTimeout(module.performance.timer);\n module.performance.timer = setTimeout(module.performance.display, 500);\n },\n display: function() {\n var\n title = settings.name + ':',\n totalTime = 0\n ;\n time = false;\n clearTimeout(module.performance.timer);\n $.each(performance, function(index, data) {\n totalTime += data['Execution Time'];\n });\n title += ' ' + totalTime + 'ms';\n if(moduleSelector) {\n title += ' \\'' + moduleSelector + '\\'';\n }\n if($allModules.length > 1) {\n title += ' ' + '(' + $allModules.length + ')';\n }\n if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n console.groupCollapsed(title);\n if(console.table) {\n console.table(performance);\n }\n else {\n $.each(performance, function(index, data) {\n console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n });\n }\n console.groupEnd();\n }\n performance = [];\n }\n },\n invoke: function(query, passedArguments, context) {\n var\n object = instance,\n maxDepth,\n found,\n response\n ;\n passedArguments = passedArguments || queryArguments;\n context = element || context;\n if(typeof query == 'string' && object !== undefined) {\n query = query.split(/[\\. ]/);\n maxDepth = query.length - 1;\n $.each(query, function(depth, value) {\n var camelCaseValue = (depth != maxDepth)\n ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n : query\n ;\n if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n object = object[camelCaseValue];\n }\n else if( object[camelCaseValue] !== undefined ) {\n found = object[camelCaseValue];\n return false;\n }\n else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n object = object[value];\n }\n else if( object[value] !== undefined ) {\n found = object[value];\n return false;\n }\n else {\n return false;\n }\n });\n }\n if( $.isFunction( found ) ) {\n response = found.apply(context, passedArguments);\n }\n else if(found !== undefined) {\n response = found;\n }\n if($.isArray(returnedValue)) {\n returnedValue.push(response);\n }\n else if(returnedValue !== undefined) {\n returnedValue = [returnedValue, response];\n }\n else if(response !== undefined) {\n returnedValue = response;\n }\n return found;\n }\n };\n module.initialize();\n })\n ;\n\n return (returnedValue !== undefined)\n ? returnedValue\n : this\n ;\n};\n\n$.fn.form.settings = {\n\n name : 'Form',\n namespace : 'form',\n\n debug : false,\n verbose : false,\n performance : true,\n\n fields : false,\n\n keyboardShortcuts : true,\n on : 'submit',\n inline : false,\n\n delay : 200,\n revalidate : true,\n\n transition : 'scale',\n duration : 200,\n\n onValid : function() {},\n onInvalid : function() {},\n onSuccess : function() { return true; },\n onFailure : function() { return false; },\n\n metadata : {\n defaultValue : 'default',\n validate : 'validate'\n },\n\n regExp: {\n bracket : /\\[(.*)\\]/i,\n decimal : /^\\d*(\\.)\\d+/,\n email : /^[a-z0-9!#$%&'*+\\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,\n escape : /[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,\n flags : /^\\/(.*)\\/(.*)?/,\n integer : /^\\-?\\d+$/,\n number : /^\\-?\\d*(\\.\\d+)?$/,\n url : /(https?:\\/\\/(?:www\\.|(?!www))[^\\s\\.]+\\.[^\\s]{2,}|www\\.[^\\s]+\\.[^\\s]{2,})/i\n },\n\n text: {\n unspecifiedRule : 'Please enter a valid value',\n unspecifiedField : 'This field'\n },\n\n prompt: {\n empty : '{name} must have a value',\n checked : '{name} must be checked',\n email : '{name} must be a valid e-mail',\n url : '{name} must be a valid url',\n regExp : '{name} is not formatted correctly',\n integer : '{name} must be an integer',\n decimal : '{name} must be a decimal number',\n number : '{name} must be set to a number',\n is : '{name} must be \"{ruleValue}\"',\n isExactly : '{name} must be exactly \"{ruleValue}\"',\n not : '{name} cannot be set to \"{ruleValue}\"',\n notExactly : '{name} cannot be set to exactly \"{ruleValue}\"',\n contain : '{name} cannot contain \"{ruleValue}\"',\n containExactly : '{name} cannot contain exactly \"{ruleValue}\"',\n doesntContain : '{name} must contain \"{ruleValue}\"',\n doesntContainExactly : '{name} must contain exactly \"{ruleValue}\"',\n minLength : '{name} must be at least {ruleValue} characters',\n length : '{name} must be at least {ruleValue} characters',\n exactLength : '{name} must be exactly {ruleValue} characters',\n maxLength : '{name} cannot be longer than {ruleValue} characters',\n match : '{name} must match {ruleValue} field',\n different : '{name} must have a different value than {ruleValue} field',\n creditCard : '{name} must be a valid credit card number',\n minCount : '{name} must have at least {ruleValue} choices',\n exactCount : '{name} must have exactly {ruleValue} choices',\n maxCount : '{name} must have {ruleValue} or less choices'\n },\n\n selector : {\n checkbox : 'input[type=\"checkbox\"], input[type=\"radio\"]',\n clear : '.clear',\n field : 'input, textarea, select',\n group : '.field',\n input : 'input',\n message : '.error.message',\n prompt : '.prompt.label',\n radio : 'input[type=\"radio\"]',\n reset : '.reset:not([type=\"reset\"])',\n submit : '.submit:not([type=\"submit\"])',\n uiCheckbox : '.ui.checkbox',\n uiDropdown : '.ui.dropdown'\n },\n\n className : {\n error : 'error',\n label : 'ui prompt label',\n pressed : 'down',\n success : 'success'\n },\n\n error: {\n identifier : 'You must specify a string identifier for each field',\n method : 'The method you called is not defined.',\n noRule : 'There is no rule matching the one you specified',\n oldSyntax : 'Starting in 2.0 forms now only take a single settings object. Validation settings converted to new syntax automatically.'\n },\n\n templates: {\n\n // template that produces error message\n error: function(errors) {\n var\n html = '<ul class=\"list\">'\n ;\n $.each(errors, function(index, value) {\n html += '<li>' + value + '</li>';\n });\n html += '</ul>';\n return $(html);\n },\n\n // template that produces label\n prompt: function(errors) {\n return $('<div/>')\n .addClass('ui basic red pointing prompt label')\n .html(errors[0])\n ;\n }\n },\n\n rules: {\n\n // is not empty or blank string\n empty: function(value) {\n return !(value === undefined || '' === value || $.isArray(value) && value.length === 0);\n },\n\n // checkbox checked\n checked: function() {\n return ($(this).filter(':checked').length > 0);\n },\n\n // is most likely an email\n email: function(value){\n return $.fn.form.settings.regExp.email.test(value);\n },\n\n // value is most likely url\n url: function(value) {\n return $.fn.form.settings.regExp.url.test(value);\n },\n\n // matches specified regExp\n regExp: function(value, regExp) {\n if(regExp instanceof RegExp) {\n return value.match(regExp);\n }\n var\n regExpParts = regExp.match($.fn.form.settings.regExp.flags),\n flags\n ;\n // regular expression specified as /baz/gi (flags)\n if(regExpParts) {\n regExp = (regExpParts.length >= 2)\n ? regExpParts[1]\n : regExp\n ;\n flags = (regExpParts.length >= 3)\n ? regExpParts[2]\n : ''\n ;\n }\n return value.match( new RegExp(regExp, flags) );\n },\n\n // is valid integer or matches range\n integer: function(value, range) {\n var\n intRegExp = $.fn.form.settings.regExp.integer,\n min,\n max,\n parts\n ;\n if( !range || ['', '..'].indexOf(range) !== -1) {\n // do nothing\n }\n else if(range.indexOf('..') == -1) {\n if(intRegExp.test(range)) {\n min = max = range - 0;\n }\n }\n else {\n parts = range.split('..', 2);\n if(intRegExp.test(parts[0])) {\n min = parts[0] - 0;\n }\n if(intRegExp.test(parts[1])) {\n max = parts[1] - 0;\n }\n }\n return (\n intRegExp.test(value) &&\n (min === undefined || value >= min) &&\n (max === undefined || value <= max)\n );\n },\n\n // is valid number (with decimal)\n decimal: function(value) {\n return $.fn.form.settings.regExp.decimal.test(value);\n },\n\n // is valid number\n number: function(value) {\n return $.fn.form.settings.regExp.number.test(value);\n },\n\n // is value (case insensitive)\n is: function(value, text) {\n text = (typeof text == 'string')\n ? text.toLowerCase()\n : text\n ;\n value = (typeof value == 'string')\n ? value.toLowerCase()\n : value\n ;\n return (value == text);\n },\n\n // is value\n isExactly: function(value, text) {\n return (value == text);\n },\n\n // value is not another value (case insensitive)\n not: function(value, notValue) {\n value = (typeof value == 'string')\n ? value.toLowerCase()\n : value\n ;\n notValue = (typeof notValue == 'string')\n ? notValue.toLowerCase()\n : notValue\n ;\n return (value != notValue);\n },\n\n // value is not another value (case sensitive)\n notExactly: function(value, notValue) {\n return (value != notValue);\n },\n\n // value contains text (insensitive)\n contains: function(value, text) {\n // escape regex characters\n text = text.replace($.fn.form.settings.regExp.escape, \"\\\\$&\");\n return (value.search( new RegExp(text, 'i') ) !== -1);\n },\n\n // value contains text (case sensitive)\n containsExactly: function(value, text) {\n // escape regex characters\n text = text.replace($.fn.form.settings.regExp.escape, \"\\\\$&\");\n return (value.search( new RegExp(text) ) !== -1);\n },\n\n // value contains text (insensitive)\n doesntContain: function(value, text) {\n // escape regex characters\n text = text.replace($.fn.form.settings.regExp.escape, \"\\\\$&\");\n return (value.search( new RegExp(text, 'i') ) === -1);\n },\n\n // value contains text (case sensitive)\n doesntContainExactly: function(value, text) {\n // escape regex characters\n text = text.replace($.fn.form.settings.regExp.escape, \"\\\\$&\");\n return (value.search( new RegExp(text) ) === -1);\n },\n\n // is at least string length\n minLength: function(value, requiredLength) {\n return (value !== undefined)\n ? (value.length >= requiredLength)\n : false\n ;\n },\n\n // see rls notes for 2.0.6 (this is a duplicate of minLength)\n length: function(value, requiredLength) {\n return (value !== undefined)\n ? (value.length >= requiredLength)\n : false\n ;\n },\n\n // is exactly length\n exactLength: function(value, requiredLength) {\n return (value !== undefined)\n ? (value.length == requiredLength)\n : false\n ;\n },\n\n // is less than length\n maxLength: function(value, maxLength) {\n return (value !== undefined)\n ? (value.length <= maxLength)\n : false\n ;\n },\n\n // matches another field\n match: function(value, identifier) {\n var\n $form = $(this),\n matchingValue\n ;\n if( $('[data-validate=\"'+ identifier +'\"]').length > 0 ) {\n matchingValue = $('[data-validate=\"'+ identifier +'\"]').val();\n }\n else if($('#' + identifier).length > 0) {\n matchingValue = $('#' + identifier).val();\n }\n else if($('[name=\"' + identifier +'\"]').length > 0) {\n matchingValue = $('[name=\"' + identifier + '\"]').val();\n }\n else if( $('[name=\"' + identifier +'[]\"]').length > 0 ) {\n matchingValue = $('[name=\"' + identifier +'[]\"]');\n }\n return (matchingValue !== undefined)\n ? ( value.toString() == matchingValue.toString() )\n : false\n ;\n },\n\n // different than another field\n different: function(value, identifier) {\n // use either id or name of field\n var\n $form = $(this),\n matchingValue\n ;\n if( $('[data-validate=\"'+ identifier +'\"]').length > 0 ) {\n matchingValue = $('[data-validate=\"'+ identifier +'\"]').val();\n }\n else if($('#' + identifier).length > 0) {\n matchingValue = $('#' + identifier).val();\n }\n else if($('[name=\"' + identifier +'\"]').length > 0) {\n matchingValue = $('[name=\"' + identifier + '\"]').val();\n }\n else if( $('[name=\"' + identifier +'[]\"]').length > 0 ) {\n matchingValue = $('[name=\"' + identifier +'[]\"]');\n }\n return (matchingValue !== undefined)\n ? ( value.toString() !== matchingValue.toString() )\n : false\n ;\n },\n\n creditCard: function(cardNumber, cardTypes) {\n var\n cards = {\n visa: {\n pattern : /^4/,\n length : [16]\n },\n amex: {\n pattern : /^3[47]/,\n length : [15]\n },\n mastercard: {\n pattern : /^5[1-5]/,\n length : [16]\n },\n discover: {\n pattern : /^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)/,\n length : [16]\n },\n unionPay: {\n pattern : /^(62|88)/,\n length : [16, 17, 18, 19]\n },\n jcb: {\n pattern : /^35(2[89]|[3-8][0-9])/,\n length : [16]\n },\n maestro: {\n pattern : /^(5018|5020|5038|6304|6759|676[1-3])/,\n length : [12, 13, 14, 15, 16, 17, 18, 19]\n },\n dinersClub: {\n pattern : /^(30[0-5]|^36)/,\n length : [14]\n },\n laser: {\n pattern : /^(6304|670[69]|6771)/,\n length : [16, 17, 18, 19]\n },\n visaElectron: {\n pattern : /^(4026|417500|4508|4844|491(3|7))/,\n length : [16]\n }\n },\n valid = {},\n validCard = false,\n requiredTypes = (typeof cardTypes == 'string')\n ? cardTypes.split(',')\n : false,\n unionPay,\n validation\n ;\n\n if(typeof cardNumber !== 'string' || cardNumber.length === 0) {\n return;\n }\n\n // verify card types\n if(requiredTypes) {\n $.each(requiredTypes, function(index, type){\n // verify each card type\n validation = cards[type];\n if(validation) {\n valid = {\n length : ($.inArray(cardNumber.length, validation.length) !== -1),\n pattern : (cardNumber.search(validation.pattern) !== -1)\n };\n if(valid.length && valid.pattern) {\n validCard = true;\n }\n }\n });\n\n if(!validCard) {\n return false;\n }\n }\n\n // skip luhn for UnionPay\n unionPay = {\n number : ($.inArray(cardNumber.length, cards.unionPay.length) !== -1),\n pattern : (cardNumber.search(cards.unionPay.pattern) !== -1)\n };\n if(unionPay.number && unionPay.pattern) {\n return true;\n }\n\n // verify luhn, adapted from <https://gist.github.com/2134376>\n var\n length = cardNumber.length,\n multiple = 0,\n producedValue = [\n [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],\n [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]\n ],\n sum = 0\n ;\n while (length--) {\n sum += producedValue[multiple][parseInt(cardNumber.charAt(length), 10)];\n multiple ^= 1;\n }\n return (sum % 10 === 0 && sum > 0);\n },\n\n minCount: function(value, minCount) {\n if(minCount == 0) {\n return true;\n }\n if(minCount == 1) {\n return (value !== '');\n }\n return (value.split(',').length >= minCount);\n },\n\n exactCount: function(value, exactCount) {\n if(exactCount == 0) {\n return (value === '');\n }\n if(exactCount == 1) {\n return (value !== '' && value.search(',') === -1);\n }\n return (value.split(',').length == exactCount);\n },\n\n maxCount: function(value, maxCount) {\n if(maxCount == 0) {\n return false;\n }\n if(maxCount == 1) {\n return (value.search(',') === -1);\n }\n return (value.split(',').length <= maxCount);\n }\n }\n\n};\n\n})( jQuery, window, document );\n","/*!\n * # Semantic UI 2.2.6 - Accordion\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n ? window\n : (typeof self != 'undefined' && self.Math == Math)\n ? self\n : Function('return this')()\n;\n\n$.fn.accordion = function(parameters) {\n var\n $allModules = $(this),\n\n time = new Date().getTime(),\n performance = [],\n\n query = arguments[0],\n methodInvoked = (typeof query == 'string'),\n queryArguments = [].slice.call(arguments, 1),\n\n requestAnimationFrame = window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || function(callback) { setTimeout(callback, 0); },\n\n returnedValue\n ;\n $allModules\n .each(function() {\n var\n settings = ( $.isPlainObject(parameters) )\n ? $.extend(true, {}, $.fn.accordion.settings, parameters)\n : $.extend({}, $.fn.accordion.settings),\n\n className = settings.className,\n namespace = settings.namespace,\n selector = settings.selector,\n error = settings.error,\n\n eventNamespace = '.' + namespace,\n moduleNamespace = 'module-' + namespace,\n moduleSelector = $allModules.selector || '',\n\n $module = $(this),\n $title = $module.find(selector.title),\n $content = $module.find(selector.content),\n\n element = this,\n instance = $module.data(moduleNamespace),\n observer,\n module\n ;\n\n module = {\n\n initialize: function() {\n module.debug('Initializing', $module);\n module.bind.events();\n if(settings.observeChanges) {\n module.observeChanges();\n }\n module.instantiate();\n },\n\n instantiate: function() {\n instance = module;\n $module\n .data(moduleNamespace, module)\n ;\n },\n\n destroy: function() {\n module.debug('Destroying previous instance', $module);\n $module\n .off(eventNamespace)\n .removeData(moduleNamespace)\n ;\n },\n\n refresh: function() {\n $title = $module.find(selector.title);\n $content = $module.find(selector.content);\n },\n\n observeChanges: function() {\n if('MutationObserver' in window) {\n observer = new MutationObserver(function(mutations) {\n module.debug('DOM tree modified, updating selector cache');\n module.refresh();\n });\n observer.observe(element, {\n childList : true,\n subtree : true\n });\n module.debug('Setting up mutation observer', observer);\n }\n },\n\n bind: {\n events: function() {\n module.debug('Binding delegated events');\n $module\n .on(settings.on + eventNamespace, selector.trigger, module.event.click)\n ;\n }\n },\n\n event: {\n click: function() {\n module.toggle.call(this);\n }\n },\n\n toggle: function(query) {\n var\n $activeTitle = (query !== undefined)\n ? (typeof query === 'number')\n ? $title.eq(query)\n : $(query).closest(selector.title)\n : $(this).closest(selector.title),\n $activeContent = $activeTitle.next($content),\n isAnimating = $activeContent.hasClass(className.animating),\n isActive = $activeContent.hasClass(className.active),\n isOpen = (isActive && !isAnimating),\n isOpening = (!isActive && isAnimating)\n ;\n module.debug('Toggling visibility of content', $activeTitle);\n if(isOpen || isOpening) {\n if(settings.collapsible) {\n module.close.call($activeTitle);\n }\n else {\n module.debug('Cannot close accordion content collapsing is disabled');\n }\n }\n else {\n module.open.call($activeTitle);\n }\n },\n\n open: function(query) {\n var\n $activeTitle = (query !== undefined)\n ? (typeof query === 'number')\n ? $title.eq(query)\n : $(query).closest(selector.title)\n : $(this).closest(selector.title),\n $activeContent = $activeTitle.next($content),\n isAnimating = $activeContent.hasClass(className.animating),\n isActive = $activeContent.hasClass(className.active),\n isOpen = (isActive || isAnimating)\n ;\n if(isOpen) {\n module.debug('Accordion already open, skipping', $activeContent);\n return;\n }\n module.debug('Opening accordion content', $activeTitle);\n settings.onOpening.call($activeContent);\n if(settings.exclusive) {\n module.closeOthers.call($activeTitle);\n }\n $activeTitle\n .addClass(className.active)\n ;\n $activeContent\n .stop(true, true)\n .addClass(className.animating)\n ;\n if(settings.animateChildren) {\n if($.fn.transition !== undefined && $module.transition('is supported')) {\n $activeContent\n .children()\n .transition({\n animation : 'fade in',\n queue : false,\n useFailSafe : true,\n debug : settings.debug,\n verbose : settings.verbose,\n duration : settings.duration\n })\n ;\n }\n else {\n $activeContent\n .children()\n .stop(true, true)\n .animate({\n opacity: 1\n }, settings.duration, module.resetOpacity)\n ;\n }\n }\n $activeContent\n .slideDown(settings.duration, settings.easing, function() {\n $activeContent\n .removeClass(className.animating)\n .addClass(className.active)\n ;\n module.reset.display.call(this);\n settings.onOpen.call(this);\n settings.onChange.call(this);\n })\n ;\n },\n\n close: function(query) {\n var\n $activeTitle = (query !== undefined)\n ? (typeof query === 'number')\n ? $title.eq(query)\n : $(query).closest(selector.title)\n : $(this).closest(selector.title),\n $activeContent = $activeTitle.next($content),\n isAnimating = $activeContent.hasClass(className.animating),\n isActive = $activeContent.hasClass(className.active),\n isOpening = (!isActive && isAnimating),\n isClosing = (isActive && isAnimating)\n ;\n if((isActive || isOpening) && !isClosing) {\n module.debug('Closing accordion content', $activeContent);\n settings.onClosing.call($activeContent);\n $activeTitle\n .removeClass(className.active)\n ;\n $activeContent\n .stop(true, true)\n .addClass(className.animating)\n ;\n if(settings.animateChildren) {\n if($.fn.transition !== undefined && $module.transition('is supported')) {\n $activeContent\n .children()\n .transition({\n animation : 'fade out',\n queue : false,\n useFailSafe : true,\n debug : settings.debug,\n verbose : settings.verbose,\n duration : settings.duration\n })\n ;\n }\n else {\n $activeContent\n .children()\n .stop(true, true)\n .animate({\n opacity: 0\n }, settings.duration, module.resetOpacity)\n ;\n }\n }\n $activeContent\n .slideUp(settings.duration, settings.easing, function() {\n $activeContent\n .removeClass(className.animating)\n .removeClass(className.active)\n ;\n module.reset.display.call(this);\n settings.onClose.call(this);\n settings.onChange.call(this);\n })\n ;\n }\n },\n\n closeOthers: function(index) {\n var\n $activeTitle = (index !== undefined)\n ? $title.eq(index)\n : $(this).closest(selector.title),\n $parentTitles = $activeTitle.parents(selector.content).prev(selector.title),\n $activeAccordion = $activeTitle.closest(selector.accordion),\n activeSelector = selector.title + '.' + className.active + ':visible',\n activeContent = selector.content + '.' + className.active + ':visible',\n $openTitles,\n $nestedTitles,\n $openContents\n ;\n if(settings.closeNested) {\n $openTitles = $activeAccordion.find(activeSelector).not($parentTitles);\n $openContents = $openTitles.next($content);\n }\n else {\n $openTitles = $activeAccordion.find(activeSelector).not($parentTitles);\n $nestedTitles = $activeAccordion.find(activeContent).find(activeSelector).not($parentTitles);\n $openTitles = $openTitles.not($nestedTitles);\n $openContents = $openTitles.next($content);\n }\n if( ($openTitles.length > 0) ) {\n module.debug('Exclusive enabled, closing other content', $openTitles);\n $openTitles\n .removeClass(className.active)\n ;\n $openContents\n .removeClass(className.animating)\n .stop(true, true)\n ;\n if(settings.animateChildren) {\n if($.fn.transition !== undefined && $module.transition('is supported')) {\n $openContents\n .children()\n .transition({\n animation : 'fade out',\n useFailSafe : true,\n debug : settings.debug,\n verbose : settings.verbose,\n duration : settings.duration\n })\n ;\n }\n else {\n $openContents\n .children()\n .stop(true, true)\n .animate({\n opacity: 0\n }, settings.duration, module.resetOpacity)\n ;\n }\n }\n $openContents\n .slideUp(settings.duration , settings.easing, function() {\n $(this).removeClass(className.active);\n module.reset.display.call(this);\n })\n ;\n }\n },\n\n reset: {\n\n display: function() {\n module.verbose('Removing inline display from element', this);\n $(this).css('display', '');\n if( $(this).attr('style') === '') {\n $(this)\n .attr('style', '')\n .removeAttr('style')\n ;\n }\n },\n\n opacity: function() {\n module.verbose('Removing inline opacity from element', this);\n $(this).css('opacity', '');\n if( $(this).attr('style') === '') {\n $(this)\n .attr('style', '')\n .removeAttr('style')\n ;\n }\n },\n\n },\n\n setting: function(name, value) {\n module.debug('Changing setting', name, value);\n if( $.isPlainObject(name) ) {\n $.extend(true, settings, name);\n }\n else if(value !== undefined) {\n if($.isPlainObject(settings[name])) {\n $.extend(true, settings[name], value);\n }\n else {\n settings[name] = value;\n }\n }\n else {\n return settings[name];\n }\n },\n internal: function(name, value) {\n module.debug('Changing internal', name, value);\n if(value !== undefined) {\n if( $.isPlainObject(name) ) {\n $.extend(true, module, name);\n }\n else {\n module[name] = value;\n }\n }\n else {\n return module[name];\n }\n },\n debug: function() {\n if(!settings.silent && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.debug.apply(console, arguments);\n }\n }\n },\n verbose: function() {\n if(!settings.silent && settings.verbose && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.verbose.apply(console, arguments);\n }\n }\n },\n error: function() {\n if(!settings.silent) {\n module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n module.error.apply(console, arguments);\n }\n },\n performance: {\n log: function(message) {\n var\n currentTime,\n executionTime,\n previousTime\n ;\n if(settings.performance) {\n currentTime = new Date().getTime();\n previousTime = time || currentTime;\n executionTime = currentTime - previousTime;\n time = currentTime;\n performance.push({\n 'Name' : message[0],\n 'Arguments' : [].slice.call(message, 1) || '',\n 'Element' : element,\n 'Execution Time' : executionTime\n });\n }\n clearTimeout(module.performance.timer);\n module.performance.timer = setTimeout(module.performance.display, 500);\n },\n display: function() {\n var\n title = settings.name + ':',\n totalTime = 0\n ;\n time = false;\n clearTimeout(module.performance.timer);\n $.each(performance, function(index, data) {\n totalTime += data['Execution Time'];\n });\n title += ' ' + totalTime + 'ms';\n if(moduleSelector) {\n title += ' \\'' + moduleSelector + '\\'';\n }\n if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n console.groupCollapsed(title);\n if(console.table) {\n console.table(performance);\n }\n else {\n $.each(performance, function(index, data) {\n console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n });\n }\n console.groupEnd();\n }\n performance = [];\n }\n },\n invoke: function(query, passedArguments, context) {\n var\n object = instance,\n maxDepth,\n found,\n response\n ;\n passedArguments = passedArguments || queryArguments;\n context = element || context;\n if(typeof query == 'string' && object !== undefined) {\n query = query.split(/[\\. ]/);\n maxDepth = query.length - 1;\n $.each(query, function(depth, value) {\n var camelCaseValue = (depth != maxDepth)\n ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n : query\n ;\n if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n object = object[camelCaseValue];\n }\n else if( object[camelCaseValue] !== undefined ) {\n found = object[camelCaseValue];\n return false;\n }\n else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n object = object[value];\n }\n else if( object[value] !== undefined ) {\n found = object[value];\n return false;\n }\n else {\n module.error(error.method, query);\n return false;\n }\n });\n }\n if ( $.isFunction( found ) ) {\n response = found.apply(context, passedArguments);\n }\n else if(found !== undefined) {\n response = found;\n }\n if($.isArray(returnedValue)) {\n returnedValue.push(response);\n }\n else if(returnedValue !== undefined) {\n returnedValue = [returnedValue, response];\n }\n else if(response !== undefined) {\n returnedValue = response;\n }\n return found;\n }\n };\n if(methodInvoked) {\n if(instance === undefined) {\n module.initialize();\n }\n module.invoke(query);\n }\n else {\n if(instance !== undefined) {\n instance.invoke('destroy');\n }\n module.initialize();\n }\n })\n ;\n return (returnedValue !== undefined)\n ? returnedValue\n : this\n ;\n};\n\n$.fn.accordion.settings = {\n\n name : 'Accordion',\n namespace : 'accordion',\n\n silent : false,\n debug : false,\n verbose : false,\n performance : true,\n\n on : 'click', // event on title that opens accordion\n\n observeChanges : true, // whether accordion should automatically refresh on DOM insertion\n\n exclusive : true, // whether a single accordion content panel should be open at once\n collapsible : true, // whether accordion content can be closed\n closeNested : false, // whether nested content should be closed when a panel is closed\n animateChildren : true, // whether children opacity should be animated\n\n duration : 350, // duration of animation\n easing : 'easeOutQuad', // easing equation for animation\n\n\n onOpening : function(){}, // callback before open animation\n onOpen : function(){}, // callback after open animation\n onClosing : function(){}, // callback before closing animation\n onClose : function(){}, // callback after closing animation\n onChange : function(){}, // callback after closing or opening animation\n\n error: {\n method : 'The method you called is not defined'\n },\n\n className : {\n active : 'active',\n animating : 'animating'\n },\n\n selector : {\n accordion : '.accordion',\n title : '.title',\n trigger : '.title',\n content : '.content'\n }\n\n};\n\n// Adds easing\n$.extend( $.easing, {\n easeOutQuad: function (x, t, b, c, d) {\n return -c *(t/=d)*(t-2) + b;\n }\n});\n\n})( jQuery, window, document );\n\n","/*!\n * # Semantic UI 2.2.6 - Checkbox\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n ? window\n : (typeof self != 'undefined' && self.Math == Math)\n ? self\n : Function('return this')()\n;\n\n$.fn.checkbox = function(parameters) {\n var\n $allModules = $(this),\n moduleSelector = $allModules.selector || '',\n\n time = new Date().getTime(),\n performance = [],\n\n query = arguments[0],\n methodInvoked = (typeof query == 'string'),\n queryArguments = [].slice.call(arguments, 1),\n returnedValue\n ;\n\n $allModules\n .each(function() {\n var\n settings = $.extend(true, {}, $.fn.checkbox.settings, parameters),\n\n className = settings.className,\n namespace = settings.namespace,\n selector = settings.selector,\n error = settings.error,\n\n eventNamespace = '.' + namespace,\n moduleNamespace = 'module-' + namespace,\n\n $module = $(this),\n $label = $(this).children(selector.label),\n $input = $(this).children(selector.input),\n input = $input[0],\n\n initialLoad = false,\n shortcutPressed = false,\n instance = $module.data(moduleNamespace),\n\n observer,\n element = this,\n module\n ;\n\n module = {\n\n initialize: function() {\n module.verbose('Initializing checkbox', settings);\n\n module.create.label();\n module.bind.events();\n\n module.set.tabbable();\n module.hide.input();\n\n module.observeChanges();\n module.instantiate();\n module.setup();\n },\n\n instantiate: function() {\n module.verbose('Storing instance of module', module);\n instance = module;\n $module\n .data(moduleNamespace, module)\n ;\n },\n\n destroy: function() {\n module.verbose('Destroying module');\n module.unbind.events();\n module.show.input();\n $module.removeData(moduleNamespace);\n },\n\n fix: {\n reference: function() {\n if( $module.is(selector.input) ) {\n module.debug('Behavior called on <input> adjusting invoked element');\n $module = $module.closest(selector.checkbox);\n module.refresh();\n }\n }\n },\n\n setup: function() {\n module.set.initialLoad();\n if( module.is.indeterminate() ) {\n module.debug('Initial value is indeterminate');\n module.indeterminate();\n }\n else if( module.is.checked() ) {\n module.debug('Initial value is checked');\n module.check();\n }\n else {\n module.debug('Initial value is unchecked');\n module.uncheck();\n }\n module.remove.initialLoad();\n },\n\n refresh: function() {\n $label = $module.children(selector.label);\n $input = $module.children(selector.input);\n input = $input[0];\n },\n\n hide: {\n input: function() {\n module.verbose('Modifying <input> z-index to be unselectable');\n $input.addClass(className.hidden);\n }\n },\n show: {\n input: function() {\n module.verbose('Modifying <input> z-index to be selectable');\n $input.removeClass(className.hidden);\n }\n },\n\n observeChanges: function() {\n if('MutationObserver' in window) {\n observer = new MutationObserver(function(mutations) {\n module.debug('DOM tree modified, updating selector cache');\n module.refresh();\n });\n observer.observe(element, {\n childList : true,\n subtree : true\n });\n module.debug('Setting up mutation observer', observer);\n }\n },\n\n attachEvents: function(selector, event) {\n var\n $element = $(selector)\n ;\n event = $.isFunction(module[event])\n ? module[event]\n : module.toggle\n ;\n if($element.length > 0) {\n module.debug('Attaching checkbox events to element', selector, event);\n $element\n .on('click' + eventNamespace, event)\n ;\n }\n else {\n module.error(error.notFound);\n }\n },\n\n event: {\n click: function(event) {\n var\n $target = $(event.target)\n ;\n if( $target.is(selector.input) ) {\n module.verbose('Using default check action on initialized checkbox');\n return;\n }\n if( $target.is(selector.link) ) {\n module.debug('Clicking link inside checkbox, skipping toggle');\n return;\n }\n module.toggle();\n $input.focus();\n event.preventDefault();\n },\n keydown: function(event) {\n var\n key = event.which,\n keyCode = {\n enter : 13,\n space : 32,\n escape : 27\n }\n ;\n if(key == keyCode.escape) {\n module.verbose('Escape key pressed blurring field');\n $input.blur();\n shortcutPressed = true;\n }\n else if(!event.ctrlKey && ( key == keyCode.space || key == keyCode.enter) ) {\n module.verbose('Enter/space key pressed, toggling checkbox');\n module.toggle();\n shortcutPressed = true;\n }\n else {\n shortcutPressed = false;\n }\n },\n keyup: function(event) {\n if(shortcutPressed) {\n event.preventDefault();\n }\n }\n },\n\n check: function() {\n if( !module.should.allowCheck() ) {\n return;\n }\n module.debug('Checking checkbox', $input);\n module.set.checked();\n if( !module.should.ignoreCallbacks() ) {\n settings.onChecked.call(input);\n settings.onChange.call(input);\n }\n },\n\n uncheck: function() {\n if( !module.should.allowUncheck() ) {\n return;\n }\n module.debug('Unchecking checkbox');\n module.set.unchecked();\n if( !module.should.ignoreCallbacks() ) {\n settings.onUnchecked.call(input);\n settings.onChange.call(input);\n }\n },\n\n indeterminate: function() {\n if( module.should.allowIndeterminate() ) {\n module.debug('Checkbox is already indeterminate');\n return;\n }\n module.debug('Making checkbox indeterminate');\n module.set.indeterminate();\n if( !module.should.ignoreCallbacks() ) {\n settings.onIndeterminate.call(input);\n settings.onChange.call(input);\n }\n },\n\n determinate: function() {\n if( module.should.allowDeterminate() ) {\n module.debug('Checkbox is already determinate');\n return;\n }\n module.debug('Making checkbox determinate');\n module.set.determinate();\n if( !module.should.ignoreCallbacks() ) {\n settings.onDeterminate.call(input);\n settings.onChange.call(input);\n }\n },\n\n enable: function() {\n if( module.is.enabled() ) {\n module.debug('Checkbox is already enabled');\n return;\n }\n module.debug('Enabling checkbox');\n module.set.enabled();\n settings.onEnable.call(input);\n // preserve legacy callbacks\n settings.onEnabled.call(input);\n },\n\n disable: function() {\n if( module.is.disabled() ) {\n module.debug('Checkbox is already disabled');\n return;\n }\n module.debug('Disabling checkbox');\n module.set.disabled();\n settings.onDisable.call(input);\n // preserve legacy callbacks\n settings.onDisabled.call(input);\n },\n\n get: {\n radios: function() {\n var\n name = module.get.name()\n ;\n return $('input[name=\"' + name + '\"]').closest(selector.checkbox);\n },\n otherRadios: function() {\n return module.get.radios().not($module);\n },\n name: function() {\n return $input.attr('name');\n }\n },\n\n is: {\n initialLoad: function() {\n return initialLoad;\n },\n radio: function() {\n return ($input.hasClass(className.radio) || $input.attr('type') == 'radio');\n },\n indeterminate: function() {\n return $input.prop('indeterminate') !== undefined && $input.prop('indeterminate');\n },\n checked: function() {\n return $input.prop('checked') !== undefined && $input.prop('checked');\n },\n disabled: function() {\n return $input.prop('disabled') !== undefined && $input.prop('disabled');\n },\n enabled: function() {\n return !module.is.disabled();\n },\n determinate: function() {\n return !module.is.indeterminate();\n },\n unchecked: function() {\n return !module.is.checked();\n }\n },\n\n should: {\n allowCheck: function() {\n if(module.is.determinate() && module.is.checked() && !module.should.forceCallbacks() ) {\n module.debug('Should not allow check, checkbox is already checked');\n return false;\n }\n if(settings.beforeChecked.apply(input) === false) {\n module.debug('Should not allow check, beforeChecked cancelled');\n return false;\n }\n return true;\n },\n allowUncheck: function() {\n if(module.is.determinate() && module.is.unchecked() && !module.should.forceCallbacks() ) {\n module.debug('Should not allow uncheck, checkbox is already unchecked');\n return false;\n }\n if(settings.beforeUnchecked.apply(input) === false) {\n module.debug('Should not allow uncheck, beforeUnchecked cancelled');\n return false;\n }\n return true;\n },\n allowIndeterminate: function() {\n if(module.is.indeterminate() && !module.should.forceCallbacks() ) {\n module.debug('Should not allow indeterminate, checkbox is already indeterminate');\n return false;\n }\n if(settings.beforeIndeterminate.apply(input) === false) {\n module.debug('Should not allow indeterminate, beforeIndeterminate cancelled');\n return false;\n }\n return true;\n },\n allowDeterminate: function() {\n if(module.is.determinate() && !module.should.forceCallbacks() ) {\n module.debug('Should not allow determinate, checkbox is already determinate');\n return false;\n }\n if(settings.beforeDeterminate.apply(input) === false) {\n module.debug('Should not allow determinate, beforeDeterminate cancelled');\n return false;\n }\n return true;\n },\n forceCallbacks: function() {\n return (module.is.initialLoad() && settings.fireOnInit);\n },\n ignoreCallbacks: function() {\n return (initialLoad && !settings.fireOnInit);\n }\n },\n\n can: {\n change: function() {\n return !( $module.hasClass(className.disabled) || $module.hasClass(className.readOnly) || $input.prop('disabled') || $input.prop('readonly') );\n },\n uncheck: function() {\n return (typeof settings.uncheckable === 'boolean')\n ? settings.uncheckable\n : !module.is.radio()\n ;\n }\n },\n\n set: {\n initialLoad: function() {\n initialLoad = true;\n },\n checked: function() {\n module.verbose('Setting class to checked');\n $module\n .removeClass(className.indeterminate)\n .addClass(className.checked)\n ;\n if( module.is.radio() ) {\n module.uncheckOthers();\n }\n if(!module.is.indeterminate() && module.is.checked()) {\n module.debug('Input is already checked, skipping input property change');\n return;\n }\n module.verbose('Setting state to checked', input);\n $input\n .prop('indeterminate', false)\n .prop('checked', true)\n ;\n module.trigger.change();\n },\n unchecked: function() {\n module.verbose('Removing checked class');\n $module\n .removeClass(className.indeterminate)\n .removeClass(className.checked)\n ;\n if(!module.is.indeterminate() && module.is.unchecked() ) {\n module.debug('Input is already unchecked');\n return;\n }\n module.debug('Setting state to unchecked');\n $input\n .prop('indeterminate', false)\n .prop('checked', false)\n ;\n module.trigger.change();\n },\n indeterminate: function() {\n module.verbose('Setting class to indeterminate');\n $module\n .addClass(className.indeterminate)\n ;\n if( module.is.indeterminate() ) {\n module.debug('Input is already indeterminate, skipping input property change');\n return;\n }\n module.debug('Setting state to indeterminate');\n $input\n .prop('indeterminate', true)\n ;\n module.trigger.change();\n },\n determinate: function() {\n module.verbose('Removing indeterminate class');\n $module\n .removeClass(className.indeterminate)\n ;\n if( module.is.determinate() ) {\n module.debug('Input is already determinate, skipping input property change');\n return;\n }\n module.debug('Setting state to determinate');\n $input\n .prop('indeterminate', false)\n ;\n },\n disabled: function() {\n module.verbose('Setting class to disabled');\n $module\n .addClass(className.disabled)\n ;\n if( module.is.disabled() ) {\n module.debug('Input is already disabled, skipping input property change');\n return;\n }\n module.debug('Setting state to disabled');\n $input\n .prop('disabled', 'disabled')\n ;\n module.trigger.change();\n },\n enabled: function() {\n module.verbose('Removing disabled class');\n $module.removeClass(className.disabled);\n if( module.is.enabled() ) {\n module.debug('Input is already enabled, skipping input property change');\n return;\n }\n module.debug('Setting state to enabled');\n $input\n .prop('disabled', false)\n ;\n module.trigger.change();\n },\n tabbable: function() {\n module.verbose('Adding tabindex to checkbox');\n if( $input.attr('tabindex') === undefined) {\n $input.attr('tabindex', 0);\n }\n }\n },\n\n remove: {\n initialLoad: function() {\n initialLoad = false;\n }\n },\n\n trigger: {\n change: function() {\n var\n events = document.createEvent('HTMLEvents'),\n inputElement = $input[0]\n ;\n if(inputElement) {\n module.verbose('Triggering native change event');\n events.initEvent('change', true, false);\n inputElement.dispatchEvent(events);\n }\n }\n },\n\n\n create: {\n label: function() {\n if($input.prevAll(selector.label).length > 0) {\n $input.prev(selector.label).detach().insertAfter($input);\n module.debug('Moving existing label', $label);\n }\n else if( !module.has.label() ) {\n $label = $('<label>').insertAfter($input);\n module.debug('Creating label', $label);\n }\n }\n },\n\n has: {\n label: function() {\n return ($label.length > 0);\n }\n },\n\n bind: {\n events: function() {\n module.verbose('Attaching checkbox events');\n $module\n .on('click' + eventNamespace, module.event.click)\n .on('keydown' + eventNamespace, selector.input, module.event.keydown)\n .on('keyup' + eventNamespace, selector.input, module.event.keyup)\n ;\n }\n },\n\n unbind: {\n events: function() {\n module.debug('Removing events');\n $module\n .off(eventNamespace)\n ;\n }\n },\n\n uncheckOthers: function() {\n var\n $radios = module.get.otherRadios()\n ;\n module.debug('Unchecking other radios', $radios);\n $radios.removeClass(className.checked);\n },\n\n toggle: function() {\n if( !module.can.change() ) {\n if(!module.is.radio()) {\n module.debug('Checkbox is read-only or disabled, ignoring toggle');\n }\n return;\n }\n if( module.is.indeterminate() || module.is.unchecked() ) {\n module.debug('Currently unchecked');\n module.check();\n }\n else if( module.is.checked() && module.can.uncheck() ) {\n module.debug('Currently checked');\n module.uncheck();\n }\n },\n setting: function(name, value) {\n module.debug('Changing setting', name, value);\n if( $.isPlainObject(name) ) {\n $.extend(true, settings, name);\n }\n else if(value !== undefined) {\n if($.isPlainObject(settings[name])) {\n $.extend(true, settings[name], value);\n }\n else {\n settings[name] = value;\n }\n }\n else {\n return settings[name];\n }\n },\n internal: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, module, name);\n }\n else if(value !== undefined) {\n module[name] = value;\n }\n else {\n return module[name];\n }\n },\n debug: function() {\n if(!settings.silent && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.debug.apply(console, arguments);\n }\n }\n },\n verbose: function() {\n if(!settings.silent && settings.verbose && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.verbose.apply(console, arguments);\n }\n }\n },\n error: function() {\n if(!settings.silent) {\n module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n module.error.apply(console, arguments);\n }\n },\n performance: {\n log: function(message) {\n var\n currentTime,\n executionTime,\n previousTime\n ;\n if(settings.performance) {\n currentTime = new Date().getTime();\n previousTime = time || currentTime;\n executionTime = currentTime - previousTime;\n time = currentTime;\n performance.push({\n 'Name' : message[0],\n 'Arguments' : [].slice.call(message, 1) || '',\n 'Element' : element,\n 'Execution Time' : executionTime\n });\n }\n clearTimeout(module.performance.timer);\n module.performance.timer = setTimeout(module.performance.display, 500);\n },\n display: function() {\n var\n title = settings.name + ':',\n totalTime = 0\n ;\n time = false;\n clearTimeout(module.performance.timer);\n $.each(performance, function(index, data) {\n totalTime += data['Execution Time'];\n });\n title += ' ' + totalTime + 'ms';\n if(moduleSelector) {\n title += ' \\'' + moduleSelector + '\\'';\n }\n if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n console.groupCollapsed(title);\n if(console.table) {\n console.table(performance);\n }\n else {\n $.each(performance, function(index, data) {\n console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n });\n }\n console.groupEnd();\n }\n performance = [];\n }\n },\n invoke: function(query, passedArguments, context) {\n var\n object = instance,\n maxDepth,\n found,\n response\n ;\n passedArguments = passedArguments || queryArguments;\n context = element || context;\n if(typeof query == 'string' && object !== undefined) {\n query = query.split(/[\\. ]/);\n maxDepth = query.length - 1;\n $.each(query, function(depth, value) {\n var camelCaseValue = (depth != maxDepth)\n ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n : query\n ;\n if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n object = object[camelCaseValue];\n }\n else if( object[camelCaseValue] !== undefined ) {\n found = object[camelCaseValue];\n return false;\n }\n else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n object = object[value];\n }\n else if( object[value] !== undefined ) {\n found = object[value];\n return false;\n }\n else {\n module.error(error.method, query);\n return false;\n }\n });\n }\n if ( $.isFunction( found ) ) {\n response = found.apply(context, passedArguments);\n }\n else if(found !== undefined) {\n response = found;\n }\n if($.isArray(returnedValue)) {\n returnedValue.push(response);\n }\n else if(returnedValue !== undefined) {\n returnedValue = [returnedValue, response];\n }\n else if(response !== undefined) {\n returnedValue = response;\n }\n return found;\n }\n };\n\n if(methodInvoked) {\n if(instance === undefined) {\n module.initialize();\n }\n module.invoke(query);\n }\n else {\n if(instance !== undefined) {\n instance.invoke('destroy');\n }\n module.initialize();\n }\n })\n ;\n\n return (returnedValue !== undefined)\n ? returnedValue\n : this\n ;\n};\n\n$.fn.checkbox.settings = {\n\n name : 'Checkbox',\n namespace : 'checkbox',\n\n silent : false,\n debug : false,\n verbose : true,\n performance : true,\n\n // delegated event context\n uncheckable : 'auto',\n fireOnInit : false,\n\n onChange : function(){},\n\n beforeChecked : function(){},\n beforeUnchecked : function(){},\n beforeDeterminate : function(){},\n beforeIndeterminate : function(){},\n\n onChecked : function(){},\n onUnchecked : function(){},\n\n onDeterminate : function() {},\n onIndeterminate : function() {},\n\n onEnable : function(){},\n onDisable : function(){},\n\n // preserve misspelled callbacks (will be removed in 3.0)\n onEnabled : function(){},\n onDisabled : function(){},\n\n className : {\n checked : 'checked',\n indeterminate : 'indeterminate',\n disabled : 'disabled',\n hidden : 'hidden',\n radio : 'radio',\n readOnly : 'read-only'\n },\n\n error : {\n method : 'The method you called is not defined'\n },\n\n selector : {\n checkbox : '.ui.checkbox',\n label : 'label, .box',\n input : 'input[type=\"checkbox\"], input[type=\"radio\"]',\n link : 'a[href]'\n }\n\n};\n\n})( jQuery, window, document );\n","/*!\n * # Semantic UI 2.2.6 - Dimmer\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n ? window\n : (typeof self != 'undefined' && self.Math == Math)\n ? self\n : Function('return this')()\n;\n\n$.fn.dimmer = function(parameters) {\n var\n $allModules = $(this),\n\n time = new Date().getTime(),\n performance = [],\n\n query = arguments[0],\n methodInvoked = (typeof query == 'string'),\n queryArguments = [].slice.call(arguments, 1),\n\n returnedValue\n ;\n\n $allModules\n .each(function() {\n var\n settings = ( $.isPlainObject(parameters) )\n ? $.extend(true, {}, $.fn.dimmer.settings, parameters)\n : $.extend({}, $.fn.dimmer.settings),\n\n selector = settings.selector,\n namespace = settings.namespace,\n className = settings.className,\n error = settings.error,\n\n eventNamespace = '.' + namespace,\n moduleNamespace = 'module-' + namespace,\n moduleSelector = $allModules.selector || '',\n\n clickEvent = ('ontouchstart' in document.documentElement)\n ? 'touchstart'\n : 'click',\n\n $module = $(this),\n $dimmer,\n $dimmable,\n\n element = this,\n instance = $module.data(moduleNamespace),\n module\n ;\n\n module = {\n\n preinitialize: function() {\n if( module.is.dimmer() ) {\n\n $dimmable = $module.parent();\n $dimmer = $module;\n }\n else {\n $dimmable = $module;\n if( module.has.dimmer() ) {\n if(settings.dimmerName) {\n $dimmer = $dimmable.find(selector.dimmer).filter('.' + settings.dimmerName);\n }\n else {\n $dimmer = $dimmable.find(selector.dimmer);\n }\n }\n else {\n $dimmer = module.create();\n }\n module.set.variation();\n }\n },\n\n initialize: function() {\n module.debug('Initializing dimmer', settings);\n\n module.bind.events();\n module.set.dimmable();\n module.instantiate();\n },\n\n instantiate: function() {\n module.verbose('Storing instance of module', module);\n instance = module;\n $module\n .data(moduleNamespace, instance)\n ;\n },\n\n destroy: function() {\n module.verbose('Destroying previous module', $dimmer);\n module.unbind.events();\n module.remove.variation();\n $dimmable\n .off(eventNamespace)\n ;\n },\n\n bind: {\n events: function() {\n if(settings.on == 'hover') {\n $dimmable\n .on('mouseenter' + eventNamespace, module.show)\n .on('mouseleave' + eventNamespace, module.hide)\n ;\n }\n else if(settings.on == 'click') {\n $dimmable\n .on(clickEvent + eventNamespace, module.toggle)\n ;\n }\n if( module.is.page() ) {\n module.debug('Setting as a page dimmer', $dimmable);\n module.set.pageDimmer();\n }\n\n if( module.is.closable() ) {\n module.verbose('Adding dimmer close event', $dimmer);\n $dimmable\n .on(clickEvent + eventNamespace, selector.dimmer, module.event.click)\n ;\n }\n }\n },\n\n unbind: {\n events: function() {\n $module\n .removeData(moduleNamespace)\n ;\n $dimmable\n .off(eventNamespace)\n ;\n }\n },\n\n event: {\n click: function(event) {\n module.verbose('Determining if event occured on dimmer', event);\n if( $dimmer.find(event.target).length === 0 || $(event.target).is(selector.content) ) {\n module.hide();\n event.stopImmediatePropagation();\n }\n }\n },\n\n addContent: function(element) {\n var\n $content = $(element)\n ;\n module.debug('Add content to dimmer', $content);\n if($content.parent()[0] !== $dimmer[0]) {\n $content.detach().appendTo($dimmer);\n }\n },\n\n create: function() {\n var\n $element = $( settings.template.dimmer() )\n ;\n if(settings.dimmerName) {\n module.debug('Creating named dimmer', settings.dimmerName);\n $element.addClass(settings.dimmerName);\n }\n $element\n .appendTo($dimmable)\n ;\n return $element;\n },\n\n show: function(callback) {\n callback = $.isFunction(callback)\n ? callback\n : function(){}\n ;\n module.debug('Showing dimmer', $dimmer, settings);\n if( (!module.is.dimmed() || module.is.animating()) && module.is.enabled() ) {\n module.animate.show(callback);\n settings.onShow.call(element);\n settings.onChange.call(element);\n }\n else {\n module.debug('Dimmer is already shown or disabled');\n }\n },\n\n hide: function(callback) {\n callback = $.isFunction(callback)\n ? callback\n : function(){}\n ;\n if( module.is.dimmed() || module.is.animating() ) {\n module.debug('Hiding dimmer', $dimmer);\n module.animate.hide(callback);\n settings.onHide.call(element);\n settings.onChange.call(element);\n }\n else {\n module.debug('Dimmer is not visible');\n }\n },\n\n toggle: function() {\n module.verbose('Toggling dimmer visibility', $dimmer);\n if( !module.is.dimmed() ) {\n module.show();\n }\n else {\n module.hide();\n }\n },\n\n animate: {\n show: function(callback) {\n callback = $.isFunction(callback)\n ? callback\n : function(){}\n ;\n if(settings.useCSS && $.fn.transition !== undefined && $dimmer.transition('is supported')) {\n if(settings.opacity !== 'auto') {\n module.set.opacity();\n }\n $dimmer\n .transition({\n animation : settings.transition + ' in',\n queue : false,\n duration : module.get.duration(),\n useFailSafe : true,\n onStart : function() {\n module.set.dimmed();\n },\n onComplete : function() {\n module.set.active();\n callback();\n }\n })\n ;\n }\n else {\n module.verbose('Showing dimmer animation with javascript');\n module.set.dimmed();\n if(settings.opacity == 'auto') {\n settings.opacity = 0.8;\n }\n $dimmer\n .stop()\n .css({\n opacity : 0,\n width : '100%',\n height : '100%'\n })\n .fadeTo(module.get.duration(), settings.opacity, function() {\n $dimmer.removeAttr('style');\n module.set.active();\n callback();\n })\n ;\n }\n },\n hide: function(callback) {\n callback = $.isFunction(callback)\n ? callback\n : function(){}\n ;\n if(settings.useCSS && $.fn.transition !== undefined && $dimmer.transition('is supported')) {\n module.verbose('Hiding dimmer with css');\n $dimmer\n .transition({\n animation : settings.transition + ' out',\n queue : false,\n duration : module.get.duration(),\n useFailSafe : true,\n onStart : function() {\n module.remove.dimmed();\n },\n onComplete : function() {\n module.remove.active();\n callback();\n }\n })\n ;\n }\n else {\n module.verbose('Hiding dimmer with javascript');\n module.remove.dimmed();\n $dimmer\n .stop()\n .fadeOut(module.get.duration(), function() {\n module.remove.active();\n $dimmer.removeAttr('style');\n callback();\n })\n ;\n }\n }\n },\n\n get: {\n dimmer: function() {\n return $dimmer;\n },\n duration: function() {\n if(typeof settings.duration == 'object') {\n if( module.is.active() ) {\n return settings.duration.hide;\n }\n else {\n return settings.duration.show;\n }\n }\n return settings.duration;\n }\n },\n\n has: {\n dimmer: function() {\n if(settings.dimmerName) {\n return ($module.find(selector.dimmer).filter('.' + settings.dimmerName).length > 0);\n }\n else {\n return ( $module.find(selector.dimmer).length > 0 );\n }\n }\n },\n\n is: {\n active: function() {\n return $dimmer.hasClass(className.active);\n },\n animating: function() {\n return ( $dimmer.is(':animated') || $dimmer.hasClass(className.animating) );\n },\n closable: function() {\n if(settings.closable == 'auto') {\n if(settings.on == 'hover') {\n return false;\n }\n return true;\n }\n return settings.closable;\n },\n dimmer: function() {\n return $module.hasClass(className.dimmer);\n },\n dimmable: function() {\n return $module.hasClass(className.dimmable);\n },\n dimmed: function() {\n return $dimmable.hasClass(className.dimmed);\n },\n disabled: function() {\n return $dimmable.hasClass(className.disabled);\n },\n enabled: function() {\n return !module.is.disabled();\n },\n page: function () {\n return $dimmable.is('body');\n },\n pageDimmer: function() {\n return $dimmer.hasClass(className.pageDimmer);\n }\n },\n\n can: {\n show: function() {\n return !$dimmer.hasClass(className.disabled);\n }\n },\n\n set: {\n opacity: function(opacity) {\n var\n color = $dimmer.css('background-color'),\n colorArray = color.split(','),\n isRGB = (colorArray && colorArray.length == 3),\n isRGBA = (colorArray && colorArray.length == 4)\n ;\n opacity = settings.opacity === 0 ? 0 : settings.opacity || opacity;\n if(isRGB || isRGBA) {\n colorArray[3] = opacity + ')';\n color = colorArray.join(',');\n }\n else {\n color = 'rgba(0, 0, 0, ' + opacity + ')';\n }\n module.debug('Setting opacity to', opacity);\n $dimmer.css('background-color', color);\n },\n active: function() {\n $dimmer.addClass(className.active);\n },\n dimmable: function() {\n $dimmable.addClass(className.dimmable);\n },\n dimmed: function() {\n $dimmable.addClass(className.dimmed);\n },\n pageDimmer: function() {\n $dimmer.addClass(className.pageDimmer);\n },\n disabled: function() {\n $dimmer.addClass(className.disabled);\n },\n variation: function(variation) {\n variation = variation || settings.variation;\n if(variation) {\n $dimmer.addClass(variation);\n }\n }\n },\n\n remove: {\n active: function() {\n $dimmer\n .removeClass(className.active)\n ;\n },\n dimmed: function() {\n $dimmable.removeClass(className.dimmed);\n },\n disabled: function() {\n $dimmer.removeClass(className.disabled);\n },\n variation: function(variation) {\n variation = variation || settings.variation;\n if(variation) {\n $dimmer.removeClass(variation);\n }\n }\n },\n\n setting: function(name, value) {\n module.debug('Changing setting', name, value);\n if( $.isPlainObject(name) ) {\n $.extend(true, settings, name);\n }\n else if(value !== undefined) {\n if($.isPlainObject(settings[name])) {\n $.extend(true, settings[name], value);\n }\n else {\n settings[name] = value;\n }\n }\n else {\n return settings[name];\n }\n },\n internal: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, module, name);\n }\n else if(value !== undefined) {\n module[name] = value;\n }\n else {\n return module[name];\n }\n },\n debug: function() {\n if(!settings.silent && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.debug.apply(console, arguments);\n }\n }\n },\n verbose: function() {\n if(!settings.silent && settings.verbose && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.verbose.apply(console, arguments);\n }\n }\n },\n error: function() {\n if(!settings.silent) {\n module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n module.error.apply(console, arguments);\n }\n },\n performance: {\n log: function(message) {\n var\n currentTime,\n executionTime,\n previousTime\n ;\n if(settings.performance) {\n currentTime = new Date().getTime();\n previousTime = time || currentTime;\n executionTime = currentTime - previousTime;\n time = currentTime;\n performance.push({\n 'Name' : message[0],\n 'Arguments' : [].slice.call(message, 1) || '',\n 'Element' : element,\n 'Execution Time' : executionTime\n });\n }\n clearTimeout(module.performance.timer);\n module.performance.timer = setTimeout(module.performance.display, 500);\n },\n display: function() {\n var\n title = settings.name + ':',\n totalTime = 0\n ;\n time = false;\n clearTimeout(module.performance.timer);\n $.each(performance, function(index, data) {\n totalTime += data['Execution Time'];\n });\n title += ' ' + totalTime + 'ms';\n if(moduleSelector) {\n title += ' \\'' + moduleSelector + '\\'';\n }\n if($allModules.length > 1) {\n title += ' ' + '(' + $allModules.length + ')';\n }\n if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n console.groupCollapsed(title);\n if(console.table) {\n console.table(performance);\n }\n else {\n $.each(performance, function(index, data) {\n console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n });\n }\n console.groupEnd();\n }\n performance = [];\n }\n },\n invoke: function(query, passedArguments, context) {\n var\n object = instance,\n maxDepth,\n found,\n response\n ;\n passedArguments = passedArguments || queryArguments;\n context = element || context;\n if(typeof query == 'string' && object !== undefined) {\n query = query.split(/[\\. ]/);\n maxDepth = query.length - 1;\n $.each(query, function(depth, value) {\n var camelCaseValue = (depth != maxDepth)\n ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n : query\n ;\n if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n object = object[camelCaseValue];\n }\n else if( object[camelCaseValue] !== undefined ) {\n found = object[camelCaseValue];\n return false;\n }\n else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n object = object[value];\n }\n else if( object[value] !== undefined ) {\n found = object[value];\n return false;\n }\n else {\n module.error(error.method, query);\n return false;\n }\n });\n }\n if ( $.isFunction( found ) ) {\n response = found.apply(context, passedArguments);\n }\n else if(found !== undefined) {\n response = found;\n }\n if($.isArray(returnedValue)) {\n returnedValue.push(response);\n }\n else if(returnedValue !== undefined) {\n returnedValue = [returnedValue, response];\n }\n else if(response !== undefined) {\n returnedValue = response;\n }\n return found;\n }\n };\n\n module.preinitialize();\n\n if(methodInvoked) {\n if(instance === undefined) {\n module.initialize();\n }\n module.invoke(query);\n }\n else {\n if(instance !== undefined) {\n instance.invoke('destroy');\n }\n module.initialize();\n }\n })\n ;\n\n return (returnedValue !== undefined)\n ? returnedValue\n : this\n ;\n};\n\n$.fn.dimmer.settings = {\n\n name : 'Dimmer',\n namespace : 'dimmer',\n\n silent : false,\n debug : false,\n verbose : false,\n performance : true,\n\n // name to distinguish between multiple dimmers in context\n dimmerName : false,\n\n // whether to add a variation type\n variation : false,\n\n // whether to bind close events\n closable : 'auto',\n\n // whether to use css animations\n useCSS : true,\n\n // css animation to use\n transition : 'fade',\n\n // event to bind to\n on : false,\n\n // overriding opacity value\n opacity : 'auto',\n\n // transition durations\n duration : {\n show : 500,\n hide : 500\n },\n\n onChange : function(){},\n onShow : function(){},\n onHide : function(){},\n\n error : {\n method : 'The method you called is not defined.'\n },\n\n className : {\n active : 'active',\n animating : 'animating',\n dimmable : 'dimmable',\n dimmed : 'dimmed',\n dimmer : 'dimmer',\n disabled : 'disabled',\n hide : 'hide',\n pageDimmer : 'page',\n show : 'show'\n },\n\n selector: {\n dimmer : '> .ui.dimmer',\n content : '.ui.dimmer > .content, .ui.dimmer > .content > .center'\n },\n\n template: {\n dimmer: function() {\n return $('<div />').attr('class', 'ui dimmer');\n }\n }\n\n};\n\n})( jQuery, window, document );\n","/*!\n * # Semantic UI 2.2.6 - Dropdown\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n ? window\n : (typeof self != 'undefined' && self.Math == Math)\n ? self\n : Function('return this')()\n;\n\n$.fn.dropdown = function(parameters) {\n var\n $allModules = $(this),\n $document = $(document),\n\n moduleSelector = $allModules.selector || '',\n\n hasTouch = ('ontouchstart' in document.documentElement),\n time = new Date().getTime(),\n performance = [],\n\n query = arguments[0],\n methodInvoked = (typeof query == 'string'),\n queryArguments = [].slice.call(arguments, 1),\n returnedValue\n ;\n\n $allModules\n .each(function(elementIndex) {\n var\n settings = ( $.isPlainObject(parameters) )\n ? $.extend(true, {}, $.fn.dropdown.settings, parameters)\n : $.extend({}, $.fn.dropdown.settings),\n\n className = settings.className,\n message = settings.message,\n fields = settings.fields,\n keys = settings.keys,\n metadata = settings.metadata,\n namespace = settings.namespace,\n regExp = settings.regExp,\n selector = settings.selector,\n error = settings.error,\n templates = settings.templates,\n\n eventNamespace = '.' + namespace,\n moduleNamespace = 'module-' + namespace,\n\n $module = $(this),\n $context = $(settings.context),\n $text = $module.find(selector.text),\n $search = $module.find(selector.search),\n $sizer = $module.find(selector.sizer),\n $input = $module.find(selector.input),\n $icon = $module.find(selector.icon),\n\n $combo = ($module.prev().find(selector.text).length > 0)\n ? $module.prev().find(selector.text)\n : $module.prev(),\n\n $menu = $module.children(selector.menu),\n $item = $menu.find(selector.item),\n\n activated = false,\n itemActivated = false,\n internalChange = false,\n element = this,\n instance = $module.data(moduleNamespace),\n\n initialLoad,\n pageLostFocus,\n willRefocus,\n elementNamespace,\n id,\n selectObserver,\n menuObserver,\n module\n ;\n\n module = {\n\n initialize: function() {\n module.debug('Initializing dropdown', settings);\n\n if( module.is.alreadySetup() ) {\n module.setup.reference();\n }\n else {\n module.setup.layout();\n module.refreshData();\n\n module.save.defaults();\n module.restore.selected();\n\n module.create.id();\n module.bind.events();\n\n module.observeChanges();\n module.instantiate();\n }\n\n },\n\n instantiate: function() {\n module.verbose('Storing instance of dropdown', module);\n instance = module;\n $module\n .data(moduleNamespace, module)\n ;\n },\n\n destroy: function() {\n module.verbose('Destroying previous dropdown', $module);\n module.remove.tabbable();\n $module\n .off(eventNamespace)\n .removeData(moduleNamespace)\n ;\n $menu\n .off(eventNamespace)\n ;\n $document\n .off(elementNamespace)\n ;\n module.disconnect.menuObserver();\n module.disconnect.selectObserver();\n },\n\n observeChanges: function() {\n if('MutationObserver' in window) {\n selectObserver = new MutationObserver(module.event.select.mutation);\n menuObserver = new MutationObserver(module.event.menu.mutation);\n module.debug('Setting up mutation observer', selectObserver, menuObserver);\n module.observe.select();\n module.observe.menu();\n }\n },\n\n disconnect: {\n menuObserver: function() {\n if(menuObserver) {\n menuObserver.disconnect();\n }\n },\n selectObserver: function() {\n if(selectObserver) {\n selectObserver.disconnect();\n }\n }\n },\n observe: {\n select: function() {\n if(module.has.input()) {\n selectObserver.observe($input[0], {\n childList : true,\n subtree : true\n });\n }\n },\n menu: function() {\n if(module.has.menu()) {\n menuObserver.observe($menu[0], {\n childList : true,\n subtree : true\n });\n }\n }\n },\n\n create: {\n id: function() {\n id = (Math.random().toString(16) + '000000000').substr(2, 8);\n elementNamespace = '.' + id;\n module.verbose('Creating unique id for element', id);\n },\n userChoice: function(values) {\n var\n $userChoices,\n $userChoice,\n isUserValue,\n html\n ;\n values = values || module.get.userValues();\n if(!values) {\n return false;\n }\n values = $.isArray(values)\n ? values\n : [values]\n ;\n $.each(values, function(index, value) {\n if(module.get.item(value) === false) {\n html = settings.templates.addition( module.add.variables(message.addResult, value) );\n $userChoice = $('<div />')\n .html(html)\n .attr('data-' + metadata.value, value)\n .attr('data-' + metadata.text, value)\n .addClass(className.addition)\n .addClass(className.item)\n ;\n if(settings.hideAdditions) {\n $userChoice.addClass(className.hidden);\n }\n $userChoices = ($userChoices === undefined)\n ? $userChoice\n : $userChoices.add($userChoice)\n ;\n module.verbose('Creating user choices for value', value, $userChoice);\n }\n });\n return $userChoices;\n },\n userLabels: function(value) {\n var\n userValues = module.get.userValues()\n ;\n if(userValues) {\n module.debug('Adding user labels', userValues);\n $.each(userValues, function(index, value) {\n module.verbose('Adding custom user value');\n module.add.label(value, value);\n });\n }\n },\n menu: function() {\n $menu = $('<div />')\n .addClass(className.menu)\n .appendTo($module)\n ;\n },\n sizer: function() {\n $sizer = $('<span />')\n .addClass(className.sizer)\n .insertAfter($search)\n ;\n }\n },\n\n search: function(query) {\n query = (query !== undefined)\n ? query\n : module.get.query()\n ;\n module.verbose('Searching for query', query);\n if(module.has.minCharacters(query)) {\n module.filter(query);\n }\n else {\n module.hide();\n }\n },\n\n select: {\n firstUnfiltered: function() {\n module.verbose('Selecting first non-filtered element');\n module.remove.selectedItem();\n $item\n .not(selector.unselectable)\n .not(selector.addition + selector.hidden)\n .eq(0)\n .addClass(className.selected)\n ;\n },\n nextAvailable: function($selected) {\n $selected = $selected.eq(0);\n var\n $nextAvailable = $selected.nextAll(selector.item).not(selector.unselectable).eq(0),\n $prevAvailable = $selected.prevAll(selector.item).not(selector.unselectable).eq(0),\n hasNext = ($nextAvailable.length > 0)\n ;\n if(hasNext) {\n module.verbose('Moving selection to', $nextAvailable);\n $nextAvailable.addClass(className.selected);\n }\n else {\n module.verbose('Moving selection to', $prevAvailable);\n $prevAvailable.addClass(className.selected);\n }\n }\n },\n\n setup: {\n api: function() {\n var\n apiSettings = {\n debug : settings.debug,\n urlData : {\n value : module.get.value(),\n query : module.get.query()\n },\n on : false\n }\n ;\n module.verbose('First request, initializing API');\n $module\n .api(apiSettings)\n ;\n },\n layout: function() {\n if( $module.is('select') ) {\n module.setup.select();\n module.setup.returnedObject();\n }\n if( !module.has.menu() ) {\n module.create.menu();\n }\n if( module.is.search() && !module.has.search() ) {\n module.verbose('Adding search input');\n $search = $('<input />')\n .addClass(className.search)\n .prop('autocomplete', 'off')\n .insertBefore($text)\n ;\n }\n if( module.is.multiple() && module.is.searchSelection() && !module.has.sizer()) {\n module.create.sizer();\n }\n if(settings.allowTab) {\n module.set.tabbable();\n }\n },\n select: function() {\n var\n selectValues = module.get.selectValues()\n ;\n module.debug('Dropdown initialized on a select', selectValues);\n if( $module.is('select') ) {\n $input = $module;\n }\n // see if select is placed correctly already\n if($input.parent(selector.dropdown).length > 0) {\n module.debug('UI dropdown already exists. Creating dropdown menu only');\n $module = $input.closest(selector.dropdown);\n if( !module.has.menu() ) {\n module.create.menu();\n }\n $menu = $module.children(selector.menu);\n module.setup.menu(selectValues);\n }\n else {\n module.debug('Creating entire dropdown from select');\n $module = $('<div />')\n .attr('class', $input.attr('class') )\n .addClass(className.selection)\n .addClass(className.dropdown)\n .html( templates.dropdown(selectValues) )\n .insertBefore($input)\n ;\n if($input.hasClass(className.multiple) && $input.prop('multiple') === false) {\n module.error(error.missingMultiple);\n $input.prop('multiple', true);\n }\n if($input.is('[multiple]')) {\n module.set.multiple();\n }\n if ($input.prop('disabled')) {\n module.debug('Disabling dropdown');\n $module.addClass(className.disabled);\n }\n $input\n .removeAttr('class')\n .detach()\n .prependTo($module)\n ;\n }\n module.refresh();\n },\n menu: function(values) {\n $menu.html( templates.menu(values, fields));\n $item = $menu.find(selector.item);\n },\n reference: function() {\n module.debug('Dropdown behavior was called on select, replacing with closest dropdown');\n // replace module reference\n $module = $module.parent(selector.dropdown);\n module.refresh();\n module.setup.returnedObject();\n // invoke method in context of current instance\n if(methodInvoked) {\n instance = module;\n module.invoke(query);\n }\n },\n returnedObject: function() {\n var\n $firstModules = $allModules.slice(0, elementIndex),\n $lastModules = $allModules.slice(elementIndex + 1)\n ;\n // adjust all modules to use correct reference\n $allModules = $firstModules.add($module).add($lastModules);\n }\n },\n\n refresh: function() {\n module.refreshSelectors();\n module.refreshData();\n },\n\n refreshItems: function() {\n $item = $menu.find(selector.item);\n },\n\n refreshSelectors: function() {\n module.verbose('Refreshing selector cache');\n $text = $module.find(selector.text);\n $search = $module.find(selector.search);\n $input = $module.find(selector.input);\n $icon = $module.find(selector.icon);\n $combo = ($module.prev().find(selector.text).length > 0)\n ? $module.prev().find(selector.text)\n : $module.prev()\n ;\n $menu = $module.children(selector.menu);\n $item = $menu.find(selector.item);\n },\n\n refreshData: function() {\n module.verbose('Refreshing cached metadata');\n $item\n .removeData(metadata.text)\n .removeData(metadata.value)\n ;\n },\n\n clearData: function() {\n module.verbose('Clearing metadata');\n $item\n .removeData(metadata.text)\n .removeData(metadata.value)\n ;\n $module\n .removeData(metadata.defaultText)\n .removeData(metadata.defaultValue)\n .removeData(metadata.placeholderText)\n ;\n },\n\n toggle: function() {\n module.verbose('Toggling menu visibility');\n if( !module.is.active() ) {\n module.show();\n }\n else {\n module.hide();\n }\n },\n\n show: function(callback) {\n callback = $.isFunction(callback)\n ? callback\n : function(){}\n ;\n if( module.can.show() && !module.is.active() ) {\n module.debug('Showing dropdown');\n if(module.has.message() && !(module.has.maxSelections() || module.has.allResultsFiltered()) ) {\n module.remove.message();\n }\n if(module.is.allFiltered()) {\n return true;\n }\n if(settings.onShow.call(element) !== false) {\n module.animate.show(function() {\n if( module.can.click() ) {\n module.bind.intent();\n }\n if(module.has.menuSearch()) {\n module.focusSearch();\n }\n module.set.visible();\n callback.call(element);\n });\n }\n }\n },\n\n hide: function(callback) {\n callback = $.isFunction(callback)\n ? callback\n : function(){}\n ;\n if( module.is.active() ) {\n module.debug('Hiding dropdown');\n if(settings.onHide.call(element) !== false) {\n module.animate.hide(function() {\n module.remove.visible();\n callback.call(element);\n });\n }\n }\n },\n\n hideOthers: function() {\n module.verbose('Finding other dropdowns to hide');\n $allModules\n .not($module)\n .has(selector.menu + '.' + className.visible)\n .dropdown('hide')\n ;\n },\n\n hideMenu: function() {\n module.verbose('Hiding menu instantaneously');\n module.remove.active();\n module.remove.visible();\n $menu.transition('hide');\n },\n\n hideSubMenus: function() {\n var\n $subMenus = $menu.children(selector.item).find(selector.menu)\n ;\n module.verbose('Hiding sub menus', $subMenus);\n $subMenus.transition('hide');\n },\n\n bind: {\n events: function() {\n if(hasTouch) {\n module.bind.touchEvents();\n }\n module.bind.keyboardEvents();\n module.bind.inputEvents();\n module.bind.mouseEvents();\n },\n touchEvents: function() {\n module.debug('Touch device detected binding additional touch events');\n if( module.is.searchSelection() ) {\n // do nothing special yet\n }\n else if( module.is.single() ) {\n $module\n .on('touchstart' + eventNamespace, module.event.test.toggle)\n ;\n }\n $menu\n .on('touchstart' + eventNamespace, selector.item, module.event.item.mouseenter)\n ;\n },\n keyboardEvents: function() {\n module.verbose('Binding keyboard events');\n $module\n .on('keydown' + eventNamespace, module.event.keydown)\n ;\n if( module.has.search() ) {\n $module\n .on(module.get.inputEvent() + eventNamespace, selector.search, module.event.input)\n ;\n }\n if( module.is.multiple() ) {\n $document\n .on('keydown' + elementNamespace, module.event.document.keydown)\n ;\n }\n },\n inputEvents: function() {\n module.verbose('Binding input change events');\n $module\n .on('change' + eventNamespace, selector.input, module.event.change)\n ;\n },\n mouseEvents: function() {\n module.verbose('Binding mouse events');\n if(module.is.multiple()) {\n $module\n .on('click' + eventNamespace, selector.label, module.event.label.click)\n .on('click' + eventNamespace, selector.remove, module.event.remove.click)\n ;\n }\n if( module.is.searchSelection() ) {\n $module\n .on('mousedown' + eventNamespace, module.event.mousedown)\n .on('mouseup' + eventNamespace, module.event.mouseup)\n .on('mousedown' + eventNamespace, selector.menu, module.event.menu.mousedown)\n .on('mouseup' + eventNamespace, selector.menu, module.event.menu.mouseup)\n .on('click' + eventNamespace, selector.icon, module.event.icon.click)\n .on('focus' + eventNamespace, selector.search, module.event.search.focus)\n .on('click' + eventNamespace, selector.search, module.event.search.focus)\n .on('blur' + eventNamespace, selector.search, module.event.search.blur)\n .on('click' + eventNamespace, selector.text, module.event.text.focus)\n ;\n if(module.is.multiple()) {\n $module\n .on('click' + eventNamespace, module.event.click)\n ;\n }\n }\n else {\n if(settings.on == 'click') {\n $module\n .on('click' + eventNamespace, selector.icon, module.event.icon.click)\n .on('click' + eventNamespace, module.event.test.toggle)\n ;\n }\n else if(settings.on == 'hover') {\n $module\n .on('mouseenter' + eventNamespace, module.delay.show)\n .on('mouseleave' + eventNamespace, module.delay.hide)\n ;\n }\n else {\n $module\n .on(settings.on + eventNamespace, module.toggle)\n ;\n }\n $module\n .on('mousedown' + eventNamespace, module.event.mousedown)\n .on('mouseup' + eventNamespace, module.event.mouseup)\n .on('focus' + eventNamespace, module.event.focus)\n .on('blur' + eventNamespace, module.event.blur)\n ;\n }\n $menu\n .on('mouseenter' + eventNamespace, selector.item, module.event.item.mouseenter)\n .on('mouseleave' + eventNamespace, selector.item, module.event.item.mouseleave)\n .on('click' + eventNamespace, selector.item, module.event.item.click)\n ;\n },\n intent: function() {\n module.verbose('Binding hide intent event to document');\n if(hasTouch) {\n $document\n .on('touchstart' + elementNamespace, module.event.test.touch)\n .on('touchmove' + elementNamespace, module.event.test.touch)\n ;\n }\n $document\n .on('click' + elementNamespace, module.event.test.hide)\n ;\n }\n },\n\n unbind: {\n intent: function() {\n module.verbose('Removing hide intent event from document');\n if(hasTouch) {\n $document\n .off('touchstart' + elementNamespace)\n .off('touchmove' + elementNamespace)\n ;\n }\n $document\n .off('click' + elementNamespace)\n ;\n }\n },\n\n filter: function(query) {\n var\n searchTerm = (query !== undefined)\n ? query\n : module.get.query(),\n afterFiltered = function() {\n if(module.is.multiple()) {\n module.filterActive();\n }\n module.select.firstUnfiltered();\n if( module.has.allResultsFiltered() ) {\n if( settings.onNoResults.call(element, searchTerm) ) {\n if(settings.allowAdditions) {\n if(settings.hideAdditions) {\n module.verbose('User addition with no menu, setting empty style');\n module.set.empty();\n module.hideMenu();\n }\n }\n else {\n module.verbose('All items filtered, showing message', searchTerm);\n module.add.message(message.noResults);\n }\n }\n else {\n module.verbose('All items filtered, hiding dropdown', searchTerm);\n module.hideMenu();\n }\n }\n else {\n module.remove.empty();\n module.remove.message();\n }\n if(settings.allowAdditions) {\n module.add.userSuggestion(query);\n }\n if(module.is.searchSelection() && module.can.show() && module.is.focusedOnSearch() ) {\n module.show();\n }\n }\n ;\n if(settings.useLabels && module.has.maxSelections()) {\n return;\n }\n if(settings.apiSettings) {\n if( module.can.useAPI() ) {\n module.queryRemote(searchTerm, function() {\n afterFiltered();\n });\n }\n else {\n module.error(error.noAPI);\n }\n }\n else {\n module.filterItems(searchTerm);\n afterFiltered();\n }\n },\n\n queryRemote: function(query, callback) {\n var\n apiSettings = {\n errorDuration : false,\n cache : 'local',\n throttle : settings.throttle,\n urlData : {\n query: query\n },\n onError: function() {\n module.add.message(message.serverError);\n callback();\n },\n onFailure: function() {\n module.add.message(message.serverError);\n callback();\n },\n onSuccess : function(response) {\n module.remove.message();\n module.setup.menu({\n values: response[fields.remoteValues]\n });\n callback();\n }\n }\n ;\n if( !$module.api('get request') ) {\n module.setup.api();\n }\n apiSettings = $.extend(true, {}, apiSettings, settings.apiSettings);\n $module\n .api('setting', apiSettings)\n .api('query')\n ;\n },\n\n filterItems: function(query) {\n var\n searchTerm = (query !== undefined)\n ? query\n : module.get.query(),\n results = null,\n escapedTerm = module.escape.regExp(searchTerm),\n beginsWithRegExp = new RegExp('^' + escapedTerm, 'igm')\n ;\n // avoid loop if we're matching nothing\n if( module.has.query() ) {\n results = [];\n\n module.verbose('Searching for matching values', searchTerm);\n $item\n .each(function(){\n var\n $choice = $(this),\n text,\n value\n ;\n if(settings.match == 'both' || settings.match == 'text') {\n text = String(module.get.choiceText($choice, false));\n if(text.search(beginsWithRegExp) !== -1) {\n results.push(this);\n return true;\n }\n else if (settings.fullTextSearch === 'exact' && module.exactSearch(searchTerm, text)) {\n results.push(this);\n return true;\n }\n else if (settings.fullTextSearch === true && module.fuzzySearch(searchTerm, text)) {\n results.push(this);\n return true;\n }\n }\n if(settings.match == 'both' || settings.match == 'value') {\n value = String(module.get.choiceValue($choice, text));\n\n if(value.search(beginsWithRegExp) !== -1) {\n results.push(this);\n return true;\n }\n else if(settings.fullTextSearch && module.fuzzySearch(searchTerm, value)) {\n results.push(this);\n return true;\n }\n }\n })\n ;\n }\n module.debug('Showing only matched items', searchTerm);\n module.remove.filteredItem();\n if(results) {\n $item\n .not(results)\n .addClass(className.filtered)\n ;\n }\n },\n\n fuzzySearch: function(query, term) {\n var\n termLength = term.length,\n queryLength = query.length\n ;\n query = query.toLowerCase();\n term = term.toLowerCase();\n if(queryLength > termLength) {\n return false;\n }\n if(queryLength === termLength) {\n return (query === term);\n }\n search: for (var characterIndex = 0, nextCharacterIndex = 0; characterIndex < queryLength; characterIndex++) {\n var\n queryCharacter = query.charCodeAt(characterIndex)\n ;\n while(nextCharacterIndex < termLength) {\n if(term.charCodeAt(nextCharacterIndex++) === queryCharacter) {\n continue search;\n }\n }\n return false;\n }\n return true;\n },\n exactSearch: function (query, term) {\n query = query.toLowerCase();\n term = term.toLowerCase();\n if(term.indexOf(query) > -1) {\n return true;\n }\n return false;\n },\n filterActive: function() {\n if(settings.useLabels) {\n $item.filter('.' + className.active)\n .addClass(className.filtered)\n ;\n }\n },\n\n focusSearch: function(skipHandler) {\n if( module.has.search() && !module.is.focusedOnSearch() ) {\n if(skipHandler) {\n $module.off('focus' + eventNamespace, selector.search);\n $search.focus();\n $module.on('focus' + eventNamespace, selector.search, module.event.search.focus);\n }\n else {\n $search.focus();\n }\n }\n },\n\n forceSelection: function() {\n var\n $currentlySelected = $item.not(className.filtered).filter('.' + className.selected).eq(0),\n $activeItem = $item.not(className.filtered).filter('.' + className.active).eq(0),\n $selectedItem = ($currentlySelected.length > 0)\n ? $currentlySelected\n : $activeItem,\n hasSelected = ($selectedItem.length > 0)\n ;\n if(hasSelected) {\n module.debug('Forcing partial selection to selected item', $selectedItem);\n module.event.item.click.call($selectedItem, {}, true);\n return;\n }\n else {\n if(settings.allowAdditions) {\n module.set.selected(module.get.query());\n module.remove.searchTerm();\n }\n else {\n module.remove.searchTerm();\n }\n }\n },\n\n event: {\n change: function() {\n if(!internalChange) {\n module.debug('Input changed, updating selection');\n module.set.selected();\n }\n },\n focus: function() {\n if(settings.showOnFocus && !activated && module.is.hidden() && !pageLostFocus) {\n module.show();\n }\n },\n blur: function(event) {\n pageLostFocus = (document.activeElement === this);\n if(!activated && !pageLostFocus) {\n module.remove.activeLabel();\n module.hide();\n }\n },\n mousedown: function() {\n if(module.is.searchSelection()) {\n // prevent menu hiding on immediate re-focus\n willRefocus = true;\n }\n else {\n // prevents focus callback from occurring on mousedown\n activated = true;\n }\n },\n mouseup: function() {\n if(module.is.searchSelection()) {\n // prevent menu hiding on immediate re-focus\n willRefocus = false;\n }\n else {\n activated = false;\n }\n },\n click: function(event) {\n var\n $target = $(event.target)\n ;\n // focus search\n if($target.is($module)) {\n if(!module.is.focusedOnSearch()) {\n module.focusSearch();\n }\n else {\n module.show();\n }\n }\n },\n search: {\n focus: function() {\n activated = true;\n if(module.is.multiple()) {\n module.remove.activeLabel();\n }\n if(settings.showOnFocus) {\n module.search();\n }\n },\n blur: function(event) {\n pageLostFocus = (document.activeElement === this);\n if(!willRefocus) {\n if(!itemActivated && !pageLostFocus) {\n if(settings.forceSelection) {\n module.forceSelection();\n }\n module.hide();\n }\n }\n willRefocus = false;\n }\n },\n icon: {\n click: function(event) {\n module.toggle();\n }\n },\n text: {\n focus: function(event) {\n activated = true;\n module.focusSearch();\n }\n },\n input: function(event) {\n if(module.is.multiple() || module.is.searchSelection()) {\n module.set.filtered();\n }\n clearTimeout(module.timer);\n module.timer = setTimeout(module.search, settings.delay.search);\n },\n label: {\n click: function(event) {\n var\n $label = $(this),\n $labels = $module.find(selector.label),\n $activeLabels = $labels.filter('.' + className.active),\n $nextActive = $label.nextAll('.' + className.active),\n $prevActive = $label.prevAll('.' + className.active),\n $range = ($nextActive.length > 0)\n ? $label.nextUntil($nextActive).add($activeLabels).add($label)\n : $label.prevUntil($prevActive).add($activeLabels).add($label)\n ;\n if(event.shiftKey) {\n $activeLabels.removeClass(className.active);\n $range.addClass(className.active);\n }\n else if(event.ctrlKey) {\n $label.toggleClass(className.active);\n }\n else {\n $activeLabels.removeClass(className.active);\n $label.addClass(className.active);\n }\n settings.onLabelSelect.apply(this, $labels.filter('.' + className.active));\n }\n },\n remove: {\n click: function() {\n var\n $label = $(this).parent()\n ;\n if( $label.hasClass(className.active) ) {\n // remove all selected labels\n module.remove.activeLabels();\n }\n else {\n // remove this label only\n module.remove.activeLabels( $label );\n }\n }\n },\n test: {\n toggle: function(event) {\n var\n toggleBehavior = (module.is.multiple())\n ? module.show\n : module.toggle\n ;\n if(module.is.bubbledLabelClick(event) || module.is.bubbledIconClick(event)) {\n return;\n }\n if( module.determine.eventOnElement(event, toggleBehavior) ) {\n event.preventDefault();\n }\n },\n touch: function(event) {\n module.determine.eventOnElement(event, function() {\n if(event.type == 'touchstart') {\n module.timer = setTimeout(function() {\n module.hide();\n }, settings.delay.touch);\n }\n else if(event.type == 'touchmove') {\n clearTimeout(module.timer);\n }\n });\n event.stopPropagation();\n },\n hide: function(event) {\n module.determine.eventInModule(event, module.hide);\n }\n },\n select: {\n mutation: function(mutations) {\n module.debug('<select> modified, recreating menu');\n module.setup.select();\n }\n },\n menu: {\n mutation: function(mutations) {\n var\n mutation = mutations[0],\n $addedNode = mutation.addedNodes\n ? $(mutation.addedNodes[0])\n : $(false),\n $removedNode = mutation.removedNodes\n ? $(mutation.removedNodes[0])\n : $(false),\n $changedNodes = $addedNode.add($removedNode),\n isUserAddition = $changedNodes.is(selector.addition) || $changedNodes.closest(selector.addition).length > 0,\n isMessage = $changedNodes.is(selector.message) || $changedNodes.closest(selector.message).length > 0\n ;\n if(isUserAddition || isMessage) {\n module.debug('Updating item selector cache');\n module.refreshItems();\n }\n else {\n module.debug('Menu modified, updating selector cache');\n module.refresh();\n }\n },\n mousedown: function() {\n itemActivated = true;\n },\n mouseup: function() {\n itemActivated = false;\n }\n },\n item: {\n mouseenter: function(event) {\n var\n $target = $(event.target),\n $item = $(this),\n $subMenu = $item.children(selector.menu),\n $otherMenus = $item.siblings(selector.item).children(selector.menu),\n hasSubMenu = ($subMenu.length > 0),\n isBubbledEvent = ($subMenu.find($target).length > 0)\n ;\n if( !isBubbledEvent && hasSubMenu ) {\n clearTimeout(module.itemTimer);\n module.itemTimer = setTimeout(function() {\n module.verbose('Showing sub-menu', $subMenu);\n $.each($otherMenus, function() {\n module.animate.hide(false, $(this));\n });\n module.animate.show(false, $subMenu);\n }, settings.delay.show);\n event.preventDefault();\n }\n },\n mouseleave: function(event) {\n var\n $subMenu = $(this).children(selector.menu)\n ;\n if($subMenu.length > 0) {\n clearTimeout(module.itemTimer);\n module.itemTimer = setTimeout(function() {\n module.verbose('Hiding sub-menu', $subMenu);\n module.animate.hide(false, $subMenu);\n }, settings.delay.hide);\n }\n },\n click: function (event, skipRefocus) {\n var\n $choice = $(this),\n $target = (event)\n ? $(event.target)\n : $(''),\n $subMenu = $choice.find(selector.menu),\n text = module.get.choiceText($choice),\n value = module.get.choiceValue($choice, text),\n hasSubMenu = ($subMenu.length > 0),\n isBubbledEvent = ($subMenu.find($target).length > 0)\n ;\n if(!isBubbledEvent && (!hasSubMenu || settings.allowCategorySelection)) {\n if(module.is.searchSelection()) {\n if(settings.allowAdditions) {\n module.remove.userAddition();\n }\n module.remove.searchTerm();\n if(!module.is.focusedOnSearch() && !(skipRefocus == true)) {\n module.focusSearch(true);\n }\n }\n if(!settings.useLabels) {\n module.remove.filteredItem();\n module.set.scrollPosition($choice);\n }\n module.determine.selectAction.call(this, text, value);\n }\n }\n },\n\n document: {\n // label selection should occur even when element has no focus\n keydown: function(event) {\n var\n pressedKey = event.which,\n isShortcutKey = module.is.inObject(pressedKey, keys)\n ;\n if(isShortcutKey) {\n var\n $label = $module.find(selector.label),\n $activeLabel = $label.filter('.' + className.active),\n activeValue = $activeLabel.data(metadata.value),\n labelIndex = $label.index($activeLabel),\n labelCount = $label.length,\n hasActiveLabel = ($activeLabel.length > 0),\n hasMultipleActive = ($activeLabel.length > 1),\n isFirstLabel = (labelIndex === 0),\n isLastLabel = (labelIndex + 1 == labelCount),\n isSearch = module.is.searchSelection(),\n isFocusedOnSearch = module.is.focusedOnSearch(),\n isFocused = module.is.focused(),\n caretAtStart = (isFocusedOnSearch && module.get.caretPosition() === 0),\n $nextLabel\n ;\n if(isSearch && !hasActiveLabel && !isFocusedOnSearch) {\n return;\n }\n\n if(pressedKey == keys.leftArrow) {\n // activate previous label\n if((isFocused || caretAtStart) && !hasActiveLabel) {\n module.verbose('Selecting previous label');\n $label.last().addClass(className.active);\n }\n else if(hasActiveLabel) {\n if(!event.shiftKey) {\n module.verbose('Selecting previous label');\n $label.removeClass(className.active);\n }\n else {\n module.verbose('Adding previous label to selection');\n }\n if(isFirstLabel && !hasMultipleActive) {\n $activeLabel.addClass(className.active);\n }\n else {\n $activeLabel.prev(selector.siblingLabel)\n .addClass(className.active)\n .end()\n ;\n }\n event.preventDefault();\n }\n }\n else if(pressedKey == keys.rightArrow) {\n // activate first label\n if(isFocused && !hasActiveLabel) {\n $label.first().addClass(className.active);\n }\n // activate next label\n if(hasActiveLabel) {\n if(!event.shiftKey) {\n module.verbose('Selecting next label');\n $label.removeClass(className.active);\n }\n else {\n module.verbose('Adding next label to selection');\n }\n if(isLastLabel) {\n if(isSearch) {\n if(!isFocusedOnSearch) {\n module.focusSearch();\n }\n else {\n $label.removeClass(className.active);\n }\n }\n else if(hasMultipleActive) {\n $activeLabel.next(selector.siblingLabel).addClass(className.active);\n }\n else {\n $activeLabel.addClass(className.active);\n }\n }\n else {\n $activeLabel.next(selector.siblingLabel).addClass(className.active);\n }\n event.preventDefault();\n }\n }\n else if(pressedKey == keys.deleteKey || pressedKey == keys.backspace) {\n if(hasActiveLabel) {\n module.verbose('Removing active labels');\n if(isLastLabel) {\n if(isSearch && !isFocusedOnSearch) {\n module.focusSearch();\n }\n }\n $activeLabel.last().next(selector.siblingLabel).addClass(className.active);\n module.remove.activeLabels($activeLabel);\n event.preventDefault();\n }\n else if(caretAtStart && !hasActiveLabel && pressedKey == keys.backspace) {\n module.verbose('Removing last label on input backspace');\n $activeLabel = $label.last().addClass(className.active);\n module.remove.activeLabels($activeLabel);\n }\n }\n else {\n $activeLabel.removeClass(className.active);\n }\n }\n }\n },\n\n keydown: function(event) {\n var\n pressedKey = event.which,\n isShortcutKey = module.is.inObject(pressedKey, keys)\n ;\n if(isShortcutKey) {\n var\n $currentlySelected = $item.not(selector.unselectable).filter('.' + className.selected).eq(0),\n $activeItem = $menu.children('.' + className.active).eq(0),\n $selectedItem = ($currentlySelected.length > 0)\n ? $currentlySelected\n : $activeItem,\n $visibleItems = ($selectedItem.length > 0)\n ? $selectedItem.siblings(':not(.' + className.filtered +')').addBack()\n : $menu.children(':not(.' + className.filtered +')'),\n $subMenu = $selectedItem.children(selector.menu),\n $parentMenu = $selectedItem.closest(selector.menu),\n inVisibleMenu = ($parentMenu.hasClass(className.visible) || $parentMenu.hasClass(className.animating) || $parentMenu.parent(selector.menu).length > 0),\n hasSubMenu = ($subMenu.length> 0),\n hasSelectedItem = ($selectedItem.length > 0),\n selectedIsSelectable = ($selectedItem.not(selector.unselectable).length > 0),\n delimiterPressed = (pressedKey == keys.delimiter && settings.allowAdditions && module.is.multiple()),\n isAdditionWithoutMenu = (settings.allowAdditions && settings.hideAdditions && (pressedKey == keys.enter || delimiterPressed) && selectedIsSelectable),\n $nextItem,\n isSubMenuItem,\n newIndex\n ;\n // allow selection with menu closed\n if(isAdditionWithoutMenu) {\n module.verbose('Selecting item from keyboard shortcut', $selectedItem);\n module.event.item.click.call($selectedItem, event);\n if(module.is.searchSelection()) {\n module.remove.searchTerm();\n }\n }\n\n // visible menu keyboard shortcuts\n if( module.is.visible() ) {\n\n // enter (select or open sub-menu)\n if(pressedKey == keys.enter || delimiterPressed) {\n if(pressedKey == keys.enter && hasSelectedItem && hasSubMenu && !settings.allowCategorySelection) {\n module.verbose('Pressed enter on unselectable category, opening sub menu');\n pressedKey = keys.rightArrow;\n }\n else if(selectedIsSelectable) {\n module.verbose('Selecting item from keyboard shortcut', $selectedItem);\n module.event.item.click.call($selectedItem, event);\n if(module.is.searchSelection()) {\n module.remove.searchTerm();\n }\n }\n event.preventDefault();\n }\n\n // sub-menu actions\n if(hasSelectedItem) {\n\n if(pressedKey == keys.leftArrow) {\n\n isSubMenuItem = ($parentMenu[0] !== $menu[0]);\n\n if(isSubMenuItem) {\n module.verbose('Left key pressed, closing sub-menu');\n module.animate.hide(false, $parentMenu);\n $selectedItem\n .removeClass(className.selected)\n ;\n $parentMenu\n .closest(selector.item)\n .addClass(className.selected)\n ;\n event.preventDefault();\n }\n }\n\n // right arrow (show sub-menu)\n if(pressedKey == keys.rightArrow) {\n if(hasSubMenu) {\n module.verbose('Right key pressed, opening sub-menu');\n module.animate.show(false, $subMenu);\n $selectedItem\n .removeClass(className.selected)\n ;\n $subMenu\n .find(selector.item).eq(0)\n .addClass(className.selected)\n ;\n event.preventDefault();\n }\n }\n }\n\n // up arrow (traverse menu up)\n if(pressedKey == keys.upArrow) {\n $nextItem = (hasSelectedItem && inVisibleMenu)\n ? $selectedItem.prevAll(selector.item + ':not(' + selector.unselectable + ')').eq(0)\n : $item.eq(0)\n ;\n if($visibleItems.index( $nextItem ) < 0) {\n module.verbose('Up key pressed but reached top of current menu');\n event.preventDefault();\n return;\n }\n else {\n module.verbose('Up key pressed, changing active item');\n $selectedItem\n .removeClass(className.selected)\n ;\n $nextItem\n .addClass(className.selected)\n ;\n module.set.scrollPosition($nextItem);\n if(settings.selectOnKeydown && module.is.single()) {\n module.set.selectedItem($nextItem);\n }\n }\n event.preventDefault();\n }\n\n // down arrow (traverse menu down)\n if(pressedKey == keys.downArrow) {\n $nextItem = (hasSelectedItem && inVisibleMenu)\n ? $nextItem = $selectedItem.nextAll(selector.item + ':not(' + selector.unselectable + ')').eq(0)\n : $item.eq(0)\n ;\n if($nextItem.length === 0) {\n module.verbose('Down key pressed but reached bottom of current menu');\n event.preventDefault();\n return;\n }\n else {\n module.verbose('Down key pressed, changing active item');\n $item\n .removeClass(className.selected)\n ;\n $nextItem\n .addClass(className.selected)\n ;\n module.set.scrollPosition($nextItem);\n if(settings.selectOnKeydown && module.is.single()) {\n module.set.selectedItem($nextItem);\n }\n }\n event.preventDefault();\n }\n\n // page down (show next page)\n if(pressedKey == keys.pageUp) {\n module.scrollPage('up');\n event.preventDefault();\n }\n if(pressedKey == keys.pageDown) {\n module.scrollPage('down');\n event.preventDefault();\n }\n\n // escape (close menu)\n if(pressedKey == keys.escape) {\n module.verbose('Escape key pressed, closing dropdown');\n module.hide();\n }\n\n }\n else {\n // delimiter key\n if(delimiterPressed) {\n event.preventDefault();\n }\n // down arrow (open menu)\n if(pressedKey == keys.downArrow && !module.is.visible()) {\n module.verbose('Down key pressed, showing dropdown');\n module.select.firstUnfiltered();\n module.show();\n event.preventDefault();\n }\n }\n }\n else {\n if( !module.has.search() ) {\n module.set.selectedLetter( String.fromCharCode(pressedKey) );\n }\n }\n }\n },\n\n trigger: {\n change: function() {\n var\n events = document.createEvent('HTMLEvents'),\n inputElement = $input[0]\n ;\n if(inputElement) {\n module.verbose('Triggering native change event');\n events.initEvent('change', true, false);\n inputElement.dispatchEvent(events);\n }\n }\n },\n\n determine: {\n selectAction: function(text, value) {\n module.verbose('Determining action', settings.action);\n if( $.isFunction( module.action[settings.action] ) ) {\n module.verbose('Triggering preset action', settings.action, text, value);\n module.action[ settings.action ].call(element, text, value, this);\n }\n else if( $.isFunction(settings.action) ) {\n module.verbose('Triggering user action', settings.action, text, value);\n settings.action.call(element, text, value, this);\n }\n else {\n module.error(error.action, settings.action);\n }\n },\n eventInModule: function(event, callback) {\n var\n $target = $(event.target),\n inDocument = ($target.closest(document.documentElement).length > 0),\n inModule = ($target.closest($module).length > 0)\n ;\n callback = $.isFunction(callback)\n ? callback\n : function(){}\n ;\n if(inDocument && !inModule) {\n module.verbose('Triggering event', callback);\n callback();\n return true;\n }\n else {\n module.verbose('Event occurred in dropdown, canceling callback');\n return false;\n }\n },\n eventOnElement: function(event, callback) {\n var\n $target = $(event.target),\n $label = $target.closest(selector.siblingLabel),\n inVisibleDOM = document.body.contains(event.target),\n notOnLabel = ($module.find($label).length === 0),\n notInMenu = ($target.closest($menu).length === 0)\n ;\n callback = $.isFunction(callback)\n ? callback\n : function(){}\n ;\n if(inVisibleDOM && notOnLabel && notInMenu) {\n module.verbose('Triggering event', callback);\n callback();\n return true;\n }\n else {\n module.verbose('Event occurred in dropdown menu, canceling callback');\n return false;\n }\n }\n },\n\n action: {\n\n nothing: function() {},\n\n activate: function(text, value, element) {\n value = (value !== undefined)\n ? value\n : text\n ;\n if( module.can.activate( $(element) ) ) {\n module.set.selected(value, $(element));\n if(module.is.multiple() && !module.is.allFiltered()) {\n return;\n }\n else {\n module.hideAndClear();\n }\n }\n },\n\n select: function(text, value, element) {\n value = (value !== undefined)\n ? value\n : text\n ;\n if( module.can.activate( $(element) ) ) {\n module.set.value(value, $(element));\n if(module.is.multiple() && !module.is.allFiltered()) {\n return;\n }\n else {\n module.hideAndClear();\n }\n }\n },\n\n combo: function(text, value, element) {\n value = (value !== undefined)\n ? value\n : text\n ;\n module.set.selected(value, $(element));\n module.hideAndClear();\n },\n\n hide: function(text, value, element) {\n module.set.value(value, text);\n module.hideAndClear();\n }\n\n },\n\n get: {\n id: function() {\n return id;\n },\n defaultText: function() {\n return $module.data(metadata.defaultText);\n },\n defaultValue: function() {\n return $module.data(metadata.defaultValue);\n },\n placeholderText: function() {\n return $module.data(metadata.placeholderText) || '';\n },\n text: function() {\n return $text.text();\n },\n query: function() {\n return $.trim($search.val());\n },\n searchWidth: function(value) {\n value = (value !== undefined)\n ? value\n : $search.val()\n ;\n $sizer.text(value);\n // prevent rounding issues\n return Math.ceil( $sizer.width() + 1);\n },\n selectionCount: function() {\n var\n values = module.get.values(),\n count\n ;\n count = ( module.is.multiple() )\n ? $.isArray(values)\n ? values.length\n : 0\n : (module.get.value() !== '')\n ? 1\n : 0\n ;\n return count;\n },\n transition: function($subMenu) {\n return (settings.transition == 'auto')\n ? module.is.upward($subMenu)\n ? 'slide up'\n : 'slide down'\n : settings.transition\n ;\n },\n userValues: function() {\n var\n values = module.get.values()\n ;\n if(!values) {\n return false;\n }\n values = $.isArray(values)\n ? values\n : [values]\n ;\n return $.grep(values, function(value) {\n return (module.get.item(value) === false);\n });\n },\n uniqueArray: function(array) {\n return $.grep(array, function (value, index) {\n return $.inArray(value, array) === index;\n });\n },\n caretPosition: function() {\n var\n input = $search.get(0),\n range,\n rangeLength\n ;\n if('selectionStart' in input) {\n return input.selectionStart;\n }\n else if (document.selection) {\n input.focus();\n range = document.selection.createRange();\n rangeLength = range.text.length;\n range.moveStart('character', -input.value.length);\n return range.text.length - rangeLength;\n }\n },\n value: function() {\n var\n value = ($input.length > 0)\n ? $input.val()\n : $module.data(metadata.value),\n isEmptyMultiselect = ($.isArray(value) && value.length === 1 && value[0] === '')\n ;\n // prevents placeholder element from being selected when multiple\n return (value === undefined || isEmptyMultiselect)\n ? ''\n : value\n ;\n },\n values: function() {\n var\n value = module.get.value()\n ;\n if(value === '') {\n return '';\n }\n return ( !module.has.selectInput() && module.is.multiple() )\n ? (typeof value == 'string') // delimited string\n ? value.split(settings.delimiter)\n : ''\n : value\n ;\n },\n remoteValues: function() {\n var\n values = module.get.values(),\n remoteValues = false\n ;\n if(values) {\n if(typeof values == 'string') {\n values = [values];\n }\n $.each(values, function(index, value) {\n var\n name = module.read.remoteData(value)\n ;\n module.verbose('Restoring value from session data', name, value);\n if(name) {\n if(!remoteValues) {\n remoteValues = {};\n }\n remoteValues[value] = name;\n }\n });\n }\n return remoteValues;\n },\n choiceText: function($choice, preserveHTML) {\n preserveHTML = (preserveHTML !== undefined)\n ? preserveHTML\n : settings.preserveHTML\n ;\n if($choice) {\n if($choice.find(selector.menu).length > 0) {\n module.verbose('Retrieving text of element with sub-menu');\n $choice = $choice.clone();\n $choice.find(selector.menu).remove();\n $choice.find(selector.menuIcon).remove();\n }\n return ($choice.data(metadata.text) !== undefined)\n ? $choice.data(metadata.text)\n : (preserveHTML)\n ? $.trim($choice.html())\n : $.trim($choice.text())\n ;\n }\n },\n choiceValue: function($choice, choiceText) {\n choiceText = choiceText || module.get.choiceText($choice);\n if(!$choice) {\n return false;\n }\n return ($choice.data(metadata.value) !== undefined)\n ? String( $choice.data(metadata.value) )\n : (typeof choiceText === 'string')\n ? $.trim(choiceText.toLowerCase())\n : String(choiceText)\n ;\n },\n inputEvent: function() {\n var\n input = $search[0]\n ;\n if(input) {\n return (input.oninput !== undefined)\n ? 'input'\n : (input.onpropertychange !== undefined)\n ? 'propertychange'\n : 'keyup'\n ;\n }\n return false;\n },\n selectValues: function() {\n var\n select = {}\n ;\n select.values = [];\n $module\n .find('option')\n .each(function() {\n var\n $option = $(this),\n name = $option.html(),\n disabled = $option.attr('disabled'),\n value = ( $option.attr('value') !== undefined )\n ? $option.attr('value')\n : name\n ;\n if(settings.placeholder === 'auto' && value === '') {\n select.placeholder = name;\n }\n else {\n select.values.push({\n name : name,\n value : value,\n disabled : disabled\n });\n }\n })\n ;\n if(settings.placeholder && settings.placeholder !== 'auto') {\n module.debug('Setting placeholder value to', settings.placeholder);\n select.placeholder = settings.placeholder;\n }\n if(settings.sortSelect) {\n select.values.sort(function(a, b) {\n return (a.name > b.name)\n ? 1\n : -1\n ;\n });\n module.debug('Retrieved and sorted values from select', select);\n }\n else {\n module.debug('Retrieved values from select', select);\n }\n return select;\n },\n activeItem: function() {\n return $item.filter('.' + className.active);\n },\n selectedItem: function() {\n var\n $selectedItem = $item.not(selector.unselectable).filter('.' + className.selected)\n ;\n return ($selectedItem.length > 0)\n ? $selectedItem\n : $item.eq(0)\n ;\n },\n itemWithAdditions: function(value) {\n var\n $items = module.get.item(value),\n $userItems = module.create.userChoice(value),\n hasUserItems = ($userItems && $userItems.length > 0)\n ;\n if(hasUserItems) {\n $items = ($items.length > 0)\n ? $items.add($userItems)\n : $userItems\n ;\n }\n return $items;\n },\n item: function(value, strict) {\n var\n $selectedItem = false,\n shouldSearch,\n isMultiple\n ;\n value = (value !== undefined)\n ? value\n : ( module.get.values() !== undefined)\n ? module.get.values()\n : module.get.text()\n ;\n shouldSearch = (isMultiple)\n ? (value.length > 0)\n : (value !== undefined && value !== null)\n ;\n isMultiple = (module.is.multiple() && $.isArray(value));\n strict = (value === '' || value === 0)\n ? true\n : strict || false\n ;\n if(shouldSearch) {\n $item\n .each(function() {\n var\n $choice = $(this),\n optionText = module.get.choiceText($choice),\n optionValue = module.get.choiceValue($choice, optionText)\n ;\n // safe early exit\n if(optionValue === null || optionValue === undefined) {\n return;\n }\n if(isMultiple) {\n if($.inArray( String(optionValue), value) !== -1 || $.inArray(optionText, value) !== -1) {\n $selectedItem = ($selectedItem)\n ? $selectedItem.add($choice)\n : $choice\n ;\n }\n }\n else if(strict) {\n module.verbose('Ambiguous dropdown value using strict type check', $choice, value);\n if( optionValue === value || optionText === value) {\n $selectedItem = $choice;\n return true;\n }\n }\n else {\n if( String(optionValue) == String(value) || optionText == value) {\n module.verbose('Found select item by value', optionValue, value);\n $selectedItem = $choice;\n return true;\n }\n }\n })\n ;\n }\n return $selectedItem;\n }\n },\n\n check: {\n maxSelections: function(selectionCount) {\n if(settings.maxSelections) {\n selectionCount = (selectionCount !== undefined)\n ? selectionCount\n : module.get.selectionCount()\n ;\n if(selectionCount >= settings.maxSelections) {\n module.debug('Maximum selection count reached');\n if(settings.useLabels) {\n $item.addClass(className.filtered);\n module.add.message(message.maxSelections);\n }\n return true;\n }\n else {\n module.verbose('No longer at maximum selection count');\n module.remove.message();\n module.remove.filteredItem();\n if(module.is.searchSelection()) {\n module.filterItems();\n }\n return false;\n }\n }\n return true;\n }\n },\n\n restore: {\n defaults: function() {\n module.clear();\n module.restore.defaultText();\n module.restore.defaultValue();\n },\n defaultText: function() {\n var\n defaultText = module.get.defaultText(),\n placeholderText = module.get.placeholderText\n ;\n if(defaultText === placeholderText) {\n module.debug('Restoring default placeholder text', defaultText);\n module.set.placeholderText(defaultText);\n }\n else {\n module.debug('Restoring default text', defaultText);\n module.set.text(defaultText);\n }\n },\n placeholderText: function() {\n module.set.placeholderText();\n },\n defaultValue: function() {\n var\n defaultValue = module.get.defaultValue()\n ;\n if(defaultValue !== undefined) {\n module.debug('Restoring default value', defaultValue);\n if(defaultValue !== '') {\n module.set.value(defaultValue);\n module.set.selected();\n }\n else {\n module.remove.activeItem();\n module.remove.selectedItem();\n }\n }\n },\n labels: function() {\n if(settings.allowAdditions) {\n if(!settings.useLabels) {\n module.error(error.labels);\n settings.useLabels = true;\n }\n module.debug('Restoring selected values');\n module.create.userLabels();\n }\n module.check.maxSelections();\n },\n selected: function() {\n module.restore.values();\n if(module.is.multiple()) {\n module.debug('Restoring previously selected values and labels');\n module.restore.labels();\n }\n else {\n module.debug('Restoring previously selected values');\n }\n },\n values: function() {\n // prevents callbacks from occurring on initial load\n module.set.initialLoad();\n if(settings.apiSettings && settings.saveRemoteData && module.get.remoteValues()) {\n module.restore.remoteValues();\n }\n else {\n module.set.selected();\n }\n module.remove.initialLoad();\n },\n remoteValues: function() {\n var\n values = module.get.remoteValues()\n ;\n module.debug('Recreating selected from session data', values);\n if(values) {\n if( module.is.single() ) {\n $.each(values, function(value, name) {\n module.set.text(name);\n });\n }\n else {\n $.each(values, function(value, name) {\n module.add.label(value, name);\n });\n }\n }\n }\n },\n\n read: {\n remoteData: function(value) {\n var\n name\n ;\n if(window.Storage === undefined) {\n module.error(error.noStorage);\n return;\n }\n name = sessionStorage.getItem(value);\n return (name !== undefined)\n ? name\n : false\n ;\n }\n },\n\n save: {\n defaults: function() {\n module.save.defaultText();\n module.save.placeholderText();\n module.save.defaultValue();\n },\n defaultValue: function() {\n var\n value = module.get.value()\n ;\n module.verbose('Saving default value as', value);\n $module.data(metadata.defaultValue, value);\n },\n defaultText: function() {\n var\n text = module.get.text()\n ;\n module.verbose('Saving default text as', text);\n $module.data(metadata.defaultText, text);\n },\n placeholderText: function() {\n var\n text\n ;\n if(settings.placeholder !== false && $text.hasClass(className.placeholder)) {\n text = module.get.text();\n module.verbose('Saving placeholder text as', text);\n $module.data(metadata.placeholderText, text);\n }\n },\n remoteData: function(name, value) {\n if(window.Storage === undefined) {\n module.error(error.noStorage);\n return;\n }\n module.verbose('Saving remote data to session storage', value, name);\n sessionStorage.setItem(value, name);\n }\n },\n\n clear: function() {\n if(module.is.multiple() && settings.useLabels) {\n module.remove.labels();\n }\n else {\n module.remove.activeItem();\n module.remove.selectedItem();\n }\n module.set.placeholderText();\n module.clearValue();\n },\n\n clearValue: function() {\n module.set.value('');\n },\n\n scrollPage: function(direction, $selectedItem) {\n var\n $currentItem = $selectedItem || module.get.selectedItem(),\n $menu = $currentItem.closest(selector.menu),\n menuHeight = $menu.outerHeight(),\n currentScroll = $menu.scrollTop(),\n itemHeight = $item.eq(0).outerHeight(),\n itemsPerPage = Math.floor(menuHeight / itemHeight),\n maxScroll = $menu.prop('scrollHeight'),\n newScroll = (direction == 'up')\n ? currentScroll - (itemHeight * itemsPerPage)\n : currentScroll + (itemHeight * itemsPerPage),\n $selectableItem = $item.not(selector.unselectable),\n isWithinRange,\n $nextSelectedItem,\n elementIndex\n ;\n elementIndex = (direction == 'up')\n ? $selectableItem.index($currentItem) - itemsPerPage\n : $selectableItem.index($currentItem) + itemsPerPage\n ;\n isWithinRange = (direction == 'up')\n ? (elementIndex >= 0)\n : (elementIndex < $selectableItem.length)\n ;\n $nextSelectedItem = (isWithinRange)\n ? $selectableItem.eq(elementIndex)\n : (direction == 'up')\n ? $selectableItem.first()\n : $selectableItem.last()\n ;\n if($nextSelectedItem.length > 0) {\n module.debug('Scrolling page', direction, $nextSelectedItem);\n $currentItem\n .removeClass(className.selected)\n ;\n $nextSelectedItem\n .addClass(className.selected)\n ;\n if(settings.selectOnKeydown && module.is.single()) {\n module.set.selectedItem($nextSelectedItem);\n }\n $menu\n .scrollTop(newScroll)\n ;\n }\n },\n\n set: {\n filtered: function() {\n var\n isMultiple = module.is.multiple(),\n isSearch = module.is.searchSelection(),\n isSearchMultiple = (isMultiple && isSearch),\n searchValue = (isSearch)\n ? module.get.query()\n : '',\n hasSearchValue = (typeof searchValue === 'string' && searchValue.length > 0),\n searchWidth = module.get.searchWidth(),\n valueIsSet = searchValue !== ''\n ;\n if(isMultiple && hasSearchValue) {\n module.verbose('Adjusting input width', searchWidth, settings.glyphWidth);\n $search.css('width', searchWidth);\n }\n if(hasSearchValue || (isSearchMultiple && valueIsSet)) {\n module.verbose('Hiding placeholder text');\n $text.addClass(className.filtered);\n }\n else if(!isMultiple || (isSearchMultiple && !valueIsSet)) {\n module.verbose('Showing placeholder text');\n $text.removeClass(className.filtered);\n }\n },\n empty: function() {\n $module.addClass(className.empty);\n },\n loading: function() {\n $module.addClass(className.loading);\n },\n placeholderText: function(text) {\n text = text || module.get.placeholderText();\n module.debug('Setting placeholder text', text);\n module.set.text(text);\n $text.addClass(className.placeholder);\n },\n tabbable: function() {\n if( module.has.search() ) {\n module.debug('Added tabindex to searchable dropdown');\n $search\n .val('')\n .attr('tabindex', 0)\n ;\n $menu\n .attr('tabindex', -1)\n ;\n }\n else {\n module.debug('Added tabindex to dropdown');\n if( $module.attr('tabindex') === undefined) {\n $module\n .attr('tabindex', 0)\n ;\n $menu\n .attr('tabindex', -1)\n ;\n }\n }\n },\n initialLoad: function() {\n module.verbose('Setting initial load');\n initialLoad = true;\n },\n activeItem: function($item) {\n if( settings.allowAdditions && $item.filter(selector.addition).length > 0 ) {\n $item.addClass(className.filtered);\n }\n else {\n $item.addClass(className.active);\n }\n },\n partialSearch: function(text) {\n var\n length = module.get.query().length\n ;\n $search.val( text.substr(0 , length));\n },\n scrollPosition: function($item, forceScroll) {\n var\n edgeTolerance = 5,\n $menu,\n hasActive,\n offset,\n itemHeight,\n itemOffset,\n menuOffset,\n menuScroll,\n menuHeight,\n abovePage,\n belowPage\n ;\n\n $item = $item || module.get.selectedItem();\n $menu = $item.closest(selector.menu);\n hasActive = ($item && $item.length > 0);\n forceScroll = (forceScroll !== undefined)\n ? forceScroll\n : false\n ;\n if($item && $menu.length > 0 && hasActive) {\n itemOffset = $item.position().top;\n\n $menu.addClass(className.loading);\n menuScroll = $menu.scrollTop();\n menuOffset = $menu.offset().top;\n itemOffset = $item.offset().top;\n offset = menuScroll - menuOffset + itemOffset;\n if(!forceScroll) {\n menuHeight = $menu.height();\n belowPage = menuScroll + menuHeight < (offset + edgeTolerance);\n abovePage = ((offset - edgeTolerance) < menuScroll);\n }\n module.debug('Scrolling to active item', offset);\n if(forceScroll || abovePage || belowPage) {\n $menu.scrollTop(offset);\n }\n $menu.removeClass(className.loading);\n }\n },\n text: function(text) {\n if(settings.action !== 'select') {\n if(settings.action == 'combo') {\n module.debug('Changing combo button text', text, $combo);\n if(settings.preserveHTML) {\n $combo.html(text);\n }\n else {\n $combo.text(text);\n }\n }\n else {\n if(text !== module.get.placeholderText()) {\n $text.removeClass(className.placeholder);\n }\n module.debug('Changing text', text, $text);\n $text\n .removeClass(className.filtered)\n ;\n if(settings.preserveHTML) {\n $text.html(text);\n }\n else {\n $text.text(text);\n }\n }\n }\n },\n selectedItem: function($item) {\n var\n value = module.get.choiceValue($item),\n text = module.get.choiceText($item, false)\n ;\n module.debug('Setting user selection to item', $item);\n module.remove.activeItem();\n module.set.partialSearch(text);\n module.set.activeItem($item);\n module.set.selected(value, $item);\n module.set.text(text);\n },\n selectedLetter: function(letter) {\n var\n $selectedItem = $item.filter('.' + className.selected),\n alreadySelectedLetter = $selectedItem.length > 0 && module.has.firstLetter($selectedItem, letter),\n $nextValue = false,\n $nextItem\n ;\n // check next of same letter\n if(alreadySelectedLetter) {\n $nextItem = $selectedItem.nextAll($item).eq(0);\n if( module.has.firstLetter($nextItem, letter) ) {\n $nextValue = $nextItem;\n }\n }\n // check all values\n if(!$nextValue) {\n $item\n .each(function(){\n if(module.has.firstLetter($(this), letter)) {\n $nextValue = $(this);\n return false;\n }\n })\n ;\n }\n // set next value\n if($nextValue) {\n module.verbose('Scrolling to next value with letter', letter);\n module.set.scrollPosition($nextValue);\n $selectedItem.removeClass(className.selected);\n $nextValue.addClass(className.selected);\n if(settings.selectOnKeydown && module.is.single()) {\n module.set.selectedItem($nextValue);\n }\n }\n },\n direction: function($menu) {\n if(settings.direction == 'auto') {\n if(module.is.onScreen($menu)) {\n module.remove.upward($menu);\n }\n else {\n module.set.upward($menu);\n }\n }\n else if(settings.direction == 'upward') {\n module.set.upward($menu);\n }\n },\n upward: function($menu) {\n var $element = $menu || $module;\n $element.addClass(className.upward);\n },\n value: function(value, text, $selected) {\n var\n escapedValue = module.escape.value(value),\n hasInput = ($input.length > 0),\n isAddition = !module.has.value(value),\n currentValue = module.get.values(),\n stringValue = (value !== undefined)\n ? String(value)\n : value,\n newValue\n ;\n if(hasInput) {\n if(!settings.allowReselection && stringValue == currentValue) {\n module.verbose('Skipping value update already same value', value, currentValue);\n if(!module.is.initialLoad()) {\n return;\n }\n }\n\n if( module.is.single() && module.has.selectInput() && module.can.extendSelect() ) {\n module.debug('Adding user option', value);\n module.add.optionValue(value);\n }\n module.debug('Updating input value', escapedValue, currentValue);\n internalChange = true;\n $input\n .val(escapedValue)\n ;\n if(settings.fireOnInit === false && module.is.initialLoad()) {\n module.debug('Input native change event ignored on initial load');\n }\n else {\n module.trigger.change();\n }\n internalChange = false;\n }\n else {\n module.verbose('Storing value in metadata', escapedValue, $input);\n if(escapedValue !== currentValue) {\n $module.data(metadata.value, stringValue);\n }\n }\n if(settings.fireOnInit === false && module.is.initialLoad()) {\n module.verbose('No callback on initial load', settings.onChange);\n }\n else {\n settings.onChange.call(element, value, text, $selected);\n }\n },\n active: function() {\n $module\n .addClass(className.active)\n ;\n },\n multiple: function() {\n $module.addClass(className.multiple);\n },\n visible: function() {\n $module.addClass(className.visible);\n },\n exactly: function(value, $selectedItem) {\n module.debug('Setting selected to exact values');\n module.clear();\n module.set.selected(value, $selectedItem);\n },\n selected: function(value, $selectedItem) {\n var\n isMultiple = module.is.multiple(),\n $userSelectedItem\n ;\n $selectedItem = (settings.allowAdditions)\n ? $selectedItem || module.get.itemWithAdditions(value)\n : $selectedItem || module.get.item(value)\n ;\n if(!$selectedItem) {\n return;\n }\n module.debug('Setting selected menu item to', $selectedItem);\n if(module.is.multiple()) {\n module.remove.searchWidth();\n }\n if(module.is.single()) {\n module.remove.activeItem();\n module.remove.selectedItem();\n }\n else if(settings.useLabels) {\n module.remove.selectedItem();\n }\n // select each item\n $selectedItem\n .each(function() {\n var\n $selected = $(this),\n selectedText = module.get.choiceText($selected),\n selectedValue = module.get.choiceValue($selected, selectedText),\n\n isFiltered = $selected.hasClass(className.filtered),\n isActive = $selected.hasClass(className.active),\n isUserValue = $selected.hasClass(className.addition),\n shouldAnimate = (isMultiple && $selectedItem.length == 1)\n ;\n if(isMultiple) {\n if(!isActive || isUserValue) {\n if(settings.apiSettings && settings.saveRemoteData) {\n module.save.remoteData(selectedText, selectedValue);\n }\n if(settings.useLabels) {\n module.add.value(selectedValue, selectedText, $selected);\n module.add.label(selectedValue, selectedText, shouldAnimate);\n module.set.activeItem($selected);\n module.filterActive();\n module.select.nextAvailable($selectedItem);\n }\n else {\n module.add.value(selectedValue, selectedText, $selected);\n module.set.text(module.add.variables(message.count));\n module.set.activeItem($selected);\n }\n }\n else if(!isFiltered) {\n module.debug('Selected active value, removing label');\n module.remove.selected(selectedValue);\n }\n }\n else {\n if(settings.apiSettings && settings.saveRemoteData) {\n module.save.remoteData(selectedText, selectedValue);\n }\n module.set.text(selectedText);\n module.set.value(selectedValue, selectedText, $selected);\n $selected\n .addClass(className.active)\n .addClass(className.selected)\n ;\n }\n })\n ;\n }\n },\n\n add: {\n label: function(value, text, shouldAnimate) {\n var\n $next = module.is.searchSelection()\n ? $search\n : $text,\n escapedValue = module.escape.value(value),\n $label\n ;\n $label = $('<a />')\n .addClass(className.label)\n .attr('data-value', escapedValue)\n .html(templates.label(escapedValue, text))\n ;\n $label = settings.onLabelCreate.call($label, escapedValue, text);\n\n if(module.has.label(value)) {\n module.debug('Label already exists, skipping', escapedValue);\n return;\n }\n if(settings.label.variation) {\n $label.addClass(settings.label.variation);\n }\n if(shouldAnimate === true) {\n module.debug('Animating in label', $label);\n $label\n .addClass(className.hidden)\n .insertBefore($next)\n .transition(settings.label.transition, settings.label.duration)\n ;\n }\n else {\n module.debug('Adding selection label', $label);\n $label\n .insertBefore($next)\n ;\n }\n },\n message: function(message) {\n var\n $message = $menu.children(selector.message),\n html = settings.templates.message(module.add.variables(message))\n ;\n if($message.length > 0) {\n $message\n .html(html)\n ;\n }\n else {\n $message = $('<div/>')\n .html(html)\n .addClass(className.message)\n .appendTo($menu)\n ;\n }\n },\n optionValue: function(value) {\n var\n escapedValue = module.escape.value(value),\n $option = $input.find('option[value=\"' + escapedValue + '\"]'),\n hasOption = ($option.length > 0)\n ;\n if(hasOption) {\n return;\n }\n // temporarily disconnect observer\n module.disconnect.selectObserver();\n if( module.is.single() ) {\n module.verbose('Removing previous user addition');\n $input.find('option.' + className.addition).remove();\n }\n $('<option/>')\n .prop('value', escapedValue)\n .addClass(className.addition)\n .html(value)\n .appendTo($input)\n ;\n module.verbose('Adding user addition as an <option>', value);\n module.observe.select();\n },\n userSuggestion: function(value) {\n var\n $addition = $menu.children(selector.addition),\n $existingItem = module.get.item(value),\n alreadyHasValue = $existingItem && $existingItem.not(selector.addition).length,\n hasUserSuggestion = $addition.length > 0,\n html\n ;\n if(settings.useLabels && module.has.maxSelections()) {\n return;\n }\n if(value === '' || alreadyHasValue) {\n $addition.remove();\n return;\n }\n if(hasUserSuggestion) {\n $addition\n .data(metadata.value, value)\n .data(metadata.text, value)\n .attr('data-' + metadata.value, value)\n .attr('data-' + metadata.text, value)\n .removeClass(className.filtered)\n ;\n if(!settings.hideAdditions) {\n html = settings.templates.addition( module.add.variables(message.addResult, value) );\n $addition\n .html(html)\n ;\n }\n module.verbose('Replacing user suggestion with new value', $addition);\n }\n else {\n $addition = module.create.userChoice(value);\n $addition\n .prependTo($menu)\n ;\n module.verbose('Adding item choice to menu corresponding with user choice addition', $addition);\n }\n if(!settings.hideAdditions || module.is.allFiltered()) {\n $addition\n .addClass(className.selected)\n .siblings()\n .removeClass(className.selected)\n ;\n }\n module.refreshItems();\n },\n variables: function(message, term) {\n var\n hasCount = (message.search('{count}') !== -1),\n hasMaxCount = (message.search('{maxCount}') !== -1),\n hasTerm = (message.search('{term}') !== -1),\n values,\n count,\n query\n ;\n module.verbose('Adding templated variables to message', message);\n if(hasCount) {\n count = module.get.selectionCount();\n message = message.replace('{count}', count);\n }\n if(hasMaxCount) {\n count = module.get.selectionCount();\n message = message.replace('{maxCount}', settings.maxSelections);\n }\n if(hasTerm) {\n query = term || module.get.query();\n message = message.replace('{term}', query);\n }\n return message;\n },\n value: function(addedValue, addedText, $selectedItem) {\n var\n currentValue = module.get.values(),\n newValue\n ;\n if(addedValue === '') {\n module.debug('Cannot select blank values from multiselect');\n return;\n }\n // extend current array\n if($.isArray(currentValue)) {\n newValue = currentValue.concat([addedValue]);\n newValue = module.get.uniqueArray(newValue);\n }\n else {\n newValue = [addedValue];\n }\n // add values\n if( module.has.selectInput() ) {\n if(module.can.extendSelect()) {\n module.debug('Adding value to select', addedValue, newValue, $input);\n module.add.optionValue(addedValue);\n }\n }\n else {\n newValue = newValue.join(settings.delimiter);\n module.debug('Setting hidden input to delimited value', newValue, $input);\n }\n\n if(settings.fireOnInit === false && module.is.initialLoad()) {\n module.verbose('Skipping onadd callback on initial load', settings.onAdd);\n }\n else {\n settings.onAdd.call(element, addedValue, addedText, $selectedItem);\n }\n module.set.value(newValue, addedValue, addedText, $selectedItem);\n module.check.maxSelections();\n }\n },\n\n remove: {\n active: function() {\n $module.removeClass(className.active);\n },\n activeLabel: function() {\n $module.find(selector.label).removeClass(className.active);\n },\n empty: function() {\n $module.removeClass(className.empty);\n },\n loading: function() {\n $module.removeClass(className.loading);\n },\n initialLoad: function() {\n initialLoad = false;\n },\n upward: function($menu) {\n var $element = $menu || $module;\n $element.removeClass(className.upward);\n },\n visible: function() {\n $module.removeClass(className.visible);\n },\n activeItem: function() {\n $item.removeClass(className.active);\n },\n filteredItem: function() {\n if(settings.useLabels && module.has.maxSelections() ) {\n return;\n }\n if(settings.useLabels && module.is.multiple()) {\n $item.not('.' + className.active).removeClass(className.filtered);\n }\n else {\n $item.removeClass(className.filtered);\n }\n module.remove.empty();\n },\n optionValue: function(value) {\n var\n escapedValue = module.escape.value(value),\n $option = $input.find('option[value=\"' + escapedValue + '\"]'),\n hasOption = ($option.length > 0)\n ;\n if(!hasOption || !$option.hasClass(className.addition)) {\n return;\n }\n // temporarily disconnect observer\n if(selectObserver) {\n selectObserver.disconnect();\n module.verbose('Temporarily disconnecting mutation observer');\n }\n $option.remove();\n module.verbose('Removing user addition as an <option>', escapedValue);\n if(selectObserver) {\n selectObserver.observe($input[0], {\n childList : true,\n subtree : true\n });\n }\n },\n message: function() {\n $menu.children(selector.message).remove();\n },\n searchWidth: function() {\n $search.css('width', '');\n },\n searchTerm: function() {\n module.verbose('Cleared search term');\n $search.val('');\n module.set.filtered();\n },\n userAddition: function() {\n $item.filter(selector.addition).remove();\n },\n selected: function(value, $selectedItem) {\n $selectedItem = (settings.allowAdditions)\n ? $selectedItem || module.get.itemWithAdditions(value)\n : $selectedItem || module.get.item(value)\n ;\n\n if(!$selectedItem) {\n return false;\n }\n\n $selectedItem\n .each(function() {\n var\n $selected = $(this),\n selectedText = module.get.choiceText($selected),\n selectedValue = module.get.choiceValue($selected, selectedText)\n ;\n if(module.is.multiple()) {\n if(settings.useLabels) {\n module.remove.value(selectedValue, selectedText, $selected);\n module.remove.label(selectedValue);\n }\n else {\n module.remove.value(selectedValue, selectedText, $selected);\n if(module.get.selectionCount() === 0) {\n module.set.placeholderText();\n }\n else {\n module.set.text(module.add.variables(message.count));\n }\n }\n }\n else {\n module.remove.value(selectedValue, selectedText, $selected);\n }\n $selected\n .removeClass(className.filtered)\n .removeClass(className.active)\n ;\n if(settings.useLabels) {\n $selected.removeClass(className.selected);\n }\n })\n ;\n },\n selectedItem: function() {\n $item.removeClass(className.selected);\n },\n value: function(removedValue, removedText, $removedItem) {\n var\n values = module.get.values(),\n newValue\n ;\n if( module.has.selectInput() ) {\n module.verbose('Input is <select> removing selected option', removedValue);\n newValue = module.remove.arrayValue(removedValue, values);\n module.remove.optionValue(removedValue);\n }\n else {\n module.verbose('Removing from delimited values', removedValue);\n newValue = module.remove.arrayValue(removedValue, values);\n newValue = newValue.join(settings.delimiter);\n }\n if(settings.fireOnInit === false && module.is.initialLoad()) {\n module.verbose('No callback on initial load', settings.onRemove);\n }\n else {\n settings.onRemove.call(element, removedValue, removedText, $removedItem);\n }\n module.set.value(newValue, removedText, $removedItem);\n module.check.maxSelections();\n },\n arrayValue: function(removedValue, values) {\n if( !$.isArray(values) ) {\n values = [values];\n }\n values = $.grep(values, function(value){\n return (removedValue != value);\n });\n module.verbose('Removed value from delimited string', removedValue, values);\n return values;\n },\n label: function(value, shouldAnimate) {\n var\n $labels = $module.find(selector.label),\n $removedLabel = $labels.filter('[data-value=\"' + value +'\"]')\n ;\n module.verbose('Removing label', $removedLabel);\n $removedLabel.remove();\n },\n activeLabels: function($activeLabels) {\n $activeLabels = $activeLabels || $module.find(selector.label).filter('.' + className.active);\n module.verbose('Removing active label selections', $activeLabels);\n module.remove.labels($activeLabels);\n },\n labels: function($labels) {\n $labels = $labels || $module.find(selector.label);\n module.verbose('Removing labels', $labels);\n $labels\n .each(function(){\n var\n $label = $(this),\n value = $label.data(metadata.value),\n stringValue = (value !== undefined)\n ? String(value)\n : value,\n isUserValue = module.is.userValue(stringValue)\n ;\n if(settings.onLabelRemove.call($label, value) === false) {\n module.debug('Label remove callback cancelled removal');\n return;\n }\n module.remove.message();\n if(isUserValue) {\n module.remove.value(stringValue);\n module.remove.label(stringValue);\n }\n else {\n // selected will also remove label\n module.remove.selected(stringValue);\n }\n })\n ;\n },\n tabbable: function() {\n if( module.has.search() ) {\n module.debug('Searchable dropdown initialized');\n $search\n .removeAttr('tabindex')\n ;\n $menu\n .removeAttr('tabindex')\n ;\n }\n else {\n module.debug('Simple selection dropdown initialized');\n $module\n .removeAttr('tabindex')\n ;\n $menu\n .removeAttr('tabindex')\n ;\n }\n }\n },\n\n has: {\n menuSearch: function() {\n return (module.has.search() && $search.closest($menu).length > 0);\n },\n search: function() {\n return ($search.length > 0);\n },\n sizer: function() {\n return ($sizer.length > 0);\n },\n selectInput: function() {\n return ( $input.is('select') );\n },\n minCharacters: function(searchTerm) {\n if(settings.minCharacters) {\n searchTerm = (searchTerm !== undefined)\n ? String(searchTerm)\n : String(module.get.query())\n ;\n return (searchTerm.length >= settings.minCharacters);\n }\n return true;\n },\n firstLetter: function($item, letter) {\n var\n text,\n firstLetter\n ;\n if(!$item || $item.length === 0 || typeof letter !== 'string') {\n return false;\n }\n text = module.get.choiceText($item, false);\n letter = letter.toLowerCase();\n firstLetter = String(text).charAt(0).toLowerCase();\n return (letter == firstLetter);\n },\n input: function() {\n return ($input.length > 0);\n },\n items: function() {\n return ($item.length > 0);\n },\n menu: function() {\n return ($menu.length > 0);\n },\n message: function() {\n return ($menu.children(selector.message).length !== 0);\n },\n label: function(value) {\n var\n escapedValue = module.escape.value(value),\n $labels = $module.find(selector.label)\n ;\n return ($labels.filter('[data-value=\"' + escapedValue +'\"]').length > 0);\n },\n maxSelections: function() {\n return (settings.maxSelections && module.get.selectionCount() >= settings.maxSelections);\n },\n allResultsFiltered: function() {\n var\n $normalResults = $item.not(selector.addition)\n ;\n return ($normalResults.filter(selector.unselectable).length === $normalResults.length);\n },\n userSuggestion: function() {\n return ($menu.children(selector.addition).length > 0);\n },\n query: function() {\n return (module.get.query() !== '');\n },\n value: function(value) {\n var\n values = module.get.values(),\n hasValue = $.isArray(values)\n ? values && ($.inArray(value, values) !== -1)\n : (values == value)\n ;\n return (hasValue)\n ? true\n : false\n ;\n }\n },\n\n is: {\n active: function() {\n return $module.hasClass(className.active);\n },\n bubbledLabelClick: function(event) {\n return $(event.target).is('select, input') && $module.closest('label').length > 0;\n },\n bubbledIconClick: function(event) {\n return $(event.target).closest($icon).length > 0;\n },\n alreadySetup: function() {\n return ($module.is('select') && $module.parent(selector.dropdown).length > 0 && $module.prev().length === 0);\n },\n animating: function($subMenu) {\n return ($subMenu)\n ? $subMenu.transition && $subMenu.transition('is animating')\n : $menu.transition && $menu.transition('is animating')\n ;\n },\n disabled: function() {\n return $module.hasClass(className.disabled);\n },\n focused: function() {\n return (document.activeElement === $module[0]);\n },\n focusedOnSearch: function() {\n return (document.activeElement === $search[0]);\n },\n allFiltered: function() {\n return( (module.is.multiple() || module.has.search()) && !(settings.hideAdditions == false && module.has.userSuggestion()) && !module.has.message() && module.has.allResultsFiltered() );\n },\n hidden: function($subMenu) {\n return !module.is.visible($subMenu);\n },\n initialLoad: function() {\n return initialLoad;\n },\n onScreen: function($subMenu) {\n var\n $currentMenu = $subMenu || $menu,\n canOpenDownward = true,\n onScreen = {},\n calculations\n ;\n $currentMenu.addClass(className.loading);\n calculations = {\n context: {\n scrollTop : $context.scrollTop(),\n height : $context.outerHeight()\n },\n menu : {\n offset: $currentMenu.offset(),\n height: $currentMenu.outerHeight()\n }\n };\n onScreen = {\n above : (calculations.context.scrollTop) <= calculations.menu.offset.top - calculations.menu.height,\n below : (calculations.context.scrollTop + calculations.context.height) >= calculations.menu.offset.top + calculations.menu.height\n };\n if(onScreen.below) {\n module.verbose('Dropdown can fit in context downward', onScreen);\n canOpenDownward = true;\n }\n else if(!onScreen.below && !onScreen.above) {\n module.verbose('Dropdown cannot fit in either direction, favoring downward', onScreen);\n canOpenDownward = true;\n }\n else {\n module.verbose('Dropdown cannot fit below, opening upward', onScreen);\n canOpenDownward = false;\n }\n $currentMenu.removeClass(className.loading);\n return canOpenDownward;\n },\n inObject: function(needle, object) {\n var\n found = false\n ;\n $.each(object, function(index, property) {\n if(property == needle) {\n found = true;\n return true;\n }\n });\n return found;\n },\n multiple: function() {\n return $module.hasClass(className.multiple);\n },\n single: function() {\n return !module.is.multiple();\n },\n selectMutation: function(mutations) {\n var\n selectChanged = false\n ;\n $.each(mutations, function(index, mutation) {\n if(mutation.target && $(mutation.target).is('select')) {\n selectChanged = true;\n return true;\n }\n });\n return selectChanged;\n },\n search: function() {\n return $module.hasClass(className.search);\n },\n searchSelection: function() {\n return ( module.has.search() && $search.parent(selector.dropdown).length === 1 );\n },\n selection: function() {\n return $module.hasClass(className.selection);\n },\n userValue: function(value) {\n return ($.inArray(value, module.get.userValues()) !== -1);\n },\n upward: function($menu) {\n var $element = $menu || $module;\n return $element.hasClass(className.upward);\n },\n visible: function($subMenu) {\n return ($subMenu)\n ? $subMenu.hasClass(className.visible)\n : $menu.hasClass(className.visible)\n ;\n }\n },\n\n can: {\n activate: function($item) {\n if(settings.useLabels) {\n return true;\n }\n if(!module.has.maxSelections()) {\n return true;\n }\n if(module.has.maxSelections() && $item.hasClass(className.active)) {\n return true;\n }\n return false;\n },\n click: function() {\n return (hasTouch || settings.on == 'click');\n },\n extendSelect: function() {\n return settings.allowAdditions || settings.apiSettings;\n },\n show: function() {\n return !module.is.disabled() && (module.has.items() || module.has.message());\n },\n useAPI: function() {\n return $.fn.api !== undefined;\n }\n },\n\n animate: {\n show: function(callback, $subMenu) {\n var\n $currentMenu = $subMenu || $menu,\n start = ($subMenu)\n ? function() {}\n : function() {\n module.hideSubMenus();\n module.hideOthers();\n module.set.active();\n },\n transition\n ;\n callback = $.isFunction(callback)\n ? callback\n : function(){}\n ;\n module.verbose('Doing menu show animation', $currentMenu);\n module.set.direction($subMenu);\n transition = module.get.transition($subMenu);\n if( module.is.selection() ) {\n module.set.scrollPosition(module.get.selectedItem(), true);\n }\n if( module.is.hidden($currentMenu) || module.is.animating($currentMenu) ) {\n if(transition == 'none') {\n start();\n $currentMenu.transition('show');\n callback.call(element);\n }\n else if($.fn.transition !== undefined && $module.transition('is supported')) {\n $currentMenu\n .transition({\n animation : transition + ' in',\n debug : settings.debug,\n verbose : settings.verbose,\n duration : settings.duration,\n queue : true,\n onStart : start,\n onComplete : function() {\n callback.call(element);\n }\n })\n ;\n }\n else {\n module.error(error.noTransition, transition);\n }\n }\n },\n hide: function(callback, $subMenu) {\n var\n $currentMenu = $subMenu || $menu,\n duration = ($subMenu)\n ? (settings.duration * 0.9)\n : settings.duration,\n start = ($subMenu)\n ? function() {}\n : function() {\n if( module.can.click() ) {\n module.unbind.intent();\n }\n module.remove.active();\n },\n transition = module.get.transition($subMenu)\n ;\n callback = $.isFunction(callback)\n ? callback\n : function(){}\n ;\n if( module.is.visible($currentMenu) || module.is.animating($currentMenu) ) {\n module.verbose('Doing menu hide animation', $currentMenu);\n\n if(transition == 'none') {\n start();\n $currentMenu.transition('hide');\n callback.call(element);\n }\n else if($.fn.transition !== undefined && $module.transition('is supported')) {\n $currentMenu\n .transition({\n animation : transition + ' out',\n duration : settings.duration,\n debug : settings.debug,\n verbose : settings.verbose,\n queue : true,\n onStart : start,\n onComplete : function() {\n if(settings.direction == 'auto') {\n module.remove.upward($subMenu);\n }\n callback.call(element);\n }\n })\n ;\n }\n else {\n module.error(error.transition);\n }\n }\n }\n },\n\n hideAndClear: function() {\n module.remove.searchTerm();\n if( module.has.maxSelections() ) {\n return;\n }\n if(module.has.search()) {\n module.hide(function() {\n module.remove.filteredItem();\n });\n }\n else {\n module.hide();\n }\n },\n\n delay: {\n show: function() {\n module.verbose('Delaying show event to ensure user intent');\n clearTimeout(module.timer);\n module.timer = setTimeout(module.show, settings.delay.show);\n },\n hide: function() {\n module.verbose('Delaying hide event to ensure user intent');\n clearTimeout(module.timer);\n module.timer = setTimeout(module.hide, settings.delay.hide);\n }\n },\n\n escape: {\n value: function(value) {\n var\n multipleValues = $.isArray(value),\n stringValue = (typeof value === 'string'),\n isUnparsable = (!stringValue && !multipleValues),\n hasQuotes = (stringValue && value.search(regExp.quote) !== -1),\n values = []\n ;\n if(!module.has.selectInput() || isUnparsable || !hasQuotes) {\n return value;\n }\n module.debug('Encoding quote values for use in select', value);\n if(multipleValues) {\n $.each(value, function(index, value){\n values.push(value.replace(regExp.quote, '"'));\n });\n return values;\n }\n return value.replace(regExp.quote, '"');\n },\n regExp: function(text) {\n text = String(text);\n return text.replace(regExp.escape, '\\\\$&');\n }\n },\n\n setting: function(name, value) {\n module.debug('Changing setting', name, value);\n if( $.isPlainObject(name) ) {\n $.extend(true, settings, name);\n }\n else if(value !== undefined) {\n if($.isPlainObject(settings[name])) {\n $.extend(true, settings[name], value);\n }\n else {\n settings[name] = value;\n }\n }\n else {\n return settings[name];\n }\n },\n internal: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, module, name);\n }\n else if(value !== undefined) {\n module[name] = value;\n }\n else {\n return module[name];\n }\n },\n debug: function() {\n if(!settings.silent && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.debug.apply(console, arguments);\n }\n }\n },\n verbose: function() {\n if(!settings.silent && settings.verbose && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.verbose.apply(console, arguments);\n }\n }\n },\n error: function() {\n if(!settings.silent) {\n module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n module.error.apply(console, arguments);\n }\n },\n performance: {\n log: function(message) {\n var\n currentTime,\n executionTime,\n previousTime\n ;\n if(settings.performance) {\n currentTime = new Date().getTime();\n previousTime = time || currentTime;\n executionTime = currentTime - previousTime;\n time = currentTime;\n performance.push({\n 'Name' : message[0],\n 'Arguments' : [].slice.call(message, 1) || '',\n 'Element' : element,\n 'Execution Time' : executionTime\n });\n }\n clearTimeout(module.performance.timer);\n module.performance.timer = setTimeout(module.performance.display, 500);\n },\n display: function() {\n var\n title = settings.name + ':',\n totalTime = 0\n ;\n time = false;\n clearTimeout(module.performance.timer);\n $.each(performance, function(index, data) {\n totalTime += data['Execution Time'];\n });\n title += ' ' + totalTime + 'ms';\n if(moduleSelector) {\n title += ' \\'' + moduleSelector + '\\'';\n }\n if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n console.groupCollapsed(title);\n if(console.table) {\n console.table(performance);\n }\n else {\n $.each(performance, function(index, data) {\n console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n });\n }\n console.groupEnd();\n }\n performance = [];\n }\n },\n invoke: function(query, passedArguments, context) {\n var\n object = instance,\n maxDepth,\n found,\n response\n ;\n passedArguments = passedArguments || queryArguments;\n context = element || context;\n if(typeof query == 'string' && object !== undefined) {\n query = query.split(/[\\. ]/);\n maxDepth = query.length - 1;\n $.each(query, function(depth, value) {\n var camelCaseValue = (depth != maxDepth)\n ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n : query\n ;\n if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n object = object[camelCaseValue];\n }\n else if( object[camelCaseValue] !== undefined ) {\n found = object[camelCaseValue];\n return false;\n }\n else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n object = object[value];\n }\n else if( object[value] !== undefined ) {\n found = object[value];\n return false;\n }\n else {\n module.error(error.method, query);\n return false;\n }\n });\n }\n if ( $.isFunction( found ) ) {\n response = found.apply(context, passedArguments);\n }\n else if(found !== undefined) {\n response = found;\n }\n if($.isArray(returnedValue)) {\n returnedValue.push(response);\n }\n else if(returnedValue !== undefined) {\n returnedValue = [returnedValue, response];\n }\n else if(response !== undefined) {\n returnedValue = response;\n }\n return found;\n }\n };\n\n if(methodInvoked) {\n if(instance === undefined) {\n module.initialize();\n }\n module.invoke(query);\n }\n else {\n if(instance !== undefined) {\n instance.invoke('destroy');\n }\n module.initialize();\n }\n })\n ;\n return (returnedValue !== undefined)\n ? returnedValue\n : $allModules\n ;\n};\n\n$.fn.dropdown.settings = {\n\n silent : false,\n debug : false,\n verbose : false,\n performance : true,\n\n on : 'click', // what event should show menu action on item selection\n action : 'activate', // action on item selection (nothing, activate, select, combo, hide, function(){})\n\n\n apiSettings : false,\n selectOnKeydown : true, // Whether selection should occur automatically when keyboard shortcuts used\n minCharacters : 0, // Minimum characters required to trigger API call\n saveRemoteData : true, // Whether remote name/value pairs should be stored in sessionStorage to allow remote data to be restored on page refresh\n throttle : 200, // How long to wait after last user input to search remotely\n\n context : window, // Context to use when determining if on screen\n direction : 'auto', // Whether dropdown should always open in one direction\n keepOnScreen : true, // Whether dropdown should check whether it is on screen before showing\n\n match : 'both', // what to match against with search selection (both, text, or label)\n fullTextSearch : false, // search anywhere in value (set to 'exact' to require exact matches)\n\n placeholder : 'auto', // whether to convert blank <select> values to placeholder text\n preserveHTML : true, // preserve html when selecting value\n sortSelect : false, // sort selection on init\n\n forceSelection : true, // force a choice on blur with search selection\n\n allowAdditions : false, // whether multiple select should allow user added values\n hideAdditions : true, // whether or not to hide special message prompting a user they can enter a value\n\n maxSelections : false, // When set to a number limits the number of selections to this count\n useLabels : true, // whether multiple select should filter currently active selections from choices\n delimiter : ',', // when multiselect uses normal <input> the values will be delimited with this character\n\n showOnFocus : true, // show menu on focus\n allowReselection : false, // whether current value should trigger callbacks when reselected\n allowTab : true, // add tabindex to element\n allowCategorySelection : false, // allow elements with sub-menus to be selected\n\n fireOnInit : false, // Whether callbacks should fire when initializing dropdown values\n\n transition : 'auto', // auto transition will slide down or up based on direction\n duration : 200, // duration of transition\n\n glyphWidth : 1.037, // widest glyph width in em (W is 1.037 em) used to calculate multiselect input width\n\n // label settings on multi-select\n label: {\n transition : 'scale',\n duration : 200,\n variation : false\n },\n\n // delay before event\n delay : {\n hide : 300,\n show : 200,\n search : 20,\n touch : 50\n },\n\n /* Callbacks */\n onChange : function(value, text, $selected){},\n onAdd : function(value, text, $selected){},\n onRemove : function(value, text, $selected){},\n\n onLabelSelect : function($selectedLabels){},\n onLabelCreate : function(value, text) { return $(this); },\n onLabelRemove : function(value) { return true; },\n onNoResults : function(searchTerm) { return true; },\n onShow : function(){},\n onHide : function(){},\n\n /* Component */\n name : 'Dropdown',\n namespace : 'dropdown',\n\n message: {\n addResult : 'Add <b>{term}</b>',\n count : '{count} selected',\n maxSelections : 'Max {maxCount} selections',\n noResults : 'No results found.',\n serverError : 'There was an error contacting the server'\n },\n\n error : {\n action : 'You called a dropdown action that was not defined',\n alreadySetup : 'Once a select has been initialized behaviors must be called on the created ui dropdown',\n labels : 'Allowing user additions currently requires the use of labels.',\n missingMultiple : '<select> requires multiple property to be set to correctly preserve multiple values',\n method : 'The method you called is not defined.',\n noAPI : 'The API module is required to load resources remotely',\n noStorage : 'Saving remote data requires session storage',\n noTransition : 'This module requires ui transitions <https://github.com/Semantic-Org/UI-Transition>'\n },\n\n regExp : {\n escape : /[-[\\]{}()*+?.,\\\\^$|#\\s]/g,\n quote : /\"/g\n },\n\n metadata : {\n defaultText : 'defaultText',\n defaultValue : 'defaultValue',\n placeholderText : 'placeholder',\n text : 'text',\n value : 'value'\n },\n\n // property names for remote query\n fields: {\n remoteValues : 'results', // grouping for api results\n values : 'values', // grouping for all dropdown values\n disabled : 'disabled', // whether value should be disabled\n name : 'name', // displayed dropdown text\n value : 'value', // actual dropdown value\n text : 'text' // displayed text when selected\n },\n\n keys : {\n backspace : 8,\n delimiter : 188, // comma\n deleteKey : 46,\n enter : 13,\n escape : 27,\n pageUp : 33,\n pageDown : 34,\n leftArrow : 37,\n upArrow : 38,\n rightArrow : 39,\n downArrow : 40\n },\n\n selector : {\n addition : '.addition',\n dropdown : '.ui.dropdown',\n hidden : '.hidden',\n icon : '> .dropdown.icon',\n input : '> input[type=\"hidden\"], > select',\n item : '.item',\n label : '> .label',\n remove : '> .label > .delete.icon',\n siblingLabel : '.label',\n menu : '.menu',\n message : '.message',\n menuIcon : '.dropdown.icon',\n search : 'input.search, .menu > .search > input, .menu input.search',\n sizer : '> input.sizer',\n text : '> .text:not(.icon)',\n unselectable : '.disabled, .filtered'\n },\n\n className : {\n active : 'active',\n addition : 'addition',\n animating : 'animating',\n disabled : 'disabled',\n empty : 'empty',\n dropdown : 'ui dropdown',\n filtered : 'filtered',\n hidden : 'hidden transition',\n item : 'item',\n label : 'ui label',\n loading : 'loading',\n menu : 'menu',\n message : 'message',\n multiple : 'multiple',\n placeholder : 'default',\n sizer : 'sizer',\n search : 'search',\n selected : 'selected',\n selection : 'selection',\n upward : 'upward',\n visible : 'visible'\n }\n\n};\n\n/* Templates */\n$.fn.dropdown.settings.templates = {\n\n // generates dropdown from select values\n dropdown: function(select) {\n var\n placeholder = select.placeholder || false,\n values = select.values || {},\n html = ''\n ;\n html += '<i class=\"dropdown icon\"></i>';\n if(select.placeholder) {\n html += '<div class=\"default text\">' + placeholder + '</div>';\n }\n else {\n html += '<div class=\"text\"></div>';\n }\n html += '<div class=\"menu\">';\n $.each(select.values, function(index, option) {\n html += (option.disabled)\n ? '<div class=\"disabled item\" data-value=\"' + option.value + '\">' + option.name + '</div>'\n : '<div class=\"item\" data-value=\"' + option.value + '\">' + option.name + '</div>'\n ;\n });\n html += '</div>';\n return html;\n },\n\n // generates just menu from select\n menu: function(response, fields) {\n var\n values = response[fields.values] || {},\n html = ''\n ;\n $.each(values, function(index, option) {\n var\n maybeText = (option[fields.text])\n ? 'data-text=\"' + option[fields.text] + '\"'\n : '',\n maybeDisabled = (option[fields.disabled])\n ? 'disabled '\n : ''\n ;\n html += '<div class=\"'+ maybeDisabled +'item\" data-value=\"' + option[fields.value] + '\"' + maybeText + '>'\n html += option[fields.name];\n html += '</div>';\n });\n return html;\n },\n\n // generates label for multiselect\n label: function(value, text) {\n return text + '<i class=\"delete icon\"></i>';\n },\n\n\n // generates messages like \"No results\"\n message: function(message) {\n return message;\n },\n\n // generates user addition to selection menu\n addition: function(choice) {\n return choice;\n }\n\n};\n\n})( jQuery, window, document );\n","/*!\n * # Semantic UI 2.2.6 - Embed\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n ? window\n : (typeof self != 'undefined' && self.Math == Math)\n ? self\n : Function('return this')()\n;\n\n$.fn.embed = function(parameters) {\n\n var\n $allModules = $(this),\n\n moduleSelector = $allModules.selector || '',\n\n time = new Date().getTime(),\n performance = [],\n\n query = arguments[0],\n methodInvoked = (typeof query == 'string'),\n queryArguments = [].slice.call(arguments, 1),\n\n returnedValue\n ;\n\n $allModules\n .each(function() {\n var\n settings = ( $.isPlainObject(parameters) )\n ? $.extend(true, {}, $.fn.embed.settings, parameters)\n : $.extend({}, $.fn.embed.settings),\n\n selector = settings.selector,\n className = settings.className,\n sources = settings.sources,\n error = settings.error,\n metadata = settings.metadata,\n namespace = settings.namespace,\n templates = settings.templates,\n\n eventNamespace = '.' + namespace,\n moduleNamespace = 'module-' + namespace,\n\n $window = $(window),\n $module = $(this),\n $placeholder = $module.find(selector.placeholder),\n $icon = $module.find(selector.icon),\n $embed = $module.find(selector.embed),\n\n element = this,\n instance = $module.data(moduleNamespace),\n module\n ;\n\n module = {\n\n initialize: function() {\n module.debug('Initializing embed');\n module.determine.autoplay();\n module.create();\n module.bind.events();\n module.instantiate();\n },\n\n instantiate: function() {\n module.verbose('Storing instance of module', module);\n instance = module;\n $module\n .data(moduleNamespace, module)\n ;\n },\n\n destroy: function() {\n module.verbose('Destroying previous instance of embed');\n module.reset();\n $module\n .removeData(moduleNamespace)\n .off(eventNamespace)\n ;\n },\n\n refresh: function() {\n module.verbose('Refreshing selector cache');\n $placeholder = $module.find(selector.placeholder);\n $icon = $module.find(selector.icon);\n $embed = $module.find(selector.embed);\n },\n\n bind: {\n events: function() {\n if( module.has.placeholder() ) {\n module.debug('Adding placeholder events');\n $module\n .on('click' + eventNamespace, selector.placeholder, module.createAndShow)\n .on('click' + eventNamespace, selector.icon, module.createAndShow)\n ;\n }\n }\n },\n\n create: function() {\n var\n placeholder = module.get.placeholder()\n ;\n if(placeholder) {\n module.createPlaceholder();\n }\n else {\n module.createAndShow();\n }\n },\n\n createPlaceholder: function(placeholder) {\n var\n icon = module.get.icon(),\n url = module.get.url(),\n embed = module.generate.embed(url)\n ;\n placeholder = placeholder || module.get.placeholder();\n $module.html( templates.placeholder(placeholder, icon) );\n module.debug('Creating placeholder for embed', placeholder, icon);\n },\n\n createEmbed: function(url) {\n module.refresh();\n url = url || module.get.url();\n $embed = $('<div/>')\n .addClass(className.embed)\n .html( module.generate.embed(url) )\n .appendTo($module)\n ;\n settings.onCreate.call(element, url);\n module.debug('Creating embed object', $embed);\n },\n\n changeEmbed: function(url) {\n $embed\n .html( module.generate.embed(url) )\n ;\n },\n\n createAndShow: function() {\n module.createEmbed();\n module.show();\n },\n\n // sets new embed\n change: function(source, id, url) {\n module.debug('Changing video to ', source, id, url);\n $module\n .data(metadata.source, source)\n .data(metadata.id, id)\n ;\n if(url) {\n $module.data(metadata.url, url);\n }\n else {\n $module.removeData(metadata.url);\n }\n if(module.has.embed()) {\n module.changeEmbed();\n }\n else {\n module.create();\n }\n },\n\n // clears embed\n reset: function() {\n module.debug('Clearing embed and showing placeholder');\n module.remove.active();\n module.remove.embed();\n module.showPlaceholder();\n settings.onReset.call(element);\n },\n\n // shows current embed\n show: function() {\n module.debug('Showing embed');\n module.set.active();\n settings.onDisplay.call(element);\n },\n\n hide: function() {\n module.debug('Hiding embed');\n module.showPlaceholder();\n },\n\n showPlaceholder: function() {\n module.debug('Showing placeholder image');\n module.remove.active();\n settings.onPlaceholderDisplay.call(element);\n },\n\n get: {\n id: function() {\n return settings.id || $module.data(metadata.id);\n },\n placeholder: function() {\n return settings.placeholder || $module.data(metadata.placeholder);\n },\n icon: function() {\n return (settings.icon)\n ? settings.icon\n : ($module.data(metadata.icon) !== undefined)\n ? $module.data(metadata.icon)\n : module.determine.icon()\n ;\n },\n source: function(url) {\n return (settings.source)\n ? settings.source\n : ($module.data(metadata.source) !== undefined)\n ? $module.data(metadata.source)\n : module.determine.source()\n ;\n },\n type: function() {\n var source = module.get.source();\n return (sources[source] !== undefined)\n ? sources[source].type\n : false\n ;\n },\n url: function() {\n return (settings.url)\n ? settings.url\n : ($module.data(metadata.url) !== undefined)\n ? $module.data(metadata.url)\n : module.determine.url()\n ;\n }\n },\n\n determine: {\n autoplay: function() {\n if(module.should.autoplay()) {\n settings.autoplay = true;\n }\n },\n source: function(url) {\n var\n matchedSource = false\n ;\n url = url || module.get.url();\n if(url) {\n $.each(sources, function(name, source) {\n if(url.search(source.domain) !== -1) {\n matchedSource = name;\n return false;\n }\n });\n }\n return matchedSource;\n },\n icon: function() {\n var\n source = module.get.source()\n ;\n return (sources[source] !== undefined)\n ? sources[source].icon\n : false\n ;\n },\n url: function() {\n var\n id = settings.id || $module.data(metadata.id),\n source = settings.source || $module.data(metadata.source),\n url\n ;\n url = (sources[source] !== undefined)\n ? sources[source].url.replace('{id}', id)\n : false\n ;\n if(url) {\n $module.data(metadata.url, url);\n }\n return url;\n }\n },\n\n\n set: {\n active: function() {\n $module.addClass(className.active);\n }\n },\n\n remove: {\n active: function() {\n $module.removeClass(className.active);\n },\n embed: function() {\n $embed.empty();\n }\n },\n\n encode: {\n parameters: function(parameters) {\n var\n urlString = [],\n index\n ;\n for (index in parameters) {\n urlString.push( encodeURIComponent(index) + '=' + encodeURIComponent( parameters[index] ) );\n }\n return urlString.join('&');\n }\n },\n\n generate: {\n embed: function(url) {\n module.debug('Generating embed html');\n var\n source = module.get.source(),\n html,\n parameters\n ;\n url = module.get.url(url);\n if(url) {\n parameters = module.generate.parameters(source);\n html = templates.iframe(url, parameters);\n }\n else {\n module.error(error.noURL, $module);\n }\n return html;\n },\n parameters: function(source, extraParameters) {\n var\n parameters = (sources[source] && sources[source].parameters !== undefined)\n ? sources[source].parameters(settings)\n : {}\n ;\n extraParameters = extraParameters || settings.parameters;\n if(extraParameters) {\n parameters = $.extend({}, parameters, extraParameters);\n }\n parameters = settings.onEmbed(parameters);\n return module.encode.parameters(parameters);\n }\n },\n\n has: {\n embed: function() {\n return ($embed.length > 0);\n },\n placeholder: function() {\n return settings.placeholder || $module.data(metadata.placeholder);\n }\n },\n\n should: {\n autoplay: function() {\n return (settings.autoplay === 'auto')\n ? (settings.placeholder || $module.data(metadata.placeholder) !== undefined)\n : settings.autoplay\n ;\n }\n },\n\n is: {\n video: function() {\n return module.get.type() == 'video';\n }\n },\n\n setting: function(name, value) {\n module.debug('Changing setting', name, value);\n if( $.isPlainObject(name) ) {\n $.extend(true, settings, name);\n }\n else if(value !== undefined) {\n if($.isPlainObject(settings[name])) {\n $.extend(true, settings[name], value);\n }\n else {\n settings[name] = value;\n }\n }\n else {\n return settings[name];\n }\n },\n internal: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, module, name);\n }\n else if(value !== undefined) {\n module[name] = value;\n }\n else {\n return module[name];\n }\n },\n debug: function() {\n if(!settings.silent && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.debug.apply(console, arguments);\n }\n }\n },\n verbose: function() {\n if(!settings.silent && settings.verbose && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.verbose.apply(console, arguments);\n }\n }\n },\n error: function() {\n if(!settings.silent) {\n module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n module.error.apply(console, arguments);\n }\n },\n performance: {\n log: function(message) {\n var\n currentTime,\n executionTime,\n previousTime\n ;\n if(settings.performance) {\n currentTime = new Date().getTime();\n previousTime = time || currentTime;\n executionTime = currentTime - previousTime;\n time = currentTime;\n performance.push({\n 'Name' : message[0],\n 'Arguments' : [].slice.call(message, 1) || '',\n 'Element' : element,\n 'Execution Time' : executionTime\n });\n }\n clearTimeout(module.performance.timer);\n module.performance.timer = setTimeout(module.performance.display, 500);\n },\n display: function() {\n var\n title = settings.name + ':',\n totalTime = 0\n ;\n time = false;\n clearTimeout(module.performance.timer);\n $.each(performance, function(index, data) {\n totalTime += data['Execution Time'];\n });\n title += ' ' + totalTime + 'ms';\n if(moduleSelector) {\n title += ' \\'' + moduleSelector + '\\'';\n }\n if($allModules.length > 1) {\n title += ' ' + '(' + $allModules.length + ')';\n }\n if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n console.groupCollapsed(title);\n if(console.table) {\n console.table(performance);\n }\n else {\n $.each(performance, function(index, data) {\n console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n });\n }\n console.groupEnd();\n }\n performance = [];\n }\n },\n invoke: function(query, passedArguments, context) {\n var\n object = instance,\n maxDepth,\n found,\n response\n ;\n passedArguments = passedArguments || queryArguments;\n context = element || context;\n if(typeof query == 'string' && object !== undefined) {\n query = query.split(/[\\. ]/);\n maxDepth = query.length - 1;\n $.each(query, function(depth, value) {\n var camelCaseValue = (depth != maxDepth)\n ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n : query\n ;\n if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n object = object[camelCaseValue];\n }\n else if( object[camelCaseValue] !== undefined ) {\n found = object[camelCaseValue];\n return false;\n }\n else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n object = object[value];\n }\n else if( object[value] !== undefined ) {\n found = object[value];\n return false;\n }\n else {\n module.error(error.method, query);\n return false;\n }\n });\n }\n if ( $.isFunction( found ) ) {\n response = found.apply(context, passedArguments);\n }\n else if(found !== undefined) {\n response = found;\n }\n if($.isArray(returnedValue)) {\n returnedValue.push(response);\n }\n else if(returnedValue !== undefined) {\n returnedValue = [returnedValue, response];\n }\n else if(response !== undefined) {\n returnedValue = response;\n }\n return found;\n }\n };\n\n if(methodInvoked) {\n if(instance === undefined) {\n module.initialize();\n }\n module.invoke(query);\n }\n else {\n if(instance !== undefined) {\n instance.invoke('destroy');\n }\n module.initialize();\n }\n })\n ;\n return (returnedValue !== undefined)\n ? returnedValue\n : this\n ;\n};\n\n$.fn.embed.settings = {\n\n name : 'Embed',\n namespace : 'embed',\n\n silent : false,\n debug : false,\n verbose : false,\n performance : true,\n\n icon : false,\n source : false,\n url : false,\n id : false,\n\n // standard video settings\n autoplay : 'auto',\n color : '#444444',\n hd : true,\n brandedUI : false,\n\n // additional parameters to include with the embed\n parameters: false,\n\n onDisplay : function() {},\n onPlaceholderDisplay : function() {},\n onReset : function() {},\n onCreate : function(url) {},\n onEmbed : function(parameters) {\n return parameters;\n },\n\n metadata : {\n id : 'id',\n icon : 'icon',\n placeholder : 'placeholder',\n source : 'source',\n url : 'url'\n },\n\n error : {\n noURL : 'No URL specified',\n method : 'The method you called is not defined'\n },\n\n className : {\n active : 'active',\n embed : 'embed'\n },\n\n selector : {\n embed : '.embed',\n placeholder : '.placeholder',\n icon : '.icon'\n },\n\n sources: {\n youtube: {\n name : 'youtube',\n type : 'video',\n icon : 'video play',\n domain : 'youtube.com',\n url : '//www.youtube.com/embed/{id}',\n parameters: function(settings) {\n return {\n autohide : !settings.brandedUI,\n autoplay : settings.autoplay,\n color : settings.color || undefined,\n hq : settings.hd,\n jsapi : settings.api,\n modestbranding : !settings.brandedUI\n };\n }\n },\n vimeo: {\n name : 'vimeo',\n type : 'video',\n icon : 'video play',\n domain : 'vimeo.com',\n url : '//player.vimeo.com/video/{id}',\n parameters: function(settings) {\n return {\n api : settings.api,\n autoplay : settings.autoplay,\n byline : settings.brandedUI,\n color : settings.color || undefined,\n portrait : settings.brandedUI,\n title : settings.brandedUI\n };\n }\n }\n },\n\n templates: {\n iframe : function(url, parameters) {\n var src = url;\n if (parameters) {\n src += '?' + parameters;\n }\n return ''\n + '<iframe src=\"' + src + '\"'\n + ' width=\"100%\" height=\"100%\"'\n + ' frameborder=\"0\" scrolling=\"no\" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>'\n ;\n },\n placeholder : function(image, icon) {\n var\n html = ''\n ;\n if(icon) {\n html += '<i class=\"' + icon + ' icon\"></i>';\n }\n if(image) {\n html += '<img class=\"placeholder\" src=\"' + image + '\">';\n }\n return html;\n }\n },\n\n // NOT YET IMPLEMENTED\n api : false,\n onPause : function() {},\n onPlay : function() {},\n onStop : function() {}\n\n};\n\n\n\n})( jQuery, window, document );\n","/*!\n * # Semantic UI 2.2.6 - Modal\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n ? window\n : (typeof self != 'undefined' && self.Math == Math)\n ? self\n : Function('return this')()\n;\n\n$.fn.modal = function(parameters) {\n var\n $allModules = $(this),\n $window = $(window),\n $document = $(document),\n $body = $('body'),\n\n moduleSelector = $allModules.selector || '',\n\n time = new Date().getTime(),\n performance = [],\n\n query = arguments[0],\n methodInvoked = (typeof query == 'string'),\n queryArguments = [].slice.call(arguments, 1),\n\n requestAnimationFrame = window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || function(callback) { setTimeout(callback, 0); },\n\n returnedValue\n ;\n\n $allModules\n .each(function() {\n var\n settings = ( $.isPlainObject(parameters) )\n ? $.extend(true, {}, $.fn.modal.settings, parameters)\n : $.extend({}, $.fn.modal.settings),\n\n selector = settings.selector,\n className = settings.className,\n namespace = settings.namespace,\n error = settings.error,\n\n eventNamespace = '.' + namespace,\n moduleNamespace = 'module-' + namespace,\n\n $module = $(this),\n $context = $(settings.context),\n $close = $module.find(selector.close),\n\n $allModals,\n $otherModals,\n $focusedElement,\n $dimmable,\n $dimmer,\n\n element = this,\n instance = $module.data(moduleNamespace),\n\n elementEventNamespace,\n id,\n observer,\n module\n ;\n module = {\n\n initialize: function() {\n module.verbose('Initializing dimmer', $context);\n\n module.create.id();\n module.create.dimmer();\n module.refreshModals();\n\n module.bind.events();\n if(settings.observeChanges) {\n module.observeChanges();\n }\n module.instantiate();\n },\n\n instantiate: function() {\n module.verbose('Storing instance of modal');\n instance = module;\n $module\n .data(moduleNamespace, instance)\n ;\n },\n\n create: {\n dimmer: function() {\n var\n defaultSettings = {\n debug : settings.debug,\n dimmerName : 'modals',\n duration : {\n show : settings.duration,\n hide : settings.duration\n }\n },\n dimmerSettings = $.extend(true, defaultSettings, settings.dimmerSettings)\n ;\n if(settings.inverted) {\n dimmerSettings.variation = (dimmerSettings.variation !== undefined)\n ? dimmerSettings.variation + ' inverted'\n : 'inverted'\n ;\n }\n if($.fn.dimmer === undefined) {\n module.error(error.dimmer);\n return;\n }\n module.debug('Creating dimmer with settings', dimmerSettings);\n $dimmable = $context.dimmer(dimmerSettings);\n if(settings.detachable) {\n module.verbose('Modal is detachable, moving content into dimmer');\n $dimmable.dimmer('add content', $module);\n }\n else {\n module.set.undetached();\n }\n if(settings.blurring) {\n $dimmable.addClass(className.blurring);\n }\n $dimmer = $dimmable.dimmer('get dimmer');\n },\n id: function() {\n id = (Math.random().toString(16) + '000000000').substr(2,8);\n elementEventNamespace = '.' + id;\n module.verbose('Creating unique id for element', id);\n }\n },\n\n destroy: function() {\n module.verbose('Destroying previous modal');\n $module\n .removeData(moduleNamespace)\n .off(eventNamespace)\n ;\n $window.off(elementEventNamespace);\n $dimmer.off(elementEventNamespace);\n $close.off(eventNamespace);\n $context.dimmer('destroy');\n },\n\n observeChanges: function() {\n if('MutationObserver' in window) {\n observer = new MutationObserver(function(mutations) {\n module.debug('DOM tree modified, refreshing');\n module.refresh();\n });\n observer.observe(element, {\n childList : true,\n subtree : true\n });\n module.debug('Setting up mutation observer', observer);\n }\n },\n\n refresh: function() {\n module.remove.scrolling();\n module.cacheSizes();\n module.set.screenHeight();\n module.set.type();\n module.set.position();\n },\n\n refreshModals: function() {\n $otherModals = $module.siblings(selector.modal);\n $allModals = $otherModals.add($module);\n },\n\n attachEvents: function(selector, event) {\n var\n $toggle = $(selector)\n ;\n event = $.isFunction(module[event])\n ? module[event]\n : module.toggle\n ;\n if($toggle.length > 0) {\n module.debug('Attaching modal events to element', selector, event);\n $toggle\n .off(eventNamespace)\n .on('click' + eventNamespace, event)\n ;\n }\n else {\n module.error(error.notFound, selector);\n }\n },\n\n bind: {\n events: function() {\n module.verbose('Attaching events');\n $module\n .on('click' + eventNamespace, selector.close, module.event.close)\n .on('click' + eventNamespace, selector.approve, module.event.approve)\n .on('click' + eventNamespace, selector.deny, module.event.deny)\n ;\n $window\n .on('resize' + elementEventNamespace, module.event.resize)\n ;\n }\n },\n\n get: {\n id: function() {\n return (Math.random().toString(16) + '000000000').substr(2,8);\n }\n },\n\n event: {\n approve: function() {\n if(settings.onApprove.call(element, $(this)) === false) {\n module.verbose('Approve callback returned false cancelling hide');\n return;\n }\n module.hide();\n },\n deny: function() {\n if(settings.onDeny.call(element, $(this)) === false) {\n module.verbose('Deny callback returned false cancelling hide');\n return;\n }\n module.hide();\n },\n close: function() {\n module.hide();\n },\n click: function(event) {\n var\n $target = $(event.target),\n isInModal = ($target.closest(selector.modal).length > 0),\n isInDOM = $.contains(document.documentElement, event.target)\n ;\n if(!isInModal && isInDOM) {\n module.debug('Dimmer clicked, hiding all modals');\n if( module.is.active() ) {\n module.remove.clickaway();\n if(settings.allowMultiple) {\n module.hide();\n }\n else {\n module.hideAll();\n }\n }\n }\n },\n debounce: function(method, delay) {\n clearTimeout(module.timer);\n module.timer = setTimeout(method, delay);\n },\n keyboard: function(event) {\n var\n keyCode = event.which,\n escapeKey = 27\n ;\n if(keyCode == escapeKey) {\n if(settings.closable) {\n module.debug('Escape key pressed hiding modal');\n module.hide();\n }\n else {\n module.debug('Escape key pressed, but closable is set to false');\n }\n event.preventDefault();\n }\n },\n resize: function() {\n if( $dimmable.dimmer('is active') ) {\n requestAnimationFrame(module.refresh);\n }\n }\n },\n\n toggle: function() {\n if( module.is.active() || module.is.animating() ) {\n module.hide();\n }\n else {\n module.show();\n }\n },\n\n show: function(callback) {\n callback = $.isFunction(callback)\n ? callback\n : function(){}\n ;\n module.refreshModals();\n module.showModal(callback);\n },\n\n hide: function(callback) {\n callback = $.isFunction(callback)\n ? callback\n : function(){}\n ;\n module.refreshModals();\n module.hideModal(callback);\n },\n\n showModal: function(callback) {\n callback = $.isFunction(callback)\n ? callback\n : function(){}\n ;\n if( module.is.animating() || !module.is.active() ) {\n\n module.showDimmer();\n module.cacheSizes();\n module.set.position();\n module.set.screenHeight();\n module.set.type();\n module.set.clickaway();\n\n if( !settings.allowMultiple && module.others.active() ) {\n module.hideOthers(module.showModal);\n }\n else {\n settings.onShow.call(element);\n if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) {\n module.debug('Showing modal with css animations');\n $module\n .transition({\n debug : settings.debug,\n animation : settings.transition + ' in',\n queue : settings.queue,\n duration : settings.duration,\n useFailSafe : true,\n onComplete : function() {\n settings.onVisible.apply(element);\n if(settings.keyboardShortcuts) {\n module.add.keyboardShortcuts();\n }\n module.save.focus();\n module.set.active();\n if(settings.autofocus) {\n module.set.autofocus();\n }\n callback();\n }\n })\n ;\n }\n else {\n module.error(error.noTransition);\n }\n }\n }\n else {\n module.debug('Modal is already visible');\n }\n },\n\n hideModal: function(callback, keepDimmed) {\n callback = $.isFunction(callback)\n ? callback\n : function(){}\n ;\n module.debug('Hiding modal');\n if(settings.onHide.call(element, $(this)) === false) {\n module.verbose('Hide callback returned false cancelling hide');\n return;\n }\n\n if( module.is.animating() || module.is.active() ) {\n if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) {\n module.remove.active();\n $module\n .transition({\n debug : settings.debug,\n animation : settings.transition + ' out',\n queue : settings.queue,\n duration : settings.duration,\n useFailSafe : true,\n onStart : function() {\n if(!module.others.active() && !keepDimmed) {\n module.hideDimmer();\n }\n if(settings.keyboardShortcuts) {\n module.remove.keyboardShortcuts();\n }\n },\n onComplete : function() {\n settings.onHidden.call(element);\n module.restore.focus();\n callback();\n }\n })\n ;\n }\n else {\n module.error(error.noTransition);\n }\n }\n },\n\n showDimmer: function() {\n if($dimmable.dimmer('is animating') || !$dimmable.dimmer('is active') ) {\n module.debug('Showing dimmer');\n $dimmable.dimmer('show');\n }\n else {\n module.debug('Dimmer already visible');\n }\n },\n\n hideDimmer: function() {\n if( $dimmable.dimmer('is animating') || ($dimmable.dimmer('is active')) ) {\n $dimmable.dimmer('hide', function() {\n module.remove.clickaway();\n module.remove.screenHeight();\n });\n }\n else {\n module.debug('Dimmer is not visible cannot hide');\n return;\n }\n },\n\n hideAll: function(callback) {\n var\n $visibleModals = $allModals.filter('.' + className.active + ', .' + className.animating)\n ;\n callback = $.isFunction(callback)\n ? callback\n : function(){}\n ;\n if( $visibleModals.length > 0 ) {\n module.debug('Hiding all visible modals');\n module.hideDimmer();\n $visibleModals\n .modal('hide modal', callback)\n ;\n }\n },\n\n hideOthers: function(callback) {\n var\n $visibleModals = $otherModals.filter('.' + className.active + ', .' + className.animating)\n ;\n callback = $.isFunction(callback)\n ? callback\n : function(){}\n ;\n if( $visibleModals.length > 0 ) {\n module.debug('Hiding other modals', $otherModals);\n $visibleModals\n .modal('hide modal', callback, true)\n ;\n }\n },\n\n others: {\n active: function() {\n return ($otherModals.filter('.' + className.active).length > 0);\n },\n animating: function() {\n return ($otherModals.filter('.' + className.animating).length > 0);\n }\n },\n\n\n add: {\n keyboardShortcuts: function() {\n module.verbose('Adding keyboard shortcuts');\n $document\n .on('keyup' + eventNamespace, module.event.keyboard)\n ;\n }\n },\n\n save: {\n focus: function() {\n $focusedElement = $(document.activeElement).blur();\n }\n },\n\n restore: {\n focus: function() {\n if($focusedElement && $focusedElement.length > 0) {\n $focusedElement.focus();\n }\n }\n },\n\n remove: {\n active: function() {\n $module.removeClass(className.active);\n },\n clickaway: function() {\n if(settings.closable) {\n $dimmer\n .off('click' + elementEventNamespace)\n ;\n }\n },\n bodyStyle: function() {\n if($body.attr('style') === '') {\n module.verbose('Removing style attribute');\n $body.removeAttr('style');\n }\n },\n screenHeight: function() {\n module.debug('Removing page height');\n $body\n .css('height', '')\n ;\n },\n keyboardShortcuts: function() {\n module.verbose('Removing keyboard shortcuts');\n $document\n .off('keyup' + eventNamespace)\n ;\n },\n scrolling: function() {\n $dimmable.removeClass(className.scrolling);\n $module.removeClass(className.scrolling);\n }\n },\n\n cacheSizes: function() {\n var\n modalHeight = $module.outerHeight()\n ;\n if(module.cache === undefined || modalHeight !== 0) {\n module.cache = {\n pageHeight : $(document).outerHeight(),\n height : modalHeight + settings.offset,\n contextHeight : (settings.context == 'body')\n ? $(window).height()\n : $dimmable.height()\n };\n }\n module.debug('Caching modal and container sizes', module.cache);\n },\n\n can: {\n fit: function() {\n return ( ( module.cache.height + (settings.padding * 2) ) < module.cache.contextHeight);\n }\n },\n\n is: {\n active: function() {\n return $module.hasClass(className.active);\n },\n animating: function() {\n return $module.transition('is supported')\n ? $module.transition('is animating')\n : $module.is(':visible')\n ;\n },\n scrolling: function() {\n return $dimmable.hasClass(className.scrolling);\n },\n modernBrowser: function() {\n // appName for IE11 reports 'Netscape' can no longer use\n return !(window.ActiveXObject || \"ActiveXObject\" in window);\n }\n },\n\n set: {\n autofocus: function() {\n var\n $inputs = $module.find('[tabindex], :input').filter(':visible'),\n $autofocus = $inputs.filter('[autofocus]'),\n $input = ($autofocus.length > 0)\n ? $autofocus.first()\n : $inputs.first()\n ;\n if($input.length > 0) {\n $input.focus();\n }\n },\n clickaway: function() {\n if(settings.closable) {\n $dimmer\n .on('click' + elementEventNamespace, module.event.click)\n ;\n }\n },\n screenHeight: function() {\n if( module.can.fit() ) {\n $body.css('height', '');\n }\n else {\n module.debug('Modal is taller than page content, resizing page height');\n $body\n .css('height', module.cache.height + (settings.padding * 2) )\n ;\n }\n },\n active: function() {\n $module.addClass(className.active);\n },\n scrolling: function() {\n $dimmable.addClass(className.scrolling);\n $module.addClass(className.scrolling);\n },\n type: function() {\n if(module.can.fit()) {\n module.verbose('Modal fits on screen');\n if(!module.others.active() && !module.others.animating()) {\n module.remove.scrolling();\n }\n }\n else {\n module.verbose('Modal cannot fit on screen setting to scrolling');\n module.set.scrolling();\n }\n },\n position: function() {\n module.verbose('Centering modal on page', module.cache);\n if(module.can.fit()) {\n $module\n .css({\n top: '',\n marginTop: -(module.cache.height / 2)\n })\n ;\n }\n else {\n $module\n .css({\n marginTop : '',\n top : $document.scrollTop()\n })\n ;\n }\n },\n undetached: function() {\n $dimmable.addClass(className.undetached);\n }\n },\n\n setting: function(name, value) {\n module.debug('Changing setting', name, value);\n if( $.isPlainObject(name) ) {\n $.extend(true, settings, name);\n }\n else if(value !== undefined) {\n if($.isPlainObject(settings[name])) {\n $.extend(true, settings[name], value);\n }\n else {\n settings[name] = value;\n }\n }\n else {\n return settings[name];\n }\n },\n internal: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, module, name);\n }\n else if(value !== undefined) {\n module[name] = value;\n }\n else {\n return module[name];\n }\n },\n debug: function() {\n if(!settings.silent && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.debug.apply(console, arguments);\n }\n }\n },\n verbose: function() {\n if(!settings.silent && settings.verbose && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.verbose.apply(console, arguments);\n }\n }\n },\n error: function() {\n if(!settings.silent) {\n module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n module.error.apply(console, arguments);\n }\n },\n performance: {\n log: function(message) {\n var\n currentTime,\n executionTime,\n previousTime\n ;\n if(settings.performance) {\n currentTime = new Date().getTime();\n previousTime = time || currentTime;\n executionTime = currentTime - previousTime;\n time = currentTime;\n performance.push({\n 'Name' : message[0],\n 'Arguments' : [].slice.call(message, 1) || '',\n 'Element' : element,\n 'Execution Time' : executionTime\n });\n }\n clearTimeout(module.performance.timer);\n module.performance.timer = setTimeout(module.performance.display, 500);\n },\n display: function() {\n var\n title = settings.name + ':',\n totalTime = 0\n ;\n time = false;\n clearTimeout(module.performance.timer);\n $.each(performance, function(index, data) {\n totalTime += data['Execution Time'];\n });\n title += ' ' + totalTime + 'ms';\n if(moduleSelector) {\n title += ' \\'' + moduleSelector + '\\'';\n }\n if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n console.groupCollapsed(title);\n if(console.table) {\n console.table(performance);\n }\n else {\n $.each(performance, function(index, data) {\n console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n });\n }\n console.groupEnd();\n }\n performance = [];\n }\n },\n invoke: function(query, passedArguments, context) {\n var\n object = instance,\n maxDepth,\n found,\n response\n ;\n passedArguments = passedArguments || queryArguments;\n context = element || context;\n if(typeof query == 'string' && object !== undefined) {\n query = query.split(/[\\. ]/);\n maxDepth = query.length - 1;\n $.each(query, function(depth, value) {\n var camelCaseValue = (depth != maxDepth)\n ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n : query\n ;\n if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n object = object[camelCaseValue];\n }\n else if( object[camelCaseValue] !== undefined ) {\n found = object[camelCaseValue];\n return false;\n }\n else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n object = object[value];\n }\n else if( object[value] !== undefined ) {\n found = object[value];\n return false;\n }\n else {\n return false;\n }\n });\n }\n if ( $.isFunction( found ) ) {\n response = found.apply(context, passedArguments);\n }\n else if(found !== undefined) {\n response = found;\n }\n if($.isArray(returnedValue)) {\n returnedValue.push(response);\n }\n else if(returnedValue !== undefined) {\n returnedValue = [returnedValue, response];\n }\n else if(response !== undefined) {\n returnedValue = response;\n }\n return found;\n }\n };\n\n if(methodInvoked) {\n if(instance === undefined) {\n module.initialize();\n }\n module.invoke(query);\n }\n else {\n if(instance !== undefined) {\n instance.invoke('destroy');\n }\n module.initialize();\n }\n })\n ;\n\n return (returnedValue !== undefined)\n ? returnedValue\n : this\n ;\n};\n\n$.fn.modal.settings = {\n\n name : 'Modal',\n namespace : 'modal',\n\n silent : false,\n debug : false,\n verbose : false,\n performance : true,\n\n observeChanges : false,\n\n allowMultiple : false,\n detachable : true,\n closable : true,\n autofocus : true,\n\n inverted : false,\n blurring : false,\n\n dimmerSettings : {\n closable : false,\n useCSS : true\n },\n\n // whether to use keyboard shortcuts\n keyboardShortcuts: true,\n\n context : 'body',\n\n queue : false,\n duration : 500,\n offset : 0,\n transition : 'scale',\n\n // padding with edge of page\n padding : 50,\n\n // called before show animation\n onShow : function(){},\n\n // called after show animation\n onVisible : function(){},\n\n // called before hide animation\n onHide : function(){ return true; },\n\n // called after hide animation\n onHidden : function(){},\n\n // called after approve selector match\n onApprove : function(){ return true; },\n\n // called after deny selector match\n onDeny : function(){ return true; },\n\n selector : {\n close : '> .close',\n approve : '.actions .positive, .actions .approve, .actions .ok',\n deny : '.actions .negative, .actions .deny, .actions .cancel',\n modal : '.ui.modal'\n },\n error : {\n dimmer : 'UI Dimmer, a required component is not included in this page',\n method : 'The method you called is not defined.',\n notFound : 'The element you specified could not be found'\n },\n className : {\n active : 'active',\n animating : 'animating',\n blurring : 'blurring',\n scrolling : 'scrolling',\n undetached : 'undetached'\n }\n};\n\n\n})( jQuery, window, document );\n","/*!\n * # Semantic UI 2.2.6 - Nag\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n ? window\n : (typeof self != 'undefined' && self.Math == Math)\n ? self\n : Function('return this')()\n;\n\n$.fn.nag = function(parameters) {\n var\n $allModules = $(this),\n moduleSelector = $allModules.selector || '',\n\n time = new Date().getTime(),\n performance = [],\n\n query = arguments[0],\n methodInvoked = (typeof query == 'string'),\n queryArguments = [].slice.call(arguments, 1),\n returnedValue\n ;\n $allModules\n .each(function() {\n var\n settings = ( $.isPlainObject(parameters) )\n ? $.extend(true, {}, $.fn.nag.settings, parameters)\n : $.extend({}, $.fn.nag.settings),\n\n className = settings.className,\n selector = settings.selector,\n error = settings.error,\n namespace = settings.namespace,\n\n eventNamespace = '.' + namespace,\n moduleNamespace = namespace + '-module',\n\n $module = $(this),\n\n $close = $module.find(selector.close),\n $context = (settings.context)\n ? $(settings.context)\n : $('body'),\n\n element = this,\n instance = $module.data(moduleNamespace),\n\n moduleOffset,\n moduleHeight,\n\n contextWidth,\n contextHeight,\n contextOffset,\n\n yOffset,\n yPosition,\n\n timer,\n module,\n\n requestAnimationFrame = window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || function(callback) { setTimeout(callback, 0); }\n ;\n module = {\n\n initialize: function() {\n module.verbose('Initializing element');\n\n $module\n .on('click' + eventNamespace, selector.close, module.dismiss)\n .data(moduleNamespace, module)\n ;\n\n if(settings.detachable && $module.parent()[0] !== $context[0]) {\n $module\n .detach()\n .prependTo($context)\n ;\n }\n\n if(settings.displayTime > 0) {\n setTimeout(module.hide, settings.displayTime);\n }\n module.show();\n },\n\n destroy: function() {\n module.verbose('Destroying instance');\n $module\n .removeData(moduleNamespace)\n .off(eventNamespace)\n ;\n },\n\n show: function() {\n if( module.should.show() && !$module.is(':visible') ) {\n module.debug('Showing nag', settings.animation.show);\n if(settings.animation.show == 'fade') {\n $module\n .fadeIn(settings.duration, settings.easing)\n ;\n }\n else {\n $module\n .slideDown(settings.duration, settings.easing)\n ;\n }\n }\n },\n\n hide: function() {\n module.debug('Showing nag', settings.animation.hide);\n if(settings.animation.show == 'fade') {\n $module\n .fadeIn(settings.duration, settings.easing)\n ;\n }\n else {\n $module\n .slideUp(settings.duration, settings.easing)\n ;\n }\n },\n\n onHide: function() {\n module.debug('Removing nag', settings.animation.hide);\n $module.remove();\n if (settings.onHide) {\n settings.onHide();\n }\n },\n\n dismiss: function(event) {\n if(settings.storageMethod) {\n module.storage.set(settings.key, settings.value);\n }\n module.hide();\n event.stopImmediatePropagation();\n event.preventDefault();\n },\n\n should: {\n show: function() {\n if(settings.persist) {\n module.debug('Persistent nag is set, can show nag');\n return true;\n }\n if( module.storage.get(settings.key) != settings.value.toString() ) {\n module.debug('Stored value is not set, can show nag', module.storage.get(settings.key));\n return true;\n }\n module.debug('Stored value is set, cannot show nag', module.storage.get(settings.key));\n return false;\n }\n },\n\n get: {\n storageOptions: function() {\n var\n options = {}\n ;\n if(settings.expires) {\n options.expires = settings.expires;\n }\n if(settings.domain) {\n options.domain = settings.domain;\n }\n if(settings.path) {\n options.path = settings.path;\n }\n return options;\n }\n },\n\n clear: function() {\n module.storage.remove(settings.key);\n },\n\n storage: {\n set: function(key, value) {\n var\n options = module.get.storageOptions()\n ;\n if(settings.storageMethod == 'localstorage' && window.localStorage !== undefined) {\n window.localStorage.setItem(key, value);\n module.debug('Value stored using local storage', key, value);\n }\n else if(settings.storageMethod == 'sessionstorage' && window.sessionStorage !== undefined) {\n window.sessionStorage.setItem(key, value);\n module.debug('Value stored using session storage', key, value);\n }\n else if($.cookie !== undefined) {\n $.cookie(key, value, options);\n module.debug('Value stored using cookie', key, value, options);\n }\n else {\n module.error(error.noCookieStorage);\n return;\n }\n },\n get: function(key, value) {\n var\n storedValue\n ;\n if(settings.storageMethod == 'localstorage' && window.localStorage !== undefined) {\n storedValue = window.localStorage.getItem(key);\n }\n else if(settings.storageMethod == 'sessionstorage' && window.sessionStorage !== undefined) {\n storedValue = window.sessionStorage.getItem(key);\n }\n // get by cookie\n else if($.cookie !== undefined) {\n storedValue = $.cookie(key);\n }\n else {\n module.error(error.noCookieStorage);\n }\n if(storedValue == 'undefined' || storedValue == 'null' || storedValue === undefined || storedValue === null) {\n storedValue = undefined;\n }\n return storedValue;\n },\n remove: function(key) {\n var\n options = module.get.storageOptions()\n ;\n if(settings.storageMethod == 'localstorage' && window.localStorage !== undefined) {\n window.localStorage.removeItem(key);\n }\n else if(settings.storageMethod == 'sessionstorage' && window.sessionStorage !== undefined) {\n window.sessionStorage.removeItem(key);\n }\n // store by cookie\n else if($.cookie !== undefined) {\n $.removeCookie(key, options);\n }\n else {\n module.error(error.noStorage);\n }\n }\n },\n\n setting: function(name, value) {\n module.debug('Changing setting', name, value);\n if( $.isPlainObject(name) ) {\n $.extend(true, settings, name);\n }\n else if(value !== undefined) {\n if($.isPlainObject(settings[name])) {\n $.extend(true, settings[name], value);\n }\n else {\n settings[name] = value;\n }\n }\n else {\n return settings[name];\n }\n },\n internal: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, module, name);\n }\n else if(value !== undefined) {\n module[name] = value;\n }\n else {\n return module[name];\n }\n },\n debug: function() {\n if(!settings.silent && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.debug.apply(console, arguments);\n }\n }\n },\n verbose: function() {\n if(!settings.silent && settings.verbose && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.verbose.apply(console, arguments);\n }\n }\n },\n error: function() {\n if(!settings.silent) {\n module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n module.error.apply(console, arguments);\n }\n },\n performance: {\n log: function(message) {\n var\n currentTime,\n executionTime,\n previousTime\n ;\n if(settings.performance) {\n currentTime = new Date().getTime();\n previousTime = time || currentTime;\n executionTime = currentTime - previousTime;\n time = currentTime;\n performance.push({\n 'Name' : message[0],\n 'Arguments' : [].slice.call(message, 1) || '',\n 'Element' : element,\n 'Execution Time' : executionTime\n });\n }\n clearTimeout(module.performance.timer);\n module.performance.timer = setTimeout(module.performance.display, 500);\n },\n display: function() {\n var\n title = settings.name + ':',\n totalTime = 0\n ;\n time = false;\n clearTimeout(module.performance.timer);\n $.each(performance, function(index, data) {\n totalTime += data['Execution Time'];\n });\n title += ' ' + totalTime + 'ms';\n if(moduleSelector) {\n title += ' \\'' + moduleSelector + '\\'';\n }\n if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n console.groupCollapsed(title);\n if(console.table) {\n console.table(performance);\n }\n else {\n $.each(performance, function(index, data) {\n console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n });\n }\n console.groupEnd();\n }\n performance = [];\n }\n },\n invoke: function(query, passedArguments, context) {\n var\n object = instance,\n maxDepth,\n found,\n response\n ;\n passedArguments = passedArguments || queryArguments;\n context = element || context;\n if(typeof query == 'string' && object !== undefined) {\n query = query.split(/[\\. ]/);\n maxDepth = query.length - 1;\n $.each(query, function(depth, value) {\n var camelCaseValue = (depth != maxDepth)\n ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n : query\n ;\n if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n object = object[camelCaseValue];\n }\n else if( object[camelCaseValue] !== undefined ) {\n found = object[camelCaseValue];\n return false;\n }\n else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n object = object[value];\n }\n else if( object[value] !== undefined ) {\n found = object[value];\n return false;\n }\n else {\n module.error(error.method, query);\n return false;\n }\n });\n }\n if ( $.isFunction( found ) ) {\n response = found.apply(context, passedArguments);\n }\n else if(found !== undefined) {\n response = found;\n }\n if($.isArray(returnedValue)) {\n returnedValue.push(response);\n }\n else if(returnedValue !== undefined) {\n returnedValue = [returnedValue, response];\n }\n else if(response !== undefined) {\n returnedValue = response;\n }\n return found;\n }\n };\n\n if(methodInvoked) {\n if(instance === undefined) {\n module.initialize();\n }\n module.invoke(query);\n }\n else {\n if(instance !== undefined) {\n instance.invoke('destroy');\n }\n module.initialize();\n }\n })\n ;\n\n return (returnedValue !== undefined)\n ? returnedValue\n : this\n ;\n};\n\n$.fn.nag.settings = {\n\n name : 'Nag',\n\n silent : false,\n debug : false,\n verbose : false,\n performance : true,\n\n namespace : 'Nag',\n\n // allows cookie to be overridden\n persist : false,\n\n // set to zero to require manually dismissal, otherwise hides on its own\n displayTime : 0,\n\n animation : {\n show : 'slide',\n hide : 'slide'\n },\n\n context : false,\n detachable : false,\n\n expires : 30,\n domain : false,\n path : '/',\n\n // type of storage to use\n storageMethod : 'cookie',\n\n // value to store in dismissed localstorage/cookie\n key : 'nag',\n value : 'dismiss',\n\n error: {\n noCookieStorage : '$.cookie is not included. A storage solution is required.',\n noStorage : 'Neither $.cookie or store is defined. A storage solution is required for storing state',\n method : 'The method you called is not defined.'\n },\n\n className : {\n bottom : 'bottom',\n fixed : 'fixed'\n },\n\n selector : {\n close : '.close.icon'\n },\n\n speed : 500,\n easing : 'easeOutQuad',\n\n onHide: function() {}\n\n};\n\n// Adds easing\n$.extend( $.easing, {\n easeOutQuad: function (x, t, b, c, d) {\n return -c *(t/=d)*(t-2) + b;\n }\n});\n\n})( jQuery, window, document );\n","/*!\n * # Semantic UI 2.2.6 - Popup\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n ? window\n : (typeof self != 'undefined' && self.Math == Math)\n ? self\n : Function('return this')()\n;\n\n$.fn.popup = function(parameters) {\n var\n $allModules = $(this),\n $document = $(document),\n $window = $(window),\n $body = $('body'),\n\n moduleSelector = $allModules.selector || '',\n\n hasTouch = (true),\n time = new Date().getTime(),\n performance = [],\n\n query = arguments[0],\n methodInvoked = (typeof query == 'string'),\n queryArguments = [].slice.call(arguments, 1),\n\n returnedValue\n ;\n $allModules\n .each(function() {\n var\n settings = ( $.isPlainObject(parameters) )\n ? $.extend(true, {}, $.fn.popup.settings, parameters)\n : $.extend({}, $.fn.popup.settings),\n\n selector = settings.selector,\n className = settings.className,\n error = settings.error,\n metadata = settings.metadata,\n namespace = settings.namespace,\n\n eventNamespace = '.' + settings.namespace,\n moduleNamespace = 'module-' + namespace,\n\n $module = $(this),\n $context = $(settings.context),\n $scrollContext = $(settings.scrollContext),\n $boundary = $(settings.boundary),\n $target = (settings.target)\n ? $(settings.target)\n : $module,\n\n $popup,\n $offsetParent,\n\n searchDepth = 0,\n triedPositions = false,\n openedWithTouch = false,\n\n element = this,\n instance = $module.data(moduleNamespace),\n\n documentObserver,\n elementNamespace,\n id,\n module\n ;\n\n module = {\n\n // binds events\n initialize: function() {\n module.debug('Initializing', $module);\n module.createID();\n module.bind.events();\n if(!module.exists() && settings.preserve) {\n module.create();\n }\n if(settings.observeChanges) {\n module.observeChanges();\n }\n module.instantiate();\n },\n\n instantiate: function() {\n module.verbose('Storing instance', module);\n instance = module;\n $module\n .data(moduleNamespace, instance)\n ;\n },\n\n observeChanges: function() {\n if('MutationObserver' in window) {\n documentObserver = new MutationObserver(module.event.documentChanged);\n documentObserver.observe(document, {\n childList : true,\n subtree : true\n });\n module.debug('Setting up mutation observer', documentObserver);\n }\n },\n\n refresh: function() {\n if(settings.popup) {\n $popup = $(settings.popup).eq(0);\n }\n else {\n if(settings.inline) {\n $popup = $target.nextAll(selector.popup).eq(0);\n settings.popup = $popup;\n }\n }\n if(settings.popup) {\n $popup.addClass(className.loading);\n $offsetParent = module.get.offsetParent();\n $popup.removeClass(className.loading);\n if(settings.movePopup && module.has.popup() && module.get.offsetParent($popup)[0] !== $offsetParent[0]) {\n module.debug('Moving popup to the same offset parent as activating element');\n $popup\n .detach()\n .appendTo($offsetParent)\n ;\n }\n }\n else {\n $offsetParent = (settings.inline)\n ? module.get.offsetParent($target)\n : module.has.popup()\n ? module.get.offsetParent($popup)\n : $body\n ;\n }\n if( $offsetParent.is('html') && $offsetParent[0] !== $body[0] ) {\n module.debug('Setting page as offset parent');\n $offsetParent = $body;\n }\n if( module.get.variation() ) {\n module.set.variation();\n }\n },\n\n reposition: function() {\n module.refresh();\n module.set.position();\n },\n\n destroy: function() {\n module.debug('Destroying previous module');\n if(documentObserver) {\n documentObserver.disconnect();\n }\n // remove element only if was created dynamically\n if($popup && !settings.preserve) {\n module.removePopup();\n }\n // clear all timeouts\n clearTimeout(module.hideTimer);\n clearTimeout(module.showTimer);\n // remove events\n module.unbind.close();\n module.unbind.events();\n $module\n .removeData(moduleNamespace)\n ;\n },\n\n event: {\n start: function(event) {\n var\n delay = ($.isPlainObject(settings.delay))\n ? settings.delay.show\n : settings.delay\n ;\n clearTimeout(module.hideTimer);\n if(!openedWithTouch) {\n module.showTimer = setTimeout(module.show, delay);\n }\n },\n end: function() {\n var\n delay = ($.isPlainObject(settings.delay))\n ? settings.delay.hide\n : settings.delay\n ;\n clearTimeout(module.showTimer);\n module.hideTimer = setTimeout(module.hide, delay);\n },\n touchstart: function(event) {\n openedWithTouch = true;\n module.show();\n },\n resize: function() {\n if( module.is.visible() ) {\n module.set.position();\n }\n },\n documentChanged: function(mutations) {\n [].forEach.call(mutations, function(mutation) {\n if(mutation.removedNodes) {\n [].forEach.call(mutation.removedNodes, function(node) {\n if(node == element || $(node).find(element).length > 0) {\n module.debug('Element removed from DOM, tearing down events');\n module.destroy();\n }\n });\n }\n });\n },\n hideGracefully: function(event) {\n var\n $target = $(event.target),\n isInDOM = $.contains(document.documentElement, event.target),\n inPopup = ($target.closest(selector.popup).length > 0)\n ;\n // don't close on clicks inside popup\n if(event && !inPopup && isInDOM) {\n module.debug('Click occurred outside popup hiding popup');\n module.hide();\n }\n else {\n module.debug('Click was inside popup, keeping popup open');\n }\n }\n },\n\n // generates popup html from metadata\n create: function() {\n var\n html = module.get.html(),\n title = module.get.title(),\n content = module.get.content()\n ;\n\n if(html || content || title) {\n module.debug('Creating pop-up html');\n if(!html) {\n html = settings.templates.popup({\n title : title,\n content : content\n });\n }\n $popup = $('<div/>')\n .addClass(className.popup)\n .data(metadata.activator, $module)\n .html(html)\n ;\n if(settings.inline) {\n module.verbose('Inserting popup element inline', $popup);\n $popup\n .insertAfter($module)\n ;\n }\n else {\n module.verbose('Appending popup element to body', $popup);\n $popup\n .appendTo( $context )\n ;\n }\n module.refresh();\n module.set.variation();\n\n if(settings.hoverable) {\n module.bind.popup();\n }\n settings.onCreate.call($popup, element);\n }\n else if($target.next(selector.popup).length !== 0) {\n module.verbose('Pre-existing popup found');\n settings.inline = true;\n settings.popup = $target.next(selector.popup).data(metadata.activator, $module);\n module.refresh();\n if(settings.hoverable) {\n module.bind.popup();\n }\n }\n else if(settings.popup) {\n $(settings.popup).data(metadata.activator, $module);\n module.verbose('Used popup specified in settings');\n module.refresh();\n if(settings.hoverable) {\n module.bind.popup();\n }\n }\n else {\n module.debug('No content specified skipping display', element);\n }\n },\n\n createID: function() {\n id = (Math.random().toString(16) + '000000000').substr(2, 8);\n elementNamespace = '.' + id;\n module.verbose('Creating unique id for element', id);\n },\n\n // determines popup state\n toggle: function() {\n module.debug('Toggling pop-up');\n if( module.is.hidden() ) {\n module.debug('Popup is hidden, showing pop-up');\n module.unbind.close();\n module.show();\n }\n else {\n module.debug('Popup is visible, hiding pop-up');\n module.hide();\n }\n },\n\n show: function(callback) {\n callback = callback || function(){};\n module.debug('Showing pop-up', settings.transition);\n if(module.is.hidden() && !( module.is.active() && module.is.dropdown()) ) {\n if( !module.exists() ) {\n module.create();\n }\n if(settings.onShow.call($popup, element) === false) {\n module.debug('onShow callback returned false, cancelling popup animation');\n return;\n }\n else if(!settings.preserve && !settings.popup) {\n module.refresh();\n }\n if( $popup && module.set.position() ) {\n module.save.conditions();\n if(settings.exclusive) {\n module.hideAll();\n }\n module.animate.show(callback);\n }\n }\n },\n\n\n hide: function(callback) {\n callback = callback || function(){};\n if( module.is.visible() || module.is.animating() ) {\n if(settings.onHide.call($popup, element) === false) {\n module.debug('onHide callback returned false, cancelling popup animation');\n return;\n }\n module.remove.visible();\n module.unbind.close();\n module.restore.conditions();\n module.animate.hide(callback);\n }\n },\n\n hideAll: function() {\n $(selector.popup)\n .filter('.' + className.visible)\n .each(function() {\n $(this)\n .data(metadata.activator)\n .popup('hide')\n ;\n })\n ;\n },\n exists: function() {\n if(!$popup) {\n return false;\n }\n if(settings.inline || settings.popup) {\n return ( module.has.popup() );\n }\n else {\n return ( $popup.closest($context).length >= 1 )\n ? true\n : false\n ;\n }\n },\n\n removePopup: function() {\n if( module.has.popup() && !settings.popup) {\n module.debug('Removing popup', $popup);\n $popup.remove();\n $popup = undefined;\n settings.onRemove.call($popup, element);\n }\n },\n\n save: {\n conditions: function() {\n module.cache = {\n title: $module.attr('title')\n };\n if (module.cache.title) {\n $module.removeAttr('title');\n }\n module.verbose('Saving original attributes', module.cache.title);\n }\n },\n restore: {\n conditions: function() {\n if(module.cache && module.cache.title) {\n $module.attr('title', module.cache.title);\n module.verbose('Restoring original attributes', module.cache.title);\n }\n return true;\n }\n },\n supports: {\n svg: function() {\n return (typeof SVGGraphicsElement === undefined);\n }\n },\n animate: {\n show: function(callback) {\n callback = $.isFunction(callback) ? callback : function(){};\n if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) {\n module.set.visible();\n $popup\n .transition({\n animation : settings.transition + ' in',\n queue : false,\n debug : settings.debug,\n verbose : settings.verbose,\n duration : settings.duration,\n onComplete : function() {\n module.bind.close();\n callback.call($popup, element);\n settings.onVisible.call($popup, element);\n }\n })\n ;\n }\n else {\n module.error(error.noTransition);\n }\n },\n hide: function(callback) {\n callback = $.isFunction(callback) ? callback : function(){};\n module.debug('Hiding pop-up');\n if(settings.onHide.call($popup, element) === false) {\n module.debug('onHide callback returned false, cancelling popup animation');\n return;\n }\n if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) {\n $popup\n .transition({\n animation : settings.transition + ' out',\n queue : false,\n duration : settings.duration,\n debug : settings.debug,\n verbose : settings.verbose,\n onComplete : function() {\n module.reset();\n callback.call($popup, element);\n settings.onHidden.call($popup, element);\n }\n })\n ;\n }\n else {\n module.error(error.noTransition);\n }\n }\n },\n\n change: {\n content: function(html) {\n $popup.html(html);\n }\n },\n\n get: {\n html: function() {\n $module.removeData(metadata.html);\n return $module.data(metadata.html) || settings.html;\n },\n title: function() {\n $module.removeData(metadata.title);\n return $module.data(metadata.title) || settings.title;\n },\n content: function() {\n $module.removeData(metadata.content);\n return $module.data(metadata.content) || $module.attr('title') || settings.content;\n },\n variation: function() {\n $module.removeData(metadata.variation);\n return $module.data(metadata.variation) || settings.variation;\n },\n popup: function() {\n return $popup;\n },\n popupOffset: function() {\n return $popup.offset();\n },\n calculations: function() {\n var\n targetElement = $target[0],\n isWindow = ($boundary[0] == window),\n targetPosition = (settings.inline || (settings.popup && settings.movePopup))\n ? $target.position()\n : $target.offset(),\n screenPosition = (isWindow)\n ? { top: 0, left: 0 }\n : $boundary.offset(),\n calculations = {},\n scroll = (isWindow)\n ? { top: $window.scrollTop(), left: $window.scrollLeft() }\n : { top: 0, left: 0},\n screen\n ;\n calculations = {\n // element which is launching popup\n target : {\n element : $target[0],\n width : $target.outerWidth(),\n height : $target.outerHeight(),\n top : targetPosition.top,\n left : targetPosition.left,\n margin : {}\n },\n // popup itself\n popup : {\n width : $popup.outerWidth(),\n height : $popup.outerHeight()\n },\n // offset container (or 3d context)\n parent : {\n width : $offsetParent.outerWidth(),\n height : $offsetParent.outerHeight()\n },\n // screen boundaries\n screen : {\n top : screenPosition.top,\n left : screenPosition.left,\n scroll: {\n top : scroll.top,\n left : scroll.left\n },\n width : $boundary.width(),\n height : $boundary.height()\n }\n };\n\n // add in container calcs if fluid\n if( settings.setFluidWidth && module.is.fluid() ) {\n calculations.container = {\n width: $popup.parent().outerWidth()\n };\n calculations.popup.width = calculations.container.width;\n }\n\n // add in margins if inline\n calculations.target.margin.top = (settings.inline)\n ? parseInt( window.getComputedStyle(targetElement).getPropertyValue('margin-top'), 10)\n : 0\n ;\n calculations.target.margin.left = (settings.inline)\n ? module.is.rtl()\n ? parseInt( window.getComputedStyle(targetElement).getPropertyValue('margin-right'), 10)\n : parseInt( window.getComputedStyle(targetElement).getPropertyValue('margin-left'), 10)\n : 0\n ;\n // calculate screen boundaries\n screen = calculations.screen;\n calculations.boundary = {\n top : screen.top + screen.scroll.top,\n bottom : screen.top + screen.scroll.top + screen.height,\n left : screen.left + screen.scroll.left,\n right : screen.left + screen.scroll.left + screen.width\n };\n return calculations;\n },\n id: function() {\n return id;\n },\n startEvent: function() {\n if(settings.on == 'hover') {\n return 'mouseenter';\n }\n else if(settings.on == 'focus') {\n return 'focus';\n }\n return false;\n },\n scrollEvent: function() {\n return 'scroll';\n },\n endEvent: function() {\n if(settings.on == 'hover') {\n return 'mouseleave';\n }\n else if(settings.on == 'focus') {\n return 'blur';\n }\n return false;\n },\n distanceFromBoundary: function(offset, calculations) {\n var\n distanceFromBoundary = {},\n popup,\n boundary\n ;\n calculations = calculations || module.get.calculations();\n\n // shorthand\n popup = calculations.popup;\n boundary = calculations.boundary;\n\n if(offset) {\n distanceFromBoundary = {\n top : (offset.top - boundary.top),\n left : (offset.left - boundary.left),\n right : (boundary.right - (offset.left + popup.width) ),\n bottom : (boundary.bottom - (offset.top + popup.height) )\n };\n module.verbose('Distance from boundaries determined', offset, distanceFromBoundary);\n }\n return distanceFromBoundary;\n },\n offsetParent: function($target) {\n var\n element = ($target !== undefined)\n ? $target[0]\n : $module[0],\n parentNode = element.parentNode,\n $node = $(parentNode)\n ;\n if(parentNode) {\n var\n is2D = ($node.css('transform') === 'none'),\n isStatic = ($node.css('position') === 'static'),\n isHTML = $node.is('html')\n ;\n while(parentNode && !isHTML && isStatic && is2D) {\n parentNode = parentNode.parentNode;\n $node = $(parentNode);\n is2D = ($node.css('transform') === 'none');\n isStatic = ($node.css('position') === 'static');\n isHTML = $node.is('html');\n }\n }\n return ($node && $node.length > 0)\n ? $node\n : $()\n ;\n },\n positions: function() {\n return {\n 'top left' : false,\n 'top center' : false,\n 'top right' : false,\n 'bottom left' : false,\n 'bottom center' : false,\n 'bottom right' : false,\n 'left center' : false,\n 'right center' : false\n };\n },\n nextPosition: function(position) {\n var\n positions = position.split(' '),\n verticalPosition = positions[0],\n horizontalPosition = positions[1],\n opposite = {\n top : 'bottom',\n bottom : 'top',\n left : 'right',\n right : 'left'\n },\n adjacent = {\n left : 'center',\n center : 'right',\n right : 'left'\n },\n backup = {\n 'top left' : 'top center',\n 'top center' : 'top right',\n 'top right' : 'right center',\n 'right center' : 'bottom right',\n 'bottom right' : 'bottom center',\n 'bottom center' : 'bottom left',\n 'bottom left' : 'left center',\n 'left center' : 'top left'\n },\n adjacentsAvailable = (verticalPosition == 'top' || verticalPosition == 'bottom'),\n oppositeTried = false,\n adjacentTried = false,\n nextPosition = false\n ;\n if(!triedPositions) {\n module.verbose('All available positions available');\n triedPositions = module.get.positions();\n }\n\n module.debug('Recording last position tried', position);\n triedPositions[position] = true;\n\n if(settings.prefer === 'opposite') {\n nextPosition = [opposite[verticalPosition], horizontalPosition];\n nextPosition = nextPosition.join(' ');\n oppositeTried = (triedPositions[nextPosition] === true);\n module.debug('Trying opposite strategy', nextPosition);\n }\n if((settings.prefer === 'adjacent') && adjacentsAvailable ) {\n nextPosition = [verticalPosition, adjacent[horizontalPosition]];\n nextPosition = nextPosition.join(' ');\n adjacentTried = (triedPositions[nextPosition] === true);\n module.debug('Trying adjacent strategy', nextPosition);\n }\n if(adjacentTried || oppositeTried) {\n module.debug('Using backup position', nextPosition);\n nextPosition = backup[position];\n }\n return nextPosition;\n }\n },\n\n set: {\n position: function(position, calculations) {\n\n // exit conditions\n if($target.length === 0 || $popup.length === 0) {\n module.error(error.notFound);\n return;\n }\n var\n offset,\n distanceAway,\n target,\n popup,\n parent,\n positioning,\n popupOffset,\n distanceFromBoundary\n ;\n\n calculations = calculations || module.get.calculations();\n position = position || $module.data(metadata.position) || settings.position;\n\n offset = $module.data(metadata.offset) || settings.offset;\n distanceAway = settings.distanceAway;\n\n // shorthand\n target = calculations.target;\n popup = calculations.popup;\n parent = calculations.parent;\n\n if(target.width === 0 && target.height === 0 && !module.is.svg(target.element)) {\n module.debug('Popup target is hidden, no action taken');\n return false;\n }\n\n if(settings.inline) {\n module.debug('Adding margin to calculation', target.margin);\n if(position == 'left center' || position == 'right center') {\n offset += target.margin.top;\n distanceAway += -target.margin.left;\n }\n else if (position == 'top left' || position == 'top center' || position == 'top right') {\n offset += target.margin.left;\n distanceAway -= target.margin.top;\n }\n else {\n offset += target.margin.left;\n distanceAway += target.margin.top;\n }\n }\n\n module.debug('Determining popup position from calculations', position, calculations);\n\n if (module.is.rtl()) {\n position = position.replace(/left|right/g, function (match) {\n return (match == 'left')\n ? 'right'\n : 'left'\n ;\n });\n module.debug('RTL: Popup position updated', position);\n }\n\n // if last attempt use specified last resort position\n if(searchDepth == settings.maxSearchDepth && typeof settings.lastResort === 'string') {\n position = settings.lastResort;\n }\n\n switch (position) {\n case 'top left':\n positioning = {\n top : 'auto',\n bottom : parent.height - target.top + distanceAway,\n left : target.left + offset,\n right : 'auto'\n };\n break;\n case 'top center':\n positioning = {\n bottom : parent.height - target.top + distanceAway,\n left : target.left + (target.width / 2) - (popup.width / 2) + offset,\n top : 'auto',\n right : 'auto'\n };\n break;\n case 'top right':\n positioning = {\n bottom : parent.height - target.top + distanceAway,\n right : parent.width - target.left - target.width - offset,\n top : 'auto',\n left : 'auto'\n };\n break;\n case 'left center':\n positioning = {\n top : target.top + (target.height / 2) - (popup.height / 2) + offset,\n right : parent.width - target.left + distanceAway,\n left : 'auto',\n bottom : 'auto'\n };\n break;\n case 'right center':\n positioning = {\n top : target.top + (target.height / 2) - (popup.height / 2) + offset,\n left : target.left + target.width + distanceAway,\n bottom : 'auto',\n right : 'auto'\n };\n break;\n case 'bottom left':\n positioning = {\n top : target.top + target.height + distanceAway,\n left : target.left + offset,\n bottom : 'auto',\n right : 'auto'\n };\n break;\n case 'bottom center':\n positioning = {\n top : target.top + target.height + distanceAway,\n left : target.left + (target.width / 2) - (popup.width / 2) + offset,\n bottom : 'auto',\n right : 'auto'\n };\n break;\n case 'bottom right':\n positioning = {\n top : target.top + target.height + distanceAway,\n right : parent.width - target.left - target.width - offset,\n left : 'auto',\n bottom : 'auto'\n };\n break;\n }\n if(positioning === undefined) {\n module.error(error.invalidPosition, position);\n }\n\n module.debug('Calculated popup positioning values', positioning);\n\n // tentatively place on stage\n $popup\n .css(positioning)\n .removeClass(className.position)\n .addClass(position)\n .addClass(className.loading)\n ;\n\n popupOffset = module.get.popupOffset();\n\n // see if any boundaries are surpassed with this tentative position\n distanceFromBoundary = module.get.distanceFromBoundary(popupOffset, calculations);\n\n if( module.is.offstage(distanceFromBoundary, position) ) {\n module.debug('Position is outside viewport', position);\n if(searchDepth < settings.maxSearchDepth) {\n searchDepth++;\n position = module.get.nextPosition(position);\n module.debug('Trying new position', position);\n return ($popup)\n ? module.set.position(position, calculations)\n : false\n ;\n }\n else {\n if(settings.lastResort) {\n module.debug('No position found, showing with last position');\n }\n else {\n module.debug('Popup could not find a position to display', $popup);\n module.error(error.cannotPlace, element);\n module.remove.attempts();\n module.remove.loading();\n module.reset();\n settings.onUnplaceable.call($popup, element);\n return false;\n }\n }\n }\n module.debug('Position is on stage', position);\n module.remove.attempts();\n module.remove.loading();\n if( settings.setFluidWidth && module.is.fluid() ) {\n module.set.fluidWidth(calculations);\n }\n return true;\n },\n\n fluidWidth: function(calculations) {\n calculations = calculations || module.get.calculations();\n module.debug('Automatically setting element width to parent width', calculations.parent.width);\n $popup.css('width', calculations.container.width);\n },\n\n variation: function(variation) {\n variation = variation || module.get.variation();\n if(variation && module.has.popup() ) {\n module.verbose('Adding variation to popup', variation);\n $popup.addClass(variation);\n }\n },\n\n visible: function() {\n $module.addClass(className.visible);\n }\n },\n\n remove: {\n loading: function() {\n $popup.removeClass(className.loading);\n },\n variation: function(variation) {\n variation = variation || module.get.variation();\n if(variation) {\n module.verbose('Removing variation', variation);\n $popup.removeClass(variation);\n }\n },\n visible: function() {\n $module.removeClass(className.visible);\n },\n attempts: function() {\n module.verbose('Resetting all searched positions');\n searchDepth = 0;\n triedPositions = false;\n }\n },\n\n bind: {\n events: function() {\n module.debug('Binding popup events to module');\n if(settings.on == 'click') {\n $module\n .on('click' + eventNamespace, module.toggle)\n ;\n }\n if(settings.on == 'hover' && hasTouch) {\n $module\n .on('touchstart' + eventNamespace, module.event.touchstart)\n ;\n }\n if( module.get.startEvent() ) {\n $module\n .on(module.get.startEvent() + eventNamespace, module.event.start)\n .on(module.get.endEvent() + eventNamespace, module.event.end)\n ;\n }\n if(settings.target) {\n module.debug('Target set to element', $target);\n }\n $window.on('resize' + elementNamespace, module.event.resize);\n },\n popup: function() {\n module.verbose('Allowing hover events on popup to prevent closing');\n if( $popup && module.has.popup() ) {\n $popup\n .on('mouseenter' + eventNamespace, module.event.start)\n .on('mouseleave' + eventNamespace, module.event.end)\n ;\n }\n },\n close: function() {\n if(settings.hideOnScroll === true || (settings.hideOnScroll == 'auto' && settings.on != 'click')) {\n $scrollContext\n .one(module.get.scrollEvent() + elementNamespace, module.event.hideGracefully)\n ;\n }\n if(settings.on == 'hover' && openedWithTouch) {\n module.verbose('Binding popup close event to document');\n $document\n .on('touchstart' + elementNamespace, function(event) {\n module.verbose('Touched away from popup');\n module.event.hideGracefully.call(element, event);\n })\n ;\n }\n if(settings.on == 'click' && settings.closable) {\n module.verbose('Binding popup close event to document');\n $document\n .on('click' + elementNamespace, function(event) {\n module.verbose('Clicked away from popup');\n module.event.hideGracefully.call(element, event);\n })\n ;\n }\n }\n },\n\n unbind: {\n events: function() {\n $window\n .off(elementNamespace)\n ;\n $module\n .off(eventNamespace)\n ;\n },\n close: function() {\n $document\n .off(elementNamespace)\n ;\n $scrollContext\n .off(elementNamespace)\n ;\n },\n },\n\n has: {\n popup: function() {\n return ($popup && $popup.length > 0);\n }\n },\n\n is: {\n offstage: function(distanceFromBoundary, position) {\n var\n offstage = []\n ;\n // return boundaries that have been surpassed\n $.each(distanceFromBoundary, function(direction, distance) {\n if(distance < -settings.jitter) {\n module.debug('Position exceeds allowable distance from edge', direction, distance, position);\n offstage.push(direction);\n }\n });\n if(offstage.length > 0) {\n return true;\n }\n else {\n return false;\n }\n },\n svg: function(element) {\n return module.supports.svg() && (element instanceof SVGGraphicsElement);\n },\n active: function() {\n return $module.hasClass(className.active);\n },\n animating: function() {\n return ($popup !== undefined && $popup.hasClass(className.animating) );\n },\n fluid: function() {\n return ($popup !== undefined && $popup.hasClass(className.fluid));\n },\n visible: function() {\n return ($popup !== undefined && $popup.hasClass(className.visible));\n },\n dropdown: function() {\n return $module.hasClass(className.dropdown);\n },\n hidden: function() {\n return !module.is.visible();\n },\n rtl: function () {\n return $module.css('direction') == 'rtl';\n }\n },\n\n reset: function() {\n module.remove.visible();\n if(settings.preserve) {\n if($.fn.transition !== undefined) {\n $popup\n .transition('remove transition')\n ;\n }\n }\n else {\n module.removePopup();\n }\n },\n\n setting: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, settings, name);\n }\n else if(value !== undefined) {\n settings[name] = value;\n }\n else {\n return settings[name];\n }\n },\n internal: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, module, name);\n }\n else if(value !== undefined) {\n module[name] = value;\n }\n else {\n return module[name];\n }\n },\n debug: function() {\n if(!settings.silent && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.debug.apply(console, arguments);\n }\n }\n },\n verbose: function() {\n if(!settings.silent && settings.verbose && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.verbose.apply(console, arguments);\n }\n }\n },\n error: function() {\n if(!settings.silent) {\n module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n module.error.apply(console, arguments);\n }\n },\n performance: {\n log: function(message) {\n var\n currentTime,\n executionTime,\n previousTime\n ;\n if(settings.performance) {\n currentTime = new Date().getTime();\n previousTime = time || currentTime;\n executionTime = currentTime - previousTime;\n time = currentTime;\n performance.push({\n 'Name' : message[0],\n 'Arguments' : [].slice.call(message, 1) || '',\n 'Element' : element,\n 'Execution Time' : executionTime\n });\n }\n clearTimeout(module.performance.timer);\n module.performance.timer = setTimeout(module.performance.display, 500);\n },\n display: function() {\n var\n title = settings.name + ':',\n totalTime = 0\n ;\n time = false;\n clearTimeout(module.performance.timer);\n $.each(performance, function(index, data) {\n totalTime += data['Execution Time'];\n });\n title += ' ' + totalTime + 'ms';\n if(moduleSelector) {\n title += ' \\'' + moduleSelector + '\\'';\n }\n if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n console.groupCollapsed(title);\n if(console.table) {\n console.table(performance);\n }\n else {\n $.each(performance, function(index, data) {\n console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n });\n }\n console.groupEnd();\n }\n performance = [];\n }\n },\n invoke: function(query, passedArguments, context) {\n var\n object = instance,\n maxDepth,\n found,\n response\n ;\n passedArguments = passedArguments || queryArguments;\n context = element || context;\n if(typeof query == 'string' && object !== undefined) {\n query = query.split(/[\\. ]/);\n maxDepth = query.length - 1;\n $.each(query, function(depth, value) {\n var camelCaseValue = (depth != maxDepth)\n ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n : query\n ;\n if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n object = object[camelCaseValue];\n }\n else if( object[camelCaseValue] !== undefined ) {\n found = object[camelCaseValue];\n return false;\n }\n else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n object = object[value];\n }\n else if( object[value] !== undefined ) {\n found = object[value];\n return false;\n }\n else {\n return false;\n }\n });\n }\n if ( $.isFunction( found ) ) {\n response = found.apply(context, passedArguments);\n }\n else if(found !== undefined) {\n response = found;\n }\n if($.isArray(returnedValue)) {\n returnedValue.push(response);\n }\n else if(returnedValue !== undefined) {\n returnedValue = [returnedValue, response];\n }\n else if(response !== undefined) {\n returnedValue = response;\n }\n return found;\n }\n };\n\n if(methodInvoked) {\n if(instance === undefined) {\n module.initialize();\n }\n module.invoke(query);\n }\n else {\n if(instance !== undefined) {\n instance.invoke('destroy');\n }\n module.initialize();\n }\n })\n ;\n\n return (returnedValue !== undefined)\n ? returnedValue\n : this\n ;\n};\n\n$.fn.popup.settings = {\n\n name : 'Popup',\n\n // module settings\n silent : false,\n debug : false,\n verbose : false,\n performance : true,\n namespace : 'popup',\n\n // whether it should use dom mutation observers\n observeChanges : true,\n\n // callback only when element added to dom\n onCreate : function(){},\n\n // callback before element removed from dom\n onRemove : function(){},\n\n // callback before show animation\n onShow : function(){},\n\n // callback after show animation\n onVisible : function(){},\n\n // callback before hide animation\n onHide : function(){},\n\n // callback when popup cannot be positioned in visible screen\n onUnplaceable : function(){},\n\n // callback after hide animation\n onHidden : function(){},\n\n // when to show popup\n on : 'hover',\n\n // element to use to determine if popup is out of boundary\n boundary : window,\n\n // whether to add touchstart events when using hover\n addTouchEvents : true,\n\n // default position relative to element\n position : 'top left',\n\n // name of variation to use\n variation : '',\n\n // whether popup should be moved to context\n movePopup : true,\n\n // element which popup should be relative to\n target : false,\n\n // jq selector or element that should be used as popup\n popup : false,\n\n // popup should remain inline next to activator\n inline : false,\n\n // popup should be removed from page on hide\n preserve : false,\n\n // popup should not close when being hovered on\n hoverable : false,\n\n // explicitly set content\n content : false,\n\n // explicitly set html\n html : false,\n\n // explicitly set title\n title : false,\n\n // whether automatically close on clickaway when on click\n closable : true,\n\n // automatically hide on scroll\n hideOnScroll : 'auto',\n\n // hide other popups on show\n exclusive : false,\n\n // context to attach popups\n context : 'body',\n\n // context for binding scroll events\n scrollContext : window,\n\n // position to prefer when calculating new position\n prefer : 'opposite',\n\n // specify position to appear even if it doesn't fit\n lastResort : false,\n\n // delay used to prevent accidental refiring of animations due to user error\n delay : {\n show : 50,\n hide : 70\n },\n\n // whether fluid variation should assign width explicitly\n setFluidWidth : true,\n\n // transition settings\n duration : 200,\n transition : 'scale',\n\n // distance away from activating element in px\n distanceAway : 0,\n\n // number of pixels an element is allowed to be \"offstage\" for a position to be chosen (allows for rounding)\n jitter : 2,\n\n // offset on aligning axis from calculated position\n offset : 0,\n\n // maximum times to look for a position before failing (9 positions total)\n maxSearchDepth : 15,\n\n error: {\n invalidPosition : 'The position you specified is not a valid position',\n cannotPlace : 'Popup does not fit within the boundaries of the viewport',\n method : 'The method you called is not defined.',\n noTransition : 'This module requires ui transitions <https://github.com/Semantic-Org/UI-Transition>',\n notFound : 'The target or popup you specified does not exist on the page'\n },\n\n metadata: {\n activator : 'activator',\n content : 'content',\n html : 'html',\n offset : 'offset',\n position : 'position',\n title : 'title',\n variation : 'variation'\n },\n\n className : {\n active : 'active',\n animating : 'animating',\n dropdown : 'dropdown',\n fluid : 'fluid',\n loading : 'loading',\n popup : 'ui popup',\n position : 'top left center bottom right',\n visible : 'visible'\n },\n\n selector : {\n popup : '.ui.popup'\n },\n\n templates: {\n escape: function(string) {\n var\n badChars = /[&<>\"'`]/g,\n shouldEscape = /[&<>\"'`]/,\n escape = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\",\n \"`\": \"`\"\n },\n escapedChar = function(chr) {\n return escape[chr];\n }\n ;\n if(shouldEscape.test(string)) {\n return string.replace(badChars, escapedChar);\n }\n return string;\n },\n popup: function(text) {\n var\n html = '',\n escape = $.fn.popup.settings.templates.escape\n ;\n if(typeof text !== undefined) {\n if(typeof text.title !== undefined && text.title) {\n text.title = escape(text.title);\n html += '<div class=\"header\">' + text.title + '</div>';\n }\n if(typeof text.content !== undefined && text.content) {\n text.content = escape(text.content);\n html += '<div class=\"content\">' + text.content + '</div>';\n }\n }\n return html;\n }\n }\n\n};\n\n\n})( jQuery, window, document );\n","/*!\n * # Semantic UI 2.2.6 - Progress\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n ? window\n : (typeof self != 'undefined' && self.Math == Math)\n ? self\n : Function('return this')()\n;\n\nvar\n global = (typeof window != 'undefined' && window.Math == Math)\n ? window\n : (typeof self != 'undefined' && self.Math == Math)\n ? self\n : Function('return this')()\n;\n\n$.fn.progress = function(parameters) {\n var\n $allModules = $(this),\n\n moduleSelector = $allModules.selector || '',\n\n time = new Date().getTime(),\n performance = [],\n\n query = arguments[0],\n methodInvoked = (typeof query == 'string'),\n queryArguments = [].slice.call(arguments, 1),\n\n returnedValue\n ;\n\n $allModules\n .each(function() {\n var\n settings = ( $.isPlainObject(parameters) )\n ? $.extend(true, {}, $.fn.progress.settings, parameters)\n : $.extend({}, $.fn.progress.settings),\n\n className = settings.className,\n metadata = settings.metadata,\n namespace = settings.namespace,\n selector = settings.selector,\n error = settings.error,\n\n eventNamespace = '.' + namespace,\n moduleNamespace = 'module-' + namespace,\n\n $module = $(this),\n $bar = $(this).find(selector.bar),\n $progress = $(this).find(selector.progress),\n $label = $(this).find(selector.label),\n\n element = this,\n instance = $module.data(moduleNamespace),\n\n animating = false,\n transitionEnd,\n module\n ;\n\n module = {\n\n initialize: function() {\n module.debug('Initializing progress bar', settings);\n\n module.set.duration();\n module.set.transitionEvent();\n\n module.read.metadata();\n module.read.settings();\n\n module.instantiate();\n },\n\n instantiate: function() {\n module.verbose('Storing instance of progress', module);\n instance = module;\n $module\n .data(moduleNamespace, module)\n ;\n },\n destroy: function() {\n module.verbose('Destroying previous progress for', $module);\n clearInterval(instance.interval);\n module.remove.state();\n $module.removeData(moduleNamespace);\n instance = undefined;\n },\n\n reset: function() {\n module.remove.nextValue();\n module.update.progress(0);\n },\n\n complete: function() {\n if(module.percent === undefined || module.percent < 100) {\n module.remove.progressPoll();\n module.set.percent(100);\n }\n },\n\n read: {\n metadata: function() {\n var\n data = {\n percent : $module.data(metadata.percent),\n total : $module.data(metadata.total),\n value : $module.data(metadata.value)\n }\n ;\n if(data.percent) {\n module.debug('Current percent value set from metadata', data.percent);\n module.set.percent(data.percent);\n }\n if(data.total) {\n module.debug('Total value set from metadata', data.total);\n module.set.total(data.total);\n }\n if(data.value) {\n module.debug('Current value set from metadata', data.value);\n module.set.value(data.value);\n module.set.progress(data.value);\n }\n },\n settings: function() {\n if(settings.total !== false) {\n module.debug('Current total set in settings', settings.total);\n module.set.total(settings.total);\n }\n if(settings.value !== false) {\n module.debug('Current value set in settings', settings.value);\n module.set.value(settings.value);\n module.set.progress(module.value);\n }\n if(settings.percent !== false) {\n module.debug('Current percent set in settings', settings.percent);\n module.set.percent(settings.percent);\n }\n }\n },\n\n bind: {\n transitionEnd: function(callback) {\n var\n transitionEnd = module.get.transitionEnd()\n ;\n $bar\n .one(transitionEnd + eventNamespace, function(event) {\n clearTimeout(module.failSafeTimer);\n callback.call(this, event);\n })\n ;\n module.failSafeTimer = setTimeout(function() {\n $bar.triggerHandler(transitionEnd);\n }, settings.duration + settings.failSafeDelay);\n module.verbose('Adding fail safe timer', module.timer);\n }\n },\n\n increment: function(incrementValue) {\n var\n maxValue,\n startValue,\n newValue\n ;\n if( module.has.total() ) {\n startValue = module.get.value();\n incrementValue = incrementValue || 1;\n newValue = startValue + incrementValue;\n }\n else {\n startValue = module.get.percent();\n incrementValue = incrementValue || module.get.randomValue();\n\n newValue = startValue + incrementValue;\n maxValue = 100;\n module.debug('Incrementing percentage by', startValue, newValue);\n }\n newValue = module.get.normalizedValue(newValue);\n module.set.progress(newValue);\n },\n decrement: function(decrementValue) {\n var\n total = module.get.total(),\n startValue,\n newValue\n ;\n if(total) {\n startValue = module.get.value();\n decrementValue = decrementValue || 1;\n newValue = startValue - decrementValue;\n module.debug('Decrementing value by', decrementValue, startValue);\n }\n else {\n startValue = module.get.percent();\n decrementValue = decrementValue || module.get.randomValue();\n newValue = startValue - decrementValue;\n module.debug('Decrementing percentage by', decrementValue, startValue);\n }\n newValue = module.get.normalizedValue(newValue);\n module.set.progress(newValue);\n },\n\n has: {\n progressPoll: function() {\n return module.progressPoll;\n },\n total: function() {\n return (module.get.total() !== false);\n }\n },\n\n get: {\n text: function(templateText) {\n var\n value = module.value || 0,\n total = module.total || 0,\n percent = (animating)\n ? module.get.displayPercent()\n : module.percent || 0,\n left = (module.total > 0)\n ? (total - value)\n : (100 - percent)\n ;\n templateText = templateText || '';\n templateText = templateText\n .replace('{value}', value)\n .replace('{total}', total)\n .replace('{left}', left)\n .replace('{percent}', percent)\n ;\n module.verbose('Adding variables to progress bar text', templateText);\n return templateText;\n },\n\n normalizedValue: function(value) {\n if(value < 0) {\n module.debug('Value cannot decrement below 0');\n return 0;\n }\n if(module.has.total()) {\n if(value > module.total) {\n module.debug('Value cannot increment above total', module.total);\n return module.total;\n }\n }\n else if(value > 100 ) {\n module.debug('Value cannot increment above 100 percent');\n return 100;\n }\n return value;\n },\n\n updateInterval: function() {\n if(settings.updateInterval == 'auto') {\n return settings.duration;\n }\n return settings.updateInterval;\n },\n\n randomValue: function() {\n module.debug('Generating random increment percentage');\n return Math.floor((Math.random() * settings.random.max) + settings.random.min);\n },\n\n numericValue: function(value) {\n return (typeof value === 'string')\n ? (value.replace(/[^\\d.]/g, '') !== '')\n ? +(value.replace(/[^\\d.]/g, ''))\n : false\n : value\n ;\n },\n\n transitionEnd: function() {\n var\n element = document.createElement('element'),\n transitions = {\n 'transition' :'transitionend',\n 'OTransition' :'oTransitionEnd',\n 'MozTransition' :'transitionend',\n 'WebkitTransition' :'webkitTransitionEnd'\n },\n transition\n ;\n for(transition in transitions){\n if( element.style[transition] !== undefined ){\n return transitions[transition];\n }\n }\n },\n\n // gets current displayed percentage (if animating values this is the intermediary value)\n displayPercent: function() {\n var\n barWidth = $bar.width(),\n totalWidth = $module.width(),\n minDisplay = parseInt($bar.css('min-width'), 10),\n displayPercent = (barWidth > minDisplay)\n ? (barWidth / totalWidth * 100)\n : module.percent\n ;\n return (settings.precision > 0)\n ? Math.round(displayPercent * (10 * settings.precision)) / (10 * settings.precision)\n : Math.round(displayPercent)\n ;\n },\n\n percent: function() {\n return module.percent || 0;\n },\n value: function() {\n return module.nextValue || module.value || 0;\n },\n total: function() {\n return module.total || false;\n }\n },\n\n create: {\n progressPoll: function() {\n module.progressPoll = setTimeout(function() {\n module.update.toNextValue();\n module.remove.progressPoll();\n }, module.get.updateInterval());\n },\n },\n\n is: {\n complete: function() {\n return module.is.success() || module.is.warning() || module.is.error();\n },\n success: function() {\n return $module.hasClass(className.success);\n },\n warning: function() {\n return $module.hasClass(className.warning);\n },\n error: function() {\n return $module.hasClass(className.error);\n },\n active: function() {\n return $module.hasClass(className.active);\n },\n visible: function() {\n return $module.is(':visible');\n }\n },\n\n remove: {\n progressPoll: function() {\n module.verbose('Removing progress poll timer');\n if(module.progressPoll) {\n clearTimeout(module.progressPoll);\n delete module.progressPoll;\n }\n },\n nextValue: function() {\n module.verbose('Removing progress value stored for next update');\n delete module.nextValue;\n },\n state: function() {\n module.verbose('Removing stored state');\n delete module.total;\n delete module.percent;\n delete module.value;\n },\n active: function() {\n module.verbose('Removing active state');\n $module.removeClass(className.active);\n },\n success: function() {\n module.verbose('Removing success state');\n $module.removeClass(className.success);\n },\n warning: function() {\n module.verbose('Removing warning state');\n $module.removeClass(className.warning);\n },\n error: function() {\n module.verbose('Removing error state');\n $module.removeClass(className.error);\n }\n },\n\n set: {\n barWidth: function(value) {\n if(value > 100) {\n module.error(error.tooHigh, value);\n }\n else if (value < 0) {\n module.error(error.tooLow, value);\n }\n else {\n $bar\n .css('width', value + '%')\n ;\n $module\n .attr('data-percent', parseInt(value, 10))\n ;\n }\n },\n duration: function(duration) {\n duration = duration || settings.duration;\n duration = (typeof duration == 'number')\n ? duration + 'ms'\n : duration\n ;\n module.verbose('Setting progress bar transition duration', duration);\n $bar\n .css({\n 'transition-duration': duration\n })\n ;\n },\n percent: function(percent) {\n percent = (typeof percent == 'string')\n ? +(percent.replace('%', ''))\n : percent\n ;\n // round display percentage\n percent = (settings.precision > 0)\n ? Math.round(percent * (10 * settings.precision)) / (10 * settings.precision)\n : Math.round(percent)\n ;\n module.percent = percent;\n if( !module.has.total() ) {\n module.value = (settings.precision > 0)\n ? Math.round( (percent / 100) * module.total * (10 * settings.precision)) / (10 * settings.precision)\n : Math.round( (percent / 100) * module.total * 10) / 10\n ;\n if(settings.limitValues) {\n module.value = (module.value > 100)\n ? 100\n : (module.value < 0)\n ? 0\n : module.value\n ;\n }\n }\n module.set.barWidth(percent);\n module.set.labelInterval();\n module.set.labels();\n settings.onChange.call(element, percent, module.value, module.total);\n },\n labelInterval: function() {\n var\n animationCallback = function() {\n module.verbose('Bar finished animating, removing continuous label updates');\n clearInterval(module.interval);\n animating = false;\n module.set.labels();\n }\n ;\n clearInterval(module.interval);\n module.bind.transitionEnd(animationCallback);\n animating = true;\n module.interval = setInterval(function() {\n var\n isInDOM = $.contains(document.documentElement, element)\n ;\n if(!isInDOM) {\n clearInterval(module.interval);\n animating = false;\n }\n module.set.labels();\n }, settings.framerate);\n },\n labels: function() {\n module.verbose('Setting both bar progress and outer label text');\n module.set.barLabel();\n module.set.state();\n },\n label: function(text) {\n text = text || '';\n if(text) {\n text = module.get.text(text);\n module.verbose('Setting label to text', text);\n $label.text(text);\n }\n },\n state: function(percent) {\n percent = (percent !== undefined)\n ? percent\n : module.percent\n ;\n if(percent === 100) {\n if(settings.autoSuccess && !(module.is.warning() || module.is.error() || module.is.success())) {\n module.set.success();\n module.debug('Automatically triggering success at 100%');\n }\n else {\n module.verbose('Reached 100% removing active state');\n module.remove.active();\n module.remove.progressPoll();\n }\n }\n else if(percent > 0) {\n module.verbose('Adjusting active progress bar label', percent);\n module.set.active();\n }\n else {\n module.remove.active();\n module.set.label(settings.text.active);\n }\n },\n barLabel: function(text) {\n if(text !== undefined) {\n $progress.text( module.get.text(text) );\n }\n else if(settings.label == 'ratio' && module.total) {\n module.verbose('Adding ratio to bar label');\n $progress.text( module.get.text(settings.text.ratio) );\n }\n else if(settings.label == 'percent') {\n module.verbose('Adding percentage to bar label');\n $progress.text( module.get.text(settings.text.percent) );\n }\n },\n active: function(text) {\n text = text || settings.text.active;\n module.debug('Setting active state');\n if(settings.showActivity && !module.is.active() ) {\n $module.addClass(className.active);\n }\n module.remove.warning();\n module.remove.error();\n module.remove.success();\n text = settings.onLabelUpdate('active', text, module.value, module.total);\n if(text) {\n module.set.label(text);\n }\n module.bind.transitionEnd(function() {\n settings.onActive.call(element, module.value, module.total);\n });\n },\n success : function(text) {\n text = text || settings.text.success || settings.text.active;\n module.debug('Setting success state');\n $module.addClass(className.success);\n module.remove.active();\n module.remove.warning();\n module.remove.error();\n module.complete();\n if(settings.text.success) {\n text = settings.onLabelUpdate('success', text, module.value, module.total);\n module.set.label(text);\n }\n else {\n text = settings.onLabelUpdate('active', text, module.value, module.total);\n module.set.label(text);\n }\n module.bind.transitionEnd(function() {\n settings.onSuccess.call(element, module.total);\n });\n },\n warning : function(text) {\n text = text || settings.text.warning;\n module.debug('Setting warning state');\n $module.addClass(className.warning);\n module.remove.active();\n module.remove.success();\n module.remove.error();\n module.complete();\n text = settings.onLabelUpdate('warning', text, module.value, module.total);\n if(text) {\n module.set.label(text);\n }\n module.bind.transitionEnd(function() {\n settings.onWarning.call(element, module.value, module.total);\n });\n },\n error : function(text) {\n text = text || settings.text.error;\n module.debug('Setting error state');\n $module.addClass(className.error);\n module.remove.active();\n module.remove.success();\n module.remove.warning();\n module.complete();\n text = settings.onLabelUpdate('error', text, module.value, module.total);\n if(text) {\n module.set.label(text);\n }\n module.bind.transitionEnd(function() {\n settings.onError.call(element, module.value, module.total);\n });\n },\n transitionEvent: function() {\n transitionEnd = module.get.transitionEnd();\n },\n total: function(totalValue) {\n module.total = totalValue;\n },\n value: function(value) {\n module.value = value;\n },\n progress: function(value) {\n if(!module.has.progressPoll()) {\n module.debug('First update in progress update interval, immediately updating', value);\n module.update.progress(value);\n module.create.progressPoll();\n }\n else {\n module.debug('Updated within interval, setting next update to use new value', value);\n module.set.nextValue(value);\n }\n },\n nextValue: function(value) {\n module.nextValue = value;\n }\n },\n\n update: {\n toNextValue: function() {\n var\n nextValue = module.nextValue\n ;\n if(nextValue) {\n module.debug('Update interval complete using last updated value', nextValue);\n module.update.progress(nextValue);\n module.remove.nextValue();\n }\n },\n progress: function(value) {\n var\n percentComplete\n ;\n value = module.get.numericValue(value);\n if(value === false) {\n module.error(error.nonNumeric, value);\n }\n value = module.get.normalizedValue(value);\n if( module.has.total() ) {\n module.set.value(value);\n percentComplete = (value / module.total) * 100;\n module.debug('Calculating percent complete from total', percentComplete);\n module.set.percent( percentComplete );\n }\n else {\n percentComplete = value;\n module.debug('Setting value to exact percentage value', percentComplete);\n module.set.percent( percentComplete );\n }\n }\n },\n\n setting: function(name, value) {\n module.debug('Changing setting', name, value);\n if( $.isPlainObject(name) ) {\n $.extend(true, settings, name);\n }\n else if(value !== undefined) {\n if($.isPlainObject(settings[name])) {\n $.extend(true, settings[name], value);\n }\n else {\n settings[name] = value;\n }\n }\n else {\n return settings[name];\n }\n },\n internal: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, module, name);\n }\n else if(value !== undefined) {\n module[name] = value;\n }\n else {\n return module[name];\n }\n },\n debug: function() {\n if(!settings.silent && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.debug.apply(console, arguments);\n }\n }\n },\n verbose: function() {\n if(!settings.silent && settings.verbose && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.verbose.apply(console, arguments);\n }\n }\n },\n error: function() {\n if(!settings.silent) {\n module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n module.error.apply(console, arguments);\n }\n },\n performance: {\n log: function(message) {\n var\n currentTime,\n executionTime,\n previousTime\n ;\n if(settings.performance) {\n currentTime = new Date().getTime();\n previousTime = time || currentTime;\n executionTime = currentTime - previousTime;\n time = currentTime;\n performance.push({\n 'Name' : message[0],\n 'Arguments' : [].slice.call(message, 1) || '',\n 'Element' : element,\n 'Execution Time' : executionTime\n });\n }\n clearTimeout(module.performance.timer);\n module.performance.timer = setTimeout(module.performance.display, 500);\n },\n display: function() {\n var\n title = settings.name + ':',\n totalTime = 0\n ;\n time = false;\n clearTimeout(module.performance.timer);\n $.each(performance, function(index, data) {\n totalTime += data['Execution Time'];\n });\n title += ' ' + totalTime + 'ms';\n if(moduleSelector) {\n title += ' \\'' + moduleSelector + '\\'';\n }\n if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n console.groupCollapsed(title);\n if(console.table) {\n console.table(performance);\n }\n else {\n $.each(performance, function(index, data) {\n console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n });\n }\n console.groupEnd();\n }\n performance = [];\n }\n },\n invoke: function(query, passedArguments, context) {\n var\n object = instance,\n maxDepth,\n found,\n response\n ;\n passedArguments = passedArguments || queryArguments;\n context = element || context;\n if(typeof query == 'string' && object !== undefined) {\n query = query.split(/[\\. ]/);\n maxDepth = query.length - 1;\n $.each(query, function(depth, value) {\n var camelCaseValue = (depth != maxDepth)\n ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n : query\n ;\n if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n object = object[camelCaseValue];\n }\n else if( object[camelCaseValue] !== undefined ) {\n found = object[camelCaseValue];\n return false;\n }\n else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n object = object[value];\n }\n else if( object[value] !== undefined ) {\n found = object[value];\n return false;\n }\n else {\n module.error(error.method, query);\n return false;\n }\n });\n }\n if ( $.isFunction( found ) ) {\n response = found.apply(context, passedArguments);\n }\n else if(found !== undefined) {\n response = found;\n }\n if($.isArray(returnedValue)) {\n returnedValue.push(response);\n }\n else if(returnedValue !== undefined) {\n returnedValue = [returnedValue, response];\n }\n else if(response !== undefined) {\n returnedValue = response;\n }\n return found;\n }\n };\n\n if(methodInvoked) {\n if(instance === undefined) {\n module.initialize();\n }\n module.invoke(query);\n }\n else {\n if(instance !== undefined) {\n instance.invoke('destroy');\n }\n module.initialize();\n }\n })\n ;\n\n return (returnedValue !== undefined)\n ? returnedValue\n : this\n ;\n};\n\n$.fn.progress.settings = {\n\n name : 'Progress',\n namespace : 'progress',\n\n silent : false,\n debug : false,\n verbose : false,\n performance : true,\n\n random : {\n min : 2,\n max : 5\n },\n\n duration : 300,\n\n updateInterval : 'auto',\n\n autoSuccess : true,\n showActivity : true,\n limitValues : true,\n\n label : 'percent',\n precision : 0,\n framerate : (1000 / 30), /// 30 fps\n\n percent : false,\n total : false,\n value : false,\n\n // delay in ms for fail safe animation callback\n failSafeDelay : 100,\n\n onLabelUpdate : function(state, text, value, total){\n return text;\n },\n onChange : function(percent, value, total){},\n onSuccess : function(total){},\n onActive : function(value, total){},\n onError : function(value, total){},\n onWarning : function(value, total){},\n\n error : {\n method : 'The method you called is not defined.',\n nonNumeric : 'Progress value is non numeric',\n tooHigh : 'Value specified is above 100%',\n tooLow : 'Value specified is below 0%'\n },\n\n regExp: {\n variable: /\\{\\$*[A-z0-9]+\\}/g\n },\n\n metadata: {\n percent : 'percent',\n total : 'total',\n value : 'value'\n },\n\n selector : {\n bar : '> .bar',\n label : '> .label',\n progress : '.bar > .progress'\n },\n\n text : {\n active : false,\n error : false,\n success : false,\n warning : false,\n percent : '{percent}%',\n ratio : '{value} of {total}'\n },\n\n className : {\n active : 'active',\n error : 'error',\n success : 'success',\n warning : 'warning'\n }\n\n};\n\n\n})( jQuery, window, document );\n","/*!\n * # Semantic UI 2.2.6 - Rating\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n ? window\n : (typeof self != 'undefined' && self.Math == Math)\n ? self\n : Function('return this')()\n;\n\n$.fn.rating = function(parameters) {\n var\n $allModules = $(this),\n moduleSelector = $allModules.selector || '',\n\n time = new Date().getTime(),\n performance = [],\n\n query = arguments[0],\n methodInvoked = (typeof query == 'string'),\n queryArguments = [].slice.call(arguments, 1),\n returnedValue\n ;\n $allModules\n .each(function() {\n var\n settings = ( $.isPlainObject(parameters) )\n ? $.extend(true, {}, $.fn.rating.settings, parameters)\n : $.extend({}, $.fn.rating.settings),\n\n namespace = settings.namespace,\n className = settings.className,\n metadata = settings.metadata,\n selector = settings.selector,\n error = settings.error,\n\n eventNamespace = '.' + namespace,\n moduleNamespace = 'module-' + namespace,\n\n element = this,\n instance = $(this).data(moduleNamespace),\n\n $module = $(this),\n $icon = $module.find(selector.icon),\n\n initialLoad,\n module\n ;\n\n module = {\n\n initialize: function() {\n module.verbose('Initializing rating module', settings);\n\n if($icon.length === 0) {\n module.setup.layout();\n }\n\n if(settings.interactive) {\n module.enable();\n }\n else {\n module.disable();\n }\n module.set.initialLoad();\n module.set.rating( module.get.initialRating() );\n module.remove.initialLoad();\n module.instantiate();\n },\n\n instantiate: function() {\n module.verbose('Instantiating module', settings);\n instance = module;\n $module\n .data(moduleNamespace, module)\n ;\n },\n\n destroy: function() {\n module.verbose('Destroying previous instance', instance);\n module.remove.events();\n $module\n .removeData(moduleNamespace)\n ;\n },\n\n refresh: function() {\n $icon = $module.find(selector.icon);\n },\n\n setup: {\n layout: function() {\n var\n maxRating = module.get.maxRating(),\n html = $.fn.rating.settings.templates.icon(maxRating)\n ;\n module.debug('Generating icon html dynamically');\n $module\n .html(html)\n ;\n module.refresh();\n }\n },\n\n event: {\n mouseenter: function() {\n var\n $activeIcon = $(this)\n ;\n $activeIcon\n .nextAll()\n .removeClass(className.selected)\n ;\n $module\n .addClass(className.selected)\n ;\n $activeIcon\n .addClass(className.selected)\n .prevAll()\n .addClass(className.selected)\n ;\n },\n mouseleave: function() {\n $module\n .removeClass(className.selected)\n ;\n $icon\n .removeClass(className.selected)\n ;\n },\n click: function() {\n var\n $activeIcon = $(this),\n currentRating = module.get.rating(),\n rating = $icon.index($activeIcon) + 1,\n canClear = (settings.clearable == 'auto')\n ? ($icon.length === 1)\n : settings.clearable\n ;\n if(canClear && currentRating == rating) {\n module.clearRating();\n }\n else {\n module.set.rating( rating );\n }\n }\n },\n\n clearRating: function() {\n module.debug('Clearing current rating');\n module.set.rating(0);\n },\n\n bind: {\n events: function() {\n module.verbose('Binding events');\n $module\n .on('mouseenter' + eventNamespace, selector.icon, module.event.mouseenter)\n .on('mouseleave' + eventNamespace, selector.icon, module.event.mouseleave)\n .on('click' + eventNamespace, selector.icon, module.event.click)\n ;\n }\n },\n\n remove: {\n events: function() {\n module.verbose('Removing events');\n $module\n .off(eventNamespace)\n ;\n },\n initialLoad: function() {\n initialLoad = false;\n }\n },\n\n enable: function() {\n module.debug('Setting rating to interactive mode');\n module.bind.events();\n $module\n .removeClass(className.disabled)\n ;\n },\n\n disable: function() {\n module.debug('Setting rating to read-only mode');\n module.remove.events();\n $module\n .addClass(className.disabled)\n ;\n },\n\n is: {\n initialLoad: function() {\n return initialLoad;\n }\n },\n\n get: {\n initialRating: function() {\n if($module.data(metadata.rating) !== undefined) {\n $module.removeData(metadata.rating);\n return $module.data(metadata.rating);\n }\n return settings.initialRating;\n },\n maxRating: function() {\n if($module.data(metadata.maxRating) !== undefined) {\n $module.removeData(metadata.maxRating);\n return $module.data(metadata.maxRating);\n }\n return settings.maxRating;\n },\n rating: function() {\n var\n currentRating = $icon.filter('.' + className.active).length\n ;\n module.verbose('Current rating retrieved', currentRating);\n return currentRating;\n }\n },\n\n set: {\n rating: function(rating) {\n var\n ratingIndex = (rating - 1 >= 0)\n ? (rating - 1)\n : 0,\n $activeIcon = $icon.eq(ratingIndex)\n ;\n $module\n .removeClass(className.selected)\n ;\n $icon\n .removeClass(className.selected)\n .removeClass(className.active)\n ;\n if(rating > 0) {\n module.verbose('Setting current rating to', rating);\n $activeIcon\n .prevAll()\n .addBack()\n .addClass(className.active)\n ;\n }\n if(!module.is.initialLoad()) {\n settings.onRate.call(element, rating);\n }\n },\n initialLoad: function() {\n initialLoad = true;\n }\n },\n\n setting: function(name, value) {\n module.debug('Changing setting', name, value);\n if( $.isPlainObject(name) ) {\n $.extend(true, settings, name);\n }\n else if(value !== undefined) {\n if($.isPlainObject(settings[name])) {\n $.extend(true, settings[name], value);\n }\n else {\n settings[name] = value;\n }\n }\n else {\n return settings[name];\n }\n },\n internal: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, module, name);\n }\n else if(value !== undefined) {\n module[name] = value;\n }\n else {\n return module[name];\n }\n },\n debug: function() {\n if(!settings.silent && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.debug.apply(console, arguments);\n }\n }\n },\n verbose: function() {\n if(!settings.silent && settings.verbose && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.verbose.apply(console, arguments);\n }\n }\n },\n error: function() {\n if(!settings.silent) {\n module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n module.error.apply(console, arguments);\n }\n },\n performance: {\n log: function(message) {\n var\n currentTime,\n executionTime,\n previousTime\n ;\n if(settings.performance) {\n currentTime = new Date().getTime();\n previousTime = time || currentTime;\n executionTime = currentTime - previousTime;\n time = currentTime;\n performance.push({\n 'Name' : message[0],\n 'Arguments' : [].slice.call(message, 1) || '',\n 'Element' : element,\n 'Execution Time' : executionTime\n });\n }\n clearTimeout(module.performance.timer);\n module.performance.timer = setTimeout(module.performance.display, 500);\n },\n display: function() {\n var\n title = settings.name + ':',\n totalTime = 0\n ;\n time = false;\n clearTimeout(module.performance.timer);\n $.each(performance, function(index, data) {\n totalTime += data['Execution Time'];\n });\n title += ' ' + totalTime + 'ms';\n if(moduleSelector) {\n title += ' \\'' + moduleSelector + '\\'';\n }\n if($allModules.length > 1) {\n title += ' ' + '(' + $allModules.length + ')';\n }\n if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n console.groupCollapsed(title);\n if(console.table) {\n console.table(performance);\n }\n else {\n $.each(performance, function(index, data) {\n console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n });\n }\n console.groupEnd();\n }\n performance = [];\n }\n },\n invoke: function(query, passedArguments, context) {\n var\n object = instance,\n maxDepth,\n found,\n response\n ;\n passedArguments = passedArguments || queryArguments;\n context = element || context;\n if(typeof query == 'string' && object !== undefined) {\n query = query.split(/[\\. ]/);\n maxDepth = query.length - 1;\n $.each(query, function(depth, value) {\n var camelCaseValue = (depth != maxDepth)\n ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n : query\n ;\n if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n object = object[camelCaseValue];\n }\n else if( object[camelCaseValue] !== undefined ) {\n found = object[camelCaseValue];\n return false;\n }\n else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n object = object[value];\n }\n else if( object[value] !== undefined ) {\n found = object[value];\n return false;\n }\n else {\n return false;\n }\n });\n }\n if ( $.isFunction( found ) ) {\n response = found.apply(context, passedArguments);\n }\n else if(found !== undefined) {\n response = found;\n }\n if($.isArray(returnedValue)) {\n returnedValue.push(response);\n }\n else if(returnedValue !== undefined) {\n returnedValue = [returnedValue, response];\n }\n else if(response !== undefined) {\n returnedValue = response;\n }\n return found;\n }\n };\n if(methodInvoked) {\n if(instance === undefined) {\n module.initialize();\n }\n module.invoke(query);\n }\n else {\n if(instance !== undefined) {\n instance.invoke('destroy');\n }\n module.initialize();\n }\n })\n ;\n\n return (returnedValue !== undefined)\n ? returnedValue\n : this\n ;\n};\n\n$.fn.rating.settings = {\n\n name : 'Rating',\n namespace : 'rating',\n\n slent : false,\n debug : false,\n verbose : false,\n performance : true,\n\n initialRating : 0,\n interactive : true,\n maxRating : 4,\n clearable : 'auto',\n\n fireOnInit : false,\n\n onRate : function(rating){},\n\n error : {\n method : 'The method you called is not defined',\n noMaximum : 'No maximum rating specified. Cannot generate HTML automatically'\n },\n\n\n metadata: {\n rating : 'rating',\n maxRating : 'maxRating'\n },\n\n className : {\n active : 'active',\n disabled : 'disabled',\n selected : 'selected',\n loading : 'loading'\n },\n\n selector : {\n icon : '.icon'\n },\n\n templates: {\n icon: function(maxRating) {\n var\n icon = 1,\n html = ''\n ;\n while(icon <= maxRating) {\n html += '<i class=\"icon\"></i>';\n icon++;\n }\n return html;\n }\n }\n\n};\n\n})( jQuery, window, document );\n","/*!\n * # Semantic UI 2.2.6 - Search\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n ? window\n : (typeof self != 'undefined' && self.Math == Math)\n ? self\n : Function('return this')()\n;\n\n$.fn.search = function(parameters) {\n var\n $allModules = $(this),\n moduleSelector = $allModules.selector || '',\n\n time = new Date().getTime(),\n performance = [],\n\n query = arguments[0],\n methodInvoked = (typeof query == 'string'),\n queryArguments = [].slice.call(arguments, 1),\n returnedValue\n ;\n $(this)\n .each(function() {\n var\n settings = ( $.isPlainObject(parameters) )\n ? $.extend(true, {}, $.fn.search.settings, parameters)\n : $.extend({}, $.fn.search.settings),\n\n className = settings.className,\n metadata = settings.metadata,\n regExp = settings.regExp,\n fields = settings.fields,\n selector = settings.selector,\n error = settings.error,\n namespace = settings.namespace,\n\n eventNamespace = '.' + namespace,\n moduleNamespace = namespace + '-module',\n\n $module = $(this),\n $prompt = $module.find(selector.prompt),\n $searchButton = $module.find(selector.searchButton),\n $results = $module.find(selector.results),\n $result = $module.find(selector.result),\n $category = $module.find(selector.category),\n\n element = this,\n instance = $module.data(moduleNamespace),\n\n disabledBubbled = false,\n\n module\n ;\n\n module = {\n\n initialize: function() {\n module.verbose('Initializing module');\n module.determine.searchFields();\n module.bind.events();\n module.set.type();\n module.create.results();\n module.instantiate();\n },\n instantiate: function() {\n module.verbose('Storing instance of module', module);\n instance = module;\n $module\n .data(moduleNamespace, module)\n ;\n },\n destroy: function() {\n module.verbose('Destroying instance');\n $module\n .off(eventNamespace)\n .removeData(moduleNamespace)\n ;\n },\n\n refresh: function() {\n module.debug('Refreshing selector cache');\n $prompt = $module.find(selector.prompt);\n $searchButton = $module.find(selector.searchButton);\n $category = $module.find(selector.category);\n $results = $module.find(selector.results);\n $result = $module.find(selector.result);\n },\n\n refreshResults: function() {\n $results = $module.find(selector.results);\n $result = $module.find(selector.result);\n },\n\n bind: {\n events: function() {\n module.verbose('Binding events to search');\n if(settings.automatic) {\n $module\n .on(module.get.inputEvent() + eventNamespace, selector.prompt, module.event.input)\n ;\n $prompt\n .attr('autocomplete', 'off')\n ;\n }\n $module\n // prompt\n .on('focus' + eventNamespace, selector.prompt, module.event.focus)\n .on('blur' + eventNamespace, selector.prompt, module.event.blur)\n .on('keydown' + eventNamespace, selector.prompt, module.handleKeyboard)\n // search button\n .on('click' + eventNamespace, selector.searchButton, module.query)\n // results\n .on('mousedown' + eventNamespace, selector.results, module.event.result.mousedown)\n .on('mouseup' + eventNamespace, selector.results, module.event.result.mouseup)\n .on('click' + eventNamespace, selector.result, module.event.result.click)\n ;\n }\n },\n\n determine: {\n searchFields: function() {\n // this makes sure $.extend does not add specified search fields to default fields\n // this is the only setting which should not extend defaults\n if(parameters && parameters.searchFields !== undefined) {\n settings.searchFields = parameters.searchFields;\n }\n }\n },\n\n event: {\n input: function() {\n clearTimeout(module.timer);\n module.timer = setTimeout(module.query, settings.searchDelay);\n },\n focus: function() {\n module.set.focus();\n if( module.has.minimumCharacters() ) {\n module.query();\n if( module.can.show() ) {\n module.showResults();\n }\n }\n },\n blur: function(event) {\n var\n pageLostFocus = (document.activeElement === this),\n callback = function() {\n module.cancel.query();\n module.remove.focus();\n module.timer = setTimeout(module.hideResults, settings.hideDelay);\n }\n ;\n if(pageLostFocus) {\n return;\n }\n if(module.resultsClicked) {\n module.debug('Determining if user action caused search to close');\n $module\n .one('click.close' + eventNamespace, selector.results, function(event) {\n if(module.is.inMessage(event) || disabledBubbled) {\n $prompt.focus();\n return;\n }\n disabledBubbled = false;\n if( !module.is.animating() && !module.is.hidden()) {\n callback();\n }\n })\n ;\n }\n else {\n module.debug('Input blurred without user action, closing results');\n callback();\n }\n },\n result: {\n mousedown: function() {\n module.resultsClicked = true;\n },\n mouseup: function() {\n module.resultsClicked = false;\n },\n click: function(event) {\n module.debug('Search result selected');\n var\n $result = $(this),\n $title = $result.find(selector.title).eq(0),\n $link = $result.is('a[href]')\n ? $result\n : $result.find('a[href]').eq(0),\n href = $link.attr('href') || false,\n target = $link.attr('target') || false,\n title = $title.html(),\n // title is used for result lookup\n value = ($title.length > 0)\n ? $title.text()\n : false,\n results = module.get.results(),\n result = $result.data(metadata.result) || module.get.result(value, results),\n returnedValue\n ;\n if( $.isFunction(settings.onSelect) ) {\n if(settings.onSelect.call(element, result, results) === false) {\n module.debug('Custom onSelect callback cancelled default select action');\n disabledBubbled = true;\n return;\n }\n }\n module.hideResults();\n if(value) {\n module.set.value(value);\n }\n if(href) {\n module.verbose('Opening search link found in result', $link);\n if(target == '_blank' || event.ctrlKey) {\n window.open(href);\n }\n else {\n window.location.href = (href);\n }\n }\n }\n }\n },\n handleKeyboard: function(event) {\n var\n // force selector refresh\n $result = $module.find(selector.result),\n $category = $module.find(selector.category),\n $activeResult = $result.filter('.' + className.active),\n currentIndex = $result.index( $activeResult ),\n resultSize = $result.length,\n hasActiveResult = $activeResult.length > 0,\n\n keyCode = event.which,\n keys = {\n backspace : 8,\n enter : 13,\n escape : 27,\n upArrow : 38,\n downArrow : 40\n },\n newIndex\n ;\n // search shortcuts\n if(keyCode == keys.escape) {\n module.verbose('Escape key pressed, blurring search field');\n module.trigger.blur();\n }\n if( module.is.visible() ) {\n if(keyCode == keys.enter) {\n module.verbose('Enter key pressed, selecting active result');\n if( $result.filter('.' + className.active).length > 0 ) {\n module.event.result.click.call($result.filter('.' + className.active), event);\n event.preventDefault();\n return false;\n }\n }\n else if(keyCode == keys.upArrow && hasActiveResult) {\n module.verbose('Up key pressed, changing active result');\n newIndex = (currentIndex - 1 < 0)\n ? currentIndex\n : currentIndex - 1\n ;\n $category\n .removeClass(className.active)\n ;\n $result\n .removeClass(className.active)\n .eq(newIndex)\n .addClass(className.active)\n .closest($category)\n .addClass(className.active)\n ;\n event.preventDefault();\n }\n else if(keyCode == keys.downArrow) {\n module.verbose('Down key pressed, changing active result');\n newIndex = (currentIndex + 1 >= resultSize)\n ? currentIndex\n : currentIndex + 1\n ;\n $category\n .removeClass(className.active)\n ;\n $result\n .removeClass(className.active)\n .eq(newIndex)\n .addClass(className.active)\n .closest($category)\n .addClass(className.active)\n ;\n event.preventDefault();\n }\n }\n else {\n // query shortcuts\n if(keyCode == keys.enter) {\n module.verbose('Enter key pressed, executing query');\n module.query();\n module.set.buttonPressed();\n $prompt.one('keyup', module.remove.buttonFocus);\n }\n }\n },\n\n setup: {\n api: function(searchTerm) {\n var\n apiSettings = {\n debug : settings.debug,\n on : false,\n cache : true,\n action : 'search',\n urlData : {\n query : searchTerm\n },\n onSuccess : function(response) {\n module.parse.response.call(element, response, searchTerm);\n },\n onAbort : function(response) {\n },\n onFailure : function() {\n module.displayMessage(error.serverError);\n },\n onError : module.error\n },\n searchHTML\n ;\n $.extend(true, apiSettings, settings.apiSettings);\n module.verbose('Setting up API request', apiSettings);\n $module.api(apiSettings);\n }\n },\n\n can: {\n useAPI: function() {\n return $.fn.api !== undefined;\n },\n show: function() {\n return module.is.focused() && !module.is.visible() && !module.is.empty();\n },\n transition: function() {\n return settings.transition && $.fn.transition !== undefined && $module.transition('is supported');\n }\n },\n\n is: {\n animating: function() {\n return $results.hasClass(className.animating);\n },\n hidden: function() {\n return $results.hasClass(className.hidden);\n },\n inMessage: function(event) {\n if(!event.target) {\n return;\n }\n var\n $target = $(event.target),\n isInDOM = $.contains(document.documentElement, event.target)\n ;\n return (isInDOM && $target.closest(selector.message).length > 0);\n },\n empty: function() {\n return ($results.html() === '');\n },\n visible: function() {\n return ($results.filter(':visible').length > 0);\n },\n focused: function() {\n return ($prompt.filter(':focus').length > 0);\n }\n },\n\n trigger: {\n blur: function() {\n var\n events = document.createEvent('HTMLEvents'),\n promptElement = $prompt[0]\n ;\n if(promptElement) {\n module.verbose('Triggering native blur event');\n events.initEvent('blur', false, false);\n promptElement.dispatchEvent(events);\n }\n }\n },\n\n get: {\n inputEvent: function() {\n var\n prompt = $prompt[0],\n inputEvent = (prompt !== undefined && prompt.oninput !== undefined)\n ? 'input'\n : (prompt !== undefined && prompt.onpropertychange !== undefined)\n ? 'propertychange'\n : 'keyup'\n ;\n return inputEvent;\n },\n value: function() {\n return $prompt.val();\n },\n results: function() {\n var\n results = $module.data(metadata.results)\n ;\n return results;\n },\n result: function(value, results) {\n var\n lookupFields = ['title', 'id'],\n result = false\n ;\n value = (value !== undefined)\n ? value\n : module.get.value()\n ;\n results = (results !== undefined)\n ? results\n : module.get.results()\n ;\n if(settings.type === 'category') {\n module.debug('Finding result that matches', value);\n $.each(results, function(index, category) {\n if($.isArray(category.results)) {\n result = module.search.object(value, category.results, lookupFields)[0];\n // don't continue searching if a result is found\n if(result) {\n return false;\n }\n }\n });\n }\n else {\n module.debug('Finding result in results object', value);\n result = module.search.object(value, results, lookupFields)[0];\n }\n return result || false;\n },\n },\n\n select: {\n firstResult: function() {\n module.verbose('Selecting first result');\n $result.first().addClass(className.active);\n }\n },\n\n set: {\n focus: function() {\n $module.addClass(className.focus);\n },\n loading: function() {\n $module.addClass(className.loading);\n },\n value: function(value) {\n module.verbose('Setting search input value', value);\n $prompt\n .val(value)\n ;\n },\n type: function(type) {\n type = type || settings.type;\n if(settings.type == 'category') {\n $module.addClass(settings.type);\n }\n },\n buttonPressed: function() {\n $searchButton.addClass(className.pressed);\n }\n },\n\n remove: {\n loading: function() {\n $module.removeClass(className.loading);\n },\n focus: function() {\n $module.removeClass(className.focus);\n },\n buttonPressed: function() {\n $searchButton.removeClass(className.pressed);\n }\n },\n\n query: function() {\n var\n searchTerm = module.get.value(),\n cache = module.read.cache(searchTerm)\n ;\n if( module.has.minimumCharacters() ) {\n if(cache) {\n module.debug('Reading result from cache', searchTerm);\n module.save.results(cache.results);\n module.addResults(cache.html);\n module.inject.id(cache.results);\n }\n else {\n module.debug('Querying for', searchTerm);\n if($.isPlainObject(settings.source) || $.isArray(settings.source)) {\n module.search.local(searchTerm);\n }\n else if( module.can.useAPI() ) {\n module.search.remote(searchTerm);\n }\n else {\n module.error(error.source);\n }\n }\n settings.onSearchQuery.call(element, searchTerm);\n }\n else {\n module.hideResults();\n }\n },\n\n search: {\n local: function(searchTerm) {\n var\n results = module.search.object(searchTerm, settings.content),\n searchHTML\n ;\n module.set.loading();\n module.save.results(results);\n module.debug('Returned local search results', results);\n\n searchHTML = module.generateResults({\n results: results\n });\n module.remove.loading();\n module.addResults(searchHTML);\n module.inject.id(results);\n module.write.cache(searchTerm, {\n html : searchHTML,\n results : results\n });\n },\n remote: function(searchTerm) {\n if($module.api('is loading')) {\n $module.api('abort');\n }\n module.setup.api(searchTerm);\n $module\n .api('query')\n ;\n },\n object: function(searchTerm, source, searchFields) {\n var\n results = [],\n fuzzyResults = [],\n searchExp = searchTerm.toString().replace(regExp.escape, '\\\\$&'),\n matchRegExp = new RegExp(regExp.beginsWith + searchExp, 'i'),\n\n // avoid duplicates when pushing results\n addResult = function(array, result) {\n var\n notResult = ($.inArray(result, results) == -1),\n notFuzzyResult = ($.inArray(result, fuzzyResults) == -1)\n ;\n if(notResult && notFuzzyResult) {\n array.push(result);\n }\n }\n ;\n source = source || settings.source;\n searchFields = (searchFields !== undefined)\n ? searchFields\n : settings.searchFields\n ;\n\n // search fields should be array to loop correctly\n if(!$.isArray(searchFields)) {\n searchFields = [searchFields];\n }\n\n // exit conditions if no source\n if(source === undefined || source === false) {\n module.error(error.source);\n return [];\n }\n\n // iterate through search fields looking for matches\n $.each(searchFields, function(index, field) {\n $.each(source, function(label, content) {\n var\n fieldExists = (typeof content[field] == 'string')\n ;\n if(fieldExists) {\n if( content[field].search(matchRegExp) !== -1) {\n // content starts with value (first in results)\n addResult(results, content);\n }\n else if(settings.searchFullText && module.fuzzySearch(searchTerm, content[field]) ) {\n // content fuzzy matches (last in results)\n addResult(fuzzyResults, content);\n }\n }\n });\n });\n return $.merge(results, fuzzyResults);\n }\n },\n\n fuzzySearch: function(query, term) {\n var\n termLength = term.length,\n queryLength = query.length\n ;\n if(typeof query !== 'string') {\n return false;\n }\n query = query.toLowerCase();\n term = term.toLowerCase();\n if(queryLength > termLength) {\n return false;\n }\n if(queryLength === termLength) {\n return (query === term);\n }\n search: for (var characterIndex = 0, nextCharacterIndex = 0; characterIndex < queryLength; characterIndex++) {\n var\n queryCharacter = query.charCodeAt(characterIndex)\n ;\n while(nextCharacterIndex < termLength) {\n if(term.charCodeAt(nextCharacterIndex++) === queryCharacter) {\n continue search;\n }\n }\n return false;\n }\n return true;\n },\n\n parse: {\n response: function(response, searchTerm) {\n var\n searchHTML = module.generateResults(response)\n ;\n module.verbose('Parsing server response', response);\n if(response !== undefined) {\n if(searchTerm !== undefined && response[fields.results] !== undefined) {\n module.addResults(searchHTML);\n module.inject.id(response[fields.results]);\n module.write.cache(searchTerm, {\n html : searchHTML,\n results : response[fields.results]\n });\n module.save.results(response[fields.results]);\n }\n }\n }\n },\n\n cancel: {\n query: function() {\n if( module.can.useAPI() ) {\n $module.api('abort');\n }\n }\n },\n\n has: {\n minimumCharacters: function() {\n var\n searchTerm = module.get.value(),\n numCharacters = searchTerm.length\n ;\n return (numCharacters >= settings.minCharacters);\n }\n },\n\n clear: {\n cache: function(value) {\n var\n cache = $module.data(metadata.cache)\n ;\n if(!value) {\n module.debug('Clearing cache', value);\n $module.removeData(metadata.cache);\n }\n else if(value && cache && cache[value]) {\n module.debug('Removing value from cache', value);\n delete cache[value];\n $module.data(metadata.cache, cache);\n }\n }\n },\n\n read: {\n cache: function(name) {\n var\n cache = $module.data(metadata.cache)\n ;\n if(settings.cache) {\n module.verbose('Checking cache for generated html for query', name);\n return (typeof cache == 'object') && (cache[name] !== undefined)\n ? cache[name]\n : false\n ;\n }\n return false;\n }\n },\n\n create: {\n id: function(resultIndex, categoryIndex) {\n var\n resultID = (resultIndex + 1), // not zero indexed\n categoryID = (categoryIndex + 1),\n firstCharCode,\n letterID,\n id\n ;\n if(categoryIndex !== undefined) {\n // start char code for \"A\"\n letterID = String.fromCharCode(97 + categoryIndex);\n id = letterID + resultID;\n module.verbose('Creating category result id', id);\n }\n else {\n id = resultID;\n module.verbose('Creating result id', id);\n }\n return id;\n },\n results: function() {\n if($results.length === 0) {\n $results = $('<div />')\n .addClass(className.results)\n .appendTo($module)\n ;\n }\n }\n },\n\n inject: {\n result: function(result, resultIndex, categoryIndex) {\n module.verbose('Injecting result into results');\n var\n $selectedResult = (categoryIndex !== undefined)\n ? $results\n .children().eq(categoryIndex)\n .children(selector.result).eq(resultIndex)\n : $results\n .children(selector.result).eq(resultIndex)\n ;\n module.verbose('Injecting results metadata', $selectedResult);\n $selectedResult\n .data(metadata.result, result)\n ;\n },\n id: function(results) {\n module.debug('Injecting unique ids into results');\n var\n // since results may be object, we must use counters\n categoryIndex = 0,\n resultIndex = 0\n ;\n if(settings.type === 'category') {\n // iterate through each category result\n $.each(results, function(index, category) {\n resultIndex = 0;\n $.each(category.results, function(index, value) {\n var\n result = category.results[index]\n ;\n if(result.id === undefined) {\n result.id = module.create.id(resultIndex, categoryIndex);\n }\n module.inject.result(result, resultIndex, categoryIndex);\n resultIndex++;\n });\n categoryIndex++;\n });\n }\n else {\n // top level\n $.each(results, function(index, value) {\n var\n result = results[index]\n ;\n if(result.id === undefined) {\n result.id = module.create.id(resultIndex);\n }\n module.inject.result(result, resultIndex);\n resultIndex++;\n });\n }\n return results;\n }\n },\n\n save: {\n results: function(results) {\n module.verbose('Saving current search results to metadata', results);\n $module.data(metadata.results, results);\n }\n },\n\n write: {\n cache: function(name, value) {\n var\n cache = ($module.data(metadata.cache) !== undefined)\n ? $module.data(metadata.cache)\n : {}\n ;\n if(settings.cache) {\n module.verbose('Writing generated html to cache', name, value);\n cache[name] = value;\n $module\n .data(metadata.cache, cache)\n ;\n }\n }\n },\n\n addResults: function(html) {\n if( $.isFunction(settings.onResultsAdd) ) {\n if( settings.onResultsAdd.call($results, html) === false ) {\n module.debug('onResultsAdd callback cancelled default action');\n return false;\n }\n }\n if(html) {\n $results\n .html(html)\n ;\n module.refreshResults();\n if(settings.selectFirstResult) {\n module.select.firstResult();\n }\n module.showResults();\n }\n else {\n module.hideResults();\n }\n },\n\n showResults: function() {\n if(!module.is.visible()) {\n if( module.can.transition() ) {\n module.debug('Showing results with css animations');\n $results\n .transition({\n animation : settings.transition + ' in',\n debug : settings.debug,\n verbose : settings.verbose,\n duration : settings.duration,\n queue : true\n })\n ;\n }\n else {\n module.debug('Showing results with javascript');\n $results\n .stop()\n .fadeIn(settings.duration, settings.easing)\n ;\n }\n settings.onResultsOpen.call($results);\n }\n },\n hideResults: function() {\n if( module.is.visible() ) {\n if( module.can.transition() ) {\n module.debug('Hiding results with css animations');\n $results\n .transition({\n animation : settings.transition + ' out',\n debug : settings.debug,\n verbose : settings.verbose,\n duration : settings.duration,\n queue : true\n })\n ;\n }\n else {\n module.debug('Hiding results with javascript');\n $results\n .stop()\n .fadeOut(settings.duration, settings.easing)\n ;\n }\n settings.onResultsClose.call($results);\n }\n },\n\n generateResults: function(response) {\n module.debug('Generating html from response', response);\n var\n template = settings.templates[settings.type],\n isProperObject = ($.isPlainObject(response[fields.results]) && !$.isEmptyObject(response[fields.results])),\n isProperArray = ($.isArray(response[fields.results]) && response[fields.results].length > 0),\n html = ''\n ;\n if(isProperObject || isProperArray ) {\n if(settings.maxResults > 0) {\n if(isProperObject) {\n if(settings.type == 'standard') {\n module.error(error.maxResults);\n }\n }\n else {\n response[fields.results] = response[fields.results].slice(0, settings.maxResults);\n }\n }\n if($.isFunction(template)) {\n html = template(response, fields);\n }\n else {\n module.error(error.noTemplate, false);\n }\n }\n else if(settings.showNoResults) {\n html = module.displayMessage(error.noResults, 'empty');\n }\n settings.onResults.call(element, response);\n return html;\n },\n\n displayMessage: function(text, type) {\n type = type || 'standard';\n module.debug('Displaying message', text, type);\n module.addResults( settings.templates.message(text, type) );\n return settings.templates.message(text, type);\n },\n\n setting: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, settings, name);\n }\n else if(value !== undefined) {\n settings[name] = value;\n }\n else {\n return settings[name];\n }\n },\n internal: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, module, name);\n }\n else if(value !== undefined) {\n module[name] = value;\n }\n else {\n return module[name];\n }\n },\n debug: function() {\n if(!settings.silent && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.debug.apply(console, arguments);\n }\n }\n },\n verbose: function() {\n if(!settings.silent && settings.verbose && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.verbose.apply(console, arguments);\n }\n }\n },\n error: function() {\n if(!settings.silent) {\n module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n module.error.apply(console, arguments);\n }\n },\n performance: {\n log: function(message) {\n var\n currentTime,\n executionTime,\n previousTime\n ;\n if(settings.performance) {\n currentTime = new Date().getTime();\n previousTime = time || currentTime;\n executionTime = currentTime - previousTime;\n time = currentTime;\n performance.push({\n 'Name' : message[0],\n 'Arguments' : [].slice.call(message, 1) || '',\n 'Element' : element,\n 'Execution Time' : executionTime\n });\n }\n clearTimeout(module.performance.timer);\n module.performance.timer = setTimeout(module.performance.display, 500);\n },\n display: function() {\n var\n title = settings.name + ':',\n totalTime = 0\n ;\n time = false;\n clearTimeout(module.performance.timer);\n $.each(performance, function(index, data) {\n totalTime += data['Execution Time'];\n });\n title += ' ' + totalTime + 'ms';\n if(moduleSelector) {\n title += ' \\'' + moduleSelector + '\\'';\n }\n if($allModules.length > 1) {\n title += ' ' + '(' + $allModules.length + ')';\n }\n if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n console.groupCollapsed(title);\n if(console.table) {\n console.table(performance);\n }\n else {\n $.each(performance, function(index, data) {\n console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n });\n }\n console.groupEnd();\n }\n performance = [];\n }\n },\n invoke: function(query, passedArguments, context) {\n var\n object = instance,\n maxDepth,\n found,\n response\n ;\n passedArguments = passedArguments || queryArguments;\n context = element || context;\n if(typeof query == 'string' && object !== undefined) {\n query = query.split(/[\\. ]/);\n maxDepth = query.length - 1;\n $.each(query, function(depth, value) {\n var camelCaseValue = (depth != maxDepth)\n ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n : query\n ;\n if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n object = object[camelCaseValue];\n }\n else if( object[camelCaseValue] !== undefined ) {\n found = object[camelCaseValue];\n return false;\n }\n else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n object = object[value];\n }\n else if( object[value] !== undefined ) {\n found = object[value];\n return false;\n }\n else {\n return false;\n }\n });\n }\n if( $.isFunction( found ) ) {\n response = found.apply(context, passedArguments);\n }\n else if(found !== undefined) {\n response = found;\n }\n if($.isArray(returnedValue)) {\n returnedValue.push(response);\n }\n else if(returnedValue !== undefined) {\n returnedValue = [returnedValue, response];\n }\n else if(response !== undefined) {\n returnedValue = response;\n }\n return found;\n }\n };\n if(methodInvoked) {\n if(instance === undefined) {\n module.initialize();\n }\n module.invoke(query);\n }\n else {\n if(instance !== undefined) {\n instance.invoke('destroy');\n }\n module.initialize();\n }\n\n })\n ;\n\n return (returnedValue !== undefined)\n ? returnedValue\n : this\n ;\n};\n\n$.fn.search.settings = {\n\n name : 'Search',\n namespace : 'search',\n\n silent : false,\n debug : false,\n verbose : false,\n performance : true,\n\n // template to use (specified in settings.templates)\n type : 'standard',\n\n // minimum characters required to search\n minCharacters : 1,\n\n // whether to select first result after searching automatically\n selectFirstResult : false,\n\n // API config\n apiSettings : false,\n\n // object to search\n source : false,\n\n // fields to search\n searchFields : [\n 'title',\n 'description'\n ],\n\n // field to display in standard results template\n displayField : '',\n\n // whether to include fuzzy results in local search\n searchFullText : true,\n\n // whether to add events to prompt automatically\n automatic : true,\n\n // delay before hiding menu after blur\n hideDelay : 0,\n\n // delay before searching\n searchDelay : 200,\n\n // maximum results returned from local\n maxResults : 7,\n\n // whether to store lookups in local cache\n cache : true,\n\n // whether no results errors should be shown\n showNoResults : true,\n\n // transition settings\n transition : 'scale',\n duration : 200,\n easing : 'easeOutExpo',\n\n // callbacks\n onSelect : false,\n onResultsAdd : false,\n\n onSearchQuery : function(query){},\n onResults : function(response){},\n\n onResultsOpen : function(){},\n onResultsClose : function(){},\n\n className: {\n animating : 'animating',\n active : 'active',\n empty : 'empty',\n focus : 'focus',\n hidden : 'hidden',\n loading : 'loading',\n results : 'results',\n pressed : 'down'\n },\n\n error : {\n source : 'Cannot search. No source used, and Semantic API module was not included',\n noResults : 'Your search returned no results',\n logging : 'Error in debug logging, exiting.',\n noEndpoint : 'No search endpoint was specified',\n noTemplate : 'A valid template name was not specified.',\n serverError : 'There was an issue querying the server.',\n maxResults : 'Results must be an array to use maxResults setting',\n method : 'The method you called is not defined.'\n },\n\n metadata: {\n cache : 'cache',\n results : 'results',\n result : 'result'\n },\n\n regExp: {\n escape : /[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,\n beginsWith : '(?:\\s|^)'\n },\n\n // maps api response attributes to internal representation\n fields: {\n categories : 'results', // array of categories (category view)\n categoryName : 'name', // name of category (category view)\n categoryResults : 'results', // array of results (category view)\n description : 'description', // result description\n image : 'image', // result image\n price : 'price', // result price\n results : 'results', // array of results (standard)\n title : 'title', // result title\n url : 'url', // result url\n action : 'action', // \"view more\" object name\n actionText : 'text', // \"view more\" text\n actionURL : 'url' // \"view more\" url\n },\n\n selector : {\n prompt : '.prompt',\n searchButton : '.search.button',\n results : '.results',\n message : '.results > .message',\n category : '.category',\n result : '.result',\n title : '.title, .name'\n },\n\n templates: {\n escape: function(string) {\n var\n badChars = /[&<>\"'`]/g,\n shouldEscape = /[&<>\"'`]/,\n escape = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\",\n \"`\": \"`\"\n },\n escapedChar = function(chr) {\n return escape[chr];\n }\n ;\n if(shouldEscape.test(string)) {\n return string.replace(badChars, escapedChar);\n }\n return string;\n },\n message: function(message, type) {\n var\n html = ''\n ;\n if(message !== undefined && type !== undefined) {\n html += ''\n + '<div class=\"message ' + type + '\">'\n ;\n // message type\n if(type == 'empty') {\n html += ''\n + '<div class=\"header\">No Results</div class=\"header\">'\n + '<div class=\"description\">' + message + '</div class=\"description\">'\n ;\n }\n else {\n html += ' <div class=\"description\">' + message + '</div>';\n }\n html += '</div>';\n }\n return html;\n },\n category: function(response, fields) {\n var\n html = '',\n escape = $.fn.search.settings.templates.escape\n ;\n if(response[fields.categoryResults] !== undefined) {\n\n // each category\n $.each(response[fields.categoryResults], function(index, category) {\n if(category[fields.results] !== undefined && category.results.length > 0) {\n\n html += '<div class=\"category\">';\n\n if(category[fields.categoryName] !== undefined) {\n html += '<div class=\"name\">' + category[fields.categoryName] + '</div>';\n }\n\n // each item inside category\n $.each(category.results, function(index, result) {\n if(result[fields.url]) {\n html += '<a class=\"result\" href=\"' + result[fields.url] + '\">';\n }\n else {\n html += '<a class=\"result\">';\n }\n if(result[fields.image] !== undefined) {\n html += ''\n + '<div class=\"image\">'\n + ' <img src=\"' + result[fields.image] + '\">'\n + '</div>'\n ;\n }\n html += '<div class=\"content\">';\n if(result[fields.price] !== undefined) {\n html += '<div class=\"price\">' + result[fields.price] + '</div>';\n }\n if(result[fields.title] !== undefined) {\n html += '<div class=\"title\">' + result[fields.title] + '</div>';\n }\n if(result[fields.description] !== undefined) {\n html += '<div class=\"description\">' + result[fields.description] + '</div>';\n }\n html += ''\n + '</div>'\n ;\n html += '</a>';\n });\n html += ''\n + '</div>'\n ;\n }\n });\n if(response[fields.action]) {\n html += ''\n + '<a href=\"' + response[fields.action][fields.actionURL] + '\" class=\"action\">'\n + response[fields.action][fields.actionText]\n + '</a>';\n }\n return html;\n }\n return false;\n },\n standard: function(response, fields) {\n var\n html = ''\n ;\n if(response[fields.results] !== undefined) {\n\n // each result\n $.each(response[fields.results], function(index, result) {\n if(result[fields.url]) {\n html += '<a class=\"result\" href=\"' + result[fields.url] + '\">';\n }\n else {\n html += '<a class=\"result\">';\n }\n if(result[fields.image] !== undefined) {\n html += ''\n + '<div class=\"image\">'\n + ' <img src=\"' + result[fields.image] + '\">'\n + '</div>'\n ;\n }\n html += '<div class=\"content\">';\n if(result[fields.price] !== undefined) {\n html += '<div class=\"price\">' + result[fields.price] + '</div>';\n }\n if(result[fields.title] !== undefined) {\n html += '<div class=\"title\">' + result[fields.title] + '</div>';\n }\n if(result[fields.description] !== undefined) {\n html += '<div class=\"description\">' + result[fields.description] + '</div>';\n }\n html += ''\n + '</div>'\n ;\n html += '</a>';\n });\n\n if(response[fields.action]) {\n html += ''\n + '<a href=\"' + response[fields.action][fields.actionURL] + '\" class=\"action\">'\n + response[fields.action][fields.actionText]\n + '</a>';\n }\n return html;\n }\n return false;\n }\n }\n};\n\n})( jQuery, window, document );\n","/*!\n * # Semantic UI 2.2.6 - Shape\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n ? window\n : (typeof self != 'undefined' && self.Math == Math)\n ? self\n : Function('return this')()\n;\n\n$.fn.shape = function(parameters) {\n var\n $allModules = $(this),\n $body = $('body'),\n\n time = new Date().getTime(),\n performance = [],\n\n query = arguments[0],\n methodInvoked = (typeof query == 'string'),\n queryArguments = [].slice.call(arguments, 1),\n\n requestAnimationFrame = window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || function(callback) { setTimeout(callback, 0); },\n\n returnedValue\n ;\n\n $allModules\n .each(function() {\n var\n moduleSelector = $allModules.selector || '',\n settings = ( $.isPlainObject(parameters) )\n ? $.extend(true, {}, $.fn.shape.settings, parameters)\n : $.extend({}, $.fn.shape.settings),\n\n // internal aliases\n namespace = settings.namespace,\n selector = settings.selector,\n error = settings.error,\n className = settings.className,\n\n // define namespaces for modules\n eventNamespace = '.' + namespace,\n moduleNamespace = 'module-' + namespace,\n\n // selector cache\n $module = $(this),\n $sides = $module.find(selector.sides),\n $side = $module.find(selector.side),\n\n // private variables\n nextIndex = false,\n $activeSide,\n $nextSide,\n\n // standard module\n element = this,\n instance = $module.data(moduleNamespace),\n module\n ;\n\n module = {\n\n initialize: function() {\n module.verbose('Initializing module for', element);\n module.set.defaultSide();\n module.instantiate();\n },\n\n instantiate: function() {\n module.verbose('Storing instance of module', module);\n instance = module;\n $module\n .data(moduleNamespace, instance)\n ;\n },\n\n destroy: function() {\n module.verbose('Destroying previous module for', element);\n $module\n .removeData(moduleNamespace)\n .off(eventNamespace)\n ;\n },\n\n refresh: function() {\n module.verbose('Refreshing selector cache for', element);\n $module = $(element);\n $sides = $(this).find(selector.shape);\n $side = $(this).find(selector.side);\n },\n\n repaint: function() {\n module.verbose('Forcing repaint event');\n var\n shape = $sides[0] || document.createElement('div'),\n fakeAssignment = shape.offsetWidth\n ;\n },\n\n animate: function(propertyObject, callback) {\n module.verbose('Animating box with properties', propertyObject);\n callback = callback || function(event) {\n module.verbose('Executing animation callback');\n if(event !== undefined) {\n event.stopPropagation();\n }\n module.reset();\n module.set.active();\n };\n settings.beforeChange.call($nextSide[0]);\n if(module.get.transitionEvent()) {\n module.verbose('Starting CSS animation');\n $module\n .addClass(className.animating)\n ;\n $sides\n .css(propertyObject)\n .one(module.get.transitionEvent(), callback)\n ;\n module.set.duration(settings.duration);\n requestAnimationFrame(function() {\n $module\n .addClass(className.animating)\n ;\n $activeSide\n .addClass(className.hidden)\n ;\n });\n }\n else {\n callback();\n }\n },\n\n queue: function(method) {\n module.debug('Queueing animation of', method);\n $sides\n .one(module.get.transitionEvent(), function() {\n module.debug('Executing queued animation');\n setTimeout(function(){\n $module.shape(method);\n }, 0);\n })\n ;\n },\n\n reset: function() {\n module.verbose('Animating states reset');\n $module\n .removeClass(className.animating)\n .attr('style', '')\n .removeAttr('style')\n ;\n // removeAttr style does not consistently work in safari\n $sides\n .attr('style', '')\n .removeAttr('style')\n ;\n $side\n .attr('style', '')\n .removeAttr('style')\n .removeClass(className.hidden)\n ;\n $nextSide\n .removeClass(className.animating)\n .attr('style', '')\n .removeAttr('style')\n ;\n },\n\n is: {\n complete: function() {\n return ($side.filter('.' + className.active)[0] == $nextSide[0]);\n },\n animating: function() {\n return $module.hasClass(className.animating);\n }\n },\n\n set: {\n\n defaultSide: function() {\n $activeSide = $module.find('.' + settings.className.active);\n $nextSide = ( $activeSide.next(selector.side).length > 0 )\n ? $activeSide.next(selector.side)\n : $module.find(selector.side).first()\n ;\n nextIndex = false;\n module.verbose('Active side set to', $activeSide);\n module.verbose('Next side set to', $nextSide);\n },\n\n duration: function(duration) {\n duration = duration || settings.duration;\n duration = (typeof duration == 'number')\n ? duration + 'ms'\n : duration\n ;\n module.verbose('Setting animation duration', duration);\n if(settings.duration || settings.duration === 0) {\n $sides.add($side)\n .css({\n '-webkit-transition-duration': duration,\n '-moz-transition-duration': duration,\n '-ms-transition-duration': duration,\n '-o-transition-duration': duration,\n 'transition-duration': duration\n })\n ;\n }\n },\n\n currentStageSize: function() {\n var\n $activeSide = $module.find('.' + settings.className.active),\n width = $activeSide.outerWidth(true),\n height = $activeSide.outerHeight(true)\n ;\n $module\n .css({\n width: width,\n height: height\n })\n ;\n },\n\n stageSize: function() {\n var\n $clone = $module.clone().addClass(className.loading),\n $activeSide = $clone.find('.' + settings.className.active),\n $nextSide = (nextIndex)\n ? $clone.find(selector.side).eq(nextIndex)\n : ( $activeSide.next(selector.side).length > 0 )\n ? $activeSide.next(selector.side)\n : $clone.find(selector.side).first(),\n newWidth = (settings.width == 'next')\n ? $nextSide.outerWidth(true)\n : (settings.width == 'initial')\n ? $module.width()\n : settings.width,\n newHeight = (settings.height == 'next')\n ? $nextSide.outerHeight(true)\n : (settings.height == 'initial')\n ? $module.height()\n : settings.height\n ;\n $activeSide.removeClass(className.active);\n $nextSide.addClass(className.active);\n $clone.insertAfter($module);\n $clone.remove();\n if(settings.width != 'auto') {\n $module.css('width', newWidth + settings.jitter);\n module.verbose('Specifying width during animation', newWidth);\n }\n if(settings.height != 'auto') {\n $module.css('height', newHeight + settings.jitter);\n module.verbose('Specifying height during animation', newHeight);\n }\n },\n\n nextSide: function(selector) {\n nextIndex = selector;\n $nextSide = $side.filter(selector);\n nextIndex = $side.index($nextSide);\n if($nextSide.length === 0) {\n module.set.defaultSide();\n module.error(error.side);\n }\n module.verbose('Next side manually set to', $nextSide);\n },\n\n active: function() {\n module.verbose('Setting new side to active', $nextSide);\n $side\n .removeClass(className.active)\n ;\n $nextSide\n .addClass(className.active)\n ;\n settings.onChange.call($nextSide[0]);\n module.set.defaultSide();\n }\n },\n\n flip: {\n\n up: function() {\n if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) {\n module.debug('Side already visible', $nextSide);\n return;\n }\n if( !module.is.animating()) {\n module.debug('Flipping up', $nextSide);\n var\n transform = module.get.transform.up()\n ;\n module.set.stageSize();\n module.stage.above();\n module.animate(transform);\n }\n else {\n module.queue('flip up');\n }\n },\n\n down: function() {\n if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) {\n module.debug('Side already visible', $nextSide);\n return;\n }\n if( !module.is.animating()) {\n module.debug('Flipping down', $nextSide);\n var\n transform = module.get.transform.down()\n ;\n module.set.stageSize();\n module.stage.below();\n module.animate(transform);\n }\n else {\n module.queue('flip down');\n }\n },\n\n left: function() {\n if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) {\n module.debug('Side already visible', $nextSide);\n return;\n }\n if( !module.is.animating()) {\n module.debug('Flipping left', $nextSide);\n var\n transform = module.get.transform.left()\n ;\n module.set.stageSize();\n module.stage.left();\n module.animate(transform);\n }\n else {\n module.queue('flip left');\n }\n },\n\n right: function() {\n if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) {\n module.debug('Side already visible', $nextSide);\n return;\n }\n if( !module.is.animating()) {\n module.debug('Flipping right', $nextSide);\n var\n transform = module.get.transform.right()\n ;\n module.set.stageSize();\n module.stage.right();\n module.animate(transform);\n }\n else {\n module.queue('flip right');\n }\n },\n\n over: function() {\n if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) {\n module.debug('Side already visible', $nextSide);\n return;\n }\n if( !module.is.animating()) {\n module.debug('Flipping over', $nextSide);\n module.set.stageSize();\n module.stage.behind();\n module.animate(module.get.transform.over() );\n }\n else {\n module.queue('flip over');\n }\n },\n\n back: function() {\n if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) {\n module.debug('Side already visible', $nextSide);\n return;\n }\n if( !module.is.animating()) {\n module.debug('Flipping back', $nextSide);\n module.set.stageSize();\n module.stage.behind();\n module.animate(module.get.transform.back() );\n }\n else {\n module.queue('flip back');\n }\n }\n\n },\n\n get: {\n\n transform: {\n up: function() {\n var\n translate = {\n y: -(($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2),\n z: -($activeSide.outerHeight(true) / 2)\n }\n ;\n return {\n transform: 'translateY(' + translate.y + 'px) translateZ('+ translate.z + 'px) rotateX(-90deg)'\n };\n },\n\n down: function() {\n var\n translate = {\n y: -(($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2),\n z: -($activeSide.outerHeight(true) / 2)\n }\n ;\n return {\n transform: 'translateY(' + translate.y + 'px) translateZ('+ translate.z + 'px) rotateX(90deg)'\n };\n },\n\n left: function() {\n var\n translate = {\n x : -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2),\n z : -($activeSide.outerWidth(true) / 2)\n }\n ;\n return {\n transform: 'translateX(' + translate.x + 'px) translateZ(' + translate.z + 'px) rotateY(90deg)'\n };\n },\n\n right: function() {\n var\n translate = {\n x : -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2),\n z : -($activeSide.outerWidth(true) / 2)\n }\n ;\n return {\n transform: 'translateX(' + translate.x + 'px) translateZ(' + translate.z + 'px) rotateY(-90deg)'\n };\n },\n\n over: function() {\n var\n translate = {\n x : -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2)\n }\n ;\n return {\n transform: 'translateX(' + translate.x + 'px) rotateY(180deg)'\n };\n },\n\n back: function() {\n var\n translate = {\n x : -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2)\n }\n ;\n return {\n transform: 'translateX(' + translate.x + 'px) rotateY(-180deg)'\n };\n }\n },\n\n transitionEvent: function() {\n var\n element = document.createElement('element'),\n transitions = {\n 'transition' :'transitionend',\n 'OTransition' :'oTransitionEnd',\n 'MozTransition' :'transitionend',\n 'WebkitTransition' :'webkitTransitionEnd'\n },\n transition\n ;\n for(transition in transitions){\n if( element.style[transition] !== undefined ){\n return transitions[transition];\n }\n }\n },\n\n nextSide: function() {\n return ( $activeSide.next(selector.side).length > 0 )\n ? $activeSide.next(selector.side)\n : $module.find(selector.side).first()\n ;\n }\n\n },\n\n stage: {\n\n above: function() {\n var\n box = {\n origin : (($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2),\n depth : {\n active : ($nextSide.outerHeight(true) / 2),\n next : ($activeSide.outerHeight(true) / 2)\n }\n }\n ;\n module.verbose('Setting the initial animation position as above', $nextSide, box);\n $sides\n .css({\n 'transform' : 'translateZ(-' + box.depth.active + 'px)'\n })\n ;\n $activeSide\n .css({\n 'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)'\n })\n ;\n $nextSide\n .addClass(className.animating)\n .css({\n 'top' : box.origin + 'px',\n 'transform' : 'rotateX(90deg) translateZ(' + box.depth.next + 'px)'\n })\n ;\n },\n\n below: function() {\n var\n box = {\n origin : (($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2),\n depth : {\n active : ($nextSide.outerHeight(true) / 2),\n next : ($activeSide.outerHeight(true) / 2)\n }\n }\n ;\n module.verbose('Setting the initial animation position as below', $nextSide, box);\n $sides\n .css({\n 'transform' : 'translateZ(-' + box.depth.active + 'px)'\n })\n ;\n $activeSide\n .css({\n 'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)'\n })\n ;\n $nextSide\n .addClass(className.animating)\n .css({\n 'top' : box.origin + 'px',\n 'transform' : 'rotateX(-90deg) translateZ(' + box.depth.next + 'px)'\n })\n ;\n },\n\n left: function() {\n var\n height = {\n active : $activeSide.outerWidth(true),\n next : $nextSide.outerWidth(true)\n },\n box = {\n origin : ( ( height.active - height.next ) / 2),\n depth : {\n active : (height.next / 2),\n next : (height.active / 2)\n }\n }\n ;\n module.verbose('Setting the initial animation position as left', $nextSide, box);\n $sides\n .css({\n 'transform' : 'translateZ(-' + box.depth.active + 'px)'\n })\n ;\n $activeSide\n .css({\n 'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)'\n })\n ;\n $nextSide\n .addClass(className.animating)\n .css({\n 'left' : box.origin + 'px',\n 'transform' : 'rotateY(-90deg) translateZ(' + box.depth.next + 'px)'\n })\n ;\n },\n\n right: function() {\n var\n height = {\n active : $activeSide.outerWidth(true),\n next : $nextSide.outerWidth(true)\n },\n box = {\n origin : ( ( height.active - height.next ) / 2),\n depth : {\n active : (height.next / 2),\n next : (height.active / 2)\n }\n }\n ;\n module.verbose('Setting the initial animation position as left', $nextSide, box);\n $sides\n .css({\n 'transform' : 'translateZ(-' + box.depth.active + 'px)'\n })\n ;\n $activeSide\n .css({\n 'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)'\n })\n ;\n $nextSide\n .addClass(className.animating)\n .css({\n 'left' : box.origin + 'px',\n 'transform' : 'rotateY(90deg) translateZ(' + box.depth.next + 'px)'\n })\n ;\n },\n\n behind: function() {\n var\n height = {\n active : $activeSide.outerWidth(true),\n next : $nextSide.outerWidth(true)\n },\n box = {\n origin : ( ( height.active - height.next ) / 2),\n depth : {\n active : (height.next / 2),\n next : (height.active / 2)\n }\n }\n ;\n module.verbose('Setting the initial animation position as behind', $nextSide, box);\n $activeSide\n .css({\n 'transform' : 'rotateY(0deg)'\n })\n ;\n $nextSide\n .addClass(className.animating)\n .css({\n 'left' : box.origin + 'px',\n 'transform' : 'rotateY(-180deg)'\n })\n ;\n }\n },\n setting: function(name, value) {\n module.debug('Changing setting', name, value);\n if( $.isPlainObject(name) ) {\n $.extend(true, settings, name);\n }\n else if(value !== undefined) {\n if($.isPlainObject(settings[name])) {\n $.extend(true, settings[name], value);\n }\n else {\n settings[name] = value;\n }\n }\n else {\n return settings[name];\n }\n },\n internal: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, module, name);\n }\n else if(value !== undefined) {\n module[name] = value;\n }\n else {\n return module[name];\n }\n },\n debug: function() {\n if(!settings.silent && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.debug.apply(console, arguments);\n }\n }\n },\n verbose: function() {\n if(!settings.silent && settings.verbose && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.verbose.apply(console, arguments);\n }\n }\n },\n error: function() {\n if(!settings.silent) {\n module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n module.error.apply(console, arguments);\n }\n },\n performance: {\n log: function(message) {\n var\n currentTime,\n executionTime,\n previousTime\n ;\n if(settings.performance) {\n currentTime = new Date().getTime();\n previousTime = time || currentTime;\n executionTime = currentTime - previousTime;\n time = currentTime;\n performance.push({\n 'Name' : message[0],\n 'Arguments' : [].slice.call(message, 1) || '',\n 'Element' : element,\n 'Execution Time' : executionTime\n });\n }\n clearTimeout(module.performance.timer);\n module.performance.timer = setTimeout(module.performance.display, 500);\n },\n display: function() {\n var\n title = settings.name + ':',\n totalTime = 0\n ;\n time = false;\n clearTimeout(module.performance.timer);\n $.each(performance, function(index, data) {\n totalTime += data['Execution Time'];\n });\n title += ' ' + totalTime + 'ms';\n if(moduleSelector) {\n title += ' \\'' + moduleSelector + '\\'';\n }\n if($allModules.length > 1) {\n title += ' ' + '(' + $allModules.length + ')';\n }\n if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n console.groupCollapsed(title);\n if(console.table) {\n console.table(performance);\n }\n else {\n $.each(performance, function(index, data) {\n console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n });\n }\n console.groupEnd();\n }\n performance = [];\n }\n },\n invoke: function(query, passedArguments, context) {\n var\n object = instance,\n maxDepth,\n found,\n response\n ;\n passedArguments = passedArguments || queryArguments;\n context = element || context;\n if(typeof query == 'string' && object !== undefined) {\n query = query.split(/[\\. ]/);\n maxDepth = query.length - 1;\n $.each(query, function(depth, value) {\n var camelCaseValue = (depth != maxDepth)\n ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n : query\n ;\n if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n object = object[camelCaseValue];\n }\n else if( object[camelCaseValue] !== undefined ) {\n found = object[camelCaseValue];\n return false;\n }\n else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n object = object[value];\n }\n else if( object[value] !== undefined ) {\n found = object[value];\n return false;\n }\n else {\n return false;\n }\n });\n }\n if ( $.isFunction( found ) ) {\n response = found.apply(context, passedArguments);\n }\n else if(found !== undefined) {\n response = found;\n }\n if($.isArray(returnedValue)) {\n returnedValue.push(response);\n }\n else if(returnedValue !== undefined) {\n returnedValue = [returnedValue, response];\n }\n else if(response !== undefined) {\n returnedValue = response;\n }\n return found;\n }\n };\n\n if(methodInvoked) {\n if(instance === undefined) {\n module.initialize();\n }\n module.invoke(query);\n }\n else {\n if(instance !== undefined) {\n instance.invoke('destroy');\n }\n module.initialize();\n }\n })\n ;\n\n return (returnedValue !== undefined)\n ? returnedValue\n : this\n ;\n};\n\n$.fn.shape.settings = {\n\n // module info\n name : 'Shape',\n\n // hide all debug content\n silent : false,\n\n // debug content outputted to console\n debug : false,\n\n // verbose debug output\n verbose : false,\n\n // fudge factor in pixels when swapping from 2d to 3d (can be useful to correct rounding errors)\n jitter : 0,\n\n // performance data output\n performance: true,\n\n // event namespace\n namespace : 'shape',\n\n // width during animation, can be set to 'auto', initial', 'next' or pixel amount\n width: 'initial',\n\n // height during animation, can be set to 'auto', 'initial', 'next' or pixel amount\n height: 'initial',\n\n // callback occurs on side change\n beforeChange : function() {},\n onChange : function() {},\n\n // allow animation to same side\n allowRepeats: false,\n\n // animation duration\n duration : false,\n\n // possible errors\n error: {\n side : 'You tried to switch to a side that does not exist.',\n method : 'The method you called is not defined'\n },\n\n // classnames used\n className : {\n animating : 'animating',\n hidden : 'hidden',\n loading : 'loading',\n active : 'active'\n },\n\n // selectors used\n selector : {\n sides : '.sides',\n side : '.side'\n }\n\n};\n\n\n})( jQuery, window, document );\n","/*!\n * # Semantic UI 2.2.6 - Sidebar\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n ? window\n : (typeof self != 'undefined' && self.Math == Math)\n ? self\n : Function('return this')()\n;\n\n$.fn.sidebar = function(parameters) {\n var\n $allModules = $(this),\n $window = $(window),\n $document = $(document),\n $html = $('html'),\n $head = $('head'),\n\n moduleSelector = $allModules.selector || '',\n\n time = new Date().getTime(),\n performance = [],\n\n query = arguments[0],\n methodInvoked = (typeof query == 'string'),\n queryArguments = [].slice.call(arguments, 1),\n\n requestAnimationFrame = window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || function(callback) { setTimeout(callback, 0); },\n\n returnedValue\n ;\n\n $allModules\n .each(function() {\n var\n settings = ( $.isPlainObject(parameters) )\n ? $.extend(true, {}, $.fn.sidebar.settings, parameters)\n : $.extend({}, $.fn.sidebar.settings),\n\n selector = settings.selector,\n className = settings.className,\n namespace = settings.namespace,\n regExp = settings.regExp,\n error = settings.error,\n\n eventNamespace = '.' + namespace,\n moduleNamespace = 'module-' + namespace,\n\n $module = $(this),\n $context = $(settings.context),\n\n $sidebars = $module.children(selector.sidebar),\n $fixed = $context.children(selector.fixed),\n $pusher = $context.children(selector.pusher),\n $style,\n\n element = this,\n instance = $module.data(moduleNamespace),\n\n elementNamespace,\n id,\n currentScroll,\n transitionEvent,\n\n module\n ;\n\n module = {\n\n initialize: function() {\n module.debug('Initializing sidebar', parameters);\n\n module.create.id();\n\n transitionEvent = module.get.transitionEvent();\n\n if(module.is.ios()) {\n module.set.ios();\n }\n\n // avoids locking rendering if initialized in onReady\n if(settings.delaySetup) {\n requestAnimationFrame(module.setup.layout);\n }\n else {\n module.setup.layout();\n }\n\n requestAnimationFrame(function() {\n module.setup.cache();\n });\n\n module.instantiate();\n },\n\n instantiate: function() {\n module.verbose('Storing instance of module', module);\n instance = module;\n $module\n .data(moduleNamespace, module)\n ;\n },\n\n create: {\n id: function() {\n id = (Math.random().toString(16) + '000000000').substr(2,8);\n elementNamespace = '.' + id;\n module.verbose('Creating unique id for element', id);\n }\n },\n\n destroy: function() {\n module.verbose('Destroying previous module for', $module);\n $module\n .off(eventNamespace)\n .removeData(moduleNamespace)\n ;\n if(module.is.ios()) {\n module.remove.ios();\n }\n // bound by uuid\n $context.off(elementNamespace);\n $window.off(elementNamespace);\n $document.off(elementNamespace);\n },\n\n event: {\n clickaway: function(event) {\n var\n clickedInPusher = ($pusher.find(event.target).length > 0 || $pusher.is(event.target)),\n clickedContext = ($context.is(event.target))\n ;\n if(clickedInPusher) {\n module.verbose('User clicked on dimmed page');\n module.hide();\n }\n if(clickedContext) {\n module.verbose('User clicked on dimmable context (scaled out page)');\n module.hide();\n }\n },\n touch: function(event) {\n //event.stopPropagation();\n },\n containScroll: function(event) {\n if(element.scrollTop <= 0) {\n element.scrollTop = 1;\n }\n if((element.scrollTop + element.offsetHeight) >= element.scrollHeight) {\n element.scrollTop = element.scrollHeight - element.offsetHeight - 1;\n }\n },\n scroll: function(event) {\n if( $(event.target).closest(selector.sidebar).length === 0 ) {\n event.preventDefault();\n }\n }\n },\n\n bind: {\n clickaway: function() {\n module.verbose('Adding clickaway events to context', $context);\n if(settings.closable) {\n $context\n .on('click' + elementNamespace, module.event.clickaway)\n .on('touchend' + elementNamespace, module.event.clickaway)\n ;\n }\n },\n scrollLock: function() {\n if(settings.scrollLock) {\n module.debug('Disabling page scroll');\n $window\n .on('DOMMouseScroll' + elementNamespace, module.event.scroll)\n ;\n }\n module.verbose('Adding events to contain sidebar scroll');\n $document\n .on('touchmove' + elementNamespace, module.event.touch)\n ;\n $module\n .on('scroll' + eventNamespace, module.event.containScroll)\n ;\n }\n },\n unbind: {\n clickaway: function() {\n module.verbose('Removing clickaway events from context', $context);\n $context.off(elementNamespace);\n },\n scrollLock: function() {\n module.verbose('Removing scroll lock from page');\n $document.off(elementNamespace);\n $window.off(elementNamespace);\n $module.off('scroll' + eventNamespace);\n }\n },\n\n add: {\n inlineCSS: function() {\n var\n width = module.cache.width || $module.outerWidth(),\n height = module.cache.height || $module.outerHeight(),\n isRTL = module.is.rtl(),\n direction = module.get.direction(),\n distance = {\n left : width,\n right : -width,\n top : height,\n bottom : -height\n },\n style\n ;\n\n if(isRTL){\n module.verbose('RTL detected, flipping widths');\n distance.left = -width;\n distance.right = width;\n }\n\n style = '<style>';\n\n if(direction === 'left' || direction === 'right') {\n module.debug('Adding CSS rules for animation distance', width);\n style += ''\n + ' .ui.visible.' + direction + '.sidebar ~ .fixed,'\n + ' .ui.visible.' + direction + '.sidebar ~ .pusher {'\n + ' -webkit-transform: translate3d('+ distance[direction] + 'px, 0, 0);'\n + ' transform: translate3d('+ distance[direction] + 'px, 0, 0);'\n + ' }'\n ;\n }\n else if(direction === 'top' || direction == 'bottom') {\n style += ''\n + ' .ui.visible.' + direction + '.sidebar ~ .fixed,'\n + ' .ui.visible.' + direction + '.sidebar ~ .pusher {'\n + ' -webkit-transform: translate3d(0, ' + distance[direction] + 'px, 0);'\n + ' transform: translate3d(0, ' + distance[direction] + 'px, 0);'\n + ' }'\n ;\n }\n\n /* IE is only browser not to create context with transforms */\n /* https://www.w3.org/Bugs/Public/show_bug.cgi?id=16328 */\n if( module.is.ie() ) {\n if(direction === 'left' || direction === 'right') {\n module.debug('Adding CSS rules for animation distance', width);\n style += ''\n + ' body.pushable > .ui.visible.' + direction + '.sidebar ~ .pusher:after {'\n + ' -webkit-transform: translate3d('+ distance[direction] + 'px, 0, 0);'\n + ' transform: translate3d('+ distance[direction] + 'px, 0, 0);'\n + ' }'\n ;\n }\n else if(direction === 'top' || direction == 'bottom') {\n style += ''\n + ' body.pushable > .ui.visible.' + direction + '.sidebar ~ .pusher:after {'\n + ' -webkit-transform: translate3d(0, ' + distance[direction] + 'px, 0);'\n + ' transform: translate3d(0, ' + distance[direction] + 'px, 0);'\n + ' }'\n ;\n }\n /* opposite sides visible forces content overlay */\n style += ''\n + ' body.pushable > .ui.visible.left.sidebar ~ .ui.visible.right.sidebar ~ .pusher:after,'\n + ' body.pushable > .ui.visible.right.sidebar ~ .ui.visible.left.sidebar ~ .pusher:after {'\n + ' -webkit-transform: translate3d(0px, 0, 0);'\n + ' transform: translate3d(0px, 0, 0);'\n + ' }'\n ;\n }\n style += '</style>';\n $style = $(style)\n .appendTo($head)\n ;\n module.debug('Adding sizing css to head', $style);\n }\n },\n\n refresh: function() {\n module.verbose('Refreshing selector cache');\n $context = $(settings.context);\n $sidebars = $context.children(selector.sidebar);\n $pusher = $context.children(selector.pusher);\n $fixed = $context.children(selector.fixed);\n module.clear.cache();\n },\n\n refreshSidebars: function() {\n module.verbose('Refreshing other sidebars');\n $sidebars = $context.children(selector.sidebar);\n },\n\n repaint: function() {\n module.verbose('Forcing repaint event');\n element.style.display = 'none';\n var ignored = element.offsetHeight;\n element.scrollTop = element.scrollTop;\n element.style.display = '';\n },\n\n setup: {\n cache: function() {\n module.cache = {\n width : $module.outerWidth(),\n height : $module.outerHeight(),\n rtl : ($module.css('direction') == 'rtl')\n };\n },\n layout: function() {\n if( $context.children(selector.pusher).length === 0 ) {\n module.debug('Adding wrapper element for sidebar');\n module.error(error.pusher);\n $pusher = $('<div class=\"pusher\" />');\n $context\n .children()\n .not(selector.omitted)\n .not($sidebars)\n .wrapAll($pusher)\n ;\n module.refresh();\n }\n if($module.nextAll(selector.pusher).length === 0 || $module.nextAll(selector.pusher)[0] !== $pusher[0]) {\n module.debug('Moved sidebar to correct parent element');\n module.error(error.movedSidebar, element);\n $module.detach().prependTo($context);\n module.refresh();\n }\n module.clear.cache();\n module.set.pushable();\n module.set.direction();\n }\n },\n\n attachEvents: function(selector, event) {\n var\n $toggle = $(selector)\n ;\n event = $.isFunction(module[event])\n ? module[event]\n : module.toggle\n ;\n if($toggle.length > 0) {\n module.debug('Attaching sidebar events to element', selector, event);\n $toggle\n .on('click' + eventNamespace, event)\n ;\n }\n else {\n module.error(error.notFound, selector);\n }\n },\n\n show: function(callback) {\n callback = $.isFunction(callback)\n ? callback\n : function(){}\n ;\n if(module.is.hidden()) {\n module.refreshSidebars();\n if(settings.overlay) {\n module.error(error.overlay);\n settings.transition = 'overlay';\n }\n module.refresh();\n if(module.othersActive()) {\n module.debug('Other sidebars currently visible');\n if(settings.exclusive) {\n // if not overlay queue animation after hide\n if(settings.transition != 'overlay') {\n module.hideOthers(module.show);\n return;\n }\n else {\n module.hideOthers();\n }\n }\n else {\n settings.transition = 'overlay';\n }\n }\n module.pushPage(function() {\n callback.call(element);\n settings.onShow.call(element);\n });\n settings.onChange.call(element);\n settings.onVisible.call(element);\n }\n else {\n module.debug('Sidebar is already visible');\n }\n },\n\n hide: function(callback) {\n callback = $.isFunction(callback)\n ? callback\n : function(){}\n ;\n if(module.is.visible() || module.is.animating()) {\n module.debug('Hiding sidebar', callback);\n module.refreshSidebars();\n module.pullPage(function() {\n callback.call(element);\n settings.onHidden.call(element);\n });\n settings.onChange.call(element);\n settings.onHide.call(element);\n }\n },\n\n othersAnimating: function() {\n return ($sidebars.not($module).filter('.' + className.animating).length > 0);\n },\n othersVisible: function() {\n return ($sidebars.not($module).filter('.' + className.visible).length > 0);\n },\n othersActive: function() {\n return(module.othersVisible() || module.othersAnimating());\n },\n\n hideOthers: function(callback) {\n var\n $otherSidebars = $sidebars.not($module).filter('.' + className.visible),\n sidebarCount = $otherSidebars.length,\n callbackCount = 0\n ;\n callback = callback || function(){};\n $otherSidebars\n .sidebar('hide', function() {\n callbackCount++;\n if(callbackCount == sidebarCount) {\n callback();\n }\n })\n ;\n },\n\n toggle: function() {\n module.verbose('Determining toggled direction');\n if(module.is.hidden()) {\n module.show();\n }\n else {\n module.hide();\n }\n },\n\n pushPage: function(callback) {\n var\n transition = module.get.transition(),\n $transition = (transition === 'overlay' || module.othersActive())\n ? $module\n : $pusher,\n animate,\n dim,\n transitionEnd\n ;\n callback = $.isFunction(callback)\n ? callback\n : function(){}\n ;\n if(settings.transition == 'scale down') {\n module.scrollToTop();\n }\n module.set.transition(transition);\n module.repaint();\n animate = function() {\n module.bind.clickaway();\n module.add.inlineCSS();\n module.set.animating();\n module.set.visible();\n };\n dim = function() {\n module.set.dimmed();\n };\n transitionEnd = function(event) {\n if( event.target == $transition[0] ) {\n $transition.off(transitionEvent + elementNamespace, transitionEnd);\n module.remove.animating();\n module.bind.scrollLock();\n callback.call(element);\n }\n };\n $transition.off(transitionEvent + elementNamespace);\n $transition.on(transitionEvent + elementNamespace, transitionEnd);\n requestAnimationFrame(animate);\n if(settings.dimPage && !module.othersVisible()) {\n requestAnimationFrame(dim);\n }\n },\n\n pullPage: function(callback) {\n var\n transition = module.get.transition(),\n $transition = (transition == 'overlay' || module.othersActive())\n ? $module\n : $pusher,\n animate,\n transitionEnd\n ;\n callback = $.isFunction(callback)\n ? callback\n : function(){}\n ;\n module.verbose('Removing context push state', module.get.direction());\n\n module.unbind.clickaway();\n module.unbind.scrollLock();\n\n animate = function() {\n module.set.transition(transition);\n module.set.animating();\n module.remove.visible();\n if(settings.dimPage && !module.othersVisible()) {\n $pusher.removeClass(className.dimmed);\n }\n };\n transitionEnd = function(event) {\n if( event.target == $transition[0] ) {\n $transition.off(transitionEvent + elementNamespace, transitionEnd);\n module.remove.animating();\n module.remove.transition();\n module.remove.inlineCSS();\n if(transition == 'scale down' || (settings.returnScroll && module.is.mobile()) ) {\n module.scrollBack();\n }\n callback.call(element);\n }\n };\n $transition.off(transitionEvent + elementNamespace);\n $transition.on(transitionEvent + elementNamespace, transitionEnd);\n requestAnimationFrame(animate);\n },\n\n scrollToTop: function() {\n module.verbose('Scrolling to top of page to avoid animation issues');\n currentScroll = $(window).scrollTop();\n $module.scrollTop(0);\n window.scrollTo(0, 0);\n },\n\n scrollBack: function() {\n module.verbose('Scrolling back to original page position');\n window.scrollTo(0, currentScroll);\n },\n\n clear: {\n cache: function() {\n module.verbose('Clearing cached dimensions');\n module.cache = {};\n }\n },\n\n set: {\n\n // ios only (scroll on html not document). This prevent auto-resize canvas/scroll in ios\n ios: function() {\n $html.addClass(className.ios);\n },\n\n // container\n pushed: function() {\n $context.addClass(className.pushed);\n },\n pushable: function() {\n $context.addClass(className.pushable);\n },\n\n // pusher\n dimmed: function() {\n $pusher.addClass(className.dimmed);\n },\n\n // sidebar\n active: function() {\n $module.addClass(className.active);\n },\n animating: function() {\n $module.addClass(className.animating);\n },\n transition: function(transition) {\n transition = transition || module.get.transition();\n $module.addClass(transition);\n },\n direction: function(direction) {\n direction = direction || module.get.direction();\n $module.addClass(className[direction]);\n },\n visible: function() {\n $module.addClass(className.visible);\n },\n overlay: function() {\n $module.addClass(className.overlay);\n }\n },\n remove: {\n\n inlineCSS: function() {\n module.debug('Removing inline css styles', $style);\n if($style && $style.length > 0) {\n $style.remove();\n }\n },\n\n // ios scroll on html not document\n ios: function() {\n $html.removeClass(className.ios);\n },\n\n // context\n pushed: function() {\n $context.removeClass(className.pushed);\n },\n pushable: function() {\n $context.removeClass(className.pushable);\n },\n\n // sidebar\n active: function() {\n $module.removeClass(className.active);\n },\n animating: function() {\n $module.removeClass(className.animating);\n },\n transition: function(transition) {\n transition = transition || module.get.transition();\n $module.removeClass(transition);\n },\n direction: function(direction) {\n direction = direction || module.get.direction();\n $module.removeClass(className[direction]);\n },\n visible: function() {\n $module.removeClass(className.visible);\n },\n overlay: function() {\n $module.removeClass(className.overlay);\n }\n },\n\n get: {\n direction: function() {\n if($module.hasClass(className.top)) {\n return className.top;\n }\n else if($module.hasClass(className.right)) {\n return className.right;\n }\n else if($module.hasClass(className.bottom)) {\n return className.bottom;\n }\n return className.left;\n },\n transition: function() {\n var\n direction = module.get.direction(),\n transition\n ;\n transition = ( module.is.mobile() )\n ? (settings.mobileTransition == 'auto')\n ? settings.defaultTransition.mobile[direction]\n : settings.mobileTransition\n : (settings.transition == 'auto')\n ? settings.defaultTransition.computer[direction]\n : settings.transition\n ;\n module.verbose('Determined transition', transition);\n return transition;\n },\n transitionEvent: function() {\n var\n element = document.createElement('element'),\n transitions = {\n 'transition' :'transitionend',\n 'OTransition' :'oTransitionEnd',\n 'MozTransition' :'transitionend',\n 'WebkitTransition' :'webkitTransitionEnd'\n },\n transition\n ;\n for(transition in transitions){\n if( element.style[transition] !== undefined ){\n return transitions[transition];\n }\n }\n }\n },\n\n is: {\n\n ie: function() {\n var\n isIE11 = (!(window.ActiveXObject) && 'ActiveXObject' in window),\n isIE = ('ActiveXObject' in window)\n ;\n return (isIE11 || isIE);\n },\n\n ios: function() {\n var\n userAgent = navigator.userAgent,\n isIOS = userAgent.match(regExp.ios),\n isMobileChrome = userAgent.match(regExp.mobileChrome)\n ;\n if(isIOS && !isMobileChrome) {\n module.verbose('Browser was found to be iOS', userAgent);\n return true;\n }\n else {\n return false;\n }\n },\n mobile: function() {\n var\n userAgent = navigator.userAgent,\n isMobile = userAgent.match(regExp.mobile)\n ;\n if(isMobile) {\n module.verbose('Browser was found to be mobile', userAgent);\n return true;\n }\n else {\n module.verbose('Browser is not mobile, using regular transition', userAgent);\n return false;\n }\n },\n hidden: function() {\n return !module.is.visible();\n },\n visible: function() {\n return $module.hasClass(className.visible);\n },\n // alias\n open: function() {\n return module.is.visible();\n },\n closed: function() {\n return module.is.hidden();\n },\n vertical: function() {\n return $module.hasClass(className.top);\n },\n animating: function() {\n return $context.hasClass(className.animating);\n },\n rtl: function () {\n if(module.cache.rtl === undefined) {\n module.cache.rtl = ($module.css('direction') == 'rtl');\n }\n return module.cache.rtl;\n }\n },\n\n setting: function(name, value) {\n module.debug('Changing setting', name, value);\n if( $.isPlainObject(name) ) {\n $.extend(true, settings, name);\n }\n else if(value !== undefined) {\n if($.isPlainObject(settings[name])) {\n $.extend(true, settings[name], value);\n }\n else {\n settings[name] = value;\n }\n }\n else {\n return settings[name];\n }\n },\n internal: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, module, name);\n }\n else if(value !== undefined) {\n module[name] = value;\n }\n else {\n return module[name];\n }\n },\n debug: function() {\n if(!settings.silent && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.debug.apply(console, arguments);\n }\n }\n },\n verbose: function() {\n if(!settings.silent && settings.verbose && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.verbose.apply(console, arguments);\n }\n }\n },\n error: function() {\n if(!settings.silent) {\n module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n module.error.apply(console, arguments);\n }\n },\n performance: {\n log: function(message) {\n var\n currentTime,\n executionTime,\n previousTime\n ;\n if(settings.performance) {\n currentTime = new Date().getTime();\n previousTime = time || currentTime;\n executionTime = currentTime - previousTime;\n time = currentTime;\n performance.push({\n 'Name' : message[0],\n 'Arguments' : [].slice.call(message, 1) || '',\n 'Element' : element,\n 'Execution Time' : executionTime\n });\n }\n clearTimeout(module.performance.timer);\n module.performance.timer = setTimeout(module.performance.display, 500);\n },\n display: function() {\n var\n title = settings.name + ':',\n totalTime = 0\n ;\n time = false;\n clearTimeout(module.performance.timer);\n $.each(performance, function(index, data) {\n totalTime += data['Execution Time'];\n });\n title += ' ' + totalTime + 'ms';\n if(moduleSelector) {\n title += ' \\'' + moduleSelector + '\\'';\n }\n if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n console.groupCollapsed(title);\n if(console.table) {\n console.table(performance);\n }\n else {\n $.each(performance, function(index, data) {\n console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n });\n }\n console.groupEnd();\n }\n performance = [];\n }\n },\n invoke: function(query, passedArguments, context) {\n var\n object = instance,\n maxDepth,\n found,\n response\n ;\n passedArguments = passedArguments || queryArguments;\n context = element || context;\n if(typeof query == 'string' && object !== undefined) {\n query = query.split(/[\\. ]/);\n maxDepth = query.length - 1;\n $.each(query, function(depth, value) {\n var camelCaseValue = (depth != maxDepth)\n ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n : query\n ;\n if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n object = object[camelCaseValue];\n }\n else if( object[camelCaseValue] !== undefined ) {\n found = object[camelCaseValue];\n return false;\n }\n else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n object = object[value];\n }\n else if( object[value] !== undefined ) {\n found = object[value];\n return false;\n }\n else {\n module.error(error.method, query);\n return false;\n }\n });\n }\n if ( $.isFunction( found ) ) {\n response = found.apply(context, passedArguments);\n }\n else if(found !== undefined) {\n response = found;\n }\n if($.isArray(returnedValue)) {\n returnedValue.push(response);\n }\n else if(returnedValue !== undefined) {\n returnedValue = [returnedValue, response];\n }\n else if(response !== undefined) {\n returnedValue = response;\n }\n return found;\n }\n }\n ;\n\n if(methodInvoked) {\n if(instance === undefined) {\n module.initialize();\n }\n module.invoke(query);\n }\n else {\n if(instance !== undefined) {\n module.invoke('destroy');\n }\n module.initialize();\n }\n });\n\n return (returnedValue !== undefined)\n ? returnedValue\n : this\n ;\n};\n\n$.fn.sidebar.settings = {\n\n name : 'Sidebar',\n namespace : 'sidebar',\n\n silent : false,\n debug : false,\n verbose : false,\n performance : true,\n\n transition : 'auto',\n mobileTransition : 'auto',\n\n defaultTransition : {\n computer: {\n left : 'uncover',\n right : 'uncover',\n top : 'overlay',\n bottom : 'overlay'\n },\n mobile: {\n left : 'uncover',\n right : 'uncover',\n top : 'overlay',\n bottom : 'overlay'\n }\n },\n\n context : 'body',\n exclusive : false,\n closable : true,\n dimPage : true,\n scrollLock : false,\n returnScroll : false,\n delaySetup : false,\n\n duration : 500,\n\n onChange : function(){},\n onShow : function(){},\n onHide : function(){},\n\n onHidden : function(){},\n onVisible : function(){},\n\n className : {\n active : 'active',\n animating : 'animating',\n dimmed : 'dimmed',\n ios : 'ios',\n pushable : 'pushable',\n pushed : 'pushed',\n right : 'right',\n top : 'top',\n left : 'left',\n bottom : 'bottom',\n visible : 'visible'\n },\n\n selector: {\n fixed : '.fixed',\n omitted : 'script, link, style, .ui.modal, .ui.dimmer, .ui.nag, .ui.fixed',\n pusher : '.pusher',\n sidebar : '.ui.sidebar'\n },\n\n regExp: {\n ios : /(iPad|iPhone|iPod)/g,\n mobileChrome : /(CriOS)/g,\n mobile : /Mobile|iP(hone|od|ad)|Android|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/g\n },\n\n error : {\n method : 'The method you called is not defined.',\n pusher : 'Had to add pusher element. For optimal performance make sure body content is inside a pusher element',\n movedSidebar : 'Had to move sidebar. For optimal performance make sure sidebar and pusher are direct children of your body tag',\n overlay : 'The overlay setting is no longer supported, use animation: overlay',\n notFound : 'There were no elements that matched the specified selector'\n }\n\n};\n\n\n})( jQuery, window, document );\n","/*!\n * # Semantic UI 2.2.6 - Sticky\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n ? window\n : (typeof self != 'undefined' && self.Math == Math)\n ? self\n : Function('return this')()\n;\n\n$.fn.sticky = function(parameters) {\n var\n $allModules = $(this),\n moduleSelector = $allModules.selector || '',\n\n time = new Date().getTime(),\n performance = [],\n\n query = arguments[0],\n methodInvoked = (typeof query == 'string'),\n queryArguments = [].slice.call(arguments, 1),\n returnedValue\n ;\n\n $allModules\n .each(function() {\n var\n settings = ( $.isPlainObject(parameters) )\n ? $.extend(true, {}, $.fn.sticky.settings, parameters)\n : $.extend({}, $.fn.sticky.settings),\n\n className = settings.className,\n namespace = settings.namespace,\n error = settings.error,\n\n eventNamespace = '.' + namespace,\n moduleNamespace = 'module-' + namespace,\n\n $module = $(this),\n $window = $(window),\n $scroll = $(settings.scrollContext),\n $container,\n $context,\n\n selector = $module.selector || '',\n instance = $module.data(moduleNamespace),\n\n requestAnimationFrame = window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || function(callback) { setTimeout(callback, 0); },\n\n element = this,\n\n documentObserver,\n observer,\n module\n ;\n\n module = {\n\n initialize: function() {\n\n module.determineContainer();\n module.determineContext();\n module.verbose('Initializing sticky', settings, $container);\n\n module.save.positions();\n module.checkErrors();\n module.bind.events();\n\n if(settings.observeChanges) {\n module.observeChanges();\n }\n module.instantiate();\n },\n\n instantiate: function() {\n module.verbose('Storing instance of module', module);\n instance = module;\n $module\n .data(moduleNamespace, module)\n ;\n },\n\n destroy: function() {\n module.verbose('Destroying previous instance');\n module.reset();\n if(documentObserver) {\n documentObserver.disconnect();\n }\n if(observer) {\n observer.disconnect();\n }\n $window\n .off('load' + eventNamespace, module.event.load)\n .off('resize' + eventNamespace, module.event.resize)\n ;\n $scroll\n .off('scrollchange' + eventNamespace, module.event.scrollchange)\n ;\n $module.removeData(moduleNamespace);\n },\n\n observeChanges: function() {\n if('MutationObserver' in window) {\n documentObserver = new MutationObserver(module.event.documentChanged);\n observer = new MutationObserver(module.event.changed);\n documentObserver.observe(document, {\n childList : true,\n subtree : true\n });\n observer.observe(element, {\n childList : true,\n subtree : true\n });\n observer.observe($context[0], {\n childList : true,\n subtree : true\n });\n module.debug('Setting up mutation observer', observer);\n }\n },\n\n determineContainer: function() {\n if(settings.container) {\n $container = $(settings.container);\n }\n else {\n $container = $module.offsetParent();\n }\n },\n\n determineContext: function() {\n if(settings.context) {\n $context = $(settings.context);\n }\n else {\n $context = $container;\n }\n if($context.length === 0) {\n module.error(error.invalidContext, settings.context, $module);\n return;\n }\n },\n\n checkErrors: function() {\n if( module.is.hidden() ) {\n module.error(error.visible, $module);\n }\n if(module.cache.element.height > module.cache.context.height) {\n module.reset();\n module.error(error.elementSize, $module);\n return;\n }\n },\n\n bind: {\n events: function() {\n $window\n .on('load' + eventNamespace, module.event.load)\n .on('resize' + eventNamespace, module.event.resize)\n ;\n // pub/sub pattern\n $scroll\n .off('scroll' + eventNamespace)\n .on('scroll' + eventNamespace, module.event.scroll)\n .on('scrollchange' + eventNamespace, module.event.scrollchange)\n ;\n }\n },\n\n event: {\n changed: function(mutations) {\n clearTimeout(module.timer);\n module.timer = setTimeout(function() {\n module.verbose('DOM tree modified, updating sticky menu', mutations);\n module.refresh();\n }, 100);\n },\n documentChanged: function(mutations) {\n [].forEach.call(mutations, function(mutation) {\n if(mutation.removedNodes) {\n [].forEach.call(mutation.removedNodes, function(node) {\n if(node == element || $(node).find(element).length > 0) {\n module.debug('Element removed from DOM, tearing down events');\n module.destroy();\n }\n });\n }\n });\n },\n load: function() {\n module.verbose('Page contents finished loading');\n requestAnimationFrame(module.refresh);\n },\n resize: function() {\n module.verbose('Window resized');\n requestAnimationFrame(module.refresh);\n },\n scroll: function() {\n requestAnimationFrame(function() {\n $scroll.triggerHandler('scrollchange' + eventNamespace, $scroll.scrollTop() );\n });\n },\n scrollchange: function(event, scrollPosition) {\n module.stick(scrollPosition);\n settings.onScroll.call(element);\n }\n },\n\n refresh: function(hardRefresh) {\n module.reset();\n if(!settings.context) {\n module.determineContext();\n }\n if(hardRefresh) {\n module.determineContainer();\n }\n module.save.positions();\n module.stick();\n settings.onReposition.call(element);\n },\n\n supports: {\n sticky: function() {\n var\n $element = $('<div/>'),\n element = $element[0]\n ;\n $element.addClass(className.supported);\n return($element.css('position').match('sticky'));\n }\n },\n\n save: {\n lastScroll: function(scroll) {\n module.lastScroll = scroll;\n },\n elementScroll: function(scroll) {\n module.elementScroll = scroll;\n },\n positions: function() {\n var\n scrollContext = {\n height : $scroll.height()\n },\n element = {\n margin: {\n top : parseInt($module.css('margin-top'), 10),\n bottom : parseInt($module.css('margin-bottom'), 10),\n },\n offset : $module.offset(),\n width : $module.outerWidth(),\n height : $module.outerHeight()\n },\n context = {\n offset : $context.offset(),\n height : $context.outerHeight()\n },\n container = {\n height: $container.outerHeight()\n }\n ;\n if( !module.is.standardScroll() ) {\n module.debug('Non-standard scroll. Removing scroll offset from element offset');\n\n scrollContext.top = $scroll.scrollTop();\n scrollContext.left = $scroll.scrollLeft();\n\n element.offset.top += scrollContext.top;\n context.offset.top += scrollContext.top;\n element.offset.left += scrollContext.left;\n context.offset.left += scrollContext.left;\n }\n module.cache = {\n fits : ( element.height < scrollContext.height ),\n scrollContext : {\n height : scrollContext.height\n },\n element: {\n margin : element.margin,\n top : element.offset.top - element.margin.top,\n left : element.offset.left,\n width : element.width,\n height : element.height,\n bottom : element.offset.top + element.height\n },\n context: {\n top : context.offset.top,\n height : context.height,\n bottom : context.offset.top + context.height\n }\n };\n module.set.containerSize();\n module.set.size();\n module.stick();\n module.debug('Caching element positions', module.cache);\n }\n },\n\n get: {\n direction: function(scroll) {\n var\n direction = 'down'\n ;\n scroll = scroll || $scroll.scrollTop();\n if(module.lastScroll !== undefined) {\n if(module.lastScroll < scroll) {\n direction = 'down';\n }\n else if(module.lastScroll > scroll) {\n direction = 'up';\n }\n }\n return direction;\n },\n scrollChange: function(scroll) {\n scroll = scroll || $scroll.scrollTop();\n return (module.lastScroll)\n ? (scroll - module.lastScroll)\n : 0\n ;\n },\n currentElementScroll: function() {\n if(module.elementScroll) {\n return module.elementScroll;\n }\n return ( module.is.top() )\n ? Math.abs(parseInt($module.css('top'), 10)) || 0\n : Math.abs(parseInt($module.css('bottom'), 10)) || 0\n ;\n },\n\n elementScroll: function(scroll) {\n scroll = scroll || $scroll.scrollTop();\n var\n element = module.cache.element,\n scrollContext = module.cache.scrollContext,\n delta = module.get.scrollChange(scroll),\n maxScroll = (element.height - scrollContext.height + settings.offset),\n elementScroll = module.get.currentElementScroll(),\n possibleScroll = (elementScroll + delta)\n ;\n if(module.cache.fits || possibleScroll < 0) {\n elementScroll = 0;\n }\n else if(possibleScroll > maxScroll ) {\n elementScroll = maxScroll;\n }\n else {\n elementScroll = possibleScroll;\n }\n return elementScroll;\n }\n },\n\n remove: {\n lastScroll: function() {\n delete module.lastScroll;\n },\n elementScroll: function(scroll) {\n delete module.elementScroll;\n },\n offset: function() {\n $module.css('margin-top', '');\n }\n },\n\n set: {\n offset: function() {\n module.verbose('Setting offset on element', settings.offset);\n $module\n .css('margin-top', settings.offset)\n ;\n },\n containerSize: function() {\n var\n tagName = $container.get(0).tagName\n ;\n if(tagName === 'HTML' || tagName == 'body') {\n // this can trigger for too many reasons\n //module.error(error.container, tagName, $module);\n module.determineContainer();\n }\n else {\n if( Math.abs($container.outerHeight() - module.cache.context.height) > settings.jitter) {\n module.debug('Context has padding, specifying exact height for container', module.cache.context.height);\n $container.css({\n height: module.cache.context.height\n });\n }\n }\n },\n minimumSize: function() {\n var\n element = module.cache.element\n ;\n $container\n .css('min-height', element.height)\n ;\n },\n scroll: function(scroll) {\n module.debug('Setting scroll on element', scroll);\n if(module.elementScroll == scroll) {\n return;\n }\n if( module.is.top() ) {\n $module\n .css('bottom', '')\n .css('top', -scroll)\n ;\n }\n if( module.is.bottom() ) {\n $module\n .css('top', '')\n .css('bottom', scroll)\n ;\n }\n },\n size: function() {\n if(module.cache.element.height !== 0 && module.cache.element.width !== 0) {\n element.style.setProperty('width', module.cache.element.width + 'px', 'important');\n element.style.setProperty('height', module.cache.element.height + 'px', 'important');\n }\n }\n },\n\n is: {\n standardScroll: function() {\n return ($scroll[0] == window);\n },\n top: function() {\n return $module.hasClass(className.top);\n },\n bottom: function() {\n return $module.hasClass(className.bottom);\n },\n initialPosition: function() {\n return (!module.is.fixed() && !module.is.bound());\n },\n hidden: function() {\n return (!$module.is(':visible'));\n },\n bound: function() {\n return $module.hasClass(className.bound);\n },\n fixed: function() {\n return $module.hasClass(className.fixed);\n }\n },\n\n stick: function(scroll) {\n var\n cachedPosition = scroll || $scroll.scrollTop(),\n cache = module.cache,\n fits = cache.fits,\n element = cache.element,\n scrollContext = cache.scrollContext,\n context = cache.context,\n offset = (module.is.bottom() && settings.pushing)\n ? settings.bottomOffset\n : settings.offset,\n scroll = {\n top : cachedPosition + offset,\n bottom : cachedPosition + offset + scrollContext.height\n },\n direction = module.get.direction(scroll.top),\n elementScroll = (fits)\n ? 0\n : module.get.elementScroll(scroll.top),\n\n // shorthand\n doesntFit = !fits,\n elementVisible = (element.height !== 0)\n ;\n\n if(elementVisible) {\n\n if( module.is.initialPosition() ) {\n if(scroll.top >= context.bottom) {\n module.debug('Initial element position is bottom of container');\n module.bindBottom();\n }\n else if(scroll.top > element.top) {\n if( (element.height + scroll.top - elementScroll) >= context.bottom ) {\n module.debug('Initial element position is bottom of container');\n module.bindBottom();\n }\n else {\n module.debug('Initial element position is fixed');\n module.fixTop();\n }\n }\n\n }\n else if( module.is.fixed() ) {\n\n // currently fixed top\n if( module.is.top() ) {\n if( scroll.top <= element.top ) {\n module.debug('Fixed element reached top of container');\n module.setInitialPosition();\n }\n else if( (element.height + scroll.top - elementScroll) >= context.bottom ) {\n module.debug('Fixed element reached bottom of container');\n module.bindBottom();\n }\n // scroll element if larger than screen\n else if(doesntFit) {\n module.set.scroll(elementScroll);\n module.save.lastScroll(scroll.top);\n module.save.elementScroll(elementScroll);\n }\n }\n\n // currently fixed bottom\n else if(module.is.bottom() ) {\n\n // top edge\n if( (scroll.bottom - element.height) <= element.top) {\n module.debug('Bottom fixed rail has reached top of container');\n module.setInitialPosition();\n }\n // bottom edge\n else if(scroll.bottom >= context.bottom) {\n module.debug('Bottom fixed rail has reached bottom of container');\n module.bindBottom();\n }\n // scroll element if larger than screen\n else if(doesntFit) {\n module.set.scroll(elementScroll);\n module.save.lastScroll(scroll.top);\n module.save.elementScroll(elementScroll);\n }\n\n }\n }\n else if( module.is.bottom() ) {\n if( scroll.top <= element.top ) {\n module.debug('Jumped from bottom fixed to top fixed, most likely used home/end button');\n module.setInitialPosition();\n }\n else {\n if(settings.pushing) {\n if(module.is.bound() && scroll.bottom <= context.bottom ) {\n module.debug('Fixing bottom attached element to bottom of browser.');\n module.fixBottom();\n }\n }\n else {\n if(module.is.bound() && (scroll.top <= context.bottom - element.height) ) {\n module.debug('Fixing bottom attached element to top of browser.');\n module.fixTop();\n }\n }\n }\n }\n }\n },\n\n bindTop: function() {\n module.debug('Binding element to top of parent container');\n module.remove.offset();\n $module\n .css({\n left : '',\n top : '',\n marginBottom : ''\n })\n .removeClass(className.fixed)\n .removeClass(className.bottom)\n .addClass(className.bound)\n .addClass(className.top)\n ;\n settings.onTop.call(element);\n settings.onUnstick.call(element);\n },\n bindBottom: function() {\n module.debug('Binding element to bottom of parent container');\n module.remove.offset();\n $module\n .css({\n left : '',\n top : ''\n })\n .removeClass(className.fixed)\n .removeClass(className.top)\n .addClass(className.bound)\n .addClass(className.bottom)\n ;\n settings.onBottom.call(element);\n settings.onUnstick.call(element);\n },\n\n setInitialPosition: function() {\n module.debug('Returning to initial position');\n module.unfix();\n module.unbind();\n },\n\n\n fixTop: function() {\n module.debug('Fixing element to top of page');\n module.set.minimumSize();\n module.set.offset();\n $module\n .css({\n left : module.cache.element.left,\n bottom : '',\n marginBottom : ''\n })\n .removeClass(className.bound)\n .removeClass(className.bottom)\n .addClass(className.fixed)\n .addClass(className.top)\n ;\n settings.onStick.call(element);\n },\n\n fixBottom: function() {\n module.debug('Sticking element to bottom of page');\n module.set.minimumSize();\n module.set.offset();\n $module\n .css({\n left : module.cache.element.left,\n bottom : '',\n marginBottom : ''\n })\n .removeClass(className.bound)\n .removeClass(className.top)\n .addClass(className.fixed)\n .addClass(className.bottom)\n ;\n settings.onStick.call(element);\n },\n\n unbind: function() {\n if( module.is.bound() ) {\n module.debug('Removing container bound position on element');\n module.remove.offset();\n $module\n .removeClass(className.bound)\n .removeClass(className.top)\n .removeClass(className.bottom)\n ;\n }\n },\n\n unfix: function() {\n if( module.is.fixed() ) {\n module.debug('Removing fixed position on element');\n module.remove.offset();\n $module\n .removeClass(className.fixed)\n .removeClass(className.top)\n .removeClass(className.bottom)\n ;\n settings.onUnstick.call(element);\n }\n },\n\n reset: function() {\n module.debug('Resetting elements position');\n module.unbind();\n module.unfix();\n module.resetCSS();\n module.remove.offset();\n module.remove.lastScroll();\n },\n\n resetCSS: function() {\n $module\n .css({\n width : '',\n height : ''\n })\n ;\n $container\n .css({\n height: ''\n })\n ;\n },\n\n setting: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, settings, name);\n }\n else if(value !== undefined) {\n settings[name] = value;\n }\n else {\n return settings[name];\n }\n },\n internal: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, module, name);\n }\n else if(value !== undefined) {\n module[name] = value;\n }\n else {\n return module[name];\n }\n },\n debug: function() {\n if(!settings.silent && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.debug.apply(console, arguments);\n }\n }\n },\n verbose: function() {\n if(!settings.silent && settings.verbose && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.verbose.apply(console, arguments);\n }\n }\n },\n error: function() {\n if(!settings.silent) {\n module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n module.error.apply(console, arguments);\n }\n },\n performance: {\n log: function(message) {\n var\n currentTime,\n executionTime,\n previousTime\n ;\n if(settings.performance) {\n currentTime = new Date().getTime();\n previousTime = time || currentTime;\n executionTime = currentTime - previousTime;\n time = currentTime;\n performance.push({\n 'Name' : message[0],\n 'Arguments' : [].slice.call(message, 1) || '',\n 'Element' : element,\n 'Execution Time' : executionTime\n });\n }\n clearTimeout(module.performance.timer);\n module.performance.timer = setTimeout(module.performance.display, 0);\n },\n display: function() {\n var\n title = settings.name + ':',\n totalTime = 0\n ;\n time = false;\n clearTimeout(module.performance.timer);\n $.each(performance, function(index, data) {\n totalTime += data['Execution Time'];\n });\n title += ' ' + totalTime + 'ms';\n if(moduleSelector) {\n title += ' \\'' + moduleSelector + '\\'';\n }\n if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n console.groupCollapsed(title);\n if(console.table) {\n console.table(performance);\n }\n else {\n $.each(performance, function(index, data) {\n console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n });\n }\n console.groupEnd();\n }\n performance = [];\n }\n },\n invoke: function(query, passedArguments, context) {\n var\n object = instance,\n maxDepth,\n found,\n response\n ;\n passedArguments = passedArguments || queryArguments;\n context = element || context;\n if(typeof query == 'string' && object !== undefined) {\n query = query.split(/[\\. ]/);\n maxDepth = query.length - 1;\n $.each(query, function(depth, value) {\n var camelCaseValue = (depth != maxDepth)\n ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n : query\n ;\n if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n object = object[camelCaseValue];\n }\n else if( object[camelCaseValue] !== undefined ) {\n found = object[camelCaseValue];\n return false;\n }\n else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n object = object[value];\n }\n else if( object[value] !== undefined ) {\n found = object[value];\n return false;\n }\n else {\n return false;\n }\n });\n }\n if ( $.isFunction( found ) ) {\n response = found.apply(context, passedArguments);\n }\n else if(found !== undefined) {\n response = found;\n }\n if($.isArray(returnedValue)) {\n returnedValue.push(response);\n }\n else if(returnedValue !== undefined) {\n returnedValue = [returnedValue, response];\n }\n else if(response !== undefined) {\n returnedValue = response;\n }\n return found;\n }\n };\n\n if(methodInvoked) {\n if(instance === undefined) {\n module.initialize();\n }\n module.invoke(query);\n }\n else {\n if(instance !== undefined) {\n instance.invoke('destroy');\n }\n module.initialize();\n }\n })\n ;\n\n return (returnedValue !== undefined)\n ? returnedValue\n : this\n ;\n};\n\n$.fn.sticky.settings = {\n\n name : 'Sticky',\n namespace : 'sticky',\n\n silent : false,\n debug : false,\n verbose : true,\n performance : true,\n\n // whether to stick in the opposite direction on scroll up\n pushing : false,\n\n context : false,\n container : false,\n\n // Context to watch scroll events\n scrollContext : window,\n\n // Offset to adjust scroll\n offset : 0,\n\n // Offset to adjust scroll when attached to bottom of screen\n bottomOffset : 0,\n\n jitter : 5, // will only set container height if difference between context and container is larger than this number\n\n // Whether to automatically observe changes with Mutation Observers\n observeChanges : false,\n\n // Called when position is recalculated\n onReposition : function(){},\n\n // Called on each scroll\n onScroll : function(){},\n\n // Called when element is stuck to viewport\n onStick : function(){},\n\n // Called when element is unstuck from viewport\n onUnstick : function(){},\n\n // Called when element reaches top of context\n onTop : function(){},\n\n // Called when element reaches bottom of context\n onBottom : function(){},\n\n error : {\n container : 'Sticky element must be inside a relative container',\n visible : 'Element is hidden, you must call refresh after element becomes visible. Use silent setting to surpress this warning in production.',\n method : 'The method you called is not defined.',\n invalidContext : 'Context specified does not exist',\n elementSize : 'Sticky element is larger than its container, cannot create sticky.'\n },\n\n className : {\n bound : 'bound',\n fixed : 'fixed',\n supported : 'native',\n top : 'top',\n bottom : 'bottom'\n }\n\n};\n\n})( jQuery, window, document );\n","/*!\n * # Semantic UI 2.2.6 - Tab\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n ? window\n : (typeof self != 'undefined' && self.Math == Math)\n ? self\n : Function('return this')()\n;\n\n$.fn.tab = function(parameters) {\n\n var\n // use window context if none specified\n $allModules = $.isFunction(this)\n ? $(window)\n : $(this),\n\n moduleSelector = $allModules.selector || '',\n time = new Date().getTime(),\n performance = [],\n\n query = arguments[0],\n methodInvoked = (typeof query == 'string'),\n queryArguments = [].slice.call(arguments, 1),\n\n initializedHistory = false,\n returnedValue\n ;\n\n $allModules\n .each(function() {\n var\n\n settings = ( $.isPlainObject(parameters) )\n ? $.extend(true, {}, $.fn.tab.settings, parameters)\n : $.extend({}, $.fn.tab.settings),\n\n className = settings.className,\n metadata = settings.metadata,\n selector = settings.selector,\n error = settings.error,\n\n eventNamespace = '.' + settings.namespace,\n moduleNamespace = 'module-' + settings.namespace,\n\n $module = $(this),\n $context,\n $tabs,\n\n cache = {},\n firstLoad = true,\n recursionDepth = 0,\n element = this,\n instance = $module.data(moduleNamespace),\n\n activeTabPath,\n parameterArray,\n module,\n\n historyEvent\n\n ;\n\n module = {\n\n initialize: function() {\n module.debug('Initializing tab menu item', $module);\n module.fix.callbacks();\n module.determineTabs();\n\n module.debug('Determining tabs', settings.context, $tabs);\n // set up automatic routing\n if(settings.auto) {\n module.set.auto();\n }\n module.bind.events();\n\n if(settings.history && !initializedHistory) {\n module.initializeHistory();\n initializedHistory = true;\n }\n\n module.instantiate();\n },\n\n instantiate: function () {\n module.verbose('Storing instance of module', module);\n instance = module;\n $module\n .data(moduleNamespace, module)\n ;\n },\n\n destroy: function() {\n module.debug('Destroying tabs', $module);\n $module\n .removeData(moduleNamespace)\n .off(eventNamespace)\n ;\n },\n\n bind: {\n events: function() {\n // if using $.tab don't add events\n if( !$.isWindow( element ) ) {\n module.debug('Attaching tab activation events to element', $module);\n $module\n .on('click' + eventNamespace, module.event.click)\n ;\n }\n }\n },\n\n determineTabs: function() {\n var\n $reference\n ;\n\n // determine tab context\n if(settings.context === 'parent') {\n if($module.closest(selector.ui).length > 0) {\n $reference = $module.closest(selector.ui);\n module.verbose('Using closest UI element as parent', $reference);\n }\n else {\n $reference = $module;\n }\n $context = $reference.parent();\n module.verbose('Determined parent element for creating context', $context);\n }\n else if(settings.context) {\n $context = $(settings.context);\n module.verbose('Using selector for tab context', settings.context, $context);\n }\n else {\n $context = $('body');\n }\n // find tabs\n if(settings.childrenOnly) {\n $tabs = $context.children(selector.tabs);\n module.debug('Searching tab context children for tabs', $context, $tabs);\n }\n else {\n $tabs = $context.find(selector.tabs);\n module.debug('Searching tab context for tabs', $context, $tabs);\n }\n },\n\n fix: {\n callbacks: function() {\n if( $.isPlainObject(parameters) && (parameters.onTabLoad || parameters.onTabInit) ) {\n if(parameters.onTabLoad) {\n parameters.onLoad = parameters.onTabLoad;\n delete parameters.onTabLoad;\n module.error(error.legacyLoad, parameters.onLoad);\n }\n if(parameters.onTabInit) {\n parameters.onFirstLoad = parameters.onTabInit;\n delete parameters.onTabInit;\n module.error(error.legacyInit, parameters.onFirstLoad);\n }\n settings = $.extend(true, {}, $.fn.tab.settings, parameters);\n }\n }\n },\n\n initializeHistory: function() {\n module.debug('Initializing page state');\n if( $.address === undefined ) {\n module.error(error.state);\n return false;\n }\n else {\n if(settings.historyType == 'state') {\n module.debug('Using HTML5 to manage state');\n if(settings.path !== false) {\n $.address\n .history(true)\n .state(settings.path)\n ;\n }\n else {\n module.error(error.path);\n return false;\n }\n }\n $.address\n .bind('change', module.event.history.change)\n ;\n }\n },\n\n event: {\n click: function(event) {\n var\n tabPath = $(this).data(metadata.tab)\n ;\n if(tabPath !== undefined) {\n if(settings.history) {\n module.verbose('Updating page state', event);\n $.address.value(tabPath);\n }\n else {\n module.verbose('Changing tab', event);\n module.changeTab(tabPath);\n }\n event.preventDefault();\n }\n else {\n module.debug('No tab specified');\n }\n },\n history: {\n change: function(event) {\n var\n tabPath = event.pathNames.join('/') || module.get.initialPath(),\n pageTitle = settings.templates.determineTitle(tabPath) || false\n ;\n module.performance.display();\n module.debug('History change event', tabPath, event);\n historyEvent = event;\n if(tabPath !== undefined) {\n module.changeTab(tabPath);\n }\n if(pageTitle) {\n $.address.title(pageTitle);\n }\n }\n }\n },\n\n refresh: function() {\n if(activeTabPath) {\n module.debug('Refreshing tab', activeTabPath);\n module.changeTab(activeTabPath);\n }\n },\n\n cache: {\n\n read: function(cacheKey) {\n return (cacheKey !== undefined)\n ? cache[cacheKey]\n : false\n ;\n },\n add: function(cacheKey, content) {\n cacheKey = cacheKey || activeTabPath;\n module.debug('Adding cached content for', cacheKey);\n cache[cacheKey] = content;\n },\n remove: function(cacheKey) {\n cacheKey = cacheKey || activeTabPath;\n module.debug('Removing cached content for', cacheKey);\n delete cache[cacheKey];\n }\n },\n\n set: {\n auto: function() {\n var\n url = (typeof settings.path == 'string')\n ? settings.path.replace(/\\/$/, '') + '/{$tab}'\n : '/{$tab}'\n ;\n module.verbose('Setting up automatic tab retrieval from server', url);\n if($.isPlainObject(settings.apiSettings)) {\n settings.apiSettings.url = url;\n }\n else {\n settings.apiSettings = {\n url: url\n };\n }\n },\n loading: function(tabPath) {\n var\n $tab = module.get.tabElement(tabPath),\n isLoading = $tab.hasClass(className.loading)\n ;\n if(!isLoading) {\n module.verbose('Setting loading state for', $tab);\n $tab\n .addClass(className.loading)\n .siblings($tabs)\n .removeClass(className.active + ' ' + className.loading)\n ;\n if($tab.length > 0) {\n settings.onRequest.call($tab[0], tabPath);\n }\n }\n },\n state: function(state) {\n $.address.value(state);\n }\n },\n\n changeTab: function(tabPath) {\n var\n pushStateAvailable = (window.history && window.history.pushState),\n shouldIgnoreLoad = (pushStateAvailable && settings.ignoreFirstLoad && firstLoad),\n remoteContent = (settings.auto || $.isPlainObject(settings.apiSettings) ),\n // only add default path if not remote content\n pathArray = (remoteContent && !shouldIgnoreLoad)\n ? module.utilities.pathToArray(tabPath)\n : module.get.defaultPathArray(tabPath)\n ;\n tabPath = module.utilities.arrayToPath(pathArray);\n $.each(pathArray, function(index, tab) {\n var\n currentPathArray = pathArray.slice(0, index + 1),\n currentPath = module.utilities.arrayToPath(currentPathArray),\n\n isTab = module.is.tab(currentPath),\n isLastIndex = (index + 1 == pathArray.length),\n\n $tab = module.get.tabElement(currentPath),\n $anchor,\n nextPathArray,\n nextPath,\n isLastTab\n ;\n module.verbose('Looking for tab', tab);\n if(isTab) {\n module.verbose('Tab was found', tab);\n // scope up\n activeTabPath = currentPath;\n parameterArray = module.utilities.filterArray(pathArray, currentPathArray);\n\n if(isLastIndex) {\n isLastTab = true;\n }\n else {\n nextPathArray = pathArray.slice(0, index + 2);\n nextPath = module.utilities.arrayToPath(nextPathArray);\n isLastTab = ( !module.is.tab(nextPath) );\n if(isLastTab) {\n module.verbose('Tab parameters found', nextPathArray);\n }\n }\n if(isLastTab && remoteContent) {\n if(!shouldIgnoreLoad) {\n module.activate.navigation(currentPath);\n module.fetch.content(currentPath, tabPath);\n }\n else {\n module.debug('Ignoring remote content on first tab load', currentPath);\n firstLoad = false;\n module.cache.add(tabPath, $tab.html());\n module.activate.all(currentPath);\n settings.onFirstLoad.call($tab[0], currentPath, parameterArray, historyEvent);\n settings.onLoad.call($tab[0], currentPath, parameterArray, historyEvent);\n }\n return false;\n }\n else {\n module.debug('Opened local tab', currentPath);\n module.activate.all(currentPath);\n if( !module.cache.read(currentPath) ) {\n module.cache.add(currentPath, true);\n module.debug('First time tab loaded calling tab init');\n settings.onFirstLoad.call($tab[0], currentPath, parameterArray, historyEvent);\n }\n settings.onLoad.call($tab[0], currentPath, parameterArray, historyEvent);\n }\n\n }\n else if(tabPath.search('/') == -1 && tabPath !== '') {\n // look for in page anchor\n $anchor = $('#' + tabPath + ', a[name=\"' + tabPath + '\"]');\n currentPath = $anchor.closest('[data-tab]').data(metadata.tab);\n $tab = module.get.tabElement(currentPath);\n // if anchor exists use parent tab\n if($anchor && $anchor.length > 0 && currentPath) {\n module.debug('Anchor link used, opening parent tab', $tab, $anchor);\n if( !$tab.hasClass(className.active) ) {\n setTimeout(function() {\n module.scrollTo($anchor);\n }, 0);\n }\n module.activate.all(currentPath);\n if( !module.cache.read(currentPath) ) {\n module.cache.add(currentPath, true);\n module.debug('First time tab loaded calling tab init');\n settings.onFirstLoad.call($tab[0], currentPath, parameterArray, historyEvent);\n }\n settings.onLoad.call($tab[0], currentPath, parameterArray, historyEvent);\n return false;\n }\n }\n else {\n module.error(error.missingTab, $module, $context, currentPath);\n return false;\n }\n });\n },\n\n scrollTo: function($element) {\n var\n scrollOffset = ($element && $element.length > 0)\n ? $element.offset().top\n : false\n ;\n if(scrollOffset !== false) {\n module.debug('Forcing scroll to an in-page link in a hidden tab', scrollOffset, $element);\n $(document).scrollTop(scrollOffset);\n }\n },\n\n update: {\n content: function(tabPath, html, evaluateScripts) {\n var\n $tab = module.get.tabElement(tabPath),\n tab = $tab[0]\n ;\n evaluateScripts = (evaluateScripts !== undefined)\n ? evaluateScripts\n : settings.evaluateScripts\n ;\n if(typeof settings.cacheType == 'string' && settings.cacheType.toLowerCase() == 'dom' && typeof html !== 'string') {\n $tab\n .empty()\n .append($(html).clone(true))\n ;\n }\n else {\n if(evaluateScripts) {\n module.debug('Updating HTML and evaluating inline scripts', tabPath, html);\n $tab.html(html);\n }\n else {\n module.debug('Updating HTML', tabPath, html);\n tab.innerHTML = html;\n }\n }\n }\n },\n\n fetch: {\n\n content: function(tabPath, fullTabPath) {\n var\n $tab = module.get.tabElement(tabPath),\n apiSettings = {\n dataType : 'html',\n encodeParameters : false,\n on : 'now',\n cache : settings.alwaysRefresh,\n headers : {\n 'X-Remote': true\n },\n onSuccess : function(response) {\n if(settings.cacheType == 'response') {\n module.cache.add(fullTabPath, response);\n }\n module.update.content(tabPath, response);\n if(tabPath == activeTabPath) {\n module.debug('Content loaded', tabPath);\n module.activate.tab(tabPath);\n }\n else {\n module.debug('Content loaded in background', tabPath);\n }\n settings.onFirstLoad.call($tab[0], tabPath, parameterArray, historyEvent);\n settings.onLoad.call($tab[0], tabPath, parameterArray, historyEvent);\n\n if(typeof settings.cacheType == 'string' && settings.cacheType.toLowerCase() == 'dom' && $tab.children().length > 0) {\n setTimeout(function() {\n var\n $clone = $tab.children().clone(true)\n ;\n $clone = $clone.not('script');\n module.cache.add(fullTabPath, $clone);\n }, 0);\n }\n else {\n module.cache.add(fullTabPath, $tab.html());\n }\n },\n urlData: {\n tab: fullTabPath\n }\n },\n request = $tab.api('get request') || false,\n existingRequest = ( request && request.state() === 'pending' ),\n requestSettings,\n cachedContent\n ;\n\n fullTabPath = fullTabPath || tabPath;\n cachedContent = module.cache.read(fullTabPath);\n\n\n if(settings.cache && cachedContent) {\n module.activate.tab(tabPath);\n module.debug('Adding cached content', fullTabPath);\n if(settings.evaluateScripts == 'once') {\n module.update.content(tabPath, cachedContent, false);\n }\n else {\n module.update.content(tabPath, cachedContent);\n }\n settings.onLoad.call($tab[0], tabPath, parameterArray, historyEvent);\n }\n else if(existingRequest) {\n module.set.loading(tabPath);\n module.debug('Content is already loading', fullTabPath);\n }\n else if($.api !== undefined) {\n requestSettings = $.extend(true, {}, settings.apiSettings, apiSettings);\n module.debug('Retrieving remote content', fullTabPath, requestSettings);\n module.set.loading(tabPath);\n $tab.api(requestSettings);\n }\n else {\n module.error(error.api);\n }\n }\n },\n\n activate: {\n all: function(tabPath) {\n module.activate.tab(tabPath);\n module.activate.navigation(tabPath);\n },\n tab: function(tabPath) {\n var\n $tab = module.get.tabElement(tabPath),\n $deactiveTabs = (settings.deactivate == 'siblings')\n ? $tab.siblings($tabs)\n : $tabs.not($tab),\n isActive = $tab.hasClass(className.active)\n ;\n module.verbose('Showing tab content for', $tab);\n if(!isActive) {\n $tab\n .addClass(className.active)\n ;\n $deactiveTabs\n .removeClass(className.active + ' ' + className.loading)\n ;\n if($tab.length > 0) {\n settings.onVisible.call($tab[0], tabPath);\n }\n }\n },\n navigation: function(tabPath) {\n var\n $navigation = module.get.navElement(tabPath),\n $deactiveNavigation = (settings.deactivate == 'siblings')\n ? $navigation.siblings($allModules)\n : $allModules.not($navigation),\n isActive = $navigation.hasClass(className.active)\n ;\n module.verbose('Activating tab navigation for', $navigation, tabPath);\n if(!isActive) {\n $navigation\n .addClass(className.active)\n ;\n $deactiveNavigation\n .removeClass(className.active + ' ' + className.loading)\n ;\n }\n }\n },\n\n deactivate: {\n all: function() {\n module.deactivate.navigation();\n module.deactivate.tabs();\n },\n navigation: function() {\n $allModules\n .removeClass(className.active)\n ;\n },\n tabs: function() {\n $tabs\n .removeClass(className.active + ' ' + className.loading)\n ;\n }\n },\n\n is: {\n tab: function(tabName) {\n return (tabName !== undefined)\n ? ( module.get.tabElement(tabName).length > 0 )\n : false\n ;\n }\n },\n\n get: {\n initialPath: function() {\n return $allModules.eq(0).data(metadata.tab) || $tabs.eq(0).data(metadata.tab);\n },\n path: function() {\n return $.address.value();\n },\n // adds default tabs to tab path\n defaultPathArray: function(tabPath) {\n return module.utilities.pathToArray( module.get.defaultPath(tabPath) );\n },\n defaultPath: function(tabPath) {\n var\n $defaultNav = $allModules.filter('[data-' + metadata.tab + '^=\"' + tabPath + '/\"]').eq(0),\n defaultTab = $defaultNav.data(metadata.tab) || false\n ;\n if( defaultTab ) {\n module.debug('Found default tab', defaultTab);\n if(recursionDepth < settings.maxDepth) {\n recursionDepth++;\n return module.get.defaultPath(defaultTab);\n }\n module.error(error.recursion);\n }\n else {\n module.debug('No default tabs found for', tabPath, $tabs);\n }\n recursionDepth = 0;\n return tabPath;\n },\n navElement: function(tabPath) {\n tabPath = tabPath || activeTabPath;\n return $allModules.filter('[data-' + metadata.tab + '=\"' + tabPath + '\"]');\n },\n tabElement: function(tabPath) {\n var\n $fullPathTab,\n $simplePathTab,\n tabPathArray,\n lastTab\n ;\n tabPath = tabPath || activeTabPath;\n tabPathArray = module.utilities.pathToArray(tabPath);\n lastTab = module.utilities.last(tabPathArray);\n $fullPathTab = $tabs.filter('[data-' + metadata.tab + '=\"' + tabPath + '\"]');\n $simplePathTab = $tabs.filter('[data-' + metadata.tab + '=\"' + lastTab + '\"]');\n return ($fullPathTab.length > 0)\n ? $fullPathTab\n : $simplePathTab\n ;\n },\n tab: function() {\n return activeTabPath;\n }\n },\n\n utilities: {\n filterArray: function(keepArray, removeArray) {\n return $.grep(keepArray, function(keepValue) {\n return ( $.inArray(keepValue, removeArray) == -1);\n });\n },\n last: function(array) {\n return $.isArray(array)\n ? array[ array.length - 1]\n : false\n ;\n },\n pathToArray: function(pathName) {\n if(pathName === undefined) {\n pathName = activeTabPath;\n }\n return typeof pathName == 'string'\n ? pathName.split('/')\n : [pathName]\n ;\n },\n arrayToPath: function(pathArray) {\n return $.isArray(pathArray)\n ? pathArray.join('/')\n : false\n ;\n }\n },\n\n setting: function(name, value) {\n module.debug('Changing setting', name, value);\n if( $.isPlainObject(name) ) {\n $.extend(true, settings, name);\n }\n else if(value !== undefined) {\n if($.isPlainObject(settings[name])) {\n $.extend(true, settings[name], value);\n }\n else {\n settings[name] = value;\n }\n }\n else {\n return settings[name];\n }\n },\n internal: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, module, name);\n }\n else if(value !== undefined) {\n module[name] = value;\n }\n else {\n return module[name];\n }\n },\n debug: function() {\n if(!settings.silent && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.debug.apply(console, arguments);\n }\n }\n },\n verbose: function() {\n if(!settings.silent && settings.verbose && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.verbose.apply(console, arguments);\n }\n }\n },\n error: function() {\n if(!settings.silent) {\n module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n module.error.apply(console, arguments);\n }\n },\n performance: {\n log: function(message) {\n var\n currentTime,\n executionTime,\n previousTime\n ;\n if(settings.performance) {\n currentTime = new Date().getTime();\n previousTime = time || currentTime;\n executionTime = currentTime - previousTime;\n time = currentTime;\n performance.push({\n 'Name' : message[0],\n 'Arguments' : [].slice.call(message, 1) || '',\n 'Element' : element,\n 'Execution Time' : executionTime\n });\n }\n clearTimeout(module.performance.timer);\n module.performance.timer = setTimeout(module.performance.display, 500);\n },\n display: function() {\n var\n title = settings.name + ':',\n totalTime = 0\n ;\n time = false;\n clearTimeout(module.performance.timer);\n $.each(performance, function(index, data) {\n totalTime += data['Execution Time'];\n });\n title += ' ' + totalTime + 'ms';\n if(moduleSelector) {\n title += ' \\'' + moduleSelector + '\\'';\n }\n if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n console.groupCollapsed(title);\n if(console.table) {\n console.table(performance);\n }\n else {\n $.each(performance, function(index, data) {\n console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n });\n }\n console.groupEnd();\n }\n performance = [];\n }\n },\n invoke: function(query, passedArguments, context) {\n var\n object = instance,\n maxDepth,\n found,\n response\n ;\n passedArguments = passedArguments || queryArguments;\n context = element || context;\n if(typeof query == 'string' && object !== undefined) {\n query = query.split(/[\\. ]/);\n maxDepth = query.length - 1;\n $.each(query, function(depth, value) {\n var camelCaseValue = (depth != maxDepth)\n ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n : query\n ;\n if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n object = object[camelCaseValue];\n }\n else if( object[camelCaseValue] !== undefined ) {\n found = object[camelCaseValue];\n return false;\n }\n else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n object = object[value];\n }\n else if( object[value] !== undefined ) {\n found = object[value];\n return false;\n }\n else {\n module.error(error.method, query);\n return false;\n }\n });\n }\n if ( $.isFunction( found ) ) {\n response = found.apply(context, passedArguments);\n }\n else if(found !== undefined) {\n response = found;\n }\n if($.isArray(returnedValue)) {\n returnedValue.push(response);\n }\n else if(returnedValue !== undefined) {\n returnedValue = [returnedValue, response];\n }\n else if(response !== undefined) {\n returnedValue = response;\n }\n return found;\n }\n };\n if(methodInvoked) {\n if(instance === undefined) {\n module.initialize();\n }\n module.invoke(query);\n }\n else {\n if(instance !== undefined) {\n instance.invoke('destroy');\n }\n module.initialize();\n }\n })\n ;\n return (returnedValue !== undefined)\n ? returnedValue\n : this\n ;\n\n};\n\n// shortcut for tabbed content with no defined navigation\n$.tab = function() {\n $(window).tab.apply(this, arguments);\n};\n\n$.fn.tab.settings = {\n\n name : 'Tab',\n namespace : 'tab',\n\n silent : false,\n debug : false,\n verbose : false,\n performance : true,\n\n auto : false, // uses pjax style endpoints fetching content from same url with remote-content headers\n history : false, // use browser history\n historyType : 'hash', // #/ or html5 state\n path : false, // base path of url\n\n context : false, // specify a context that tabs must appear inside\n childrenOnly : false, // use only tabs that are children of context\n maxDepth : 25, // max depth a tab can be nested\n\n deactivate : 'siblings', // whether tabs should deactivate sibling menu elements or all elements initialized together\n\n alwaysRefresh : false, // load tab content new every tab click\n cache : true, // cache the content requests to pull locally\n cacheType : 'response', // Whether to cache exact response, or to html cache contents after scripts execute\n ignoreFirstLoad : false, // don't load remote content on first load\n\n apiSettings : false, // settings for api call\n evaluateScripts : 'once', // whether inline scripts should be parsed (true/false/once). Once will not re-evaluate on cached content\n\n onFirstLoad : function(tabPath, parameterArray, historyEvent) {}, // called first time loaded\n onLoad : function(tabPath, parameterArray, historyEvent) {}, // called on every load\n onVisible : function(tabPath, parameterArray, historyEvent) {}, // called every time tab visible\n onRequest : function(tabPath, parameterArray, historyEvent) {}, // called ever time a tab beings loading remote content\n\n templates : {\n determineTitle: function(tabArray) {} // returns page title for path\n },\n\n error: {\n api : 'You attempted to load content without API module',\n method : 'The method you called is not defined',\n missingTab : 'Activated tab cannot be found. Tabs are case-sensitive.',\n noContent : 'The tab you specified is missing a content url.',\n path : 'History enabled, but no path was specified',\n recursion : 'Max recursive depth reached',\n legacyInit : 'onTabInit has been renamed to onFirstLoad in 2.0, please adjust your code.',\n legacyLoad : 'onTabLoad has been renamed to onLoad in 2.0. Please adjust your code',\n state : 'History requires Asual\\'s Address library <https://github.com/asual/jquery-address>'\n },\n\n metadata : {\n tab : 'tab',\n loaded : 'loaded',\n promise: 'promise'\n },\n\n className : {\n loading : 'loading',\n active : 'active'\n },\n\n selector : {\n tabs : '.ui.tab',\n ui : '.ui'\n }\n\n};\n\n})( jQuery, window, document );\n","/*!\n * # Semantic UI 2.2.6 - Transition\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n ? window\n : (typeof self != 'undefined' && self.Math == Math)\n ? self\n : Function('return this')()\n;\n\n$.fn.transition = function() {\n var\n $allModules = $(this),\n moduleSelector = $allModules.selector || '',\n\n time = new Date().getTime(),\n performance = [],\n\n moduleArguments = arguments,\n query = moduleArguments[0],\n queryArguments = [].slice.call(arguments, 1),\n methodInvoked = (typeof query === 'string'),\n\n requestAnimationFrame = window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || function(callback) { setTimeout(callback, 0); },\n\n returnedValue\n ;\n $allModules\n .each(function(index) {\n var\n $module = $(this),\n element = this,\n\n // set at run time\n settings,\n instance,\n\n error,\n className,\n metadata,\n animationEnd,\n animationName,\n\n namespace,\n moduleNamespace,\n eventNamespace,\n module\n ;\n\n module = {\n\n initialize: function() {\n\n // get full settings\n settings = module.get.settings.apply(element, moduleArguments);\n\n // shorthand\n className = settings.className;\n error = settings.error;\n metadata = settings.metadata;\n\n // define namespace\n eventNamespace = '.' + settings.namespace;\n moduleNamespace = 'module-' + settings.namespace;\n instance = $module.data(moduleNamespace) || module;\n\n // get vendor specific events\n animationEnd = module.get.animationEndEvent();\n\n if(methodInvoked) {\n methodInvoked = module.invoke(query);\n }\n\n // method not invoked, lets run an animation\n if(methodInvoked === false) {\n module.verbose('Converted arguments into settings object', settings);\n if(settings.interval) {\n module.delay(settings.animate);\n }\n else {\n module.animate();\n }\n module.instantiate();\n }\n },\n\n instantiate: function() {\n module.verbose('Storing instance of module', module);\n instance = module;\n $module\n .data(moduleNamespace, instance)\n ;\n },\n\n destroy: function() {\n module.verbose('Destroying previous module for', element);\n $module\n .removeData(moduleNamespace)\n ;\n },\n\n refresh: function() {\n module.verbose('Refreshing display type on next animation');\n delete module.displayType;\n },\n\n forceRepaint: function() {\n module.verbose('Forcing element repaint');\n var\n $parentElement = $module.parent(),\n $nextElement = $module.next()\n ;\n if($nextElement.length === 0) {\n $module.detach().appendTo($parentElement);\n }\n else {\n $module.detach().insertBefore($nextElement);\n }\n },\n\n repaint: function() {\n module.verbose('Repainting element');\n var\n fakeAssignment = element.offsetWidth\n ;\n },\n\n delay: function(interval) {\n var\n direction = module.get.animationDirection(),\n shouldReverse,\n delay\n ;\n if(!direction) {\n direction = module.can.transition()\n ? module.get.direction()\n : 'static'\n ;\n }\n interval = (interval !== undefined)\n ? interval\n : settings.interval\n ;\n shouldReverse = (settings.reverse == 'auto' && direction == className.outward);\n delay = (shouldReverse || settings.reverse == true)\n ? ($allModules.length - index) * settings.interval\n : index * settings.interval\n ;\n module.debug('Delaying animation by', delay);\n setTimeout(module.animate, delay);\n },\n\n animate: function(overrideSettings) {\n settings = overrideSettings || settings;\n if(!module.is.supported()) {\n module.error(error.support);\n return false;\n }\n module.debug('Preparing animation', settings.animation);\n if(module.is.animating()) {\n if(settings.queue) {\n if(!settings.allowRepeats && module.has.direction() && module.is.occurring() && module.queuing !== true) {\n module.debug('Animation is currently occurring, preventing queueing same animation', settings.animation);\n }\n else {\n module.queue(settings.animation);\n }\n return false;\n }\n else if(!settings.allowRepeats && module.is.occurring()) {\n module.debug('Animation is already occurring, will not execute repeated animation', settings.animation);\n return false;\n }\n else {\n module.debug('New animation started, completing previous early', settings.animation);\n instance.complete();\n }\n }\n if( module.can.animate() ) {\n module.set.animating(settings.animation);\n }\n else {\n module.error(error.noAnimation, settings.animation, element);\n }\n },\n\n reset: function() {\n module.debug('Resetting animation to beginning conditions');\n module.remove.animationCallbacks();\n module.restore.conditions();\n module.remove.animating();\n },\n\n queue: function(animation) {\n module.debug('Queueing animation of', animation);\n module.queuing = true;\n $module\n .one(animationEnd + '.queue' + eventNamespace, function() {\n module.queuing = false;\n module.repaint();\n module.animate.apply(this, settings);\n })\n ;\n },\n\n complete: function (event) {\n module.debug('Animation complete', settings.animation);\n module.remove.completeCallback();\n module.remove.failSafe();\n if(!module.is.looping()) {\n if( module.is.outward() ) {\n module.verbose('Animation is outward, hiding element');\n module.restore.conditions();\n module.hide();\n }\n else if( module.is.inward() ) {\n module.verbose('Animation is outward, showing element');\n module.restore.conditions();\n module.show();\n }\n else {\n module.verbose('Static animation completed');\n module.restore.conditions();\n settings.onComplete.call(element);\n }\n }\n },\n\n force: {\n visible: function() {\n var\n style = $module.attr('style'),\n userStyle = module.get.userStyle(),\n displayType = module.get.displayType(),\n overrideStyle = userStyle + 'display: ' + displayType + ' !important;',\n currentDisplay = $module.css('display'),\n emptyStyle = (style === undefined || style === '')\n ;\n if(currentDisplay !== displayType) {\n module.verbose('Overriding default display to show element', displayType);\n $module\n .attr('style', overrideStyle)\n ;\n }\n else if(emptyStyle) {\n $module.removeAttr('style');\n }\n },\n hidden: function() {\n var\n style = $module.attr('style'),\n currentDisplay = $module.css('display'),\n emptyStyle = (style === undefined || style === '')\n ;\n if(currentDisplay !== 'none' && !module.is.hidden()) {\n module.verbose('Overriding default display to hide element');\n $module\n .css('display', 'none')\n ;\n }\n else if(emptyStyle) {\n $module\n .removeAttr('style')\n ;\n }\n }\n },\n\n has: {\n direction: function(animation) {\n var\n hasDirection = false\n ;\n animation = animation || settings.animation;\n if(typeof animation === 'string') {\n animation = animation.split(' ');\n $.each(animation, function(index, word){\n if(word === className.inward || word === className.outward) {\n hasDirection = true;\n }\n });\n }\n return hasDirection;\n },\n inlineDisplay: function() {\n var\n style = $module.attr('style') || ''\n ;\n return $.isArray(style.match(/display.*?;/, ''));\n }\n },\n\n set: {\n animating: function(animation) {\n var\n animationClass,\n direction\n ;\n // remove previous callbacks\n module.remove.completeCallback();\n\n // determine exact animation\n animation = animation || settings.animation;\n animationClass = module.get.animationClass(animation);\n\n // save animation class in cache to restore class names\n module.save.animation(animationClass);\n\n // override display if necessary so animation appears visibly\n module.force.visible();\n\n module.remove.hidden();\n module.remove.direction();\n\n module.start.animation(animationClass);\n\n },\n duration: function(animationName, duration) {\n duration = duration || settings.duration;\n duration = (typeof duration == 'number')\n ? duration + 'ms'\n : duration\n ;\n if(duration || duration === 0) {\n module.verbose('Setting animation duration', duration);\n $module\n .css({\n 'animation-duration': duration\n })\n ;\n }\n },\n direction: function(direction) {\n direction = direction || module.get.direction();\n if(direction == className.inward) {\n module.set.inward();\n }\n else {\n module.set.outward();\n }\n },\n looping: function() {\n module.debug('Transition set to loop');\n $module\n .addClass(className.looping)\n ;\n },\n hidden: function() {\n $module\n .addClass(className.transition)\n .addClass(className.hidden)\n ;\n },\n inward: function() {\n module.debug('Setting direction to inward');\n $module\n .removeClass(className.outward)\n .addClass(className.inward)\n ;\n },\n outward: function() {\n module.debug('Setting direction to outward');\n $module\n .removeClass(className.inward)\n .addClass(className.outward)\n ;\n },\n visible: function() {\n $module\n .addClass(className.transition)\n .addClass(className.visible)\n ;\n }\n },\n\n start: {\n animation: function(animationClass) {\n animationClass = animationClass || module.get.animationClass();\n module.debug('Starting tween', animationClass);\n $module\n .addClass(animationClass)\n .one(animationEnd + '.complete' + eventNamespace, module.complete)\n ;\n if(settings.useFailSafe) {\n module.add.failSafe();\n }\n module.set.duration(settings.duration);\n settings.onStart.call(element);\n }\n },\n\n save: {\n animation: function(animation) {\n if(!module.cache) {\n module.cache = {};\n }\n module.cache.animation = animation;\n },\n displayType: function(displayType) {\n if(displayType !== 'none') {\n $module.data(metadata.displayType, displayType);\n }\n },\n transitionExists: function(animation, exists) {\n $.fn.transition.exists[animation] = exists;\n module.verbose('Saving existence of transition', animation, exists);\n }\n },\n\n restore: {\n conditions: function() {\n var\n animation = module.get.currentAnimation()\n ;\n if(animation) {\n $module\n .removeClass(animation)\n ;\n module.verbose('Removing animation class', module.cache);\n }\n module.remove.duration();\n }\n },\n\n add: {\n failSafe: function() {\n var\n duration = module.get.duration()\n ;\n module.timer = setTimeout(function() {\n $module.triggerHandler(animationEnd);\n }, duration + settings.failSafeDelay);\n module.verbose('Adding fail safe timer', module.timer);\n }\n },\n\n remove: {\n animating: function() {\n $module.removeClass(className.animating);\n },\n animationCallbacks: function() {\n module.remove.queueCallback();\n module.remove.completeCallback();\n },\n queueCallback: function() {\n $module.off('.queue' + eventNamespace);\n },\n completeCallback: function() {\n $module.off('.complete' + eventNamespace);\n },\n display: function() {\n $module.css('display', '');\n },\n direction: function() {\n $module\n .removeClass(className.inward)\n .removeClass(className.outward)\n ;\n },\n duration: function() {\n $module\n .css('animation-duration', '')\n ;\n },\n failSafe: function() {\n module.verbose('Removing fail safe timer', module.timer);\n if(module.timer) {\n clearTimeout(module.timer);\n }\n },\n hidden: function() {\n $module.removeClass(className.hidden);\n },\n visible: function() {\n $module.removeClass(className.visible);\n },\n looping: function() {\n module.debug('Transitions are no longer looping');\n if( module.is.looping() ) {\n module.reset();\n $module\n .removeClass(className.looping)\n ;\n }\n },\n transition: function() {\n $module\n .removeClass(className.visible)\n .removeClass(className.hidden)\n ;\n }\n },\n get: {\n settings: function(animation, duration, onComplete) {\n // single settings object\n if(typeof animation == 'object') {\n return $.extend(true, {}, $.fn.transition.settings, animation);\n }\n // all arguments provided\n else if(typeof onComplete == 'function') {\n return $.extend({}, $.fn.transition.settings, {\n animation : animation,\n onComplete : onComplete,\n duration : duration\n });\n }\n // only duration provided\n else if(typeof duration == 'string' || typeof duration == 'number') {\n return $.extend({}, $.fn.transition.settings, {\n animation : animation,\n duration : duration\n });\n }\n // duration is actually settings object\n else if(typeof duration == 'object') {\n return $.extend({}, $.fn.transition.settings, duration, {\n animation : animation\n });\n }\n // duration is actually callback\n else if(typeof duration == 'function') {\n return $.extend({}, $.fn.transition.settings, {\n animation : animation,\n onComplete : duration\n });\n }\n // only animation provided\n else {\n return $.extend({}, $.fn.transition.settings, {\n animation : animation\n });\n }\n },\n animationClass: function(animation) {\n var\n animationClass = animation || settings.animation,\n directionClass = (module.can.transition() && !module.has.direction())\n ? module.get.direction() + ' '\n : ''\n ;\n return className.animating + ' '\n + className.transition + ' '\n + directionClass\n + animationClass\n ;\n },\n currentAnimation: function() {\n return (module.cache && module.cache.animation !== undefined)\n ? module.cache.animation\n : false\n ;\n },\n currentDirection: function() {\n return module.is.inward()\n ? className.inward\n : className.outward\n ;\n },\n direction: function() {\n return module.is.hidden() || !module.is.visible()\n ? className.inward\n : className.outward\n ;\n },\n animationDirection: function(animation) {\n var\n direction\n ;\n animation = animation || settings.animation;\n if(typeof animation === 'string') {\n animation = animation.split(' ');\n // search animation name for out/in class\n $.each(animation, function(index, word){\n if(word === className.inward) {\n direction = className.inward;\n }\n else if(word === className.outward) {\n direction = className.outward;\n }\n });\n }\n // return found direction\n if(direction) {\n return direction;\n }\n return false;\n },\n duration: function(duration) {\n duration = duration || settings.duration;\n if(duration === false) {\n duration = $module.css('animation-duration') || 0;\n }\n return (typeof duration === 'string')\n ? (duration.indexOf('ms') > -1)\n ? parseFloat(duration)\n : parseFloat(duration) * 1000\n : duration\n ;\n },\n displayType: function(shouldDetermine) {\n shouldDetermine = (shouldDetermine !== undefined)\n ? shouldDetermine\n : true\n ;\n if(settings.displayType) {\n return settings.displayType;\n }\n if(shouldDetermine && $module.data(metadata.displayType) === undefined) {\n // create fake element to determine display state\n module.can.transition(true);\n }\n return $module.data(metadata.displayType);\n },\n userStyle: function(style) {\n style = style || $module.attr('style') || '';\n return style.replace(/display.*?;/, '');\n },\n transitionExists: function(animation) {\n return $.fn.transition.exists[animation];\n },\n animationStartEvent: function() {\n var\n element = document.createElement('div'),\n animations = {\n 'animation' :'animationstart',\n 'OAnimation' :'oAnimationStart',\n 'MozAnimation' :'mozAnimationStart',\n 'WebkitAnimation' :'webkitAnimationStart'\n },\n animation\n ;\n for(animation in animations){\n if( element.style[animation] !== undefined ){\n return animations[animation];\n }\n }\n return false;\n },\n animationEndEvent: function() {\n var\n element = document.createElement('div'),\n animations = {\n 'animation' :'animationend',\n 'OAnimation' :'oAnimationEnd',\n 'MozAnimation' :'mozAnimationEnd',\n 'WebkitAnimation' :'webkitAnimationEnd'\n },\n animation\n ;\n for(animation in animations){\n if( element.style[animation] !== undefined ){\n return animations[animation];\n }\n }\n return false;\n }\n\n },\n\n can: {\n transition: function(forced) {\n var\n animation = settings.animation,\n transitionExists = module.get.transitionExists(animation),\n displayType = module.get.displayType(false),\n elementClass,\n tagName,\n $clone,\n currentAnimation,\n inAnimation,\n directionExists\n ;\n if( transitionExists === undefined || forced) {\n module.verbose('Determining whether animation exists');\n elementClass = $module.attr('class');\n tagName = $module.prop('tagName');\n\n $clone = $('<' + tagName + ' />').addClass( elementClass ).insertAfter($module);\n currentAnimation = $clone\n .addClass(animation)\n .removeClass(className.inward)\n .removeClass(className.outward)\n .addClass(className.animating)\n .addClass(className.transition)\n .css('animationName')\n ;\n inAnimation = $clone\n .addClass(className.inward)\n .css('animationName')\n ;\n if(!displayType) {\n displayType = $clone\n .attr('class', elementClass)\n .removeAttr('style')\n .removeClass(className.hidden)\n .removeClass(className.visible)\n .show()\n .css('display')\n ;\n module.verbose('Determining final display state', displayType);\n module.save.displayType(displayType);\n }\n\n $clone.remove();\n if(currentAnimation != inAnimation) {\n module.debug('Direction exists for animation', animation);\n directionExists = true;\n }\n else if(currentAnimation == 'none' || !currentAnimation) {\n module.debug('No animation defined in css', animation);\n return;\n }\n else {\n module.debug('Static animation found', animation, displayType);\n directionExists = false;\n }\n module.save.transitionExists(animation, directionExists);\n }\n return (transitionExists !== undefined)\n ? transitionExists\n : directionExists\n ;\n },\n animate: function() {\n // can transition does not return a value if animation does not exist\n return (module.can.transition() !== undefined);\n }\n },\n\n is: {\n animating: function() {\n return $module.hasClass(className.animating);\n },\n inward: function() {\n return $module.hasClass(className.inward);\n },\n outward: function() {\n return $module.hasClass(className.outward);\n },\n looping: function() {\n return $module.hasClass(className.looping);\n },\n occurring: function(animation) {\n animation = animation || settings.animation;\n animation = '.' + animation.replace(' ', '.');\n return ( $module.filter(animation).length > 0 );\n },\n visible: function() {\n return $module.is(':visible');\n },\n hidden: function() {\n return $module.css('visibility') === 'hidden';\n },\n supported: function() {\n return(animationEnd !== false);\n }\n },\n\n hide: function() {\n module.verbose('Hiding element');\n if( module.is.animating() ) {\n module.reset();\n }\n element.blur(); // IE will trigger focus change if element is not blurred before hiding\n module.remove.display();\n module.remove.visible();\n module.set.hidden();\n module.force.hidden();\n settings.onHide.call(element);\n settings.onComplete.call(element);\n // module.repaint();\n },\n\n show: function(display) {\n module.verbose('Showing element', display);\n module.remove.hidden();\n module.set.visible();\n module.force.visible();\n settings.onShow.call(element);\n settings.onComplete.call(element);\n // module.repaint();\n },\n\n toggle: function() {\n if( module.is.visible() ) {\n module.hide();\n }\n else {\n module.show();\n }\n },\n\n stop: function() {\n module.debug('Stopping current animation');\n $module.triggerHandler(animationEnd);\n },\n\n stopAll: function() {\n module.debug('Stopping all animation');\n module.remove.queueCallback();\n $module.triggerHandler(animationEnd);\n },\n\n clear: {\n queue: function() {\n module.debug('Clearing animation queue');\n module.remove.queueCallback();\n }\n },\n\n enable: function() {\n module.verbose('Starting animation');\n $module.removeClass(className.disabled);\n },\n\n disable: function() {\n module.debug('Stopping animation');\n $module.addClass(className.disabled);\n },\n\n setting: function(name, value) {\n module.debug('Changing setting', name, value);\n if( $.isPlainObject(name) ) {\n $.extend(true, settings, name);\n }\n else if(value !== undefined) {\n if($.isPlainObject(settings[name])) {\n $.extend(true, settings[name], value);\n }\n else {\n settings[name] = value;\n }\n }\n else {\n return settings[name];\n }\n },\n internal: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, module, name);\n }\n else if(value !== undefined) {\n module[name] = value;\n }\n else {\n return module[name];\n }\n },\n debug: function() {\n if(!settings.silent && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.debug.apply(console, arguments);\n }\n }\n },\n verbose: function() {\n if(!settings.silent && settings.verbose && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.verbose.apply(console, arguments);\n }\n }\n },\n error: function() {\n if(!settings.silent) {\n module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n module.error.apply(console, arguments);\n }\n },\n performance: {\n log: function(message) {\n var\n currentTime,\n executionTime,\n previousTime\n ;\n if(settings.performance) {\n currentTime = new Date().getTime();\n previousTime = time || currentTime;\n executionTime = currentTime - previousTime;\n time = currentTime;\n performance.push({\n 'Name' : message[0],\n 'Arguments' : [].slice.call(message, 1) || '',\n 'Element' : element,\n 'Execution Time' : executionTime\n });\n }\n clearTimeout(module.performance.timer);\n module.performance.timer = setTimeout(module.performance.display, 500);\n },\n display: function() {\n var\n title = settings.name + ':',\n totalTime = 0\n ;\n time = false;\n clearTimeout(module.performance.timer);\n $.each(performance, function(index, data) {\n totalTime += data['Execution Time'];\n });\n title += ' ' + totalTime + 'ms';\n if(moduleSelector) {\n title += ' \\'' + moduleSelector + '\\'';\n }\n if($allModules.length > 1) {\n title += ' ' + '(' + $allModules.length + ')';\n }\n if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n console.groupCollapsed(title);\n if(console.table) {\n console.table(performance);\n }\n else {\n $.each(performance, function(index, data) {\n console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n });\n }\n console.groupEnd();\n }\n performance = [];\n }\n },\n // modified for transition to return invoke success\n invoke: function(query, passedArguments, context) {\n var\n object = instance,\n maxDepth,\n found,\n response\n ;\n passedArguments = passedArguments || queryArguments;\n context = element || context;\n if(typeof query == 'string' && object !== undefined) {\n query = query.split(/[\\. ]/);\n maxDepth = query.length - 1;\n $.each(query, function(depth, value) {\n var camelCaseValue = (depth != maxDepth)\n ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n : query\n ;\n if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n object = object[camelCaseValue];\n }\n else if( object[camelCaseValue] !== undefined ) {\n found = object[camelCaseValue];\n return false;\n }\n else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n object = object[value];\n }\n else if( object[value] !== undefined ) {\n found = object[value];\n return false;\n }\n else {\n return false;\n }\n });\n }\n if ( $.isFunction( found ) ) {\n response = found.apply(context, passedArguments);\n }\n else if(found !== undefined) {\n response = found;\n }\n\n if($.isArray(returnedValue)) {\n returnedValue.push(response);\n }\n else if(returnedValue !== undefined) {\n returnedValue = [returnedValue, response];\n }\n else if(response !== undefined) {\n returnedValue = response;\n }\n return (found !== undefined)\n ? found\n : false\n ;\n }\n };\n module.initialize();\n })\n ;\n return (returnedValue !== undefined)\n ? returnedValue\n : this\n ;\n};\n\n// Records if CSS transition is available\n$.fn.transition.exists = {};\n\n$.fn.transition.settings = {\n\n // module info\n name : 'Transition',\n\n // hide all output from this component regardless of other settings\n silent : false,\n\n // debug content outputted to console\n debug : false,\n\n // verbose debug output\n verbose : false,\n\n // performance data output\n performance : true,\n\n // event namespace\n namespace : 'transition',\n\n // delay between animations in group\n interval : 0,\n\n // whether group animations should be reversed\n reverse : 'auto',\n\n // animation callback event\n onStart : function() {},\n onComplete : function() {},\n onShow : function() {},\n onHide : function() {},\n\n // whether timeout should be used to ensure callback fires in cases animationend does not\n useFailSafe : true,\n\n // delay in ms for fail safe\n failSafeDelay : 100,\n\n // whether EXACT animation can occur twice in a row\n allowRepeats : false,\n\n // Override final display type on visible\n displayType : false,\n\n // animation duration\n animation : 'fade',\n duration : false,\n\n // new animations will occur after previous ones\n queue : true,\n\n metadata : {\n displayType: 'display'\n },\n\n className : {\n animating : 'animating',\n disabled : 'disabled',\n hidden : 'hidden',\n inward : 'in',\n loading : 'loading',\n looping : 'looping',\n outward : 'out',\n transition : 'transition',\n visible : 'visible'\n },\n\n // possible errors\n error: {\n noAnimation : 'Element is no longer attached to DOM. Unable to animate. Use silent setting to surpress this warning in production.',\n repeated : 'That animation is already occurring, cancelling repeated animation',\n method : 'The method you called is not defined',\n support : 'This browser does not support CSS animations'\n }\n\n};\n\n\n})( jQuery, window, document );\n","/*!\n * # Semantic UI 2.2.6 - API\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nvar\n window = (typeof window != 'undefined' && window.Math == Math)\n ? window\n : (typeof self != 'undefined' && self.Math == Math)\n ? self\n : Function('return this')()\n;\n\n$.api = $.fn.api = function(parameters) {\n\n var\n // use window context if none specified\n $allModules = $.isFunction(this)\n ? $(window)\n : $(this),\n moduleSelector = $allModules.selector || '',\n time = new Date().getTime(),\n performance = [],\n\n query = arguments[0],\n methodInvoked = (typeof query == 'string'),\n queryArguments = [].slice.call(arguments, 1),\n\n returnedValue\n ;\n\n $allModules\n .each(function() {\n var\n settings = ( $.isPlainObject(parameters) )\n ? $.extend(true, {}, $.fn.api.settings, parameters)\n : $.extend({}, $.fn.api.settings),\n\n // internal aliases\n namespace = settings.namespace,\n metadata = settings.metadata,\n selector = settings.selector,\n error = settings.error,\n className = settings.className,\n\n // define namespaces for modules\n eventNamespace = '.' + namespace,\n moduleNamespace = 'module-' + namespace,\n\n // element that creates request\n $module = $(this),\n $form = $module.closest(selector.form),\n\n // context used for state\n $context = (settings.stateContext)\n ? $(settings.stateContext)\n : $module,\n\n // request details\n ajaxSettings,\n requestSettings,\n url,\n data,\n requestStartTime,\n\n // standard module\n element = this,\n context = $context[0],\n instance = $module.data(moduleNamespace),\n module\n ;\n\n module = {\n\n initialize: function() {\n if(!methodInvoked) {\n module.bind.events();\n }\n module.instantiate();\n },\n\n instantiate: function() {\n module.verbose('Storing instance of module', module);\n instance = module;\n $module\n .data(moduleNamespace, instance)\n ;\n },\n\n destroy: function() {\n module.verbose('Destroying previous module for', element);\n $module\n .removeData(moduleNamespace)\n .off(eventNamespace)\n ;\n },\n\n bind: {\n events: function() {\n var\n triggerEvent = module.get.event()\n ;\n if( triggerEvent ) {\n module.verbose('Attaching API events to element', triggerEvent);\n $module\n .on(triggerEvent + eventNamespace, module.event.trigger)\n ;\n }\n else if(settings.on == 'now') {\n module.debug('Querying API endpoint immediately');\n module.query();\n }\n }\n },\n\n decode: {\n json: function(response) {\n if(response !== undefined && typeof response == 'string') {\n try {\n response = JSON.parse(response);\n }\n catch(e) {\n // isnt json string\n }\n }\n return response;\n }\n },\n\n read: {\n cachedResponse: function(url) {\n var\n response\n ;\n if(window.Storage === undefined) {\n module.error(error.noStorage);\n return;\n }\n response = sessionStorage.getItem(url);\n module.debug('Using cached response', url, response);\n response = module.decode.json(response);\n return response;\n }\n },\n write: {\n cachedResponse: function(url, response) {\n if(response && response === '') {\n module.debug('Response empty, not caching', response);\n return;\n }\n if(window.Storage === undefined) {\n module.error(error.noStorage);\n return;\n }\n if( $.isPlainObject(response) ) {\n response = JSON.stringify(response);\n }\n sessionStorage.setItem(url, response);\n module.verbose('Storing cached response for url', url, response);\n }\n },\n\n query: function() {\n\n if(module.is.disabled()) {\n module.debug('Element is disabled API request aborted');\n return;\n }\n\n if(module.is.loading()) {\n if(settings.interruptRequests) {\n module.debug('Interrupting previous request');\n module.abort();\n }\n else {\n module.debug('Cancelling request, previous request is still pending');\n return;\n }\n }\n\n // pass element metadata to url (value, text)\n if(settings.defaultData) {\n $.extend(true, settings.urlData, module.get.defaultData());\n }\n\n // Add form content\n if(settings.serializeForm) {\n settings.data = module.add.formData(settings.data);\n }\n\n // call beforesend and get any settings changes\n requestSettings = module.get.settings();\n\n // check if before send cancelled request\n if(requestSettings === false) {\n module.cancelled = true;\n module.error(error.beforeSend);\n return;\n }\n else {\n module.cancelled = false;\n }\n\n // get url\n url = module.get.templatedURL();\n\n if(!url && !module.is.mocked()) {\n module.error(error.missingURL);\n return;\n }\n\n // replace variables\n url = module.add.urlData( url );\n // missing url parameters\n if( !url && !module.is.mocked()) {\n return;\n }\n\n requestSettings.url = settings.base + url;\n\n // look for jQuery ajax parameters in settings\n ajaxSettings = $.extend(true, {}, settings, {\n type : settings.method || settings.type,\n data : data,\n url : settings.base + url,\n beforeSend : settings.beforeXHR,\n success : function() {},\n failure : function() {},\n complete : function() {}\n });\n\n module.debug('Querying URL', ajaxSettings.url);\n module.verbose('Using AJAX settings', ajaxSettings);\n if(settings.cache === 'local' && module.read.cachedResponse(url)) {\n module.debug('Response returned from local cache');\n module.request = module.create.request();\n module.request.resolveWith(context, [ module.read.cachedResponse(url) ]);\n return;\n }\n\n if( !settings.throttle ) {\n module.debug('Sending request', data, ajaxSettings.method);\n module.send.request();\n }\n else {\n if(!settings.throttleFirstRequest && !module.timer) {\n module.debug('Sending request', data, ajaxSettings.method);\n module.send.request();\n module.timer = setTimeout(function(){}, settings.throttle);\n }\n else {\n module.debug('Throttling request', settings.throttle);\n clearTimeout(module.timer);\n module.timer = setTimeout(function() {\n if(module.timer) {\n delete module.timer;\n }\n module.debug('Sending throttled request', data, ajaxSettings.method);\n module.send.request();\n }, settings.throttle);\n }\n }\n\n },\n\n should: {\n removeError: function() {\n return ( settings.hideError === true || (settings.hideError === 'auto' && !module.is.form()) );\n }\n },\n\n is: {\n disabled: function() {\n return ($module.filter(selector.disabled).length > 0);\n },\n expectingJSON: function() {\n return settings.dataType === 'json' || settings.dataType === 'jsonp';\n },\n form: function() {\n return $module.is('form') || $context.is('form');\n },\n mocked: function() {\n return (settings.mockResponse || settings.mockResponseAsync || settings.response || settings.responseAsync);\n },\n input: function() {\n return $module.is('input');\n },\n loading: function() {\n return (module.request)\n ? (module.request.state() == 'pending')\n : false\n ;\n },\n abortedRequest: function(xhr) {\n if(xhr && xhr.readyState !== undefined && xhr.readyState === 0) {\n module.verbose('XHR request determined to be aborted');\n return true;\n }\n else {\n module.verbose('XHR request was not aborted');\n return false;\n }\n },\n validResponse: function(response) {\n if( (!module.is.expectingJSON()) || !$.isFunction(settings.successTest) ) {\n module.verbose('Response is not JSON, skipping validation', settings.successTest, response);\n return true;\n }\n module.debug('Checking JSON returned success', settings.successTest, response);\n if( settings.successTest(response) ) {\n module.debug('Response passed success test', response);\n return true;\n }\n else {\n module.debug('Response failed success test', response);\n return false;\n }\n }\n },\n\n was: {\n cancelled: function() {\n return (module.cancelled || false);\n },\n succesful: function() {\n return (module.request && module.request.state() == 'resolved');\n },\n failure: function() {\n return (module.request && module.request.state() == 'rejected');\n },\n complete: function() {\n return (module.request && (module.request.state() == 'resolved' || module.request.state() == 'rejected') );\n }\n },\n\n add: {\n urlData: function(url, urlData) {\n var\n requiredVariables,\n optionalVariables\n ;\n if(url) {\n requiredVariables = url.match(settings.regExp.required);\n optionalVariables = url.match(settings.regExp.optional);\n urlData = urlData || settings.urlData;\n if(requiredVariables) {\n module.debug('Looking for required URL variables', requiredVariables);\n $.each(requiredVariables, function(index, templatedString) {\n var\n // allow legacy {$var} style\n variable = (templatedString.indexOf('$') !== -1)\n ? templatedString.substr(2, templatedString.length - 3)\n : templatedString.substr(1, templatedString.length - 2),\n value = ($.isPlainObject(urlData) && urlData[variable] !== undefined)\n ? urlData[variable]\n : ($module.data(variable) !== undefined)\n ? $module.data(variable)\n : ($context.data(variable) !== undefined)\n ? $context.data(variable)\n : urlData[variable]\n ;\n // remove value\n if(value === undefined) {\n module.error(error.requiredParameter, variable, url);\n url = false;\n return false;\n }\n else {\n module.verbose('Found required variable', variable, value);\n value = (settings.encodeParameters)\n ? module.get.urlEncodedValue(value)\n : value\n ;\n url = url.replace(templatedString, value);\n }\n });\n }\n if(optionalVariables) {\n module.debug('Looking for optional URL variables', requiredVariables);\n $.each(optionalVariables, function(index, templatedString) {\n var\n // allow legacy {/$var} style\n variable = (templatedString.indexOf('$') !== -1)\n ? templatedString.substr(3, templatedString.length - 4)\n : templatedString.substr(2, templatedString.length - 3),\n value = ($.isPlainObject(urlData) && urlData[variable] !== undefined)\n ? urlData[variable]\n : ($module.data(variable) !== undefined)\n ? $module.data(variable)\n : ($context.data(variable) !== undefined)\n ? $context.data(variable)\n : urlData[variable]\n ;\n // optional replacement\n if(value !== undefined) {\n module.verbose('Optional variable Found', variable, value);\n url = url.replace(templatedString, value);\n }\n else {\n module.verbose('Optional variable not found', variable);\n // remove preceding slash if set\n if(url.indexOf('/' + templatedString) !== -1) {\n url = url.replace('/' + templatedString, '');\n }\n else {\n url = url.replace(templatedString, '');\n }\n }\n });\n }\n }\n return url;\n },\n formData: function(data) {\n var\n canSerialize = ($.fn.serializeObject !== undefined),\n formData = (canSerialize)\n ? $form.serializeObject()\n : $form.serialize(),\n hasOtherData\n ;\n data = data || settings.data;\n hasOtherData = $.isPlainObject(data);\n\n if(hasOtherData) {\n if(canSerialize) {\n module.debug('Extending existing data with form data', data, formData);\n data = $.extend(true, {}, data, formData);\n }\n else {\n module.error(error.missingSerialize);\n module.debug('Cant extend data. Replacing data with form data', data, formData);\n data = formData;\n }\n }\n else {\n module.debug('Adding form data', formData);\n data = formData;\n }\n return data;\n }\n },\n\n send: {\n request: function() {\n module.set.loading();\n module.request = module.create.request();\n if( module.is.mocked() ) {\n module.mockedXHR = module.create.mockedXHR();\n }\n else {\n module.xhr = module.create.xhr();\n }\n settings.onRequest.call(context, module.request, module.xhr);\n }\n },\n\n event: {\n trigger: function(event) {\n module.query();\n if(event.type == 'submit' || event.type == 'click') {\n event.preventDefault();\n }\n },\n xhr: {\n always: function() {\n // nothing special\n },\n done: function(response, textStatus, xhr) {\n var\n context = this,\n elapsedTime = (new Date().getTime() - requestStartTime),\n timeLeft = (settings.loadingDuration - elapsedTime),\n translatedResponse = ( $.isFunction(settings.onResponse) )\n ? module.is.expectingJSON()\n ? settings.onResponse.call(context, $.extend(true, {}, response))\n : settings.onResponse.call(context, response)\n : false\n ;\n timeLeft = (timeLeft > 0)\n ? timeLeft\n : 0\n ;\n if(translatedResponse) {\n module.debug('Modified API response in onResponse callback', settings.onResponse, translatedResponse, response);\n response = translatedResponse;\n }\n if(timeLeft > 0) {\n module.debug('Response completed early delaying state change by', timeLeft);\n }\n setTimeout(function() {\n if( module.is.validResponse(response) ) {\n module.request.resolveWith(context, [response, xhr]);\n }\n else {\n module.request.rejectWith(context, [xhr, 'invalid']);\n }\n }, timeLeft);\n },\n fail: function(xhr, status, httpMessage) {\n var\n context = this,\n elapsedTime = (new Date().getTime() - requestStartTime),\n timeLeft = (settings.loadingDuration - elapsedTime)\n ;\n timeLeft = (timeLeft > 0)\n ? timeLeft\n : 0\n ;\n if(timeLeft > 0) {\n module.debug('Response completed early delaying state change by', timeLeft);\n }\n setTimeout(function() {\n if( module.is.abortedRequest(xhr) ) {\n module.request.rejectWith(context, [xhr, 'aborted', httpMessage]);\n }\n else {\n module.request.rejectWith(context, [xhr, 'error', status, httpMessage]);\n }\n }, timeLeft);\n }\n },\n request: {\n done: function(response, xhr) {\n module.debug('Successful API Response', response);\n if(settings.cache === 'local' && url) {\n module.write.cachedResponse(url, response);\n module.debug('Saving server response locally', module.cache);\n }\n settings.onSuccess.call(context, response, $module, xhr);\n },\n complete: function(firstParameter, secondParameter) {\n var\n xhr,\n response\n ;\n // have to guess callback parameters based on request success\n if( module.was.succesful() ) {\n response = firstParameter;\n xhr = secondParameter;\n }\n else {\n xhr = firstParameter;\n response = module.get.responseFromXHR(xhr);\n }\n module.remove.loading();\n settings.onComplete.call(context, response, $module, xhr);\n },\n fail: function(xhr, status, httpMessage) {\n var\n // pull response from xhr if available\n response = module.get.responseFromXHR(xhr),\n errorMessage = module.get.errorFromRequest(response, status, httpMessage)\n ;\n if(status == 'aborted') {\n module.debug('XHR Aborted (Most likely caused by page navigation or CORS Policy)', status, httpMessage);\n settings.onAbort.call(context, status, $module, xhr);\n return true;\n }\n else if(status == 'invalid') {\n module.debug('JSON did not pass success test. A server-side error has most likely occurred', response);\n }\n else if(status == 'error') {\n if(xhr !== undefined) {\n module.debug('XHR produced a server error', status, httpMessage);\n // make sure we have an error to display to console\n if( xhr.status != 200 && httpMessage !== undefined && httpMessage !== '') {\n module.error(error.statusMessage + httpMessage, ajaxSettings.url);\n }\n settings.onError.call(context, errorMessage, $module, xhr);\n }\n }\n\n if(settings.errorDuration && status !== 'aborted') {\n module.debug('Adding error state');\n module.set.error();\n if( module.should.removeError() ) {\n setTimeout(module.remove.error, settings.errorDuration);\n }\n }\n module.debug('API Request failed', errorMessage, xhr);\n settings.onFailure.call(context, response, $module, xhr);\n }\n }\n },\n\n create: {\n\n request: function() {\n // api request promise\n return $.Deferred()\n .always(module.event.request.complete)\n .done(module.event.request.done)\n .fail(module.event.request.fail)\n ;\n },\n\n mockedXHR: function () {\n var\n // xhr does not simulate these properties of xhr but must return them\n textStatus = false,\n status = false,\n httpMessage = false,\n responder = settings.mockResponse || settings.response,\n asyncResponder = settings.mockResponseAsync || settings.responseAsync,\n asyncCallback,\n response,\n mockedXHR\n ;\n\n mockedXHR = $.Deferred()\n .always(module.event.xhr.complete)\n .done(module.event.xhr.done)\n .fail(module.event.xhr.fail)\n ;\n\n if(responder) {\n if( $.isFunction(responder) ) {\n module.debug('Using specified synchronous callback', responder);\n response = responder.call(context, requestSettings);\n }\n else {\n module.debug('Using settings specified response', responder);\n response = responder;\n }\n // simulating response\n mockedXHR.resolveWith(context, [ response, textStatus, { responseText: response }]);\n }\n else if( $.isFunction(asyncResponder) ) {\n asyncCallback = function(response) {\n module.debug('Async callback returned response', response);\n\n if(response) {\n mockedXHR.resolveWith(context, [ response, textStatus, { responseText: response }]);\n }\n else {\n mockedXHR.rejectWith(context, [{ responseText: response }, status, httpMessage]);\n }\n };\n module.debug('Using specified async response callback', asyncResponder);\n asyncResponder.call(context, requestSettings, asyncCallback);\n }\n return mockedXHR;\n },\n\n xhr: function() {\n var\n xhr\n ;\n // ajax request promise\n xhr = $.ajax(ajaxSettings)\n .always(module.event.xhr.always)\n .done(module.event.xhr.done)\n .fail(module.event.xhr.fail)\n ;\n module.verbose('Created server request', xhr, ajaxSettings);\n return xhr;\n }\n },\n\n set: {\n error: function() {\n module.verbose('Adding error state to element', $context);\n $context.addClass(className.error);\n },\n loading: function() {\n module.verbose('Adding loading state to element', $context);\n $context.addClass(className.loading);\n requestStartTime = new Date().getTime();\n }\n },\n\n remove: {\n error: function() {\n module.verbose('Removing error state from element', $context);\n $context.removeClass(className.error);\n },\n loading: function() {\n module.verbose('Removing loading state from element', $context);\n $context.removeClass(className.loading);\n }\n },\n\n get: {\n responseFromXHR: function(xhr) {\n return $.isPlainObject(xhr)\n ? (module.is.expectingJSON())\n ? module.decode.json(xhr.responseText)\n : xhr.responseText\n : false\n ;\n },\n errorFromRequest: function(response, status, httpMessage) {\n return ($.isPlainObject(response) && response.error !== undefined)\n ? response.error // use json error message\n : (settings.error[status] !== undefined) // use server error message\n ? settings.error[status]\n : httpMessage\n ;\n },\n request: function() {\n return module.request || false;\n },\n xhr: function() {\n return module.xhr || false;\n },\n settings: function() {\n var\n runSettings\n ;\n runSettings = settings.beforeSend.call(context, settings);\n if(runSettings) {\n if(runSettings.success !== undefined) {\n module.debug('Legacy success callback detected', runSettings);\n module.error(error.legacyParameters, runSettings.success);\n runSettings.onSuccess = runSettings.success;\n }\n if(runSettings.failure !== undefined) {\n module.debug('Legacy failure callback detected', runSettings);\n module.error(error.legacyParameters, runSettings.failure);\n runSettings.onFailure = runSettings.failure;\n }\n if(runSettings.complete !== undefined) {\n module.debug('Legacy complete callback detected', runSettings);\n module.error(error.legacyParameters, runSettings.complete);\n runSettings.onComplete = runSettings.complete;\n }\n }\n if(runSettings === undefined) {\n module.error(error.noReturnedValue);\n }\n if(runSettings === false) {\n return runSettings;\n }\n return (runSettings !== undefined)\n ? $.extend(true, {}, runSettings)\n : $.extend(true, {}, settings)\n ;\n },\n urlEncodedValue: function(value) {\n var\n decodedValue = window.decodeURIComponent(value),\n encodedValue = window.encodeURIComponent(value),\n alreadyEncoded = (decodedValue !== value)\n ;\n if(alreadyEncoded) {\n module.debug('URL value is already encoded, avoiding double encoding', value);\n return value;\n }\n module.verbose('Encoding value using encodeURIComponent', value, encodedValue);\n return encodedValue;\n },\n defaultData: function() {\n var\n data = {}\n ;\n if( !$.isWindow(element) ) {\n if( module.is.input() ) {\n data.value = $module.val();\n }\n else if( module.is.form() ) {\n\n }\n else {\n data.text = $module.text();\n }\n }\n return data;\n },\n event: function() {\n if( $.isWindow(element) || settings.on == 'now' ) {\n module.debug('API called without element, no events attached');\n return false;\n }\n else if(settings.on == 'auto') {\n if( $module.is('input') ) {\n return (element.oninput !== undefined)\n ? 'input'\n : (element.onpropertychange !== undefined)\n ? 'propertychange'\n : 'keyup'\n ;\n }\n else if( $module.is('form') ) {\n return 'submit';\n }\n else {\n return 'click';\n }\n }\n else {\n return settings.on;\n }\n },\n templatedURL: function(action) {\n action = action || $module.data(metadata.action) || settings.action || false;\n url = $module.data(metadata.url) || settings.url || false;\n if(url) {\n module.debug('Using specified url', url);\n return url;\n }\n if(action) {\n module.debug('Looking up url for action', action, settings.api);\n if(settings.api[action] === undefined && !module.is.mocked()) {\n module.error(error.missingAction, settings.action, settings.api);\n return;\n }\n url = settings.api[action];\n }\n else if( module.is.form() ) {\n url = $module.attr('action') || $context.attr('action') || false;\n module.debug('No url or action specified, defaulting to form action', url);\n }\n return url;\n }\n },\n\n abort: function() {\n var\n xhr = module.get.xhr()\n ;\n if( xhr && xhr.state() !== 'resolved') {\n module.debug('Cancelling API request');\n xhr.abort();\n }\n },\n\n // reset state\n reset: function() {\n module.remove.error();\n module.remove.loading();\n },\n\n setting: function(name, value) {\n module.debug('Changing setting', name, value);\n if( $.isPlainObject(name) ) {\n $.extend(true, settings, name);\n }\n else if(value !== undefined) {\n if($.isPlainObject(settings[name])) {\n $.extend(true, settings[name], value);\n }\n else {\n settings[name] = value;\n }\n }\n else {\n return settings[name];\n }\n },\n internal: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, module, name);\n }\n else if(value !== undefined) {\n module[name] = value;\n }\n else {\n return module[name];\n }\n },\n debug: function() {\n if(!settings.silent && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.debug.apply(console, arguments);\n }\n }\n },\n verbose: function() {\n if(!settings.silent && settings.verbose && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.verbose.apply(console, arguments);\n }\n }\n },\n error: function() {\n if(!settings.silent) {\n module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n module.error.apply(console, arguments);\n }\n },\n performance: {\n log: function(message) {\n var\n currentTime,\n executionTime,\n previousTime\n ;\n if(settings.performance) {\n currentTime = new Date().getTime();\n previousTime = time || currentTime;\n executionTime = currentTime - previousTime;\n time = currentTime;\n performance.push({\n 'Name' : message[0],\n 'Arguments' : [].slice.call(message, 1) || '',\n //'Element' : element,\n 'Execution Time' : executionTime\n });\n }\n clearTimeout(module.performance.timer);\n module.performance.timer = setTimeout(module.performance.display, 500);\n },\n display: function() {\n var\n title = settings.name + ':',\n totalTime = 0\n ;\n time = false;\n clearTimeout(module.performance.timer);\n $.each(performance, function(index, data) {\n totalTime += data['Execution Time'];\n });\n title += ' ' + totalTime + 'ms';\n if(moduleSelector) {\n title += ' \\'' + moduleSelector + '\\'';\n }\n if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n console.groupCollapsed(title);\n if(console.table) {\n console.table(performance);\n }\n else {\n $.each(performance, function(index, data) {\n console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n });\n }\n console.groupEnd();\n }\n performance = [];\n }\n },\n invoke: function(query, passedArguments, context) {\n var\n object = instance,\n maxDepth,\n found,\n response\n ;\n passedArguments = passedArguments || queryArguments;\n context = element || context;\n if(typeof query == 'string' && object !== undefined) {\n query = query.split(/[\\. ]/);\n maxDepth = query.length - 1;\n $.each(query, function(depth, value) {\n var camelCaseValue = (depth != maxDepth)\n ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n : query\n ;\n if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n object = object[camelCaseValue];\n }\n else if( object[camelCaseValue] !== undefined ) {\n found = object[camelCaseValue];\n return false;\n }\n else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n object = object[value];\n }\n else if( object[value] !== undefined ) {\n found = object[value];\n return false;\n }\n else {\n module.error(error.method, query);\n return false;\n }\n });\n }\n if ( $.isFunction( found ) ) {\n response = found.apply(context, passedArguments);\n }\n else if(found !== undefined) {\n response = found;\n }\n if($.isArray(returnedValue)) {\n returnedValue.push(response);\n }\n else if(returnedValue !== undefined) {\n returnedValue = [returnedValue, response];\n }\n else if(response !== undefined) {\n returnedValue = response;\n }\n return found;\n }\n };\n\n if(methodInvoked) {\n if(instance === undefined) {\n module.initialize();\n }\n module.invoke(query);\n }\n else {\n if(instance !== undefined) {\n instance.invoke('destroy');\n }\n module.initialize();\n }\n })\n ;\n\n return (returnedValue !== undefined)\n ? returnedValue\n : this\n ;\n};\n\n$.api.settings = {\n\n name : 'API',\n namespace : 'api',\n\n debug : false,\n verbose : false,\n performance : true,\n\n // object containing all templates endpoints\n api : {},\n\n // whether to cache responses\n cache : true,\n\n // whether new requests should abort previous requests\n interruptRequests : true,\n\n // event binding\n on : 'auto',\n\n // context for applying state classes\n stateContext : false,\n\n // duration for loading state\n loadingDuration : 0,\n\n // whether to hide errors after a period of time\n hideError : 'auto',\n\n // duration for error state\n errorDuration : 2000,\n\n // whether parameters should be encoded with encodeURIComponent\n encodeParameters : true,\n\n // API action to use\n action : false,\n\n // templated URL to use\n url : false,\n\n // base URL to apply to all endpoints\n base : '',\n\n // data that will\n urlData : {},\n\n // whether to add default data to url data\n defaultData : true,\n\n // whether to serialize closest form\n serializeForm : false,\n\n // how long to wait before request should occur\n throttle : 0,\n\n // whether to throttle first request or only repeated\n throttleFirstRequest : true,\n\n // standard ajax settings\n method : 'get',\n data : {},\n dataType : 'json',\n\n // mock response\n mockResponse : false,\n mockResponseAsync : false,\n\n // aliases for mock\n response : false,\n responseAsync : false,\n\n // callbacks before request\n beforeSend : function(settings) { return settings; },\n beforeXHR : function(xhr) {},\n onRequest : function(promise, xhr) {},\n\n // after request\n onResponse : false, // function(response) { },\n\n // response was successful, if JSON passed validation\n onSuccess : function(response, $module) {},\n\n // request finished without aborting\n onComplete : function(response, $module) {},\n\n // failed JSON success test\n onFailure : function(response, $module) {},\n\n // server error\n onError : function(errorMessage, $module) {},\n\n // request aborted\n onAbort : function(errorMessage, $module) {},\n\n successTest : false,\n\n // errors\n error : {\n beforeSend : 'The before send function has aborted the request',\n error : 'There was an error with your request',\n exitConditions : 'API Request Aborted. Exit conditions met',\n JSONParse : 'JSON could not be parsed during error handling',\n legacyParameters : 'You are using legacy API success callback names',\n method : 'The method you called is not defined',\n missingAction : 'API action used but no url was defined',\n missingSerialize : 'jquery-serialize-object is required to add form data to an existing data object',\n missingURL : 'No URL specified for api event',\n noReturnedValue : 'The beforeSend callback must return a settings object, beforeSend ignored.',\n noStorage : 'Caching responses locally requires session storage',\n parseError : 'There was an error parsing your request',\n requiredParameter : 'Missing a required URL parameter: ',\n statusMessage : 'Server gave an error: ',\n timeout : 'Your request timed out'\n },\n\n regExp : {\n required : /\\{\\$*[A-z0-9]+\\}/g,\n optional : /\\{\\/\\$*[A-z0-9]+\\}/g,\n },\n\n className: {\n loading : 'loading',\n error : 'error'\n },\n\n selector: {\n disabled : '.disabled',\n form : 'form'\n },\n\n metadata: {\n action : 'action',\n url : 'url'\n }\n};\n\n\n\n})( jQuery, window, document );\n","/*!\n * # Semantic UI 2.2.6 - State\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n ? window\n : (typeof self != 'undefined' && self.Math == Math)\n ? self\n : Function('return this')()\n;\n\n$.fn.state = function(parameters) {\n var\n $allModules = $(this),\n\n moduleSelector = $allModules.selector || '',\n\n hasTouch = ('ontouchstart' in document.documentElement),\n time = new Date().getTime(),\n performance = [],\n\n query = arguments[0],\n methodInvoked = (typeof query == 'string'),\n queryArguments = [].slice.call(arguments, 1),\n\n returnedValue\n ;\n $allModules\n .each(function() {\n var\n settings = ( $.isPlainObject(parameters) )\n ? $.extend(true, {}, $.fn.state.settings, parameters)\n : $.extend({}, $.fn.state.settings),\n\n error = settings.error,\n metadata = settings.metadata,\n className = settings.className,\n namespace = settings.namespace,\n states = settings.states,\n text = settings.text,\n\n eventNamespace = '.' + namespace,\n moduleNamespace = namespace + '-module',\n\n $module = $(this),\n\n element = this,\n instance = $module.data(moduleNamespace),\n\n module\n ;\n module = {\n\n initialize: function() {\n module.verbose('Initializing module');\n\n // allow module to guess desired state based on element\n if(settings.automatic) {\n module.add.defaults();\n }\n\n // bind events with delegated events\n if(settings.context && moduleSelector !== '') {\n $(settings.context)\n .on(moduleSelector, 'mouseenter' + eventNamespace, module.change.text)\n .on(moduleSelector, 'mouseleave' + eventNamespace, module.reset.text)\n .on(moduleSelector, 'click' + eventNamespace, module.toggle.state)\n ;\n }\n else {\n $module\n .on('mouseenter' + eventNamespace, module.change.text)\n .on('mouseleave' + eventNamespace, module.reset.text)\n .on('click' + eventNamespace, module.toggle.state)\n ;\n }\n module.instantiate();\n },\n\n instantiate: function() {\n module.verbose('Storing instance of module', module);\n instance = module;\n $module\n .data(moduleNamespace, module)\n ;\n },\n\n destroy: function() {\n module.verbose('Destroying previous module', instance);\n $module\n .off(eventNamespace)\n .removeData(moduleNamespace)\n ;\n },\n\n refresh: function() {\n module.verbose('Refreshing selector cache');\n $module = $(element);\n },\n\n add: {\n defaults: function() {\n var\n userStates = parameters && $.isPlainObject(parameters.states)\n ? parameters.states\n : {}\n ;\n $.each(settings.defaults, function(type, typeStates) {\n if( module.is[type] !== undefined && module.is[type]() ) {\n module.verbose('Adding default states', type, element);\n $.extend(settings.states, typeStates, userStates);\n }\n });\n }\n },\n\n is: {\n\n active: function() {\n return $module.hasClass(className.active);\n },\n loading: function() {\n return $module.hasClass(className.loading);\n },\n inactive: function() {\n return !( $module.hasClass(className.active) );\n },\n state: function(state) {\n if(className[state] === undefined) {\n return false;\n }\n return $module.hasClass( className[state] );\n },\n\n enabled: function() {\n return !( $module.is(settings.filter.active) );\n },\n disabled: function() {\n return ( $module.is(settings.filter.active) );\n },\n textEnabled: function() {\n return !( $module.is(settings.filter.text) );\n },\n\n // definitions for automatic type detection\n button: function() {\n return $module.is('.button:not(a, .submit)');\n },\n input: function() {\n return $module.is('input');\n },\n progress: function() {\n return $module.is('.ui.progress');\n }\n },\n\n allow: function(state) {\n module.debug('Now allowing state', state);\n states[state] = true;\n },\n disallow: function(state) {\n module.debug('No longer allowing', state);\n states[state] = false;\n },\n\n allows: function(state) {\n return states[state] || false;\n },\n\n enable: function() {\n $module.removeClass(className.disabled);\n },\n\n disable: function() {\n $module.addClass(className.disabled);\n },\n\n setState: function(state) {\n if(module.allows(state)) {\n $module.addClass( className[state] );\n }\n },\n\n removeState: function(state) {\n if(module.allows(state)) {\n $module.removeClass( className[state] );\n }\n },\n\n toggle: {\n state: function() {\n var\n apiRequest,\n requestCancelled\n ;\n if( module.allows('active') && module.is.enabled() ) {\n module.refresh();\n if($.fn.api !== undefined) {\n apiRequest = $module.api('get request');\n requestCancelled = $module.api('was cancelled');\n if( requestCancelled ) {\n module.debug('API Request cancelled by beforesend');\n settings.activateTest = function(){ return false; };\n settings.deactivateTest = function(){ return false; };\n }\n else if(apiRequest) {\n module.listenTo(apiRequest);\n return;\n }\n }\n module.change.state();\n }\n }\n },\n\n listenTo: function(apiRequest) {\n module.debug('API request detected, waiting for state signal', apiRequest);\n if(apiRequest) {\n if(text.loading) {\n module.update.text(text.loading);\n }\n $.when(apiRequest)\n .then(function() {\n if(apiRequest.state() == 'resolved') {\n module.debug('API request succeeded');\n settings.activateTest = function(){ return true; };\n settings.deactivateTest = function(){ return true; };\n }\n else {\n module.debug('API request failed');\n settings.activateTest = function(){ return false; };\n settings.deactivateTest = function(){ return false; };\n }\n module.change.state();\n })\n ;\n }\n },\n\n // checks whether active/inactive state can be given\n change: {\n\n state: function() {\n module.debug('Determining state change direction');\n // inactive to active change\n if( module.is.inactive() ) {\n module.activate();\n }\n else {\n module.deactivate();\n }\n if(settings.sync) {\n module.sync();\n }\n settings.onChange.call(element);\n },\n\n text: function() {\n if( module.is.textEnabled() ) {\n if(module.is.disabled() ) {\n module.verbose('Changing text to disabled text', text.hover);\n module.update.text(text.disabled);\n }\n else if( module.is.active() ) {\n if(text.hover) {\n module.verbose('Changing text to hover text', text.hover);\n module.update.text(text.hover);\n }\n else if(text.deactivate) {\n module.verbose('Changing text to deactivating text', text.deactivate);\n module.update.text(text.deactivate);\n }\n }\n else {\n if(text.hover) {\n module.verbose('Changing text to hover text', text.hover);\n module.update.text(text.hover);\n }\n else if(text.activate){\n module.verbose('Changing text to activating text', text.activate);\n module.update.text(text.activate);\n }\n }\n }\n }\n\n },\n\n activate: function() {\n if( settings.activateTest.call(element) ) {\n module.debug('Setting state to active');\n $module\n .addClass(className.active)\n ;\n module.update.text(text.active);\n settings.onActivate.call(element);\n }\n },\n\n deactivate: function() {\n if( settings.deactivateTest.call(element) ) {\n module.debug('Setting state to inactive');\n $module\n .removeClass(className.active)\n ;\n module.update.text(text.inactive);\n settings.onDeactivate.call(element);\n }\n },\n\n sync: function() {\n module.verbose('Syncing other buttons to current state');\n if( module.is.active() ) {\n $allModules\n .not($module)\n .state('activate');\n }\n else {\n $allModules\n .not($module)\n .state('deactivate')\n ;\n }\n },\n\n get: {\n text: function() {\n return (settings.selector.text)\n ? $module.find(settings.selector.text).text()\n : $module.html()\n ;\n },\n textFor: function(state) {\n return text[state] || false;\n }\n },\n\n flash: {\n text: function(text, duration, callback) {\n var\n previousText = module.get.text()\n ;\n module.debug('Flashing text message', text, duration);\n text = text || settings.text.flash;\n duration = duration || settings.flashDuration;\n callback = callback || function() {};\n module.update.text(text);\n setTimeout(function(){\n module.update.text(previousText);\n callback.call(element);\n }, duration);\n }\n },\n\n reset: {\n // on mouseout sets text to previous value\n text: function() {\n var\n activeText = text.active || $module.data(metadata.storedText),\n inactiveText = text.inactive || $module.data(metadata.storedText)\n ;\n if( module.is.textEnabled() ) {\n if( module.is.active() && activeText) {\n module.verbose('Resetting active text', activeText);\n module.update.text(activeText);\n }\n else if(inactiveText) {\n module.verbose('Resetting inactive text', activeText);\n module.update.text(inactiveText);\n }\n }\n }\n },\n\n update: {\n text: function(text) {\n var\n currentText = module.get.text()\n ;\n if(text && text !== currentText) {\n module.debug('Updating text', text);\n if(settings.selector.text) {\n $module\n .data(metadata.storedText, text)\n .find(settings.selector.text)\n .text(text)\n ;\n }\n else {\n $module\n .data(metadata.storedText, text)\n .html(text)\n ;\n }\n }\n else {\n module.debug('Text is already set, ignoring update', text);\n }\n }\n },\n\n setting: function(name, value) {\n module.debug('Changing setting', name, value);\n if( $.isPlainObject(name) ) {\n $.extend(true, settings, name);\n }\n else if(value !== undefined) {\n if($.isPlainObject(settings[name])) {\n $.extend(true, settings[name], value);\n }\n else {\n settings[name] = value;\n }\n }\n else {\n return settings[name];\n }\n },\n internal: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, module, name);\n }\n else if(value !== undefined) {\n module[name] = value;\n }\n else {\n return module[name];\n }\n },\n debug: function() {\n if(!settings.silent && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.debug.apply(console, arguments);\n }\n }\n },\n verbose: function() {\n if(!settings.silent && settings.verbose && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.verbose.apply(console, arguments);\n }\n }\n },\n error: function() {\n if(!settings.silent) {\n module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n module.error.apply(console, arguments);\n }\n },\n performance: {\n log: function(message) {\n var\n currentTime,\n executionTime,\n previousTime\n ;\n if(settings.performance) {\n currentTime = new Date().getTime();\n previousTime = time || currentTime;\n executionTime = currentTime - previousTime;\n time = currentTime;\n performance.push({\n 'Name' : message[0],\n 'Arguments' : [].slice.call(message, 1) || '',\n 'Element' : element,\n 'Execution Time' : executionTime\n });\n }\n clearTimeout(module.performance.timer);\n module.performance.timer = setTimeout(module.performance.display, 500);\n },\n display: function() {\n var\n title = settings.name + ':',\n totalTime = 0\n ;\n time = false;\n clearTimeout(module.performance.timer);\n $.each(performance, function(index, data) {\n totalTime += data['Execution Time'];\n });\n title += ' ' + totalTime + 'ms';\n if(moduleSelector) {\n title += ' \\'' + moduleSelector + '\\'';\n }\n if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n console.groupCollapsed(title);\n if(console.table) {\n console.table(performance);\n }\n else {\n $.each(performance, function(index, data) {\n console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n });\n }\n console.groupEnd();\n }\n performance = [];\n }\n },\n invoke: function(query, passedArguments, context) {\n var\n object = instance,\n maxDepth,\n found,\n response\n ;\n passedArguments = passedArguments || queryArguments;\n context = element || context;\n if(typeof query == 'string' && object !== undefined) {\n query = query.split(/[\\. ]/);\n maxDepth = query.length - 1;\n $.each(query, function(depth, value) {\n var camelCaseValue = (depth != maxDepth)\n ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n : query\n ;\n if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n object = object[camelCaseValue];\n }\n else if( object[camelCaseValue] !== undefined ) {\n found = object[camelCaseValue];\n return false;\n }\n else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n object = object[value];\n }\n else if( object[value] !== undefined ) {\n found = object[value];\n return false;\n }\n else {\n module.error(error.method, query);\n return false;\n }\n });\n }\n if ( $.isFunction( found ) ) {\n response = found.apply(context, passedArguments);\n }\n else if(found !== undefined) {\n response = found;\n }\n if($.isArray(returnedValue)) {\n returnedValue.push(response);\n }\n else if(returnedValue !== undefined) {\n returnedValue = [returnedValue, response];\n }\n else if(response !== undefined) {\n returnedValue = response;\n }\n return found;\n }\n };\n\n if(methodInvoked) {\n if(instance === undefined) {\n module.initialize();\n }\n module.invoke(query);\n }\n else {\n if(instance !== undefined) {\n instance.invoke('destroy');\n }\n module.initialize();\n }\n })\n ;\n\n return (returnedValue !== undefined)\n ? returnedValue\n : this\n ;\n};\n\n$.fn.state.settings = {\n\n // module info\n name : 'State',\n\n // debug output\n debug : false,\n\n // verbose debug output\n verbose : false,\n\n // namespace for events\n namespace : 'state',\n\n // debug data includes performance\n performance : true,\n\n // callback occurs on state change\n onActivate : function() {},\n onDeactivate : function() {},\n onChange : function() {},\n\n // state test functions\n activateTest : function() { return true; },\n deactivateTest : function() { return true; },\n\n // whether to automatically map default states\n automatic : true,\n\n // activate / deactivate changes all elements instantiated at same time\n sync : false,\n\n // default flash text duration, used for temporarily changing text of an element\n flashDuration : 1000,\n\n // selector filter\n filter : {\n text : '.loading, .disabled',\n active : '.disabled'\n },\n\n context : false,\n\n // error\n error: {\n beforeSend : 'The before send function has cancelled state change',\n method : 'The method you called is not defined.'\n },\n\n // metadata\n metadata: {\n promise : 'promise',\n storedText : 'stored-text'\n },\n\n // change class on state\n className: {\n active : 'active',\n disabled : 'disabled',\n error : 'error',\n loading : 'loading',\n success : 'success',\n warning : 'warning'\n },\n\n selector: {\n // selector for text node\n text: false\n },\n\n defaults : {\n input: {\n disabled : true,\n loading : true,\n active : true\n },\n button: {\n disabled : true,\n loading : true,\n active : true,\n },\n progress: {\n active : true,\n success : true,\n warning : true,\n error : true\n }\n },\n\n states : {\n active : true,\n disabled : true,\n error : true,\n loading : true,\n success : true,\n warning : true\n },\n\n text : {\n disabled : false,\n flash : false,\n hover : false,\n active : false,\n inactive : false,\n activate : false,\n deactivate : false\n }\n\n};\n\n\n\n})( jQuery, window, document );\n","/*!\n * # Semantic UI 2.2.6 - Visibility\n * http://github.com/semantic-org/semantic-ui/\n *\n *\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n\n;(function ($, window, document, undefined) {\n\n\"use strict\";\n\nwindow = (typeof window != 'undefined' && window.Math == Math)\n ? window\n : (typeof self != 'undefined' && self.Math == Math)\n ? self\n : Function('return this')()\n;\n\n$.fn.visibility = function(parameters) {\n var\n $allModules = $(this),\n moduleSelector = $allModules.selector || '',\n\n time = new Date().getTime(),\n performance = [],\n\n query = arguments[0],\n methodInvoked = (typeof query == 'string'),\n queryArguments = [].slice.call(arguments, 1),\n returnedValue,\n\n moduleCount = $allModules.length,\n loadedCount = 0\n ;\n\n $allModules\n .each(function() {\n var\n settings = ( $.isPlainObject(parameters) )\n ? $.extend(true, {}, $.fn.visibility.settings, parameters)\n : $.extend({}, $.fn.visibility.settings),\n\n className = settings.className,\n namespace = settings.namespace,\n error = settings.error,\n metadata = settings.metadata,\n\n eventNamespace = '.' + namespace,\n moduleNamespace = 'module-' + namespace,\n\n $window = $(window),\n\n $module = $(this),\n $context = $(settings.context),\n\n $placeholder,\n\n selector = $module.selector || '',\n instance = $module.data(moduleNamespace),\n\n requestAnimationFrame = window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || function(callback) { setTimeout(callback, 0); },\n\n element = this,\n disabled = false,\n\n contextObserver,\n observer,\n module\n ;\n\n module = {\n\n initialize: function() {\n module.debug('Initializing', settings);\n\n module.setup.cache();\n\n if( module.should.trackChanges() ) {\n\n if(settings.type == 'image') {\n module.setup.image();\n }\n if(settings.type == 'fixed') {\n module.setup.fixed();\n }\n\n if(settings.observeChanges) {\n module.observeChanges();\n }\n module.bind.events();\n }\n\n module.save.position();\n if( !module.is.visible() ) {\n module.error(error.visible, $module);\n }\n\n if(settings.initialCheck) {\n module.checkVisibility();\n }\n module.instantiate();\n },\n\n instantiate: function() {\n module.debug('Storing instance', module);\n $module\n .data(moduleNamespace, module)\n ;\n instance = module;\n },\n\n destroy: function() {\n module.verbose('Destroying previous module');\n if(observer) {\n observer.disconnect();\n }\n if(contextObserver) {\n contextObserver.disconnect();\n }\n $window\n .off('load' + eventNamespace, module.event.load)\n .off('resize' + eventNamespace, module.event.resize)\n ;\n $context\n .off('scroll' + eventNamespace, module.event.scroll)\n .off('scrollchange' + eventNamespace, module.event.scrollchange)\n ;\n if(settings.type == 'fixed') {\n module.resetFixed();\n module.remove.placeholder();\n }\n $module\n .off(eventNamespace)\n .removeData(moduleNamespace)\n ;\n },\n\n observeChanges: function() {\n if('MutationObserver' in window) {\n contextObserver = new MutationObserver(module.event.contextChanged);\n observer = new MutationObserver(module.event.changed);\n contextObserver.observe(document, {\n childList : true,\n subtree : true\n });\n observer.observe(element, {\n childList : true,\n subtree : true\n });\n module.debug('Setting up mutation observer', observer);\n }\n },\n\n bind: {\n events: function() {\n module.verbose('Binding visibility events to scroll and resize');\n if(settings.refreshOnLoad) {\n $window\n .on('load' + eventNamespace, module.event.load)\n ;\n }\n $window\n .on('resize' + eventNamespace, module.event.resize)\n ;\n // pub/sub pattern\n $context\n .off('scroll' + eventNamespace)\n .on('scroll' + eventNamespace, module.event.scroll)\n .on('scrollchange' + eventNamespace, module.event.scrollchange)\n ;\n }\n },\n\n event: {\n changed: function(mutations) {\n module.verbose('DOM tree modified, updating visibility calculations');\n module.timer = setTimeout(function() {\n module.verbose('DOM tree modified, updating sticky menu');\n module.refresh();\n }, 100);\n },\n contextChanged: function(mutations) {\n [].forEach.call(mutations, function(mutation) {\n if(mutation.removedNodes) {\n [].forEach.call(mutation.removedNodes, function(node) {\n if(node == element || $(node).find(element).length > 0) {\n module.debug('Element removed from DOM, tearing down events');\n module.destroy();\n }\n });\n }\n });\n },\n resize: function() {\n module.debug('Window resized');\n if(settings.refreshOnResize) {\n requestAnimationFrame(module.refresh);\n }\n },\n load: function() {\n module.debug('Page finished loading');\n requestAnimationFrame(module.refresh);\n },\n // publishes scrollchange event on one scroll\n scroll: function() {\n if(settings.throttle) {\n clearTimeout(module.timer);\n module.timer = setTimeout(function() {\n $context.triggerHandler('scrollchange' + eventNamespace, [ $context.scrollTop() ]);\n }, settings.throttle);\n }\n else {\n requestAnimationFrame(function() {\n $context.triggerHandler('scrollchange' + eventNamespace, [ $context.scrollTop() ]);\n });\n }\n },\n // subscribes to scrollchange\n scrollchange: function(event, scrollPosition) {\n module.checkVisibility(scrollPosition);\n },\n },\n\n precache: function(images, callback) {\n if (!(images instanceof Array)) {\n images = [images];\n }\n var\n imagesLength = images.length,\n loadedCounter = 0,\n cache = [],\n cacheImage = document.createElement('img'),\n handleLoad = function() {\n loadedCounter++;\n if (loadedCounter >= images.length) {\n if ($.isFunction(callback)) {\n callback();\n }\n }\n }\n ;\n while (imagesLength--) {\n cacheImage = document.createElement('img');\n cacheImage.onload = handleLoad;\n cacheImage.onerror = handleLoad;\n cacheImage.src = images[imagesLength];\n cache.push(cacheImage);\n }\n },\n\n enableCallbacks: function() {\n module.debug('Allowing callbacks to occur');\n disabled = false;\n },\n\n disableCallbacks: function() {\n module.debug('Disabling all callbacks temporarily');\n disabled = true;\n },\n\n should: {\n trackChanges: function() {\n if(methodInvoked) {\n module.debug('One time query, no need to bind events');\n return false;\n }\n module.debug('Callbacks being attached');\n return true;\n }\n },\n\n setup: {\n cache: function() {\n module.cache = {\n occurred : {},\n screen : {},\n element : {},\n };\n },\n image: function() {\n var\n src = $module.data(metadata.src)\n ;\n if(src) {\n module.verbose('Lazy loading image', src);\n settings.once = true;\n settings.observeChanges = false;\n\n // show when top visible\n settings.onOnScreen = function() {\n module.debug('Image on screen', element);\n module.precache(src, function() {\n module.set.image(src, function() {\n loadedCount++;\n if(loadedCount == moduleCount) {\n settings.onAllLoaded.call(this);\n }\n settings.onLoad.call(this);\n });\n });\n };\n }\n },\n fixed: function() {\n module.debug('Setting up fixed');\n settings.once = false;\n settings.observeChanges = false;\n settings.initialCheck = true;\n settings.refreshOnLoad = true;\n if(!parameters.transition) {\n settings.transition = false;\n }\n module.create.placeholder();\n module.debug('Added placeholder', $placeholder);\n settings.onTopPassed = function() {\n module.debug('Element passed, adding fixed position', $module);\n module.show.placeholder();\n module.set.fixed();\n if(settings.transition) {\n if($.fn.transition !== undefined) {\n $module.transition(settings.transition, settings.duration);\n }\n }\n };\n settings.onTopPassedReverse = function() {\n module.debug('Element returned to position, removing fixed', $module);\n module.hide.placeholder();\n module.remove.fixed();\n };\n }\n },\n\n create: {\n placeholder: function() {\n module.verbose('Creating fixed position placeholder');\n $placeholder = $module\n .clone(false)\n .css('display', 'none')\n .addClass(className.placeholder)\n .insertAfter($module)\n ;\n }\n },\n\n show: {\n placeholder: function() {\n module.verbose('Showing placeholder');\n $placeholder\n .css('display', 'block')\n .css('visibility', 'hidden')\n ;\n }\n },\n hide: {\n placeholder: function() {\n module.verbose('Hiding placeholder');\n $placeholder\n .css('display', 'none')\n .css('visibility', '')\n ;\n }\n },\n\n set: {\n fixed: function() {\n module.verbose('Setting element to fixed position');\n $module\n .addClass(className.fixed)\n .css({\n position : 'fixed',\n top : settings.offset + 'px',\n left : 'auto',\n zIndex : settings.zIndex\n })\n ;\n settings.onFixed.call(element);\n },\n image: function(src, callback) {\n $module\n .attr('src', src)\n ;\n if(settings.transition) {\n if( $.fn.transition !== undefined ) {\n $module.transition(settings.transition, settings.duration, callback);\n }\n else {\n $module.fadeIn(settings.duration, callback);\n }\n }\n else {\n $module.show();\n }\n }\n },\n\n is: {\n onScreen: function() {\n var\n calculations = module.get.elementCalculations()\n ;\n return calculations.onScreen;\n },\n offScreen: function() {\n var\n calculations = module.get.elementCalculations()\n ;\n return calculations.offScreen;\n },\n visible: function() {\n if(module.cache && module.cache.element) {\n return !(module.cache.element.width === 0 && module.cache.element.offset.top === 0);\n }\n return false;\n }\n },\n\n refresh: function() {\n module.debug('Refreshing constants (width/height)');\n if(settings.type == 'fixed') {\n module.resetFixed();\n }\n module.reset();\n module.save.position();\n if(settings.checkOnRefresh) {\n module.checkVisibility();\n }\n settings.onRefresh.call(element);\n },\n\n resetFixed: function () {\n module.remove.fixed();\n module.remove.occurred();\n },\n\n reset: function() {\n module.verbose('Resetting all cached values');\n if( $.isPlainObject(module.cache) ) {\n module.cache.screen = {};\n module.cache.element = {};\n }\n },\n\n checkVisibility: function(scroll) {\n module.verbose('Checking visibility of element', module.cache.element);\n\n if( !disabled && module.is.visible() ) {\n\n // save scroll position\n module.save.scroll(scroll);\n\n // update calculations derived from scroll\n module.save.calculations();\n\n // percentage\n module.passed();\n\n // reverse (must be first)\n module.passingReverse();\n module.topVisibleReverse();\n module.bottomVisibleReverse();\n module.topPassedReverse();\n module.bottomPassedReverse();\n\n // one time\n module.onScreen();\n module.offScreen();\n module.passing();\n module.topVisible();\n module.bottomVisible();\n module.topPassed();\n module.bottomPassed();\n\n // on update callback\n if(settings.onUpdate) {\n settings.onUpdate.call(element, module.get.elementCalculations());\n }\n }\n },\n\n passed: function(amount, newCallback) {\n var\n calculations = module.get.elementCalculations(),\n amountInPixels\n ;\n // assign callback\n if(amount && newCallback) {\n settings.onPassed[amount] = newCallback;\n }\n else if(amount !== undefined) {\n return (module.get.pixelsPassed(amount) > calculations.pixelsPassed);\n }\n else if(calculations.passing) {\n $.each(settings.onPassed, function(amount, callback) {\n if(calculations.bottomVisible || calculations.pixelsPassed > module.get.pixelsPassed(amount)) {\n module.execute(callback, amount);\n }\n else if(!settings.once) {\n module.remove.occurred(callback);\n }\n });\n }\n },\n\n onScreen: function(newCallback) {\n var\n calculations = module.get.elementCalculations(),\n callback = newCallback || settings.onOnScreen,\n callbackName = 'onScreen'\n ;\n if(newCallback) {\n module.debug('Adding callback for onScreen', newCallback);\n settings.onOnScreen = newCallback;\n }\n if(calculations.onScreen) {\n module.execute(callback, callbackName);\n }\n else if(!settings.once) {\n module.remove.occurred(callbackName);\n }\n if(newCallback !== undefined) {\n return calculations.onOnScreen;\n }\n },\n\n offScreen: function(newCallback) {\n var\n calculations = module.get.elementCalculations(),\n callback = newCallback || settings.onOffScreen,\n callbackName = 'offScreen'\n ;\n if(newCallback) {\n module.debug('Adding callback for offScreen', newCallback);\n settings.onOffScreen = newCallback;\n }\n if(calculations.offScreen) {\n module.execute(callback, callbackName);\n }\n else if(!settings.once) {\n module.remove.occurred(callbackName);\n }\n if(newCallback !== undefined) {\n return calculations.onOffScreen;\n }\n },\n\n passing: function(newCallback) {\n var\n calculations = module.get.elementCalculations(),\n callback = newCallback || settings.onPassing,\n callbackName = 'passing'\n ;\n if(newCallback) {\n module.debug('Adding callback for passing', newCallback);\n settings.onPassing = newCallback;\n }\n if(calculations.passing) {\n module.execute(callback, callbackName);\n }\n else if(!settings.once) {\n module.remove.occurred(callbackName);\n }\n if(newCallback !== undefined) {\n return calculations.passing;\n }\n },\n\n\n topVisible: function(newCallback) {\n var\n calculations = module.get.elementCalculations(),\n callback = newCallback || settings.onTopVisible,\n callbackName = 'topVisible'\n ;\n if(newCallback) {\n module.debug('Adding callback for top visible', newCallback);\n settings.onTopVisible = newCallback;\n }\n if(calculations.topVisible) {\n module.execute(callback, callbackName);\n }\n else if(!settings.once) {\n module.remove.occurred(callbackName);\n }\n if(newCallback === undefined) {\n return calculations.topVisible;\n }\n },\n\n bottomVisible: function(newCallback) {\n var\n calculations = module.get.elementCalculations(),\n callback = newCallback || settings.onBottomVisible,\n callbackName = 'bottomVisible'\n ;\n if(newCallback) {\n module.debug('Adding callback for bottom visible', newCallback);\n settings.onBottomVisible = newCallback;\n }\n if(calculations.bottomVisible) {\n module.execute(callback, callbackName);\n }\n else if(!settings.once) {\n module.remove.occurred(callbackName);\n }\n if(newCallback === undefined) {\n return calculations.bottomVisible;\n }\n },\n\n topPassed: function(newCallback) {\n var\n calculations = module.get.elementCalculations(),\n callback = newCallback || settings.onTopPassed,\n callbackName = 'topPassed'\n ;\n if(newCallback) {\n module.debug('Adding callback for top passed', newCallback);\n settings.onTopPassed = newCallback;\n }\n if(calculations.topPassed) {\n module.execute(callback, callbackName);\n }\n else if(!settings.once) {\n module.remove.occurred(callbackName);\n }\n if(newCallback === undefined) {\n return calculations.topPassed;\n }\n },\n\n bottomPassed: function(newCallback) {\n var\n calculations = module.get.elementCalculations(),\n callback = newCallback || settings.onBottomPassed,\n callbackName = 'bottomPassed'\n ;\n if(newCallback) {\n module.debug('Adding callback for bottom passed', newCallback);\n settings.onBottomPassed = newCallback;\n }\n if(calculations.bottomPassed) {\n module.execute(callback, callbackName);\n }\n else if(!settings.once) {\n module.remove.occurred(callbackName);\n }\n if(newCallback === undefined) {\n return calculations.bottomPassed;\n }\n },\n\n passingReverse: function(newCallback) {\n var\n calculations = module.get.elementCalculations(),\n callback = newCallback || settings.onPassingReverse,\n callbackName = 'passingReverse'\n ;\n if(newCallback) {\n module.debug('Adding callback for passing reverse', newCallback);\n settings.onPassingReverse = newCallback;\n }\n if(!calculations.passing) {\n if(module.get.occurred('passing')) {\n module.execute(callback, callbackName);\n }\n }\n else if(!settings.once) {\n module.remove.occurred(callbackName);\n }\n if(newCallback !== undefined) {\n return !calculations.passing;\n }\n },\n\n\n topVisibleReverse: function(newCallback) {\n var\n calculations = module.get.elementCalculations(),\n callback = newCallback || settings.onTopVisibleReverse,\n callbackName = 'topVisibleReverse'\n ;\n if(newCallback) {\n module.debug('Adding callback for top visible reverse', newCallback);\n settings.onTopVisibleReverse = newCallback;\n }\n if(!calculations.topVisible) {\n if(module.get.occurred('topVisible')) {\n module.execute(callback, callbackName);\n }\n }\n else if(!settings.once) {\n module.remove.occurred(callbackName);\n }\n if(newCallback === undefined) {\n return !calculations.topVisible;\n }\n },\n\n bottomVisibleReverse: function(newCallback) {\n var\n calculations = module.get.elementCalculations(),\n callback = newCallback || settings.onBottomVisibleReverse,\n callbackName = 'bottomVisibleReverse'\n ;\n if(newCallback) {\n module.debug('Adding callback for bottom visible reverse', newCallback);\n settings.onBottomVisibleReverse = newCallback;\n }\n if(!calculations.bottomVisible) {\n if(module.get.occurred('bottomVisible')) {\n module.execute(callback, callbackName);\n }\n }\n else if(!settings.once) {\n module.remove.occurred(callbackName);\n }\n if(newCallback === undefined) {\n return !calculations.bottomVisible;\n }\n },\n\n topPassedReverse: function(newCallback) {\n var\n calculations = module.get.elementCalculations(),\n callback = newCallback || settings.onTopPassedReverse,\n callbackName = 'topPassedReverse'\n ;\n if(newCallback) {\n module.debug('Adding callback for top passed reverse', newCallback);\n settings.onTopPassedReverse = newCallback;\n }\n if(!calculations.topPassed) {\n if(module.get.occurred('topPassed')) {\n module.execute(callback, callbackName);\n }\n }\n else if(!settings.once) {\n module.remove.occurred(callbackName);\n }\n if(newCallback === undefined) {\n return !calculations.onTopPassed;\n }\n },\n\n bottomPassedReverse: function(newCallback) {\n var\n calculations = module.get.elementCalculations(),\n callback = newCallback || settings.onBottomPassedReverse,\n callbackName = 'bottomPassedReverse'\n ;\n if(newCallback) {\n module.debug('Adding callback for bottom passed reverse', newCallback);\n settings.onBottomPassedReverse = newCallback;\n }\n if(!calculations.bottomPassed) {\n if(module.get.occurred('bottomPassed')) {\n module.execute(callback, callbackName);\n }\n }\n else if(!settings.once) {\n module.remove.occurred(callbackName);\n }\n if(newCallback === undefined) {\n return !calculations.bottomPassed;\n }\n },\n\n execute: function(callback, callbackName) {\n var\n calculations = module.get.elementCalculations(),\n screen = module.get.screenCalculations()\n ;\n callback = callback || false;\n if(callback) {\n if(settings.continuous) {\n module.debug('Callback being called continuously', callbackName, calculations);\n callback.call(element, calculations, screen);\n }\n else if(!module.get.occurred(callbackName)) {\n module.debug('Conditions met', callbackName, calculations);\n callback.call(element, calculations, screen);\n }\n }\n module.save.occurred(callbackName);\n },\n\n remove: {\n fixed: function() {\n module.debug('Removing fixed position');\n $module\n .removeClass(className.fixed)\n .css({\n position : '',\n top : '',\n left : '',\n zIndex : ''\n })\n ;\n settings.onUnfixed.call(element);\n },\n placeholder: function() {\n module.debug('Removing placeholder content');\n if($placeholder) {\n $placeholder.remove();\n }\n },\n occurred: function(callback) {\n if(callback) {\n var\n occurred = module.cache.occurred\n ;\n if(occurred[callback] !== undefined && occurred[callback] === true) {\n module.debug('Callback can now be called again', callback);\n module.cache.occurred[callback] = false;\n }\n }\n else {\n module.cache.occurred = {};\n }\n }\n },\n\n save: {\n calculations: function() {\n module.verbose('Saving all calculations necessary to determine positioning');\n module.save.direction();\n module.save.screenCalculations();\n module.save.elementCalculations();\n },\n occurred: function(callback) {\n if(callback) {\n if(module.cache.occurred[callback] === undefined || (module.cache.occurred[callback] !== true)) {\n module.verbose('Saving callback occurred', callback);\n module.cache.occurred[callback] = true;\n }\n }\n },\n scroll: function(scrollPosition) {\n scrollPosition = scrollPosition + settings.offset || $context.scrollTop() + settings.offset;\n module.cache.scroll = scrollPosition;\n },\n direction: function() {\n var\n scroll = module.get.scroll(),\n lastScroll = module.get.lastScroll(),\n direction\n ;\n if(scroll > lastScroll && lastScroll) {\n direction = 'down';\n }\n else if(scroll < lastScroll && lastScroll) {\n direction = 'up';\n }\n else {\n direction = 'static';\n }\n module.cache.direction = direction;\n return module.cache.direction;\n },\n elementPosition: function() {\n var\n element = module.cache.element,\n screen = module.get.screenSize()\n ;\n module.verbose('Saving element position');\n // (quicker than $.extend)\n element.fits = (element.height < screen.height);\n element.offset = $module.offset();\n element.width = $module.outerWidth();\n element.height = $module.outerHeight();\n // store\n module.cache.element = element;\n return element;\n },\n elementCalculations: function() {\n var\n screen = module.get.screenCalculations(),\n element = module.get.elementPosition()\n ;\n // offset\n if(settings.includeMargin) {\n element.margin = {};\n element.margin.top = parseInt($module.css('margin-top'), 10);\n element.margin.bottom = parseInt($module.css('margin-bottom'), 10);\n element.top = element.offset.top - element.margin.top;\n element.bottom = element.offset.top + element.height + element.margin.bottom;\n }\n else {\n element.top = element.offset.top;\n element.bottom = element.offset.top + element.height;\n }\n\n // visibility\n element.topVisible = (screen.bottom >= element.top);\n element.topPassed = (screen.top >= element.top);\n element.bottomVisible = (screen.bottom >= element.bottom);\n element.bottomPassed = (screen.top >= element.bottom);\n element.pixelsPassed = 0;\n element.percentagePassed = 0;\n\n // meta calculations\n element.onScreen = (element.topVisible && !element.bottomPassed);\n element.passing = (element.topPassed && !element.bottomPassed);\n element.offScreen = (!element.onScreen);\n\n // passing calculations\n if(element.passing) {\n element.pixelsPassed = (screen.top - element.top);\n element.percentagePassed = (screen.top - element.top) / element.height;\n }\n module.cache.element = element;\n module.verbose('Updated element calculations', element);\n return element;\n },\n screenCalculations: function() {\n var\n scroll = module.get.scroll()\n ;\n module.save.direction();\n module.cache.screen.top = scroll;\n module.cache.screen.bottom = scroll + module.cache.screen.height;\n return module.cache.screen;\n },\n screenSize: function() {\n module.verbose('Saving window position');\n module.cache.screen = {\n height: $context.height()\n };\n },\n position: function() {\n module.save.screenSize();\n module.save.elementPosition();\n }\n },\n\n get: {\n pixelsPassed: function(amount) {\n var\n element = module.get.elementCalculations()\n ;\n if(amount.search('%') > -1) {\n return ( element.height * (parseInt(amount, 10) / 100) );\n }\n return parseInt(amount, 10);\n },\n occurred: function(callback) {\n return (module.cache.occurred !== undefined)\n ? module.cache.occurred[callback] || false\n : false\n ;\n },\n direction: function() {\n if(module.cache.direction === undefined) {\n module.save.direction();\n }\n return module.cache.direction;\n },\n elementPosition: function() {\n if(module.cache.element === undefined) {\n module.save.elementPosition();\n }\n return module.cache.element;\n },\n elementCalculations: function() {\n if(module.cache.element === undefined) {\n module.save.elementCalculations();\n }\n return module.cache.element;\n },\n screenCalculations: function() {\n if(module.cache.screen === undefined) {\n module.save.screenCalculations();\n }\n return module.cache.screen;\n },\n screenSize: function() {\n if(module.cache.screen === undefined) {\n module.save.screenSize();\n }\n return module.cache.screen;\n },\n scroll: function() {\n if(module.cache.scroll === undefined) {\n module.save.scroll();\n }\n return module.cache.scroll;\n },\n lastScroll: function() {\n if(module.cache.screen === undefined) {\n module.debug('First scroll event, no last scroll could be found');\n return false;\n }\n return module.cache.screen.top;\n }\n },\n\n setting: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, settings, name);\n }\n else if(value !== undefined) {\n settings[name] = value;\n }\n else {\n return settings[name];\n }\n },\n internal: function(name, value) {\n if( $.isPlainObject(name) ) {\n $.extend(true, module, name);\n }\n else if(value !== undefined) {\n module[name] = value;\n }\n else {\n return module[name];\n }\n },\n debug: function() {\n if(!settings.silent && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.debug.apply(console, arguments);\n }\n }\n },\n verbose: function() {\n if(!settings.silent && settings.verbose && settings.debug) {\n if(settings.performance) {\n module.performance.log(arguments);\n }\n else {\n module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':');\n module.verbose.apply(console, arguments);\n }\n }\n },\n error: function() {\n if(!settings.silent) {\n module.error = Function.prototype.bind.call(console.error, console, settings.name + ':');\n module.error.apply(console, arguments);\n }\n },\n performance: {\n log: function(message) {\n var\n currentTime,\n executionTime,\n previousTime\n ;\n if(settings.performance) {\n currentTime = new Date().getTime();\n previousTime = time || currentTime;\n executionTime = currentTime - previousTime;\n time = currentTime;\n performance.push({\n 'Name' : message[0],\n 'Arguments' : [].slice.call(message, 1) || '',\n 'Element' : element,\n 'Execution Time' : executionTime\n });\n }\n clearTimeout(module.performance.timer);\n module.performance.timer = setTimeout(module.performance.display, 500);\n },\n display: function() {\n var\n title = settings.name + ':',\n totalTime = 0\n ;\n time = false;\n clearTimeout(module.performance.timer);\n $.each(performance, function(index, data) {\n totalTime += data['Execution Time'];\n });\n title += ' ' + totalTime + 'ms';\n if(moduleSelector) {\n title += ' \\'' + moduleSelector + '\\'';\n }\n if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {\n console.groupCollapsed(title);\n if(console.table) {\n console.table(performance);\n }\n else {\n $.each(performance, function(index, data) {\n console.log(data['Name'] + ': ' + data['Execution Time']+'ms');\n });\n }\n console.groupEnd();\n }\n performance = [];\n }\n },\n invoke: function(query, passedArguments, context) {\n var\n object = instance,\n maxDepth,\n found,\n response\n ;\n passedArguments = passedArguments || queryArguments;\n context = element || context;\n if(typeof query == 'string' && object !== undefined) {\n query = query.split(/[\\. ]/);\n maxDepth = query.length - 1;\n $.each(query, function(depth, value) {\n var camelCaseValue = (depth != maxDepth)\n ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)\n : query\n ;\n if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) {\n object = object[camelCaseValue];\n }\n else if( object[camelCaseValue] !== undefined ) {\n found = object[camelCaseValue];\n return false;\n }\n else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) {\n object = object[value];\n }\n else if( object[value] !== undefined ) {\n found = object[value];\n return false;\n }\n else {\n module.error(error.method, query);\n return false;\n }\n });\n }\n if ( $.isFunction( found ) ) {\n response = found.apply(context, passedArguments);\n }\n else if(found !== undefined) {\n response = found;\n }\n if($.isArray(returnedValue)) {\n returnedValue.push(response);\n }\n else if(returnedValue !== undefined) {\n returnedValue = [returnedValue, response];\n }\n else if(response !== undefined) {\n returnedValue = response;\n }\n return found;\n }\n };\n\n if(methodInvoked) {\n if(instance === undefined) {\n module.initialize();\n }\n instance.save.scroll();\n instance.save.calculations();\n module.invoke(query);\n }\n else {\n if(instance !== undefined) {\n instance.invoke('destroy');\n }\n module.initialize();\n }\n })\n ;\n\n return (returnedValue !== undefined)\n ? returnedValue\n : this\n ;\n};\n\n$.fn.visibility.settings = {\n\n name : 'Visibility',\n namespace : 'visibility',\n\n debug : false,\n verbose : false,\n performance : true,\n\n // whether to use mutation observers to follow changes\n observeChanges : true,\n\n // check position immediately on init\n initialCheck : true,\n\n // whether to refresh calculations after all page images load\n refreshOnLoad : true,\n\n // whether to refresh calculations after page resize event\n refreshOnResize : true,\n\n // should call callbacks on refresh event (resize, etc)\n checkOnRefresh : true,\n\n // callback should only occur one time\n once : true,\n\n // callback should fire continuously whe evaluates to true\n continuous : false,\n\n // offset to use with scroll top\n offset : 0,\n\n // whether to include margin in elements position\n includeMargin : false,\n\n // scroll context for visibility checks\n context : window,\n\n // visibility check delay in ms (defaults to animationFrame)\n throttle : false,\n\n // special visibility type (image, fixed)\n type : false,\n\n // z-index to use with visibility 'fixed'\n zIndex : '10',\n\n // image only animation settings\n transition : 'fade in',\n duration : 1000,\n\n // array of callbacks for percentage\n onPassed : {},\n\n // standard callbacks\n onOnScreen : false,\n onOffScreen : false,\n onPassing : false,\n onTopVisible : false,\n onBottomVisible : false,\n onTopPassed : false,\n onBottomPassed : false,\n\n // reverse callbacks\n onPassingReverse : false,\n onTopVisibleReverse : false,\n onBottomVisibleReverse : false,\n onTopPassedReverse : false,\n onBottomPassedReverse : false,\n\n // special callbacks for image\n onLoad : function() {},\n onAllLoaded : function() {},\n\n // special callbacks for fixed position\n onFixed : function() {},\n onUnfixed : function() {},\n\n // utility callbacks\n onUpdate : false, // disabled by default for performance\n onRefresh : function(){},\n\n metadata : {\n src: 'src'\n },\n\n className: {\n fixed : 'fixed',\n placeholder : 'placeholder'\n },\n\n error : {\n method : 'The method you called is not defined.',\n visible : 'Element is hidden, you must call refresh after element becomes visible'\n }\n\n};\n\n})( jQuery, window, document );\n"]}
|