{"version":3,"sources":["../assets/bower_components/doubletaptogo/jquery.doubletaptogo.js","../assets/bower_components/selectivizr/selectivizr.js","../assets/bower_components/modernizr/modernizr.js","../assets/bower_components/waypoints/lib/noframework.waypoints.js","../assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/transition.js","../assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/alert.js","../assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/button.js","../assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/carousel.js","../assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/collapse.js","../assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/dropdown.js","../assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/modal.js","../assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/tooltip.js","../assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/popover.js","../assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/scrollspy.js","../assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/tab.js","../assets/bower_components/bootstrap-sass/assets/javascripts/bootstrap/affix.js","../assets/scripts/scripts.js"],"names":["$","window","document","undefined","fn","doubleTapToGo","action","navigator","msMaxTouchPoints","userAgent","toLowerCase","match","this","each","off","handleTouch","e","resetItem","parents","target","i","length","curItem","on","item","preventDefault","jQuery","win","Modernizr","setCss","str","mStyle","cssText","setCssAll","str1","str2","prefixes","join","is","obj","type","contains","substr","indexOf","testProps","props","prefixed","prop","testDOMProps","elem","bind","testPropsAll","ucProp","charAt","toUpperCase","slice","cssomPrefixes","split","webforms","len","attrs","inputElem","list","createElement","HTMLDataListElement","bool","inputElemType","defaultView","setAttribute","value","smile","style","test","WebkitAppearance","docElement","appendChild","getComputedStyle","offsetHeight","removeChild","checkValidity","inputs","featureName","hasOwnProp","version","enableClasses","documentElement","mod","modElem","toString","omPrefixes","domPrefixes","ns","svg","tests","classes","injectElementWithStyles","rule","callback","nodes","testnames","ret","node","docOverflow","div","body","fakeBody","parseInt","id","innerHTML","background","overflow","parentNode","testMediaQuery","mq","matchMedia","msMatchMedia","matches","currentStyle","isEventSupported","eventName","element","TAGNAMES","isSupported","removeAttribute","select","change","submit","reset","error","load","abort","_hasOwnProperty","hasOwnProperty","call","object","property","constructor","prototype","Function","that","TypeError","args","arguments","bound","F","self","result","apply","concat","Object","getContext","fillText","WebGLRenderingContext","DocumentTouch","offsetTop","postMessage","openDatabase","documentMode","history","pushState","backgroundColor","textShadow","opacity","str3","backgroundImage","offsetLeft","getElementById","sheet","styleSheet","cssRules","canPlayType","Boolean","ogg","replace","h264","webm","mp3","wav","m4a","localStorage","setItem","removeItem","sessionStorage","Worker","applicationCache","createElementNS","createSVGRect","firstChild","namespaceURI","feature","push","input","addTest","key","className","addStyleSheet","ownerDocument","p","parent","getElementsByTagName","insertBefore","lastChild","getElements","elements","html5","getExpandoData","data","expandoData","expando","expanID","nodeName","supportsUnknownElements","cache","cloneNode","saveClones","createElem","canHaveChildren","reSkip","tagUrn","frag","createDocumentFragment","clone","elems","l","shivMethods","createFrag","shivDocument","shivCSS","supportsHtml5Styles","hasCSS","options","a","childNodes","_version","_prefixes","_domPrefixes","_cssomPrefixes","hasEvent","testProp","testAllProps","testStyles","Waypoint","Error","handler","keyCounter","Adapter","extend","defaults","adapter","axis","horizontal","enabled","triggerPoint","group","Group","findOrCreate","name","context","Context","findOrCreateByElement","offsetAliases","offset","add","allWaypoints","queueTrigger","direction","trigger","destroy","remove","disable","enable","refresh","next","previous","invokeAll","method","allWaypointsArray","waypointKey","end","destroyAll","disableAll","enableAll","refreshAll","viewportHeight","innerHeight","clientHeight","viewportWidth","clientWidth","adapters","continuous","bottom-in-view","outerHeight","right-in-view","innerWidth","outerWidth","requestAnimationFrameShim","setTimeout","didScroll","didResize","oldScroll","x","scrollLeft","y","scrollTop","waypoints","vertical","waypointContextKey","contexts","createThrottledScrollHandler","createThrottledResizeHandler","oldWindowLoad","onload","waypoint","checkEmpty","horizontalEmpty","isEmptyObject","verticalEmpty","resizeHandler","handleResize","requestAnimationFrame","scrollHandler","handleScroll","isTouch","triggeredGroups","axes","newScroll","forward","backward","axisKey","isForward","wasBeforeTriggerPoint","nowAfterTriggerPoint","crossedForward","crossedBackward","groupKey","flushTriggers","isWindow","contextOffset","left","contextScroll","contextDimension","offsetProp","top","contextModifier","wasBeforeScroll","nowAfterScroll","triggeredBackward","triggeredForward","adjustment","oldTriggerPoint","elementOffset","freshWaypoint","parseFloat","Math","ceil","findByElement","contextId","requestFn","mozRequestAnimationFrame","webkitRequestAnimationFrame","byTriggerPoint","b","byReverseTriggerPoint","clearTriggerQueues","groups","triggerQueues","up","down","right","reverse","sort","index","inArray","isLast","splice","first","last","getWindow","NoFrameworkAdapter","handlers","isWin","event","removeListeners","listeners","listener","removeEventListener","eventParts","eventType","namespace","rect","getBoundingClientRect","pageYOffset","clientTop","pageXOffset","clientLeft","nsHandlers","nsTypeList","addEventListener","includeMargin","computedStyle","height","marginTop","marginBottom","width","marginLeft","marginRight","merge","Array","array","transitionEnd","el","transEndEventNames","WebkitTransition","MozTransition","OTransition","transition","emulateTransitionEnd","duration","called","$el","one","support","special","bsTransitionEnd","bindType","delegateType","handle","handleObj","Plugin","option","$this","Alert","dismiss","close","VERSION","TRANSITION_DURATION","removeElement","$parent","detach","selector","attr","closest","Event","isDefaultPrevented","removeClass","hasClass","old","alert","Constructor","noConflict","Button","toggle","setState","$element","DEFAULTS","isLoading","loadingText","state","d","val","resetText","proxy","addClass","removeAttr","changed","$input","find","toggleClass","button","$btn","Carousel","slide","to","interval","pause","cycle","$indicators","paused","sliding","$active","$items","keyboard","keydown","wrap","tagName","which","prev","clearInterval","setInterval","getItemIndex","children","getItemForDirection","active","activeIndex","willWrap","delta","itemIndex","eq","pos","$next","isCycling","relatedTarget","slideEvent","$nextIndicator","slidEvent","offsetWidth","carousel","clickHandler","href","$target","slideIndex","$carousel","getTargetFromTrigger","$trigger","Collapse","transitioning","getParent","addAriaAndCollapsedClass","dimension","hasWidth","show","activesData","actives","startEvent","complete","scrollSize","camelCase","hide","isOpen","collapse","clearMenus","backdrop","Dropdown","isActive","insertAfter","stopPropagation","desc","dropdown","_relatedTarget","Modal","$body","$dialog","$backdrop","isShown","originalBodyPad","scrollbarWidth","ignoreBackdropClick","remote","BACKDROP_TRANSITION_DURATION","checkScrollbar","setScrollbar","escape","resize","appendTo","adjustDialog","enforceFocus","hideModal","has","handleUpdate","resetAdjustments","resetScrollbar","removeBackdrop","animate","doAnimate","currentTarget","focus","callbackRemove","modalIsOverflowing","scrollHeight","css","paddingLeft","bodyIsOverflowing","paddingRight","fullWindowWidth","documentElementRect","abs","measureScrollbar","bodyPad","scrollDiv","append","modal","showEvent","Tooltip","timeout","hoverState","inState","init","animation","placement","template","title","delay","html","container","viewport","padding","getOptions","$viewport","isFunction","click","hover","triggers","eventIn","eventOut","enter","leave","_options","fixTitle","getDefaults","getDelegateOptions","tip","clearTimeout","isInStateTrue","hasContent","inDom","$tip","tipId","getUID","setContent","autoToken","autoPlace","display","getPosition","actualWidth","actualHeight","orgPlacement","viewportDim","bottom","calculatedOffset","getCalculatedOffset","applyPlacement","prevHoverState","isNaN","setOffset","using","round","getViewportAdjustedDelta","isVertical","arrowDelta","arrowOffsetPosition","replaceArrow","arrow","getTitle","$e","isBody","elRect","isSvg","SVGElement","elOffset","scroll","outerDims","viewportPadding","viewportDimensions","topEdgeOffset","bottomEdgeOffset","leftEdgeOffset","rightEdgeOffset","o","prefix","random","$arrow","toggleEnabled","removeData","tooltip","Popover","content","getContent","popover","ScrollSpy","$scrollElement","offsets","targets","activeTarget","process","getScrollHeight","max","offsetMethod","offsetBase","map","$href","maxScroll","activate","clear","parentsUntil","scrollspy","$spy","Tab","$ul","$previous","hideEvent","tab","Affix","checkPosition","checkPositionWithEventLoop","affixed","unpin","pinnedOffset","RESET","getState","offsetBottom","position","targetHeight","initializing","colliderTop","colliderHeight","getPinnedOffset","affix","affixType","Drupal","behaviors","basic","attach","settings","resize_timeout","refreshHeader","$screen_sm","$width","$header","ready","$block_menu","once"],"mappings":"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","file":"main.js","sourcesContent":["/* \r\nDouble Tap to Go\r\nAuthor: Graffino (http://www.graffino.com)\r\nVersion: 0.3\r\nOriginally by Osvaldas Valutis, www.osvaldas.info\t\r\nAvailable for use under the MIT License\r\n*/\r\n\r\n;(function($, window, document, undefined) {\r\n\t$.fn.doubleTapToGo = function(action) {\r\n\r\n\t\tif (!('ontouchstart' in window) &&\r\n\t\t\t!navigator.msMaxTouchPoints &&\r\n\t\t\t!navigator.userAgent.toLowerCase().match( /windows phone os 7/i )) return false;\r\n\r\n\t\tif (action === 'unbind') {\r\n\t\t\tthis.each(function() {\r\n\t\t\t\t$(this).off();\r\n\t\t\t\t$(document).off('click touchstart MSPointerDown', handleTouch);\t\r\n\t\t\t});\r\n\r\n\t\t} else {\r\n\t\t\tthis.each(function() {\r\n\t\t\t\tvar curItem = false;\r\n\t\r\n\t\t\t\t$(this).on('click', function(e) {\r\n\t\t\t\t\tvar item = $(this);\r\n\t\t\t\t\tif (item[0] != curItem[0]) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\tcurItem = item;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\r\n\t\t\t\t$(document).on('click touchstart MSPointerDown', handleTouch); \r\n\t\t\t\t\r\n\t\t\t\tfunction handleTouch(e) {\r\n\t\t\t\t\tvar resetItem = true,\r\n\t\t\t\t\t\tparents = $(e.target).parents();\r\n\t\r\n\t\t\t\t\tfor (var i = 0; i < parents.length; i++)\r\n\t\t\t\t\t\tif (parents[i] == curItem[0])\r\n\t\t\t\t\t\t\tresetItem = false;\r\n\t\r\n\t\t\t\t\tif(resetItem)\r\n\t\t\t\t\t\tcurItem = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn this;\t\r\n\t};\r\n})(jQuery, window, document);\r\n","/*\r\nselectivizr v1.0.2b - (c) Keith Clark, freely distributable under the terms \r\nof the MIT license.\r\n\r\nselectivizr.com\r\n*/\r\n/* \r\n \r\nNotes about this source\r\n-----------------------\r\n\r\n * The #DEBUG_START and #DEBUG_END comments are used to mark blocks of code\r\n that will be removed prior to building a final release version (using a\r\n pre-compression script)\r\n \r\n \r\nReferences:\r\n-----------\r\n \r\n * CSS Syntax : http://www.w3.org/TR/2003/WD-css3-syntax-20030813/#style\r\n * Selectors : http://www.w3.org/TR/css3-selectors/#selectors\r\n * IE Compatability : http://msdn.microsoft.com/en-us/library/cc351024(VS.85).aspx\r\n * W3C Selector Tests : http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/html/tests/\r\n \r\n*/\r\n\r\n(function(win) {\r\n\r\n\t// If browser isn't IE, then stop execution! This handles the script \r\n\t// being loaded by non IE browsers because the developer didn't use \r\n\t// conditional comments.\r\n\tif (/*@cc_on!@*/true) return;\r\n\r\n\t// =========================== Init Objects ============================\r\n\r\n\tvar doc = document;\r\n\tvar root = doc.documentElement;\r\n\tvar xhr = getXHRObject();\r\n\tvar ieVersion = /MSIE (\\d+)/.exec(navigator.userAgent)[1];\r\n\t\r\n\t// If were not in standards mode, IE is too old / new or we can't create\r\n\t// an XMLHttpRequest object then we should get out now.\r\n\tif (doc.compatMode != 'CSS1Compat' || ieVersion<6 || ieVersion>8 || !xhr) {\r\n\t\treturn;\r\n\t}\r\n\t\r\n\t\r\n\t// ========================= Common Objects ============================\r\n\r\n\t// Compatiable selector engines in order of CSS3 support. Note: '*' is\r\n\t// a placholder for the object key name. (basically, crude compression)\r\n\tvar selectorEngines = {\r\n\t\t\"NW\"\t\t\t\t\t\t\t\t: \"*.Dom.select\",\r\n\t\t\"MooTools\"\t\t\t\t\t\t\t: \"$$\",\r\n\t\t\"DOMAssistant\"\t\t\t\t\t\t: \"*.$\", \r\n\t\t\"Prototype\"\t\t\t\t\t\t\t: \"$$\",\r\n\t\t\"YAHOO\"\t\t\t\t\t\t\t\t: \"*.util.Selector.query\",\r\n\t\t\"Sizzle\"\t\t\t\t\t\t\t: \"*\", \r\n\t\t\"jQuery\"\t\t\t\t\t\t\t: \"*\",\r\n\t\t\"dojo\"\t\t\t\t\t\t\t\t: \"*.query\"\r\n\t};\r\n\r\n\tvar selectorMethod;\r\n\tvar enabledWatchers \t\t\t\t\t= []; // array of :enabled/:disabled elements to poll\r\n\tvar ie6PatchID \t\t\t\t\t\t\t= 0; // used to solve ie6's multiple class bug\r\n\tvar patchIE6MultipleClasses\t\t\t\t= true; // if true adds class bloat to ie6\r\n\tvar namespace \t\t\t\t\t\t\t= \"slvzr\";\r\n\t\r\n\t// Stylesheet parsing regexp's\r\n\tvar RE_COMMENT\t\t\t\t\t\t\t= /(\\/\\*[^*]*\\*+([^\\/][^*]*\\*+)*\\/)\\s*/g;\r\n\tvar RE_IMPORT\t\t\t\t\t\t\t= /@import\\s*(?:(?:(?:url\\(\\s*(['\"]?)(.*)\\1)\\s*\\))|(?:(['\"])(.*)\\3))[^;]*;/g;\r\n\tvar RE_ASSET_URL \t\t\t\t\t\t= /\\burl\\(\\s*([\"']?)(?!data:)([^\"')]+)\\1\\s*\\)/g;\r\n\tvar RE_PSEUDO_STRUCTURAL\t\t\t\t= /^:(empty|(first|last|only|nth(-last)?)-(child|of-type))$/;\r\n\tvar RE_PSEUDO_ELEMENTS\t\t\t\t\t= /:(:first-(?:line|letter))/g;\r\n\tvar RE_SELECTOR_GROUP\t\t\t\t\t= /(^|})\\s*([^\\{]*?[\\[:][^{]+)/g;\r\n\tvar RE_SELECTOR_PARSE\t\t\t\t\t= /([ +~>])|(:[a-z-]+(?:\\(.*?\\)+)?)|(\\[.*?\\])/g; \r\n\tvar RE_LIBRARY_INCOMPATIBLE_PSEUDOS\t\t= /(:not\\()?:(hover|enabled|disabled|focus|checked|target|active|visited|first-line|first-letter)\\)?/g;\r\n\tvar RE_PATCH_CLASS_NAME_REPLACE\t\t\t= /[^\\w-]/g;\r\n\t\r\n\t// HTML UI element regexp's\r\n\tvar RE_INPUT_ELEMENTS\t\t\t\t\t= /^(INPUT|SELECT|TEXTAREA|BUTTON)$/;\r\n\tvar RE_INPUT_CHECKABLE_TYPES\t\t\t= /^(checkbox|radio)$/;\r\n\r\n\t// Broken attribute selector implementations (IE7/8 native [^=\"\"], [$=\"\"] and [*=\"\"])\r\n\tvar BROKEN_ATTR_IMPLEMENTATIONS\t\t\t= ieVersion>6 ? /[\\$\\^*]=(['\"])\\1/ : null;\r\n\r\n\t// Whitespace normalization regexp's\r\n\tvar RE_TIDY_TRAILING_WHITESPACE\t\t\t= /([(\\[+~])\\s+/g;\r\n\tvar RE_TIDY_LEADING_WHITESPACE\t\t\t= /\\s+([)\\]+~])/g;\r\n\tvar RE_TIDY_CONSECUTIVE_WHITESPACE\t\t= /\\s+/g;\r\n\tvar RE_TIDY_TRIM_WHITESPACE\t\t\t\t= /^\\s*((?:[\\S\\s]*\\S)?)\\s*$/;\r\n\t\r\n\t// String constants\r\n\tvar EMPTY_STRING\t\t\t\t\t\t= \"\";\r\n\tvar SPACE_STRING\t\t\t\t\t\t= \" \";\r\n\tvar PLACEHOLDER_STRING\t\t\t\t\t= \"$1\";\r\n\r\n\t// =========================== Patching ================================\r\n\r\n\t// --[ patchStyleSheet() ]----------------------------------------------\r\n\t// Scans the passed cssText for selectors that require emulation and\r\n\t// creates one or more patches for each matched selector.\r\n\tfunction patchStyleSheet( cssText ) {\r\n\t\treturn cssText.replace(RE_PSEUDO_ELEMENTS, PLACEHOLDER_STRING).\r\n\t\t\treplace(RE_SELECTOR_GROUP, function(m, prefix, selectorText) {\t\r\n \t\t\tvar selectorGroups = selectorText.split(\",\");\r\n \t\t\tfor (var c = 0, cs = selectorGroups.length; c < cs; c++) {\r\n \t\t\t\tvar selector = normalizeSelectorWhitespace(selectorGroups[c]) + SPACE_STRING;\r\n \t\t\t\tvar patches = [];\r\n \t\t\t\tselectorGroups[c] = selector.replace(RE_SELECTOR_PARSE, \r\n \t\t\t\t\tfunction(match, combinator, pseudo, attribute, index) {\r\n \t\t\t\t\t\tif (combinator) {\r\n \t\t\t\t\t\t\tif (patches.length>0) {\r\n \t\t\t\t\t\t\t\tapplyPatches( selector.substring(0, index), patches );\r\n \t\t\t\t\t\t\t\tpatches = [];\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\treturn combinator;\r\n \t\t\t\t\t\t}\t\t\r\n \t\t\t\t\t\telse {\r\n \t\t\t\t\t\t\tvar patch = (pseudo) ? patchPseudoClass( pseudo ) : patchAttribute( attribute );\r\n \t\t\t\t\t\t\tif (patch) {\r\n \t\t\t\t\t\t\t\tpatches.push(patch);\r\n \t\t\t\t\t\t\t\treturn \".\" + patch.className;\r\n \t\t\t\t\t\t\t}\r\n \t\t\t\t\t\t\treturn match;\r\n \t\t\t\t\t\t}\r\n \t\t\t\t\t}\r\n \t\t\t\t);\r\n \t\t\t}\r\n \t\t\treturn prefix + selectorGroups.join(\",\");\r\n \t\t});\r\n\t};\r\n\r\n\t// --[ patchAttribute() ]-----------------------------------------------\r\n\t// returns a patch for an attribute selector.\r\n\tfunction patchAttribute( attr ) {\r\n\t\treturn (!BROKEN_ATTR_IMPLEMENTATIONS || BROKEN_ATTR_IMPLEMENTATIONS.test(attr)) ? \r\n\t\t\t{ className: createClassName(attr), applyClass: true } : null;\r\n\t};\r\n\r\n\t// --[ patchPseudoClass() ]---------------------------------------------\r\n\t// returns a patch for a pseudo-class\r\n\tfunction patchPseudoClass( pseudo ) {\r\n\r\n\t\tvar applyClass = true;\r\n\t\tvar className = createClassName(pseudo.slice(1));\r\n\t\tvar isNegated = pseudo.substring(0, 5) == \":not(\";\r\n\t\tvar activateEventName;\r\n\t\tvar deactivateEventName;\r\n\r\n\t\t// if negated, remove :not() \r\n\t\tif (isNegated) {\r\n\t\t\tpseudo = pseudo.slice(5, -1);\r\n\t\t}\r\n\t\t\r\n\t\t// bracket contents are irrelevant - remove them\r\n\t\tvar bracketIndex = pseudo.indexOf(\"(\")\r\n\t\tif (bracketIndex > -1) {\r\n\t\t\tpseudo = pseudo.substring(0, bracketIndex);\r\n\t\t}\t\t\r\n\t\t\r\n\t\t// check we're still dealing with a pseudo-class\r\n\t\tif (pseudo.charAt(0) == \":\") {\r\n\t\t\tswitch (pseudo.slice(1)) {\r\n\r\n\t\t\t\tcase \"root\":\r\n\t\t\t\t\tapplyClass = function(e) {\r\n\t\t\t\t\t\treturn isNegated ? e != root : e == root;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"target\":\r\n\t\t\t\t\t// :target is only supported in IE8\r\n\t\t\t\t\tif (ieVersion == 8) {\r\n\t\t\t\t\t\tapplyClass = function(e) {\r\n\t\t\t\t\t\t\tvar handler = function() { \r\n\t\t\t\t\t\t\t\tvar hash = location.hash;\r\n\t\t\t\t\t\t\t\tvar hashID = hash.slice(1);\r\n\t\t\t\t\t\t\t\treturn isNegated ? (hash == EMPTY_STRING || e.id != hashID) : (hash != EMPTY_STRING && e.id == hashID);\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\taddEvent( win, \"hashchange\", function() {\r\n\t\t\t\t\t\t\t\ttoggleElementClass(e, className, handler());\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\treturn handler();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t\r\n\t\t\t\tcase \"checked\":\r\n\t\t\t\t\tapplyClass = function(e) { \r\n\t\t\t\t\t\tif (RE_INPUT_CHECKABLE_TYPES.test(e.type)) {\r\n\t\t\t\t\t\t\taddEvent( e, \"propertychange\", function() {\r\n\t\t\t\t\t\t\t\tif (event.propertyName == \"checked\") {\r\n\t\t\t\t\t\t\t\t\ttoggleElementClass( e, className, e.checked !== isNegated );\r\n\t\t\t\t\t\t\t\t} \t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn e.checked !== isNegated;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\tcase \"disabled\":\r\n\t\t\t\t\tisNegated = !isNegated;\r\n\r\n\t\t\t\tcase \"enabled\":\r\n\t\t\t\t\tapplyClass = function(e) { \r\n\t\t\t\t\t\tif (RE_INPUT_ELEMENTS.test(e.tagName)) {\r\n\t\t\t\t\t\t\taddEvent( e, \"propertychange\", function() {\r\n\t\t\t\t\t\t\t\tif (event.propertyName == \"$disabled\") {\r\n\t\t\t\t\t\t\t\t\ttoggleElementClass( e, className, e.$disabled === isNegated );\r\n\t\t\t\t\t\t\t\t} \r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tenabledWatchers.push(e);\r\n\t\t\t\t\t\t\te.$disabled = e.disabled;\r\n\t\t\t\t\t\t\treturn e.disabled === isNegated;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn pseudo == \":enabled\" ? isNegated : !isNegated;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\tcase \"focus\":\r\n\t\t\t\t\tactivateEventName = \"focus\";\r\n\t\t\t\t\tdeactivateEventName = \"blur\";\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\tcase \"hover\":\r\n\t\t\t\t\tif (!activateEventName) {\r\n\t\t\t\t\t\tactivateEventName = \"mouseenter\";\r\n\t\t\t\t\t\tdeactivateEventName = \"mouseleave\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tapplyClass = function(e) {\r\n\t\t\t\t\t\taddEvent( e, isNegated ? deactivateEventName : activateEventName, function() {\r\n\t\t\t\t\t\t\ttoggleElementClass( e, className, true );\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\taddEvent( e, isNegated ? activateEventName : deactivateEventName, function() {\r\n\t\t\t\t\t\t\ttoggleElementClass( e, className, false );\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\treturn isNegated;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\t\r\n\t\t\t\t// everything else\r\n\t\t\t\tdefault:\r\n\t\t\t\t\t// If we don't support this pseudo-class don't create \r\n\t\t\t\t\t// a patch for it\r\n\t\t\t\t\tif (!RE_PSEUDO_STRUCTURAL.test(pseudo)) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn { className: className, applyClass: applyClass };\r\n\t};\r\n\r\n\t// --[ applyPatches() ]-------------------------------------------------\r\n\t// uses the passed selector text to find DOM nodes and patch them\t\r\n\tfunction applyPatches(selectorText, patches) {\r\n\t\tvar elms;\r\n\t\t\r\n\t\t// Although some selector libraries can find :checked :enabled etc. \r\n\t\t// we need to find all elements that could have that state because \r\n\t\t// it can be changed by the user.\r\n\t\tvar domSelectorText = selectorText.replace(RE_LIBRARY_INCOMPATIBLE_PSEUDOS, EMPTY_STRING);\r\n\t\t\r\n\t\t// If the dom selector equates to an empty string or ends with \r\n\t\t// whitespace then we need to append a universal selector (*) to it.\r\n\t\tif (domSelectorText == EMPTY_STRING || domSelectorText.charAt(domSelectorText.length - 1) == SPACE_STRING) {\r\n\t\t\tdomSelectorText += \"*\";\r\n\t\t}\r\n\t\t\r\n\t\t// Ensure we catch errors from the selector library\r\n\t\ttry {\r\n\t\t\telms = selectorMethod( domSelectorText );\r\n\t\t} catch (ex) {\r\n\t\t\t// #DEBUG_START\r\n\t\t\tlog( \"Selector '\" + selectorText + \"' threw exception '\" + ex + \"'\" );\r\n\t\t\t// #DEBUG_END\r\n\t\t}\r\n\r\n\r\n\t\tif (elms) {\r\n\t\t\tfor (var d = 0, dl = elms.length; d < dl; d++) {\t\r\n\t\t\t\tvar elm = elms[d];\r\n\t\t\t\tvar cssClasses = elm.className;\r\n\t\t\t\tfor (var f = 0, fl = patches.length; f < fl; f++) {\r\n\t\t\t\t\tvar patch = patches[f];\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (!hasPatch(elm, patch)) {\r\n\t\t\t\t\t\tif (patch.applyClass && (patch.applyClass === true || patch.applyClass(elm) === true)) {\r\n\t\t\t\t\t\t\tcssClasses = toggleClass(cssClasses, patch.className, true );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telm.className = cssClasses;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// --[ hasPatch() ]-----------------------------------------------------\r\n\t// checks for the exsistence of a patch on an element\r\n\tfunction hasPatch( elm, patch ) {\r\n\t\treturn new RegExp(\"(^|\\\\s)\" + patch.className + \"(\\\\s|$)\").test(elm.className);\r\n\t};\r\n\t\r\n\t\r\n\t// =========================== Utility =================================\r\n\t\r\n\tfunction createClassName( className ) {\r\n\t\treturn namespace + \"-\" + ((ieVersion == 6 && patchIE6MultipleClasses) ?\r\n\t\t\tie6PatchID++\r\n\t\t:\r\n\t\t\tclassName.replace(RE_PATCH_CLASS_NAME_REPLACE, function(a) { return a.charCodeAt(0) }));\r\n\t};\r\n\r\n\t// --[ log() ]----------------------------------------------------------\r\n\t// #DEBUG_START\r\n\tfunction log( message ) {\r\n\t\tif (win.console) {\r\n\t\t\twin.console.log(message);\r\n\t\t}\r\n\t};\r\n\t// #DEBUG_END\r\n\r\n\t// --[ trim() ]---------------------------------------------------------\r\n\t// removes leading, trailing whitespace from a string\r\n\tfunction trim( text ) {\r\n\t\treturn text.replace(RE_TIDY_TRIM_WHITESPACE, PLACEHOLDER_STRING);\r\n\t};\r\n\r\n\t// --[ normalizeWhitespace() ]------------------------------------------\r\n\t// removes leading, trailing and consecutive whitespace from a string\r\n\tfunction normalizeWhitespace( text ) {\r\n\t\treturn trim(text).replace(RE_TIDY_CONSECUTIVE_WHITESPACE, SPACE_STRING);\r\n\t};\r\n\r\n\t// --[ normalizeSelectorWhitespace() ]----------------------------------\r\n\t// tidies whitespace around selector brackets and combinators\r\n\tfunction normalizeSelectorWhitespace( selectorText ) {\r\n\t\treturn normalizeWhitespace(selectorText.\r\n\t\t\treplace(RE_TIDY_TRAILING_WHITESPACE, PLACEHOLDER_STRING).\r\n\t\t\treplace(RE_TIDY_LEADING_WHITESPACE, PLACEHOLDER_STRING)\r\n\t\t);\r\n\t};\r\n\r\n\t// --[ toggleElementClass() ]-------------------------------------------\r\n\t// toggles a single className on an element\r\n\tfunction toggleElementClass( elm, className, on ) {\r\n\t\tvar oldClassName = elm.className;\r\n\t\tvar newClassName = toggleClass(oldClassName, className, on);\r\n\t\tif (newClassName != oldClassName) {\r\n\t\t\telm.className = newClassName;\r\n\t\t\telm.parentNode.className += EMPTY_STRING;\r\n\t\t}\r\n\t};\r\n\r\n\t// --[ toggleClass() ]--------------------------------------------------\r\n\t// adds / removes a className from a string of classNames. Used to \r\n\t// manage multiple class changes without forcing a DOM redraw\r\n\tfunction toggleClass( classList, className, on ) {\r\n\t\tvar re = RegExp(\"(^|\\\\s)\" + className + \"(\\\\s|$)\");\r\n\t\tvar classExists = re.test(classList);\r\n\t\tif (on) {\r\n\t\t\treturn classExists ? classList : classList + SPACE_STRING + className;\r\n\t\t} else {\r\n\t\t\treturn classExists ? trim(classList.replace(re, PLACEHOLDER_STRING)) : classList;\r\n\t\t}\r\n\t};\r\n\t\r\n\t// --[ addEvent() ]-----------------------------------------------------\r\n\tfunction addEvent(elm, eventName, eventHandler) {\r\n\t\telm.attachEvent(\"on\" + eventName, eventHandler);\r\n\t};\r\n\r\n\t// --[ getXHRObject() ]-------------------------------------------------\r\n\tfunction getXHRObject()\r\n\t{\r\n\t\tif (win.XMLHttpRequest) {\r\n\t\t\treturn new XMLHttpRequest;\r\n\t\t}\r\n\t\ttry\t{ \r\n\t\t\treturn new ActiveXObject('Microsoft.XMLHTTP');\r\n\t\t} catch(e) { \r\n\t\t\treturn null;\r\n\t\t}\r\n\t};\r\n\r\n\t// --[ loadStyleSheet() ]-----------------------------------------------\r\n\tfunction loadStyleSheet( url ) {\r\n\t\txhr.open(\"GET\", url, false);\r\n\t\txhr.send();\r\n\t\treturn (xhr.status==200) ? xhr.responseText : EMPTY_STRING;\t\r\n\t};\r\n\t\r\n\t// --[ resolveUrl() ]---------------------------------------------------\r\n\t// Converts a URL fragment to a fully qualified URL using the specified\r\n\t// context URL. Returns null if same-origin policy is broken\r\n\tfunction resolveUrl( url, contextUrl ) {\r\n\t\r\n\t\tfunction getProtocolAndHost( url ) {\r\n\t\t\treturn url.substring(0, url.indexOf(\"/\", 8));\r\n\t\t};\r\n\t\t\r\n\t\t// absolute path\r\n\t\tif (/^https?:\\/\\//i.test(url)) {\r\n\t\t\treturn getProtocolAndHost(contextUrl) == getProtocolAndHost(url) ? url : null;\r\n\t\t}\r\n\t\t\r\n\t\t// root-relative path\r\n\t\tif (url.charAt(0)==\"/\")\t{\r\n\t\t\treturn getProtocolAndHost(contextUrl) + url;\r\n\t\t}\r\n\r\n\t\t// relative path\r\n\t\tvar contextUrlPath = contextUrl.split(/[?#]/)[0]; // ignore query string in the contextUrl\t\r\n\t\tif (url.charAt(0) != \"?\" && contextUrlPath.charAt(contextUrlPath.length - 1) != \"/\") {\r\n\t\t\tcontextUrlPath = contextUrlPath.substring(0, contextUrlPath.lastIndexOf(\"/\") + 1);\r\n\t\t}\r\n\t\t\r\n\t\treturn contextUrlPath + url;\r\n\t};\r\n\t\r\n\t// --[ parseStyleSheet() ]----------------------------------------------\r\n\t// Downloads the stylesheet specified by the URL, removes it's comments\r\n\t// and recursivly replaces @import rules with their contents, ultimately\r\n\t// returning the full cssText.\r\n\tfunction parseStyleSheet( url ) {\r\n\t\tif (url) {\r\n\t\t\treturn loadStyleSheet(url).replace(RE_COMMENT, EMPTY_STRING).\r\n\t\t\treplace(RE_IMPORT, function( match, quoteChar, importUrl, quoteChar2, importUrl2 ) { \r\n\t\t\t\treturn parseStyleSheet(resolveUrl(importUrl || importUrl2, url));\r\n\t\t\t}).\r\n\t\t\treplace(RE_ASSET_URL, function( match, quoteChar, assetUrl ) { \r\n\t\t\t\tquoteChar = quoteChar || EMPTY_STRING;\r\n\t\t\t\treturn \" url(\" + quoteChar + resolveUrl(assetUrl, url) + quoteChar + \") \"; \r\n\t\t\t});\r\n\t\t}\r\n\t\treturn EMPTY_STRING;\r\n\t};\r\n\t\r\n\t// --[ init() ]---------------------------------------------------------\r\n\tfunction init() {\r\n\t\t// honour the tag\r\n\t\tvar url, stylesheet;\r\n\t\tvar baseTags = doc.getElementsByTagName(\"BASE\");\r\n\t\tvar baseUrl = (baseTags.length > 0) ? baseTags[0].href : doc.location.href;\r\n\t\t\r\n\t\t/* Note: This code prevents IE from freezing / crashing when using \r\n\t\t@font-face .eot files but it modifies the tag and could\r\n\t\ttrigger the IE stylesheet limit. It will also cause FOUC issues.\r\n\t\tIf you choose to use it, make sure you comment out the for loop \r\n\t\tdirectly below this comment.\r\n\r\n\t\tvar head = doc.getElementsByTagName(\"head\")[0];\r\n\t\tfor (var c=doc.styleSheets.length-1; c>=0; c--) {\r\n\t\t\tstylesheet = doc.styleSheets[c]\r\n\t\t\thead.appendChild(doc.createElement(\"style\"))\r\n\t\t\tvar patchedStylesheet = doc.styleSheets[doc.styleSheets.length-1];\r\n\t\t\t\r\n\t\t\tif (stylesheet.href != EMPTY_STRING) {\r\n\t\t\t\turl = resolveUrl(stylesheet.href, baseUrl)\r\n\t\t\t\tif (url) {\r\n\t\t\t\t\tpatchedStylesheet.cssText = patchStyleSheet( parseStyleSheet( url ) )\r\n\t\t\t\t\tstylesheet.disabled = true\r\n\t\t\t\t\tsetTimeout( function () {\r\n\t\t\t\t\t\tstylesheet.owningElement.parentNode.removeChild(stylesheet.owningElement)\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t*/\r\n\t\t\r\n\t\tfor (var c = 0; c < doc.styleSheets.length; c++) {\r\n\t\t\tstylesheet = doc.styleSheets[c]\r\n\t\t\tif (stylesheet.href != EMPTY_STRING) {\r\n\t\t\t\turl = resolveUrl(stylesheet.href, baseUrl);\r\n\t\t\t\tif (url) {\r\n\t\t\t\t\tstylesheet.cssText = patchStyleSheet( parseStyleSheet( url ) );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t// :enabled & :disabled polling script (since we can't hook \r\n\t\t// onpropertychange event when an element is disabled) \r\n\t\tif (enabledWatchers.length > 0) {\r\n\t\t\tsetInterval( function() {\r\n\t\t\t\tfor (var c = 0, cl = enabledWatchers.length; c < cl; c++) {\r\n\t\t\t\t\tvar e = enabledWatchers[c];\r\n\t\t\t\t\tif (e.disabled !== e.$disabled) {\r\n\t\t\t\t\t\tif (e.disabled) {\r\n\t\t\t\t\t\t\te.disabled = false;\r\n\t\t\t\t\t\t\te.$disabled = true;\r\n\t\t\t\t\t\t\te.disabled = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\te.$disabled = e.disabled;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},250)\r\n\t\t}\r\n\t};\r\n\t\r\n\t// Bind selectivizr to the ContentLoaded event. \r\n\tContentLoaded(win, function() {\r\n\t\t// Determine the \"best fit\" selector engine\r\n\t\tfor (var engine in selectorEngines) {\r\n\t\t\tvar members, member, context = win;\r\n\t\t\tif (win[engine]) {\r\n\t\t\t\tmembers = selectorEngines[engine].replace(\"*\", engine).split(\".\");\r\n\t\t\t\twhile ((member = members.shift()) && (context = context[member])) {}\r\n\t\t\t\tif (typeof context == \"function\") {\r\n\t\t\t\t\tselectorMethod = context;\r\n\t\t\t\t\tinit();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\t\r\n\t\r\n\t/*!\r\n\t * ContentLoaded.js by Diego Perini, modified for IE<9 only (to save space)\r\n\t *\r\n\t * Author: Diego Perini (diego.perini at gmail.com)\r\n\t * Summary: cross-browser wrapper for DOMContentLoaded\r\n\t * Updated: 20101020\r\n\t * License: MIT\r\n\t * Version: 1.2\r\n\t *\r\n\t * URL:\r\n\t * http://javascript.nwbox.com/ContentLoaded/\r\n\t * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\r\n\t *\r\n\t */\r\n\r\n\t// @w window reference\r\n\t// @f function reference\r\n\tfunction ContentLoaded(win, fn) {\r\n\r\n\t\tvar done = false, top = true,\r\n\t\tinit = function(e) {\r\n\t\t\tif (e.type == \"readystatechange\" && doc.readyState != \"complete\") return;\r\n\t\t\t(e.type == \"load\" ? win : doc).detachEvent(\"on\" + e.type, init, false);\r\n\t\t\tif (!done && (done = true)) fn.call(win, e.type || e);\r\n\t\t},\r\n\t\tpoll = function() {\r\n\t\t\ttry { root.doScroll(\"left\"); } catch(e) { setTimeout(poll, 50); return; }\r\n\t\t\tinit('poll');\r\n\t\t};\r\n\r\n\t\tif (doc.readyState == \"complete\") fn.call(win, EMPTY_STRING);\r\n\t\telse {\r\n\t\t\tif (doc.createEventObject && root.doScroll) {\r\n\t\t\t\ttry { top = !win.frameElement; } catch(e) { }\r\n\t\t\t\tif (top) poll();\r\n\t\t\t}\r\n\t\t\taddEvent(doc,\"readystatechange\", init);\r\n\t\t\taddEvent(win,\"load\", init);\r\n\t\t}\r\n\t};\r\n})(this);","/*!\n * Modernizr v2.8.3\n * www.modernizr.com\n *\n * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton\n * Available under the BSD and MIT licenses: www.modernizr.com/license/\n */\n\n/*\n * Modernizr tests which native CSS3 and HTML5 features are available in\n * the current UA and makes the results available to you in two ways:\n * as properties on a global Modernizr object, and as classes on the\n * element. This information allows you to progressively enhance\n * your pages with a granular level of control over the experience.\n *\n * Modernizr has an optional (not included) conditional resource loader\n * called Modernizr.load(), based on Yepnope.js (yepnopejs.com).\n * To get a build that includes Modernizr.load(), as well as choosing\n * which tests to include, go to www.modernizr.com/download/\n *\n * Authors Faruk Ates, Paul Irish, Alex Sexton\n * Contributors Ryan Seddon, Ben Alman\n */\n\nwindow.Modernizr = (function( window, document, undefined ) {\n\n var version = '2.8.3',\n\n Modernizr = {},\n\n /*>>cssclasses*/\n // option for enabling the HTML classes to be added\n enableClasses = true,\n /*>>cssclasses*/\n\n docElement = document.documentElement,\n\n /**\n * Create our \"modernizr\" element that we do most feature tests on.\n */\n mod = 'modernizr',\n modElem = document.createElement(mod),\n mStyle = modElem.style,\n\n /**\n * Create the input element for various Web Forms feature tests.\n */\n inputElem /*>>inputelem*/ = document.createElement('input') /*>>inputelem*/ ,\n\n /*>>smile*/\n smile = ':)',\n /*>>smile*/\n\n toString = {}.toString,\n\n // TODO :: make the prefixes more granular\n /*>>prefixes*/\n // List of property values to set for css tests. See ticket #21\n prefixes = ' -webkit- -moz- -o- -ms- '.split(' '),\n /*>>prefixes*/\n\n /*>>domprefixes*/\n // Following spec is to expose vendor-specific style properties as:\n // elem.style.WebkitBorderRadius\n // and the following would be incorrect:\n // elem.style.webkitBorderRadius\n\n // Webkit ghosts their properties in lowercase but Opera & Moz do not.\n // Microsoft uses a lowercase `ms` instead of the correct `Ms` in IE8+\n // erik.eae.net/archives/2008/03/10/21.48.10/\n\n // More here: github.com/Modernizr/Modernizr/issues/issue/21\n omPrefixes = 'Webkit Moz O ms',\n\n cssomPrefixes = omPrefixes.split(' '),\n\n domPrefixes = omPrefixes.toLowerCase().split(' '),\n /*>>domprefixes*/\n\n /*>>ns*/\n ns = {'svg': 'http://www.w3.org/2000/svg'},\n /*>>ns*/\n\n tests = {},\n inputs = {},\n attrs = {},\n\n classes = [],\n\n slice = classes.slice,\n\n featureName, // used in testing loop\n\n\n /*>>teststyles*/\n // Inject element with style element and some CSS rules\n injectElementWithStyles = function( rule, callback, nodes, testnames ) {\n\n var style, ret, node, docOverflow,\n div = document.createElement('div'),\n // After page load injecting a fake body doesn't work so check if body exists\n body = document.body,\n // IE6 and 7 won't return offsetWidth or offsetHeight unless it's in the body element, so we fake it.\n fakeBody = body || document.createElement('body');\n\n if ( parseInt(nodes, 10) ) {\n // In order not to give false positives we create a node for each test\n // This also allows the method to scale for unspecified uses\n while ( nodes-- ) {\n node = document.createElement('div');\n node.id = testnames ? testnames[nodes] : mod + (nodes + 1);\n div.appendChild(node);\n }\n }\n\n // '].join('');\n div.id = mod;\n // IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody.\n // Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270\n (body ? div : fakeBody).innerHTML += style;\n fakeBody.appendChild(div);\n if ( !body ) {\n //avoid crashing IE8, if background image is used\n fakeBody.style.background = '';\n //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\n fakeBody.style.overflow = 'hidden';\n docOverflow = docElement.style.overflow;\n docElement.style.overflow = 'hidden';\n docElement.appendChild(fakeBody);\n }\n\n ret = callback(div, rule);\n // If this is done after page load we don't want to remove the body so check if body exists\n if ( !body ) {\n fakeBody.parentNode.removeChild(fakeBody);\n docElement.style.overflow = docOverflow;\n } else {\n div.parentNode.removeChild(div);\n }\n\n return !!ret;\n\n },\n /*>>teststyles*/\n\n /*>>mq*/\n // adapted from matchMedia polyfill\n // by Scott Jehl and Paul Irish\n // gist.github.com/786768\n testMediaQuery = function( mq ) {\n\n var matchMedia = window.matchMedia || window.msMatchMedia;\n if ( matchMedia ) {\n return matchMedia(mq) && matchMedia(mq).matches || false;\n }\n\n var bool;\n\n injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function( node ) {\n bool = (window.getComputedStyle ?\n getComputedStyle(node, null) :\n node.currentStyle)['position'] == 'absolute';\n });\n\n return bool;\n\n },\n /*>>mq*/\n\n\n /*>>hasevent*/\n //\n // isEventSupported determines if a given element supports the given event\n // kangax.github.com/iseventsupported/\n //\n // The following results are known incorrects:\n // Modernizr.hasEvent(\"webkitTransitionEnd\", elem) // false negative\n // Modernizr.hasEvent(\"textInput\") // in Webkit. github.com/Modernizr/Modernizr/issues/333\n // ...\n isEventSupported = (function() {\n\n var TAGNAMES = {\n 'select': 'input', 'change': 'input',\n 'submit': 'form', 'reset': 'form',\n 'error': 'img', 'load': 'img', 'abort': 'img'\n };\n\n function isEventSupported( eventName, element ) {\n\n element = element || document.createElement(TAGNAMES[eventName] || 'div');\n eventName = 'on' + eventName;\n\n // When using `setAttribute`, IE skips \"unload\", WebKit skips \"unload\" and \"resize\", whereas `in` \"catches\" those\n var isSupported = eventName in element;\n\n if ( !isSupported ) {\n // If it has no `setAttribute` (i.e. doesn't implement Node interface), try generic element\n if ( !element.setAttribute ) {\n element = document.createElement('div');\n }\n if ( element.setAttribute && element.removeAttribute ) {\n element.setAttribute(eventName, '');\n isSupported = is(element[eventName], 'function');\n\n // If property was created, \"remove it\" (by setting value to `undefined`)\n if ( !is(element[eventName], 'undefined') ) {\n element[eventName] = undefined;\n }\n element.removeAttribute(eventName);\n }\n }\n\n element = null;\n return isSupported;\n }\n return isEventSupported;\n })(),\n /*>>hasevent*/\n\n // TODO :: Add flag for hasownprop ? didn't last time\n\n // hasOwnProperty shim by kangax needed for Safari 2.0 support\n _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp;\n\n if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) {\n hasOwnProp = function (object, property) {\n return _hasOwnProperty.call(object, property);\n };\n }\n else {\n hasOwnProp = function (object, property) { /* yes, this can give false positives/negatives, but most of the time we don't care about those */\n return ((property in object) && is(object.constructor.prototype[property], 'undefined'));\n };\n }\n\n // Adapted from ES5-shim https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js\n // es5.github.com/#x15.3.4.5\n\n if (!Function.prototype.bind) {\n Function.prototype.bind = function bind(that) {\n\n var target = this;\n\n if (typeof target != \"function\") {\n throw new TypeError();\n }\n\n var args = slice.call(arguments, 1),\n bound = function () {\n\n if (this instanceof bound) {\n\n var F = function(){};\n F.prototype = target.prototype;\n var self = new F();\n\n var result = target.apply(\n self,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return self;\n\n } else {\n\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n\n }\n\n };\n\n return bound;\n };\n }\n\n /**\n * setCss applies given styles to the Modernizr DOM node.\n */\n function setCss( str ) {\n mStyle.cssText = str;\n }\n\n /**\n * setCssAll extrapolates all vendor-specific css strings.\n */\n function setCssAll( str1, str2 ) {\n return setCss(prefixes.join(str1 + ';') + ( str2 || '' ));\n }\n\n /**\n * is returns a boolean for if typeof obj is exactly type.\n */\n function is( obj, type ) {\n return typeof obj === type;\n }\n\n /**\n * contains returns a boolean for if substr is found within str.\n */\n function contains( str, substr ) {\n return !!~('' + str).indexOf(substr);\n }\n\n /*>>testprop*/\n\n // testProps is a generic CSS / DOM property test.\n\n // In testing support for a given CSS property, it's legit to test:\n // `elem.style[styleName] !== undefined`\n // If the property is supported it will return an empty string,\n // if unsupported it will return undefined.\n\n // We'll take advantage of this quick test and skip setting a style\n // on our modernizr element, but instead just testing undefined vs\n // empty string.\n\n // Because the testing of the CSS property names (with \"-\", as\n // opposed to the camelCase DOM properties) is non-portable and\n // non-standard but works in WebKit and IE (but not Gecko or Opera),\n // we explicitly reject properties with dashes so that authors\n // developing in WebKit or IE first don't end up with\n // browser-specific content by accident.\n\n function testProps( props, prefixed ) {\n for ( var i in props ) {\n var prop = props[i];\n if ( !contains(prop, \"-\") && mStyle[prop] !== undefined ) {\n return prefixed == 'pfx' ? prop : true;\n }\n }\n return false;\n }\n /*>>testprop*/\n\n // TODO :: add testDOMProps\n /**\n * testDOMProps is a generic DOM property test; if a browser supports\n * a certain property, it won't return undefined for it.\n */\n function testDOMProps( props, obj, elem ) {\n for ( var i in props ) {\n var item = obj[props[i]];\n if ( item !== undefined) {\n\n // return the property name as a string\n if (elem === false) return props[i];\n\n // let's bind a function\n if (is(item, 'function')){\n // default to autobind unless override\n return item.bind(elem || obj);\n }\n\n // return the unbound function or obj or value\n return item;\n }\n }\n return false;\n }\n\n /*>>testallprops*/\n /**\n * testPropsAll tests a list of DOM properties we want to check against.\n * We specify literally ALL possible (known and/or likely) properties on\n * the element including the non-vendor prefixed one, for forward-\n * compatibility.\n */\n function testPropsAll( prop, prefixed, elem ) {\n\n var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),\n props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');\n\n // did they call .prefixed('boxSizing') or are we just testing a prop?\n if(is(prefixed, \"string\") || is(prefixed, \"undefined\")) {\n return testProps(props, prefixed);\n\n // otherwise, they called .prefixed('requestAnimationFrame', window[, elem])\n } else {\n props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');\n return testDOMProps(props, prefixed, elem);\n }\n }\n /*>>testallprops*/\n\n\n /**\n * Tests\n * -----\n */\n\n // The *new* flexbox\n // dev.w3.org/csswg/css3-flexbox\n\n tests['flexbox'] = function() {\n return testPropsAll('flexWrap');\n };\n\n // The *old* flexbox\n // www.w3.org/TR/2009/WD-css3-flexbox-20090723/\n\n tests['flexboxlegacy'] = function() {\n return testPropsAll('boxDirection');\n };\n\n // On the S60 and BB Storm, getContext exists, but always returns undefined\n // so we actually have to call getContext() to verify\n // github.com/Modernizr/Modernizr/issues/issue/97/\n\n tests['canvas'] = function() {\n var elem = document.createElement('canvas');\n return !!(elem.getContext && elem.getContext('2d'));\n };\n\n tests['canvastext'] = function() {\n return !!(Modernizr['canvas'] && is(document.createElement('canvas').getContext('2d').fillText, 'function'));\n };\n\n // webk.it/70117 is tracking a legit WebGL feature detect proposal\n\n // We do a soft detect which may false positive in order to avoid\n // an expensive context creation: bugzil.la/732441\n\n tests['webgl'] = function() {\n return !!window.WebGLRenderingContext;\n };\n\n /*\n * The Modernizr.touch test only indicates if the browser supports\n * touch events, which does not necessarily reflect a touchscreen\n * device, as evidenced by tablets running Windows 7 or, alas,\n * the Palm Pre / WebOS (touch) phones.\n *\n * Additionally, Chrome (desktop) used to lie about its support on this,\n * but that has since been rectified: crbug.com/36415\n *\n * We also test for Firefox 4 Multitouch Support.\n *\n * For more info, see: modernizr.github.com/Modernizr/touch.html\n */\n\n tests['touch'] = function() {\n var bool;\n\n if(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {\n bool = true;\n } else {\n injectElementWithStyles(['@media (',prefixes.join('touch-enabled),('),mod,')','{#modernizr{top:9px;position:absolute}}'].join(''), function( node ) {\n bool = node.offsetTop === 9;\n });\n }\n\n return bool;\n };\n\n\n // geolocation is often considered a trivial feature detect...\n // Turns out, it's quite tricky to get right:\n //\n // Using !!navigator.geolocation does two things we don't want. It:\n // 1. Leaks memory in IE9: github.com/Modernizr/Modernizr/issues/513\n // 2. Disables page caching in WebKit: webk.it/43956\n //\n // Meanwhile, in Firefox < 8, an about:config setting could expose\n // a false positive that would throw an exception: bugzil.la/688158\n\n tests['geolocation'] = function() {\n return 'geolocation' in navigator;\n };\n\n\n tests['postmessage'] = function() {\n return !!window.postMessage;\n };\n\n\n // Chrome incognito mode used to throw an exception when using openDatabase\n // It doesn't anymore.\n tests['websqldatabase'] = function() {\n return !!window.openDatabase;\n };\n\n // Vendors had inconsistent prefixing with the experimental Indexed DB:\n // - Webkit's implementation is accessible through webkitIndexedDB\n // - Firefox shipped moz_indexedDB before FF4b9, but since then has been mozIndexedDB\n // For speed, we don't test the legacy (and beta-only) indexedDB\n tests['indexedDB'] = function() {\n return !!testPropsAll(\"indexedDB\", window);\n };\n\n // documentMode logic from YUI to filter out IE8 Compat Mode\n // which false positives.\n tests['hashchange'] = function() {\n return isEventSupported('hashchange', window) && (document.documentMode === undefined || document.documentMode > 7);\n };\n\n // Per 1.6:\n // This used to be Modernizr.historymanagement but the longer\n // name has been deprecated in favor of a shorter and property-matching one.\n // The old API is still available in 1.6, but as of 2.0 will throw a warning,\n // and in the first release thereafter disappear entirely.\n tests['history'] = function() {\n return !!(window.history && history.pushState);\n };\n\n tests['draganddrop'] = function() {\n var div = document.createElement('div');\n return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div);\n };\n\n // FF3.6 was EOL'ed on 4/24/12, but the ESR version of FF10\n // will be supported until FF19 (2/12/13), at which time, ESR becomes FF17.\n // FF10 still uses prefixes, so check for it until then.\n // for more ESR info, see: mozilla.org/en-US/firefox/organizations/faq/\n tests['websockets'] = function() {\n return 'WebSocket' in window || 'MozWebSocket' in window;\n };\n\n\n // css-tricks.com/rgba-browser-support/\n tests['rgba'] = function() {\n // Set an rgba() color and check the returned value\n\n setCss('background-color:rgba(150,255,150,.5)');\n\n return contains(mStyle.backgroundColor, 'rgba');\n };\n\n tests['hsla'] = function() {\n // Same as rgba(), in fact, browsers re-map hsla() to rgba() internally,\n // except IE9 who retains it as hsla\n\n setCss('background-color:hsla(120,40%,100%,.5)');\n\n return contains(mStyle.backgroundColor, 'rgba') || contains(mStyle.backgroundColor, 'hsla');\n };\n\n tests['multiplebgs'] = function() {\n // Setting multiple images AND a color on the background shorthand property\n // and then querying the style.background property value for the number of\n // occurrences of \"url(\" is a reliable method for detecting ACTUAL support for this!\n\n setCss('background:url(https://),url(https://),red url(https://)');\n\n // If the UA supports multiple backgrounds, there should be three occurrences\n // of the string \"url(\" in the return value for elemStyle.background\n\n return (/(url\\s*\\(.*?){3}/).test(mStyle.background);\n };\n\n\n\n // this will false positive in Opera Mini\n // github.com/Modernizr/Modernizr/issues/396\n\n tests['backgroundsize'] = function() {\n return testPropsAll('backgroundSize');\n };\n\n tests['borderimage'] = function() {\n return testPropsAll('borderImage');\n };\n\n\n // Super comprehensive table about all the unique implementations of\n // border-radius: muddledramblings.com/table-of-css3-border-radius-compliance\n\n tests['borderradius'] = function() {\n return testPropsAll('borderRadius');\n };\n\n // WebOS unfortunately false positives on this test.\n tests['boxshadow'] = function() {\n return testPropsAll('boxShadow');\n };\n\n // FF3.0 will false positive on this test\n tests['textshadow'] = function() {\n return document.createElement('div').style.textShadow === '';\n };\n\n\n tests['opacity'] = function() {\n // Browsers that actually have CSS Opacity implemented have done so\n // according to spec, which means their return values are within the\n // range of [0.0,1.0] - including the leading zero.\n\n setCssAll('opacity:.55');\n\n // The non-literal . in this regex is intentional:\n // German Chrome returns this value as 0,55\n // github.com/Modernizr/Modernizr/issues/#issue/59/comment/516632\n return (/^0.55$/).test(mStyle.opacity);\n };\n\n\n // Note, Android < 4 will pass this test, but can only animate\n // a single property at a time\n // goo.gl/v3V4Gp\n tests['cssanimations'] = function() {\n return testPropsAll('animationName');\n };\n\n\n tests['csscolumns'] = function() {\n return testPropsAll('columnCount');\n };\n\n\n tests['cssgradients'] = function() {\n /**\n * For CSS Gradients syntax, please see:\n * webkit.org/blog/175/introducing-css-gradients/\n * developer.mozilla.org/en/CSS/-moz-linear-gradient\n * developer.mozilla.org/en/CSS/-moz-radial-gradient\n * dev.w3.org/csswg/css3-images/#gradients-\n */\n\n var str1 = 'background-image:',\n str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));',\n str3 = 'linear-gradient(left top,#9f9, white);';\n\n setCss(\n // legacy webkit syntax (FIXME: remove when syntax not in use anymore)\n (str1 + '-webkit- '.split(' ').join(str2 + str1) +\n // standard syntax // trailing 'background-image:'\n prefixes.join(str3 + str1)).slice(0, -str1.length)\n );\n\n return contains(mStyle.backgroundImage, 'gradient');\n };\n\n\n tests['cssreflections'] = function() {\n return testPropsAll('boxReflect');\n };\n\n\n tests['csstransforms'] = function() {\n return !!testPropsAll('transform');\n };\n\n\n tests['csstransforms3d'] = function() {\n\n var ret = !!testPropsAll('perspective');\n\n // Webkit's 3D transforms are passed off to the browser's own graphics renderer.\n // It works fine in Safari on Leopard and Snow Leopard, but not in Chrome in\n // some conditions. As a result, Webkit typically recognizes the syntax but\n // will sometimes throw a false positive, thus we must do a more thorough check:\n if ( ret && 'webkitPerspective' in docElement.style ) {\n\n // Webkit allows this media query to succeed only if the feature is enabled.\n // `@media (transform-3d),(-webkit-transform-3d){ ... }`\n injectElementWithStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}', function( node, rule ) {\n ret = node.offsetLeft === 9 && node.offsetHeight === 3;\n });\n }\n return ret;\n };\n\n\n tests['csstransitions'] = function() {\n return testPropsAll('transition');\n };\n\n\n /*>>fontface*/\n // @font-face detection routine by Diego Perini\n // javascript.nwbox.com/CSSSupport/\n\n // false positives:\n // WebOS github.com/Modernizr/Modernizr/issues/342\n // WP7 github.com/Modernizr/Modernizr/issues/538\n tests['fontface'] = function() {\n var bool;\n\n injectElementWithStyles('@font-face {font-family:\"font\";src:url(\"https://\")}', function( node, rule ) {\n var style = document.getElementById('smodernizr'),\n sheet = style.sheet || style.styleSheet,\n cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : '';\n\n bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0;\n });\n\n return bool;\n };\n /*>>fontface*/\n\n // CSS generated content detection\n tests['generatedcontent'] = function() {\n var bool;\n\n injectElementWithStyles(['#',mod,'{font:0/0 a}#',mod,':after{content:\"',smile,'\";visibility:hidden;font:3px/1 a}'].join(''), function( node ) {\n bool = node.offsetHeight >= 3;\n });\n\n return bool;\n };\n\n\n\n // These tests evaluate support of the video/audio elements, as well as\n // testing what types of content they support.\n //\n // We're using the Boolean constructor here, so that we can extend the value\n // e.g. Modernizr.video // true\n // Modernizr.video.ogg // 'probably'\n //\n // Codec values from : github.com/NielsLeenheer/html5test/blob/9106a8/index.html#L845\n // thx to NielsLeenheer and zcorpan\n\n // Note: in some older browsers, \"no\" was a return value instead of empty string.\n // It was live in FF3.5.0 and 3.5.1, but fixed in 3.5.2\n // It was also live in Safari 4.0.0 - 4.0.4, but fixed in 4.0.5\n\n tests['video'] = function() {\n var elem = document.createElement('video'),\n bool = false;\n\n // IE9 Running on Windows Server SKU can cause an exception to be thrown, bug #224\n try {\n if ( bool = !!elem.canPlayType ) {\n bool = new Boolean(bool);\n bool.ogg = elem.canPlayType('video/ogg; codecs=\"theora\"') .replace(/^no$/,'');\n\n // Without QuickTime, this value will be `undefined`. github.com/Modernizr/Modernizr/issues/546\n bool.h264 = elem.canPlayType('video/mp4; codecs=\"avc1.42E01E\"') .replace(/^no$/,'');\n\n bool.webm = elem.canPlayType('video/webm; codecs=\"vp8, vorbis\"').replace(/^no$/,'');\n }\n\n } catch(e) { }\n\n return bool;\n };\n\n tests['audio'] = function() {\n var elem = document.createElement('audio'),\n bool = false;\n\n try {\n if ( bool = !!elem.canPlayType ) {\n bool = new Boolean(bool);\n bool.ogg = elem.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/,'');\n bool.mp3 = elem.canPlayType('audio/mpeg;') .replace(/^no$/,'');\n\n // Mimetypes accepted:\n // developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements\n // bit.ly/iphoneoscodecs\n bool.wav = elem.canPlayType('audio/wav; codecs=\"1\"') .replace(/^no$/,'');\n bool.m4a = ( elem.canPlayType('audio/x-m4a;') ||\n elem.canPlayType('audio/aac;')) .replace(/^no$/,'');\n }\n } catch(e) { }\n\n return bool;\n };\n\n\n // In FF4, if disabled, window.localStorage should === null.\n\n // Normally, we could not test that directly and need to do a\n // `('localStorage' in window) && ` test first because otherwise Firefox will\n // throw bugzil.la/365772 if cookies are disabled\n\n // Also in iOS5 Private Browsing mode, attempting to use localStorage.setItem\n // will throw the exception:\n // QUOTA_EXCEEDED_ERRROR DOM Exception 22.\n // Peculiarly, getItem and removeItem calls do not throw.\n\n // Because we are forced to try/catch this, we'll go aggressive.\n\n // Just FWIW: IE8 Compat mode supports these features completely:\n // www.quirksmode.org/dom/html5.html\n // But IE8 doesn't support either with local files\n\n tests['localstorage'] = function() {\n try {\n localStorage.setItem(mod, mod);\n localStorage.removeItem(mod);\n return true;\n } catch(e) {\n return false;\n }\n };\n\n tests['sessionstorage'] = function() {\n try {\n sessionStorage.setItem(mod, mod);\n sessionStorage.removeItem(mod);\n return true;\n } catch(e) {\n return false;\n }\n };\n\n\n tests['webworkers'] = function() {\n return !!window.Worker;\n };\n\n\n tests['applicationcache'] = function() {\n return !!window.applicationCache;\n };\n\n\n // Thanks to Erik Dahlstrom\n tests['svg'] = function() {\n return !!document.createElementNS && !!document.createElementNS(ns.svg, 'svg').createSVGRect;\n };\n\n // specifically for SVG inline in HTML, not within XHTML\n // test page: paulirish.com/demo/inline-svg\n tests['inlinesvg'] = function() {\n var div = document.createElement('div');\n div.innerHTML = '';\n return (div.firstChild && div.firstChild.namespaceURI) == ns.svg;\n };\n\n // SVG SMIL animation\n tests['smil'] = function() {\n return !!document.createElementNS && /SVGAnimate/.test(toString.call(document.createElementNS(ns.svg, 'animate')));\n };\n\n // This test is only for clip paths in SVG proper, not clip paths on HTML content\n // demo: srufaculty.sru.edu/david.dailey/svg/newstuff/clipPath4.svg\n\n // However read the comments to dig into applying SVG clippaths to HTML content here:\n // github.com/Modernizr/Modernizr/issues/213#issuecomment-1149491\n tests['svgclippaths'] = function() {\n return !!document.createElementNS && /SVGClipPath/.test(toString.call(document.createElementNS(ns.svg, 'clipPath')));\n };\n\n /*>>webforms*/\n // input features and input types go directly onto the ret object, bypassing the tests loop.\n // Hold this guy to execute in a moment.\n function webforms() {\n /*>>input*/\n // Run through HTML5's new input attributes to see if the UA understands any.\n // We're using f which is the element created early on\n // Mike Taylr has created a comprehensive resource for testing these attributes\n // when applied to all input types:\n // miketaylr.com/code/input-type-attr.html\n // spec: www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n\n // Only input placeholder is tested while textarea's placeholder is not.\n // Currently Safari 4 and Opera 11 have support only for the input placeholder\n // Both tests are available in feature-detects/forms-placeholder.js\n Modernizr['input'] = (function( props ) {\n for ( var i = 0, len = props.length; i < len; i++ ) {\n attrs[ props[i] ] = !!(props[i] in inputElem);\n }\n if (attrs.list){\n // safari false positive's on datalist: webk.it/74252\n // see also github.com/Modernizr/Modernizr/issues/146\n attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement);\n }\n return attrs;\n })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));\n /*>>input*/\n\n /*>>inputtypes*/\n // Run through HTML5's new input types to see if the UA understands any.\n // This is put behind the tests runloop because it doesn't return a\n // true/false like all the other tests; instead, it returns an object\n // containing each input type with its corresponding true/false value\n\n // Big thanks to @miketaylr for the html5 forms expertise. miketaylr.com/\n Modernizr['inputtypes'] = (function(props) {\n\n for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) {\n\n inputElem.setAttribute('type', inputElemType = props[i]);\n bool = inputElem.type !== 'text';\n\n // We first check to see if the type we give it sticks..\n // If the type does, we feed it a textual value, which shouldn't be valid.\n // If the value doesn't stick, we know there's input sanitization which infers a custom UI\n if ( bool ) {\n\n inputElem.value = smile;\n inputElem.style.cssText = 'position:absolute;visibility:hidden;';\n\n if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) {\n\n docElement.appendChild(inputElem);\n defaultView = document.defaultView;\n\n // Safari 2-4 allows the smiley as a value, despite making a slider\n bool = defaultView.getComputedStyle &&\n defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&\n // Mobile android web browser has false positive, so must\n // check the height to see if the widget is actually there.\n (inputElem.offsetHeight !== 0);\n\n docElement.removeChild(inputElem);\n\n } else if ( /^(search|tel)$/.test(inputElemType) ){\n // Spec doesn't define any special parsing or detectable UI\n // behaviors so we pass these through as true\n\n // Interestingly, opera fails the earlier test, so it doesn't\n // even make it here.\n\n } else if ( /^(url|email)$/.test(inputElemType) ) {\n // Real url and email support comes with prebaked validation.\n bool = inputElem.checkValidity && inputElem.checkValidity() === false;\n\n } else {\n // If the upgraded input compontent rejects the :) text, we got a winner\n bool = inputElem.value != smile;\n }\n }\n\n inputs[ props[i] ] = !!bool;\n }\n return inputs;\n })('search tel url email datetime date month week time datetime-local number range color'.split(' '));\n /*>>inputtypes*/\n }\n /*>>webforms*/\n\n\n // End of test definitions\n // -----------------------\n\n\n\n // Run through all tests and detect their support in the current UA.\n // todo: hypothetically we could be doing an array of tests and use a basic loop here.\n for ( var feature in tests ) {\n if ( hasOwnProp(tests, feature) ) {\n // run the test, throw the return value into the Modernizr,\n // then based on that boolean, define an appropriate className\n // and push it into an array of classes we'll join later.\n featureName = feature.toLowerCase();\n Modernizr[featureName] = tests[feature]();\n\n classes.push((Modernizr[featureName] ? '' : 'no-') + featureName);\n }\n }\n\n /*>>webforms*/\n // input tests need to run.\n Modernizr.input || webforms();\n /*>>webforms*/\n\n\n /**\n * addTest allows the user to define their own feature tests\n * the result will be added onto the Modernizr object,\n * as well as an appropriate className set on the html element\n *\n * @param feature - String naming the feature\n * @param test - Function returning true if feature is supported, false if not\n */\n Modernizr.addTest = function ( feature, test ) {\n if ( typeof feature == 'object' ) {\n for ( var key in feature ) {\n if ( hasOwnProp( feature, key ) ) {\n Modernizr.addTest( key, feature[ key ] );\n }\n }\n } else {\n\n feature = feature.toLowerCase();\n\n if ( Modernizr[feature] !== undefined ) {\n // we're going to quit if you're trying to overwrite an existing test\n // if we were to allow it, we'd do this:\n // var re = new RegExp(\"\\\\b(no-)?\" + feature + \"\\\\b\");\n // docElement.className = docElement.className.replace( re, '' );\n // but, no rly, stuff 'em.\n return Modernizr;\n }\n\n test = typeof test == 'function' ? test() : test;\n\n if (typeof enableClasses !== \"undefined\" && enableClasses) {\n docElement.className += ' ' + (test ? '' : 'no-') + feature;\n }\n Modernizr[feature] = test;\n\n }\n\n return Modernizr; // allow chaining.\n };\n\n\n // Reset modElem.cssText to nothing to reduce memory footprint.\n setCss('');\n modElem = inputElem = null;\n\n /*>>shiv*/\n /**\n * @preserve HTML5 Shiv prev3.7.1 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed\n */\n ;(function(window, document) {\n /*jshint evil:true */\n /** version */\n var version = '3.7.0';\n\n /** Preset options */\n var options = window.html5 || {};\n\n /** Used to skip problem elements */\n var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;\n\n /** Not all elements can be cloned in IE **/\n var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;\n\n /** Detect whether the browser supports default html5 styles */\n var supportsHtml5Styles;\n\n /** Name of the expando, to work with multiple documents or to re-shiv one document */\n var expando = '_html5shiv';\n\n /** The id for the the documents expando */\n var expanID = 0;\n\n /** Cached data for each document */\n var expandoData = {};\n\n /** Detect whether the browser supports unknown elements */\n var supportsUnknownElements;\n\n (function() {\n try {\n var a = document.createElement('a');\n a.innerHTML = '';\n //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles\n supportsHtml5Styles = ('hidden' in a);\n\n supportsUnknownElements = a.childNodes.length == 1 || (function() {\n // assign a false positive if unable to shiv\n (document.createElement)('a');\n var frag = document.createDocumentFragment();\n return (\n typeof frag.cloneNode == 'undefined' ||\n typeof frag.createDocumentFragment == 'undefined' ||\n typeof frag.createElement == 'undefined'\n );\n }());\n } catch(e) {\n // assign a false positive if detection fails => unable to shiv\n supportsHtml5Styles = true;\n supportsUnknownElements = true;\n }\n\n }());\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Creates a style sheet with the given CSS text and adds it to the document.\n * @private\n * @param {Document} ownerDocument The document.\n * @param {String} cssText The CSS text.\n * @returns {StyleSheet} The style element.\n */\n function addStyleSheet(ownerDocument, cssText) {\n var p = ownerDocument.createElement('p'),\n parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;\n\n p.innerHTML = 'x';\n return parent.insertBefore(p.lastChild, parent.firstChild);\n }\n\n /**\n * Returns the value of `html5.elements` as an array.\n * @private\n * @returns {Array} An array of shived element node names.\n */\n function getElements() {\n var elements = html5.elements;\n return typeof elements == 'string' ? elements.split(' ') : elements;\n }\n\n /**\n * Returns the data associated to the given document\n * @private\n * @param {Document} ownerDocument The document.\n * @returns {Object} An object of data.\n */\n function getExpandoData(ownerDocument) {\n var data = expandoData[ownerDocument[expando]];\n if (!data) {\n data = {};\n expanID++;\n ownerDocument[expando] = expanID;\n expandoData[expanID] = data;\n }\n return data;\n }\n\n /**\n * returns a shived element for the given nodeName and document\n * @memberOf html5\n * @param {String} nodeName name of the element\n * @param {Document} ownerDocument The context document.\n * @returns {Object} The shived element.\n */\n function createElement(nodeName, ownerDocument, data){\n if (!ownerDocument) {\n ownerDocument = document;\n }\n if(supportsUnknownElements){\n return ownerDocument.createElement(nodeName);\n }\n if (!data) {\n data = getExpandoData(ownerDocument);\n }\n var node;\n\n if (data.cache[nodeName]) {\n node = data.cache[nodeName].cloneNode();\n } else if (saveClones.test(nodeName)) {\n node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();\n } else {\n node = data.createElem(nodeName);\n }\n\n // Avoid adding some elements to fragments in IE < 9 because\n // * Attributes like `name` or `type` cannot be set/changed once an element\n // is inserted into a document/fragment\n // * Link elements with `src` attributes that are inaccessible, as with\n // a 403 response, will cause the tab/window to crash\n // * Script elements appended to fragments will execute when their `src`\n // or `text` property is set\n return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;\n }\n\n /**\n * returns a shived DocumentFragment for the given document\n * @memberOf html5\n * @param {Document} ownerDocument The context document.\n * @returns {Object} The shived DocumentFragment.\n */\n function createDocumentFragment(ownerDocument, data){\n if (!ownerDocument) {\n ownerDocument = document;\n }\n if(supportsUnknownElements){\n return ownerDocument.createDocumentFragment();\n }\n data = data || getExpandoData(ownerDocument);\n var clone = data.frag.cloneNode(),\n i = 0,\n elems = getElements(),\n l = elems.length;\n for(;i>shiv*/\n\n // Assign private properties to the return object with prefix\n Modernizr._version = version;\n\n // expose these for the plugin API. Look in the source for how to join() them against your input\n /*>>prefixes*/\n Modernizr._prefixes = prefixes;\n /*>>prefixes*/\n /*>>domprefixes*/\n Modernizr._domPrefixes = domPrefixes;\n Modernizr._cssomPrefixes = cssomPrefixes;\n /*>>domprefixes*/\n\n /*>>mq*/\n // Modernizr.mq tests a given media query, live against the current state of the window\n // A few important notes:\n // * If a browser does not support media queries at all (eg. oldIE) the mq() will always return false\n // * A max-width or orientation query will be evaluated against the current state, which may change later.\n // * You must specify values. Eg. If you are testing support for the min-width media query use:\n // Modernizr.mq('(min-width:0)')\n // usage:\n // Modernizr.mq('only screen and (max-width:768)')\n Modernizr.mq = testMediaQuery;\n /*>>mq*/\n\n /*>>hasevent*/\n // Modernizr.hasEvent() detects support for a given event, with an optional element to test on\n // Modernizr.hasEvent('gesturestart', elem)\n Modernizr.hasEvent = isEventSupported;\n /*>>hasevent*/\n\n /*>>testprop*/\n // Modernizr.testProp() investigates whether a given style property is recognized\n // Note that the property names must be provided in the camelCase variant.\n // Modernizr.testProp('pointerEvents')\n Modernizr.testProp = function(prop){\n return testProps([prop]);\n };\n /*>>testprop*/\n\n /*>>testallprops*/\n // Modernizr.testAllProps() investigates whether a given style property,\n // or any of its vendor-prefixed variants, is recognized\n // Note that the property names must be provided in the camelCase variant.\n // Modernizr.testAllProps('boxSizing')\n Modernizr.testAllProps = testPropsAll;\n /*>>testallprops*/\n\n\n /*>>teststyles*/\n // Modernizr.testStyles() allows you to add custom styles to the document and test an element afterwards\n // Modernizr.testStyles('#modernizr { position:absolute }', function(elem, rule){ ... })\n Modernizr.testStyles = injectElementWithStyles;\n /*>>teststyles*/\n\n\n /*>>prefixed*/\n // Modernizr.prefixed() returns the prefixed or nonprefixed property name variant of your input\n // Modernizr.prefixed('boxSizing') // 'MozBoxSizing'\n\n // Properties must be passed as dom-style camelcase, rather than `box-sizing` hypentated style.\n // Return values will also be the camelCase variant, if you need to translate that to hypenated style use:\n //\n // str.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-');\n\n // If you're trying to ascertain which transition end event to bind to, you might do something like...\n //\n // var transEndEventNames = {\n // 'WebkitTransition' : 'webkitTransitionEnd',\n // 'MozTransition' : 'transitionend',\n // 'OTransition' : 'oTransitionEnd',\n // 'msTransition' : 'MSTransitionEnd',\n // 'transition' : 'transitionend'\n // },\n // transEndEventName = transEndEventNames[ Modernizr.prefixed('transition') ];\n\n Modernizr.prefixed = function(prop, obj, elem){\n if(!obj) {\n return testPropsAll(prop, 'pfx');\n } else {\n // Testing DOM property e.g. Modernizr.prefixed('requestAnimationFrame', window) // 'mozRequestAnimationFrame'\n return testPropsAll(prop, obj, elem);\n }\n };\n /*>>prefixed*/\n\n\n /*>>cssclasses*/\n // Remove \"no-js\" class from element, if it exists:\n docElement.className = docElement.className.replace(/(^|\\s)no-js(\\s|$)/, '$1$2') +\n\n // Add the new classes to the element.\n (enableClasses ? ' js ' + classes.join(' ') : '');\n /*>>cssclasses*/\n\n return Modernizr;\n\n})(this, this.document);\n","/*!\nWaypoints - 4.0.0\nCopyright © 2011-2015 Caleb Troughton\nLicensed under the MIT license.\nhttps://github.com/imakewebthings/waypoints/blob/master/licenses.txt\n*/\n(function() {\n 'use strict'\n\n var keyCounter = 0\n var allWaypoints = {}\n\n /* http://imakewebthings.com/waypoints/api/waypoint */\n function Waypoint(options) {\n if (!options) {\n throw new Error('No options passed to Waypoint constructor')\n }\n if (!options.element) {\n throw new Error('No element option passed to Waypoint constructor')\n }\n if (!options.handler) {\n throw new Error('No handler option passed to Waypoint constructor')\n }\n\n this.key = 'waypoint-' + keyCounter\n this.options = Waypoint.Adapter.extend({}, Waypoint.defaults, options)\n this.element = this.options.element\n this.adapter = new Waypoint.Adapter(this.element)\n this.callback = options.handler\n this.axis = this.options.horizontal ? 'horizontal' : 'vertical'\n this.enabled = this.options.enabled\n this.triggerPoint = null\n this.group = Waypoint.Group.findOrCreate({\n name: this.options.group,\n axis: this.axis\n })\n this.context = Waypoint.Context.findOrCreateByElement(this.options.context)\n\n if (Waypoint.offsetAliases[this.options.offset]) {\n this.options.offset = Waypoint.offsetAliases[this.options.offset]\n }\n this.group.add(this)\n this.context.add(this)\n allWaypoints[this.key] = this\n keyCounter += 1\n }\n\n /* Private */\n Waypoint.prototype.queueTrigger = function(direction) {\n this.group.queueTrigger(this, direction)\n }\n\n /* Private */\n Waypoint.prototype.trigger = function(args) {\n if (!this.enabled) {\n return\n }\n if (this.callback) {\n this.callback.apply(this, args)\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/destroy */\n Waypoint.prototype.destroy = function() {\n this.context.remove(this)\n this.group.remove(this)\n delete allWaypoints[this.key]\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/disable */\n Waypoint.prototype.disable = function() {\n this.enabled = false\n return this\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/enable */\n Waypoint.prototype.enable = function() {\n this.context.refresh()\n this.enabled = true\n return this\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/next */\n Waypoint.prototype.next = function() {\n return this.group.next(this)\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/previous */\n Waypoint.prototype.previous = function() {\n return this.group.previous(this)\n }\n\n /* Private */\n Waypoint.invokeAll = function(method) {\n var allWaypointsArray = []\n for (var waypointKey in allWaypoints) {\n allWaypointsArray.push(allWaypoints[waypointKey])\n }\n for (var i = 0, end = allWaypointsArray.length; i < end; i++) {\n allWaypointsArray[i][method]()\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/destroy-all */\n Waypoint.destroyAll = function() {\n Waypoint.invokeAll('destroy')\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/disable-all */\n Waypoint.disableAll = function() {\n Waypoint.invokeAll('disable')\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/enable-all */\n Waypoint.enableAll = function() {\n Waypoint.invokeAll('enable')\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/refresh-all */\n Waypoint.refreshAll = function() {\n Waypoint.Context.refreshAll()\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/viewport-height */\n Waypoint.viewportHeight = function() {\n return window.innerHeight || document.documentElement.clientHeight\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/viewport-width */\n Waypoint.viewportWidth = function() {\n return document.documentElement.clientWidth\n }\n\n Waypoint.adapters = []\n\n Waypoint.defaults = {\n context: window,\n continuous: true,\n enabled: true,\n group: 'default',\n horizontal: false,\n offset: 0\n }\n\n Waypoint.offsetAliases = {\n 'bottom-in-view': function() {\n return this.context.innerHeight() - this.adapter.outerHeight()\n },\n 'right-in-view': function() {\n return this.context.innerWidth() - this.adapter.outerWidth()\n }\n }\n\n window.Waypoint = Waypoint\n}())\n;(function() {\n 'use strict'\n\n function requestAnimationFrameShim(callback) {\n window.setTimeout(callback, 1000 / 60)\n }\n\n var keyCounter = 0\n var contexts = {}\n var Waypoint = window.Waypoint\n var oldWindowLoad = window.onload\n\n /* http://imakewebthings.com/waypoints/api/context */\n function Context(element) {\n this.element = element\n this.Adapter = Waypoint.Adapter\n this.adapter = new this.Adapter(element)\n this.key = 'waypoint-context-' + keyCounter\n this.didScroll = false\n this.didResize = false\n this.oldScroll = {\n x: this.adapter.scrollLeft(),\n y: this.adapter.scrollTop()\n }\n this.waypoints = {\n vertical: {},\n horizontal: {}\n }\n\n element.waypointContextKey = this.key\n contexts[element.waypointContextKey] = this\n keyCounter += 1\n\n this.createThrottledScrollHandler()\n this.createThrottledResizeHandler()\n }\n\n /* Private */\n Context.prototype.add = function(waypoint) {\n var axis = waypoint.options.horizontal ? 'horizontal' : 'vertical'\n this.waypoints[axis][waypoint.key] = waypoint\n this.refresh()\n }\n\n /* Private */\n Context.prototype.checkEmpty = function() {\n var horizontalEmpty = this.Adapter.isEmptyObject(this.waypoints.horizontal)\n var verticalEmpty = this.Adapter.isEmptyObject(this.waypoints.vertical)\n if (horizontalEmpty && verticalEmpty) {\n this.adapter.off('.waypoints')\n delete contexts[this.key]\n }\n }\n\n /* Private */\n Context.prototype.createThrottledResizeHandler = function() {\n var self = this\n\n function resizeHandler() {\n self.handleResize()\n self.didResize = false\n }\n\n this.adapter.on('resize.waypoints', function() {\n if (!self.didResize) {\n self.didResize = true\n Waypoint.requestAnimationFrame(resizeHandler)\n }\n })\n }\n\n /* Private */\n Context.prototype.createThrottledScrollHandler = function() {\n var self = this\n function scrollHandler() {\n self.handleScroll()\n self.didScroll = false\n }\n\n this.adapter.on('scroll.waypoints', function() {\n if (!self.didScroll || Waypoint.isTouch) {\n self.didScroll = true\n Waypoint.requestAnimationFrame(scrollHandler)\n }\n })\n }\n\n /* Private */\n Context.prototype.handleResize = function() {\n Waypoint.Context.refreshAll()\n }\n\n /* Private */\n Context.prototype.handleScroll = function() {\n var triggeredGroups = {}\n var axes = {\n horizontal: {\n newScroll: this.adapter.scrollLeft(),\n oldScroll: this.oldScroll.x,\n forward: 'right',\n backward: 'left'\n },\n vertical: {\n newScroll: this.adapter.scrollTop(),\n oldScroll: this.oldScroll.y,\n forward: 'down',\n backward: 'up'\n }\n }\n\n for (var axisKey in axes) {\n var axis = axes[axisKey]\n var isForward = axis.newScroll > axis.oldScroll\n var direction = isForward ? axis.forward : axis.backward\n\n for (var waypointKey in this.waypoints[axisKey]) {\n var waypoint = this.waypoints[axisKey][waypointKey]\n var wasBeforeTriggerPoint = axis.oldScroll < waypoint.triggerPoint\n var nowAfterTriggerPoint = axis.newScroll >= waypoint.triggerPoint\n var crossedForward = wasBeforeTriggerPoint && nowAfterTriggerPoint\n var crossedBackward = !wasBeforeTriggerPoint && !nowAfterTriggerPoint\n if (crossedForward || crossedBackward) {\n waypoint.queueTrigger(direction)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n }\n }\n\n for (var groupKey in triggeredGroups) {\n triggeredGroups[groupKey].flushTriggers()\n }\n\n this.oldScroll = {\n x: axes.horizontal.newScroll,\n y: axes.vertical.newScroll\n }\n }\n\n /* Private */\n Context.prototype.innerHeight = function() {\n /*eslint-disable eqeqeq */\n if (this.element == this.element.window) {\n return Waypoint.viewportHeight()\n }\n /*eslint-enable eqeqeq */\n return this.adapter.innerHeight()\n }\n\n /* Private */\n Context.prototype.remove = function(waypoint) {\n delete this.waypoints[waypoint.axis][waypoint.key]\n this.checkEmpty()\n }\n\n /* Private */\n Context.prototype.innerWidth = function() {\n /*eslint-disable eqeqeq */\n if (this.element == this.element.window) {\n return Waypoint.viewportWidth()\n }\n /*eslint-enable eqeqeq */\n return this.adapter.innerWidth()\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/context-destroy */\n Context.prototype.destroy = function() {\n var allWaypoints = []\n for (var axis in this.waypoints) {\n for (var waypointKey in this.waypoints[axis]) {\n allWaypoints.push(this.waypoints[axis][waypointKey])\n }\n }\n for (var i = 0, end = allWaypoints.length; i < end; i++) {\n allWaypoints[i].destroy()\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/context-refresh */\n Context.prototype.refresh = function() {\n /*eslint-disable eqeqeq */\n var isWindow = this.element == this.element.window\n /*eslint-enable eqeqeq */\n var contextOffset = isWindow ? undefined : this.adapter.offset()\n var triggeredGroups = {}\n var axes\n\n this.handleScroll()\n axes = {\n horizontal: {\n contextOffset: isWindow ? 0 : contextOffset.left,\n contextScroll: isWindow ? 0 : this.oldScroll.x,\n contextDimension: this.innerWidth(),\n oldScroll: this.oldScroll.x,\n forward: 'right',\n backward: 'left',\n offsetProp: 'left'\n },\n vertical: {\n contextOffset: isWindow ? 0 : contextOffset.top,\n contextScroll: isWindow ? 0 : this.oldScroll.y,\n contextDimension: this.innerHeight(),\n oldScroll: this.oldScroll.y,\n forward: 'down',\n backward: 'up',\n offsetProp: 'top'\n }\n }\n\n for (var axisKey in axes) {\n var axis = axes[axisKey]\n for (var waypointKey in this.waypoints[axisKey]) {\n var waypoint = this.waypoints[axisKey][waypointKey]\n var adjustment = waypoint.options.offset\n var oldTriggerPoint = waypoint.triggerPoint\n var elementOffset = 0\n var freshWaypoint = oldTriggerPoint == null\n var contextModifier, wasBeforeScroll, nowAfterScroll\n var triggeredBackward, triggeredForward\n\n if (waypoint.element !== waypoint.element.window) {\n elementOffset = waypoint.adapter.offset()[axis.offsetProp]\n }\n\n if (typeof adjustment === 'function') {\n adjustment = adjustment.apply(waypoint)\n }\n else if (typeof adjustment === 'string') {\n adjustment = parseFloat(adjustment)\n if (waypoint.options.offset.indexOf('%') > - 1) {\n adjustment = Math.ceil(axis.contextDimension * adjustment / 100)\n }\n }\n\n contextModifier = axis.contextScroll - axis.contextOffset\n waypoint.triggerPoint = elementOffset + contextModifier - adjustment\n wasBeforeScroll = oldTriggerPoint < axis.oldScroll\n nowAfterScroll = waypoint.triggerPoint >= axis.oldScroll\n triggeredBackward = wasBeforeScroll && nowAfterScroll\n triggeredForward = !wasBeforeScroll && !nowAfterScroll\n\n if (!freshWaypoint && triggeredBackward) {\n waypoint.queueTrigger(axis.backward)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n else if (!freshWaypoint && triggeredForward) {\n waypoint.queueTrigger(axis.forward)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n else if (freshWaypoint && axis.oldScroll >= waypoint.triggerPoint) {\n waypoint.queueTrigger(axis.forward)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n }\n }\n\n Waypoint.requestAnimationFrame(function() {\n for (var groupKey in triggeredGroups) {\n triggeredGroups[groupKey].flushTriggers()\n }\n })\n\n return this\n }\n\n /* Private */\n Context.findOrCreateByElement = function(element) {\n return Context.findByElement(element) || new Context(element)\n }\n\n /* Private */\n Context.refreshAll = function() {\n for (var contextId in contexts) {\n contexts[contextId].refresh()\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/context-find-by-element */\n Context.findByElement = function(element) {\n return contexts[element.waypointContextKey]\n }\n\n window.onload = function() {\n if (oldWindowLoad) {\n oldWindowLoad()\n }\n Context.refreshAll()\n }\n\n Waypoint.requestAnimationFrame = function(callback) {\n var requestFn = window.requestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n requestAnimationFrameShim\n requestFn.call(window, callback)\n }\n Waypoint.Context = Context\n}())\n;(function() {\n 'use strict'\n\n function byTriggerPoint(a, b) {\n return a.triggerPoint - b.triggerPoint\n }\n\n function byReverseTriggerPoint(a, b) {\n return b.triggerPoint - a.triggerPoint\n }\n\n var groups = {\n vertical: {},\n horizontal: {}\n }\n var Waypoint = window.Waypoint\n\n /* http://imakewebthings.com/waypoints/api/group */\n function Group(options) {\n this.name = options.name\n this.axis = options.axis\n this.id = this.name + '-' + this.axis\n this.waypoints = []\n this.clearTriggerQueues()\n groups[this.axis][this.name] = this\n }\n\n /* Private */\n Group.prototype.add = function(waypoint) {\n this.waypoints.push(waypoint)\n }\n\n /* Private */\n Group.prototype.clearTriggerQueues = function() {\n this.triggerQueues = {\n up: [],\n down: [],\n left: [],\n right: []\n }\n }\n\n /* Private */\n Group.prototype.flushTriggers = function() {\n for (var direction in this.triggerQueues) {\n var waypoints = this.triggerQueues[direction]\n var reverse = direction === 'up' || direction === 'left'\n waypoints.sort(reverse ? byReverseTriggerPoint : byTriggerPoint)\n for (var i = 0, end = waypoints.length; i < end; i += 1) {\n var waypoint = waypoints[i]\n if (waypoint.options.continuous || i === waypoints.length - 1) {\n waypoint.trigger([direction])\n }\n }\n }\n this.clearTriggerQueues()\n }\n\n /* Private */\n Group.prototype.next = function(waypoint) {\n this.waypoints.sort(byTriggerPoint)\n var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)\n var isLast = index === this.waypoints.length - 1\n return isLast ? null : this.waypoints[index + 1]\n }\n\n /* Private */\n Group.prototype.previous = function(waypoint) {\n this.waypoints.sort(byTriggerPoint)\n var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)\n return index ? this.waypoints[index - 1] : null\n }\n\n /* Private */\n Group.prototype.queueTrigger = function(waypoint, direction) {\n this.triggerQueues[direction].push(waypoint)\n }\n\n /* Private */\n Group.prototype.remove = function(waypoint) {\n var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)\n if (index > -1) {\n this.waypoints.splice(index, 1)\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/first */\n Group.prototype.first = function() {\n return this.waypoints[0]\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/last */\n Group.prototype.last = function() {\n return this.waypoints[this.waypoints.length - 1]\n }\n\n /* Private */\n Group.findOrCreate = function(options) {\n return groups[options.axis][options.name] || new Group(options)\n }\n\n Waypoint.Group = Group\n}())\n;(function() {\n 'use strict'\n\n var Waypoint = window.Waypoint\n\n function isWindow(element) {\n return element === element.window\n }\n\n function getWindow(element) {\n if (isWindow(element)) {\n return element\n }\n return element.defaultView\n }\n\n function NoFrameworkAdapter(element) {\n this.element = element\n this.handlers = {}\n }\n\n NoFrameworkAdapter.prototype.innerHeight = function() {\n var isWin = isWindow(this.element)\n return isWin ? this.element.innerHeight : this.element.clientHeight\n }\n\n NoFrameworkAdapter.prototype.innerWidth = function() {\n var isWin = isWindow(this.element)\n return isWin ? this.element.innerWidth : this.element.clientWidth\n }\n\n NoFrameworkAdapter.prototype.off = function(event, handler) {\n function removeListeners(element, listeners, handler) {\n for (var i = 0, end = listeners.length - 1; i < end; i++) {\n var listener = listeners[i]\n if (!handler || handler === listener) {\n element.removeEventListener(listener)\n }\n }\n }\n\n var eventParts = event.split('.')\n var eventType = eventParts[0]\n var namespace = eventParts[1]\n var element = this.element\n\n if (namespace && this.handlers[namespace] && eventType) {\n removeListeners(element, this.handlers[namespace][eventType], handler)\n this.handlers[namespace][eventType] = []\n }\n else if (eventType) {\n for (var ns in this.handlers) {\n removeListeners(element, this.handlers[ns][eventType] || [], handler)\n this.handlers[ns][eventType] = []\n }\n }\n else if (namespace && this.handlers[namespace]) {\n for (var type in this.handlers[namespace]) {\n removeListeners(element, this.handlers[namespace][type], handler)\n }\n this.handlers[namespace] = {}\n }\n }\n\n /* Adapted from jQuery 1.x offset() */\n NoFrameworkAdapter.prototype.offset = function() {\n if (!this.element.ownerDocument) {\n return null\n }\n\n var documentElement = this.element.ownerDocument.documentElement\n var win = getWindow(this.element.ownerDocument)\n var rect = {\n top: 0,\n left: 0\n }\n\n if (this.element.getBoundingClientRect) {\n rect = this.element.getBoundingClientRect()\n }\n\n return {\n top: rect.top + win.pageYOffset - documentElement.clientTop,\n left: rect.left + win.pageXOffset - documentElement.clientLeft\n }\n }\n\n NoFrameworkAdapter.prototype.on = function(event, handler) {\n var eventParts = event.split('.')\n var eventType = eventParts[0]\n var namespace = eventParts[1] || '__default'\n var nsHandlers = this.handlers[namespace] = this.handlers[namespace] || {}\n var nsTypeList = nsHandlers[eventType] = nsHandlers[eventType] || []\n\n nsTypeList.push(handler)\n this.element.addEventListener(eventType, handler)\n }\n\n NoFrameworkAdapter.prototype.outerHeight = function(includeMargin) {\n var height = this.innerHeight()\n var computedStyle\n\n if (includeMargin && !isWindow(this.element)) {\n computedStyle = window.getComputedStyle(this.element)\n height += parseInt(computedStyle.marginTop, 10)\n height += parseInt(computedStyle.marginBottom, 10)\n }\n\n return height\n }\n\n NoFrameworkAdapter.prototype.outerWidth = function(includeMargin) {\n var width = this.innerWidth()\n var computedStyle\n\n if (includeMargin && !isWindow(this.element)) {\n computedStyle = window.getComputedStyle(this.element)\n width += parseInt(computedStyle.marginLeft, 10)\n width += parseInt(computedStyle.marginRight, 10)\n }\n\n return width\n }\n\n NoFrameworkAdapter.prototype.scrollLeft = function() {\n var win = getWindow(this.element)\n return win ? win.pageXOffset : this.element.scrollLeft\n }\n\n NoFrameworkAdapter.prototype.scrollTop = function() {\n var win = getWindow(this.element)\n return win ? win.pageYOffset : this.element.scrollTop\n }\n\n NoFrameworkAdapter.extend = function() {\n var args = Array.prototype.slice.call(arguments)\n\n function merge(target, obj) {\n if (typeof target === 'object' && typeof obj === 'object') {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n target[key] = obj[key]\n }\n }\n }\n\n return target\n }\n\n for (var i = 1, end = args.length; i < end; i++) {\n merge(args[0], args[i])\n }\n return args[0]\n }\n\n NoFrameworkAdapter.inArray = function(element, array, i) {\n return array == null ? -1 : array.indexOf(element, i)\n }\n\n NoFrameworkAdapter.isEmptyObject = function(obj) {\n /* eslint no-unused-vars: 0 */\n for (var name in obj) {\n return false\n }\n return true\n }\n\n Waypoint.adapters.push({\n name: 'noframework',\n Adapter: NoFrameworkAdapter\n })\n Waypoint.Adapter = NoFrameworkAdapter\n}())\n;","/* ========================================================================\r\n * Bootstrap: transition.js v3.3.7\r\n * http://getbootstrap.com/javascript/#transitions\r\n * ========================================================================\r\n * Copyright 2011-2016 Twitter, Inc.\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\r\n * ======================================================================== */\r\n\r\n\r\n+function ($) {\r\n 'use strict';\r\n\r\n // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\r\n // ============================================================\r\n\r\n function transitionEnd() {\r\n var el = document.createElement('bootstrap')\r\n\r\n var transEndEventNames = {\r\n WebkitTransition : 'webkitTransitionEnd',\r\n MozTransition : 'transitionend',\r\n OTransition : 'oTransitionEnd otransitionend',\r\n transition : 'transitionend'\r\n }\r\n\r\n for (var name in transEndEventNames) {\r\n if (el.style[name] !== undefined) {\r\n return { end: transEndEventNames[name] }\r\n }\r\n }\r\n\r\n return false // explicit for ie8 ( ._.)\r\n }\r\n\r\n // http://blog.alexmaccaw.com/css-transitions\r\n $.fn.emulateTransitionEnd = function (duration) {\r\n var called = false\r\n var $el = this\r\n $(this).one('bsTransitionEnd', function () { called = true })\r\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\r\n setTimeout(callback, duration)\r\n return this\r\n }\r\n\r\n $(function () {\r\n $.support.transition = transitionEnd()\r\n\r\n if (!$.support.transition) return\r\n\r\n $.event.special.bsTransitionEnd = {\r\n bindType: $.support.transition.end,\r\n delegateType: $.support.transition.end,\r\n handle: function (e) {\r\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\r\n }\r\n }\r\n })\r\n\r\n}(jQuery);\r\n","/* ========================================================================\r\n * Bootstrap: alert.js v3.3.7\r\n * http://getbootstrap.com/javascript/#alerts\r\n * ========================================================================\r\n * Copyright 2011-2016 Twitter, Inc.\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\r\n * ======================================================================== */\r\n\r\n\r\n+function ($) {\r\n 'use strict';\r\n\r\n // ALERT CLASS DEFINITION\r\n // ======================\r\n\r\n var dismiss = '[data-dismiss=\"alert\"]'\r\n var Alert = function (el) {\r\n $(el).on('click', dismiss, this.close)\r\n }\r\n\r\n Alert.VERSION = '3.3.7'\r\n\r\n Alert.TRANSITION_DURATION = 150\r\n\r\n Alert.prototype.close = function (e) {\r\n var $this = $(this)\r\n var selector = $this.attr('data-target')\r\n\r\n if (!selector) {\r\n selector = $this.attr('href')\r\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\r\n }\r\n\r\n var $parent = $(selector === '#' ? [] : selector)\r\n\r\n if (e) e.preventDefault()\r\n\r\n if (!$parent.length) {\r\n $parent = $this.closest('.alert')\r\n }\r\n\r\n $parent.trigger(e = $.Event('close.bs.alert'))\r\n\r\n if (e.isDefaultPrevented()) return\r\n\r\n $parent.removeClass('in')\r\n\r\n function removeElement() {\r\n // detach from parent, fire event then clean up data\r\n $parent.detach().trigger('closed.bs.alert').remove()\r\n }\r\n\r\n $.support.transition && $parent.hasClass('fade') ?\r\n $parent\r\n .one('bsTransitionEnd', removeElement)\r\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\r\n removeElement()\r\n }\r\n\r\n\r\n // ALERT PLUGIN DEFINITION\r\n // =======================\r\n\r\n function Plugin(option) {\r\n return this.each(function () {\r\n var $this = $(this)\r\n var data = $this.data('bs.alert')\r\n\r\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\r\n if (typeof option == 'string') data[option].call($this)\r\n })\r\n }\r\n\r\n var old = $.fn.alert\r\n\r\n $.fn.alert = Plugin\r\n $.fn.alert.Constructor = Alert\r\n\r\n\r\n // ALERT NO CONFLICT\r\n // =================\r\n\r\n $.fn.alert.noConflict = function () {\r\n $.fn.alert = old\r\n return this\r\n }\r\n\r\n\r\n // ALERT DATA-API\r\n // ==============\r\n\r\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\r\n\r\n}(jQuery);\r\n","/* ========================================================================\r\n * Bootstrap: button.js v3.3.7\r\n * http://getbootstrap.com/javascript/#buttons\r\n * ========================================================================\r\n * Copyright 2011-2016 Twitter, Inc.\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\r\n * ======================================================================== */\r\n\r\n\r\n+function ($) {\r\n 'use strict';\r\n\r\n // BUTTON PUBLIC CLASS DEFINITION\r\n // ==============================\r\n\r\n var Button = function (element, options) {\r\n this.$element = $(element)\r\n this.options = $.extend({}, Button.DEFAULTS, options)\r\n this.isLoading = false\r\n }\r\n\r\n Button.VERSION = '3.3.7'\r\n\r\n Button.DEFAULTS = {\r\n loadingText: 'loading...'\r\n }\r\n\r\n Button.prototype.setState = function (state) {\r\n var d = 'disabled'\r\n var $el = this.$element\r\n var val = $el.is('input') ? 'val' : 'html'\r\n var data = $el.data()\r\n\r\n state += 'Text'\r\n\r\n if (data.resetText == null) $el.data('resetText', $el[val]())\r\n\r\n // push to event loop to allow forms to submit\r\n setTimeout($.proxy(function () {\r\n $el[val](data[state] == null ? this.options[state] : data[state])\r\n\r\n if (state == 'loadingText') {\r\n this.isLoading = true\r\n $el.addClass(d).attr(d, d).prop(d, true)\r\n } else if (this.isLoading) {\r\n this.isLoading = false\r\n $el.removeClass(d).removeAttr(d).prop(d, false)\r\n }\r\n }, this), 0)\r\n }\r\n\r\n Button.prototype.toggle = function () {\r\n var changed = true\r\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\r\n\r\n if ($parent.length) {\r\n var $input = this.$element.find('input')\r\n if ($input.prop('type') == 'radio') {\r\n if ($input.prop('checked')) changed = false\r\n $parent.find('.active').removeClass('active')\r\n this.$element.addClass('active')\r\n } else if ($input.prop('type') == 'checkbox') {\r\n if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\r\n this.$element.toggleClass('active')\r\n }\r\n $input.prop('checked', this.$element.hasClass('active'))\r\n if (changed) $input.trigger('change')\r\n } else {\r\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\r\n this.$element.toggleClass('active')\r\n }\r\n }\r\n\r\n\r\n // BUTTON PLUGIN DEFINITION\r\n // ========================\r\n\r\n function Plugin(option) {\r\n return this.each(function () {\r\n var $this = $(this)\r\n var data = $this.data('bs.button')\r\n var options = typeof option == 'object' && option\r\n\r\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\r\n\r\n if (option == 'toggle') data.toggle()\r\n else if (option) data.setState(option)\r\n })\r\n }\r\n\r\n var old = $.fn.button\r\n\r\n $.fn.button = Plugin\r\n $.fn.button.Constructor = Button\r\n\r\n\r\n // BUTTON NO CONFLICT\r\n // ==================\r\n\r\n $.fn.button.noConflict = function () {\r\n $.fn.button = old\r\n return this\r\n }\r\n\r\n\r\n // BUTTON DATA-API\r\n // ===============\r\n\r\n $(document)\r\n .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\r\n var $btn = $(e.target).closest('.btn')\r\n Plugin.call($btn, 'toggle')\r\n if (!($(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]'))) {\r\n // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\r\n e.preventDefault()\r\n // The target component still receive the focus\r\n if ($btn.is('input,button')) $btn.trigger('focus')\r\n else $btn.find('input:visible,button:visible').first().trigger('focus')\r\n }\r\n })\r\n .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\r\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\r\n })\r\n\r\n}(jQuery);\r\n","/* ========================================================================\r\n * Bootstrap: carousel.js v3.3.7\r\n * http://getbootstrap.com/javascript/#carousel\r\n * ========================================================================\r\n * Copyright 2011-2016 Twitter, Inc.\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\r\n * ======================================================================== */\r\n\r\n\r\n+function ($) {\r\n 'use strict';\r\n\r\n // CAROUSEL CLASS DEFINITION\r\n // =========================\r\n\r\n var Carousel = function (element, options) {\r\n this.$element = $(element)\r\n this.$indicators = this.$element.find('.carousel-indicators')\r\n this.options = options\r\n this.paused = null\r\n this.sliding = null\r\n this.interval = null\r\n this.$active = null\r\n this.$items = null\r\n\r\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\r\n\r\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\r\n .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\r\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\r\n }\r\n\r\n Carousel.VERSION = '3.3.7'\r\n\r\n Carousel.TRANSITION_DURATION = 600\r\n\r\n Carousel.DEFAULTS = {\r\n interval: 5000,\r\n pause: 'hover',\r\n wrap: true,\r\n keyboard: true\r\n }\r\n\r\n Carousel.prototype.keydown = function (e) {\r\n if (/input|textarea/i.test(e.target.tagName)) return\r\n switch (e.which) {\r\n case 37: this.prev(); break\r\n case 39: this.next(); break\r\n default: return\r\n }\r\n\r\n e.preventDefault()\r\n }\r\n\r\n Carousel.prototype.cycle = function (e) {\r\n e || (this.paused = false)\r\n\r\n this.interval && clearInterval(this.interval)\r\n\r\n this.options.interval\r\n && !this.paused\r\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\r\n\r\n return this\r\n }\r\n\r\n Carousel.prototype.getItemIndex = function (item) {\r\n this.$items = item.parent().children('.item')\r\n return this.$items.index(item || this.$active)\r\n }\r\n\r\n Carousel.prototype.getItemForDirection = function (direction, active) {\r\n var activeIndex = this.getItemIndex(active)\r\n var willWrap = (direction == 'prev' && activeIndex === 0)\r\n || (direction == 'next' && activeIndex == (this.$items.length - 1))\r\n if (willWrap && !this.options.wrap) return active\r\n var delta = direction == 'prev' ? -1 : 1\r\n var itemIndex = (activeIndex + delta) % this.$items.length\r\n return this.$items.eq(itemIndex)\r\n }\r\n\r\n Carousel.prototype.to = function (pos) {\r\n var that = this\r\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\r\n\r\n if (pos > (this.$items.length - 1) || pos < 0) return\r\n\r\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\r\n if (activeIndex == pos) return this.pause().cycle()\r\n\r\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\r\n }\r\n\r\n Carousel.prototype.pause = function (e) {\r\n e || (this.paused = true)\r\n\r\n if (this.$element.find('.next, .prev').length && $.support.transition) {\r\n this.$element.trigger($.support.transition.end)\r\n this.cycle(true)\r\n }\r\n\r\n this.interval = clearInterval(this.interval)\r\n\r\n return this\r\n }\r\n\r\n Carousel.prototype.next = function () {\r\n if (this.sliding) return\r\n return this.slide('next')\r\n }\r\n\r\n Carousel.prototype.prev = function () {\r\n if (this.sliding) return\r\n return this.slide('prev')\r\n }\r\n\r\n Carousel.prototype.slide = function (type, next) {\r\n var $active = this.$element.find('.item.active')\r\n var $next = next || this.getItemForDirection(type, $active)\r\n var isCycling = this.interval\r\n var direction = type == 'next' ? 'left' : 'right'\r\n var that = this\r\n\r\n if ($next.hasClass('active')) return (this.sliding = false)\r\n\r\n var relatedTarget = $next[0]\r\n var slideEvent = $.Event('slide.bs.carousel', {\r\n relatedTarget: relatedTarget,\r\n direction: direction\r\n })\r\n this.$element.trigger(slideEvent)\r\n if (slideEvent.isDefaultPrevented()) return\r\n\r\n this.sliding = true\r\n\r\n isCycling && this.pause()\r\n\r\n if (this.$indicators.length) {\r\n this.$indicators.find('.active').removeClass('active')\r\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\r\n $nextIndicator && $nextIndicator.addClass('active')\r\n }\r\n\r\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\r\n if ($.support.transition && this.$element.hasClass('slide')) {\r\n $next.addClass(type)\r\n $next[0].offsetWidth // force reflow\r\n $active.addClass(direction)\r\n $next.addClass(direction)\r\n $active\r\n .one('bsTransitionEnd', function () {\r\n $next.removeClass([type, direction].join(' ')).addClass('active')\r\n $active.removeClass(['active', direction].join(' '))\r\n that.sliding = false\r\n setTimeout(function () {\r\n that.$element.trigger(slidEvent)\r\n }, 0)\r\n })\r\n .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\r\n } else {\r\n $active.removeClass('active')\r\n $next.addClass('active')\r\n this.sliding = false\r\n this.$element.trigger(slidEvent)\r\n }\r\n\r\n isCycling && this.cycle()\r\n\r\n return this\r\n }\r\n\r\n\r\n // CAROUSEL PLUGIN DEFINITION\r\n // ==========================\r\n\r\n function Plugin(option) {\r\n return this.each(function () {\r\n var $this = $(this)\r\n var data = $this.data('bs.carousel')\r\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\r\n var action = typeof option == 'string' ? option : options.slide\r\n\r\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\r\n if (typeof option == 'number') data.to(option)\r\n else if (action) data[action]()\r\n else if (options.interval) data.pause().cycle()\r\n })\r\n }\r\n\r\n var old = $.fn.carousel\r\n\r\n $.fn.carousel = Plugin\r\n $.fn.carousel.Constructor = Carousel\r\n\r\n\r\n // CAROUSEL NO CONFLICT\r\n // ====================\r\n\r\n $.fn.carousel.noConflict = function () {\r\n $.fn.carousel = old\r\n return this\r\n }\r\n\r\n\r\n // CAROUSEL DATA-API\r\n // =================\r\n\r\n var clickHandler = function (e) {\r\n var href\r\n var $this = $(this)\r\n var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\r\n if (!$target.hasClass('carousel')) return\r\n var options = $.extend({}, $target.data(), $this.data())\r\n var slideIndex = $this.attr('data-slide-to')\r\n if (slideIndex) options.interval = false\r\n\r\n Plugin.call($target, options)\r\n\r\n if (slideIndex) {\r\n $target.data('bs.carousel').to(slideIndex)\r\n }\r\n\r\n e.preventDefault()\r\n }\r\n\r\n $(document)\r\n .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\r\n .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\r\n\r\n $(window).on('load', function () {\r\n $('[data-ride=\"carousel\"]').each(function () {\r\n var $carousel = $(this)\r\n Plugin.call($carousel, $carousel.data())\r\n })\r\n })\r\n\r\n}(jQuery);\r\n","/* ========================================================================\r\n * Bootstrap: collapse.js v3.3.7\r\n * http://getbootstrap.com/javascript/#collapse\r\n * ========================================================================\r\n * Copyright 2011-2016 Twitter, Inc.\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\r\n * ======================================================================== */\r\n\r\n/* jshint latedef: false */\r\n\r\n+function ($) {\r\n 'use strict';\r\n\r\n // COLLAPSE PUBLIC CLASS DEFINITION\r\n // ================================\r\n\r\n var Collapse = function (element, options) {\r\n this.$element = $(element)\r\n this.options = $.extend({}, Collapse.DEFAULTS, options)\r\n this.$trigger = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\r\n '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\r\n this.transitioning = null\r\n\r\n if (this.options.parent) {\r\n this.$parent = this.getParent()\r\n } else {\r\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\r\n }\r\n\r\n if (this.options.toggle) this.toggle()\r\n }\r\n\r\n Collapse.VERSION = '3.3.7'\r\n\r\n Collapse.TRANSITION_DURATION = 350\r\n\r\n Collapse.DEFAULTS = {\r\n toggle: true\r\n }\r\n\r\n Collapse.prototype.dimension = function () {\r\n var hasWidth = this.$element.hasClass('width')\r\n return hasWidth ? 'width' : 'height'\r\n }\r\n\r\n Collapse.prototype.show = function () {\r\n if (this.transitioning || this.$element.hasClass('in')) return\r\n\r\n var activesData\r\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\r\n\r\n if (actives && actives.length) {\r\n activesData = actives.data('bs.collapse')\r\n if (activesData && activesData.transitioning) return\r\n }\r\n\r\n var startEvent = $.Event('show.bs.collapse')\r\n this.$element.trigger(startEvent)\r\n if (startEvent.isDefaultPrevented()) return\r\n\r\n if (actives && actives.length) {\r\n Plugin.call(actives, 'hide')\r\n activesData || actives.data('bs.collapse', null)\r\n }\r\n\r\n var dimension = this.dimension()\r\n\r\n this.$element\r\n .removeClass('collapse')\r\n .addClass('collapsing')[dimension](0)\r\n .attr('aria-expanded', true)\r\n\r\n this.$trigger\r\n .removeClass('collapsed')\r\n .attr('aria-expanded', true)\r\n\r\n this.transitioning = 1\r\n\r\n var complete = function () {\r\n this.$element\r\n .removeClass('collapsing')\r\n .addClass('collapse in')[dimension]('')\r\n this.transitioning = 0\r\n this.$element\r\n .trigger('shown.bs.collapse')\r\n }\r\n\r\n if (!$.support.transition) return complete.call(this)\r\n\r\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\r\n\r\n this.$element\r\n .one('bsTransitionEnd', $.proxy(complete, this))\r\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\r\n }\r\n\r\n Collapse.prototype.hide = function () {\r\n if (this.transitioning || !this.$element.hasClass('in')) return\r\n\r\n var startEvent = $.Event('hide.bs.collapse')\r\n this.$element.trigger(startEvent)\r\n if (startEvent.isDefaultPrevented()) return\r\n\r\n var dimension = this.dimension()\r\n\r\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\r\n\r\n this.$element\r\n .addClass('collapsing')\r\n .removeClass('collapse in')\r\n .attr('aria-expanded', false)\r\n\r\n this.$trigger\r\n .addClass('collapsed')\r\n .attr('aria-expanded', false)\r\n\r\n this.transitioning = 1\r\n\r\n var complete = function () {\r\n this.transitioning = 0\r\n this.$element\r\n .removeClass('collapsing')\r\n .addClass('collapse')\r\n .trigger('hidden.bs.collapse')\r\n }\r\n\r\n if (!$.support.transition) return complete.call(this)\r\n\r\n this.$element\r\n [dimension](0)\r\n .one('bsTransitionEnd', $.proxy(complete, this))\r\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\r\n }\r\n\r\n Collapse.prototype.toggle = function () {\r\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\r\n }\r\n\r\n Collapse.prototype.getParent = function () {\r\n return $(this.options.parent)\r\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\r\n .each($.proxy(function (i, element) {\r\n var $element = $(element)\r\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\r\n }, this))\r\n .end()\r\n }\r\n\r\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\r\n var isOpen = $element.hasClass('in')\r\n\r\n $element.attr('aria-expanded', isOpen)\r\n $trigger\r\n .toggleClass('collapsed', !isOpen)\r\n .attr('aria-expanded', isOpen)\r\n }\r\n\r\n function getTargetFromTrigger($trigger) {\r\n var href\r\n var target = $trigger.attr('data-target')\r\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\r\n\r\n return $(target)\r\n }\r\n\r\n\r\n // COLLAPSE PLUGIN DEFINITION\r\n // ==========================\r\n\r\n function Plugin(option) {\r\n return this.each(function () {\r\n var $this = $(this)\r\n var data = $this.data('bs.collapse')\r\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\r\n\r\n if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\r\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\r\n if (typeof option == 'string') data[option]()\r\n })\r\n }\r\n\r\n var old = $.fn.collapse\r\n\r\n $.fn.collapse = Plugin\r\n $.fn.collapse.Constructor = Collapse\r\n\r\n\r\n // COLLAPSE NO CONFLICT\r\n // ====================\r\n\r\n $.fn.collapse.noConflict = function () {\r\n $.fn.collapse = old\r\n return this\r\n }\r\n\r\n\r\n // COLLAPSE DATA-API\r\n // =================\r\n\r\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\r\n var $this = $(this)\r\n\r\n if (!$this.attr('data-target')) e.preventDefault()\r\n\r\n var $target = getTargetFromTrigger($this)\r\n var data = $target.data('bs.collapse')\r\n var option = data ? 'toggle' : $this.data()\r\n\r\n Plugin.call($target, option)\r\n })\r\n\r\n}(jQuery);\r\n","/* ========================================================================\r\n * Bootstrap: dropdown.js v3.3.7\r\n * http://getbootstrap.com/javascript/#dropdowns\r\n * ========================================================================\r\n * Copyright 2011-2016 Twitter, Inc.\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\r\n * ======================================================================== */\r\n\r\n\r\n+function ($) {\r\n 'use strict';\r\n\r\n // DROPDOWN CLASS DEFINITION\r\n // =========================\r\n\r\n var backdrop = '.dropdown-backdrop'\r\n var toggle = '[data-toggle=\"dropdown\"]'\r\n var Dropdown = function (element) {\r\n $(element).on('click.bs.dropdown', this.toggle)\r\n }\r\n\r\n Dropdown.VERSION = '3.3.7'\r\n\r\n function getParent($this) {\r\n var selector = $this.attr('data-target')\r\n\r\n if (!selector) {\r\n selector = $this.attr('href')\r\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\r\n }\r\n\r\n var $parent = selector && $(selector)\r\n\r\n return $parent && $parent.length ? $parent : $this.parent()\r\n }\r\n\r\n function clearMenus(e) {\r\n if (e && e.which === 3) return\r\n $(backdrop).remove()\r\n $(toggle).each(function () {\r\n var $this = $(this)\r\n var $parent = getParent($this)\r\n var relatedTarget = { relatedTarget: this }\r\n\r\n if (!$parent.hasClass('open')) return\r\n\r\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\r\n\r\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\r\n\r\n if (e.isDefaultPrevented()) return\r\n\r\n $this.attr('aria-expanded', 'false')\r\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\r\n })\r\n }\r\n\r\n Dropdown.prototype.toggle = function (e) {\r\n var $this = $(this)\r\n\r\n if ($this.is('.disabled, :disabled')) return\r\n\r\n var $parent = getParent($this)\r\n var isActive = $parent.hasClass('open')\r\n\r\n clearMenus()\r\n\r\n if (!isActive) {\r\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\r\n // if mobile we use a backdrop because click events don't delegate\r\n $(document.createElement('div'))\r\n .addClass('dropdown-backdrop')\r\n .insertAfter($(this))\r\n .on('click', clearMenus)\r\n }\r\n\r\n var relatedTarget = { relatedTarget: this }\r\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\r\n\r\n if (e.isDefaultPrevented()) return\r\n\r\n $this\r\n .trigger('focus')\r\n .attr('aria-expanded', 'true')\r\n\r\n $parent\r\n .toggleClass('open')\r\n .trigger($.Event('shown.bs.dropdown', relatedTarget))\r\n }\r\n\r\n return false\r\n }\r\n\r\n Dropdown.prototype.keydown = function (e) {\r\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\r\n\r\n var $this = $(this)\r\n\r\n e.preventDefault()\r\n e.stopPropagation()\r\n\r\n if ($this.is('.disabled, :disabled')) return\r\n\r\n var $parent = getParent($this)\r\n var isActive = $parent.hasClass('open')\r\n\r\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\r\n if (e.which == 27) $parent.find(toggle).trigger('focus')\r\n return $this.trigger('click')\r\n }\r\n\r\n var desc = ' li:not(.disabled):visible a'\r\n var $items = $parent.find('.dropdown-menu' + desc)\r\n\r\n if (!$items.length) return\r\n\r\n var index = $items.index(e.target)\r\n\r\n if (e.which == 38 && index > 0) index-- // up\r\n if (e.which == 40 && index < $items.length - 1) index++ // down\r\n if (!~index) index = 0\r\n\r\n $items.eq(index).trigger('focus')\r\n }\r\n\r\n\r\n // DROPDOWN PLUGIN DEFINITION\r\n // ==========================\r\n\r\n function Plugin(option) {\r\n return this.each(function () {\r\n var $this = $(this)\r\n var data = $this.data('bs.dropdown')\r\n\r\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\r\n if (typeof option == 'string') data[option].call($this)\r\n })\r\n }\r\n\r\n var old = $.fn.dropdown\r\n\r\n $.fn.dropdown = Plugin\r\n $.fn.dropdown.Constructor = Dropdown\r\n\r\n\r\n // DROPDOWN NO CONFLICT\r\n // ====================\r\n\r\n $.fn.dropdown.noConflict = function () {\r\n $.fn.dropdown = old\r\n return this\r\n }\r\n\r\n\r\n // APPLY TO STANDARD DROPDOWN ELEMENTS\r\n // ===================================\r\n\r\n $(document)\r\n .on('click.bs.dropdown.data-api', clearMenus)\r\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\r\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\r\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\r\n .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\r\n\r\n}(jQuery);\r\n","/* ========================================================================\r\n * Bootstrap: modal.js v3.3.7\r\n * http://getbootstrap.com/javascript/#modals\r\n * ========================================================================\r\n * Copyright 2011-2016 Twitter, Inc.\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\r\n * ======================================================================== */\r\n\r\n\r\n+function ($) {\r\n 'use strict';\r\n\r\n // MODAL CLASS DEFINITION\r\n // ======================\r\n\r\n var Modal = function (element, options) {\r\n this.options = options\r\n this.$body = $(document.body)\r\n this.$element = $(element)\r\n this.$dialog = this.$element.find('.modal-dialog')\r\n this.$backdrop = null\r\n this.isShown = null\r\n this.originalBodyPad = null\r\n this.scrollbarWidth = 0\r\n this.ignoreBackdropClick = false\r\n\r\n if (this.options.remote) {\r\n this.$element\r\n .find('.modal-content')\r\n .load(this.options.remote, $.proxy(function () {\r\n this.$element.trigger('loaded.bs.modal')\r\n }, this))\r\n }\r\n }\r\n\r\n Modal.VERSION = '3.3.7'\r\n\r\n Modal.TRANSITION_DURATION = 300\r\n Modal.BACKDROP_TRANSITION_DURATION = 150\r\n\r\n Modal.DEFAULTS = {\r\n backdrop: true,\r\n keyboard: true,\r\n show: true\r\n }\r\n\r\n Modal.prototype.toggle = function (_relatedTarget) {\r\n return this.isShown ? this.hide() : this.show(_relatedTarget)\r\n }\r\n\r\n Modal.prototype.show = function (_relatedTarget) {\r\n var that = this\r\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\r\n\r\n this.$element.trigger(e)\r\n\r\n if (this.isShown || e.isDefaultPrevented()) return\r\n\r\n this.isShown = true\r\n\r\n this.checkScrollbar()\r\n this.setScrollbar()\r\n this.$body.addClass('modal-open')\r\n\r\n this.escape()\r\n this.resize()\r\n\r\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\r\n\r\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\r\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\r\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\r\n })\r\n })\r\n\r\n this.backdrop(function () {\r\n var transition = $.support.transition && that.$element.hasClass('fade')\r\n\r\n if (!that.$element.parent().length) {\r\n that.$element.appendTo(that.$body) // don't move modals dom position\r\n }\r\n\r\n that.$element\r\n .show()\r\n .scrollTop(0)\r\n\r\n that.adjustDialog()\r\n\r\n if (transition) {\r\n that.$element[0].offsetWidth // force reflow\r\n }\r\n\r\n that.$element.addClass('in')\r\n\r\n that.enforceFocus()\r\n\r\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\r\n\r\n transition ?\r\n that.$dialog // wait for modal to slide in\r\n .one('bsTransitionEnd', function () {\r\n that.$element.trigger('focus').trigger(e)\r\n })\r\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\r\n that.$element.trigger('focus').trigger(e)\r\n })\r\n }\r\n\r\n Modal.prototype.hide = function (e) {\r\n if (e) e.preventDefault()\r\n\r\n e = $.Event('hide.bs.modal')\r\n\r\n this.$element.trigger(e)\r\n\r\n if (!this.isShown || e.isDefaultPrevented()) return\r\n\r\n this.isShown = false\r\n\r\n this.escape()\r\n this.resize()\r\n\r\n $(document).off('focusin.bs.modal')\r\n\r\n this.$element\r\n .removeClass('in')\r\n .off('click.dismiss.bs.modal')\r\n .off('mouseup.dismiss.bs.modal')\r\n\r\n this.$dialog.off('mousedown.dismiss.bs.modal')\r\n\r\n $.support.transition && this.$element.hasClass('fade') ?\r\n this.$element\r\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\r\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\r\n this.hideModal()\r\n }\r\n\r\n Modal.prototype.enforceFocus = function () {\r\n $(document)\r\n .off('focusin.bs.modal') // guard against infinite focus loop\r\n .on('focusin.bs.modal', $.proxy(function (e) {\r\n if (document !== e.target &&\r\n this.$element[0] !== e.target &&\r\n !this.$element.has(e.target).length) {\r\n this.$element.trigger('focus')\r\n }\r\n }, this))\r\n }\r\n\r\n Modal.prototype.escape = function () {\r\n if (this.isShown && this.options.keyboard) {\r\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\r\n e.which == 27 && this.hide()\r\n }, this))\r\n } else if (!this.isShown) {\r\n this.$element.off('keydown.dismiss.bs.modal')\r\n }\r\n }\r\n\r\n Modal.prototype.resize = function () {\r\n if (this.isShown) {\r\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\r\n } else {\r\n $(window).off('resize.bs.modal')\r\n }\r\n }\r\n\r\n Modal.prototype.hideModal = function () {\r\n var that = this\r\n this.$element.hide()\r\n this.backdrop(function () {\r\n that.$body.removeClass('modal-open')\r\n that.resetAdjustments()\r\n that.resetScrollbar()\r\n that.$element.trigger('hidden.bs.modal')\r\n })\r\n }\r\n\r\n Modal.prototype.removeBackdrop = function () {\r\n this.$backdrop && this.$backdrop.remove()\r\n this.$backdrop = null\r\n }\r\n\r\n Modal.prototype.backdrop = function (callback) {\r\n var that = this\r\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\r\n\r\n if (this.isShown && this.options.backdrop) {\r\n var doAnimate = $.support.transition && animate\r\n\r\n this.$backdrop = $(document.createElement('div'))\r\n .addClass('modal-backdrop ' + animate)\r\n .appendTo(this.$body)\r\n\r\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\r\n if (this.ignoreBackdropClick) {\r\n this.ignoreBackdropClick = false\r\n return\r\n }\r\n if (e.target !== e.currentTarget) return\r\n this.options.backdrop == 'static'\r\n ? this.$element[0].focus()\r\n : this.hide()\r\n }, this))\r\n\r\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\r\n\r\n this.$backdrop.addClass('in')\r\n\r\n if (!callback) return\r\n\r\n doAnimate ?\r\n this.$backdrop\r\n .one('bsTransitionEnd', callback)\r\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\r\n callback()\r\n\r\n } else if (!this.isShown && this.$backdrop) {\r\n this.$backdrop.removeClass('in')\r\n\r\n var callbackRemove = function () {\r\n that.removeBackdrop()\r\n callback && callback()\r\n }\r\n $.support.transition && this.$element.hasClass('fade') ?\r\n this.$backdrop\r\n .one('bsTransitionEnd', callbackRemove)\r\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\r\n callbackRemove()\r\n\r\n } else if (callback) {\r\n callback()\r\n }\r\n }\r\n\r\n // these following methods are used to handle overflowing modals\r\n\r\n Modal.prototype.handleUpdate = function () {\r\n this.adjustDialog()\r\n }\r\n\r\n Modal.prototype.adjustDialog = function () {\r\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\r\n\r\n this.$element.css({\r\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\r\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\r\n })\r\n }\r\n\r\n Modal.prototype.resetAdjustments = function () {\r\n this.$element.css({\r\n paddingLeft: '',\r\n paddingRight: ''\r\n })\r\n }\r\n\r\n Modal.prototype.checkScrollbar = function () {\r\n var fullWindowWidth = window.innerWidth\r\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\r\n var documentElementRect = document.documentElement.getBoundingClientRect()\r\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\r\n }\r\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\r\n this.scrollbarWidth = this.measureScrollbar()\r\n }\r\n\r\n Modal.prototype.setScrollbar = function () {\r\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\r\n this.originalBodyPad = document.body.style.paddingRight || ''\r\n if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\r\n }\r\n\r\n Modal.prototype.resetScrollbar = function () {\r\n this.$body.css('padding-right', this.originalBodyPad)\r\n }\r\n\r\n Modal.prototype.measureScrollbar = function () { // thx walsh\r\n var scrollDiv = document.createElement('div')\r\n scrollDiv.className = 'modal-scrollbar-measure'\r\n this.$body.append(scrollDiv)\r\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\r\n this.$body[0].removeChild(scrollDiv)\r\n return scrollbarWidth\r\n }\r\n\r\n\r\n // MODAL PLUGIN DEFINITION\r\n // =======================\r\n\r\n function Plugin(option, _relatedTarget) {\r\n return this.each(function () {\r\n var $this = $(this)\r\n var data = $this.data('bs.modal')\r\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\r\n\r\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\r\n if (typeof option == 'string') data[option](_relatedTarget)\r\n else if (options.show) data.show(_relatedTarget)\r\n })\r\n }\r\n\r\n var old = $.fn.modal\r\n\r\n $.fn.modal = Plugin\r\n $.fn.modal.Constructor = Modal\r\n\r\n\r\n // MODAL NO CONFLICT\r\n // =================\r\n\r\n $.fn.modal.noConflict = function () {\r\n $.fn.modal = old\r\n return this\r\n }\r\n\r\n\r\n // MODAL DATA-API\r\n // ==============\r\n\r\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\r\n var $this = $(this)\r\n var href = $this.attr('href')\r\n var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\r\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\r\n\r\n if ($this.is('a')) e.preventDefault()\r\n\r\n $target.one('show.bs.modal', function (showEvent) {\r\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\r\n $target.one('hidden.bs.modal', function () {\r\n $this.is(':visible') && $this.trigger('focus')\r\n })\r\n })\r\n Plugin.call($target, option, this)\r\n })\r\n\r\n}(jQuery);\r\n","/* ========================================================================\r\n * Bootstrap: tooltip.js v3.3.7\r\n * http://getbootstrap.com/javascript/#tooltip\r\n * Inspired by the original jQuery.tipsy by Jason Frame\r\n * ========================================================================\r\n * Copyright 2011-2016 Twitter, Inc.\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\r\n * ======================================================================== */\r\n\r\n\r\n+function ($) {\r\n 'use strict';\r\n\r\n // TOOLTIP PUBLIC CLASS DEFINITION\r\n // ===============================\r\n\r\n var Tooltip = function (element, options) {\r\n this.type = null\r\n this.options = null\r\n this.enabled = null\r\n this.timeout = null\r\n this.hoverState = null\r\n this.$element = null\r\n this.inState = null\r\n\r\n this.init('tooltip', element, options)\r\n }\r\n\r\n Tooltip.VERSION = '3.3.7'\r\n\r\n Tooltip.TRANSITION_DURATION = 150\r\n\r\n Tooltip.DEFAULTS = {\r\n animation: true,\r\n placement: 'top',\r\n selector: false,\r\n template: '
',\r\n trigger: 'hover focus',\r\n title: '',\r\n delay: 0,\r\n html: false,\r\n container: false,\r\n viewport: {\r\n selector: 'body',\r\n padding: 0\r\n }\r\n }\r\n\r\n Tooltip.prototype.init = function (type, element, options) {\r\n this.enabled = true\r\n this.type = type\r\n this.$element = $(element)\r\n this.options = this.getOptions(options)\r\n this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\r\n this.inState = { click: false, hover: false, focus: false }\r\n\r\n if (this.$element[0] instanceof document.constructor && !this.options.selector) {\r\n throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\r\n }\r\n\r\n var triggers = this.options.trigger.split(' ')\r\n\r\n for (var i = triggers.length; i--;) {\r\n var trigger = triggers[i]\r\n\r\n if (trigger == 'click') {\r\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\r\n } else if (trigger != 'manual') {\r\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\r\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\r\n\r\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\r\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\r\n }\r\n }\r\n\r\n this.options.selector ?\r\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\r\n this.fixTitle()\r\n }\r\n\r\n Tooltip.prototype.getDefaults = function () {\r\n return Tooltip.DEFAULTS\r\n }\r\n\r\n Tooltip.prototype.getOptions = function (options) {\r\n options = $.extend({}, this.getDefaults(), this.$element.data(), options)\r\n\r\n if (options.delay && typeof options.delay == 'number') {\r\n options.delay = {\r\n show: options.delay,\r\n hide: options.delay\r\n }\r\n }\r\n\r\n return options\r\n }\r\n\r\n Tooltip.prototype.getDelegateOptions = function () {\r\n var options = {}\r\n var defaults = this.getDefaults()\r\n\r\n this._options && $.each(this._options, function (key, value) {\r\n if (defaults[key] != value) options[key] = value\r\n })\r\n\r\n return options\r\n }\r\n\r\n Tooltip.prototype.enter = function (obj) {\r\n var self = obj instanceof this.constructor ?\r\n obj : $(obj.currentTarget).data('bs.' + this.type)\r\n\r\n if (!self) {\r\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\r\n $(obj.currentTarget).data('bs.' + this.type, self)\r\n }\r\n\r\n if (obj instanceof $.Event) {\r\n self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\r\n }\r\n\r\n if (self.tip().hasClass('in') || self.hoverState == 'in') {\r\n self.hoverState = 'in'\r\n return\r\n }\r\n\r\n clearTimeout(self.timeout)\r\n\r\n self.hoverState = 'in'\r\n\r\n if (!self.options.delay || !self.options.delay.show) return self.show()\r\n\r\n self.timeout = setTimeout(function () {\r\n if (self.hoverState == 'in') self.show()\r\n }, self.options.delay.show)\r\n }\r\n\r\n Tooltip.prototype.isInStateTrue = function () {\r\n for (var key in this.inState) {\r\n if (this.inState[key]) return true\r\n }\r\n\r\n return false\r\n }\r\n\r\n Tooltip.prototype.leave = function (obj) {\r\n var self = obj instanceof this.constructor ?\r\n obj : $(obj.currentTarget).data('bs.' + this.type)\r\n\r\n if (!self) {\r\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\r\n $(obj.currentTarget).data('bs.' + this.type, self)\r\n }\r\n\r\n if (obj instanceof $.Event) {\r\n self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\r\n }\r\n\r\n if (self.isInStateTrue()) return\r\n\r\n clearTimeout(self.timeout)\r\n\r\n self.hoverState = 'out'\r\n\r\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\r\n\r\n self.timeout = setTimeout(function () {\r\n if (self.hoverState == 'out') self.hide()\r\n }, self.options.delay.hide)\r\n }\r\n\r\n Tooltip.prototype.show = function () {\r\n var e = $.Event('show.bs.' + this.type)\r\n\r\n if (this.hasContent() && this.enabled) {\r\n this.$element.trigger(e)\r\n\r\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\r\n if (e.isDefaultPrevented() || !inDom) return\r\n var that = this\r\n\r\n var $tip = this.tip()\r\n\r\n var tipId = this.getUID(this.type)\r\n\r\n this.setContent()\r\n $tip.attr('id', tipId)\r\n this.$element.attr('aria-describedby', tipId)\r\n\r\n if (this.options.animation) $tip.addClass('fade')\r\n\r\n var placement = typeof this.options.placement == 'function' ?\r\n this.options.placement.call(this, $tip[0], this.$element[0]) :\r\n this.options.placement\r\n\r\n var autoToken = /\\s?auto?\\s?/i\r\n var autoPlace = autoToken.test(placement)\r\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\r\n\r\n $tip\r\n .detach()\r\n .css({ top: 0, left: 0, display: 'block' })\r\n .addClass(placement)\r\n .data('bs.' + this.type, this)\r\n\r\n this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\r\n this.$element.trigger('inserted.bs.' + this.type)\r\n\r\n var pos = this.getPosition()\r\n var actualWidth = $tip[0].offsetWidth\r\n var actualHeight = $tip[0].offsetHeight\r\n\r\n if (autoPlace) {\r\n var orgPlacement = placement\r\n var viewportDim = this.getPosition(this.$viewport)\r\n\r\n placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :\r\n placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :\r\n placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :\r\n placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :\r\n placement\r\n\r\n $tip\r\n .removeClass(orgPlacement)\r\n .addClass(placement)\r\n }\r\n\r\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\r\n\r\n this.applyPlacement(calculatedOffset, placement)\r\n\r\n var complete = function () {\r\n var prevHoverState = that.hoverState\r\n that.$element.trigger('shown.bs.' + that.type)\r\n that.hoverState = null\r\n\r\n if (prevHoverState == 'out') that.leave(that)\r\n }\r\n\r\n $.support.transition && this.$tip.hasClass('fade') ?\r\n $tip\r\n .one('bsTransitionEnd', complete)\r\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\r\n complete()\r\n }\r\n }\r\n\r\n Tooltip.prototype.applyPlacement = function (offset, placement) {\r\n var $tip = this.tip()\r\n var width = $tip[0].offsetWidth\r\n var height = $tip[0].offsetHeight\r\n\r\n // manually read margins because getBoundingClientRect includes difference\r\n var marginTop = parseInt($tip.css('margin-top'), 10)\r\n var marginLeft = parseInt($tip.css('margin-left'), 10)\r\n\r\n // we must check for NaN for ie 8/9\r\n if (isNaN(marginTop)) marginTop = 0\r\n if (isNaN(marginLeft)) marginLeft = 0\r\n\r\n offset.top += marginTop\r\n offset.left += marginLeft\r\n\r\n // $.fn.offset doesn't round pixel values\r\n // so we use setOffset directly with our own function B-0\r\n $.offset.setOffset($tip[0], $.extend({\r\n using: function (props) {\r\n $tip.css({\r\n top: Math.round(props.top),\r\n left: Math.round(props.left)\r\n })\r\n }\r\n }, offset), 0)\r\n\r\n $tip.addClass('in')\r\n\r\n // check to see if placing tip in new offset caused the tip to resize itself\r\n var actualWidth = $tip[0].offsetWidth\r\n var actualHeight = $tip[0].offsetHeight\r\n\r\n if (placement == 'top' && actualHeight != height) {\r\n offset.top = offset.top + height - actualHeight\r\n }\r\n\r\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\r\n\r\n if (delta.left) offset.left += delta.left\r\n else offset.top += delta.top\r\n\r\n var isVertical = /top|bottom/.test(placement)\r\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\r\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\r\n\r\n $tip.offset(offset)\r\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\r\n }\r\n\r\n Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\r\n this.arrow()\r\n .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\r\n .css(isVertical ? 'top' : 'left', '')\r\n }\r\n\r\n Tooltip.prototype.setContent = function () {\r\n var $tip = this.tip()\r\n var title = this.getTitle()\r\n\r\n $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\r\n $tip.removeClass('fade in top bottom left right')\r\n }\r\n\r\n Tooltip.prototype.hide = function (callback) {\r\n var that = this\r\n var $tip = $(this.$tip)\r\n var e = $.Event('hide.bs.' + this.type)\r\n\r\n function complete() {\r\n if (that.hoverState != 'in') $tip.detach()\r\n if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\r\n that.$element\r\n .removeAttr('aria-describedby')\r\n .trigger('hidden.bs.' + that.type)\r\n }\r\n callback && callback()\r\n }\r\n\r\n this.$element.trigger(e)\r\n\r\n if (e.isDefaultPrevented()) return\r\n\r\n $tip.removeClass('in')\r\n\r\n $.support.transition && $tip.hasClass('fade') ?\r\n $tip\r\n .one('bsTransitionEnd', complete)\r\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\r\n complete()\r\n\r\n this.hoverState = null\r\n\r\n return this\r\n }\r\n\r\n Tooltip.prototype.fixTitle = function () {\r\n var $e = this.$element\r\n if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\r\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\r\n }\r\n }\r\n\r\n Tooltip.prototype.hasContent = function () {\r\n return this.getTitle()\r\n }\r\n\r\n Tooltip.prototype.getPosition = function ($element) {\r\n $element = $element || this.$element\r\n\r\n var el = $element[0]\r\n var isBody = el.tagName == 'BODY'\r\n\r\n var elRect = el.getBoundingClientRect()\r\n if (elRect.width == null) {\r\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\r\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\r\n }\r\n var isSvg = window.SVGElement && el instanceof window.SVGElement\r\n // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\r\n // See https://github.com/twbs/bootstrap/issues/20280\r\n var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\r\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\r\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\r\n\r\n return $.extend({}, elRect, scroll, outerDims, elOffset)\r\n }\r\n\r\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\r\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\r\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\r\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\r\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\r\n\r\n }\r\n\r\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\r\n var delta = { top: 0, left: 0 }\r\n if (!this.$viewport) return delta\r\n\r\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\r\n var viewportDimensions = this.getPosition(this.$viewport)\r\n\r\n if (/right|left/.test(placement)) {\r\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\r\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\r\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\r\n delta.top = viewportDimensions.top - topEdgeOffset\r\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\r\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\r\n }\r\n } else {\r\n var leftEdgeOffset = pos.left - viewportPadding\r\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\r\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\r\n delta.left = viewportDimensions.left - leftEdgeOffset\r\n } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\r\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\r\n }\r\n }\r\n\r\n return delta\r\n }\r\n\r\n Tooltip.prototype.getTitle = function () {\r\n var title\r\n var $e = this.$element\r\n var o = this.options\r\n\r\n title = $e.attr('data-original-title')\r\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\r\n\r\n return title\r\n }\r\n\r\n Tooltip.prototype.getUID = function (prefix) {\r\n do prefix += ~~(Math.random() * 1000000)\r\n while (document.getElementById(prefix))\r\n return prefix\r\n }\r\n\r\n Tooltip.prototype.tip = function () {\r\n if (!this.$tip) {\r\n this.$tip = $(this.options.template)\r\n if (this.$tip.length != 1) {\r\n throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\r\n }\r\n }\r\n return this.$tip\r\n }\r\n\r\n Tooltip.prototype.arrow = function () {\r\n return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\r\n }\r\n\r\n Tooltip.prototype.enable = function () {\r\n this.enabled = true\r\n }\r\n\r\n Tooltip.prototype.disable = function () {\r\n this.enabled = false\r\n }\r\n\r\n Tooltip.prototype.toggleEnabled = function () {\r\n this.enabled = !this.enabled\r\n }\r\n\r\n Tooltip.prototype.toggle = function (e) {\r\n var self = this\r\n if (e) {\r\n self = $(e.currentTarget).data('bs.' + this.type)\r\n if (!self) {\r\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\r\n $(e.currentTarget).data('bs.' + this.type, self)\r\n }\r\n }\r\n\r\n if (e) {\r\n self.inState.click = !self.inState.click\r\n if (self.isInStateTrue()) self.enter(self)\r\n else self.leave(self)\r\n } else {\r\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\r\n }\r\n }\r\n\r\n Tooltip.prototype.destroy = function () {\r\n var that = this\r\n clearTimeout(this.timeout)\r\n this.hide(function () {\r\n that.$element.off('.' + that.type).removeData('bs.' + that.type)\r\n if (that.$tip) {\r\n that.$tip.detach()\r\n }\r\n that.$tip = null\r\n that.$arrow = null\r\n that.$viewport = null\r\n that.$element = null\r\n })\r\n }\r\n\r\n\r\n // TOOLTIP PLUGIN DEFINITION\r\n // =========================\r\n\r\n function Plugin(option) {\r\n return this.each(function () {\r\n var $this = $(this)\r\n var data = $this.data('bs.tooltip')\r\n var options = typeof option == 'object' && option\r\n\r\n if (!data && /destroy|hide/.test(option)) return\r\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\r\n if (typeof option == 'string') data[option]()\r\n })\r\n }\r\n\r\n var old = $.fn.tooltip\r\n\r\n $.fn.tooltip = Plugin\r\n $.fn.tooltip.Constructor = Tooltip\r\n\r\n\r\n // TOOLTIP NO CONFLICT\r\n // ===================\r\n\r\n $.fn.tooltip.noConflict = function () {\r\n $.fn.tooltip = old\r\n return this\r\n }\r\n\r\n}(jQuery);\r\n","/* ========================================================================\r\n * Bootstrap: popover.js v3.3.7\r\n * http://getbootstrap.com/javascript/#popovers\r\n * ========================================================================\r\n * Copyright 2011-2016 Twitter, Inc.\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\r\n * ======================================================================== */\r\n\r\n\r\n+function ($) {\r\n 'use strict';\r\n\r\n // POPOVER PUBLIC CLASS DEFINITION\r\n // ===============================\r\n\r\n var Popover = function (element, options) {\r\n this.init('popover', element, options)\r\n }\r\n\r\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\r\n\r\n Popover.VERSION = '3.3.7'\r\n\r\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\r\n placement: 'right',\r\n trigger: 'click',\r\n content: '',\r\n template: '

'\r\n })\r\n\r\n\r\n // NOTE: POPOVER EXTENDS tooltip.js\r\n // ================================\r\n\r\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\r\n\r\n Popover.prototype.constructor = Popover\r\n\r\n Popover.prototype.getDefaults = function () {\r\n return Popover.DEFAULTS\r\n }\r\n\r\n Popover.prototype.setContent = function () {\r\n var $tip = this.tip()\r\n var title = this.getTitle()\r\n var content = this.getContent()\r\n\r\n $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\r\n $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events\r\n this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\r\n ](content)\r\n\r\n $tip.removeClass('fade top bottom left right in')\r\n\r\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\r\n // this manually by checking the contents.\r\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\r\n }\r\n\r\n Popover.prototype.hasContent = function () {\r\n return this.getTitle() || this.getContent()\r\n }\r\n\r\n Popover.prototype.getContent = function () {\r\n var $e = this.$element\r\n var o = this.options\r\n\r\n return $e.attr('data-content')\r\n || (typeof o.content == 'function' ?\r\n o.content.call($e[0]) :\r\n o.content)\r\n }\r\n\r\n Popover.prototype.arrow = function () {\r\n return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\r\n }\r\n\r\n\r\n // POPOVER PLUGIN DEFINITION\r\n // =========================\r\n\r\n function Plugin(option) {\r\n return this.each(function () {\r\n var $this = $(this)\r\n var data = $this.data('bs.popover')\r\n var options = typeof option == 'object' && option\r\n\r\n if (!data && /destroy|hide/.test(option)) return\r\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\r\n if (typeof option == 'string') data[option]()\r\n })\r\n }\r\n\r\n var old = $.fn.popover\r\n\r\n $.fn.popover = Plugin\r\n $.fn.popover.Constructor = Popover\r\n\r\n\r\n // POPOVER NO CONFLICT\r\n // ===================\r\n\r\n $.fn.popover.noConflict = function () {\r\n $.fn.popover = old\r\n return this\r\n }\r\n\r\n}(jQuery);\r\n","/* ========================================================================\r\n * Bootstrap: scrollspy.js v3.3.7\r\n * http://getbootstrap.com/javascript/#scrollspy\r\n * ========================================================================\r\n * Copyright 2011-2016 Twitter, Inc.\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\r\n * ======================================================================== */\r\n\r\n\r\n+function ($) {\r\n 'use strict';\r\n\r\n // SCROLLSPY CLASS DEFINITION\r\n // ==========================\r\n\r\n function ScrollSpy(element, options) {\r\n this.$body = $(document.body)\r\n this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\r\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\r\n this.selector = (this.options.target || '') + ' .nav li > a'\r\n this.offsets = []\r\n this.targets = []\r\n this.activeTarget = null\r\n this.scrollHeight = 0\r\n\r\n this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\r\n this.refresh()\r\n this.process()\r\n }\r\n\r\n ScrollSpy.VERSION = '3.3.7'\r\n\r\n ScrollSpy.DEFAULTS = {\r\n offset: 10\r\n }\r\n\r\n ScrollSpy.prototype.getScrollHeight = function () {\r\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\r\n }\r\n\r\n ScrollSpy.prototype.refresh = function () {\r\n var that = this\r\n var offsetMethod = 'offset'\r\n var offsetBase = 0\r\n\r\n this.offsets = []\r\n this.targets = []\r\n this.scrollHeight = this.getScrollHeight()\r\n\r\n if (!$.isWindow(this.$scrollElement[0])) {\r\n offsetMethod = 'position'\r\n offsetBase = this.$scrollElement.scrollTop()\r\n }\r\n\r\n this.$body\r\n .find(this.selector)\r\n .map(function () {\r\n var $el = $(this)\r\n var href = $el.data('target') || $el.attr('href')\r\n var $href = /^#./.test(href) && $(href)\r\n\r\n return ($href\r\n && $href.length\r\n && $href.is(':visible')\r\n && [[$href[offsetMethod]().top + offsetBase, href]]) || null\r\n })\r\n .sort(function (a, b) { return a[0] - b[0] })\r\n .each(function () {\r\n that.offsets.push(this[0])\r\n that.targets.push(this[1])\r\n })\r\n }\r\n\r\n ScrollSpy.prototype.process = function () {\r\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\r\n var scrollHeight = this.getScrollHeight()\r\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()\r\n var offsets = this.offsets\r\n var targets = this.targets\r\n var activeTarget = this.activeTarget\r\n var i\r\n\r\n if (this.scrollHeight != scrollHeight) {\r\n this.refresh()\r\n }\r\n\r\n if (scrollTop >= maxScroll) {\r\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\r\n }\r\n\r\n if (activeTarget && scrollTop < offsets[0]) {\r\n this.activeTarget = null\r\n return this.clear()\r\n }\r\n\r\n for (i = offsets.length; i--;) {\r\n activeTarget != targets[i]\r\n && scrollTop >= offsets[i]\r\n && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\r\n && this.activate(targets[i])\r\n }\r\n }\r\n\r\n ScrollSpy.prototype.activate = function (target) {\r\n this.activeTarget = target\r\n\r\n this.clear()\r\n\r\n var selector = this.selector +\r\n '[data-target=\"' + target + '\"],' +\r\n this.selector + '[href=\"' + target + '\"]'\r\n\r\n var active = $(selector)\r\n .parents('li')\r\n .addClass('active')\r\n\r\n if (active.parent('.dropdown-menu').length) {\r\n active = active\r\n .closest('li.dropdown')\r\n .addClass('active')\r\n }\r\n\r\n active.trigger('activate.bs.scrollspy')\r\n }\r\n\r\n ScrollSpy.prototype.clear = function () {\r\n $(this.selector)\r\n .parentsUntil(this.options.target, '.active')\r\n .removeClass('active')\r\n }\r\n\r\n\r\n // SCROLLSPY PLUGIN DEFINITION\r\n // ===========================\r\n\r\n function Plugin(option) {\r\n return this.each(function () {\r\n var $this = $(this)\r\n var data = $this.data('bs.scrollspy')\r\n var options = typeof option == 'object' && option\r\n\r\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\r\n if (typeof option == 'string') data[option]()\r\n })\r\n }\r\n\r\n var old = $.fn.scrollspy\r\n\r\n $.fn.scrollspy = Plugin\r\n $.fn.scrollspy.Constructor = ScrollSpy\r\n\r\n\r\n // SCROLLSPY NO CONFLICT\r\n // =====================\r\n\r\n $.fn.scrollspy.noConflict = function () {\r\n $.fn.scrollspy = old\r\n return this\r\n }\r\n\r\n\r\n // SCROLLSPY DATA-API\r\n // ==================\r\n\r\n $(window).on('load.bs.scrollspy.data-api', function () {\r\n $('[data-spy=\"scroll\"]').each(function () {\r\n var $spy = $(this)\r\n Plugin.call($spy, $spy.data())\r\n })\r\n })\r\n\r\n}(jQuery);\r\n","/* ========================================================================\r\n * Bootstrap: tab.js v3.3.7\r\n * http://getbootstrap.com/javascript/#tabs\r\n * ========================================================================\r\n * Copyright 2011-2016 Twitter, Inc.\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\r\n * ======================================================================== */\r\n\r\n\r\n+function ($) {\r\n 'use strict';\r\n\r\n // TAB CLASS DEFINITION\r\n // ====================\r\n\r\n var Tab = function (element) {\r\n // jscs:disable requireDollarBeforejQueryAssignment\r\n this.element = $(element)\r\n // jscs:enable requireDollarBeforejQueryAssignment\r\n }\r\n\r\n Tab.VERSION = '3.3.7'\r\n\r\n Tab.TRANSITION_DURATION = 150\r\n\r\n Tab.prototype.show = function () {\r\n var $this = this.element\r\n var $ul = $this.closest('ul:not(.dropdown-menu)')\r\n var selector = $this.data('target')\r\n\r\n if (!selector) {\r\n selector = $this.attr('href')\r\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\r\n }\r\n\r\n if ($this.parent('li').hasClass('active')) return\r\n\r\n var $previous = $ul.find('.active:last a')\r\n var hideEvent = $.Event('hide.bs.tab', {\r\n relatedTarget: $this[0]\r\n })\r\n var showEvent = $.Event('show.bs.tab', {\r\n relatedTarget: $previous[0]\r\n })\r\n\r\n $previous.trigger(hideEvent)\r\n $this.trigger(showEvent)\r\n\r\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\r\n\r\n var $target = $(selector)\r\n\r\n this.activate($this.closest('li'), $ul)\r\n this.activate($target, $target.parent(), function () {\r\n $previous.trigger({\r\n type: 'hidden.bs.tab',\r\n relatedTarget: $this[0]\r\n })\r\n $this.trigger({\r\n type: 'shown.bs.tab',\r\n relatedTarget: $previous[0]\r\n })\r\n })\r\n }\r\n\r\n Tab.prototype.activate = function (element, container, callback) {\r\n var $active = container.find('> .active')\r\n var transition = callback\r\n && $.support.transition\r\n && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\r\n\r\n function next() {\r\n $active\r\n .removeClass('active')\r\n .find('> .dropdown-menu > .active')\r\n .removeClass('active')\r\n .end()\r\n .find('[data-toggle=\"tab\"]')\r\n .attr('aria-expanded', false)\r\n\r\n element\r\n .addClass('active')\r\n .find('[data-toggle=\"tab\"]')\r\n .attr('aria-expanded', true)\r\n\r\n if (transition) {\r\n element[0].offsetWidth // reflow for transition\r\n element.addClass('in')\r\n } else {\r\n element.removeClass('fade')\r\n }\r\n\r\n if (element.parent('.dropdown-menu').length) {\r\n element\r\n .closest('li.dropdown')\r\n .addClass('active')\r\n .end()\r\n .find('[data-toggle=\"tab\"]')\r\n .attr('aria-expanded', true)\r\n }\r\n\r\n callback && callback()\r\n }\r\n\r\n $active.length && transition ?\r\n $active\r\n .one('bsTransitionEnd', next)\r\n .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\r\n next()\r\n\r\n $active.removeClass('in')\r\n }\r\n\r\n\r\n // TAB PLUGIN DEFINITION\r\n // =====================\r\n\r\n function Plugin(option) {\r\n return this.each(function () {\r\n var $this = $(this)\r\n var data = $this.data('bs.tab')\r\n\r\n if (!data) $this.data('bs.tab', (data = new Tab(this)))\r\n if (typeof option == 'string') data[option]()\r\n })\r\n }\r\n\r\n var old = $.fn.tab\r\n\r\n $.fn.tab = Plugin\r\n $.fn.tab.Constructor = Tab\r\n\r\n\r\n // TAB NO CONFLICT\r\n // ===============\r\n\r\n $.fn.tab.noConflict = function () {\r\n $.fn.tab = old\r\n return this\r\n }\r\n\r\n\r\n // TAB DATA-API\r\n // ============\r\n\r\n var clickHandler = function (e) {\r\n e.preventDefault()\r\n Plugin.call($(this), 'show')\r\n }\r\n\r\n $(document)\r\n .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\r\n .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\r\n\r\n}(jQuery);\r\n","/* ========================================================================\r\n * Bootstrap: affix.js v3.3.7\r\n * http://getbootstrap.com/javascript/#affix\r\n * ========================================================================\r\n * Copyright 2011-2016 Twitter, Inc.\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\r\n * ======================================================================== */\r\n\r\n\r\n+function ($) {\r\n 'use strict';\r\n\r\n // AFFIX CLASS DEFINITION\r\n // ======================\r\n\r\n var Affix = function (element, options) {\r\n this.options = $.extend({}, Affix.DEFAULTS, options)\r\n\r\n this.$target = $(this.options.target)\r\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\r\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\r\n\r\n this.$element = $(element)\r\n this.affixed = null\r\n this.unpin = null\r\n this.pinnedOffset = null\r\n\r\n this.checkPosition()\r\n }\r\n\r\n Affix.VERSION = '3.3.7'\r\n\r\n Affix.RESET = 'affix affix-top affix-bottom'\r\n\r\n Affix.DEFAULTS = {\r\n offset: 0,\r\n target: window\r\n }\r\n\r\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\r\n var scrollTop = this.$target.scrollTop()\r\n var position = this.$element.offset()\r\n var targetHeight = this.$target.height()\r\n\r\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\r\n\r\n if (this.affixed == 'bottom') {\r\n if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\r\n return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\r\n }\r\n\r\n var initializing = this.affixed == null\r\n var colliderTop = initializing ? scrollTop : position.top\r\n var colliderHeight = initializing ? targetHeight : height\r\n\r\n if (offsetTop != null && scrollTop <= offsetTop) return 'top'\r\n if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\r\n\r\n return false\r\n }\r\n\r\n Affix.prototype.getPinnedOffset = function () {\r\n if (this.pinnedOffset) return this.pinnedOffset\r\n this.$element.removeClass(Affix.RESET).addClass('affix')\r\n var scrollTop = this.$target.scrollTop()\r\n var position = this.$element.offset()\r\n return (this.pinnedOffset = position.top - scrollTop)\r\n }\r\n\r\n Affix.prototype.checkPositionWithEventLoop = function () {\r\n setTimeout($.proxy(this.checkPosition, this), 1)\r\n }\r\n\r\n Affix.prototype.checkPosition = function () {\r\n if (!this.$element.is(':visible')) return\r\n\r\n var height = this.$element.height()\r\n var offset = this.options.offset\r\n var offsetTop = offset.top\r\n var offsetBottom = offset.bottom\r\n var scrollHeight = Math.max($(document).height(), $(document.body).height())\r\n\r\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\r\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)\r\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\r\n\r\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\r\n\r\n if (this.affixed != affix) {\r\n if (this.unpin != null) this.$element.css('top', '')\r\n\r\n var affixType = 'affix' + (affix ? '-' + affix : '')\r\n var e = $.Event(affixType + '.bs.affix')\r\n\r\n this.$element.trigger(e)\r\n\r\n if (e.isDefaultPrevented()) return\r\n\r\n this.affixed = affix\r\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\r\n\r\n this.$element\r\n .removeClass(Affix.RESET)\r\n .addClass(affixType)\r\n .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\r\n }\r\n\r\n if (affix == 'bottom') {\r\n this.$element.offset({\r\n top: scrollHeight - height - offsetBottom\r\n })\r\n }\r\n }\r\n\r\n\r\n // AFFIX PLUGIN DEFINITION\r\n // =======================\r\n\r\n function Plugin(option) {\r\n return this.each(function () {\r\n var $this = $(this)\r\n var data = $this.data('bs.affix')\r\n var options = typeof option == 'object' && option\r\n\r\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\r\n if (typeof option == 'string') data[option]()\r\n })\r\n }\r\n\r\n var old = $.fn.affix\r\n\r\n $.fn.affix = Plugin\r\n $.fn.affix.Constructor = Affix\r\n\r\n\r\n // AFFIX NO CONFLICT\r\n // =================\r\n\r\n $.fn.affix.noConflict = function () {\r\n $.fn.affix = old\r\n return this\r\n }\r\n\r\n\r\n // AFFIX DATA-API\r\n // ==============\r\n\r\n $(window).on('load', function () {\r\n $('[data-spy=\"affix\"]').each(function () {\r\n var $spy = $(this)\r\n var data = $spy.data()\r\n\r\n data.offset = data.offset || {}\r\n\r\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\r\n if (data.offsetTop != null) data.offset.top = data.offsetTop\r\n\r\n Plugin.call($spy, data)\r\n })\r\n })\r\n\r\n}(jQuery);\r\n","/**\r\n * @file\r\n * A JavaScript file for the theme.\r\n *\r\n * In order for this JavaScript to be loaded on pages, see the instructions in\r\n * the README.txt next to this file.\r\n */\r\n\r\n// JavaScript should be made compatible with libraries other than jQuery by\r\n// wrapping it with an \"anonymous closure\". See:\r\n// - https://drupal.org/node/1446420\r\n// - http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth\r\n(function ($, Drupal, window, document) {\r\n\r\n // To understand behaviors, see https://drupal.org/node/756722#behaviors\r\n Drupal.behaviors.basic = {\r\n attach: function (context, settings) {\r\n // Comentado ya que está deprecado en JQUERY 1.8\r\n //$(window).load(function () {\r\n // // Execute code once the window is fully loaded.\r\n //});\r\n\r\n $(window).resize(function () {\r\n // Execute code when the window is resized.\r\n });\r\n\r\n $(window).scroll(function () {\r\n // Execute code when the window scrolls.\r\n });\r\n\r\n var resize_timeout = 0;\r\n\r\n var refreshHeader = function () {\r\n clearTimeout(resize_timeout);\r\n resize_timeout = setTimeout(function () {\r\n var $screen_sm = 768;\r\n var $width = $(window).width();\r\n if ($width < $screen_sm) {\r\n var $header = $(\"#header\");\r\n $header.addClass('headerFixed');\r\n $(\"#wrapper\").css('margin-top', $header.height());\r\n }\r\n else {\r\n $(\"#header\").removeClass('headerFixed');\r\n $(\"#wrapper\").css('margin-top', '0');\r\n }\r\n }, 150);\r\n };\r\n\r\n $(document).ready(function () {\r\n\r\n $(window).resize(function () {\r\n refreshHeader();\r\n });\r\n\r\n refreshHeader();\r\n\r\n var $block_menu = $('#block-menu-block-3');\r\n $block_menu.find('ul.menu li:has(ul)').once('proccess-items', function () {\r\n $(this).addClass('menu-inner');\r\n });\r\n\r\n $('#more-menu').once('process-button', function () {\r\n $(this).click(function (e) {\r\n e.preventDefault();\r\n $block_menu.find('ul.menu').toggleClass('menu-expanded');\r\n });\r\n });\r\n });\r\n }\r\n };\r\n\r\n}(jQuery, Drupal, this, this.document));\r\n"],"sourceRoot":"assets/scripts/"}