diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..9b2fd327 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +/trunk/web/docs +/trunk/web/cache +/trunk/web/images +/trunk/.* +.DS_Store +/trunk/web/uploads +/trunk/web/web +/trunk/src/AppBundle/Resources/public/js/min diff --git a/trunk/app/AppKernel.php b/trunk/app/AppKernel.php index 3e2ea928..d6ef4740 100644 --- a/trunk/app/AppKernel.php +++ b/trunk/app/AppKernel.php @@ -19,6 +19,7 @@ class AppKernel extends Kernel new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(), new AppBundle\AppBundle(), new WhiteOctober\TCPDFBundle\WhiteOctoberTCPDFBundle(), + new Gregwar\ImageBundle\GregwarImageBundle(), ]; if (in_array($this->getEnvironment(), ['dev', 'test'], true)) { diff --git a/trunk/app/Resources/views/base.html.twig b/trunk/app/Resources/views/base.html.twig index 80207b59..4e5b4f3c 100644 --- a/trunk/app/Resources/views/base.html.twig +++ b/trunk/app/Resources/views/base.html.twig @@ -1,4 +1,4 @@ - + {% if app.debug -%} {%- endif %} @@ -8,17 +8,12 @@ - - - {% block page_title %} - {{ page is defined ? page.pagetitle : 'Kulturreisen vom Reiseveranstalter STERN TOURS aus Berlin' }} - {% endblock page_title %} - + {% block page_title %}{{ page is defined ? page.pagetitle : 'Kulturreisen vom Reiseveranstalter STERN TOURS aus Berlin' }}{% endblock page_title %} {% block metatags %} - + {% block meta_description -%} {%- if page is defined and page.description is not empty -%} @@ -39,11 +34,24 @@ {% endblock %} {% endblock %} - - - - - + + + + + + + + + + + + + + + + + + {% block canonical_tag %} {% if canonical_url is not defined and page is defined %} @@ -65,45 +73,50 @@ {% endif %} {% endblock %} + + + + + + + {% block stylesheets %} - {% stylesheets - 'bundles/app/css/bootstrap-3.3.7.css' - filter='cssrewrite' - %} - - {% endstylesheets %} - {% stylesheets - 'bundles/app/css/custom.css' - 'bundles/app/css/cookieconsent.min.css' - filter='cssrewrite' - %} - - {% endstylesheets %} - {# TODO Move to custom.css #} {% endblock stylesheets %} - +
- +
+
+ +
+
{{ render(controller('AppBundle:Component:header')) }} {% block header2 %} -
- +
- Top Kundenservice + Top Kundenservice
  • Spezialist für Kulturreisen
  • @@ -134,7 +147,6 @@
    - {% include 'default/components/sidebar.html.twig' with { nav_sidebar_widget_block: block('nav_sidebar_widget') ?? null, search_sidebar_widget_block: block('search_sidebar_widget') ?? null, @@ -143,11 +155,9 @@ offers_sidebar_widget_block: block('offers_sidebar_widget') ?? null, feedbacks_sidebar_widget_block: block('feedbacks_sidebar_widget') ?? null, } %} -
    {% block body %}{% endblock %}
    -
    @@ -164,44 +174,8 @@ {% embed 'default/components/embed/modal.html.twig' with {id: 'default'} %}{% endembed %} {% block javascripts %} - {% javascripts - '@AppBundle/Resources/public/js/jquery-3.1.1.js' - '@AppBundle/Resources/public/js/jquery-ui-1.12.1.js' - '@AppBundle/Resources/public/js/bootstrap-3.3.7.js' - '@AppBundle/Resources/public/js/jquery.prettyPhoto-3.1.6.js' - '@AppBundle/Resources/public/js/parallax.js' - '@AppBundle/Resources/public/js/owl.carousel-2.2.0.js' - '@AppBundle/Resources/public/js/bootstrap-select-1.12.0.js' - '@AppBundle/Resources/public/js/validator.js' - '@AppBundle/Resources/public/js/custom.js' - '@AppBundle/Resources/public/js/cookieconsent.min.js' - %} - - {% endjavascripts %} + {% endblock javascripts %} - - - diff --git a/trunk/app/Resources/views/default/components/_header.html.twig b/trunk/app/Resources/views/default/components/_header.html.twig new file mode 100644 index 00000000..af2e2eaa --- /dev/null +++ b/trunk/app/Resources/views/default/components/_header.html.twig @@ -0,0 +1,131 @@ +
    +
    +
    +
    + +
    +
    +
    + + +
    \ No newline at end of file diff --git a/trunk/app/Resources/views/default/components/footer.html.twig b/trunk/app/Resources/views/default/components/footer.html.twig index 4b041110..dadbe44f 100644 --- a/trunk/app/Resources/views/default/components/footer.html.twig +++ b/trunk/app/Resources/views/default/components/footer.html.twig @@ -27,7 +27,9 @@

    Ihre Vorteile bei STERN TOURS

    Unsere Produktauswahl ist vielfältig. Neben dem Pauschaltourismus und Jugendreisen sind wir auf individuelle Kulturreisen spezialisiert.

    - {% image '@AppBundle/Resources/public/images/logos/stern-tours.png' %}Stern Tours 168 Jahre{% endimage %} + + + Stern Tours 20 Jahre
diff --git a/trunk/app/Resources/views/default/components/home/slider.html.twig b/trunk/app/Resources/views/default/components/home/slider.html.twig index 2135c954..1927dd76 100644 --- a/trunk/app/Resources/views/default/components/home/slider.html.twig +++ b/trunk/app/Resources/views/default/components/home/slider.html.twig @@ -8,7 +8,7 @@
- Top Kundenservice + Top Kundenservice
  • Spezialist für Kulturreisen
  • @@ -28,32 +28,34 @@ +
    + +
    + +
-
+
@@ -61,29 +63,29 @@ Hier bitte die Tabs über Parameter Steuer, wenn JS aus. Paramter an URL hängen und dann den jeweiligen Tab auf active setzen. --> - -
-
-
- {{ form_field_pho(search_form.c) }} -
+ +
-
+
KULTURREISEN
+
+
{{ form_field_pho(search_form.b, 'Anreise') }}
-
+
{{ form_field_pho(search_form.e, 'Abreise') }}
-
+
+ {{ form_field_pho(search_form.c) }} +
+ +
' + : ''; + var actionsbox = this.multiple && this.options.actionsBox ? + '
' + + '
' + + '' + + '' + + '
' + + '
' + : ''; + var donebutton = this.multiple && this.options.doneButton ? + '
' + + '
' + + '' + + '
' + + '
' + : ''; + var drop = + ''; + + return $(drop); + }, + + setPositionData: function () { + this.selectpicker.view.canHighlight = []; + + for (var i = 0; i < this.selectpicker.current.data.length; i++) { + var li = this.selectpicker.current.data[i], + canHighlight = true; + + if (li.type === 'divider') { + canHighlight = false; + li.height = this.sizeInfo.dividerHeight; + } else if (li.type === 'optgroup-label') { + canHighlight = false; + li.height = this.sizeInfo.dropdownHeaderHeight; + } else { + li.height = this.sizeInfo.liHeight; + } + + if (li.disabled) canHighlight = false; + + this.selectpicker.view.canHighlight.push(canHighlight); + + li.position = (i === 0 ? 0 : this.selectpicker.current.data[i - 1].position) + li.height; + } + }, + + isVirtual: function () { + return (this.options.virtualScroll !== false) && this.selectpicker.main.elements.length >= this.options.virtualScroll || this.options.virtualScroll === true; + }, + + createView: function (isSearching, scrollTop) { + scrollTop = scrollTop || 0; + + var that = this; + + this.selectpicker.current = isSearching ? this.selectpicker.search : this.selectpicker.main; + + var $lis; + var active = []; + var selected; + var prevActive; + var activeIndex; + var prevActiveIndex; + + this.setPositionData(); + + scroll(scrollTop, true); + + this.$menuInner.off('scroll.createView').on('scroll.createView', function (e, updateValue) { + if (!that.noScroll) scroll(this.scrollTop, updateValue); + that.noScroll = false; + }); + + function scroll(scrollTop, init) { + var size = that.selectpicker.current.elements.length, + chunks = [], + chunkSize, + chunkCount, + firstChunk, + lastChunk, + currentChunk = undefined, + prevPositions, + positionIsDifferent, + previousElements, + menuIsDifferent = true, + isVirtual = that.isVirtual(); + + that.selectpicker.view.scrollTop = scrollTop; + + if (isVirtual === true) { + // if an option that is encountered that is wider than the current menu width, update the menu width accordingly + if (that.sizeInfo.hasScrollBar && that.$menu[0].offsetWidth > that.sizeInfo.totalMenuWidth) { + that.sizeInfo.menuWidth = that.$menu[0].offsetWidth; + that.sizeInfo.totalMenuWidth = that.sizeInfo.menuWidth + that.sizeInfo.scrollBarWidth; + that.$menu.css('min-width', that.sizeInfo.menuWidth); + } + } + + chunkSize = Math.ceil(that.sizeInfo.menuInnerHeight / that.sizeInfo.liHeight * 1.5); // number of options in a chunk + chunkCount = Math.round(size / chunkSize) || 1; // number of chunks + + for (var i = 0; i < chunkCount; i++) { + var end_of_chunk = (i + 1) * chunkSize; + + if (i === chunkCount - 1) { + end_of_chunk = size; + } + + chunks[i] = [ + (i) * chunkSize + (!i ? 0 : 1), + end_of_chunk + ]; + + if (!size) break; + + if (currentChunk === undefined && scrollTop <= that.selectpicker.current.data[end_of_chunk - 1].position - that.sizeInfo.menuInnerHeight) { + currentChunk = i; + } + } + + if (currentChunk === undefined) currentChunk = 0; + + prevPositions = [that.selectpicker.view.position0, that.selectpicker.view.position1]; + + // always display previous, current, and next chunks + firstChunk = Math.max(0, currentChunk - 1); + lastChunk = Math.min(chunkCount - 1, currentChunk + 1); + + that.selectpicker.view.position0 = Math.max(0, chunks[firstChunk][0]) || 0; + that.selectpicker.view.position1 = Math.min(size, chunks[lastChunk][1]) || 0; + + positionIsDifferent = prevPositions[0] !== that.selectpicker.view.position0 || prevPositions[1] !== that.selectpicker.view.position1; + + if (that.activeIndex !== undefined) { + prevActive = that.selectpicker.current.elements[that.selectpicker.current.map.newIndex[that.prevActiveIndex]]; + active = that.selectpicker.current.elements[that.selectpicker.current.map.newIndex[that.activeIndex]]; + selected = that.selectpicker.current.elements[that.selectpicker.current.map.newIndex[that.selectedIndex]]; + + if (init) { + if (that.activeIndex !== that.selectedIndex) { + active.classList.remove('active'); + if (active.firstChild) active.firstChild.classList.remove('active'); + } + that.activeIndex = undefined; + } + + if (that.activeIndex && that.activeIndex !== that.selectedIndex && selected && selected.length) { + selected.classList.remove('active'); + if (selected.firstChild) selected.firstChild.classList.remove('active'); + } + } + + if (that.prevActiveIndex !== undefined && that.prevActiveIndex !== that.activeIndex && that.prevActiveIndex !== that.selectedIndex && prevActive && prevActive.length) { + prevActive.classList.remove('active'); + if (prevActive.firstChild) prevActive.firstChild.classList.remove('active'); + } + + if (init || positionIsDifferent) { + previousElements = that.selectpicker.view.visibleElements ? that.selectpicker.view.visibleElements.slice() : []; + + that.selectpicker.view.visibleElements = that.selectpicker.current.elements.slice(that.selectpicker.view.position0, that.selectpicker.view.position1); + + that.setOptionStatus(); + + // if searching, check to make sure the list has actually been updated before updating DOM + // this prevents unnecessary repaints + if ( isSearching || (isVirtual === false && init) ) menuIsDifferent = !isEqual(previousElements, that.selectpicker.view.visibleElements); + + // if virtual scroll is disabled and not searching, + // menu should never need to be updated more than once + if ( (init || isVirtual === true) && menuIsDifferent ) { + var menuInner = that.$menuInner[0], + menuFragment = document.createDocumentFragment(), + emptyMenu = menuInner.firstChild.cloneNode(false), + marginTop, + marginBottom, + elements = isVirtual === true ? that.selectpicker.view.visibleElements : that.selectpicker.current.elements; + + // replace the existing UL with an empty one - this is faster than $.empty() + menuInner.replaceChild(emptyMenu, menuInner.firstChild); + + for (var i = 0, visibleElementsLen = elements.length; i < visibleElementsLen; i++) { + menuFragment.appendChild(elements[i]); + } + + if (isVirtual === true) { + marginTop = (that.selectpicker.view.position0 === 0 ? 0 : that.selectpicker.current.data[that.selectpicker.view.position0 - 1].position), + marginBottom = (that.selectpicker.view.position1 > size - 1 ? 0 : that.selectpicker.current.data[size - 1].position - that.selectpicker.current.data[that.selectpicker.view.position1 - 1].position); + + menuInner.firstChild.style.marginTop = marginTop + 'px'; + menuInner.firstChild.style.marginBottom = marginBottom + 'px'; + } + + menuInner.firstChild.appendChild(menuFragment); + } + } + + that.prevActiveIndex = that.activeIndex; + + if (!that.options.liveSearch) { + that.$menuInner.focus(); + } else if (isSearching && init) { + var index = 0, + newActive; + + if (!that.selectpicker.view.canHighlight[index]) { + index = 1 + that.selectpicker.view.canHighlight.slice(1).indexOf(true); + } + + newActive = that.selectpicker.view.visibleElements[index]; + + if (that.selectpicker.view.currentActive) { + that.selectpicker.view.currentActive.classList.remove('active'); + if (that.selectpicker.view.currentActive.firstChild) that.selectpicker.view.currentActive.firstChild.classList.remove('active'); + } + + if (newActive) { + newActive.classList.add('active'); + if (newActive.firstChild) newActive.firstChild.classList.add('active'); + } + + that.activeIndex = that.selectpicker.current.map.originalIndex[index]; + } + } + + $(window).off('resize.createView').on('resize.createView', function () { + scroll(that.$menuInner[0].scrollTop); + }); + }, + + createLi: function () { + var that = this, + mainElements = [], + widestOption, + availableOptionsCount = 0, + widestOptionLength = 0, + mainData = [], + optID = 0, + headerIndex = 0, + liIndex = -1; // increment liIndex whenever a new
  • element is created to ensure newIndex is correct + + if (!this.selectpicker.view.titleOption) this.selectpicker.view.titleOption = document.createElement('option'); + + var elementTemplates = { + span: document.createElement('span'), + subtext: document.createElement('small'), + a: document.createElement('a'), + li: document.createElement('li'), + whitespace: document.createTextNode("\u00A0") + }, + checkMark = elementTemplates.span.cloneNode(false), + fragment = document.createDocumentFragment(); + + checkMark.className = that.options.iconBase + ' ' + that.options.tickIcon + ' check-mark'; + elementTemplates.a.appendChild(checkMark); + elementTemplates.a.setAttribute('role', 'option'); + + elementTemplates.subtext.className = 'text-muted'; + + elementTemplates.text = elementTemplates.span.cloneNode(false); + elementTemplates.text.className = 'text'; + + // Helper functions + /** + * @param content + * @param [index] + * @param [classes] + * @param [optgroup] + * @returns {HTMLElement} + */ + var generateLI = function (content, index, classes, optgroup) { + var li = elementTemplates.li.cloneNode(false); + + if (content) { + if (content.nodeType === 1 || content.nodeType === 11) { + li.appendChild(content); + } else { + li.innerHTML = content; + } + } + + if (typeof classes !== 'undefined' && '' !== classes) li.className = classes; + if (typeof optgroup !== 'undefined' && null !== optgroup) li.classList.add('optgroup-' + optgroup); + + return li; + }; + + /** + * @param text + * @param [classes] + * @param [inline] + * @returns {string} + */ + var generateA = function (text, classes, inline) { + var a = elementTemplates.a.cloneNode(true); + + if (text) { + if (text.nodeType === 11) { + a.appendChild(text); + } else { + a.insertAdjacentHTML('beforeend', text); + } + } + + if (typeof classes !== 'undefined' & '' !== classes) a.className = classes; + if (version.major === '4') a.classList.add('dropdown-item'); + if (inline) a.setAttribute('style', inline); + + return a; + }; + + var generateText = function (options) { + var textElement = elementTemplates.text.cloneNode(false), + optionSubtextElement, + optionIconElement; + + if (options.optionContent) { + textElement.innerHTML = options.optionContent; + } else { + textElement.textContent = options.text; + + if (options.optionIcon) { + var whitespace = elementTemplates.whitespace.cloneNode(false); + + optionIconElement = elementTemplates.span.cloneNode(false); + optionIconElement.className = that.options.iconBase + ' ' + options.optionIcon; + + fragment.appendChild(optionIconElement); + fragment.appendChild(whitespace); + } + + if (options.optionSubtext) { + optionSubtextElement = elementTemplates.subtext.cloneNode(false); + optionSubtextElement.innerHTML = options.optionSubtext; + textElement.appendChild(optionSubtextElement); + } + } + + fragment.appendChild(textElement); + + return fragment; + }; + + var generateLabel = function (options) { + var labelTextElement = elementTemplates.text.cloneNode(false), + labelSubtextElement, + labelIconElement; + + labelTextElement.innerHTML = options.labelEscaped; + + if (options.labelIcon) { + var whitespace = elementTemplates.whitespace.cloneNode(false); + + labelIconElement = elementTemplates.span.cloneNode(false); + labelIconElement.className = that.options.iconBase + ' ' + options.labelIcon; + + fragment.appendChild(labelIconElement); + fragment.appendChild(whitespace); + } + + if (options.labelSubtext) { + labelSubtextElement = elementTemplates.subtext.cloneNode(false); + labelSubtextElement.textContent = options.labelSubtext; + labelTextElement.appendChild(labelSubtextElement); + } + + fragment.appendChild(labelTextElement); + + return fragment; + } + + if (this.options.title && !this.multiple) { + // this option doesn't create a new
  • element, but does add a new option, so liIndex is decreased + // since newIndex is recalculated on every refresh, liIndex needs to be decreased even if the titleOption is already appended + liIndex--; + + var element = this.$element[0], + isSelected = false, + titleNotAppended = !this.selectpicker.view.titleOption.parentNode; + + if (titleNotAppended) { + // Use native JS to prepend option (faster) + this.selectpicker.view.titleOption.className = 'bs-title-option'; + this.selectpicker.view.titleOption.value = ''; + + // Check if selected or data-selected attribute is already set on an option. If not, select the titleOption option. + // the selected item may have been changed by user or programmatically before the bootstrap select plugin runs, + // if so, the select will have the data-selected attribute + var $opt = $(element.options[element.selectedIndex]); + isSelected = $opt.attr('selected') === undefined && this.$element.data('selected') === undefined; + } + + if (titleNotAppended || this.selectpicker.view.titleOption.index !== 0) { + element.insertBefore(this.selectpicker.view.titleOption, element.firstChild); + } + + // Set selected *after* appending to select, + // otherwise the option doesn't get selected in IE + // set using selectedIndex, as setting the selected attr to true here doesn't work in IE11 + if (isSelected) element.selectedIndex = 0; + } + + var $selectOptions = this.$element.find('option'); + + $selectOptions.each(function (index) { + var $this = $(this); + + liIndex++; + + if ($this.hasClass('bs-title-option')) return; + + var thisData = $this.data(); + + // Get the class and text for the option + var optionClass = this.className || '', + inline = htmlEscape(this.style.cssText), + optionContent = thisData.content, + text = this.textContent, + tokens = thisData.tokens, + subtext = thisData.subtext, + icon = thisData.icon, + $parent = $this.parent(), + parent = $parent[0], + isOptgroup = parent.tagName === 'OPTGROUP', + isOptgroupDisabled = isOptgroup && parent.disabled, + isDisabled = this.disabled || isOptgroupDisabled, + prevHiddenIndex, + showDivider = this.previousElementSibling && this.previousElementSibling.tagName === 'OPTGROUP', + textElement; + + var parentData = $parent.data(); + + if (thisData.hidden === true || that.options.hideDisabled && (isDisabled && !isOptgroup || isOptgroupDisabled)) { + // set prevHiddenIndex - the index of the first hidden option in a group of hidden options + // used to determine whether or not a divider should be placed after an optgroup if there are + // hidden options between the optgroup and the first visible option + prevHiddenIndex = thisData.prevHiddenIndex; + $this.next().data('prevHiddenIndex', (prevHiddenIndex !== undefined ? prevHiddenIndex : index)); + + liIndex--; + + // if previous element is not an optgroup + if (!showDivider) { + if (prevHiddenIndex !== undefined) { + // select the element **before** the first hidden element in the group + var prevHidden = $selectOptions[prevHiddenIndex].previousElementSibling; + + if (prevHidden && prevHidden.tagName === 'OPTGROUP' && !prevHidden.disabled) { + showDivider = true; + } + } + } + + if (showDivider && mainData[mainData.length - 1].type !== 'divider') { + liIndex++; + mainElements.push( + generateLI( + false, + null, + classNames.DIVIDER, + optID + 'div' + ) + ); + mainData.push({ + type: 'divider', + optID: optID + }); + } + + return; + } + + if (isOptgroup && thisData.divider !== true) { + if (that.options.hideDisabled && isDisabled) { + if (parentData.allOptionsDisabled === undefined) { + var $options = $parent.children(); + $parent.data('allOptionsDisabled', $options.filter(':disabled').length === $options.length); + } + + if ($parent.data('allOptionsDisabled')) { + liIndex--; + return; + } + } + + var optGroupClass = ' ' + parent.className || ''; + + if (!this.previousElementSibling) { // Is it the first option of the optgroup? + optID += 1; + + // Get the opt group label + var label = parent.label, + labelEscaped = htmlEscape(label), + labelSubtext = parentData.subtext, + labelIcon = parentData.icon; + + if (index !== 0 && mainElements.length > 0) { // Is it NOT the first option of the select && are there elements in the dropdown? + liIndex++; + mainElements.push( + generateLI( + false, + null, + classNames.DIVIDER, + optID + 'div' + ) + ); + mainData.push({ + type: 'divider', + optID: optID + }); + } + liIndex++; + + var labelElement = generateLabel({ + labelEscaped: labelEscaped, + labelSubtext: labelSubtext, + labelIcon: labelIcon + }); + + mainElements.push(generateLI(labelElement, null, 'dropdown-header' + optGroupClass, optID)); + mainData.push({ + content: labelEscaped, + subtext: labelSubtext, + type: 'optgroup-label', + optID: optID + }); + + headerIndex = liIndex - 1; + } + + if (that.options.hideDisabled && isDisabled || thisData.hidden === true) { + liIndex--; + return; + } + + textElement = generateText({ + text: text, + optionContent: optionContent, + optionSubtext: subtext, + optionIcon: icon + }); + + mainElements.push(generateLI(generateA(textElement, 'opt ' + optionClass + optGroupClass, inline), index, '', optID)); + mainData.push({ + content: optionContent || text, + subtext: subtext, + tokens: tokens, + type: 'option', + optID: optID, + headerIndex: headerIndex, + lastIndex: headerIndex + parent.childElementCount, + originalIndex: index, + data: thisData + }); + + availableOptionsCount++; + } else if (thisData.divider === true) { + mainElements.push(generateLI(false, index, classNames.DIVIDER)); + mainData.push({ + type: 'divider', + originalIndex: index, + data: thisData + }); + } else { + // if previous element is not an optgroup and hideDisabled is true + if (!showDivider && that.options.hideDisabled) { + prevHiddenIndex = thisData.prevHiddenIndex; + + if (prevHiddenIndex !== undefined) { + // select the element **before** the first hidden element in the group + var prevHidden = $selectOptions[prevHiddenIndex].previousElementSibling; + + if (prevHidden && prevHidden.tagName === 'OPTGROUP' && !prevHidden.disabled) { + showDivider = true; + } + } + } + + if (showDivider && mainData[mainData.length - 1].type !== 'divider') { + liIndex++; + mainElements.push( + generateLI( + false, + null, + classNames.DIVIDER, + optID + 'div' + ) + ); + mainData.push({ + type: 'divider', + optID: optID + }); + } + + textElement = generateText({ + text: text, + optionContent: optionContent, + optionSubtext: subtext, + optionIcon: icon + }); + + mainElements.push(generateLI(generateA(textElement, optionClass, inline), index)); + mainData.push({ + content: optionContent || text, + subtext: subtext, + tokens: tokens, + type: 'option', + originalIndex: index, + data: thisData + }); + + availableOptionsCount++; + } + + that.selectpicker.main.map.newIndex[index] = liIndex; + that.selectpicker.main.map.originalIndex[liIndex] = index; + + // get the most recent option info added to mainData + var _mainDataLast = mainData[mainData.length - 1]; + + _mainDataLast.disabled = isDisabled; + + var combinedLength = 0; + + // count the number of characters in the option - not perfect, but should work in most cases + if (_mainDataLast.content) combinedLength += _mainDataLast.content.length; + if (_mainDataLast.subtext) combinedLength += _mainDataLast.subtext.length; + // if there is an icon, ensure this option's width is checked + if (icon) combinedLength += 1; + + if (combinedLength > widestOptionLength) { + widestOptionLength = combinedLength; + + // guess which option is the widest + // use this when calculating menu width + // not perfect, but it's fast, and the width will be updating accordingly when scrolling + widestOption = mainElements[mainElements.length - 1]; + } + }); + + this.selectpicker.main.elements = mainElements; + this.selectpicker.main.data = mainData; + + this.selectpicker.current = this.selectpicker.main; + + this.selectpicker.view.widestOption = widestOption; + this.selectpicker.view.availableOptionsCount = availableOptionsCount; // faster way to get # of available options without filter + }, + + findLis: function () { + return this.$menuInner.find('.inner > li'); + }, + + render: function () { + var that = this, + $selectOptions = this.$element.find('option'), + selectedItems = [], + selectedItemsInTitle = []; + + this.togglePlaceholder(); + + this.tabIndex(); + + for (var i = 0, len = this.selectpicker.main.elements.length; i < len; i++) { + var index = this.selectpicker.main.map.originalIndex[i], + option = $selectOptions[index]; + + if (option && option.selected) { + selectedItems.push(option); + + if (selectedItemsInTitle.length < 100 && that.options.selectedTextFormat !== 'count' || selectedItems.length === 1) { + if (that.options.hideDisabled && (option.disabled || option.parentNode.tagName === 'OPTGROUP' && option.parentNode.disabled)) return; + + var thisData = this.selectpicker.main.data[i].data, + icon = thisData.icon && that.options.showIcon ? ' ' : '', + subtext, + titleItem; + + if (that.options.showSubtext && thisData.subtext && !that.multiple) { + subtext = ' ' + thisData.subtext + ''; + } else { + subtext = ''; + } + + if (option.title) { + titleItem = option.title; + } else if (thisData.content && that.options.showContent) { + titleItem = thisData.content.toString(); + } else { + titleItem = icon + option.innerHTML.trim() + subtext; + } + + selectedItemsInTitle.push(titleItem); + } + } + } + + //Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled + //Convert all the values into a comma delimited string + var title = !this.multiple ? selectedItemsInTitle[0] : selectedItemsInTitle.join(this.options.multipleSeparator); + + // add ellipsis + if (selectedItems.length > 50) title += '...'; + + // If this is a multiselect, and selectedTextFormat is count, then show 1 of 2 selected etc.. + if (this.multiple && this.options.selectedTextFormat.indexOf('count') !== -1) { + var max = this.options.selectedTextFormat.split('>'); + + if ((max.length > 1 && selectedItems.length > max[1]) || (max.length === 1 && selectedItems.length >= 2)) { + var totalCount = this.selectpicker.view.availableOptionsCount, + tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText; + + title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString()); + } + } + + if (this.options.title == undefined) { + // use .attr to ensure undefined is returned if title attribute is not set + this.options.title = this.$element.attr('title'); + } + + if (this.options.selectedTextFormat == 'static') { + title = this.options.title; + } + + //If we dont have a title, then use the default, or if nothing is set at all, use the not selected text + if (!title) { + title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText; + } + + //strip all HTML tags and trim the result, then unescape any escaped tags + this.$button[0].title = htmlUnescape(title.replace(/<[^>]*>?/g, '').trim()); + this.$button.find('.filter-option-inner-inner')[0].innerHTML = title; + + this.$element.trigger('rendered.bs.select'); + }, + + /** + * @param [style] + * @param [status] + */ + setStyle: function (style, status) { + if (this.$element.attr('class')) { + this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, '')); + } + + var buttonClass = style ? style : this.options.style; + + if (status == 'add') { + this.$button.addClass(buttonClass); + } else if (status == 'remove') { + this.$button.removeClass(buttonClass); + } else { + this.$button.removeClass(this.options.style); + this.$button.addClass(buttonClass); + } + }, + + liHeight: function (refresh) { + if (!refresh && (this.options.size === false || this.sizeInfo)) return; + + if (!this.sizeInfo) this.sizeInfo = {}; + + var newElement = document.createElement('div'), + menu = document.createElement('div'), + menuInner = document.createElement('div'), + menuInnerInner = document.createElement('ul'), + divider = document.createElement('li'), + dropdownHeader = document.createElement('li'), + li = document.createElement('li'), + a = document.createElement('a'), + text = document.createElement('span'), + header = this.options.header && this.$menu.find('.' + classNames.POPOVERHEADER).length > 0 ? this.$menu.find('.' + classNames.POPOVERHEADER)[0].cloneNode(true) : null, + search = this.options.liveSearch ? document.createElement('div') : null, + actions = this.options.actionsBox && this.multiple && this.$menu.find('.bs-actionsbox').length > 0 ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null, + doneButton = this.options.doneButton && this.multiple && this.$menu.find('.bs-donebutton').length > 0 ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null; + + this.sizeInfo.selectWidth = this.$newElement[0].offsetWidth; + + text.className = 'text'; + a.className = 'dropdown-item ' + this.$element.find('option')[0].className; + newElement.className = this.$menu[0].parentNode.className + ' ' + classNames.SHOW; + newElement.style.width = this.sizeInfo.selectWidth + 'px'; + if (this.options.width === 'auto') menu.style.minWidth = 0; + menu.className = classNames.MENU + ' ' + classNames.SHOW; + menuInner.className = 'inner ' + classNames.SHOW; + menuInnerInner.className = classNames.MENU + ' inner ' + (version.major === '4' ? classNames.SHOW : ''); + divider.className = classNames.DIVIDER; + dropdownHeader.className = 'dropdown-header'; + + text.appendChild(document.createTextNode('Inner text')); + a.appendChild(text); + li.appendChild(a); + dropdownHeader.appendChild(text.cloneNode(true)); + + if (this.selectpicker.view.widestOption) { + menuInnerInner.appendChild(this.selectpicker.view.widestOption.cloneNode(true)); + } + + menuInnerInner.appendChild(li); + menuInnerInner.appendChild(divider); + menuInnerInner.appendChild(dropdownHeader); + if (header) menu.appendChild(header); + if (search) { + var input = document.createElement('input'); + search.className = 'bs-searchbox'; + input.className = 'form-control'; + search.appendChild(input); + menu.appendChild(search); + } + if (actions) menu.appendChild(actions); + menuInner.appendChild(menuInnerInner); + menu.appendChild(menuInner); + if (doneButton) menu.appendChild(doneButton); + newElement.appendChild(menu); + + document.body.appendChild(newElement); + + var liHeight = a.offsetHeight, + dropdownHeaderHeight = dropdownHeader ? dropdownHeader.offsetHeight : 0, + headerHeight = header ? header.offsetHeight : 0, + searchHeight = search ? search.offsetHeight : 0, + actionsHeight = actions ? actions.offsetHeight : 0, + doneButtonHeight = doneButton ? doneButton.offsetHeight : 0, + dividerHeight = $(divider).outerHeight(true), + // fall back to jQuery if getComputedStyle is not supported + menuStyle = window.getComputedStyle ? window.getComputedStyle(menu) : false, + menuWidth = menu.offsetWidth, + $menu = menuStyle ? null : $(menu), + menuPadding = { + vert: toInteger(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) + + toInteger(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) + + toInteger(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) + + toInteger(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')), + horiz: toInteger(menuStyle ? menuStyle.paddingLeft : $menu.css('paddingLeft')) + + toInteger(menuStyle ? menuStyle.paddingRight : $menu.css('paddingRight')) + + toInteger(menuStyle ? menuStyle.borderLeftWidth : $menu.css('borderLeftWidth')) + + toInteger(menuStyle ? menuStyle.borderRightWidth : $menu.css('borderRightWidth')) + }, + menuExtras = { + vert: menuPadding.vert + + toInteger(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) + + toInteger(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2, + horiz: menuPadding.horiz + + toInteger(menuStyle ? menuStyle.marginLeft : $menu.css('marginLeft')) + + toInteger(menuStyle ? menuStyle.marginRight : $menu.css('marginRight')) + 2 + }, + scrollBarWidth; + + menuInner.style.overflowY = 'scroll'; + + scrollBarWidth = menu.offsetWidth - menuWidth; + + document.body.removeChild(newElement); + + this.sizeInfo.liHeight = liHeight; + this.sizeInfo.dropdownHeaderHeight = dropdownHeaderHeight; + this.sizeInfo.headerHeight = headerHeight; + this.sizeInfo.searchHeight = searchHeight; + this.sizeInfo.actionsHeight = actionsHeight; + this.sizeInfo.doneButtonHeight = doneButtonHeight; + this.sizeInfo.dividerHeight = dividerHeight; + this.sizeInfo.menuPadding = menuPadding; + this.sizeInfo.menuExtras = menuExtras; + this.sizeInfo.menuWidth = menuWidth; + this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth; + this.sizeInfo.scrollBarWidth = scrollBarWidth; + this.sizeInfo.selectHeight = this.$newElement[0].offsetHeight; + + this.setPositionData(); + }, + + getSelectPosition: function () { + var that = this, + $window = $(window), + pos = that.$newElement.offset(), + $container = $(that.options.container), + containerPos; + + if (that.options.container && !$container.is('body')) { + containerPos = $container.offset(); + containerPos.top += parseInt($container.css('borderTopWidth')); + containerPos.left += parseInt($container.css('borderLeftWidth')); + } else { + containerPos = { top: 0, left: 0 }; + } + + var winPad = that.options.windowPadding; + + this.sizeInfo.selectOffsetTop = pos.top - containerPos.top - $window.scrollTop(); + this.sizeInfo.selectOffsetBot = $window.height() - this.sizeInfo.selectOffsetTop - this.sizeInfo['selectHeight'] - containerPos.top - winPad[2]; + this.sizeInfo.selectOffsetLeft = pos.left - containerPos.left - $window.scrollLeft(); + this.sizeInfo.selectOffsetRight = $window.width() - this.sizeInfo.selectOffsetLeft - this.sizeInfo['selectWidth'] - containerPos.left - winPad[1]; + this.sizeInfo.selectOffsetTop -= winPad[0]; + this.sizeInfo.selectOffsetLeft -= winPad[3]; + }, + + setMenuSize: function (isAuto) { + this.getSelectPosition(); + + var selectWidth = this.sizeInfo['selectWidth'], + liHeight = this.sizeInfo['liHeight'], + headerHeight = this.sizeInfo['headerHeight'], + searchHeight = this.sizeInfo['searchHeight'], + actionsHeight = this.sizeInfo['actionsHeight'], + doneButtonHeight = this.sizeInfo['doneButtonHeight'], + divHeight = this.sizeInfo['dividerHeight'], + menuPadding = this.sizeInfo['menuPadding'], + menuInnerHeight, + menuHeight, + divLength = 0, + minHeight, + _minHeight, + maxHeight, + menuInnerMinHeight, + estimate; + + if (this.options.dropupAuto) { + // Get the estimated height of the menu without scrollbars. + // This is useful for smaller menus, where there might be plenty of room + // below the button without setting dropup, but we can't know + // the exact height of the menu until createView is called later + estimate = liHeight * this.selectpicker.current.elements.length + menuPadding.vert; + this.$newElement.toggleClass(classNames.DROPUP, this.sizeInfo.selectOffsetTop - this.sizeInfo.selectOffsetBot > this.sizeInfo.menuExtras.vert && estimate + this.sizeInfo.menuExtras.vert + 50 > this.sizeInfo.selectOffsetBot); + } + + if (this.options.size === 'auto') { + _minHeight = this.selectpicker.current.elements.length > 3 ? this.sizeInfo.liHeight * 3 + this.sizeInfo.menuExtras.vert - 2 : 0; + menuHeight = this.sizeInfo.selectOffsetBot - this.sizeInfo.menuExtras.vert; + minHeight = _minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight; + menuInnerMinHeight = Math.max(_minHeight - menuPadding.vert, 0); + + if (this.$newElement.hasClass(classNames.DROPUP)) { + menuHeight = this.sizeInfo.selectOffsetTop - this.sizeInfo.menuExtras.vert; + } + + maxHeight = menuHeight; + menuInnerHeight = menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding.vert; + } else if (this.options.size && this.options.size != 'auto' && this.selectpicker.current.elements.length > this.options.size) { + for (var i = 0; i < this.options.size; i++) { + if (this.selectpicker.current.data[i].type === 'divider') divLength++; + } + + menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding.vert; + menuInnerHeight = menuHeight - menuPadding.vert; + maxHeight = menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight; + minHeight = menuInnerMinHeight = ''; + } + + if (this.options.dropdownAlignRight === 'auto') { + this.$menu.toggleClass(classNames.MENURIGHT, this.sizeInfo.selectOffsetLeft > this.sizeInfo.selectOffsetRight && this.sizeInfo.selectOffsetRight < (this.$menu[0].offsetWidth - selectWidth)); + } + + this.$menu.css({ + 'max-height': maxHeight + 'px', + 'overflow': 'hidden', + 'min-height': minHeight + 'px' + }); + + this.$menuInner.css({ + 'max-height': menuInnerHeight + 'px', + 'overflow-y': 'auto', + 'min-height': menuInnerMinHeight + 'px' + }); + + this.sizeInfo['menuInnerHeight'] = menuInnerHeight; + + if (this.selectpicker.current.data.length && this.selectpicker.current.data[this.selectpicker.current.data.length - 1].position > this.sizeInfo.menuInnerHeight) { + this.sizeInfo.hasScrollBar = true; + this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth + this.sizeInfo.scrollBarWidth; + + this.$menu.css('min-width', this.sizeInfo.totalMenuWidth); + } + + if (this.dropdown && this.dropdown._popper) this.dropdown._popper.update(); + }, + + setSize: function (refresh) { + this.liHeight(refresh); + + if (this.options.header) this.$menu.css('padding-top', 0); + if (this.options.size === false) return; + + var that = this, + $window = $(window), + selectedIndex, + offset = 0; + + this.setMenuSize(); + + if (this.options.size === 'auto') { + this.$searchbox.off('input.setMenuSize propertychange.setMenuSize').on('input.setMenuSize propertychange.setMenuSize', function() { + return that.setMenuSize(); + }); + $window.off('resize.setMenuSize scroll.setMenuSize').on('resize.setMenuSize scroll.setMenuSize', function() { + return that.setMenuSize(); + }); + } else if (this.options.size && this.options.size != 'auto' && this.selectpicker.current.elements.length > this.options.size) { + this.$searchbox.off('input.setMenuSize propertychange.setMenuSize'); + $window.off('resize.setMenuSize scroll.setMenuSize'); + } + + if (refresh) { + offset = this.$menuInner[0].scrollTop; + } else if (!that.multiple) { + selectedIndex = that.selectpicker.main.map.newIndex[that.$element[0].selectedIndex]; + + if (typeof selectedIndex === 'number' && that.options.size !== false) { + offset = that.sizeInfo.liHeight * selectedIndex; + offset = offset - (that.sizeInfo.menuInnerHeight / 2) + (that.sizeInfo.liHeight / 2); + } + } + + that.createView(false, offset); + }, + + setWidth: function () { + var that = this; + + if (this.options.width === 'auto') { + requestAnimationFrame(function() { + that.$menu.css('min-width', '0'); + that.liHeight(); + that.setMenuSize(); + + // Get correct width if element is hidden + var $selectClone = that.$newElement.clone().appendTo('body'), + btnWidth = $selectClone.css('width', 'auto').children('button').outerWidth(); + + $selectClone.remove(); + + // Set width to whatever's larger, button title or longest option + that.sizeInfo.selectWidth = Math.max(that.sizeInfo.totalMenuWidth, btnWidth); + that.$newElement.css('width', that.sizeInfo.selectWidth + 'px'); + }); + } else if (this.options.width === 'fit') { + // Remove inline min-width so width can be changed from 'auto' + this.$menu.css('min-width', ''); + this.$newElement.css('width', '').addClass('fit-width'); + } else if (this.options.width) { + // Remove inline min-width so width can be changed from 'auto' + this.$menu.css('min-width', ''); + this.$newElement.css('width', this.options.width); + } else { + // Remove inline min-width/width so width can be changed + this.$menu.css('min-width', ''); + this.$newElement.css('width', ''); + } + // Remove fit-width class if width is changed programmatically + if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') { + this.$newElement.removeClass('fit-width'); + } + }, + + selectPosition: function () { + this.$bsContainer = $('
    '); + + var that = this, + $container = $(this.options.container), + pos, + containerPos, + actualHeight, + getPlacement = function ($element) { + var containerPosition = {}, + // fall back to dropdown's default display setting if display is not manually set + display = that.options.display || $.fn.dropdown.Constructor.Default.display; + + that.$bsContainer.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass(classNames.DROPUP, $element.hasClass(classNames.DROPUP)); + pos = $element.offset(); + + if (!$container.is('body')) { + containerPos = $container.offset(); + containerPos.top += parseInt($container.css('borderTopWidth')) - $container.scrollTop(); + containerPos.left += parseInt($container.css('borderLeftWidth')) - $container.scrollLeft(); + } else { + containerPos = { top: 0, left: 0 }; + } + + actualHeight = $element.hasClass(classNames.DROPUP) ? 0 : $element[0].offsetHeight; + + // Bootstrap 4+ uses Popper for menu positioning + if (version.major < 4 || display === 'static') { + containerPosition['top'] = pos.top - containerPos.top + actualHeight; + containerPosition['left'] = pos.left - containerPos.left; + } + + containerPosition['width'] = $element[0].offsetWidth; + + that.$bsContainer.css(containerPosition); + }; + + this.$button.on('click.bs.dropdown.data-api', function () { + if (that.isDisabled()) { + return; + } + + getPlacement(that.$newElement); + + that.$bsContainer + .appendTo(that.options.container) + .toggleClass(classNames.SHOW, !that.$button.hasClass(classNames.SHOW)) + .append(that.$menu); + }); + + $(window).on('resize scroll', function () { + getPlacement(that.$newElement); + }); + + this.$element.on('hide.bs.select', function () { + that.$menu.data('height', that.$menu.height()); + that.$bsContainer.detach(); + }); + }, + + setOptionStatus: function () { + var that = this, + $selectOptions = this.$element.find('option'); + + that.noScroll = false; + + if (that.selectpicker.view.visibleElements && that.selectpicker.view.visibleElements.length) { + for (var i = 0; i < that.selectpicker.view.visibleElements.length; i++) { + var index = that.selectpicker.current.map.originalIndex[i + that.selectpicker.view.position0], // faster than $(li).data('originalIndex') + option = $selectOptions[index]; + + if (option) { + var liIndex = this.selectpicker.main.map.newIndex[index], + li = this.selectpicker.main.elements[liIndex]; + + that.setDisabled( + index, + option.disabled || option.parentNode.tagName === 'OPTGROUP' && option.parentNode.disabled, + liIndex, + li + ); + + that.setSelected( + index, + option.selected, + liIndex, + li + ); + } + } + } + }, + + /** + * @param {number} index - the index of the option that is being changed + * @param {boolean} selected - true if the option is being selected, false if being deselected + */ + setSelected: function (index, selected, liIndex, li) { + var activeIndexIsSet = this.activeIndex !== undefined, + thisIsActive = this.activeIndex === index, + prevActiveIndex, + prevActive, + a, + // if current option is already active + // OR + // if the current option is being selected, it's NOT multiple, and + // activeIndex is undefined: + // - when the menu is first being opened, OR + // - after a search has been performed, OR + // - when retainActive is false when selecting a new option (i.e. index of the newly selected option is not the same as the current activeIndex) + keepActive = thisIsActive || selected && !this.multiple && !activeIndexIsSet; + + if (!liIndex) liIndex = this.selectpicker.main.map.newIndex[index]; + if (!li) li = this.selectpicker.main.elements[liIndex]; + + a = li.firstChild; + + if (selected) { + this.selectedIndex = index; + } + + li.classList.toggle('selected', selected); + li.classList.toggle('active', keepActive); + + if (keepActive) { + this.selectpicker.view.currentActive = li; + this.activeIndex = index; + } + + if (a) { + a.classList.toggle('selected', selected); + a.classList.toggle('active', keepActive); + a.setAttribute('aria-selected', selected); + } + + if (!keepActive) { + if (!activeIndexIsSet && selected && this.prevActiveIndex !== undefined) { + prevActiveIndex = this.selectpicker.main.map.newIndex[this.prevActiveIndex]; + prevActive = this.selectpicker.main.elements[prevActiveIndex]; + + prevActive.classList.toggle('selected', selected); + prevActive.classList.remove('active'); + if (prevActive.firstChild) { + prevActive.firstChild.classList.toggle('selected', selected); + prevActive.firstChild.classList.remove('active'); + } + } + } + }, + + /** + * @param {number} index - the index of the option that is being disabled + * @param {boolean} disabled - true if the option is being disabled, false if being enabled + */ + setDisabled: function (index, disabled, liIndex, li) { + var a; + + if (!liIndex) liIndex = this.selectpicker.main.map.newIndex[index]; + if (!li) li = this.selectpicker.main.elements[liIndex]; + + a = li.firstChild; + + li.classList.toggle(classNames.DISABLED, disabled); + + if (a) { + if (version.major === '4') a.classList.toggle(classNames.DISABLED, disabled); + + a.setAttribute('aria-disabled', disabled); + + if (disabled) { + a.setAttribute('tabindex', -1); + } else { + a.setAttribute('tabindex', 0); + } + } + }, + + isDisabled: function () { + return this.$element[0].disabled; + }, + + checkDisabled: function () { + var that = this; + + if (this.isDisabled()) { + this.$newElement.addClass(classNames.DISABLED); + this.$button.addClass(classNames.DISABLED).attr('tabindex', -1).attr('aria-disabled', true); + } else { + if (this.$button.hasClass(classNames.DISABLED)) { + this.$newElement.removeClass(classNames.DISABLED); + this.$button.removeClass(classNames.DISABLED).attr('aria-disabled', false); + } + + if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) { + this.$button.removeAttr('tabindex'); + } + } + + this.$button.click(function () { + return !that.isDisabled(); + }); + }, + + togglePlaceholder: function () { + // much faster than calling $.val() + var element = this.$element[0], + selectedIndex = element.selectedIndex, + nothingSelected = selectedIndex === -1; + + if (!nothingSelected && !element.options[selectedIndex].value) nothingSelected = true; + + this.$button.toggleClass('bs-placeholder', nothingSelected); + }, + + tabIndex: function () { + if (this.$element.data('tabindex') !== this.$element.attr('tabindex') && + (this.$element.attr('tabindex') !== -98 && this.$element.attr('tabindex') !== '-98')) { + this.$element.data('tabindex', this.$element.attr('tabindex')); + this.$button.attr('tabindex', this.$element.data('tabindex')); + } + + this.$element.attr('tabindex', -98); + }, + + clickListener: function () { + var that = this, + $document = $(document); + + $document.data('spaceSelect', false); + + this.$button.on('keyup', function (e) { + if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) { + e.preventDefault(); + $document.data('spaceSelect', false); + } + }); + + this.$newElement.on('show.bs.dropdown', function() { + if (version.major > 3 && !that.dropdown) { + that.dropdown = that.$button.data('bs.dropdown'); + that.dropdown._menu = that.$menu[0]; + } + }); + + this.$button.on('click.bs.dropdown.data-api', function () { + if (!that.$newElement.hasClass(classNames.SHOW)) { + that.setSize(); + } + }); + + function setFocus () { + if (that.options.liveSearch) { + that.$searchbox.focus(); + } else { + that.$menuInner.focus(); + } + } + + function checkPopperExists () { + if (that.dropdown && that.dropdown._popper && that.dropdown._popper.state.isCreated) { + setFocus(); + } else { + requestAnimationFrame(checkPopperExists); + } + } + + this.$element.on('shown.bs.select', function () { + if (that.$menuInner[0].scrollTop !== that.selectpicker.view.scrollTop) { + that.$menuInner[0].scrollTop = that.selectpicker.view.scrollTop; + } + + if (version.major > 3) { + requestAnimationFrame(checkPopperExists); + } else { + setFocus(); + } + }); + + this.$menuInner.on('click', 'li a', function (e, retainActive) { + var $this = $(this), + position0 = that.isVirtual() ? that.selectpicker.view.position0 : 0, + clickedIndex = that.selectpicker.current.map.originalIndex[$this.parent().index() + position0], + prevValue = getSelectValues(that.$element[0]), + prevIndex = that.$element.prop('selectedIndex'), + triggerChange = true; + + // Don't close on multi choice menu + if (that.multiple && that.options.maxOptions !== 1) { + e.stopPropagation(); + } + + e.preventDefault(); + + //Don't run if we have been disabled + if (!that.isDisabled() && !$this.parent().hasClass(classNames.DISABLED)) { + var $options = that.$element.find('option'), + $option = $options.eq(clickedIndex), + state = $option.prop('selected'), + $optgroup = $option.parent('optgroup'), + $optgroupOptions = $optgroup.find('option'), + maxOptions = that.options.maxOptions, + maxOptionsGrp = $optgroup.data('maxOptions') || false; + + if (clickedIndex === that.activeIndex) retainActive = true; + + if (!retainActive) { + that.prevActiveIndex = that.activeIndex; + that.activeIndex = undefined; + } + + if (!that.multiple) { // Deselect all others if not multi select box + $options.prop('selected', false); + $option.prop('selected', true); + that.setSelected(clickedIndex, true); + } else { // Toggle the one we have chosen if we are multi select. + $option.prop('selected', !state); + + that.setSelected(clickedIndex, !state); + $this.blur(); + + if (maxOptions !== false || maxOptionsGrp !== false) { + var maxReached = maxOptions < $options.filter(':selected').length, + maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length; + + if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) { + if (maxOptions && maxOptions == 1) { + $options.prop('selected', false); + $option.prop('selected', true); + + for (var i = 0; i < $options.length; i++) { + that.setSelected(i, false); + } + + that.setSelected(clickedIndex, true); + } else if (maxOptionsGrp && maxOptionsGrp == 1) { + $optgroup.find('option:selected').prop('selected', false); + $option.prop('selected', true); + + for (var i = 0; i < $optgroupOptions.length; i++) { + var option = $optgroupOptions[i]; + that.setSelected($options.index(option), false); + } + + that.setSelected(clickedIndex, true); + } else { + var maxOptionsText = typeof that.options.maxOptionsText === 'string' ? [that.options.maxOptionsText, that.options.maxOptionsText] : that.options.maxOptionsText, + maxOptionsArr = typeof maxOptionsText === 'function' ? maxOptionsText(maxOptions, maxOptionsGrp) : maxOptionsText, + maxTxt = maxOptionsArr[0].replace('{n}', maxOptions), + maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp), + $notify = $('
    '); + // If {var} is set in array, replace it + /** @deprecated */ + if (maxOptionsArr[2]) { + maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]); + maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]); + } + + $option.prop('selected', false); + + that.$menu.append($notify); + + if (maxOptions && maxReached) { + $notify.append($('
    ' + maxTxt + '
    ')); + triggerChange = false; + that.$element.trigger('maxReached.bs.select'); + } + + if (maxOptionsGrp && maxReachedGrp) { + $notify.append($('
    ' + maxTxtGrp + '
    ')); + triggerChange = false; + that.$element.trigger('maxReachedGrp.bs.select'); + } + + setTimeout(function () { + that.setSelected(clickedIndex, false); + }, 10); + + $notify.delay(750).fadeOut(300, function () { + $(this).remove(); + }); + } + } + } + } + + if (!that.multiple || (that.multiple && that.options.maxOptions === 1)) { + that.$button.focus(); + } else if (that.options.liveSearch) { + that.$searchbox.focus(); + } + + // Trigger select 'change' + if (triggerChange) { + if ((prevValue != getSelectValues(that.$element[0]) && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) { + // $option.prop('selected') is current option state (selected/unselected). prevValue is the value of the select prior to being changed. + changed_arguments = [clickedIndex, $option.prop('selected'), prevValue]; + that.$element + .triggerNative('change'); + } + } + } + }); + + this.$menu.on('click', 'li.' + classNames.DISABLED + ' a, .' + classNames.POPOVERHEADER + ', .' + classNames.POPOVERHEADER + ' :not(.close)', function (e) { + if (e.currentTarget == this) { + e.preventDefault(); + e.stopPropagation(); + if (that.options.liveSearch && !$(e.target).hasClass('close')) { + that.$searchbox.focus(); + } else { + that.$button.focus(); + } + } + }); + + this.$menuInner.on('click', '.divider, .dropdown-header', function (e) { + e.preventDefault(); + e.stopPropagation(); + if (that.options.liveSearch) { + that.$searchbox.focus(); + } else { + that.$button.focus(); + } + }); + + this.$menu.on('click', '.' + classNames.POPOVERHEADER + ' .close', function () { + that.$button.click(); + }); + + this.$searchbox.on('click', function (e) { + e.stopPropagation(); + }); + + this.$menu.on('click', '.actions-btn', function (e) { + if (that.options.liveSearch) { + that.$searchbox.focus(); + } else { + that.$button.focus(); + } + + e.preventDefault(); + e.stopPropagation(); + + if ($(this).hasClass('bs-select-all')) { + that.selectAll(); + } else { + that.deselectAll(); + } + }); + + this.$element.on({ + 'change': function () { + that.render(); + that.$element.trigger('changed.bs.select', changed_arguments); + changed_arguments = null; + }, + 'focus': function () { + that.$button.focus(); + } + }); + }, + + liveSearchListener: function () { + var that = this, + no_results = document.createElement('li'); + + this.$button.on('click.bs.dropdown.data-api', function () { + if (!!that.$searchbox.val()) { + that.$searchbox.val(''); + } + }); + + this.$searchbox.on('click.bs.dropdown.data-api focus.bs.dropdown.data-api touchend.bs.dropdown.data-api', function (e) { + e.stopPropagation(); + }); + + this.$searchbox.on('input propertychange', function () { + var searchValue = that.$searchbox.val(); + + that.selectpicker.search.map.newIndex = {}; + that.selectpicker.search.map.originalIndex = {}; + that.selectpicker.search.elements = []; + that.selectpicker.search.data = []; + + if (searchValue) { + var i, + searchMatch = [], + q = searchValue.toUpperCase(), + cache = {}, + cacheArr = [], + searchStyle = that._searchStyle(), + normalizeSearch = that.options.liveSearchNormalize; + + that._$lisSelected = that.$menuInner.find('.selected'); + + for (var i = 0; i < that.selectpicker.main.data.length; i++) { + var li = that.selectpicker.main.data[i]; + + if (!cache[i]) { + cache[i] = stringSearch(li, q, searchStyle, normalizeSearch); + } + + if (cache[i] && li.headerIndex !== undefined && cacheArr.indexOf(li.headerIndex) === -1) { + if (li.headerIndex > 0) { + cache[li.headerIndex - 1] = true; + cacheArr.push(li.headerIndex - 1); + } + + cache[li.headerIndex] = true; + cacheArr.push(li.headerIndex); + + cache[li.lastIndex + 1] = true; + } + + if (cache[i] && li.type !== 'optgroup-label') cacheArr.push(i); + } + + for (var i = 0, cacheLen = cacheArr.length; i < cacheLen; i++) { + var index = cacheArr[i], + prevIndex = cacheArr[i - 1], + li = that.selectpicker.main.data[index], + liPrev = that.selectpicker.main.data[prevIndex]; + + if ( li.type !== 'divider' || ( li.type === 'divider' && liPrev && liPrev.type !== 'divider' && cacheLen - 1 !== i ) ) { + that.selectpicker.search.data.push(li); + searchMatch.push(that.selectpicker.main.elements[index]); + + if (li.hasOwnProperty('originalIndex')) { + that.selectpicker.search.map.newIndex[li.originalIndex] = searchMatch.length - 1; + that.selectpicker.search.map.originalIndex[searchMatch.length - 1] = li.originalIndex; + } + } + } + + that.activeIndex = undefined; + that.noScroll = true; + that.$menuInner.scrollTop(0); + that.selectpicker.search.elements = searchMatch; + that.createView(true); + + if (!searchMatch.length) { + no_results.className = 'no-results'; + no_results.innerHTML = that.options.noneResultsText.replace('{0}', '"' + htmlEscape(searchValue) + '"'); + that.$menuInner[0].firstChild.appendChild(no_results); + } + } else { + that.$menuInner.scrollTop(0); + that.createView(false); + } + }); + }, + + _searchStyle: function () { + return this.options.liveSearchStyle || 'contains'; + }, + + val: function (value) { + if (typeof value !== 'undefined') { + this.$element + .val(value) + .triggerNative('change'); + + return this.$element; + } else { + return this.$element.val(); + } + }, + + changeAll: function (status) { + if (!this.multiple) return; + if (typeof status === 'undefined') status = true; + + var $selectOptions = this.$element.find('option'), + previousSelected = 0, + currentSelected = 0, + prevValue = getSelectValues(this.$element[0]); + + this.$element.addClass('bs-select-hidden'); + + for (var i = 0; i < this.selectpicker.current.elements.length; i++) { + var liData = this.selectpicker.current.data[i], + index = this.selectpicker.current.map.originalIndex[i], // faster than $(li).data('originalIndex') + option = $selectOptions[index]; + + if (option && !option.disabled && liData.type !== 'divider') { + if (option.selected) previousSelected++; + option.selected = status; + if (option.selected) currentSelected++; + } + } + + this.$element.removeClass('bs-select-hidden'); + + if (previousSelected === currentSelected) return; + + this.setOptionStatus(); + + this.togglePlaceholder(); + + changed_arguments = [null, null, prevValue]; + + this.$element + .triggerNative('change'); + }, + + selectAll: function () { + return this.changeAll(true); + }, + + deselectAll: function () { + return this.changeAll(false); + }, + + toggle: function (e) { + e = e || window.event; + + if (e) e.stopPropagation(); + + this.$button.trigger('click.bs.dropdown.data-api'); + }, + + keydown: function (e) { + var $this = $(this), + isToggle = $this.hasClass('dropdown-toggle'), + $parent = isToggle ? $this.closest('.dropdown') : $this.closest(Selector.MENU), + that = $parent.data('this'), + $items = that.findLis(), + index, + isActive, + liActive, + activeLi, + offset, + updateScroll = false, + downOnTab = e.which === keyCodes.TAB && !isToggle && !that.options.selectOnTab, + isArrowKey = REGEXP_ARROW.test(e.which) || downOnTab, + scrollTop = that.$menuInner[0].scrollTop, + isVirtual = that.isVirtual(), + position0 = isVirtual === true ? that.selectpicker.view.position0 : 0; + + isActive = that.$newElement.hasClass(classNames.SHOW); + + if ( + !isActive && + ( + isArrowKey || + e.which >= 48 && e.which <= 57 || + e.which >= 96 && e.which <= 105 || + e.which >= 65 && e.which <= 90 + ) + ) { + that.$button.trigger('click.bs.dropdown.data-api'); + } + + if (e.which === keyCodes.ESCAPE && isActive) { + e.preventDefault(); + that.$button.trigger('click.bs.dropdown.data-api').focus(); + } + + if (isArrowKey) { // if up or down + if (!$items.length) return; + + // $items.index/.filter is too slow with a large list and no virtual scroll + index = isVirtual === true ? $items.index($items.filter('.active')) : that.selectpicker.current.map.newIndex[that.activeIndex]; + + if (index === undefined) index = -1; + + if (index !== -1) { + liActive = that.selectpicker.current.elements[index + position0]; + liActive.classList.remove('active'); + if (liActive.firstChild) liActive.firstChild.classList.remove('active'); + } + + if (e.which === keyCodes.ARROW_UP) { // up + if (index !== -1) index--; + if (index + position0 < 0) index += $items.length; + + if (!that.selectpicker.view.canHighlight[index + position0]) { + index = that.selectpicker.view.canHighlight.slice(0, index + position0).lastIndexOf(true) - position0; + if (index === -1) index = $items.length - 1; + } + } else if (e.which === keyCodes.ARROW_DOWN || downOnTab) { // down + index++; + if (index + position0 >= that.selectpicker.view.canHighlight.length) index = 0; + + if (!that.selectpicker.view.canHighlight[index + position0]) { + index = index + 1 + that.selectpicker.view.canHighlight.slice(index + position0 + 1).indexOf(true); + } + } + + e.preventDefault(); + + var liActiveIndex = position0 + index; + + if (e.which === keyCodes.ARROW_UP) { // up + // scroll to bottom and highlight last option + if (position0 === 0 && index === $items.length - 1) { + that.$menuInner[0].scrollTop = that.$menuInner[0].scrollHeight; + + liActiveIndex = that.selectpicker.current.elements.length - 1; + } else { + activeLi = that.selectpicker.current.data[liActiveIndex]; + offset = activeLi.position - activeLi.height; + + updateScroll = offset < scrollTop; + } + } else if (e.which === keyCodes.ARROW_DOWN || downOnTab) { // down + // scroll to top and highlight first option + if (index === 0) { + that.$menuInner[0].scrollTop = 0; + + liActiveIndex = 0; + } else { + activeLi = that.selectpicker.current.data[liActiveIndex]; + offset = activeLi.position - that.sizeInfo.menuInnerHeight; + + updateScroll = offset > scrollTop; + } + } + + liActive = that.selectpicker.current.elements[liActiveIndex]; + + if (liActive) { + liActive.classList.add('active'); + if (liActive.firstChild) liActive.firstChild.classList.add('active'); + } + + that.activeIndex = that.selectpicker.current.map.originalIndex[liActiveIndex]; + + that.selectpicker.view.currentActive = liActive; + + if (updateScroll) that.$menuInner[0].scrollTop = offset; + + if (that.options.liveSearch) { + that.$searchbox.focus(); + } else { + $this.focus(); + } + } else if ( + !$this.is('input') && + !REGEXP_TAB_OR_ESCAPE.test(e.which) || + (e.which === keyCodes.SPACE && that.selectpicker.keydown.keyHistory) + ) { + var searchMatch, + matches = [], + keyHistory; + + e.preventDefault(); + + that.selectpicker.keydown.keyHistory += keyCodeMap[e.which]; + + if (that.selectpicker.keydown.resetKeyHistory.cancel) clearTimeout(that.selectpicker.keydown.resetKeyHistory.cancel); + that.selectpicker.keydown.resetKeyHistory.cancel = that.selectpicker.keydown.resetKeyHistory.start(); + + keyHistory = that.selectpicker.keydown.keyHistory; + + // if all letters are the same, set keyHistory to just the first character when searching + if (/^(.)\1+$/.test(keyHistory)) { + keyHistory = keyHistory.charAt(0); + } + + // find matches + for (var i = 0; i < that.selectpicker.current.data.length; i++) { + var li = that.selectpicker.current.data[i], + hasMatch; + + hasMatch = stringSearch(li, keyHistory, 'startsWith', true); + + if (hasMatch && that.selectpicker.view.canHighlight[i]) { + li.index = i; + matches.push(li.originalIndex); + } + } + + if (matches.length) { + var matchIndex = 0; + + $items.removeClass('active').find('a').removeClass('active'); + + // either only one key has been pressed or they are all the same key + if (keyHistory.length === 1) { + matchIndex = matches.indexOf(that.activeIndex); + + if (matchIndex === -1 || matchIndex === matches.length - 1) { + matchIndex = 0; + } else { + matchIndex++; + } + } + + searchMatch = that.selectpicker.current.map.newIndex[matches[matchIndex]]; + + activeLi = that.selectpicker.current.data[searchMatch]; + + if (scrollTop - activeLi.position > 0) { + offset = activeLi.position - activeLi.height; + updateScroll = true; + } else { + offset = activeLi.position - that.sizeInfo.menuInnerHeight; + // if the option is already visible at the current scroll position, just keep it the same + updateScroll = activeLi.position > scrollTop + that.sizeInfo.menuInnerHeight; + } + + liActive = that.selectpicker.current.elements[searchMatch]; + liActive.classList.add('active'); + if (liActive.firstChild) liActive.firstChild.classList.add('active'); + that.activeIndex = matches[matchIndex]; + + liActive.firstChild.focus(); + + if (updateScroll) that.$menuInner[0].scrollTop = offset; + + $this.focus(); + } + } + + // Select focused option if "Enter", "Spacebar" or "Tab" (when selectOnTab is true) are pressed inside the menu. + if ( + isActive && + ( + (e.which === keyCodes.SPACE && !that.selectpicker.keydown.keyHistory) || + e.which === keyCodes.ENTER || + (e.which === keyCodes.TAB && that.options.selectOnTab) + ) + ) { + if (e.which !== keyCodes.SPACE) e.preventDefault(); + + if (!that.options.liveSearch || e.which !== keyCodes.SPACE) { + that.$menuInner.find('.active a').trigger('click', true); // retain active class + $this.focus(); + + if (!that.options.liveSearch) { + // Prevent screen from scrolling if the user hits the spacebar + e.preventDefault(); + // Fixes spacebar selection of dropdown items in FF & IE + $(document).data('spaceSelect', true); + } + } + } + }, + + mobile: function () { + this.$element.addClass('mobile-device'); + }, + + refresh: function () { + // update options if data attributes have been changed + var config = $.extend({}, this.options, this.$element.data()); + this.options = config; + + this.selectpicker.main.map.newIndex = {}; + this.selectpicker.main.map.originalIndex = {}; + this.createLi(); + this.checkDisabled(); + this.render(); + this.setStyle(); + this.setWidth(); + + this.setSize(true); + + this.$element.trigger('refreshed.bs.select'); + }, + + hide: function () { + this.$newElement.hide(); + }, + + show: function () { + this.$newElement.show(); + }, + + remove: function () { + this.$newElement.remove(); + this.$element.remove(); + }, + + destroy: function () { + this.$newElement.before(this.$element).remove(); + + if (this.$bsContainer) { + this.$bsContainer.remove(); + } else { + this.$menu.remove(); + } + + this.$element + .off('.bs.select') + .removeData('selectpicker') + .removeClass('bs-select-hidden selectpicker'); + } + }; + + // SELECTPICKER PLUGIN DEFINITION + // ============================== + function Plugin(option) { + // get the args of the outer function.. + var args = arguments; + // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them + // to get lost/corrupted in android 2.3 and IE9 #715 #775 + var _option = option; + + [].shift.apply(args); + + // if the version was not set successfully + if (!version.success) { + // try to retreive it again + try { + version.full = ($.fn.dropdown.Constructor.VERSION || '').split(' ')[0].split('.'); + } + // fall back to use BootstrapVersion + catch(err) { + version.full = Selectpicker.BootstrapVersion.split(' ')[0].split('.'); + } + + version.major = version.full[0]; + version.success = true; + + if (version.major === '4') { + classNames.DIVIDER = 'dropdown-divider'; + classNames.SHOW = 'show'; + classNames.BUTTONCLASS = 'btn-light'; + Selectpicker.DEFAULTS.style = classNames.BUTTONCLASS = 'btn-light'; + classNames.POPOVERHEADER = 'popover-header'; + } + } + + var value; + var chain = this.each(function () { + var $this = $(this); + if ($this.is('select')) { + var data = $this.data('selectpicker'), + options = typeof _option == 'object' && _option; + + if (!data) { + var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options); + config.template = $.extend({}, Selectpicker.DEFAULTS.template, ($.fn.selectpicker.defaults ? $.fn.selectpicker.defaults.template : {}), $this.data().template, options.template); + $this.data('selectpicker', (data = new Selectpicker(this, config))); + } else if (options) { + for (var i in options) { + if (options.hasOwnProperty(i)) { + data.options[i] = options[i]; + } + } + } + + if (typeof _option == 'string') { + if (data[_option] instanceof Function) { + value = data[_option].apply(data, args); + } else { + value = data.options[_option]; + } + } + } + }); + + if (typeof value !== 'undefined') { + //noinspection JSUnusedAssignment + return value; + } else { + return chain; + } + } + + var old = $.fn.selectpicker; + $.fn.selectpicker = Plugin; + $.fn.selectpicker.Constructor = Selectpicker; + + // SELECTPICKER NO CONFLICT + // ======================== + $.fn.selectpicker.noConflict = function () { + $.fn.selectpicker = old; + return this; + }; + + $(document) + .off('keydown.bs.dropdown.data-api') + .on('keydown.bs.select', '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bs-searchbox input', Selectpicker.prototype.keydown) + .on('focusin.modal', '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bs-searchbox input', function (e) { + e.stopPropagation(); + }); + + // SELECTPICKER DATA-API + // ===================== + $(window).on('load.bs.select.data-api', function () { + $('.selectpicker').each(function () { + var $selectpicker = $(this); + Plugin.call($selectpicker, $selectpicker.data()); + }) + }); +})(jQuery); + + +})); diff --git a/trunk/src/AppBundle/Resources/public/js/config.codekit3 b/trunk/src/AppBundle/Resources/public/js/config.codekit3 new file mode 100644 index 00000000..1ff483e4 --- /dev/null +++ b/trunk/src/AppBundle/Resources/public/js/config.codekit3 @@ -0,0 +1,2445 @@ +{ +"AAInfo": "This is a CodeKit 3 project config file. MODIFYING THE CONTENTS OF THIS FILE IS A POOR LIFE DECISION. Doing so will cause CodeKit to crash and/or corrupt your project. I know it looks like JSON, but it is *not*. Many numbers in this file are 64-bit long long bitFlags, which JSON does not support. These numbers *cannot* be treated as discrete values and if you attempt to parse this file as standard JSON with any public JSON parser, these values will be corrupted. This file is not backwards-compatible with CodeKit 1 or 2. For more information, see https://codekitapp.com/", +"buildSteps": [ + { + "name": "Process All Remaining Files and Folders", + "stepType": 1, + "uuidString": "0C63DFF4-FEB2-4C41-8C17-902EAE1855AF" + } + ], +"creatorBuild": "28905", +"files": { + "/_custom.js": { + "ft": 64, + "ma": 0, + "mi": 1, + "oA": 1, + "oAP": "/min/_custom-min.js", + "oF": 0, + "sC": 1, + "tS": 0 + }, + "/booking.js": { + "ft": 64, + "ma": 0, + "mi": 1, + "oA": 0, + "oAP": "/min/booking-min.js", + "oF": 0, + "sC": 1, + "tS": 0 + }, + "/bootstrap-3.3.7.js": { + "ft": 64, + "ma": 0, + "mi": 1, + "oA": 0, + "oAP": "/min/bootstrap-3.3.7-min.js", + "oF": 0, + "sC": 1, + "tS": 0 + }, + "/bootstrap-select-1.12.0.js": { + "ft": 64, + "ma": 0, + "mi": 1, + "oA": 0, + "oAP": "/min/bootstrap-select-1.12.0-min.js", + "oF": 0, + "sC": 1, + "tS": 0 + }, + "/cookieconsent.min.js": { + "ft": 64, + "ma": 0, + "mi": 1, + "oA": 0, + "oAP": "/min/cookieconsent.min-min.js", + "oF": 0, + "sC": 1, + "tS": 0 + }, + "/custom.js": { + "ft": 64, + "ma": 0, + "mi": 1, + "oA": 0, + "oAP": "/min/custom-min.js", + "oF": 0, + "sC": 1, + "tS": 0 + }, + "/fewoBooking.js": { + "ft": 64, + "ma": 0, + "mi": 1, + "oA": 0, + "oAP": "/min/fewoBooking-min.js", + "oF": 0, + "sC": 1, + "tS": 0 + }, + "/jquery-3.1.1.js": { + "ft": 64, + "ma": 0, + "mi": 1, + "oA": 0, + "oAP": "/min/jquery-3.1.1-min.js", + "oF": 0, + "sC": 1, + "tS": 0 + }, + "/jquery-ui-1.12.1.js": { + "ft": 64, + "ma": 0, + "mi": 1, + "oA": 0, + "oAP": "/min/jquery-ui-1.12.1-min.js", + "oF": 0, + "sC": 1, + "tS": 0 + }, + "/jquery.prettyPhoto-3.1.6.js": { + "ft": 64, + "ma": 0, + "mi": 1, + "oA": 0, + "oAP": "/min/jquery.prettyPhoto-3.1.6-min.js", + "oF": 0, + "sC": 1, + "tS": 0 + }, + "/owl.carousel-2.2.0.js": { + "ft": 64, + "ma": 0, + "mi": 1, + "oA": 0, + "oAP": "/min/owl.carousel-2.2.0-min.js", + "oF": 0, + "sC": 1, + "tS": 0 + }, + "/parallax.js": { + "ft": 64, + "ma": 0, + "mi": 1, + "oA": 0, + "oAP": "/min/parallax-min.js", + "oF": 0, + "sC": 1, + "tS": 0 + }, + "/travelProgram.js": { + "ft": 64, + "ma": 0, + "mi": 1, + "oA": 0, + "oAP": "/min/travelProgram-min.js", + "oF": 0, + "sC": 1, + "tS": 0 + }, + "/validator.js": { + "ft": 64, + "ma": 0, + "mi": 1, + "oA": 0, + "oAP": "/min/validator-min.js", + "oF": 0, + "sC": 1, + "tS": 0 + } + }, +"hooks": [ + ], +"manualImportLinks": { + }, +"projectAttributes": { + "creationDate": 564928264.28434801, + "displayValue": "js", + "displayValueWasSetByUser": 0, + "iconImageName": "meme-jake", + "iconImageWasSetByUser": 0 + }, +"projectSettings": { + "abortBuildOnError": 1, + "alwaysUseExternalServer": 0, + "animateCSSInjections": 1, + "autoBuildNewItems": 1, + "autoprefixerEnableIEGrid": 0, + "babel7PresetType": 1, + "babelAllowRCFiles": 0, + "babelAuxiliaryCommentAfter": "", + "babelAuxiliaryCommentBefore": "", + "babelConfigType": 0, + "babelCustomPluginsList": "", + "babelCustomPresetsList": "", + "babelInsertModuleIDs": 0, + "babelModuleID": "", + "babelNoComments": 0, + "babelPlugins": { + "arrow-functions": { + "active": 0 + }, + "async-generator-functions": { + "active": 0 + }, + "async-to-generator": { + "active": 0 + }, + "block-scoped-functions": { + "active": 0 + }, + "block-scoping": { + "active": 0 + }, + "class-properties": { + "active": 0 + }, + "classes": { + "active": 0 + }, + "computed-properties": { + "active": 0 + }, + "decorators": { + "active": 0 + }, + "destructuring": { + "active": 0 + }, + "do-expressions": { + "active": 0 + }, + "dotall-regex": { + "active": 0 + }, + "duplicate-keys": { + "active": 0 + }, + "exponentiation-operator": { + "active": 0 + }, + "export-default-from": { + "active": 0 + }, + "export-namespace-from": { + "active": 0 + }, + "external-helpers": { + "active": 0 + }, + "flow-strip-types": { + "active": 0 + }, + "for-of": { + "active": 0 + }, + "function-bind": { + "active": 0 + }, + "function-name": { + "active": 0 + }, + "function-sent": { + "active": 0 + }, + "instanceof": { + "active": 0 + }, + "jscript": { + "active": 0 + }, + "literals": { + "active": 0 + }, + "logical-assignment-operators": { + "active": 0 + }, + "member-expression-literals": { + "active": 0 + }, + "merge-sibling-variables": { + "active": 0 + }, + "minify-booleans": { + "active": 0 + }, + "modules-amd": { + "active": 0 + }, + "modules-commonjs": { + "active": 0 + }, + "modules-systemjs": { + "active": 0 + }, + "modules-umd": { + "active": 0 + }, + "new-target": { + "active": 0 + }, + "node-env-inline": { + "active": 0 + }, + "nullish-coalescing-operator": { + "active": 0 + }, + "numeric-separator": { + "active": 0 + }, + "object-assign": { + "active": 0 + }, + "object-rest-spread": { + "active": 0 + }, + "object-set-prototype-of-to-assign": { + "active": 0 + }, + "object-super": { + "active": 0 + }, + "optional-catch-binding": { + "active": 0 + }, + "optional-chaining": { + "active": 0 + }, + "parameters": { + "active": 0 + }, + "pipeline-operator": { + "active": 0 + }, + "property-literals": { + "active": 0 + }, + "property-mutators": { + "active": 0 + }, + "proto-to-assign": { + "active": 0 + }, + "react-constant-elements": { + "active": 0 + }, + "react-display-name": { + "active": 0 + }, + "react-inline-elements": { + "active": 0 + }, + "react-jsx": { + "active": 0 + }, + "react-jsx-compat": { + "active": 0 + }, + "react-jsx-self": { + "active": 0 + }, + "react-jsx-source": { + "active": 0 + }, + "regenerator": { + "active": 0 + }, + "remove-console": { + "active": 0 + }, + "remove-debugger": { + "active": 0 + }, + "reserved-words": { + "active": 0 + }, + "runtime": { + "active": 0 + }, + "shorthand-properties": { + "active": 0 + }, + "simplify-comparison-operators": { + "active": 0 + }, + "spread": { + "active": 0 + }, + "sticky-regex": { + "active": 0 + }, + "strict-mode": { + "active": 0 + }, + "template-literals": { + "active": 0 + }, + "throw-expressions": { + "active": 0 + }, + "typeof-symbol": { + "active": 0 + }, + "undefined-to-void": { + "active": 0 + }, + "unicode-property-regex": { + "active": 0 + }, + "unicode-regex": { + "active": 0 + } + }, + "babelRetainLines": 0, + "bowerAbbreviatedPath": "bower_components", + "bowerAutoCreateInfoFile": 1, + "bowerInstallDevDependencies": 0, + "bowerSaveDependencies": 1, + "bowerSaveDevDependencies": 0, + "bowerUseExactVersion": 0, + "browserRefreshDelay": 0, + "browserslistString": ">0.2%, last 2 versions, Firefox ESR, not dead", + "buildFolderActive": 0, + "buildFolderName": "build", + "cleanBuild": 1, + "coffeeLintFlags2": { + "arrow_spacing": { + "active": 0, + "flagValue": -1 + }, + "camel_case_classes": { + "active": 1, + "flagValue": -1 + }, + "colon_assignment_spacing": { + "active": 0, + "flagValue": 1 + }, + "cyclomatic_complexity": { + "active": 0, + "flagValue": 10 + }, + "duplicate_key": { + "active": 1, + "flagValue": -1 + }, + "empty_constructor_needs_parens": { + "active": 0, + "flagValue": -1 + }, + "ensure_comprehensions": { + "active": 1, + "flagValue": -1 + }, + "indentation": { + "active": 1, + "flagValue": 2 + }, + "line_endings": { + "active": 0, + "flagValue": 0 + }, + "max_line_length": { + "active": 0, + "flagValue": 150 + }, + "missing_fat_arrows": { + "active": 0, + "flagValue": -1 + }, + "newlines_after_classes": { + "active": 0, + "flagValue": 3 + }, + "no_backticks": { + "active": 1, + "flagValue": -1 + }, + "no_debugger": { + "active": 1, + "flagValue": -1 + }, + "no_empty_functions": { + "active": 0, + "flagValue": -1 + }, + "no_empty_param_list": { + "active": 0, + "flagValue": -1 + }, + "no_implicit_braces": { + "active": 1, + "flagValue": -1 + }, + "no_implicit_parens": { + "active": 0, + "flagValue": -1 + }, + "no_interpolation_in_single_quotes": { + "active": 0, + "flagValue": -1 + }, + "no_nested_string_interpolation": { + "active": 1, + "flagValue": -1 + }, + "no_plusplus": { + "active": 0, + "flagValue": -1 + }, + "no_private_function_fat_arrows": { + "active": 1, + "flagValue": -1 + }, + "no_stand_alone_at": { + "active": 1, + "flagValue": -1 + }, + "no_tabs": { + "active": 1, + "flagValue": -1 + }, + "no_this": { + "active": 0, + "flagValue": -1 + }, + "no_throwing_strings": { + "active": 1, + "flagValue": -1 + }, + "no_trailing_semicolons": { + "active": 1, + "flagValue": -1 + }, + "no_trailing_whitespace": { + "active": 1, + "flagValue": -1 + }, + "no_unnecessary_double_quotes": { + "active": 0, + "flagValue": -1 + }, + "no_unnecessary_fat_arrows": { + "active": 1, + "flagValue": -1 + }, + "non_empty_constructor_needs_parens": { + "active": 0, + "flagValue": -1 + }, + "prefer_english_operator": { + "active": 0, + "flagValue": -1 + }, + "space_operators": { + "active": 0, + "flagValue": -1 + }, + "spacing_after_comma": { + "active": 1, + "flagValue": -1 + } + }, + "esLintConfigFileHandlingType": 0, + "esLintECMAVersion": 7, + "esLintEnvironmentsMask": 1, + "esLintRules": { + "accessor-pairs": { + "active": 0, + "optionString": "{'setWithoutGet': true, 'getWithoutSet': false}" + }, + "array-bracket-newline": { + "active": 0, + "optionString": "{'multiline': true, 'minItems': null}" + }, + "array-bracket-spacing": { + "active": 0, + "optionString": "'never', {'singleValue': false, 'objectsInArrays': false, 'arraysInArrays': false}" + }, + "array-callback-return": { + "active": 0, + "optionString": "{'allowImplicit': false}" + }, + "array-element-newline": { + "active": 0, + "optionString": "'always'" + }, + "arrow-body-style": { + "active": 0, + "optionString": "'as-needed', {'requireReturnForObjectLiteral': false}" + }, + "arrow-parens": { + "active": 0, + "optionString": "'always'" + }, + "arrow-spacing": { + "active": 0, + "optionString": "{'before': true, 'after': true}" + }, + "block-scoped-var": { + "active": 0, + "optionString": "" + }, + "block-spacing": { + "active": 0, + "optionString": "'always'" + }, + "brace-style": { + "active": 0, + "optionString": "'1tbs', {'allowSingleLine': true}" + }, + "callback-return": { + "active": 0, + "optionString": "['callback', 'cb', 'next']" + }, + "camelcase": { + "active": 0, + "optionString": "{'properties': 'always', 'ignoreDestructuring': false}" + }, + "capitalized-comments": { + "active": 0, + "optionString": "'always', {'ignoreInlineComments': false, 'ignoreConsecutiveComments': false}" + }, + "class-methods-use-this": { + "active": 0, + "optionString": "{'exceptMethods': []}" + }, + "comma-dangle": { + "active": 1, + "optionString": "'never'" + }, + "comma-spacing": { + "active": 0, + "optionString": "{'before': false, 'after': true}" + }, + "comma-style": { + "active": 0, + "optionString": "'last'" + }, + "complexity": { + "active": 0, + "optionString": "20" + }, + "computed-property-spacing": { + "active": 0, + "optionString": "'never'" + }, + "consistent-return": { + "active": 0, + "optionString": "{'treatUndefinedAsUnspecified': false}" + }, + "consistent-this": { + "active": 0, + "optionString": "'that'" + }, + "constructor-super": { + "active": 1, + "optionString": "" + }, + "curly": { + "active": 0, + "optionString": "'all'" + }, + "default-case": { + "active": 0, + "optionString": "" + }, + "dot-location": { + "active": 0, + "optionString": "'object'" + }, + "dot-notation": { + "active": 0, + "optionString": "{'allowKeywords': false}" + }, + "eol-last": { + "active": 0, + "optionString": "'always'" + }, + "eqeqeq": { + "active": 0, + "optionString": "'always', {'null': 'always'}" + }, + "for-direction": { + "active": 0, + "optionString": "" + }, + "func-call-spacing": { + "active": 0, + "optionString": "'never'" + }, + "func-name-matching": { + "active": 0, + "optionString": "'always', {'considerPropertyDescriptor': false, 'includeCommonJSModuleExports': false}" + }, + "func-names": { + "active": 0, + "optionString": "'always', {'generators': 'always'}" + }, + "func-style": { + "active": 0, + "optionString": "'expression'" + }, + "function-paren-newline": { + "active": 0, + "optionString": "'multiline'" + }, + "generator-star-spacing": { + "active": 0, + "optionString": "{'before': true, 'after': false}" + }, + "getter-return": { + "active": 0, + "optionString": "{'allowImplicit': false}" + }, + "global-require": { + "active": 0, + "optionString": "" + }, + "guard-for-in": { + "active": 0, + "optionString": "" + }, + "handle-callback-err": { + "active": 0, + "optionString": "'err'" + }, + "id-blacklist": { + "active": 0, + "optionString": "'data', 'err', 'e', 'cb', 'callback'" + }, + "id-length": { + "active": 0, + "optionString": "{'min': 2, 'max': 1000, 'properties': 'always', 'exceptions': ['x', 'i', 'y']}" + }, + "id-match": { + "active": 0, + "optionString": "'^[a-z]+([A-Z][a-z]+)*$', {'properties': false, 'onlyDeclarations': true}" + }, + "implicit-arrow-linebreak": { + "active": 0, + "optionString": "'beside'" + }, + "indent": { + "active": 0, + "optionString": "4, {'SwitchCase': 0, 'VariableDeclarator': 1, 'outerIIFEBody': 1 }" + }, + "init-declarations": { + "active": 0, + "optionString": "'always', {'ignoreForLoopInit': true}" + }, + "jsx-quotes": { + "active": 0, + "optionString": "'prefer-double'" + }, + "key-spacing": { + "active": 0, + "optionString": "{'singleLine': {'beforeColon': false, 'afterColon': true, 'mode':'strict'}, 'multiLine': {'beforeColon': false, 'afterColon': true, 'align': 'value', 'mode':'minimum'}}" + }, + "keyword-spacing": { + "active": 0, + "optionString": "{'before': true, 'after': true, 'overrides': {}}" + }, + "line-comment-position": { + "active": 0, + "optionString": "{'position': 'above'}" + }, + "linebreak-style": { + "active": 0, + "optionString": "'unix'" + }, + "lines-around-comment": { + "active": 0, + "optionString": "{'beforeBlockComment': true}" + }, + "lines-between-class-members": { + "active": 0, + "optionString": "'always', {exceptAfterSingleLine: false}" + }, + "max-classes-per-file": { + "active": 0, + "optionString": "1" + }, + "max-depth": { + "active": 0, + "optionString": "{'max': 4}" + }, + "max-len": { + "active": 0, + "optionString": "{'code': 80, 'comments': 80, 'tabWidth': 4, 'ignoreUrls': true, 'ignoreStrings': true, 'ignoreTemplateLiterals': true, 'ignoreRegExpLiterals': true}" + }, + "max-lines": { + "active": 0, + "optionString": "{'max': 300, 'skipBlankLines': true, 'skipComments': true}" + }, + "max-lines-per-function": { + "active": 0, + "optionString": "{'max': 50, 'skipBlankLines': true, 'skipComments': true, 'IIFEs': false}" + }, + "max-nested-callbacks": { + "active": 0, + "optionString": "{'max': 10}" + }, + "max-params": { + "active": 0, + "optionString": "{'max': 4}" + }, + "max-statements": { + "active": 0, + "optionString": "{'max': 10}, {'ignoreTopLevelFunctions': true}" + }, + "max-statements-per-line": { + "active": 0, + "optionString": "{'max': 1}" + }, + "multiline-comment-style": { + "active": 0, + "optionString": "'starred-block'" + }, + "multiline-ternary": { + "active": 0, + "optionString": "'always'" + }, + "new-cap": { + "active": 0, + "optionString": "{'newIsCap': true, 'capIsNew': true, 'newIsCapExceptions': [], 'capIsNewExceptions': ['Array', 'Boolean', 'Date', 'Error', 'Function', 'Number', 'Object', 'RegExp', 'String', 'Symbol'], 'properties': true}" + }, + "new-parens": { + "active": 0, + "optionString": "" + }, + "newline-per-chained-call": { + "active": 0, + "optionString": "{'ignoreChainWithDepth': 2}" + }, + "no-alert": { + "active": 0, + "optionString": "" + }, + "no-array-constructor": { + "active": 0, + "optionString": "" + }, + "no-async-promise-executor": { + "active": 0, + "optionString": "" + }, + "no-await-in-loop": { + "active": 0, + "optionString": "" + }, + "no-bitwise": { + "active": 0, + "optionString": "{'allow': ['~'], 'int32Hint': true}" + }, + "no-buffer-constructor": { + "active": 0, + "optionString": "" + }, + "no-caller": { + "active": 0, + "optionString": "" + }, + "no-case-declarations": { + "active": 1, + "optionString": "" + }, + "no-class-assign": { + "active": 1, + "optionString": "" + }, + "no-compare-neg-zero": { + "active": 0, + "optionString": "" + }, + "no-cond-assign": { + "active": 1, + "optionString": "'except-parens'" + }, + "no-confusing-arrow": { + "active": 0, + "optionString": "{'allowParens': false}" + }, + "no-console": { + "active": 1, + "optionString": "{'allow': ['warn', 'error']}" + }, + "no-const-assign": { + "active": 1, + "optionString": "" + }, + "no-constant-condition": { + "active": 1, + "optionString": "{'checkLoops': true}" + }, + "no-continue": { + "active": 0, + "optionString": "" + }, + "no-control-regex": { + "active": 1, + "optionString": "" + }, + "no-debugger": { + "active": 1, + "optionString": "" + }, + "no-delete-var": { + "active": 1, + "optionString": "" + }, + "no-div-regex": { + "active": 0, + "optionString": "" + }, + "no-dupe-args": { + "active": 1, + "optionString": "" + }, + "no-dupe-class-members": { + "active": 1, + "optionString": "" + }, + "no-dupe-keys": { + "active": 1, + "optionString": "" + }, + "no-duplicate-imports": { + "active": 0, + "optionString": "{'includeExports': false}" + }, + "no-else-return": { + "active": 0, + "optionString": "" + }, + "no-empty": { + "active": 1, + "optionString": "{'allowEmptyCatch': false}" + }, + "no-empty-character-class": { + "active": 1, + "optionString": "" + }, + "no-empty-function": { + "active": 0, + "optionString": "{'allow': []}" + }, + "no-empty-pattern": { + "active": 1, + "optionString": "" + }, + "no-eq-null": { + "active": 0, + "optionString": "" + }, + "no-eval": { + "active": 0, + "optionString": "{'allowIndirect': false}" + }, + "no-ex-assign": { + "active": 1, + "optionString": "" + }, + "no-extend-native": { + "active": 0, + "optionString": "{'exceptions': []}" + }, + "no-extra-bind": { + "active": 0, + "optionString": "" + }, + "no-extra-boolean-cast": { + "active": 1, + "optionString": "" + }, + "no-extra-labels": { + "active": 0, + "optionString": "" + }, + "no-extra-parens": { + "active": 0, + "optionString": "'all', {'conditionalAssign': false, 'returnAssign': false, 'nestedBinaryExpressions': false, 'ignoreJSX': 'none', 'enforceForArrowConditionals': false}" + }, + "no-extra-semi": { + "active": 1, + "optionString": "" + }, + "no-fallthrough": { + "active": 1, + "optionString": "" + }, + "no-floating-decimal": { + "active": 0, + "optionString": "" + }, + "no-func-assign": { + "active": 1, + "optionString": "" + }, + "no-global-assign": { + "active": 1, + "optionString": "{'exceptions': []}" + }, + "no-implicit-coercion": { + "active": 0, + "optionString": "{'boolean': true, 'number': true, 'string': true, 'allow': []}" + }, + "no-implicit-globals": { + "active": 0, + "optionString": "" + }, + "no-implied-eval": { + "active": 0, + "optionString": "" + }, + "no-inline-comments": { + "active": 0, + "optionString": "" + }, + "no-inner-declarations": { + "active": 1, + "optionString": "'functions'" + }, + "no-invalid-regexp": { + "active": 1, + "optionString": "{'allowConstructorFlags': ['u', 'y']}" + }, + "no-invalid-this": { + "active": 0, + "optionString": "" + }, + "no-irregular-whitespace": { + "active": 1, + "optionString": "{'skipStrings': true, 'skipComments': false, 'skipRegExps': true, 'skipTemplates': true}" + }, + "no-iterator": { + "active": 0, + "optionString": "" + }, + "no-label-var": { + "active": 0, + "optionString": "" + }, + "no-labels": { + "active": 0, + "optionString": "{'allowLoop': false, 'allowSwitch': false}" + }, + "no-lone-blocks": { + "active": 0, + "optionString": "" + }, + "no-lonely-if": { + "active": 0, + "optionString": "" + }, + "no-loop-func": { + "active": 0, + "optionString": "" + }, + "no-magic-numbers": { + "active": 0, + "optionString": "{'ignore': [], 'ignoreArrayIndexes': true, 'enforceConst': false, 'detectObjects': false}" + }, + "no-misleading-character-class": { + "active": 0, + "optionString": "" + }, + "no-mixed-operators": { + "active": 0, + "optionString": "{'groups': [['+', '-', '*', '/', '%', '**'], ['&', '|', '^', '~', '<<', '>>', '>>>'], ['==', '!=', '===', '!==', '>', '>=', '<', '<='], ['&&', '||'], ['in', 'instanceof']], 'allowSamePrecedence': true}" + }, + "no-mixed-requires": { + "active": 0, + "optionString": "{'grouping': false, 'allowCall': false }" + }, + "no-mixed-spaces-and-tabs": { + "active": 0, + "optionString": "" + }, + "no-multi-assign": { + "active": 0, + "optionString": "" + }, + "no-multi-spaces": { + "active": 0, + "optionString": "{'exceptions': {'Property': true, 'BinaryExpression': false, 'VariableDeclarator': false, 'ImportDeclaration': false}}" + }, + "no-multi-str": { + "active": 0, + "optionString": "" + }, + "no-multiple-empty-lines": { + "active": 0, + "optionString": "{'max': 2, 'maxBOF': 2, 'maxEOF': 2}" + }, + "no-negated-condition": { + "active": 0, + "optionString": "" + }, + "no-nested-ternary": { + "active": 0, + "optionString": "" + }, + "no-new": { + "active": 0, + "optionString": "" + }, + "no-new-func": { + "active": 0, + "optionString": "" + }, + "no-new-object": { + "active": 0, + "optionString": "" + }, + "no-new-require": { + "active": 0, + "optionString": "" + }, + "no-new-symbol": { + "active": 1, + "optionString": "" + }, + "no-new-wrappers": { + "active": 0, + "optionString": "" + }, + "no-obj-calls": { + "active": 1, + "optionString": "" + }, + "no-octal": { + "active": 1, + "optionString": "" + }, + "no-octal-escape": { + "active": 0, + "optionString": "" + }, + "no-param-reassign": { + "active": 0, + "optionString": "{'props': false}" + }, + "no-path-concat": { + "active": 0, + "optionString": "" + }, + "no-plusplus": { + "active": 0, + "optionString": "{'allowForLoopAfterthoughts': false}" + }, + "no-process-env": { + "active": 0, + "optionString": "" + }, + "no-process-exit": { + "active": 0, + "optionString": "" + }, + "no-proto": { + "active": 0, + "optionString": "" + }, + "no-prototype-builtins": { + "active": 0, + "optionString": "" + }, + "no-redeclare": { + "active": 1, + "optionString": "{'builtinGlobals': false}" + }, + "no-regex-spaces": { + "active": 1, + "optionString": "" + }, + "no-restricted-globals": { + "active": 0, + "optionString": "'event', 'fdescribe'" + }, + "no-restricted-imports": { + "active": 0, + "optionString": "" + }, + "no-restricted-modules": { + "active": 0, + "optionString": "" + }, + "no-restricted-properties": { + "active": 0, + "optionString": "[{'object': 'disallowedObjectName', 'property': 'disallowedPropertyName'}, {'object': 'disallowedObjectName', 'property': 'anotherDisallowedPropertyName', 'message': 'Please use allowedObjectName.allowedPropertyName.'}]" + }, + "no-restricted-syntax": { + "active": 0, + "optionString": "'FunctionExpression', 'WithStatement'" + }, + "no-return-assign": { + "active": 0, + "optionString": "'except-parens'" + }, + "no-return-await": { + "active": 0, + "optionString": "" + }, + "no-script-url": { + "active": 0, + "optionString": "" + }, + "no-self-assign": { + "active": 1, + "optionString": "{'props': true}" + }, + "no-self-compare": { + "active": 0, + "optionString": "" + }, + "no-sequences": { + "active": 0, + "optionString": "" + }, + "no-shadow": { + "active": 0, + "optionString": "{'builtinGlobals': false, 'hoist': 'functions', 'allow': []}" + }, + "no-shadow-restricted-names": { + "active": 0, + "optionString": "" + }, + "no-sparse-arrays": { + "active": 1, + "optionString": "" + }, + "no-sync": { + "active": 0, + "optionString": "{'allowAtRootLevel': false}" + }, + "no-tabs": { + "active": 0, + "optionString": "" + }, + "no-template-curly-in-string": { + "active": 0, + "optionString": "" + }, + "no-ternary": { + "active": 0, + "optionString": "" + }, + "no-this-before-super": { + "active": 1, + "optionString": "" + }, + "no-throw-literal": { + "active": 0, + "optionString": "" + }, + "no-trailing-spaces": { + "active": 0, + "optionString": "{'skipBlankLines': false, 'ignoreComments': false}" + }, + "no-undef": { + "active": 1, + "optionString": "{'typeof': false}" + }, + "no-undef-init": { + "active": 0, + "optionString": "" + }, + "no-undefined": { + "active": 0, + "optionString": "" + }, + "no-underscore-dangle": { + "active": 0, + "optionString": "{'allow': [], 'allowAfterThis': false, 'allowAfterSuper': false, 'enforceInMethodNames': false}" + }, + "no-unexpected-multiline": { + "active": 1, + "optionString": "" + }, + "no-unmodified-loop-condition": { + "active": 0, + "optionString": "" + }, + "no-unneeded-ternary": { + "active": 0, + "optionString": "{'defaultAssignment': true}" + }, + "no-unreachable": { + "active": 1, + "optionString": "" + }, + "no-unsafe-finally": { + "active": 1, + "optionString": "" + }, + "no-unsafe-negation": { + "active": 1, + "optionString": "" + }, + "no-unused-expressions": { + "active": 0, + "optionString": "{'allowShortCircuit': false, 'allowTernary': false, 'allowTaggedTemplates': false}" + }, + "no-unused-labels": { + "active": 1, + "optionString": "" + }, + "no-unused-vars": { + "active": 1, + "optionString": "{'vars': 'all', 'args': 'after-used', 'caughtErrors': 'none', 'ignoreRestSiblings': false}" + }, + "no-use-before-define": { + "active": 0, + "optionString": "{'functions': true, 'classes': true, 'variables': true}" + }, + "no-useless-call": { + "active": 0, + "optionString": "" + }, + "no-useless-computed-key": { + "active": 0, + "optionString": "" + }, + "no-useless-concat": { + "active": 0, + "optionString": "" + }, + "no-useless-constructor": { + "active": 0, + "optionString": "" + }, + "no-useless-escape": { + "active": 0, + "optionString": "" + }, + "no-useless-rename": { + "active": 0, + "optionString": "{'ignoreDestructuring': false, 'ignoreImport': false, 'ignoreExport': false}" + }, + "no-useless-return": { + "active": 0, + "optionString": "" + }, + "no-var": { + "active": 0, + "optionString": "" + }, + "no-void": { + "active": 0, + "optionString": "" + }, + "no-warning-comments": { + "active": 0, + "optionString": "{'terms': ['todo', 'fixme', 'xxx'], 'location': 'start'}" + }, + "no-whitespace-before-property": { + "active": 0, + "optionString": "" + }, + "no-with": { + "active": 0, + "optionString": "" + }, + "nonblock-statement-body-position": { + "active": 0, + "optionString": "'beside'" + }, + "object-curly-newline": { + "active": 0, + "optionString": "{'ObjectExpression': {'multiline': true, 'consistent': true}, 'ObjectPattern': {'multiline': true, 'consistent': true}}" + }, + "object-curly-spacing": { + "active": 0, + "optionString": "'never'" + }, + "object-property-newline": { + "active": 0, + "optionString": "{'allowAllPropertiesOnSameLine': true}" + }, + "object-shorthand": { + "active": 0, + "optionString": "'always', {'avoidQuotes': false, 'ignoreConstructors': false}" + }, + "one-var": { + "active": 0, + "optionString": "'always'" + }, + "one-var-declaration-per-line": { + "active": 0, + "optionString": "'always'" + }, + "operator-assignment": { + "active": 0, + "optionString": "'always'" + }, + "operator-linebreak": { + "active": 0, + "optionString": "'after', {'overrides': {'?': 'after', '+=': 'none'}}" + }, + "padded-blocks": { + "active": 0, + "optionString": "{'blocks': 'always', 'switches': 'always', 'classes': 'always'}" + }, + "padding-line-between-statements": { + "active": 0, + "optionString": "{blankLine: 'always', prev:'*', next:'return'}" + }, + "prefer-arrow-callback": { + "active": 0, + "optionString": "" + }, + "prefer-const": { + "active": 0, + "optionString": "{'destructuring': 'any', 'ignoreReadBeforeAssign': false}" + }, + "prefer-destructuring": { + "active": 0, + "optionString": "{'array': true, 'object': true}, {'enforceForRenamedProperties': false}" + }, + "prefer-numeric-literals": { + "active": 0, + "optionString": "" + }, + "prefer-object-spread": { + "active": 0, + "optionString": "" + }, + "prefer-promise-reject-errors": { + "active": 0, + "optionString": "{'allowEmptyReject': false}" + }, + "prefer-rest-params": { + "active": 0, + "optionString": "" + }, + "prefer-spread": { + "active": 0, + "optionString": "" + }, + "prefer-template": { + "active": 0, + "optionString": "" + }, + "quote-props": { + "active": 0, + "optionString": "'always'" + }, + "quotes": { + "active": 0, + "optionString": "'double', {'avoidEscape': true, 'allowTemplateLiterals': true}" + }, + "radix": { + "active": 0, + "optionString": "'always'" + }, + "require-atomic-updates": { + "active": 0, + "optionString": "" + }, + "require-await": { + "active": 0, + "optionString": "" + }, + "require-jsdoc": { + "active": 0, + "optionString": "{'require': {'FunctionDeclaration': true, 'MethodDefinition': false, 'ClassDeclaration': false, 'ArrowFunctionExpression': false}}" + }, + "require-unicode-regexp": { + "active": 0, + "optionString": "" + }, + "require-yield": { + "active": 1, + "optionString": "" + }, + "rest-spread-spacing": { + "active": 0, + "optionString": "'never'" + }, + "semi": { + "active": 0, + "optionString": "'always', {'omitLastInOneLineBlock': false}" + }, + "semi-spacing": { + "active": 0, + "optionString": "{'before': false, 'after': true}" + }, + "semi-style": { + "active": 0, + "optionString": "'last'" + }, + "sort-imports": { + "active": 0, + "optionString": "{'ignoreCase': false, 'ignoreMemberSort': true, 'memberSyntaxSortOrder': ['none', 'all', 'multiple', 'single']}" + }, + "sort-keys": { + "active": 0, + "optionString": "'asc', {'caseSensitive': true, 'natural': false}" + }, + "sort-vars": { + "active": 0, + "optionString": "{'ignoreCase': false}" + }, + "space-before-blocks": { + "active": 0, + "optionString": "{'functions': 'always', 'keywords': 'always', 'classes': 'always'}" + }, + "space-before-function-paren": { + "active": 0, + "optionString": "{'anonymous': 'always', 'named': 'never'}" + }, + "space-in-parens": { + "active": 0, + "optionString": "'never', {'exceptions': []}" + }, + "space-infix-ops": { + "active": 0, + "optionString": "{'int32Hint': false}" + }, + "space-unary-ops": { + "active": 0, + "optionString": "{'words': true, 'nonwords': false, 'overrides': {}}" + }, + "spaced-comment": { + "active": 0, + "optionString": "'always', {'line': {'markers': ['/'], 'exceptions': ['-', '+']}, 'block': {'markers': ['!'], 'exceptions': ['*'], 'balanced': false}}" + }, + "strict": { + "active": 0, + "optionString": "'safe'" + }, + "switch-colon-spacing": { + "active": 0, + "optionString": "{'after': true, 'before': false}" + }, + "symbol-description": { + "active": 0, + "optionString": "" + }, + "template-curly-spacing": { + "active": 0, + "optionString": "'never'" + }, + "template-tag-spacing": { + "active": 0, + "optionString": "'never'" + }, + "unicode-bom": { + "active": 0, + "optionString": "'never'" + }, + "use-isnan": { + "active": 1, + "optionString": "" + }, + "valid-jsdoc": { + "active": 0, + "optionString": "{'prefer': {'return': 'returns'}, 'requireReturn': true, 'requireReturnDescription': true, 'requireReturnType': true, 'requireParamDescription': true}" + }, + "valid-typeof": { + "active": 1, + "optionString": "{'requireStringLiterals': true}" + }, + "vars-on-top": { + "active": 0, + "optionString": "" + }, + "wrap-iife": { + "active": 0, + "optionString": "'outside'" + }, + "wrap-regex": { + "active": 0, + "optionString": "" + }, + "yield-star-spacing": { + "active": 0, + "optionString": "{'before': false, 'after': true}" + }, + "yoda": { + "active": 0, + "optionString": "'never', {'exceptRange': false, 'onlyEquality': false}" + } + }, + "esLintSourceType": 0, + "externalServerAddress": "http://localhost:8888", + "gitIgnoreBuildFolder": 1, + "hideConfigFile": 0, + "jsCheckerReservedNamesString": "", + "jsHintFlags2": { + "asi": { + "active": 0, + "flagValue": -1 + }, + "bitwise": { + "active": 1, + "flagValue": -1 + }, + "boss": { + "active": 0, + "flagValue": -1 + }, + "browser": { + "active": 1, + "flagValue": -1 + }, + "browserify": { + "active": 0, + "flagValue": -1 + }, + "camelcase": { + "active": 0, + "flagValue": -1 + }, + "couch": { + "active": 0, + "flagValue": -1 + }, + "curly": { + "active": 1, + "flagValue": -1 + }, + "debug": { + "active": 0, + "flagValue": -1 + }, + "devel": { + "active": 0, + "flagValue": -1 + }, + "dojo": { + "active": 0, + "flagValue": -1 + }, + "elision": { + "active": 1, + "flagValue": -1 + }, + "eqeqeq": { + "active": 1, + "flagValue": -1 + }, + "eqnull": { + "active": 0, + "flagValue": -1 + }, + "es3": { + "active": 0, + "flagValue": -1 + }, + "esnext": { + "active": 0, + "flagValue": -1 + }, + "evil": { + "active": 0, + "flagValue": -1 + }, + "expr": { + "active": 0, + "flagValue": -1 + }, + "forin": { + "active": 0, + "flagValue": -1 + }, + "freeze": { + "active": 1, + "flagValue": -1 + }, + "funcscope": { + "active": 0, + "flagValue": -1 + }, + "futurehostile": { + "active": 0, + "flagValue": -1 + }, + "globalstrict": { + "active": 0, + "flagValue": -1 + }, + "immed": { + "active": 0, + "flagValue": -1 + }, + "indent": { + "active": 0, + "flagValue": 4 + }, + "iterator": { + "active": 0, + "flagValue": -1 + }, + "jasmine": { + "active": 0, + "flagValue": -1 + }, + "jquery": { + "active": 1, + "flagValue": -1 + }, + "lastsemic": { + "active": 0, + "flagValue": -1 + }, + "latedef": { + "active": 1, + "flagValue": -1 + }, + "laxbreak": { + "active": 0, + "flagValue": -1 + }, + "laxcomma": { + "active": 0, + "flagValue": -1 + }, + "loopfunc": { + "active": 0, + "flagValue": -1 + }, + "maxcomplexity": { + "active": 0, + "flagValue": 10 + }, + "maxdepth": { + "active": 0, + "flagValue": 3 + }, + "maxlen": { + "active": 0, + "flagValue": 150 + }, + "maxparams": { + "active": 0, + "flagValue": 3 + }, + "maxstatements": { + "active": 0, + "flagValue": 4 + }, + "mocha": { + "active": 0, + "flagValue": -1 + }, + "mootools": { + "active": 0, + "flagValue": -1 + }, + "moz": { + "active": 0, + "flagValue": -1 + }, + "multistr": { + "active": 0, + "flagValue": -1 + }, + "newcap": { + "active": 1, + "flagValue": -1 + }, + "noarg": { + "active": 1, + "flagValue": -1 + }, + "nocomma": { + "active": 0, + "flagValue": -1 + }, + "node": { + "active": 0, + "flagValue": -1 + }, + "noempty": { + "active": 0, + "flagValue": -1 + }, + "nonbsp": { + "active": 0, + "flagValue": -1 + }, + "nonew": { + "active": 1, + "flagValue": -1 + }, + "nonstandard": { + "active": 0, + "flagValue": -1 + }, + "notypeof": { + "active": 1, + "flagValue": -1 + }, + "noyield": { + "active": 0, + "flagValue": -1 + }, + "onecase": { + "active": 0, + "flagValue": -1 + }, + "phantom": { + "active": 0, + "flagValue": -1 + }, + "plusplus": { + "active": 0, + "flagValue": -1 + }, + "proto": { + "active": 0, + "flagValue": -1 + }, + "prototypejs": { + "active": 0, + "flagValue": -1 + }, + "qunit": { + "active": 0, + "flagValue": -1 + }, + "regexp": { + "active": 1, + "flagValue": -1 + }, + "rhino": { + "active": 0, + "flagValue": -1 + }, + "scripturl": { + "active": 0, + "flagValue": -1 + }, + "shadow": { + "active": 0, + "flagValue": -1 + }, + "shelljs": { + "active": 0, + "flagValue": -1 + }, + "singleGroups": { + "active": 0, + "flagValue": -1 + }, + "strict": { + "active": 0, + "flagValue": -1 + }, + "sub": { + "active": 0, + "flagValue": -1 + }, + "supernew": { + "active": 0, + "flagValue": -1 + }, + "typed": { + "active": 0, + "flagValue": -1 + }, + "undef": { + "active": 1, + "flagValue": -1 + }, + "unused": { + "active": 1, + "flagValue": -1 + }, + "varstmt": { + "active": 0, + "flagValue": -1 + }, + "withstmt": { + "active": 0, + "flagValue": -1 + }, + "worker": { + "active": 0, + "flagValue": -1 + }, + "wsh": { + "active": 0, + "flagValue": -1 + }, + "yui": { + "active": 0, + "flagValue": -1 + } + }, + "jsLintFlags2": { + "bitwise": { + "active": 0, + "flagValue": -1 + }, + "browser": { + "active": 1, + "flagValue": -1 + }, + "couch": { + "active": 0, + "flagValue": -1 + }, + "devel": { + "active": 0, + "flagValue": -1 + }, + "es6": { + "active": 0, + "flagValue": -1 + }, + "eval": { + "active": 0, + "flagValue": -1 + }, + "for": { + "active": 0, + "flagValue": -1 + }, + "maxlen": { + "active": 0, + "flagValue": 150 + }, + "node": { + "active": 0, + "flagValue": -1 + }, + "this": { + "active": 0, + "flagValue": -1 + }, + "white": { + "active": 0, + "flagValue": -1 + } + }, + "languageDefaultsCOFFEE": { + "autoOutputAction": 0, + "autoOutputPathFilenamePattern": "*.js", + "autoOutputPathRelativePath": "", + "autoOutputPathReplace1": "", + "autoOutputPathReplace2": "", + "autoOutputPathStyle": 0, + "createSourceMap": 0, + "minifyOutput": 1, + "outputStyle": 0, + "syntaxCheckerStyle": 1, + "transpilerStyle": 1 + }, + "languageDefaultsCSS": { + "autoOutputAction": 0, + "autoOutputPathFilenamePattern": "*-min.css", + "autoOutputPathRelativePath": "", + "autoOutputPathReplace1": "", + "autoOutputPathReplace2": "", + "autoOutputPathStyle": 0, + "createSourceMap": 0, + "outputStyle": 3, + "shouldRunAutoprefixer": 1, + "shouldRunBless": 0 + }, + "languageDefaultsGIF": { + "autoOutputAction": 0, + "autoOutputPathFilenamePattern": "*.gif", + "autoOutputPathRelativePath": "", + "autoOutputPathReplace1": "", + "autoOutputPathReplace2": "", + "autoOutputPathStyle": 0 + }, + "languageDefaultsHAML": { + "autoOutputAction": 0, + "autoOutputPathFilenamePattern": "*.html", + "autoOutputPathRelativePath": "", + "autoOutputPathReplace1": "", + "autoOutputPathReplace2": "", + "autoOutputPathStyle": 0, + "escapeHTMLCharacters": 0, + "noEscapeInAttributes": 0, + "outputFormat": 2, + "shouldRunCacheBuster": 0, + "useCDATA": 0, + "useDoubleQuotes": 0, + "useUnixNewlines": 0 + }, + "languageDefaultsJPG": { + "autoOutputAction": 0, + "autoOutputPathFilenamePattern": "*.jpg", + "autoOutputPathRelativePath": "", + "autoOutputPathReplace1": "", + "autoOutputPathReplace2": "", + "autoOutputPathStyle": 0, + "outputFormat": 0, + "quality": 100 + }, + "languageDefaultsJS": { + "autoOutputAction": 0, + "autoOutputPathFilenamePattern": "*-min.js", + "autoOutputPathRelativePath": "/min", + "autoOutputPathReplace1": "", + "autoOutputPathReplace2": "", + "autoOutputPathStyle": 2, + "createSourceMap": 0, + "minifyOutput": 1, + "syntaxCheckerStyle": 1, + "transpilerStyle": 0 + }, + "languageDefaultsJSON": { + "autoOutputAction": 1, + "autoOutputPathFilenamePattern": "*-min.json", + "autoOutputPathRelativePath": "", + "autoOutputPathReplace1": "", + "autoOutputPathReplace2": "", + "autoOutputPathStyle": 0, + "orderOutput": 0, + "outputStyle": 1 + }, + "languageDefaultsKIT": { + "autoOutputAction": 0, + "autoOutputPathFilenamePattern": "*.html", + "autoOutputPathRelativePath": "", + "autoOutputPathReplace1": "kit", + "autoOutputPathReplace2": "html", + "autoOutputPathStyle": 0, + "shouldRunCacheBuster": 0 + }, + "languageDefaultsLESS": { + "allowInsecureImports": 0, + "autoOutputAction": 0, + "autoOutputPathFilenamePattern": "*.css", + "autoOutputPathRelativePath": "../css", + "autoOutputPathReplace1": "less", + "autoOutputPathReplace2": "css", + "autoOutputPathStyle": 2, + "createSourceMap": 1, + "enableJavascript": 0, + "ieCompatibility": 1, + "mathStyle": 0, + "outputStyle": 0, + "rewriteURLStyle": 0, + "shouldRunAutoprefixer": 0, + "shouldRunBless": 0, + "strictImports": 0, + "strictUnits": 0 + }, + "languageDefaultsMARKDOWN": { + "autoOutputAction": 0, + "autoOutputPathFilenamePattern": "*.html", + "autoOutputPathRelativePath": "", + "autoOutputPathReplace1": "", + "autoOutputPathReplace2": "", + "autoOutputPathStyle": 0, + "criticStyle": 0, + "enableFootnotes": 1, + "enableLabels": 1, + "enableSmartQuotes": 1, + "maskEmailAddresses": 1, + "outputFormat": 0, + "outputStyle": 0, + "parseMetadata": 1, + "processHTML": 0, + "randomFootnoteNumbers": 0, + "shouldRunCacheBuster": 0, + "useCompatibilityMode": 0 + }, + "languageDefaultsOTHER": { + "autoOutputAction": 0, + "autoOutputPathFilenamePattern": "*.*", + "autoOutputPathRelativePath": "", + "autoOutputPathReplace1": "", + "autoOutputPathReplace2": "", + "autoOutputPathStyle": 0, + "shouldRunCacheBuster": 0 + }, + "languageDefaultsPNG": { + "autoOutputAction": 0, + "autoOutputPathFilenamePattern": "*.png", + "autoOutputPathRelativePath": "", + "autoOutputPathReplace1": "", + "autoOutputPathReplace2": "", + "autoOutputPathStyle": 0, + "optimizerType": 1, + "quality": 100 + }, + "languageDefaultsPUG": { + "autoOutputAction": 0, + "autoOutputPathFilenamePattern": "*.html", + "autoOutputPathRelativePath": "", + "autoOutputPathReplace1": "", + "autoOutputPathReplace2": "", + "autoOutputPathStyle": 0, + "compileDebug": 1, + "outputStyle": 0, + "shouldRunCacheBuster": 0 + }, + "languageDefaultsSASS": { + "autoOutputAction": 0, + "autoOutputPathFilenamePattern": "*.css", + "autoOutputPathRelativePath": "../css", + "autoOutputPathReplace1": "sass", + "autoOutputPathReplace2": "css", + "autoOutputPathStyle": 2, + "createSourceMap": 0, + "debugStyle": 0, + "decimalPrecision": 10, + "outputStyle": 0, + "shouldRunAutoprefixer": 0, + "shouldRunBless": 0, + "useLibsass": 1 + }, + "languageDefaultsSLIM": { + "autoOutputAction": 0, + "autoOutputPathFilenamePattern": "*.html", + "autoOutputPathRelativePath": "", + "autoOutputPathReplace1": "", + "autoOutputPathReplace2": "", + "autoOutputPathStyle": 0, + "compileOnly": 0, + "logicless": 0, + "outputFormat": 0, + "outputStyle": 1, + "railsCompatible": 0, + "shouldRunCacheBuster": 0 + }, + "languageDefaultsSTYLUS": { + "autoOutputAction": 0, + "autoOutputPathFilenamePattern": "*.css", + "autoOutputPathRelativePath": "../css", + "autoOutputPathReplace1": "stylus", + "autoOutputPathReplace2": "css", + "autoOutputPathStyle": 2, + "createSourceMap": 0, + "debugStyle": 0, + "importCSS": 0, + "outputStyle": 0, + "resolveRelativeURLS": 0, + "shouldRunAutoprefixer": 0, + "shouldRunBless": 0 + }, + "languageDefaultsSVG": { + "autoOutputAction": 2, + "autoOutputPathFilenamePattern": "*.svg", + "autoOutputPathRelativePath": "", + "autoOutputPathReplace1": "", + "autoOutputPathReplace2": "", + "autoOutputPathStyle": 0, + "pluginMask": 3758088159 + }, + "languageDefaultsTS": { + "autoOutputAction": 0, + "autoOutputPathFilenamePattern": "*.js", + "autoOutputPathRelativePath": "/js", + "autoOutputPathReplace1": "", + "autoOutputPathReplace2": "", + "autoOutputPathStyle": 2, + "createDeclarationFile": 0, + "createSourceMap": 0, + "minifyOutput": 0, + "moduleResolutionType": 0, + "moduleType": 2, + "removeComments": 0, + "targetECMAVersion": 0 + }, + "languageDefaultsUserDefined": [ + ], + "overrideExternalServerCSS": 0, + "previewPathAddition": "", + "skippedFoldersString": "log, _logs, logs, _cache, cache, .idea, /storage/framework/sessions, node_modules", + "sourceFolderName": "source", + "susyVersion": 3, + "tsAllowSyntheticDefaultImports": 0, + "tsAllowUnreachableCode": 0, + "tsAllowUnusedLabels": 0, + "tsAlwaysStrict": 0, + "tsDownlevelIteration": 0, + "tsEmitBOM": 0, + "tsEmitDecoratorMetadata": 0, + "tsESModuleInterop": 0, + "tsForceConsistentCasingInFileNames": 0, + "tsImportHelpers": 0, + "tsIsolatedModules": 0, + "tsJSXFactory": "React.createElement", + "tsKeyofStringsOnly": 0, + "tsNoEmitHelpers": 0, + "tsNoFallthroughCasesInSwitch": 0, + "tsNoImplicitAny": 0, + "tsNoImplicitReturns": 0, + "tsNoImplicitThis": 0, + "tsNoImplicitUseStrict": 0, + "tsNoLib": 0, + "tsNoResolve": 0, + "tsNoStrictGenericChecks": 0, + "tsNoUnusedLocals": 0, + "tsNoUnusedParameters": 0, + "tsPreserveConstEnums": 0, + "tsPreserveSymlinks": 0, + "tsResolveJsonModule": 0, + "tsSkipLibCheck": 0, + "tsStrictFunctionTypes": 0, + "tsStrictNullChecks": 0, + "tsStrictPropertyInitialization": 0, + "tsStripInternal": 0, + "tsSuppressExcessPropertyErrors": 0, + "tsSuppressImplicitAnyIndexErrors": 0, + "uglifyDefinesString": "", + "uglifyFlags2": { + "arguments": { + "active": 1, + "flagValue": -1 + }, + "ascii_only": { + "active": 0, + "flagValue": -1 + }, + "bare_returns": { + "active": 0, + "flagValue": -1 + }, + "booleans": { + "active": 1, + "flagValue": -1 + }, + "braces": { + "active": 0, + "flagValue": -1 + }, + "collapse_vars": { + "active": 1, + "flagValue": -1 + }, + "comments": { + "active": 0, + "flagValue": -1 + }, + "comparisons": { + "active": 1, + "flagValue": -1 + }, + "compress": { + "active": 1, + "flagValue": -1 + }, + "conditionals": { + "active": 1, + "flagValue": -1 + }, + "dead_code": { + "active": 1, + "flagValue": -1 + }, + "directives": { + "active": 1, + "flagValue": -1 + }, + "drop_console": { + "active": 0, + "flagValue": -1 + }, + "drop_debugger": { + "active": 1, + "flagValue": -1 + }, + "eval": { + "active": 0, + "flagValue": -1 + }, + "evaluate": { + "active": 1, + "flagValue": -1 + }, + "expression": { + "active": 0, + "flagValue": -1 + }, + "hoist_funs": { + "active": 0, + "flagValue": -1 + }, + "hoist_props": { + "active": 1, + "flagValue": -1 + }, + "hoist_vars": { + "active": 0, + "flagValue": -1 + }, + "html5_comments": { + "active": 1, + "flagValue": -1 + }, + "ie8": { + "active": 0, + "flagValue": -1 + }, + "if_return": { + "active": 1, + "flagValue": -1 + }, + "indent-start": { + "active": 0, + "flagValue": 0 + }, + "indent_level": { + "active": 0, + "flagValue": 4 + }, + "inline": { + "active": 1, + "flagValue": 3 + }, + "inline_script": { + "active": 1, + "flagValue": -1 + }, + "join_vars": { + "active": 1, + "flagValue": -1 + }, + "keep_fargs": { + "active": 1, + "flagValue": -1 + }, + "keep_fnames": { + "active": 0, + "flagValue": -1 + }, + "keep_infinity": { + "active": 0, + "flagValue": -1 + }, + "keep_quoted_props": { + "active": 0, + "flagValue": -1 + }, + "loops": { + "active": 1, + "flagValue": -1 + }, + "mangle": { + "active": 1, + "flagValue": -1 + }, + "max_line_len": { + "active": 1, + "flagValue": 32000 + }, + "negate_iife": { + "active": 1, + "flagValue": -1 + }, + "passes": { + "active": 1, + "flagValue": 1 + }, + "preserve_line": { + "active": 0, + "flagValue": -1 + }, + "properties": { + "active": 1, + "flagValue": -1 + }, + "pure_getters": { + "active": 0, + "flagValue": -1 + }, + "quote_keys": { + "active": 0, + "flagValue": -1 + }, + "quote_style": { + "active": 1, + "flagValue": 0 + }, + "reduce_funcs": { + "active": 1, + "flagValue": -1 + }, + "reduce_vars": { + "active": 1, + "flagValue": -1 + }, + "semicolons": { + "active": 1, + "flagValue": -1 + }, + "sequences": { + "active": 1, + "flagValue": -1 + }, + "shebang": { + "active": 1, + "flagValue": -1 + }, + "side_effects": { + "active": 1, + "flagValue": -1 + }, + "switches": { + "active": 1, + "flagValue": -1 + }, + "toplevel": { + "active": 0, + "flagValue": -1 + }, + "typeofs": { + "active": 1, + "flagValue": -1 + }, + "unsafe": { + "active": 0, + "flagValue": -1 + }, + "unsafe_comps": { + "active": 0, + "flagValue": -1 + }, + "unsafe_Function": { + "active": 0, + "flagValue": -1 + }, + "unsafe_math": { + "active": 0, + "flagValue": -1 + }, + "unsafe_proto": { + "active": 0, + "flagValue": -1 + }, + "unsafe_regexp": { + "active": 0, + "flagValue": -1 + }, + "unsafe_undefined": { + "active": 0, + "flagValue": -1 + }, + "unused": { + "active": 0, + "flagValue": -1 + }, + "warnings": { + "active": 0, + "flagValue": -1 + }, + "webkit": { + "active": 0, + "flagValue": -1 + }, + "width": { + "active": 1, + "flagValue": 80 + }, + "wrap_iife": { + "active": 0, + "flagValue": -1 + } + }, + "uglifyReservedNamesString": "$,exports,require", + "websiteRelativeRoot": "" + }, +"settingsFileVersion": "3" +} \ No newline at end of file diff --git a/trunk/src/AppBundle/Resources/public/js/cssrelpreload.js b/trunk/src/AppBundle/Resources/public/js/cssrelpreload.js new file mode 100755 index 00000000..b549f3b6 --- /dev/null +++ b/trunk/src/AppBundle/Resources/public/js/cssrelpreload.js @@ -0,0 +1,104 @@ +/*! loadCSS. [c]2017 Filament Group, Inc. MIT License */ +/* This file is meant as a standalone workflow for +- testing support for link[rel=preload] +- enabling async CSS loading in browsers that do not support rel=preload +- applying rel preload css once loaded, whether supported or not. +*/ +(function( w ){ + "use strict"; + // rel=preload support test + if( !w.loadCSS ){ + w.loadCSS = function(){}; + } + // define on the loadCSS obj + var rp = loadCSS.relpreload = {}; + // rel=preload feature support test + // runs once and returns a function for compat purposes + rp.support = (function(){ + var ret; + try { + ret = w.document.createElement( "link" ).relList.supports( "preload" ); + } catch (e) { + ret = false; + } + return function(){ + return ret; + }; + })(); + + // if preload isn't supported, get an asynchronous load by using a non-matching media attribute + // then change that media back to its intended value on load + rp.bindMediaToggle = function( link ){ + // remember existing media attr for ultimate state, or default to 'all' + var finalMedia = link.media || "all"; + + function enableStylesheet(){ + link.media = finalMedia; + } + + // bind load handlers to enable media + if( link.addEventListener ){ + link.addEventListener( "load", enableStylesheet ); + } else if( link.attachEvent ){ + link.attachEvent( "onload", enableStylesheet ); + } + + // Set rel and non-applicable media type to start an async request + // note: timeout allows this to happen async to let rendering continue in IE + setTimeout(function(){ + link.rel = "stylesheet"; + link.media = "only x"; + }); + // also enable media after 3 seconds, + // which will catch very old browsers (android 2.x, old firefox) that don't support onload on link + setTimeout( enableStylesheet, 3000 ); + }; + + // loop through link elements in DOM + rp.poly = function(){ + // double check this to prevent external calls from running + if( rp.support() ){ + return; + } + var links = w.document.getElementsByTagName( "link" ); + for( var i = 0; i < links.length; i++ ){ + var link = links[ i ]; + // qualify links to those with rel=preload and as=style attrs + if( link.rel === "preload" && link.getAttribute( "as" ) === "style" && !link.getAttribute( "data-loadcss" ) ){ + // prevent rerunning on link + link.setAttribute( "data-loadcss", true ); + // bind listeners to toggle media back + rp.bindMediaToggle( link ); + } + } + }; + + // if unsupported, run the polyfill + if( !rp.support() ){ + // run once at least + rp.poly(); + + // rerun poly on an interval until onload + var run = w.setInterval( rp.poly, 500 ); + if( w.addEventListener ){ + w.addEventListener( "load", function(){ + rp.poly(); + w.clearInterval( run ); + } ); + } else if( w.attachEvent ){ + w.attachEvent( "onload", function(){ + rp.poly(); + w.clearInterval( run ); + } ); + } + } + + + // commonjs + if( typeof exports !== "undefined" ){ + exports.loadCSS = loadCSS; + } + else { + w.loadCSS = loadCSS; + } +}( typeof global !== "undefined" ? global : this ) ); diff --git a/trunk/src/AppBundle/Resources/public/js/custom.js b/trunk/src/AppBundle/Resources/public/js/custom.js index ba45381b..c117f6e0 100644 --- a/trunk/src/AppBundle/Resources/public/js/custom.js +++ b/trunk/src/AppBundle/Resources/public/js/custom.js @@ -1,6 +1,84 @@ +window.currentScroll = 0; + +jQuery('body').removeClass('no-js'); + + +// Initialize library to lazy load images + +var observer = lozad('.lozad', { + threshold: 0.1, +}); +observer.observe(); + + +jQuery("button.btn-mobile").bind("click", function(e) { + e.preventDefault(); + jQuery(this).toggleClass('btn-mobile-active'); + jQuery('html').removeClass('noscroll'); + jQuery('#menu-overlay').remove(); + + if(jQuery(this).hasClass('btn-mobile-active')) { + jQuery('body').append(''); + + if(!jQuery("#topMain").hasClass('nav-onepage') || window.width > 960) { /* onepage fix */ + jQuery('html').addClass('noscroll'); + window.currentScroll = jQuery(window).scrollTop(); + } + + } else { + + if(!jQuery("#topMain").hasClass('nav-onepage') || window.width > 960) { /* onepage fix */ + jQuery('html,body').animate({scrollTop: currentScroll}, 300, 'easeInOutExpo'); + } + + } +}); +var addActiveClass = false; +jQuery("#topMain a.dropdown-toggle").bind("click", function(e) { + + if(jQuery("button.btn-mobile").hasClass('btn-mobile-active') || jQuery("html").hasClass('touch')){ + e.preventDefault(); + } + + addActiveClass = jQuery(this).parent().hasClass("resp-active"); + jQuery("#topMain").find(".resp-active").removeClass("resp-active"); + + if(!addActiveClass) { + jQuery(this).parents("li").addClass("resp-active"); + } + + return true; + +}); +jQuery(document).ready(function($) { + if (jQuery(document).width() < 768) { + jQuery('.widget').find('.collapse-widget').addClass('collapsed'); + jQuery('.widget').find('.collapse').removeClass('in'); + } +}); + jQuery(document).ready(function($) { "use strict"; + window.addEventListener("load", function(){ + window.cookieconsent.initialise({ + "palette": { + "popup": { + "background": "#648859" + }, + "button": { + "background": "#f1d600" + } + }, + "position": "bottom", + "content": { + "message": "Diese Webseite verwendet Cookies, über die personenbezogene Daten erhoben werden können. Nähere Informationen zu den verwendeten Cookies finden Sie hier:", + "dismiss": "Einverstanden!", + "link": "Datenschutzerklärung", + "href": "https://www.sterntours.de/datenschutz" + } + })}); + /* ============================================== VIDEOS --> =============================================== */ @@ -20,7 +98,7 @@ jQuery(document).ready(function($) { .attr({ width: '100%', height: 500, - src: '//www.youtube-nocookie.com/embed/'+ expl, + src: 'https://www.youtube-nocookie.com/embed/'+ expl, frameborder: 0, allowfullscreen: true, 'data-st-video': this.id @@ -146,40 +224,10 @@ jQuery(document).ready(function($) { createSlider($(this)); }); - /* ============================================== - HEADER STICKY --> - =============================================== */ - - var navbarCollapse = false; - - $(window).scroll(function() { - if(!navbarCollapse){ - if ($(this).scrollTop() > 1){ - $('header').addClass("sticky"); - } - else{ - $('header').removeClass("sticky"); - } - } - }); - - - $('#navbar-collapse').on('shown.bs.collapse', function () { - navbarCollapse = true; - $('header').removeClass("sticky"); - $(window).scrollTop(0); - - }); - - $('#navbar-collapse').on('hide.bs.collapse', function () { - navbarCollapse = false; - }); - /* ============================================== nav-tabs --> =============================================== */ - var hidWidth; var scrollBarWidths = 40; var windowW = $(window).width(); @@ -276,7 +324,7 @@ jQuery(document).ready(function($) { /* ============================================== MENU HOVER --> =============================================== */ - if($(window).width() > 768){ + if($(window).width() > 768){ $(".header .navbar-nav .dropdown:not(.openClick)").hover( function() { @@ -302,39 +350,11 @@ jQuery(document).ready(function($) { } - $('.selectpicker').selectpicker({ dropupAuto: false }); - - /* ============================================== - collapse_open --> - =============================================== */ - - function collapse_open(){ - var windowW = $(window).width(); - if(windowW <= 768){ - $('.collapse-widget').addClass('collapsed'); - $('.collapse-widget').parents('.widget').find('.collapse').removeClass('in'); - }else{ - $('.collapse-widget').removeClass('collapsed'); - $('.collapse-widget').parents('.widget').find('.collapse').addClass('in'); - } - - } - - var $frist = false; - $(window).resize(function() { - if(!$first){ - var $first = true; - collapse_open(); - } - }); - collapse_open(); - - /* ============================================== nav-tabs --> =============================================== */ @@ -358,7 +378,7 @@ jQuery(document).ready(function($) { }, 500); } - }) + }); /* ============================================== tooltip --> @@ -366,16 +386,10 @@ jQuery(document).ready(function($) { $(function () { $('[data-toggle="tooltip"]').tooltip() - }) + }); + + - /* ============================================== - carousel --> - =============================================== */ - - $('.carousel').carousel({ - interval: 5000 //changes the speed - }) - /* ============================================== ACCORDION --> =============================================== */ @@ -434,25 +448,29 @@ jQuery(document).ready(function($) { $('#accordion_fd').on('hidden.bs.collapse', toggleChevron3); $('#accordion_fd').on('shown.bs.collapse', toggleChevron3); - - - - /* ============================================== - LIGHTBOX --> - =============================================== */ + carousel --> + =============================================== */ - /* - jQuery('a[data-gal]').each(function() { - jQuery(this).attr('rel', jQuery(this).data('gal')); - }); - jQuery("a[data-gal^='prettyPhoto']").prettyPhoto({animationSpeed:'slow',slideshow:false,overlay_gallery: false,theme:'light_square',social_tools:false,deeplinking:false}); + $('.carousel').carousel({ + interval: 5000, //changes the speed + }); + + /*$('#myCarousel').find(".fill[data-src]:not(.loaded)").each(function(i,v){ + $(v).addClass("loaded").css("background-image", "url("+$(v).attr("data-src")+")"); + }); + + + $('.travel-wrapper').find(".img-background[data-src]:not(.loaded)").each(function(i,v){ + $(v).addClass("loaded").css("background-image", "url("+$(v).attr("data-src")+")"); + }); */ - /* ============================================== - CAROUSEL --> - =============================================== */ - $('.owl-fullwidth').owlCarousel({ + + /* ============================================== + OWL CAROUSEL --> + =============================================== */ + var owl = $('.owl-fullwidth').owlCarousel({ loop:true, margin:0, nav:true, @@ -460,7 +478,7 @@ jQuery(document).ready(function($) { navText: [ "", ""], - responsive:{ + responsive:{ 0:{ items:1 }, @@ -470,8 +488,19 @@ jQuery(document).ready(function($) { 1000:{ items:3 } - } - }) + }, + }); + + /* onTranslated: function(me){ + $(me.target).find(".owl-item.active [data-src]:not(.loaded)").each(function(i,v){ + $(v).addClass("loaded").css("background-image", "url("+$(v).attr("data-src")+")"); + }); + }, + onInitialized: function(me){ + $(me.target).find(".owl-item.active [data-src]:not(.loaded)").each(function(i,v){ + $(v).addClass("loaded").css("background-image", "url("+$(v).attr("data-src")+")"); + }); + },*/ /* ============================================== BOX LINK --> @@ -491,51 +520,6 @@ jQuery(document).ready(function($) { return false; }); - /* function resize_box (){ - $('.owl-fullwidth:not(.noresize)').each(function(){ - var boxes = $(this).find('.hl5'); - var maxHeight = Math.max.apply( - Math, boxes.map(function() { - return $(this).height(); - }).get()); - boxes.height(maxHeight); - }); - - $('a.item-button').each(function(){ - $(this).removeClass('single_line'); - $(this).removeClass('dobble_line'); - if($(this).height() <= 36){ - $(this).addClass('single_line'); - }else{ - $(this).addClass('dobble_line'); - } - }); - - - } - resize_box(); - - $(window).resize(function() { - resize_box(); - }); */ - - - /* ============================================== - resize_travel_img with height < 190 --> - =============================================== */ - - - /*function resize_travel_img (){ - $('.travel-wrapper').find('img').each(function(){ - if($(this).height() < 190){ - $(this).addClass('lower-height'); - } - }); - } - resize_travel_img(); - $(window).resize(function() { - resize_travel_img(); - });*/ /* ============================================== diff --git a/trunk/src/AppBundle/Resources/public/js/loadCSS.js b/trunk/src/AppBundle/Resources/public/js/loadCSS.js new file mode 100755 index 00000000..951e1c2a --- /dev/null +++ b/trunk/src/AppBundle/Resources/public/js/loadCSS.js @@ -0,0 +1,79 @@ +/*! loadCSS. [c]2017 Filament Group, Inc. MIT License */ +(function(w){ + "use strict"; + /* exported loadCSS */ + var loadCSS = function( href, before, media ){ + // Arguments explained: + // `href` [REQUIRED] is the URL for your CSS file. + // `before` [OPTIONAL] is the element the script should use as a reference for injecting our stylesheet before + // By default, loadCSS attempts to inject the link after the last stylesheet or script in the DOM. However, you might desire a more specific location in your document. + // `media` [OPTIONAL] is the media type or query of the stylesheet. By default it will be 'all' + var doc = w.document; + var ss = doc.createElement( "link" ); + var ref; + if( before ){ + ref = before; + } + else { + var refs = ( doc.body || doc.getElementsByTagName( "head" )[ 0 ] ).childNodes; + ref = refs[ refs.length - 1]; + } + + var sheets = doc.styleSheets; + ss.rel = "stylesheet"; + ss.href = href; + // temporarily set media to something inapplicable to ensure it'll fetch without blocking render + ss.media = "only x"; + + // wait until body is defined before injecting link. This ensures a non-blocking load in IE11. + function ready( cb ){ + if( doc.body ){ + return cb(); + } + setTimeout(function(){ + ready( cb ); + }); + } + // Inject link + // Note: the ternary preserves the existing behavior of "before" argument, but we could choose to change the argument to "after" in a later release and standardize on ref.nextSibling for all refs + // Note: `insertBefore` is used instead of `appendChild`, for safety re: http://www.paulirish.com/2011/surefire-dom-element-insertion/ + ready( function(){ + ref.parentNode.insertBefore( ss, ( before ? ref : ref.nextSibling ) ); + }); + // A method (exposed on return object for external use) that mimics onload by polling document.styleSheets until it includes the new sheet. + var onloadcssdefined = function( cb ){ + var resolvedHref = ss.href; + var i = sheets.length; + while( i-- ){ + if( sheets[ i ].href === resolvedHref ){ + return cb(); + } + } + setTimeout(function() { + onloadcssdefined( cb ); + }); + }; + + function loadCB(){ + if( ss.addEventListener ){ + ss.removeEventListener( "load", loadCB ); + } + ss.media = media || "all"; + } + + // once loaded, set link's media back to `all` so that the stylesheet applies once it loads + if( ss.addEventListener ){ + ss.addEventListener( "load", loadCB); + } + ss.onloadcssdefined = onloadcssdefined; + onloadcssdefined( loadCB ); + return ss; + }; + // commonjs + if( typeof exports !== "undefined" ){ + exports.loadCSS = loadCSS; + } + else { + w.loadCSS = loadCSS; + } +}( typeof global !== "undefined" ? global : this )); diff --git a/trunk/src/AppBundle/Resources/public/js/lozad.es.js b/trunk/src/AppBundle/Resources/public/js/lozad.es.js new file mode 100755 index 00000000..a9a5521a --- /dev/null +++ b/trunk/src/AppBundle/Resources/public/js/lozad.es.js @@ -0,0 +1,115 @@ +/*! lozad.js - v1.7.0 - 2018-11-08 +* https://github.com/ApoorvSaxena/lozad.js +* Copyright (c) 2018 Apoorv Saxena; Licensed MIT */ + + +/** + * Detect IE browser + * @const {boolean} + * @private + */ +const isIE = typeof document !== 'undefined' && document.documentMode; + +const defaultConfig = { + rootMargin: '0px', + threshold: 0, + load(element) { + if (element.nodeName.toLowerCase() === 'picture') { + const img = document.createElement('img'); + if (isIE && element.getAttribute('data-iesrc')) { + img.src = element.getAttribute('data-iesrc'); + } + if (element.getAttribute('data-alt')) { + img.alt = element.getAttribute('data-alt'); + } + element.appendChild(img); + } + if (element.getAttribute('data-src')) { + element.src = element.getAttribute('data-src'); + } + if (element.getAttribute('data-srcset')) { + element.setAttribute('srcset', element.getAttribute('data-srcset')); + } + if (element.getAttribute('data-background-image')) { + element.style.backgroundImage = `url('${element.getAttribute('data-background-image')}')`; + } + if (element.getAttribute('data-toggle-class')) { + element.classList.toggle(element.getAttribute('data-toggle-class')); + } + }, + loaded() {} +}; + +function markAsLoaded(element) { + element.setAttribute('data-loaded', true); +} + +const isLoaded = element => element.getAttribute('data-loaded') === 'true'; + +const onIntersection = (load, loaded) => (entries, observer) => { + entries.forEach(entry => { + if (entry.intersectionRatio > 0 || entry.isIntersecting) { + observer.unobserve(entry.target); + + if (!isLoaded(entry.target)) { + load(entry.target); + markAsLoaded(entry.target); + loaded(entry.target); + } + } + }); +}; + +const getElements = (selector, root = document) => { + if (selector instanceof Element) { + return [selector] + } + if (selector instanceof NodeList) { + return selector + } + return root.querySelectorAll(selector) +}; + +function lozad (selector = '.lozad', options = {}) { + const {root, rootMargin, threshold, load, loaded} = {...defaultConfig, ...options}; + let observer; + + if (window.IntersectionObserver) { + observer = new IntersectionObserver(onIntersection(load, loaded), { + root, + rootMargin, + threshold + }); + } + + return { + observe() { + const elements = getElements(selector, root); + + for (let i = 0; i < elements.length; i++) { + if (isLoaded(elements[i])) { + continue + } + if (observer) { + observer.observe(elements[i]); + continue + } + load(elements[i]); + markAsLoaded(elements[i]); + loaded(elements[i]); + } + }, + triggerLoad(element) { + if (isLoaded(element)) { + return + } + + load(element); + markAsLoaded(element); + loaded(element); + }, + observer + } +} + +export default lozad; diff --git a/trunk/src/AppBundle/Resources/public/js/lozad.js b/trunk/src/AppBundle/Resources/public/js/lozad.js new file mode 100755 index 00000000..fe0f9eb8 --- /dev/null +++ b/trunk/src/AppBundle/Resources/public/js/lozad.js @@ -0,0 +1,141 @@ +/*! lozad.js - v1.7.0 - 2018-11-08 +* https://github.com/ApoorvSaxena/lozad.js +* Copyright (c) 2018 Apoorv Saxena; Licensed MIT */ + + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.lozad = factory()); +}(this, (function () { 'use strict'; + + var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + + /** + * Detect IE browser + * @const {boolean} + * @private + */ + var isIE = typeof document !== 'undefined' && document.documentMode; + + var defaultConfig = { + rootMargin: '0px', + threshold: 0, + load: function load(element) { + if (element.nodeName.toLowerCase() === 'picture') { + var img = document.createElement('img'); + if (isIE && element.getAttribute('data-iesrc')) { + img.src = element.getAttribute('data-iesrc'); + } + if (element.getAttribute('data-alt')) { + img.alt = element.getAttribute('data-alt'); + } + element.appendChild(img); + } + if (element.getAttribute('data-src')) { + element.src = element.getAttribute('data-src'); + } + if (element.getAttribute('data-srcset')) { + element.setAttribute('srcset', element.getAttribute('data-srcset')); + } + if (element.getAttribute('data-background-image')) { + element.style.backgroundImage = 'url(\'' + element.getAttribute('data-background-image') + '\')'; + } + if (element.getAttribute('data-toggle-class')) { + element.classList.toggle(element.getAttribute('data-toggle-class')); + } + }, + loaded: function loaded() {} + }; + + function markAsLoaded(element) { + element.setAttribute('data-loaded', true); + } + + var isLoaded = function isLoaded(element) { + return element.getAttribute('data-loaded') === 'true'; + }; + + var onIntersection = function onIntersection(load, loaded) { + return function (entries, observer) { + entries.forEach(function (entry) { + if (entry.intersectionRatio > 0 || entry.isIntersecting) { + observer.unobserve(entry.target); + + if (!isLoaded(entry.target)) { + load(entry.target); + markAsLoaded(entry.target); + loaded(entry.target); + } + } + }); + }; + }; + + var getElements = function getElements(selector) { + var root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document; + + if (selector instanceof Element) { + return [selector]; + } + if (selector instanceof NodeList) { + return selector; + } + return root.querySelectorAll(selector); + }; + + function lozad () { + var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '.lozad'; + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + var _defaultConfig$option = _extends({}, defaultConfig, options), + root = _defaultConfig$option.root, + rootMargin = _defaultConfig$option.rootMargin, + threshold = _defaultConfig$option.threshold, + load = _defaultConfig$option.load, + loaded = _defaultConfig$option.loaded; + + var observer = void 0; + + if (window.IntersectionObserver) { + observer = new IntersectionObserver(onIntersection(load, loaded), { + root: root, + rootMargin: rootMargin, + threshold: threshold + }); + } + + return { + observe: function observe() { + var elements = getElements(selector, root); + + for (var i = 0; i < elements.length; i++) { + if (isLoaded(elements[i])) { + continue; + } + if (observer) { + observer.observe(elements[i]); + continue; + } + load(elements[i]); + markAsLoaded(elements[i]); + loaded(elements[i]); + } + }, + triggerLoad: function triggerLoad(element) { + if (isLoaded(element)) { + return; + } + + load(element); + markAsLoaded(element); + loaded(element); + }, + + observer: observer + }; + } + + return lozad; + +}))); diff --git a/trunk/src/AppBundle/Resources/public/js/lozad.min.js b/trunk/src/AppBundle/Resources/public/js/lozad.min.js new file mode 100755 index 00000000..ba05632b --- /dev/null +++ b/trunk/src/AppBundle/Resources/public/js/lozad.min.js @@ -0,0 +1,9 @@ +/*! lozad.js - v1.7.0 - 2018-11-08 +* https://github.com/ApoorvSaxena/lozad.js +* Copyright (c) 2018 Apoorv Saxena; Licensed MIT */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.lozad=e()}(this,function(){"use strict";var g=Object.assign||function(t){for(var e=1;e 1 || cache.items.merge; + + widths[iterator] = !grid ? this._items[iterator].width() : width * merge; + } + + this._widths = widths; + } + }, { + filter: [ 'items', 'settings' ], + run: function() { + var clones = [], + items = this._items, + settings = this.settings, + // TODO: Should be computed from number of min width items in stage + view = Math.max(settings.items * 2, 4), + size = Math.ceil(items.length / 2) * 2, + repeat = settings.loop && items.length ? settings.rewind ? view : Math.max(view, size) : 0, + append = '', + prepend = ''; + + repeat /= 2; + + while (repeat > 0) { + // Switch to only using appended clones + clones.push(this.normalize(clones.length / 2, true)); + append = append + items[clones[clones.length - 1]][0].outerHTML; + clones.push(this.normalize(items.length - 1 - (clones.length - 1) / 2, true)); + prepend = items[clones[clones.length - 1]][0].outerHTML + prepend; + repeat -= 1; + } + + this._clones = clones; + + $(append).addClass('cloned').appendTo(this.$stage); + $(prepend).addClass('cloned').prependTo(this.$stage); + } + }, { + filter: [ 'width', 'items', 'settings' ], + run: function() { + var rtl = this.settings.rtl ? 1 : -1, + size = this._clones.length + this._items.length, + iterator = -1, + previous = 0, + current = 0, + coordinates = []; + + while (++iterator < size) { + previous = coordinates[iterator - 1] || 0; + current = this._widths[this.relative(iterator)] + this.settings.margin; + coordinates.push(previous + current * rtl); + } + + this._coordinates = coordinates; + } + }, { + filter: [ 'width', 'items', 'settings' ], + run: function() { + var padding = this.settings.stagePadding, + coordinates = this._coordinates, + css = { + 'width': Math.ceil(Math.abs(coordinates[coordinates.length - 1])) + padding * 2, + 'padding-left': padding || '', + 'padding-right': padding || '' + }; + + this.$stage.css(css); + } + }, { + filter: [ 'width', 'items', 'settings' ], + run: function(cache) { + var iterator = this._coordinates.length, + grid = !this.settings.autoWidth, + items = this.$stage.children(); + + if (grid && cache.items.merge) { + while (iterator--) { + cache.css.width = this._widths[this.relative(iterator)]; + items.eq(iterator).css(cache.css); + } + } else if (grid) { + cache.css.width = cache.items.width; + items.css(cache.css); + } + } + }, { + filter: [ 'items' ], + run: function() { + this._coordinates.length < 1 && this.$stage.removeAttr('style'); + } + }, { + filter: [ 'width', 'items', 'settings' ], + run: function(cache) { + cache.current = cache.current ? this.$stage.children().index(cache.current) : 0; + cache.current = Math.max(this.minimum(), Math.min(this.maximum(), cache.current)); + this.reset(cache.current); + } + }, { + filter: [ 'position' ], + run: function() { + this.animate(this.coordinates(this._current)); + } + }, { + filter: [ 'width', 'position', 'items', 'settings' ], + run: function() { + var rtl = this.settings.rtl ? 1 : -1, + padding = this.settings.stagePadding * 2, + begin = this.coordinates(this.current()) + padding, + end = begin + this.width() * rtl, + inner, outer, matches = [], i, n; + + for (i = 0, n = this._coordinates.length; i < n; i++) { + inner = this._coordinates[i - 1] || 0; + outer = Math.abs(this._coordinates[i]) + padding * rtl; + + if ((this.op(inner, '<=', begin) && (this.op(inner, '>', end))) + || (this.op(outer, '<', begin) && this.op(outer, '>', end))) { + matches.push(i); + } + } + + this.$stage.children('.active').removeClass('active'); + this.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass('active'); + + this.$stage.children('.center').removeClass('center'); + if (this.settings.center) { + this.$stage.children().eq(this.current()).addClass('center'); + } + } + } ]; + + /** + * Create the stage DOM element + */ + Owl.prototype.initializeStage = function() { + this.$stage = this.$element.find('.' + this.settings.stageClass); + + // if the stage is already in the DOM, grab it and skip stage initialization + if (this.$stage.length) { + return; + } + + this.$element.addClass(this.options.loadingClass); + + // create stage + this.$stage = $('<' + this.settings.stageElement + '>', { + "class": this.settings.stageClass + }).wrap( $( '
    ', { + "class": this.settings.stageOuterClass + })); + + // append stage + this.$element.append(this.$stage.parent()); + }; + + /** + * Create item DOM elements + */ + Owl.prototype.initializeItems = function() { + var $items = this.$element.find('.owl-item'); + + // if the items are already in the DOM, grab them and skip item initialization + if ($items.length) { + this._items = $items.get().map(function(item) { + return $(item); + }); + + this._mergers = this._items.map(function() { + return 1; + }); + + this.refresh(); + + return; + } + + // append content + this.replace(this.$element.children().not(this.$stage.parent())); + + // check visibility + if (this.isVisible()) { + // update view + this.refresh(); + } else { + // invalidate width + this.invalidate('width'); + } + + this.$element + .removeClass(this.options.loadingClass) + .addClass(this.options.loadedClass); + }; + + /** + * Initializes the carousel. + * @protected + */ + Owl.prototype.initialize = function() { + this.enter('initializing'); + this.trigger('initialize'); + + this.$element.toggleClass(this.settings.rtlClass, this.settings.rtl); + + if (this.settings.autoWidth && !this.is('pre-loading')) { + var imgs, nestedSelector, width; + imgs = this.$element.find('img'); + nestedSelector = this.settings.nestedItemSelector ? '.' + this.settings.nestedItemSelector : undefined; + width = this.$element.children(nestedSelector).width(); + + if (imgs.length && width <= 0) { + this.preloadAutoWidthImages(imgs); + } + } + + this.initializeStage(); + this.initializeItems(); + + // register event handlers + this.registerEventHandlers(); + + this.leave('initializing'); + this.trigger('initialized'); + }; + + /** + * @returns {Boolean} visibility of $element + * if you know the carousel will always be visible you can set `checkVisibility` to `false` to + * prevent the expensive browser layout forced reflow the $element.is(':visible') does + */ + Owl.prototype.isVisible = function() { + return this.settings.checkVisibility + ? this.$element.is(':visible') + : true; + }; + + /** + * Setups the current settings. + * @todo Remove responsive classes. Why should adaptive designs be brought into IE8? + * @todo Support for media queries by using `matchMedia` would be nice. + * @public + */ + Owl.prototype.setup = function() { + var viewport = this.viewport(), + overwrites = this.options.responsive, + match = -1, + settings = null; + + if (!overwrites) { + settings = $.extend({}, this.options); + } else { + $.each(overwrites, function(breakpoint) { + if (breakpoint <= viewport && breakpoint > match) { + match = Number(breakpoint); + } + }); + + settings = $.extend({}, this.options, overwrites[match]); + if (typeof settings.stagePadding === 'function') { + settings.stagePadding = settings.stagePadding(); + } + delete settings.responsive; + + // responsive class + if (settings.responsiveClass) { + this.$element.attr('class', + this.$element.attr('class').replace(new RegExp('(' + this.options.responsiveClass + '-)\\S+\\s', 'g'), '$1' + match) + ); + } + } + + this.trigger('change', { property: { name: 'settings', value: settings } }); + this._breakpoint = match; + this.settings = settings; + this.invalidate('settings'); + this.trigger('changed', { property: { name: 'settings', value: this.settings } }); + }; + + /** + * Updates option logic if necessery. + * @protected + */ + Owl.prototype.optionsLogic = function() { + if (this.settings.autoWidth) { + this.settings.stagePadding = false; + this.settings.merge = false; + } + }; + + /** + * Prepares an item before add. + * @todo Rename event parameter `content` to `item`. + * @protected + * @returns {jQuery|HTMLElement} - The item container. + */ + Owl.prototype.prepare = function(item) { + var event = this.trigger('prepare', { content: item }); + + if (!event.data) { + event.data = $('<' + this.settings.itemElement + '/>') + .addClass(this.options.itemClass).append(item) + } + + this.trigger('prepared', { content: event.data }); + + return event.data; + }; + + /** + * Updates the view. + * @public + */ + Owl.prototype.update = function() { + var i = 0, + n = this._pipe.length, + filter = $.proxy(function(p) { return this[p] }, this._invalidated), + cache = {}; + + while (i < n) { + if (this._invalidated.all || $.grep(this._pipe[i].filter, filter).length > 0) { + this._pipe[i].run(cache); + } + i++; + } + + this._invalidated = {}; + + !this.is('valid') && this.enter('valid'); + }; + + /** + * Gets the width of the view. + * @public + * @param {Owl.Width} [dimension=Owl.Width.Default] - The dimension to return. + * @returns {Number} - The width of the view in pixel. + */ + Owl.prototype.width = function(dimension) { + dimension = dimension || Owl.Width.Default; + switch (dimension) { + case Owl.Width.Inner: + case Owl.Width.Outer: + return this._width; + default: + return this._width - this.settings.stagePadding * 2 + this.settings.margin; + } + }; + + /** + * Refreshes the carousel primarily for adaptive purposes. + * @public + */ + Owl.prototype.refresh = function() { + this.enter('refreshing'); + this.trigger('refresh'); + + this.setup(); + + this.optionsLogic(); + + this.$element.addClass(this.options.refreshClass); + + this.update(); + + this.$element.removeClass(this.options.refreshClass); + + this.leave('refreshing'); + this.trigger('refreshed'); + }; + + /** + * Checks window `resize` event. + * @protected + */ + Owl.prototype.onThrottledResize = function() { + window.clearTimeout(this.resizeTimer); + this.resizeTimer = window.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate); + }; + + /** + * Checks window `resize` event. + * @protected + */ + Owl.prototype.onResize = function() { + if (!this._items.length) { + return false; + } + + if (this._width === this.$element.width()) { + return false; + } + + if (!this.isVisible()) { + return false; + } + + this.enter('resizing'); + + if (this.trigger('resize').isDefaultPrevented()) { + this.leave('resizing'); + return false; + } + + this.invalidate('width'); + + this.refresh(); + + this.leave('resizing'); + this.trigger('resized'); + }; + + /** + * Registers event handlers. + * @todo Check `msPointerEnabled` + * @todo #261 + * @protected + */ + Owl.prototype.registerEventHandlers = function() { + if ($.support.transition) { + this.$stage.on($.support.transition.end + '.owl.core', $.proxy(this.onTransitionEnd, this)); + } + + if (this.settings.responsive !== false) { + this.on(window, 'resize', this._handlers.onThrottledResize); + } + + if (this.settings.mouseDrag) { + this.$element.addClass(this.options.dragClass); + this.$stage.on('mousedown.owl.core', $.proxy(this.onDragStart, this)); + this.$stage.on('dragstart.owl.core selectstart.owl.core', function() { return false }); + } + + if (this.settings.touchDrag){ + this.$stage.on('touchstart.owl.core', $.proxy(this.onDragStart, this)); + this.$stage.on('touchcancel.owl.core', $.proxy(this.onDragEnd, this)); + } + }; + + /** + * Handles `touchstart` and `mousedown` events. + * @todo Horizontal swipe threshold as option + * @todo #261 + * @protected + * @param {Event} event - The event arguments. + */ + Owl.prototype.onDragStart = function(event) { + var stage = null; + + if (event.which === 3) { + return; + } + + if ($.support.transform) { + stage = this.$stage.css('transform').replace(/.*\(|\)| /g, '').split(','); + stage = { + x: stage[stage.length === 16 ? 12 : 4], + y: stage[stage.length === 16 ? 13 : 5] + }; + } else { + stage = this.$stage.position(); + stage = { + x: this.settings.rtl ? + stage.left + this.$stage.width() - this.width() + this.settings.margin : + stage.left, + y: stage.top + }; + } + + if (this.is('animating')) { + $.support.transform ? this.animate(stage.x) : this.$stage.stop() + this.invalidate('position'); + } + + this.$element.toggleClass(this.options.grabClass, event.type === 'mousedown'); + + this.speed(0); + + this._drag.time = new Date().getTime(); + this._drag.target = $(event.target); + this._drag.stage.start = stage; + this._drag.stage.current = stage; + this._drag.pointer = this.pointer(event); + + $(document).on('mouseup.owl.core touchend.owl.core', $.proxy(this.onDragEnd, this)); + + $(document).one('mousemove.owl.core touchmove.owl.core', $.proxy(function(event) { + var delta = this.difference(this._drag.pointer, this.pointer(event)); + + $(document).on('mousemove.owl.core touchmove.owl.core', $.proxy(this.onDragMove, this)); + + if (Math.abs(delta.x) < Math.abs(delta.y) && this.is('valid')) { + return; + } + + event.preventDefault(); + + this.enter('dragging'); + this.trigger('drag'); + }, this)); + }; + + /** + * Handles the `touchmove` and `mousemove` events. + * @todo #261 + * @protected + * @param {Event} event - The event arguments. + */ + Owl.prototype.onDragMove = function(event) { + var minimum = null, + maximum = null, + pull = null, + delta = this.difference(this._drag.pointer, this.pointer(event)), + stage = this.difference(this._drag.stage.start, delta); + + if (!this.is('dragging')) { + return; + } + + event.preventDefault(); + + if (this.settings.loop) { + minimum = this.coordinates(this.minimum()); + maximum = this.coordinates(this.maximum() + 1) - minimum; + stage.x = (((stage.x - minimum) % maximum + maximum) % maximum) + minimum; + } else { + minimum = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum()); + maximum = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum()); + pull = this.settings.pullDrag ? -1 * delta.x / 5 : 0; + stage.x = Math.max(Math.min(stage.x, minimum + pull), maximum + pull); + } + + this._drag.stage.current = stage; + + this.animate(stage.x); + }; + + /** + * Handles the `touchend` and `mouseup` events. + * @todo #261 + * @todo Threshold for click event + * @protected + * @param {Event} event - The event arguments. + */ + Owl.prototype.onDragEnd = function(event) { + var delta = this.difference(this._drag.pointer, this.pointer(event)), + stage = this._drag.stage.current, + direction = delta.x > 0 ^ this.settings.rtl ? 'left' : 'right'; + + $(document).off('.owl.core'); + + this.$element.removeClass(this.options.grabClass); + + if (delta.x !== 0 && this.is('dragging') || !this.is('valid')) { + this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed); + this.current(this.closest(stage.x, delta.x !== 0 ? direction : this._drag.direction)); + this.invalidate('position'); + this.update(); + + this._drag.direction = direction; + + if (Math.abs(delta.x) > 3 || new Date().getTime() - this._drag.time > 300) { + this._drag.target.one('click.owl.core', function() { return false; }); + } + } + + if (!this.is('dragging')) { + return; + } + + this.leave('dragging'); + this.trigger('dragged'); + }; + + /** + * Gets absolute position of the closest item for a coordinate. + * @todo Setting `freeDrag` makes `closest` not reusable. See #165. + * @protected + * @param {Number} coordinate - The coordinate in pixel. + * @param {String} direction - The direction to check for the closest item. Ether `left` or `right`. + * @return {Number} - The absolute position of the closest item. + */ + Owl.prototype.closest = function(coordinate, direction) { + var position = -1, + pull = 30, + width = this.width(), + coordinates = this.coordinates(); + + if (!this.settings.freeDrag) { + // check closest item + $.each(coordinates, $.proxy(function(index, value) { + // on a left pull, check on current index + if (direction === 'left' && coordinate > value - pull && coordinate < value + pull) { + position = index; + // on a right pull, check on previous index + // to do so, subtract width from value and set position = index + 1 + } else if (direction === 'right' && coordinate > value - width - pull && coordinate < value - width + pull) { + position = index + 1; + } else if (this.op(coordinate, '<', value) + && this.op(coordinate, '>', coordinates[index + 1] !== undefined ? coordinates[index + 1] : value - width)) { + position = direction === 'left' ? index + 1 : index; + } + return position === -1; + }, this)); + } + + if (!this.settings.loop) { + // non loop boundries + if (this.op(coordinate, '>', coordinates[this.minimum()])) { + position = coordinate = this.minimum(); + } else if (this.op(coordinate, '<', coordinates[this.maximum()])) { + position = coordinate = this.maximum(); + } + } + + return position; + }; + + /** + * Animates the stage. + * @todo #270 + * @public + * @param {Number} coordinate - The coordinate in pixels. + */ + Owl.prototype.animate = function(coordinate) { + var animate = this.speed() > 0; + + this.is('animating') && this.onTransitionEnd(); + + if (animate) { + this.enter('animating'); + this.trigger('translate'); + } + + if ($.support.transform3d && $.support.transition) { + this.$stage.css({ + transform: 'translate3d(' + coordinate + 'px,0px,0px)', + transition: (this.speed() / 1000) + 's' + ( + this.settings.slideTransition ? ' ' + this.settings.slideTransition : '' + ) + }); + } else if (animate) { + this.$stage.animate({ + left: coordinate + 'px' + }, this.speed(), this.settings.fallbackEasing, $.proxy(this.onTransitionEnd, this)); + } else { + this.$stage.css({ + left: coordinate + 'px' + }); + } + }; + + /** + * Checks whether the carousel is in a specific state or not. + * @param {String} state - The state to check. + * @returns {Boolean} - The flag which indicates if the carousel is busy. + */ + Owl.prototype.is = function(state) { + return this._states.current[state] && this._states.current[state] > 0; + }; + + /** + * Sets the absolute position of the current item. + * @public + * @param {Number} [position] - The new absolute position or nothing to leave it unchanged. + * @returns {Number} - The absolute position of the current item. + */ + Owl.prototype.current = function(position) { + if (position === undefined) { + return this._current; + } + + if (this._items.length === 0) { + return undefined; + } + + position = this.normalize(position); + + if (this._current !== position) { + var event = this.trigger('change', { property: { name: 'position', value: position } }); + + if (event.data !== undefined) { + position = this.normalize(event.data); + } + + this._current = position; + + this.invalidate('position'); + + this.trigger('changed', { property: { name: 'position', value: this._current } }); + } + + return this._current; + }; + + /** + * Invalidates the given part of the update routine. + * @param {String} [part] - The part to invalidate. + * @returns {Array.} - The invalidated parts. + */ + Owl.prototype.invalidate = function(part) { + if ($.type(part) === 'string') { + this._invalidated[part] = true; + this.is('valid') && this.leave('valid'); + } + return $.map(this._invalidated, function(v, i) { return i }); + }; + + /** + * Resets the absolute position of the current item. + * @public + * @param {Number} position - The absolute position of the new item. + */ + Owl.prototype.reset = function(position) { + position = this.normalize(position); + + if (position === undefined) { + return; + } + + this._speed = 0; + this._current = position; + + this.suppress([ 'translate', 'translated' ]); + + this.animate(this.coordinates(position)); + + this.release([ 'translate', 'translated' ]); + }; + + /** + * Normalizes an absolute or a relative position of an item. + * @public + * @param {Number} position - The absolute or relative position to normalize. + * @param {Boolean} [relative=false] - Whether the given position is relative or not. + * @returns {Number} - The normalized position. + */ + Owl.prototype.normalize = function(position, relative) { + var n = this._items.length, + m = relative ? 0 : this._clones.length; + + if (!this.isNumeric(position) || n < 1) { + position = undefined; + } else if (position < 0 || position >= n + m) { + position = ((position - m / 2) % n + n) % n + m / 2; + } + + return position; + }; + + /** + * Converts an absolute position of an item into a relative one. + * @public + * @param {Number} position - The absolute position to convert. + * @returns {Number} - The converted position. + */ + Owl.prototype.relative = function(position) { + position -= this._clones.length / 2; + return this.normalize(position, true); + }; + + /** + * Gets the maximum position for the current item. + * @public + * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position. + * @returns {Number} + */ + Owl.prototype.maximum = function(relative) { + var settings = this.settings, + maximum = this._coordinates.length, + iterator, + reciprocalItemsWidth, + elementWidth; + + if (settings.loop) { + maximum = this._clones.length / 2 + this._items.length - 1; + } else if (settings.autoWidth || settings.merge) { + iterator = this._items.length; + if (iterator) { + reciprocalItemsWidth = this._items[--iterator].width(); + elementWidth = this.$element.width(); + while (iterator--) { + reciprocalItemsWidth += this._items[iterator].width() + this.settings.margin; + if (reciprocalItemsWidth > elementWidth) { + break; + } + } + } + maximum = iterator + 1; + } else if (settings.center) { + maximum = this._items.length - 1; + } else { + maximum = this._items.length - settings.items; + } + + if (relative) { + maximum -= this._clones.length / 2; + } + + return Math.max(maximum, 0); + }; + + /** + * Gets the minimum position for the current item. + * @public + * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position. + * @returns {Number} + */ + Owl.prototype.minimum = function(relative) { + return relative ? 0 : this._clones.length / 2; + }; + + /** + * Gets an item at the specified relative position. + * @public + * @param {Number} [position] - The relative position of the item. + * @return {jQuery|Array.} - The item at the given position or all items if no position was given. + */ + Owl.prototype.items = function(position) { + if (position === undefined) { + return this._items.slice(); + } + + position = this.normalize(position, true); + return this._items[position]; + }; + + /** + * Gets an item at the specified relative position. + * @public + * @param {Number} [position] - The relative position of the item. + * @return {jQuery|Array.} - The item at the given position or all items if no position was given. + */ + Owl.prototype.mergers = function(position) { + if (position === undefined) { + return this._mergers.slice(); + } + + position = this.normalize(position, true); + return this._mergers[position]; + }; + + /** + * Gets the absolute positions of clones for an item. + * @public + * @param {Number} [position] - The relative position of the item. + * @returns {Array.} - The absolute positions of clones for the item or all if no position was given. + */ + Owl.prototype.clones = function(position) { + var odd = this._clones.length / 2, + even = odd + this._items.length, + map = function(index) { return index % 2 === 0 ? even + index / 2 : odd - (index + 1) / 2 }; + + if (position === undefined) { + return $.map(this._clones, function(v, i) { return map(i) }); + } + + return $.map(this._clones, function(v, i) { return v === position ? map(i) : null }); + }; + + /** + * Sets the current animation speed. + * @public + * @param {Number} [speed] - The animation speed in milliseconds or nothing to leave it unchanged. + * @returns {Number} - The current animation speed in milliseconds. + */ + Owl.prototype.speed = function(speed) { + if (speed !== undefined) { + this._speed = speed; + } + + return this._speed; + }; + + /** + * Gets the coordinate of an item. + * @todo The name of this method is missleanding. + * @public + * @param {Number} position - The absolute position of the item within `minimum()` and `maximum()`. + * @returns {Number|Array.} - The coordinate of the item in pixel or all coordinates. + */ + Owl.prototype.coordinates = function(position) { + var multiplier = 1, + newPosition = position - 1, + coordinate; + + if (position === undefined) { + return $.map(this._coordinates, $.proxy(function(coordinate, index) { + return this.coordinates(index); + }, this)); + } + + if (this.settings.center) { + if (this.settings.rtl) { + multiplier = -1; + newPosition = position + 1; + } + + coordinate = this._coordinates[position]; + coordinate += (this.width() - coordinate + (this._coordinates[newPosition] || 0)) / 2 * multiplier; + } else { + coordinate = this._coordinates[newPosition] || 0; + } + + coordinate = Math.ceil(coordinate); + + return coordinate; + }; + + /** + * Calculates the speed for a translation. + * @protected + * @param {Number} from - The absolute position of the start item. + * @param {Number} to - The absolute position of the target item. + * @param {Number} [factor=undefined] - The time factor in milliseconds. + * @returns {Number} - The time in milliseconds for the translation. + */ + Owl.prototype.duration = function(from, to, factor) { + if (factor === 0) { + return 0; + } + + return Math.min(Math.max(Math.abs(to - from), 1), 6) * Math.abs((factor || this.settings.smartSpeed)); + }; + + /** + * Slides to the specified item. + * @public + * @param {Number} position - The position of the item. + * @param {Number} [speed] - The time in milliseconds for the transition. + */ + Owl.prototype.to = function(position, speed) { + var current = this.current(), + revert = null, + distance = position - this.relative(current), + direction = (distance > 0) - (distance < 0), + items = this._items.length, + minimum = this.minimum(), + maximum = this.maximum(); + + if (this.settings.loop) { + if (!this.settings.rewind && Math.abs(distance) > items / 2) { + distance += direction * -1 * items; + } + + position = current + distance; + revert = ((position - minimum) % items + items) % items + minimum; + + if (revert !== position && revert - distance <= maximum && revert - distance > 0) { + current = revert - distance; + position = revert; + this.reset(current); + } + } else if (this.settings.rewind) { + maximum += 1; + position = (position % maximum + maximum) % maximum; + } else { + position = Math.max(minimum, Math.min(maximum, position)); + } + + this.speed(this.duration(current, position, speed)); + this.current(position); + + if (this.isVisible()) { + this.update(); + } + }; + + /** + * Slides to the next item. + * @public + * @param {Number} [speed] - The time in milliseconds for the transition. + */ + Owl.prototype.next = function(speed) { + speed = speed || false; + this.to(this.relative(this.current()) + 1, speed); + }; + + /** + * Slides to the previous item. + * @public + * @param {Number} [speed] - The time in milliseconds for the transition. + */ + Owl.prototype.prev = function(speed) { + speed = speed || false; + this.to(this.relative(this.current()) - 1, speed); + }; + + /** + * Handles the end of an animation. + * @protected + * @param {Event} event - The event arguments. + */ + Owl.prototype.onTransitionEnd = function(event) { + + // if css2 animation then event object is undefined + if (event !== undefined) { + event.stopPropagation(); + + // Catch only owl-stage transitionEnd event + if ((event.target || event.srcElement || event.originalTarget) !== this.$stage.get(0)) { + return false; + } + } + + this.leave('animating'); + this.trigger('translated'); + }; + + /** + * Gets viewport width. + * @protected + * @return {Number} - The width in pixel. + */ + Owl.prototype.viewport = function() { + var width; + if (this.options.responsiveBaseElement !== window) { + width = $(this.options.responsiveBaseElement).width(); + } else if (window.innerWidth) { + width = window.innerWidth; + } else if (document.documentElement && document.documentElement.clientWidth) { + width = document.documentElement.clientWidth; + } else { + console.warn('Can not detect viewport width.'); + } + return width; + }; + + /** + * Replaces the current content. + * @public + * @param {HTMLElement|jQuery|String} content - The new content. + */ + Owl.prototype.replace = function(content) { + this.$stage.empty(); + this._items = []; + + if (content) { + content = (content instanceof jQuery) ? content : $(content); + } + + if (this.settings.nestedItemSelector) { + content = content.find('.' + this.settings.nestedItemSelector); + } + + content.filter(function() { + return this.nodeType === 1; + }).each($.proxy(function(index, item) { + item = this.prepare(item); + this.$stage.append(item); + this._items.push(item); + this._mergers.push(item.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1); + }, this)); + + this.reset(this.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0); + + this.invalidate('items'); + }; + + /** + * Adds an item. + * @todo Use `item` instead of `content` for the event arguments. + * @public + * @param {HTMLElement|jQuery|String} content - The item content to add. + * @param {Number} [position] - The relative position at which to insert the item otherwise the item will be added to the end. + */ + Owl.prototype.add = function(content, position) { + var current = this.relative(this._current); + + position = position === undefined ? this._items.length : this.normalize(position, true); + content = content instanceof jQuery ? content : $(content); + + this.trigger('add', { content: content, position: position }); + + content = this.prepare(content); + + if (this._items.length === 0 || position === this._items.length) { + this._items.length === 0 && this.$stage.append(content); + this._items.length !== 0 && this._items[position - 1].after(content); + this._items.push(content); + this._mergers.push(content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1); + } else { + this._items[position].before(content); + this._items.splice(position, 0, content); + this._mergers.splice(position, 0, content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1); + } + + this._items[current] && this.reset(this._items[current].index()); + + this.invalidate('items'); + + this.trigger('added', { content: content, position: position }); + }; + + /** + * Removes an item by its position. + * @todo Use `item` instead of `content` for the event arguments. + * @public + * @param {Number} position - The relative position of the item to remove. + */ + Owl.prototype.remove = function(position) { + position = this.normalize(position, true); + + if (position === undefined) { + return; + } + + this.trigger('remove', { content: this._items[position], position: position }); + + this._items[position].remove(); + this._items.splice(position, 1); + this._mergers.splice(position, 1); + + this.invalidate('items'); + + this.trigger('removed', { content: null, position: position }); + }; + + /** + * Preloads images with auto width. + * @todo Replace by a more generic approach + * @protected + */ + Owl.prototype.preloadAutoWidthImages = function(images) { + images.each($.proxy(function(i, element) { + this.enter('pre-loading'); + element = $(element); + $(new Image()).one('load', $.proxy(function(e) { + element.attr('src', e.target.src); + element.css('opacity', 1); + this.leave('pre-loading'); + !this.is('pre-loading') && !this.is('initializing') && this.refresh(); + }, this)).attr('src', element.attr('src') || element.attr('data-src') || element.attr('data-src-retina')); + }, this)); + }; + + /** + * Destroys the carousel. + * @public + */ + Owl.prototype.destroy = function() { + + this.$element.off('.owl.core'); + this.$stage.off('.owl.core'); + $(document).off('.owl.core'); + + if (this.settings.responsive !== false) { + window.clearTimeout(this.resizeTimer); + this.off(window, 'resize', this._handlers.onThrottledResize); + } + + for (var i in this._plugins) { + this._plugins[i].destroy(); + } + + this.$stage.children('.cloned').remove(); + + this.$stage.unwrap(); + this.$stage.children().contents().unwrap(); + this.$stage.children().unwrap(); + this.$stage.remove(); + this.$element + .removeClass(this.options.refreshClass) + .removeClass(this.options.loadingClass) + .removeClass(this.options.loadedClass) + .removeClass(this.options.rtlClass) + .removeClass(this.options.dragClass) + .removeClass(this.options.grabClass) + .attr('class', this.$element.attr('class').replace(new RegExp(this.options.responsiveClass + '-\\S+\\s', 'g'), '')) + .removeData('owl.carousel'); + }; + + /** + * Operators to calculate right-to-left and left-to-right. + * @protected + * @param {Number} [a] - The left side operand. + * @param {String} [o] - The operator. + * @param {Number} [b] - The right side operand. + */ + Owl.prototype.op = function(a, o, b) { + var rtl = this.settings.rtl; + switch (o) { + case '<': + return rtl ? a > b : a < b; + case '>': + return rtl ? a < b : a > b; + case '>=': + return rtl ? a <= b : a >= b; + case '<=': + return rtl ? a >= b : a <= b; + default: + break; + } + }; + + /** + * Attaches to an internal event. + * @protected + * @param {HTMLElement} element - The event source. + * @param {String} event - The event name. + * @param {Function} listener - The event handler to attach. + * @param {Boolean} capture - Wether the event should be handled at the capturing phase or not. + */ + Owl.prototype.on = function(element, event, listener, capture) { + if (element.addEventListener) { + element.addEventListener(event, listener, capture); + } else if (element.attachEvent) { + element.attachEvent('on' + event, listener); + } + }; + + /** + * Detaches from an internal event. + * @protected + * @param {HTMLElement} element - The event source. + * @param {String} event - The event name. + * @param {Function} listener - The attached event handler to detach. + * @param {Boolean} capture - Wether the attached event handler was registered as a capturing listener or not. + */ + Owl.prototype.off = function(element, event, listener, capture) { + if (element.removeEventListener) { + element.removeEventListener(event, listener, capture); + } else if (element.detachEvent) { + element.detachEvent('on' + event, listener); + } + }; + + /** + * Triggers a public event. + * @todo Remove `status`, `relatedTarget` should be used instead. + * @protected + * @param {String} name - The event name. + * @param {*} [data=null] - The event data. + * @param {String} [namespace=carousel] - The event namespace. + * @param {String} [state] - The state which is associated with the event. + * @param {Boolean} [enter=false] - Indicates if the call enters the specified state or not. + * @returns {Event} - The event arguments. + */ + Owl.prototype.trigger = function(name, data, namespace, state, enter) { + var status = { + item: { count: this._items.length, index: this.current() } + }, handler = $.camelCase( + $.grep([ 'on', name, namespace ], function(v) { return v }) + .join('-').toLowerCase() + ), event = $.Event( + [ name, 'owl', namespace || 'carousel' ].join('.').toLowerCase(), + $.extend({ relatedTarget: this }, status, data) + ); + + if (!this._supress[name]) { + $.each(this._plugins, function(name, plugin) { + if (plugin.onTrigger) { + plugin.onTrigger(event); + } + }); + + this.register({ type: Owl.Type.Event, name: name }); + this.$element.trigger(event); + + if (this.settings && typeof this.settings[handler] === 'function') { + this.settings[handler].call(this, event); + } + } + + return event; + }; + + /** + * Enters a state. + * @param name - The state name. + */ + Owl.prototype.enter = function(name) { + $.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) { + if (this._states.current[name] === undefined) { + this._states.current[name] = 0; + } + + this._states.current[name]++; + }, this)); + }; + + /** + * Leaves a state. + * @param name - The state name. + */ + Owl.prototype.leave = function(name) { + $.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) { + this._states.current[name]--; + }, this)); + }; + + /** + * Registers an event or state. + * @public + * @param {Object} object - The event or state to register. + */ + Owl.prototype.register = function(object) { + if (object.type === Owl.Type.Event) { + if (!$.event.special[object.name]) { + $.event.special[object.name] = {}; + } + + if (!$.event.special[object.name].owl) { + var _default = $.event.special[object.name]._default; + $.event.special[object.name]._default = function(e) { + if (_default && _default.apply && (!e.namespace || e.namespace.indexOf('owl') === -1)) { + return _default.apply(this, arguments); + } + return e.namespace && e.namespace.indexOf('owl') > -1; + }; + $.event.special[object.name].owl = true; + } + } else if (object.type === Owl.Type.State) { + if (!this._states.tags[object.name]) { + this._states.tags[object.name] = object.tags; + } else { + this._states.tags[object.name] = this._states.tags[object.name].concat(object.tags); + } + + this._states.tags[object.name] = $.grep(this._states.tags[object.name], $.proxy(function(tag, i) { + return $.inArray(tag, this._states.tags[object.name]) === i; + }, this)); + } + }; + + /** + * Suppresses events. + * @protected + * @param {Array.} events - The events to suppress. + */ + Owl.prototype.suppress = function(events) { + $.each(events, $.proxy(function(index, event) { + this._supress[event] = true; + }, this)); + }; + + /** + * Releases suppressed events. + * @protected + * @param {Array.} events - The events to release. + */ + Owl.prototype.release = function(events) { + $.each(events, $.proxy(function(index, event) { + delete this._supress[event]; + }, this)); + }; + + /** + * Gets unified pointer coordinates from event. + * @todo #261 + * @protected + * @param {Event} - The `mousedown` or `touchstart` event. + * @returns {Object} - Contains `x` and `y` coordinates of current pointer position. + */ + Owl.prototype.pointer = function(event) { + var result = { x: null, y: null }; + + event = event.originalEvent || event || window.event; + + event = event.touches && event.touches.length ? + event.touches[0] : event.changedTouches && event.changedTouches.length ? + event.changedTouches[0] : event; + + if (event.pageX) { + result.x = event.pageX; + result.y = event.pageY; + } else { + result.x = event.clientX; + result.y = event.clientY; + } + + return result; + }; + + /** + * Determines if the input is a Number or something that can be coerced to a Number + * @protected + * @param {Number|String|Object|Array|Boolean|RegExp|Function|Symbol} - The input to be tested + * @returns {Boolean} - An indication if the input is a Number or can be coerced to a Number + */ + Owl.prototype.isNumeric = function(number) { + return !isNaN(parseFloat(number)); + }; + + /** + * Gets the difference of two vectors. + * @todo #261 + * @protected + * @param {Object} - The first vector. + * @param {Object} - The second vector. + * @returns {Object} - The difference. + */ + Owl.prototype.difference = function(first, second) { + return { + x: first.x - second.x, + y: first.y - second.y + }; + }; + + /** + * The jQuery Plugin for the Owl Carousel + * @todo Navigation plugin `next` and `prev` + * @public + */ + $.fn.owlCarousel = function(option) { + var args = Array.prototype.slice.call(arguments, 1); + + return this.each(function() { + var $this = $(this), + data = $this.data('owl.carousel'); + + if (!data) { + data = new Owl(this, typeof option == 'object' && option); + $this.data('owl.carousel', data); + + $.each([ + 'next', 'prev', 'to', 'destroy', 'refresh', 'replace', 'add', 'remove' + ], function(i, event) { + data.register({ type: Owl.Type.Event, name: event }); + data.$element.on(event + '.owl.carousel.core', $.proxy(function(e) { + if (e.namespace && e.relatedTarget !== this) { + this.suppress([ event ]); + data[event].apply(this, [].slice.call(arguments, 1)); + this.release([ event ]); + } + }, data)); + }); + } + + if (typeof option == 'string' && option.charAt(0) !== '_') { + data[option].apply(data, args); + } + }); + }; + + /** + * The constructor for the jQuery Plugin + * @public + */ + $.fn.owlCarousel.Constructor = Owl; + +})(window.Zepto || window.jQuery, window, document); + +/** + * AutoRefresh Plugin + * @version 2.3.4 + * @author Artus Kolanowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + /** + * Creates the auto refresh plugin. + * @class The Auto Refresh Plugin + * @param {Owl} carousel - The Owl Carousel + */ + var AutoRefresh = function(carousel) { + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * Refresh interval. + * @protected + * @type {number} + */ + this._interval = null; + + /** + * Whether the element is currently visible or not. + * @protected + * @type {Boolean} + */ + this._visible = null; + + /** + * All event handlers. + * @protected + * @type {Object} + */ + this._handlers = { + 'initialized.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.autoRefresh) { + this.watch(); + } + }, this) + }; + + // set default options + this._core.options = $.extend({}, AutoRefresh.Defaults, this._core.options); + + // register event handlers + this._core.$element.on(this._handlers); + }; + + /** + * Default options. + * @public + */ + AutoRefresh.Defaults = { + autoRefresh: true, + autoRefreshInterval: 500 + }; + + /** + * Watches the element. + */ + AutoRefresh.prototype.watch = function() { + if (this._interval) { + return; + } + + this._visible = this._core.isVisible(); + this._interval = window.setInterval($.proxy(this.refresh, this), this._core.settings.autoRefreshInterval); + }; + + /** + * Refreshes the element. + */ + AutoRefresh.prototype.refresh = function() { + if (this._core.isVisible() === this._visible) { + return; + } + + this._visible = !this._visible; + + this._core.$element.toggleClass('owl-hidden', !this._visible); + + this._visible && (this._core.invalidate('width') && this._core.refresh()); + }; + + /** + * Destroys the plugin. + */ + AutoRefresh.prototype.destroy = function() { + var handler, property; + + window.clearInterval(this._interval); + + for (handler in this._handlers) { + this._core.$element.off(handler, this._handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.AutoRefresh = AutoRefresh; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Lazy Plugin + * @version 2.3.4 + * @author Bartosz Wojciechowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + /** + * Creates the lazy plugin. + * @class The Lazy Plugin + * @param {Owl} carousel - The Owl Carousel + */ + var Lazy = function(carousel) { + + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * Already loaded items. + * @protected + * @type {Array.} + */ + this._loaded = []; + + /** + * Event handlers. + * @protected + * @type {Object} + */ + this._handlers = { + 'initialized.owl.carousel change.owl.carousel resized.owl.carousel': $.proxy(function(e) { + if (!e.namespace) { + return; + } + + if (!this._core.settings || !this._core.settings.lazyLoad) { + return; + } + + if ((e.property && e.property.name == 'position') || e.type == 'initialized') { + var settings = this._core.settings, + n = (settings.center && Math.ceil(settings.items / 2) || settings.items), + i = ((settings.center && n * -1) || 0), + position = (e.property && e.property.value !== undefined ? e.property.value : this._core.current()) + i, + clones = this._core.clones().length, + load = $.proxy(function(i, v) { this.load(v) }, this); + //TODO: Need documentation for this new option + if (settings.lazyLoadEager > 0) { + n += settings.lazyLoadEager; + // If the carousel is looping also preload images that are to the "left" + if (settings.loop) { + position -= settings.lazyLoadEager; + n++; + } + } + + while (i++ < n) { + this.load(clones / 2 + this._core.relative(position)); + clones && $.each(this._core.clones(this._core.relative(position)), load); + position++; + } + } + }, this) + }; + + // set the default options + this._core.options = $.extend({}, Lazy.Defaults, this._core.options); + + // register event handler + this._core.$element.on(this._handlers); + }; + + /** + * Default options. + * @public + */ + Lazy.Defaults = { + lazyLoad: false, + lazyLoadEager: 0 + }; + + /** + * Loads all resources of an item at the specified position. + * @param {Number} position - The absolute position of the item. + * @protected + */ + Lazy.prototype.load = function(position) { + var $item = this._core.$stage.children().eq(position), + $elements = $item && $item.find('.owl-lazy'); + + if (!$elements || $.inArray($item.get(0), this._loaded) > -1) { + return; + } + + $elements.each($.proxy(function(index, element) { + var $element = $(element), image, + url = (window.devicePixelRatio > 1 && $element.attr('data-src-retina')) || $element.attr('data-src') || $element.attr('data-srcset'); + + this._core.trigger('load', { element: $element, url: url }, 'lazy'); + + if ($element.is('img')) { + $element.one('load.owl.lazy', $.proxy(function() { + $element.css('opacity', 1); + this._core.trigger('loaded', { element: $element, url: url }, 'lazy'); + }, this)).attr('src', url); + } else if ($element.is('source')) { + $element.one('load.owl.lazy', $.proxy(function() { + this._core.trigger('loaded', { element: $element, url: url }, 'lazy'); + }, this)).attr('srcset', url); + } else { + image = new Image(); + image.onload = $.proxy(function() { + $element.css({ + 'background-image': 'url("' + url + '")', + 'opacity': '1' + }); + this._core.trigger('loaded', { element: $element, url: url }, 'lazy'); + }, this); + image.src = url; + } + }, this)); + + this._loaded.push($item.get(0)); + }; + + /** + * Destroys the plugin. + * @public + */ + Lazy.prototype.destroy = function() { + var handler, property; + + for (handler in this.handlers) { + this._core.$element.off(handler, this.handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.Lazy = Lazy; + +})(window.Zepto || window.jQuery, window, document); + +/** + * AutoHeight Plugin + * @version 2.3.4 + * @author Bartosz Wojciechowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + /** + * Creates the auto height plugin. + * @class The Auto Height Plugin + * @param {Owl} carousel - The Owl Carousel + */ + var AutoHeight = function(carousel) { + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + this._previousHeight = null; + + /** + * All event handlers. + * @protected + * @type {Object} + */ + this._handlers = { + 'initialized.owl.carousel refreshed.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.autoHeight) { + this.update(); + } + }, this), + 'changed.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.autoHeight && e.property.name === 'position'){ + this.update(); + } + }, this), + 'loaded.owl.lazy': $.proxy(function(e) { + if (e.namespace && this._core.settings.autoHeight + && e.element.closest('.' + this._core.settings.itemClass).index() === this._core.current()) { + this.update(); + } + }, this) + }; + + // set default options + this._core.options = $.extend({}, AutoHeight.Defaults, this._core.options); + + // register event handlers + this._core.$element.on(this._handlers); + this._intervalId = null; + var refThis = this; + + // These changes have been taken from a PR by gavrochelegnou proposed in #1575 + // and have been made compatible with the latest jQuery version + $(window).on('load', function() { + if (refThis._core.settings.autoHeight) { + refThis.update(); + } + }); + + // Autoresize the height of the carousel when window is resized + // When carousel has images, the height is dependent on the width + // and should also change on resize + $(window).resize(function() { + if (refThis._core.settings.autoHeight) { + if (refThis._intervalId != null) { + clearTimeout(refThis._intervalId); + } + + refThis._intervalId = setTimeout(function() { + refThis.update(); + }, 250); + } + }); + + }; + + /** + * Default options. + * @public + */ + AutoHeight.Defaults = { + autoHeight: false, + autoHeightClass: 'owl-height' + }; + + /** + * Updates the view. + */ + AutoHeight.prototype.update = function() { + var start = this._core._current, + end = start + this._core.settings.items, + lazyLoadEnabled = this._core.settings.lazyLoad, + visible = this._core.$stage.children().toArray().slice(start, end), + heights = [], + maxheight = 0; + + $.each(visible, function(index, item) { + heights.push($(item).height()); + }); + + maxheight = Math.max.apply(null, heights); + + if (maxheight <= 1 && lazyLoadEnabled && this._previousHeight) { + maxheight = this._previousHeight; + } + + this._previousHeight = maxheight; + + this._core.$stage.parent() + .height(maxheight) + .addClass(this._core.settings.autoHeightClass); + }; + + AutoHeight.prototype.destroy = function() { + var handler, property; + + for (handler in this._handlers) { + this._core.$element.off(handler, this._handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] !== 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.AutoHeight = AutoHeight; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Video Plugin + * @version 2.3.4 + * @author Bartosz Wojciechowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + /** + * Creates the video plugin. + * @class The Video Plugin + * @param {Owl} carousel - The Owl Carousel + */ + var Video = function(carousel) { + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * Cache all video URLs. + * @protected + * @type {Object} + */ + this._videos = {}; + + /** + * Current playing item. + * @protected + * @type {jQuery} + */ + this._playing = null; + + /** + * All event handlers. + * @todo The cloned content removale is too late + * @protected + * @type {Object} + */ + this._handlers = { + 'initialized.owl.carousel': $.proxy(function(e) { + if (e.namespace) { + this._core.register({ type: 'state', name: 'playing', tags: [ 'interacting' ] }); + } + }, this), + 'resize.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.video && this.isInFullScreen()) { + e.preventDefault(); + } + }, this), + 'refreshed.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.is('resizing')) { + this._core.$stage.find('.cloned .owl-video-frame').remove(); + } + }, this), + 'changed.owl.carousel': $.proxy(function(e) { + if (e.namespace && e.property.name === 'position' && this._playing) { + this.stop(); + } + }, this), + 'prepared.owl.carousel': $.proxy(function(e) { + if (!e.namespace) { + return; + } + + var $element = $(e.content).find('.owl-video'); + + if ($element.length) { + $element.css('display', 'none'); + this.fetch($element, $(e.content)); + } + }, this) + }; + + // set default options + this._core.options = $.extend({}, Video.Defaults, this._core.options); + + // register event handlers + this._core.$element.on(this._handlers); + + this._core.$element.on('click.owl.video', '.owl-video-play-icon', $.proxy(function(e) { + this.play(e); + }, this)); + }; + + /** + * Default options. + * @public + */ + Video.Defaults = { + video: false, + videoHeight: false, + videoWidth: false + }; + + /** + * Gets the video ID and the type (YouTube/Vimeo/vzaar only). + * @protected + * @param {jQuery} target - The target containing the video data. + * @param {jQuery} item - The item containing the video. + */ + Video.prototype.fetch = function(target, item) { + var type = (function() { + if (target.attr('data-vimeo-id')) { + return 'vimeo'; + } else if (target.attr('data-vzaar-id')) { + return 'vzaar' + } else { + return 'youtube'; + } + })(), + id = target.attr('data-vimeo-id') || target.attr('data-youtube-id') || target.attr('data-vzaar-id'), + width = target.attr('data-width') || this._core.settings.videoWidth, + height = target.attr('data-height') || this._core.settings.videoHeight, + url = target.attr('href'); + + if (url) { + + /* + Parses the id's out of the following urls (and probably more): + https://www.youtube.com/watch?v=:id + https://youtu.be/:id + https://vimeo.com/:id + https://vimeo.com/channels/:channel/:id + https://vimeo.com/groups/:group/videos/:id + https://app.vzaar.com/videos/:id + + Visual example: https://regexper.com/#(http%3A%7Chttps%3A%7C)%5C%2F%5C%2F(player.%7Cwww.%7Capp.)%3F(vimeo%5C.com%7Cyoutu(be%5C.com%7C%5C.be%7Cbe%5C.googleapis%5C.com)%7Cvzaar%5C.com)%5C%2F(video%5C%2F%7Cvideos%5C%2F%7Cembed%5C%2F%7Cchannels%5C%2F.%2B%5C%2F%7Cgroups%5C%2F.%2B%5C%2F%7Cwatch%5C%3Fv%3D%7Cv%5C%2F)%3F(%5BA-Za-z0-9._%25-%5D*)(%5C%26%5CS%2B)%3F + */ + + id = url.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com|be\-nocookie\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/); + + if (id[3].indexOf('youtu') > -1) { + type = 'youtube'; + } else if (id[3].indexOf('vimeo') > -1) { + type = 'vimeo'; + } else if (id[3].indexOf('vzaar') > -1) { + type = 'vzaar'; + } else { + throw new Error('Video URL not supported.'); + } + id = id[6]; + } else { + throw new Error('Missing video URL.'); + } + + this._videos[url] = { + type: type, + id: id, + width: width, + height: height + }; + + item.attr('data-video', url); + + this.thumbnail(target, this._videos[url]); + }; + + /** + * Creates video thumbnail. + * @protected + * @param {jQuery} target - The target containing the video data. + * @param {Object} info - The video info object. + * @see `fetch` + */ + Video.prototype.thumbnail = function(target, video) { + var tnLink, + icon, + path, + dimensions = video.width && video.height ? 'width:' + video.width + 'px;height:' + video.height + 'px;' : '', + customTn = target.find('img'), + srcType = 'src', + lazyClass = '', + settings = this._core.settings, + create = function(path) { + icon = '
    '; + + if (settings.lazyLoad) { + tnLink = $('
    ',{ + "class": 'owl-video-tn ' + lazyClass, + "srcType": path + }); + } else { + tnLink = $( '
    ', { + "class": "owl-video-tn", + "style": 'opacity:1;background-image:url(' + path + ')' + }); + } + target.after(tnLink); + target.after(icon); + }; + + // wrap video content into owl-video-wrapper div + target.wrap( $( '
    ', { + "class": "owl-video-wrapper", + "style": dimensions + })); + + if (this._core.settings.lazyLoad) { + srcType = 'data-src'; + lazyClass = 'owl-lazy'; + } + + // custom thumbnail + if (customTn.length) { + create(customTn.attr(srcType)); + customTn.remove(); + return false; + } + + if (video.type === 'youtube') { + path = "//img.youtube.com/vi/" + video.id + "/hqdefault.jpg"; + create(path); + } else if (video.type === 'vimeo') { + $.ajax({ + type: 'GET', + url: '//vimeo.com/api/v2/video/' + video.id + '.json', + jsonp: 'callback', + dataType: 'jsonp', + success: function(data) { + path = data[0].thumbnail_large; + create(path); + } + }); + } else if (video.type === 'vzaar') { + $.ajax({ + type: 'GET', + url: '//vzaar.com/api/videos/' + video.id + '.json', + jsonp: 'callback', + dataType: 'jsonp', + success: function(data) { + path = data.framegrab_url; + create(path); + } + }); + } + }; + + /** + * Stops the current video. + * @public + */ + Video.prototype.stop = function() { + this._core.trigger('stop', null, 'video'); + this._playing.find('.owl-video-frame').remove(); + this._playing.removeClass('owl-video-playing'); + this._playing = null; + this._core.leave('playing'); + this._core.trigger('stopped', null, 'video'); + }; + + /** + * Starts the current video. + * @public + * @param {Event} event - The event arguments. + */ + Video.prototype.play = function(event) { + var target = $(event.target), + item = target.closest('.' + this._core.settings.itemClass), + video = this._videos[item.attr('data-video')], + width = video.width || '100%', + height = video.height || this._core.$stage.height(), + html, + iframe; + + if (this._playing) { + return; + } + + this._core.enter('playing'); + this._core.trigger('play', null, 'video'); + + item = this._core.items(this._core.relative(item.index())); + + this._core.reset(item.index()); + + html = $( '' ); + html.attr( 'height', height ); + html.attr( 'width', width ); + if (video.type === 'youtube') { + html.attr( 'src', '//www.youtube.com/embed/' + video.id + '?autoplay=1&rel=0&v=' + video.id ); + } else if (video.type === 'vimeo') { + html.attr( 'src', '//player.vimeo.com/video/' + video.id + '?autoplay=1' ); + } else if (video.type === 'vzaar') { + html.attr( 'src', '//view.vzaar.com/' + video.id + '/player?autoplay=true' ); + } + + iframe = $(html).wrap( '
    ' ).insertAfter(item.find('.owl-video')); + + this._playing = item.addClass('owl-video-playing'); + }; + + /** + * Checks whether an video is currently in full screen mode or not. + * @todo Bad style because looks like a readonly method but changes members. + * @protected + * @returns {Boolean} + */ + Video.prototype.isInFullScreen = function() { + var element = document.fullscreenElement || document.mozFullScreenElement || + document.webkitFullscreenElement; + + return element && $(element).parent().hasClass('owl-video-frame'); + }; + + /** + * Destroys the plugin. + */ + Video.prototype.destroy = function() { + var handler, property; + + this._core.$element.off('click.owl.video'); + + for (handler in this._handlers) { + this._core.$element.off(handler, this._handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.Video = Video; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Animate Plugin + * @version 2.3.4 + * @author Bartosz Wojciechowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + /** + * Creates the animate plugin. + * @class The Navigation Plugin + * @param {Owl} scope - The Owl Carousel + */ + var Animate = function(scope) { + this.core = scope; + this.core.options = $.extend({}, Animate.Defaults, this.core.options); + this.swapping = true; + this.previous = undefined; + this.next = undefined; + + this.handlers = { + 'change.owl.carousel': $.proxy(function(e) { + if (e.namespace && e.property.name == 'position') { + this.previous = this.core.current(); + this.next = e.property.value; + } + }, this), + 'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function(e) { + if (e.namespace) { + this.swapping = e.type == 'translated'; + } + }, this), + 'translate.owl.carousel': $.proxy(function(e) { + if (e.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) { + this.swap(); + } + }, this) + }; + + this.core.$element.on(this.handlers); + }; + + /** + * Default options. + * @public + */ + Animate.Defaults = { + animateOut: false, + animateIn: false + }; + + /** + * Toggles the animation classes whenever an translations starts. + * @protected + * @returns {Boolean|undefined} + */ + Animate.prototype.swap = function() { + + if (this.core.settings.items !== 1) { + return; + } + + if (!$.support.animation || !$.support.transition) { + return; + } + + this.core.speed(0); + + var left, + clear = $.proxy(this.clear, this), + previous = this.core.$stage.children().eq(this.previous), + next = this.core.$stage.children().eq(this.next), + incoming = this.core.settings.animateIn, + outgoing = this.core.settings.animateOut; + + if (this.core.current() === this.previous) { + return; + } + + if (outgoing) { + left = this.core.coordinates(this.previous) - this.core.coordinates(this.next); + previous.one($.support.animation.end, clear) + .css( { 'left': left + 'px' } ) + .addClass('animated owl-animated-out') + .addClass(outgoing); + } + + if (incoming) { + next.one($.support.animation.end, clear) + .addClass('animated owl-animated-in') + .addClass(incoming); + } + }; + + Animate.prototype.clear = function(e) { + $(e.target).css( { 'left': '' } ) + .removeClass('animated owl-animated-out owl-animated-in') + .removeClass(this.core.settings.animateIn) + .removeClass(this.core.settings.animateOut); + this.core.onTransitionEnd(); + }; + + /** + * Destroys the plugin. + * @public + */ + Animate.prototype.destroy = function() { + var handler, property; + + for (handler in this.handlers) { + this.core.$element.off(handler, this.handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.Animate = Animate; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Autoplay Plugin + * @version 2.3.4 + * @author Bartosz Wojciechowski + * @author Artus Kolanowski + * @author David Deutsch + * @author Tom De Caluwé + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + /** + * Creates the autoplay plugin. + * @class The Autoplay Plugin + * @param {Owl} scope - The Owl Carousel + */ + var Autoplay = function(carousel) { + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * The autoplay timeout id. + * @type {Number} + */ + this._call = null; + + /** + * Depending on the state of the plugin, this variable contains either + * the start time of the timer or the current timer value if it's + * paused. Since we start in a paused state we initialize the timer + * value. + * @type {Number} + */ + this._time = 0; + + /** + * Stores the timeout currently used. + * @type {Number} + */ + this._timeout = 0; + + /** + * Indicates whenever the autoplay is paused. + * @type {Boolean} + */ + this._paused = true; + + /** + * All event handlers. + * @protected + * @type {Object} + */ + this._handlers = { + 'changed.owl.carousel': $.proxy(function(e) { + if (e.namespace && e.property.name === 'settings') { + if (this._core.settings.autoplay) { + this.play(); + } else { + this.stop(); + } + } else if (e.namespace && e.property.name === 'position' && this._paused) { + // Reset the timer. This code is triggered when the position + // of the carousel was changed through user interaction. + this._time = 0; + } + }, this), + 'initialized.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.autoplay) { + this.play(); + } + }, this), + 'play.owl.autoplay': $.proxy(function(e, t, s) { + if (e.namespace) { + this.play(t, s); + } + }, this), + 'stop.owl.autoplay': $.proxy(function(e) { + if (e.namespace) { + this.stop(); + } + }, this), + 'mouseover.owl.autoplay': $.proxy(function() { + if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { + this.pause(); + } + }, this), + 'mouseleave.owl.autoplay': $.proxy(function() { + if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { + this.play(); + } + }, this), + 'touchstart.owl.core': $.proxy(function() { + if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { + this.pause(); + } + }, this), + 'touchend.owl.core': $.proxy(function() { + if (this._core.settings.autoplayHoverPause) { + this.play(); + } + }, this) + }; + + // register event handlers + this._core.$element.on(this._handlers); + + // set default options + this._core.options = $.extend({}, Autoplay.Defaults, this._core.options); + }; + + /** + * Default options. + * @public + */ + Autoplay.Defaults = { + autoplay: false, + autoplayTimeout: 5000, + autoplayHoverPause: false, + autoplaySpeed: false + }; + + /** + * Transition to the next slide and set a timeout for the next transition. + * @private + * @param {Number} [speed] - The animation speed for the animations. + */ + Autoplay.prototype._next = function(speed) { + this._call = window.setTimeout( + $.proxy(this._next, this, speed), + this._timeout * (Math.round(this.read() / this._timeout) + 1) - this.read() + ); + + if (this._core.is('interacting') || document.hidden) { + return; + } + this._core.next(speed || this._core.settings.autoplaySpeed); + } + + /** + * Reads the current timer value when the timer is playing. + * @public + */ + Autoplay.prototype.read = function() { + return new Date().getTime() - this._time; + }; + + /** + * Starts the autoplay. + * @public + * @param {Number} [timeout] - The interval before the next animation starts. + * @param {Number} [speed] - The animation speed for the animations. + */ + Autoplay.prototype.play = function(timeout, speed) { + var elapsed; + + if (!this._core.is('rotating')) { + this._core.enter('rotating'); + } + + timeout = timeout || this._core.settings.autoplayTimeout; + + // Calculate the elapsed time since the last transition. If the carousel + // wasn't playing this calculation will yield zero. + elapsed = Math.min(this._time % (this._timeout || timeout), timeout); + + if (this._paused) { + // Start the clock. + this._time = this.read(); + this._paused = false; + } else { + // Clear the active timeout to allow replacement. + window.clearTimeout(this._call); + } + + // Adjust the origin of the timer to match the new timeout value. + this._time += this.read() % timeout - elapsed; + + this._timeout = timeout; + this._call = window.setTimeout($.proxy(this._next, this, speed), timeout - elapsed); + }; + + /** + * Stops the autoplay. + * @public + */ + Autoplay.prototype.stop = function() { + if (this._core.is('rotating')) { + // Reset the clock. + this._time = 0; + this._paused = true; + + window.clearTimeout(this._call); + this._core.leave('rotating'); + } + }; + + /** + * Pauses the autoplay. + * @public + */ + Autoplay.prototype.pause = function() { + if (this._core.is('rotating') && !this._paused) { + // Pause the clock. + this._time = this.read(); + this._paused = true; + + window.clearTimeout(this._call); + } + }; + + /** + * Destroys the plugin. + */ + Autoplay.prototype.destroy = function() { + var handler, property; + + this.stop(); + + for (handler in this._handlers) { + this._core.$element.off(handler, this._handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.autoplay = Autoplay; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Navigation Plugin + * @version 2.3.4 + * @author Artus Kolanowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + 'use strict'; + + /** + * Creates the navigation plugin. + * @class The Navigation Plugin + * @param {Owl} carousel - The Owl Carousel. + */ + var Navigation = function(carousel) { + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * Indicates whether the plugin is initialized or not. + * @protected + * @type {Boolean} + */ + this._initialized = false; + + /** + * The current paging indexes. + * @protected + * @type {Array} + */ + this._pages = []; + + /** + * All DOM elements of the user interface. + * @protected + * @type {Object} + */ + this._controls = {}; + + /** + * Markup for an indicator. + * @protected + * @type {Array.} + */ + this._templates = []; + + /** + * The carousel element. + * @type {jQuery} + */ + this.$element = this._core.$element; + + /** + * Overridden methods of the carousel. + * @protected + * @type {Object} + */ + this._overrides = { + next: this._core.next, + prev: this._core.prev, + to: this._core.to + }; + + /** + * All event handlers. + * @protected + * @type {Object} + */ + this._handlers = { + 'prepared.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.dotsData) { + this._templates.push('
    ' + + $(e.content).find('[data-dot]').addBack('[data-dot]').attr('data-dot') + '
    '); + } + }, this), + 'added.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.dotsData) { + this._templates.splice(e.position, 0, this._templates.pop()); + } + }, this), + 'remove.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.dotsData) { + this._templates.splice(e.position, 1); + } + }, this), + 'changed.owl.carousel': $.proxy(function(e) { + if (e.namespace && e.property.name == 'position') { + this.draw(); + } + }, this), + 'initialized.owl.carousel': $.proxy(function(e) { + if (e.namespace && !this._initialized) { + this._core.trigger('initialize', null, 'navigation'); + this.initialize(); + this.update(); + this.draw(); + this._initialized = true; + this._core.trigger('initialized', null, 'navigation'); + } + }, this), + 'refreshed.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._initialized) { + this._core.trigger('refresh', null, 'navigation'); + this.update(); + this.draw(); + this._core.trigger('refreshed', null, 'navigation'); + } + }, this) + }; + + // set default options + this._core.options = $.extend({}, Navigation.Defaults, this._core.options); + + // register event handlers + this.$element.on(this._handlers); + }; + + /** + * Default options. + * @public + * @todo Rename `slideBy` to `navBy` + */ + Navigation.Defaults = { + nav: false, + navText: [ + '', + '' + ], + navSpeed: false, + navElement: 'button type="button" role="presentation"', + navContainer: false, + navContainerClass: 'owl-nav', + navClass: [ + 'owl-prev', + 'owl-next' + ], + slideBy: 1, + dotClass: 'owl-dot', + dotsClass: 'owl-dots', + dots: true, + dotsEach: false, + dotsData: false, + dotsSpeed: false, + dotsContainer: false + }; + + /** + * Initializes the layout of the plugin and extends the carousel. + * @protected + */ + Navigation.prototype.initialize = function() { + var override, + settings = this._core.settings; + + // create DOM structure for relative navigation + this._controls.$relative = (settings.navContainer ? $(settings.navContainer) + : $('
    ').addClass(settings.navContainerClass).appendTo(this.$element)).addClass('disabled'); + + this._controls.$previous = $('<' + settings.navElement + '>') + .addClass(settings.navClass[0]) + .html(settings.navText[0]) + .prependTo(this._controls.$relative) + .on('click', $.proxy(function(e) { + this.prev(settings.navSpeed); + }, this)); + this._controls.$next = $('<' + settings.navElement + '>') + .addClass(settings.navClass[1]) + .html(settings.navText[1]) + .appendTo(this._controls.$relative) + .on('click', $.proxy(function(e) { + this.next(settings.navSpeed); + }, this)); + + // create DOM structure for absolute navigation + if (!settings.dotsData) { + this._templates = [ $('
    ").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:i.width(),height:i.height()},n=document.activeElement;try{n.id}catch(t){n=document.body}return i.wrap(t),(i[0]===n||D.contains(i[0],n))&&D(n).trigger("focus"),t=i.parent(),"static"===i.css("position")?(t.css({position:"relative"}),i.css({position:"relative"})):(D.extend(s,{position:i.css("position"),zIndex:i.css("z-index")}),D.each(["top","left","bottom","right"],function(t,e){s[e]=i.css(e),isNaN(parseInt(s[e],10))&&(s[e]="auto")}),i.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),i.css(e),t.css(s).show()},removeWrapper:function(t){var e=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===e||D.contains(t[0],e))&&D(e).trigger("focus")),t}}),D.extend(D.effects,{version:"1.12.1",define:function(t,e,i){return i||(i=e,e="effect"),D.effects.effect[t]=i,D.effects.effect[t].mode=e,i},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,n="vertical"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();1").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),float:t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(h+"placeholder",e)),t.css({position:i,left:s.left,top:s.top}),e},removePlaceholder:function(t){var e=h+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(t){D.effects.restoreStyle(t),D.effects.removePlaceholder(t)},setTransition:function(s,t,n,o){return o=o||{},D.each(t,function(t,e){var i=s.cssUnit(e);0
    ").appendTo("body").addClass(t.className).css({top:c.top-a,left:c.left-r,height:i.innerHeight(),width:i.innerWidth(),position:n?"fixed":"absolute"}).animate(h,t.duration,t.easing,function(){u.remove(),D.isFunction(e)&&e()})}}),D.fx.step.clip=function(t){t.clipInit||(t.start=D(t.elem).cssClip(),"string"==typeof t.end&&(t.end=a(t.end,t.elem)),t.clipInit=!0),D(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})}}(),c={},D.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,t){c[t]=function(t){return Math.pow(t,e+2)}}),D.extend(c,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;t<((e=Math.pow(2,--i))-1)/11;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),D.each(c,function(t,e){D.easing["easeIn"+t]=e,D.easing["easeOut"+t]=function(t){return 1-e(1-t)},D.easing["easeInOut"+t]=function(t){return t<.5?e(2*t)/2:1-e(-2*t+2)/2}});var f=D.effects,g=D.effects.define("blind","hide",function(t,e){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},s=D(this),n=t.direction||"up",o=s.cssClip(),a={clip:D.extend({},o)},r=D.effects.createPlaceholder(s);a.clip[i[n][0]]=a.clip[i[n][1]],"show"===t.mode&&(s.cssClip(a.clip),r&&r.css(D.effects.clipToBox(a)),a.clip=o),r&&r.animate(D.effects.clipToBox(a),t.duration,t.easing),s.animate(a,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),m=D.effects.define("bounce",function(t,e){var i,s,n,o=D(this),a=t.mode,r="hide"===a,l="show"===a,h=t.direction||"up",c=t.distance,u=t.times||5,d=2*u+(l||r?1:0),p=t.duration/d,f=t.easing,g="up"===h||"down"===h?"top":"left",m="up"===h||"left"===h,v=0,b=o.queue().length;for(D.effects.createPlaceholder(o),n=o.css(g),c||(c=o["top"===g?"outerHeight":"outerWidth"]()/3),l&&((s={opacity:1})[g]=n,o.css("opacity",0).css(g,m?2*-c:2*c).animate(s,p,f)),r&&(c/=Math.pow(2,u-1)),(s={})[g]=n;v
    ").css({position:"absolute",visibility:"visible",left:-s*f,top:-i*g}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:f,height:g,left:n+(d?a*f:0),top:o+(d?r*g:0),opacity:d?0:1}).animate({left:n+(d?0:a*f),top:o+(d?0:r*g),opacity:d?1:0},t.duration||500,t.easing,v);function b(){c.css({visibility:"visible"}),D(m).remove(),e()}}),_=D.effects.define("fade","toggle",function(t,e){var i="show"===t.mode;D(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),w=D.effects.define("fold","hide",function(e,t){var i=D(this),s=e.mode,n="show"===s,o="hide"===s,a=e.size||15,r=/([0-9]+)%/.exec(a),l,h=!!e.horizFirst?["right","bottom"]:["bottom","right"],c=e.duration/2,u=D.effects.createPlaceholder(i),d=i.cssClip(),p={clip:D.extend({},d)},f={clip:D.extend({},d)},g=[d[h[0]],d[h[1]]],m=i.queue().length;r&&(a=parseInt(r[1],10)/100*g[o?0:1]),p.clip[h[0]]=a,f.clip[h[0]]=a,f.clip[h[1]]=0,n&&(i.cssClip(f.clip),u&&u.css(D.effects.clipToBox(f)),f.clip=d),i.queue(function(t){u&&u.animate(D.effects.clipToBox(p),c,e.easing).animate(D.effects.clipToBox(f),c,e.easing),t()}).animate(p,c,e.easing).animate(f,c,e.easing).queue(t),D.effects.unshift(i,m,4)}),x=D.effects.define("highlight","show",function(t,e){var i=D(this),s={backgroundColor:i.css("backgroundColor")};"hide"===t.mode&&(s.opacity=0),D.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),C=D.effects.define("size",function(n,e){var t,o,i,s=D(this),a=["fontSize"],r=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],h=n.mode,c="effect"!==h,u=n.scale||"both",d=n.origin||["middle","center"],p=s.css("position"),f=s.position(),g=D.effects.scaledDimensions(s),m=n.from||g,v=n.to||D.effects.scaledDimensions(s,0);D.effects.createPlaceholder(s),"show"===h&&(i=m,m=v,v=i),o={from:{y:m.height/g.height,x:m.width/g.width},to:{y:v.height/g.height,x:v.width/g.width}},"box"!==u&&"both"!==u||(o.from.y!==o.to.y&&(m=D.effects.setTransition(s,r,o.from.y,m),v=D.effects.setTransition(s,r,o.to.y,v)),o.from.x!==o.to.x&&(m=D.effects.setTransition(s,l,o.from.x,m),v=D.effects.setTransition(s,l,o.to.x,v))),"content"!==u&&"both"!==u||o.from.y!==o.to.y&&(m=D.effects.setTransition(s,a,o.from.y,m),v=D.effects.setTransition(s,a,o.to.y,v)),d&&(t=D.effects.getBaseline(d,g),m.top=(g.outerHeight-m.outerHeight)*t.y+f.top,m.left=(g.outerWidth-m.outerWidth)*t.x+f.left,v.top=(g.outerHeight-v.outerHeight)*t.y+f.top,v.left=(g.outerWidth-v.outerWidth)*t.x+f.left),s.css(m),"content"!==u&&"both"!==u||(r=r.concat(["marginTop","marginBottom"]).concat(a),l=l.concat(["marginLeft","marginRight"]),s.find("*[width]").each(function(){var t=D(this),e=D.effects.scaledDimensions(t),i={height:e.height*o.from.y,width:e.width*o.from.x,outerHeight:e.outerHeight*o.from.y,outerWidth:e.outerWidth*o.from.x},s={height:e.height*o.to.y,width:e.width*o.to.x,outerHeight:e.height*o.to.y,outerWidth:e.width*o.to.x};o.from.y!==o.to.y&&(i=D.effects.setTransition(t,r,o.from.y,i),s=D.effects.setTransition(t,r,o.to.y,s)),o.from.x!==o.to.x&&(i=D.effects.setTransition(t,l,o.from.x,i),s=D.effects.setTransition(t,l,o.to.x,s)),c&&D.effects.saveStyle(t),t.css(i),t.animate(s,n.duration,n.easing,function(){c&&D.effects.restoreStyle(t)})})),s.animate(v,{queue:!1,duration:n.duration,easing:n.easing,complete:function(){var t=s.offset();0===v.opacity&&s.css("opacity",m.opacity),c||(s.css("position","static"===p?"relative":p).offset(t),D.effects.saveStyle(s)),e()}})}),k=D.effects.define("scale",function(t,e){var i=D(this),s=t.mode,n=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"effect"!==s?0:100),o=D.extend(!0,{from:D.effects.scaledDimensions(i),to:D.effects.scaledDimensions(i,n,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(o.from.opacity=1,o.to.opacity=0),D.effects.effect.size.call(this,o,e)}),T=D.effects.define("puff","hide",function(t,e){var i=D.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});D.effects.effect.scale.call(this,i,e)}),S=D.effects.define("pulsate","show",function(t,e){var i=D(this),s=t.mode,n="show"===s,o,a=n||"hide"===s,r=2*(t.times||5)+(a?1:0),l=t.duration/r,h=0,c=1,u=i.queue().length;for(!n&&i.is(":visible")||(i.css("opacity",0).show(),h=1);c?@[\]^`{|}~])/g,function(t){return t.replace(z,"\\$1")}),z,L=D.fn.labels=function(){var t,e,i,s,n;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(s=this.eq(0).parents("label"),(i=this.attr("id"))&&(n=(t=this.eq(0).parents().last()).add(t.length?t.siblings():this.siblings()),e="label[for='"+D.ui.escapeSelector(i)+"']",s=s.add(n.find(e).addBack(e))), +this.pushStack(s))},W=D.fn.scrollParent=function(t){var e=this.css("position"),i="absolute"===e,s=t?/(auto|scroll|hidden)/:/(auto|scroll)/,n=this.parents().filter(function(){var t=D(this);return(!i||"static"!==t.css("position"))&&s.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==e&&n.length?n:D(this[0].ownerDocument||document)},R=D.extend(D.expr[":"],{tabbable:function(t){var e=D.attr(t,"tabindex"),i=null!=e;return(!i||0<=e)&&D.ui.focusable(t,i)}}),F=D.fn.extend({uniqueId:(j=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++j)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&D(this).removeAttr("id")})}}),j,B=D.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=D(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():D()}},_createIcons:function(){var t,e,i=this.options.icons;i&&(t=D(""),this._addClass(t,"ui-accordion-header-icon","ui-icon "+i.header),t.prependTo(this.headers),e=this.active.children(".ui-accordion-header-icon"),this._removeClass(e,i.header)._addClass(e,null,i.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"!==t?("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons())):this._activate(e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var e=D.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case e.RIGHT:case e.DOWN:n=this.headers[(s+1)%i];break;case e.LEFT:case e.UP:n=this.headers[(s-1+i)%i];break;case e.SPACE:case e.ENTER:this._eventHandler(t);break;case e.HOME:n=this.headers[0];break;case e.END:n=this.headers[i-1]}n&&(D(t.target).attr("tabIndex",-1),D(n).attr("tabIndex",0),D(n).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===D.ui.keyCode.UP&&t.ctrlKey&&D(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=D()):!1===t.active?this._activate(0):this.active.length&&!D.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=D()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var i,t=this.options,e=t.heightStyle,s=this.element.parent();this.active=this._findActive(t.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=D(this),e=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",e)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(t.event),"fill"===e?(i=s.height(),this.element.siblings(":visible").each(function(){var t=D(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=D(this).outerHeight(!0)}),this.headers.next().each(function(){D(this).height(Math.max(0,i-D(this).innerHeight()+D(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.headers.next().each(function(){var t=D(this).is(":visible");t||D(this).show(),i=Math.max(i,D(this).css("height","").height()),t||D(this).hide()}).height(i))},_activate:function(t){var e=this._findActive(t)[0];e!==this.active[0]&&(e=e||this.active[0],this._eventHandler({target:e,currentTarget:e,preventDefault:D.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):D()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&D.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var e,i,s=this.options,n=this.active,o=D(t.currentTarget),a=o[0]===n[0],r=a&&s.collapsible,l=r?D():o.next(),h=n.next(),c={oldHeader:n,oldPanel:h,newHeader:r?D():o,newPanel:l};t.preventDefault(),a&&!s.collapsible||!1===this._trigger("beforeActivate",t,c)||(s.active=!r&&this.headers.index(o),this.active=a?D():o,this._toggle(c),this._removeClass(n,"ui-accordion-header-active","ui-state-active"),s.icons&&(e=n.children(".ui-accordion-header-icon"),this._removeClass(e,null,s.icons.activeHeader)._addClass(e,null,s.icons.header)),a||(this._removeClass(o,"ui-accordion-header-collapsed")._addClass(o,"ui-accordion-header-active","ui-state-active"),s.icons&&(i=o.children(".ui-accordion-header-icon"),this._removeClass(i,null,s.icons.header)._addClass(i,null,s.icons.activeHeader)),this._addClass(o.next(),"ui-accordion-content-active")))},_toggle:function(t){var e=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=e,this.prevHide=i,this.options.animate?this._animate(e,i,t):(i.hide(),e.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),e.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):e.length&&this.headers.filter(function(){return 0===parseInt(D(this).attr("tabIndex"),10)}).attr("tabIndex",-1),e.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,i,e){var s,n,o,a=this,r=0,l=t.css("box-sizing"),h=t.length&&(!i.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(t){var e=D(t.target),i=D(D.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){if(!this.previousFilter){var e=D(t.target).closest(".ui-menu-item"),i=D(t.currentTarget);e[0]===i[0]&&(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var t;!D.contains(this.element[0],D.ui.safeActiveElement(this.document[0]))&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var t,e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),e.children().each(function(){var t=D(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n,o=!0;switch(t.keyCode){case D.ui.keyCode.PAGE_UP:this.previousPage(t);break;case D.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case D.ui.keyCode.HOME:this._move("first","first",t);break;case D.ui.keyCode.END:this._move("last","last",t);break;case D.ui.keyCode.UP:this.previous(t);break;case D.ui.keyCode.DOWN:this.next(t);break;case D.ui.keyCode.LEFT:this.collapse(t);break;case D.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case D.ui.keyCode.ENTER:case D.ui.keyCode.SPACE:this._activate(t);break;case D.ui.keyCode.ESCAPE:this.collapse(t);break;default:o=!1,i=this.previousFilter||"",n=!1,s=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),s===i?n=!0:s=i+s,e=this._filterMenuItems(s),(e=n&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(s=String.fromCharCode(t.keyCode),e=this._filterMenuItems(s)),e.length?(this.focus(t,e),this.previousFilter=s,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,i,s,n,o=this,a=this.options.icons.submenu,r=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),i=r.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=D(this),e=t.prev(),i=D("").data("ui-menu-submenu-caret",!0);o._addClass(i,"ui-menu-icon","ui-icon "+a),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(i,"ui-menu","ui-widget ui-widget-content ui-front"),(e=(t=r.add(this.element)).find(this.options.items)).not(".ui-menu-item").each(function(){var t=D(this);o._isDivider(t)&&o._addClass(t,"ui-menu-divider","ui-widget-content")}),n=(s=e.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(s,"ui-menu-item")._addClass(n,"ui-menu-item-wrapper"),e.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!D.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s,n,o,a;this._hasScroll()&&(e=parseFloat(D.css(this.activeMenu[0],"borderTopWidth"))||0,i=parseFloat(D.css(this.activeMenu[0],"paddingTop"))||0,s=t.offset().top-this.activeMenu.offset().top-e-i,n=this.activeMenu.scrollTop(),o=this.activeMenu.height(),a=t.outerHeight(),s<0?this.activeMenu.scrollTop(n+s):o",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,o="input"===t;this.isMultiLine=e||!o&&this._isContentEditable(this.element),this.valueMethod=this.element[e||o?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=D.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=D.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(clearTimeout(this.searching),this.close(t),this._change(t))}}),this._initSource(),this.menu=D("
      ").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==D.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){D(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&D.trim(i).length&&(this.liveRegion.children().hide(),D("
      ").text(i).appendTo(this.liveRegion))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==D.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=D("
      ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||D.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?D(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front, dialog")),t.length||(t=this.document[0].body),t},_initSource:function(){var i,s,n=this;D.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(D.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=D.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(!t||e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(D("
      ").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),D.extend(D.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(D.ui.autocomplete.escapeRegex(e),"i");return D.grep(t,function(t){return i.test(t.label||t.value||t)})}}),D.widget("ui.autocomplete",D.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e).appendTo(this.liveRegion))}});var Y=D.ui.autocomplete,V=/ui-corner-([a-z]){2,6}/g,K=D.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"
      ",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var a=this,r=[];D.each(this.options.items,function(n,t){var e,o={};if(t)return"controlgroupLabel"===n?((e=a.element.find(t)).each(function(){var t=D(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("")}),a._addClass(e,null,"ui-widget ui-widget-content ui-state-default"),void(r=r.concat(e.get()))):void(D.fn[n]&&(o=a["_"+n+"Options"]?a["_"+n+"Options"]("middle"):{classes:{}},a.element.find(t).each(function(){var t=D(this),e=t[n]("instance"),i=D.widget.extend({},o);if("button"!==n||!t.parent(".ui-spinner").length){e||(e=t[n]()[n]("instance")),e&&(i.classes=a._resolveClassesValues(i.classes,e)),t[n](i);var s=t[n]("widget");D.data(s[0],"ui-controlgroup-data",e||t[n]("instance")),r.push(s[0])}})))}),this.childWidgets=D(D.unique(r)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(i){this.childWidgets.each(function(){var t,e=D(this).data("ui-controlgroup-data");e&&e[i]&&e[i]()})},_updateCornerClass:function(t,e){var i="ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all",s=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,i),this._addClass(t,null,s)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:!!e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(i,s){var n={};return D.each(i,function(t){var e=s.options.classes[t]||"";e=D.trim(e.replace(V,"")),n[t]=(e+" "+i[t]).replace(/\s+/g," ")}),n},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"!==t?this.refresh():this._callChildMethod(e?"disable":"enable")},refresh:function(){var n,o=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),n=this.childWidgets,this.options.onlyVisible&&(n=n.filter(":visible")),n.length&&(D.each(["first","last"],function(t,e){var i=n[e]().data("ui-controlgroup-data");if(i&&o["_"+i.widgetName+"Options"]){var s=o["_"+i.widgetName+"Options"](1===n.length?"only":e);s.classes=o._resolveClassesValues(s.classes,i),i.element[i.widgetName](s)}else o._updateCornerClass(n[e](),e)}),this._callChildMethod("refresh"))}});D.widget("ui.checkboxradio",[D.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,e,i=this,s=this._super()||{};return this._readType(),e=this.element.labels(),this.label=D(e[e.length-1]),this.label.length||D.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){i.originalLabel+=3===this.nodeType?D(this).text():this.outerHTML}),this.originalLabel&&(s.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(s.disabled=t),s},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"), +this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||D.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t,e=this.element[0].name,i="input[name='"+D.ui.escapeSelector(e)+"']";return e?(t=this.form.length?D(this.form[0].elements).filter(i):D(i).filter(function(){return 0===D(this).form().length})).not(this.element):D([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each(function(){var t=D(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){if("label"!==t||e){if(this._super(t,e),"disabled"===t)return this._toggleClass(this.label,null,"ui-state-disabled",e),void(this.element[0].disabled=e);this.refresh()}},_updateIcon:function(t){var e="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=D(""),this.iconSpace=D(" "),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(e+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):e+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",e),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]);var X=D.ui.checkboxradio,G;D.widget("ui.button",{version:"1.12.1",defaultElement:"").addClass(this._triggerClass).html(n?D("").attr({src:n,alt:s,title:s}):s)),t[a?"before":"after"](e.trigger),e.trigger.on("click",function(){return D.datepicker._datepickerShowing&&D.datepicker._lastInput===t[0]?D.datepicker._hideDatepicker():(D.datepicker._datepickerShowing&&D.datepicker._lastInput!==t[0]&&D.datepicker._hideDatepicker(),D.datepicker._showDatepicker(t[0])),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(n=s=i=0;ni&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(t,e){var i=D(t);i.hasClass(this.markerClassName)||(i.addClass(this.markerClassName).append(e.dpDiv),D.data(t,"datepicker",e),this._setDate(e,this._getDefaultDate(e),!0),this._updateDatepicker(e),this._updateAlternate(e),e.settings.disabled&&this._disableDatepicker(t),e.dpDiv.css("display","block"))},_dialogDatepicker:function(t,e,i,s,n){var o,a,r,l,h,c=this._dialogInst;return c||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=D(""),this._dialogInput.on("keydown",this._doKeyDown),D("body").append(this._dialogInput),(c=this._dialogInst=this._newInst(this._dialogInput,!1)).settings={},D.data(this._dialogInput[0],"datepicker",c)),st(c.settings,s||{}),e=e&&e.constructor===Date?this._formatDate(c,e):e,this._dialogInput.val(e),this._pos=n?n.length?n:[n.pageX,n.pageY]:null,this._pos||(a=document.documentElement.clientWidth,r=document.documentElement.clientHeight,l=document.documentElement.scrollLeft||document.body.scrollLeft,h=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[a/2-100+l,r/2-150+h]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),c.settings.onSelect=i,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),D.blockUI&&D.blockUI(this.dpDiv),D.data(this._dialogInput[0],"datepicker",c),this},_destroyDatepicker:function(t){var e,i=D(t),s=D.data(t,"datepicker");i.hasClass(this.markerClassName)&&(e=t.nodeName.toLowerCase(),D.removeData(t,"datepicker"),"input"===e?(s.append.remove(),s.trigger.remove(),i.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):"div"!==e&&"span"!==e||i.removeClass(this.markerClassName).empty(),J===s&&(J=null))},_enableDatepicker:function(e){var t,i,s=D(e),n=D.data(e,"datepicker");s.hasClass(this.markerClassName)&&("input"===(t=e.nodeName.toLowerCase())?(e.disabled=!1,n.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):"div"!==t&&"span"!==t||((i=s.children("."+this._inlineClass)).children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=D.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var t,i,s=D(e),n=D.data(e,"datepicker");s.hasClass(this.markerClassName)&&("input"===(t=e.nodeName.toLowerCase())?(e.disabled=!0,n.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):"div"!==t&&"span"!==t||((i=s.children("."+this._inlineClass)).children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=D.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;er&&sl&&ne;)--Z<0&&(Z=11,tt--);for(t.drawMonth=Z,t.drawYear=tt,i=this._get(t,"prevText"),i=U?this.formatDate(i,this._daylightSavingAdjust(new Date(tt,Z-K,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,tt,Z)?""+i+"":q?"":""+i+"",n=this._get(t,"nextText"),n=U?this.formatDate(n,this._daylightSavingAdjust(new Date(tt,Z+K,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,tt,Z)?""+n+"":q?"":""+n+"",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?G:F,a=U?this.formatDate(a,r,this._getFormatConfig(t)):a,l=t.inline?"":"",h=B?"
      "+(j?l:"")+(this._isInRange(t,r)?"":"")+(j?"":l)+"
      ":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),v=this._get(t,"showOtherMonths"),b=this._get(t,"selectOtherMonths"),y=this._getDefaultDate(t),_="",x=0;x"+(/all|left/.test(D)&&0===x?j?o:s:"")+(/all|right/.test(D)&&0===x?j?s:o:"")+this._generateMonthYearHeader(t,Z,tt,Q,J,0",I=u?"":"",w=0;w<7;w++)I+="";for(S+=I+"",$=this._getDaysInMonth(tt,Z),tt===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,$)),P=(this._getFirstDayOfMonth(tt,Z)-c+7)%7,O=Math.ceil((P+$)/7),A=X&&this.maxRows>O?this.maxRows:O,this.maxRows=A,N=this._daylightSavingAdjust(new Date(tt,Z,1-P)),M=0;M",H=u?"":"",w=0;w<7;w++)z=m?m.apply(t.input?t.input[0]:null,[N]):[!0,""],W=(L=N.getMonth()!==Z)&&!b||!z[0]||Q&&N"+(L&&!v?" ":W?""+N.getDate()+"":""+N.getDate()+"")+"",N.setDate(N.getDate()+1),N=this._daylightSavingAdjust(N);S+=H+""}11<++Z&&(Z=0,tt++),C+=S+="
      "+this._get(t,"weekHeader")+""+p[E]+"
      "+this._get(t,"calculateWeek")(N)+"
      "+(X?"
      "+(0
      ":""):"")}_+=C}return _+=h,t._keyEvent=!1,_},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var l,h,c,u,d,p,f,g,m=this._get(t,"changeMonth"),v=this._get(t,"changeYear"),b=this._get(t,"showMonthAfterYear"),y="
      ",_="";if(o||!m)_+=""+a[e]+"";else{for(l=s&&s.getFullYear()===i,h=n&&n.getFullYear()===i,_+=""}if(b||(y+=_+(!o&&m&&v?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!v)y+=""+i+"";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),f=(p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e})(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="",y+=t.yearshtml,t.yearshtml=null}return y+=this._get(t,"yearSuffix"),b&&(y+=(!o&&m&&v?"":" ")+_),y+="
      "},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),"M"!==i&&"Y"!==i||this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&e=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||e.getFullYear()<=r)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),D.fn.datepicker=function(t){if(!this.length)return this;D.datepicker.initialized||(D(document).on("mousedown",D.datepicker._checkExternalClick),D.datepicker.initialized=!0),0===D("#"+D.datepicker._mainDivId).length&&D("body").append(D.datepicker.dpDiv);var e=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?D.datepicker["_"+t+"Datepicker"].apply(D.datepicker,[this[0]].concat(e)):this.each(function(){"string"==typeof t?D.datepicker["_"+t+"Datepicker"].apply(D.datepicker,[this].concat(e)):D.datepicker._attachDatepicker(this,t)}):D.datepicker["_"+t+"Datepicker"].apply(D.datepicker,[this[0]].concat(e))},D.datepicker=new tt,D.datepicker.initialized=!1,D.datepicker.uuid=(new Date).getTime(),D.datepicker.version="1.12.1";var nt=D.datepicker,ot=D.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),at=!1;D(document).on("mouseup",function(){at=!1});var rt=D.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(t){if(!0===D.data(t.target,e.widgetName+".preventClickEvent"))return D.removeData(t.target,e.widgetName+".preventClickEvent"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!at){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var e=this,i=1===t.which,s=!("string"!=typeof this.options.cancel||!t.target.nodeName)&&D(t.target).closest(this.options.cancel).length;return!(i&&!s&&this._mouseCapture(t))||(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?(t.preventDefault(),!0):(!0===D.data(t.target,this.widgetName+".preventClickEvent")&&D.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),at=!0))}},_mouseMove:function(t){if(this._mouseMoved){if(D.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&D.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,at=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),lt=D.ui.plugin={add:function(t,e,i){var s,n=D.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=D.ui.safeActiveElement(this.document[0]),i;D(t.target).closest(e).length||D.ui.safeBlur(e)},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),D.ui.ddmanager&&(D.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0i[2]&&(l=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(h=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((h-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,h=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((l-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,l=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(l=this.originalPageX),"x"===a.axis&&(h=this.originalPageY)),{top:h-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:l-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,i){return i=i||this._uiHash(),D.ui.plugin.call(this,t,[e,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),D.Widget.prototype._trigger.call(this,t,e,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),D.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,i){var s=D.extend({},t,{item:i.element});i.sortables=[],D(i.options.connectToSortable).each(function(){var t=D(this).sortable("instance");t&&!t.options.disabled&&(i.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,s))})},stop:function(e,t,i){var s=D.extend({},t,{item:i.element});i.cancelHelperRemoval=!1,D.each(i.sortables,function(){var t=this;t.isOver?(t.isOver=0,i.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,s))})},drag:function(i,s,n){D.each(n.sortables,function(){var t=!1,e=this;e.positionAbs=n.positionAbs,e.helperProportions=n.helperProportions,e.offset.click=n.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,D.each(n.sortables,function(){return this.positionAbs=n.positionAbs,this.helperProportions=n.helperProportions,this.offset.click=n.offset.click,this!==e&&this._intersectsWith(this.containerCache)&&D.contains(e.element[0],this.element[0])&&(t=!1),t})),t?(e.isOver||(e.isOver=1,n._parent=s.helper.parent(),e.currentItem=s.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return s.helper[0]},i.target=e.currentItem[0],e._mouseCapture(i,!0),e._mouseStart(i,!0,!0),e.offset.click.top=n.offset.click.top,e.offset.click.left=n.offset.click.left,e.offset.parent.left-=n.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=n.offset.parent.top-e.offset.parent.top,n._trigger("toSortable",i),n.dropped=e.element,D.each(n.sortables,function(){this.refreshPositions()}),n.currentItem=n.element,e.fromOutside=n),e.currentItem&&(e._mouseDrag(i),s.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",i,e._uiHash(e)),e._mouseStop(i,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),s.helper.appendTo(n._parent),n._refreshOffsets(i),s.position=n._generatePosition(i,!0),n._trigger("fromSortable",i),n.dropped=!1,D.each(n.sortables,function(){this.refreshPositions()}))})}}),D.ui.plugin.add("draggable","cursor",{start:function(t,e,i){var s=D("body"),n=i.options;s.css("cursor")&&(n._cursor=s.css("cursor")),s.css("cursor",n.cursor)},stop:function(t,e,i){var s=i.options;s._cursor&&D("body").css("cursor",s._cursor)}}),D.ui.plugin.add("draggable","opacity",{start:function(t,e,i){var s=D(e.helper),n=i.options;s.css("opacity")&&(n._opacity=s.css("opacity")),s.css("opacity",n.opacity)},stop:function(t,e,i){var s=i.options;s._opacity&&D(e.helper).css("opacity",s._opacity)}}),D.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,e,i){var s=i.options,n=!1,o=i.scrollParentNotHidden[0],a=i.document[0];o!==a&&"HTML"!==o.tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+o.offsetHeight-t.pageY
      ").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&D(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,e=function(t){D(t).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(e(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),e(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles()}},_setupHandles:function(){var t=this.options,e,i,s,n,o,a=this;if(this.handles=t.handles||(D(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=D(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;i"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:t.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(t){var e,i,s,n;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=D(this.handles[e]),this._on(this.handles[e],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=D(this.handles[e],this.element),n=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),s=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(s,n),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){a.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=o&&o[1]?o[1]:"se")}),t.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)((i=D(this.handles[e])[0])===t.target||D.contains(i,t.target))&&(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s,n=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),n.containment&&(e+=D(n.containment).scrollLeft()||0,i+=D(n.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof n.aspectRatio?n.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=D(".ui-resizable-"+this.axis).css("cursor"),D("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e,i,s=this.originalMousePosition,n=this.axis,o=t.pageX-s.left||0,a=t.pageY-s.top||0,r=this._change[n];return this._updatePrevProperties(),r&&(e=r.apply(this,[t,o,a]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),i=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),D.isEmptyObject(i)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n,o,a,r,l=this.options,h=this;return this._helper&&(s=(i=(e=this._proportionallyResizeElements).length&&/textarea/i.test(e[0].nodeName))&&this._hasScroll(e[0],"left")?0:h.sizeDiff.height,n=i?0:h.sizeDiff.width,o={width:h.helper.width()-n,height:h.helper.height()-s},a=parseFloat(h.element.css("left"))+(h.position.left-h.originalPosition.left)||null,r=parseFloat(h.element.css("top"))+(h.position.top-h.originalPosition.top)||null,l.animate||this.element.css(D.extend(o,{top:r,left:a})),h.helper.height(h.size.height),h.helper.width(h.size.width),this._helper&&!l.animate&&this._proportionallyResize()),D("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),it.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,h=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&h&&(t.left=r-e.minWidth),s&&h&&(t.left=r-e.maxWidth),a&&c&&(t.top=l-e.minHeight),n&&c&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e
      "),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return D.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return D.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return D.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return D.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){D.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),D.ui.plugin.add("resizable","animate",{stop:function(e){var i=D(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,a=n?0:i.sizeDiff.width,r={width:i.size.width-a,height:i.size.height-o},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,h=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(D.extend(r,h&&l?{top:h,left:l}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&D(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),D.ui.plugin.add("resizable","containment",{start:function(){var i,s,t,e,n,o,a,r=D(this).resizable("instance"),l=r.options,h=r.element,c=l.containment,u=c instanceof D?c.get(0):/parent/.test(c)?h.parent().get(0):c;u&&(r.containerElement=D(u),/document/.test(c)||c===document?(r.containerOffset={left:0,top:0},r.containerPosition={left:0,top:0},r.parentData={element:D(document),left:0,top:0,width:D(document).width(),height:D(document).height()||document.body.parentNode.scrollHeight}):(i=D(u),s=[],D(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=r._num(i.css("padding"+e))}),r.containerOffset=i.offset(),r.containerPosition=i.position(),r.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=r.containerOffset,e=r.containerSize.height,n=r.containerSize.width,o=r._hasScroll(u,"left")?u.scrollWidth:n,a=r._hasScroll(u)?u.scrollHeight:e,r.parentData={element:u,left:t.left,top:t.top,width:o,height:a}))},resize:function(t){var e,i,s,n,o=D(this).resizable("instance"),a=o.options,r=o.containerOffset,l=o.position,h=o._aspectRatio||t.shiftKey,c={top:0,left:0},u=o.containerElement,d=!0;u[0]!==document&&/static/.test(u.css("position"))&&(c=r),l.left<(o._helper?r.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-r.left:o.position.left-c.left),h&&(o.size.height=o.size.width/o.aspectRatio,d=!1),o.position.left=a.helper?r.left:0),l.top<(o._helper?r.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-r.top:o.position.top),h&&(o.size.width=o.size.height*o.aspectRatio,d=!1),o.position.top=o._helper?r.top:0),s=o.containerElement.get(0)===o.element.parent().get(0),n=/relative|absolute/.test(o.containerElement.css("position")),o.offset.top=s&&n?(o.offset.left=o.parentData.left+o.position.left,o.parentData.top+o.position.top):(o.offset.left=o.element.offset().left,o.element.offset().top),e=Math.abs(o.sizeDiff.width+(o._helper?o.offset.left-c.left:o.offset.left-r.left)),i=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-c.top:o.offset.top-r.top)),e+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-e,h&&(o.size.height=o.size.width/o.aspectRatio,d=!1)),i+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-i,h&&(o.size.width=o.size.height*o.aspectRatio,d=!1)),d||(o.position.left=o.prevPosition.left,o.position.top=o.prevPosition.top,o.size.width=o.prevSize.width,o.size.height=o.prevSize.height)},stop:function(){var t=D(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=D(t.helper),a=o.offset(),r=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&D(this).css({left:a.left-s.left-i.left,width:r,height:l}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&D(this).css({left:a.left-s.left-i.left,width:r,height:l})}}),D.ui.plugin.add("resizable","alsoResize",{start:function(){var t,e=D(this).resizable("instance").options;D(e.alsoResize).each(function(){var t=D(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=D(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,a={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};D(s.alsoResize).each(function(){var t=D(this),s=D(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];D.each(e,function(t,e){var i=(s[e]||0)+(a[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){D(this).removeData("ui-resizable-alsoresize")}}),D.ui.plugin.add("resizable","ghost",{start:function(){var t=D(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==D.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=D(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=D(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),D.ui.plugin.add("resizable","grid",{resize:function(){var t,e=D(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,l=r[0]||1,h=r[1]||1,c=Math.round((s.width-n.width)/l)*l,u=Math.round((s.height-n.height)/h)*h,d=n.width+c,p=n.height+u,f=i.maxWidth&&i.maxWidthd,v=i.minHeight&&i.minHeight>p;i.grid=r,m&&(d+=l),v&&(p+=h),f&&(d-=l),g&&(p-=h),/^(se|s|e)$/.test(a)?(e.size.width=d,e.size.height=p):/^(ne)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.top=o.top-u):/^(sw)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.left=o.left-c):((p-h<=0||d-l<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),e.position.top=0=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",n+1),i=!0),i&&!e&&this._trigger("focus",t),i},open:function(){var t=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=D(D.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_keepFocus:function(t){function e(){var t=D.ui.safeActiveElement(this.document[0]),e;this.uiDialog[0]===t||D.contains(this.uiDialog[0],t)||this._focusTabbable()}t.preventDefault(),e.call(this),this._delay(e)},_createWrapper:function(){this.uiDialog=D("
      ").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===D.ui.keyCode.ESCAPE)return t.preventDefault(),void this.close(t);if(t.keyCode===D.ui.keyCode.TAB&&!t.isDefaultPrevented()){var e=this.uiDialog.find(":tabbable"),i=e.filter(":first"),s=e.filter(":last");t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){s.trigger("focus")}),t.preventDefault()):(this._delay(function(){i.trigger("focus")}),t.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=D("
      "),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(t){D(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=D("").button({label:D("").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),t=D("").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(t,"ui-dialog-title"),this._title(t),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=D("
      "),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=D("
      ").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var n=this,t=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),D.isEmptyObject(t)||D.isArray(t)&&!t.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(D.each(t,function(t,e){var i,s;e=D.isFunction(e)?{click:e,text:t}:e,e=D.extend({type:"button"},e),i=e.click,s={icon:e.icon,iconPosition:e.iconPosition,showLabel:e.showLabel,icons:e.icons,text:e.text},delete e.click,delete e.icon,delete e.iconPosition,delete e.showLabel,delete e.icons,"boolean"==typeof e.text&&delete e.text,D("",e).button(s).appendTo(n.uiButtonSet).on("click",function(){i.apply(n.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var n=this,o=this.options;function a(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(t,e){n._addClass(D(this),"ui-dialog-dragging"),n._blockFrames(),n._trigger("dragStart",t,a(e))},drag:function(t,e){n._trigger("drag",t,a(e))},stop:function(t,e){var i=e.offset.left-n.document.scrollLeft(),s=e.offset.top-n.document.scrollTop();o.position={my:"left top",at:"left"+(0<=i?"+":"")+i+" top"+(0<=s?"+":"")+s,of:n.window},n._removeClass(D(this),"ui-dialog-dragging"),n._unblockFrames(),n._trigger("dragStop",t,a(e))}})},_makeResizable:function(){var o=this,a=this.options,t=a.resizable,e=this.uiDialog.css("position"),i="string"==typeof t?t:"n,e,s,w,se,sw,ne,nw";function r(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:a.maxWidth,maxHeight:a.maxHeight,minWidth:a.minWidth,minHeight:this._minHeight(),handles:i,start:function(t,e){o._addClass(D(this),"ui-dialog-resizing"),o._blockFrames(),o._trigger("resizeStart",t,r(e))},resize:function(t,e){o._trigger("resize",t,r(e))},stop:function(t,e){var i=o.uiDialog.offset(),s=i.left-o.document.scrollLeft(),n=i.top-o.document.scrollTop();a.height=o.uiDialog.height(),a.width=o.uiDialog.width(),a.position={my:"left top",at:"left"+(0<=s?"+":"")+s+" top"+(0<=n?"+":"")+n,of:o.window},o._removeClass(D(this),"ui-dialog-resizing"),o._unblockFrames(),o._trigger("resizeStop",t,r(e))}}).css("position",e)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=D(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),e=D.inArray(this,t);-1!==e&&t.splice(e,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};D.each(t,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(t,e){var i,s,n=this.uiDialog;"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:D("").text(""+this.options.closeText).html()}),"draggable"===t&&((i=n.is(":data(ui-draggable)"))&&!e&&n.draggable("destroy"),!i&&e&&this._makeDraggable()),"position"===t&&this._position(),"resizable"===t&&((s=n.is(":data(ui-resizable)"))&&!e&&n.resizable("destroy"),s&&"string"==typeof e&&n.resizable("option","handles",e),s||!1===e||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=D(this);return D("
      ").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return!!D(t.target).closest(".ui-dialog").length||!!D(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=D("
      ").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data( +"ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),!1!==D.uiBackCompat&&D.widget("ui.dialog",D.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}});var dt=D.ui.dialog;D.widget("ui.droppable",{version:"1.12.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,e=this.options,i=e.accept;this.isover=!1,this.isout=!0,this.accept=D.isFunction(i)?i:function(t){return t.is(i)},this.proportions=function(){if(!arguments.length)return t||(t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight});t=arguments[0]},this._addToManager(e.scope),e.addClasses&&this._addClass("ui-droppable")},_addToManager:function(t){D.ui.ddmanager.droppables[t]=D.ui.ddmanager.droppables[t]||[],D.ui.ddmanager.droppables[t].push(this)},_splice:function(t){for(var e=0;e").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,e=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).width(e.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,t===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=D("
      ").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),mt=D.widget("ui.selectable",D.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var s=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){s.elementPos=D(s.element[0]).offset(),s.selectees=D(s.options.filter,s.element[0]),s._addClass(s.selectees,"ui-selectee"),s.selectees.each(function(){var t=D(this),e=t.offset(),i={left:e.left-s.elementPos.left,top:e.top-s.elementPos.top};D.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=D("
      "),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(i){var s=this,t=this.options;this.opos=[i.pageX,i.pageY],this.elementPos=D(this.element[0]).offset(),this.options.disabled||(this.selectees=D(t.filter,this.element[0]),this._trigger("start",i),D(t.appendTo).append(this.helper),this.helper.css({left:i.pageX,top:i.pageY,width:0,height:0}),t.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var t=D.data(this,"selectable-item");t.startselected=!0,i.metaKey||i.ctrlKey||(s._removeClass(t.$element,"ui-selected"),t.selected=!1,s._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,s._trigger("unselecting",i,{unselecting:t.element}))}),D(i.target).parents().addBack().each(function(){var t,e=D.data(this,"selectable-item");if(e)return t=!i.metaKey&&!i.ctrlKey||!e.$element.hasClass("ui-selected"),s._removeClass(e.$element,t?"ui-unselecting":"ui-selected")._addClass(e.$element,t?"ui-selecting":"ui-unselecting"),e.unselecting=!t,e.selecting=t,(e.selected=t)?s._trigger("selecting",i,{selecting:e.element}):s._trigger("unselecting",i,{unselecting:e.element}),!1}))},_mouseDrag:function(s){if(this.dragged=!0,!this.options.disabled){var t,n=this,o=this.options,a=this.opos[0],r=this.opos[1],l=s.pageX,h=s.pageY;return ll||i.righth||i.bottoma&&i.rightr&&i.bottom",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr("id");this.ids={element:t,button:t+"-button",menu:t+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=D()},_drawButton:function(){var t,e=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.focus(),t.preventDefault()}}),this.element.hide(),this.button=D("",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),t=D("").appendTo(this.button),this._addClass(t,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){e._rendered||e._refreshMenu()})},_drawMenu:function(){var s=this;this.menu=D("
      ")),o=!1,_.$element.trigger("maxReached.bs.select")),u&&p&&(y.append(E("
      "+b+"
      ")),o=!1,_.$element.trigger("maxReachedGrp.bs.select")),setTimeout(function(){_.setSelected(i,!1)},10),y.delay(750).fadeOut(300,function(){E(this).remove()})}}}else a.prop("selected",!1),r.prop("selected",!0),_.$menuInner.find(".selected").removeClass("selected").find("a").attr("aria-selected",!1),_.setSelected(i,!0);!_.multiple||_.multiple&&1===_.options.maxOptions?_.$button.focus():_.options.liveSearch&&_.$searchbox.focus(),o&&(s!=_.$element.val()&&_.multiple||n!=_.$element.prop("selectedIndex")&&!_.multiple)&&(w=[i,r.prop("selected"),l],_.$element.triggerNative("change"))}}),this.$menu.on("click","li.disabled a, .popover-title, .popover-title :not(.close)",function(t){t.currentTarget==this&&(t.preventDefault(),t.stopPropagation(),_.options.liveSearch&&!E(t.target).hasClass("close")?_.$searchbox.focus():_.$button.focus())}),this.$menuInner.on("click",".divider, .dropdown-header",function(t){t.preventDefault(),t.stopPropagation(),_.options.liveSearch?_.$searchbox.focus():_.$button.focus()}),this.$menu.on("click",".popover-title .close",function(){_.$button.click()}),this.$searchbox.on("click",function(t){t.stopPropagation()}),this.$menu.on("click",".actions-btn",function(t){_.options.liveSearch?_.$searchbox.focus():_.$button.focus(),t.preventDefault(),t.stopPropagation(),E(this).hasClass("bs-select-all")?_.selectAll():_.deselectAll()}),this.$element.change(function(){_.render(!1),_.$element.trigger("changed.bs.select",w),w=null})},liveSearchListener:function(){var n=this,o=E('
    • ');this.$button.on("click.dropdown.data-api",function(){n.$menuInner.find(".active").removeClass("active"),n.$searchbox.val()&&(n.$searchbox.val(""),n.$lis.not(".is-hidden").removeClass("hidden"),o.parent().length&&o.remove()),n.multiple||n.$menuInner.find(".selected").addClass("active"),setTimeout(function(){n.$searchbox.focus()},10)}),this.$searchbox.on("click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api",function(t){t.stopPropagation()}),this.$searchbox.on("input propertychange",function(){if(n.$lis.not(".is-hidden").removeClass("hidden"),n.$lis.filter(".active").removeClass("active"),o.remove(),n.$searchbox.val()){var t=n.$lis.not(".is-hidden, .divider, .dropdown-header"),e;if((e=n.options.liveSearchNormalize?t.not(":a"+n._searchStyle()+'("'+y(n.$searchbox.val())+'")'):t.not(":"+n._searchStyle()+'("'+n.$searchbox.val()+'")')).length===t.length)o.html(n.options.noneResultsText.replace("{0}",'"'+$(n.$searchbox.val())+'"')),n.$menuInner.append(o),n.$lis.addClass("hidden");else{e.addClass("hidden");var i=n.$lis.not(".hidden"),s;i.each(function(t){var e=E(this);e.hasClass("divider")?void 0===s?e.addClass("hidden"):(s&&s.addClass("hidden"),s=e):e.hasClass("dropdown-header")&&i.eq(t+1).data("optgroup")!==e.data("optgroup")?e.addClass("hidden"):s=null}),s&&s.addClass("hidden"),t.not(".hidden").first().addClass("active")}}})},_searchStyle:function(){var t;return{begins:"ibegins",startsWith:"ibegins"}[this.options.liveSearchStyle]||"icontains"},val:function(t){return void 0!==t?(this.$element.val(t),this.render(),this.$element):this.$element.val()},changeAll:function(t){if(this.multiple){void 0===t&&(t=!0),this.findLis();var e=this.$element.find("option"),i=this.$lis.not(".divider, .dropdown-header, .disabled, .hidden"),s=i.length,n=[];if(t){if(i.filter(".selected").length===i.length)return}else if(0===i.filter(".selected").length)return;i.toggleClass("selected",t);for(var o=0;o=g.length&&(E(document).data("keycount",0),m>g.length&&(m=1)),s.eq(g[m-1]).children("a").focus()}if((/(13|32)/.test(t.keyCode.toString(10))||/(^9$)/.test(t.keyCode.toString(10))&&n.options.selectOnTab)&&d){if(/(32)/.test(t.keyCode.toString(10))||t.preventDefault(),n.options.liveSearch)/(32)/.test(t.keyCode.toString(10))||(n.$menuInner.find(".active a").click(),e.focus());else{var b=E(":focus");b.click(),b.focus(),t.preventDefault(),E(document).data("spaceSelect",!0)}E(document).data("keycount",0)}(/(^9$|27)/.test(t.keyCode.toString(10))&&d&&(n.multiple||n.options.liveSearch)||/(27)/.test(t.keyCode.toString(10))&&!d)&&(n.$menu.parent().removeClass("open"),n.options.container&&n.$newElement.removeClass("open"),n.$button.focus())}},mobile:function(){this.$element.addClass("mobile-device")},refresh:function(){this.$lis=null,this.liObj={},this.reloadLi(),this.render(),this.checkDisabled(),this.liHeight(!0),this.setStyle(),this.setWidth(),this.$lis&&this.$searchbox.trigger("propertychange"),this.$element.trigger("refreshed.bs.select")},hide:function(){this.$newElement.hide()},show:function(){this.$newElement.show()},remove:function(){this.$newElement.remove(),this.$element.remove()},destroy:function(){this.$newElement.before(this.$element).remove(),this.$bsContainer?this.$bsContainer.remove():this.$menu.remove(),this.$element.off(".bs.select").removeData("selectpicker").removeClass("bs-select-hidden selectpicker")}};var f=E.fn.selectpicker;E.fn.selectpicker=p,E.fn.selectpicker.Constructor=d,E.fn.selectpicker.noConflict=function(){return E.fn.selectpicker=f,this},E(document).data("keycount",0).on("keydown.bs.select",'.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="listbox"], .bs-searchbox input',d.prototype.keydown).on("focusin.modal",'.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="listbox"], .bs-searchbox input',function(t){t.stopPropagation()}),E(window).on("load.bs.select.data-api",function(){E(".selectpicker").each(function(){var t=E(this);p.call(t,t.data())})})}(t)}),function(l){"use strict";function h(t){return t.is('[type="checkbox"]')?t.prop("checked"):t.is('[type="radio"]')?!!l('[name="'+t.attr("name")+'"]:checked').length:t.is("select[multiple]")?(t.val()||[]).length:t.val()}var n=function(t,e){this.options=e,this.validators=l.extend({},n.VALIDATORS,e.custom),this.$element=l(t),this.$btn=l('button[type="submit"], input[type="submit"]').filter('[form="'+this.$element.attr("id")+'"]').add(this.$element.find('input[type="submit"], button[type="submit"]')),this.update(),this.$element.on("input.bs.validator change.bs.validator focusout.bs.validator",l.proxy(this.onInput,this)),this.$element.on("submit.bs.validator",l.proxy(this.onSubmit,this)),this.$element.on("reset.bs.validator",l.proxy(this.reset,this)),this.$element.find("[data-match]").each(function(){var e=l(this),t=e.attr("data-match");l(t).on("input.bs.validator",function(t){h(e)&&e.trigger("input.bs.validator")})}),this.$inputs.filter(function(){return h(l(this))&&!l(this).closest(".has-error").length}).trigger("focusout"),this.$element.attr("novalidate",!0)};function e(s){return this.each(function(){var t=l(this),e=l.extend({},n.DEFAULTS,t.data(),"object"==typeof s&&s),i=t.data("bs.validator");(i||"destroy"!=s)&&(i||t.data("bs.validator",i=new n(this,e)),"string"==typeof s&&i[s]())})}n.VERSION="0.11.9",n.INPUT_SELECTOR=':input:not([type="hidden"], [type="submit"], [type="reset"], button)',n.FOCUS_OFFSET=20+l(".fixedheader").height(),n.DEFAULTS={delay:500,html:!1,disable:!0,focus:!0,custom:{},errors:{match:"Does not match",minlength:"Not long enough"},feedback:{success:"glyphicon-ok",error:"glyphicon-remove"}},n.VALIDATORS={native:function(t){var e=t[0];if(e.checkValidity)return!e.checkValidity()&&!e.validity.valid&&(e.validationMessage||"error!")},match:function(t){var e=t.attr("data-match");return t.val()!==l(e).val()&&n.DEFAULTS.errors.match},minlength:function(t){var e=t.attr("data-minlength");return t.val().length").addClass("list-unstyled").append(l.map(i,function(t){return l("
    • ")[e](t)})),void 0===n.data("bs.validator.originalContent")&&n.data("bs.validator.originalContent",n.html()),n.empty().append(i),s.addClass("has-error has-danger"),s.hasClass("has-feedback")&&o.removeClass(this.options.feedback.success)&&o.addClass(this.options.feedback.error)&&s.removeClass("has-success"))},n.prototype.clearErrors=function(t){var e=t.closest(".form-group"),i=e.find(".help-block.with-errors"),s=e.find(".form-control-feedback");i.html(i.data("bs.validator.originalContent")),e.removeClass("has-error has-danger has-success"),e.hasClass("has-feedback")&&s.removeClass(this.options.feedback.error)&&s.removeClass(this.options.feedback.success)&&h(t)&&s.addClass(this.options.feedback.success)&&e.addClass("has-success")},n.prototype.hasErrors=function(){function t(){return!!(l(this).data("bs.validator.errors")||[]).length}return!!this.$inputs.filter(t).length},n.prototype.isIncomplete=function(){function t(){var t=h(l(this));return!("string"==typeof t?l.trim(t):t)}return!!this.$inputs.filter("[required]").filter(t).length},n.prototype.onSubmit=function(t){this.validate(),(this.isIncomplete()||this.hasErrors())&&t.preventDefault()},n.prototype.toggleSubmit=function(){this.options.disable&&this.$btn.toggleClass("disabled",this.isIncomplete()||this.hasErrors())},n.prototype.defer=function(t,e){if(e=l.proxy(e,this,t),!this.options.delay)return e();window.clearTimeout(t.data("bs.validator.timeout")),t.data("bs.validator.timeout",window.setTimeout(e,this.options.delay))},n.prototype.reset=function(){return this.$element.find(".form-control-feedback").removeClass(this.options.feedback.error).removeClass(this.options.feedback.success),this.$inputs.removeData(["bs.validator.errors","bs.validator.deferred"]).each(function(){var t=l(this),e=t.data("bs.validator.timeout");window.clearTimeout(e)&&t.removeData("bs.validator.timeout")}),this.$element.find(".help-block.with-errors").each(function(){var t=l(this),e=t.data("bs.validator.originalContent");t.removeData("bs.validator.originalContent").html(e)}),this.$btn.removeClass("disabled"),this.$element.find(".has-error, .has-danger, .has-success").removeClass("has-error has-danger has-success"),this},n.prototype.destroy=function(){return this.reset(),this.$element.removeAttr("novalidate").removeData("bs.validator").off(".bs.validator"),this.$inputs.off(".bs.validator"),this.options=null,this.validators=null,this.$element=null,this.$btn=null,this.$inputs=null,this};var t=l.fn.validator;l.fn.validator=e,l.fn.validator.Constructor=n,l.fn.validator.noConflict=function(){return l.fn.validator=t,this},l(window).on("load",function(){l('form[data-toggle="validator"]').each(function(){var t=l(this);e.call(t,t.data())})})}(jQuery),function(b){if(!b.hasInitialised){var y={escapeRegExp:function(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},hasClass:function(t,e){var i=" ";return 1===t.nodeType&&0<=(" "+t.className+" ").replace(/[\n\t]/g," ").indexOf(" "+e+" ")},addClass:function(t,e){t.className+=" "+e},removeClass:function(t,e){var i=new RegExp("\\b"+this.escapeRegExp(e)+"\\b");t.className=t.className.replace(i,"")},interpolateString:function(t,e){var i=/{{([a-z][a-z0-9\-_]*)}}/gi;return t.replace(i,function(t){return e(arguments[1])||""})},getCookie:function(t){var e,i=("; "+document.cookie).split("; "+t+"=");return 2!=i.length?void 0:i.pop().split(";").shift()},setCookie:function(t,e,i,s,n){var o=new Date;o.setDate(o.getDate()+(i||365));var a=[t+"="+e,"expires="+o.toUTCString(),"path="+(n||"/")];s&&a.push("domain="+s),document.cookie=a.join(";")},deepExtend:function(t,e){for(var i in e)e.hasOwnProperty(i)&&(i in t&&this.isPlainObject(t[i])&&this.isPlainObject(e[i])?this.deepExtend(t[i],e[i]):t[i]=e[i]);return t},throttle:function(t,e){var i=!1;return function(){i||(t.apply(this,arguments),i=!0,setTimeout(function(){i=!1},e))}},hash:function(t){var e,i,s,n=0;if(0===t.length)return n;for(e=0,s=t.length;e>16),n=38+(e>>8&255),o=38+(255&e),a;return"#"+(16777216+65536*(s<255?s<1?0:s:255)+256*(n<255?n<1?0:n:255)+(o<255?o<1?0:o:255)).toString(16).slice(1)},isMobile:function(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)},isPlainObject:function(t){return"object"==typeof t&&null!==t&&t.constructor==Object}};b.status={deny:"deny",allow:"allow",dismiss:"dismiss"},b.transitionEnd=function(){var t=document.createElement("div"),e={t:"transitionend",OT:"oTransitionEnd",msT:"MSTransitionEnd",MozT:"transitionend",WebkitT:"webkitTransitionEnd"};for(var i in e)if(e.hasOwnProperty(i)&&void 0!==t.style[i+"ransition"])return e[i];return""}(),b.hasTransition=!!b.transitionEnd;var _=Object.keys(b.status).map(y.escapeRegExp);b.customStyles={},b.Popup=function(){function t(){this.initialise.apply(this,arguments)}function s(t){this.openingTimeout=null,y.removeClass(t,"cc-invisible")}function n(t){t.style.display="none",t.removeEventListener(b.transitionEnd,this.afterTransition),this.afterTransition=null}function o(){var t=this.options.onInitialise.bind(this);if(!window.navigator.cookieEnabled)return t(b.status.deny),!0;if(window.CookiesOK||window.navigator.CookiesOK)return t(b.status.allow),!0;var e=Object.keys(b.status),i=this.getStatus(),s=0<=e.indexOf(i);return s&&t(i),s}function a(){var t=this.options.position.split("-"),e=[];return t.forEach(function(t){e.push("cc-"+t)}),e}function r(){var t=this.options,e="top"==t.position||"bottom"==t.position?"banner":"floating";y.isMobile()&&(e="floating");var i=["cc-"+e,"cc-type-"+t.type,"cc-theme-"+t.theme];return t.static&&i.push("cc-static"),i.push.apply(i,a.call(this)),u.call(this,this.options.palette),this.customStyleSelector&&i.push(this.customStyleSelector),i}function l(){var e={},i=this.options;i.showLink||(i.elements.link="",i.elements.messagelink=i.elements.message),Object.keys(i.elements).forEach(function(t){e[t]=y.interpolateString(i.elements[t],function(t){var e=i.content[t];return t&&"string"==typeof e&&e.length?e:""})});var t=i.compliance[i.type];t||(t=i.compliance.info),e.compliance=y.interpolateString(t,function(t){return e[t]});var s=i.layouts[i.layout];return s||(s=i.layouts.basic),y.interpolateString(s,function(t){return e[t]})}function h(t){var e=this.options,i=document.createElement("div"),s=e.container&&1===e.container.nodeType?e.container:document.body;i.innerHTML=t;var n=i.children[0];return n.style.display="none",y.hasClass(n,"cc-window")&&b.hasTransition&&y.addClass(n,"cc-invisible"),this.onButtonClick=c.bind(this),n.addEventListener("click",this.onButtonClick),e.autoAttach&&(s.firstChild?s.insertBefore(n,s.firstChild):s.appendChild(n)),n}function c(t){var e=t.target;if(y.hasClass(e,"cc-btn")){var i=e.className.match(new RegExp("\\bcc-("+_.join("|")+")\\b")),s=i&&i[1]||!1;s&&(this.setStatus(s),this.close(!0))}y.hasClass(e,"cc-close")&&(this.setStatus(b.status.dismiss),this.close(!0)),y.hasClass(e,"cc-revoke")&&this.revokeChoice()}function u(t){var e=y.hash(JSON.stringify(t)),i="cc-color-override-"+e,s=y.isPlainObject(t);return this.customStyleSelector=s?i:null,s&&d(e,t,"."+i),s}function d(t,e,i){if(b.customStyles[t])++b.customStyles[t].references;else{var s={},n=e.popup,o=e.button,a=e.highlight;n&&(n.text=n.text?n.text:y.getContrast(n.background),n.link=n.link?n.link:n.text,s[i+".cc-window"]=["color: "+n.text,"background-color: "+n.background],s[i+".cc-revoke"]=["color: "+n.text,"background-color: "+n.background],s[i+" .cc-link,"+i+" .cc-link:active,"+i+" .cc-link:visited"]=["color: "+n.link],o&&(o.text=o.text?o.text:y.getContrast(o.background),o.border=o.border?o.border:"transparent",s[i+" .cc-btn"]=["color: "+o.text,"border-color: "+o.border,"background-color: "+o.background],"transparent"!=o.background&&(s[i+" .cc-btn:hover, "+i+" .cc-btn:focus"]=["background-color: "+p(o.background)]),s[i+" .cc-highlight .cc-btn:first-child"]=a?(a.text=a.text?a.text:y.getContrast(a.background),a.border=a.border?a.border:"transparent",["color: "+a.text,"border-color: "+a.border,"background-color: "+a.background]):["color: "+n.text]));var r=document.createElement("style");document.head.appendChild(r),b.customStyles[t]={references:1,element:r.sheet};var l=-1;for(var h in s)s.hasOwnProperty(h)&&r.sheet.insertRule(h+"{"+s[h].join(";")+"}",++l)}}function p(t){return"000000"==(t=y.normaliseHex(t))?"#222":y.getLuminance(t)}function e(t){if(y.isPlainObject(t)){var e=y.hash(JSON.stringify(t)),i=b.customStyles[e];if(i&&!--i.references){var s=i.element.ownerNode;s&&s.parentNode&&s.parentNode.removeChild(s),b.customStyles[e]=null}}}function f(t,e){for(var i=0,s=t.length;iMath.floor(i)&&(e(b.status.dismiss),window.removeEventListener("scroll",s),this.onWindowScroll=null)};this.onWindowScroll=s,window.addEventListener("scroll",s)}}function m(){if("info"!=this.options.type&&(this.options.revokable=!0),y.isMobile()&&(this.options.animateRevokable=!1),this.options.revokable){var t=a.call(this);this.options.animateRevokable&&t.push("cc-animate"),this.customStyleSelector&&t.push(this.customStyleSelector);var e=this.options.revokeBtn.replace("{{classes}}",t.join(" "));this.revokeBtn=h.call(this,e);var n=this.revokeBtn;if(this.options.animateRevokable){var i=y.throttle(function(t){var e=!1,i=20,s=window.innerHeight-20;y.hasClass(n,"cc-top")&&t.clientY<20&&(e=!0),y.hasClass(n,"cc-bottom")&&t.clientY>s&&(e=!0),e?y.hasClass(n,"cc-active")||y.addClass(n,"cc-active"):y.hasClass(n,"cc-active")&&y.removeClass(n,"cc-active")},200);this.onMouseMove=i,window.addEventListener("mousemove",i)}}}var v={enabled:!0,container:null,cookie:{name:"cookieconsent_status",path:"/",domain:"",expiryDays:365},onPopupOpen:function(){},onPopupClose:function(){},onInitialise:function(t){},onStatusChange:function(t,e){},onRevokeChoice:function(){},content:{header:"Cookies used on the website!",message:"This website uses cookies to ensure you get the best experience on our website.",dismiss:"Got it!",allow:"Allow cookies",deny:"Decline",link:"Learn more",href:"http://cookiesandyou.com",close:"❌"},elements:{header:'{{header}} ',message:'{{message}}',messagelink:'{{message}} {{link}}',dismiss:'{{dismiss}}',allow:'{{allow}}',deny:'{{deny}}',link:'{{link}}',close:'{{close}}'},window:'',revokeBtn:'
      Cookie Policy
      ',compliance:{info:'
      {{dismiss}}
      ',"opt-in":'
      {{dismiss}}{{allow}}
      ',"opt-out":'
      {{deny}}{{dismiss}}
      '},type:"info",layouts:{basic:"{{messagelink}}{{compliance}}","basic-close":"{{messagelink}}{{compliance}}{{close}}","basic-header":"{{header}}{{message}}{{link}}{{compliance}}"},layout:"basic",position:"bottom",theme:"block",static:!1,palette:null,revokable:!1,animateRevokable:!0,showLink:!0,dismissOnScroll:!1,dismissOnTimeout:!1,autoOpen:!0,autoAttach:!0,whitelistPage:[],blacklistPage:[],overrideHTML:null};return t.prototype.initialise=function(t){this.options&&this.destroy(),y.deepExtend(this.options={},v),y.isPlainObject(t)&&y.deepExtend(this.options,t),o.call(this)&&(this.options.enabled=!1),f(this.options.blacklistPage,location.pathname)&&(this.options.enabled=!1),f(this.options.whitelistPage,location.pathname)&&(this.options.enabled=!0);var e=this.options.window.replace("{{classes}}",r.call(this).join(" ")).replace("{{children}}",l.call(this)),i=this.options.overrideHTML;if("string"==typeof i&&i.length&&(e=i),this.options.static){var s=h.call(this,'
      '+e+"
      ");s.style.display="",this.element=s.firstChild,this.element.style.display="none",y.addClass(this.element,"cc-invisible")}else this.element=h.call(this,e);g.call(this),m.call(this),this.options.autoOpen&&this.autoOpen()},t.prototype.destroy=function(){this.onButtonClick&&this.element&&(this.element.removeEventListener("click",this.onButtonClick),this.onButtonClick=null),this.dismissTimeout&&(clearTimeout(this.dismissTimeout),this.dismissTimeout=null),this.onWindowScroll&&(window.removeEventListener("scroll",this.onWindowScroll),this.onWindowScroll=null),this.onMouseMove&&(window.removeEventListener("mousemove",this.onMouseMove),this.onMouseMove=null),this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.element=null,this.revokeBtn&&this.revokeBtn.parentNode&&this.revokeBtn.parentNode.removeChild(this.revokeBtn),this.revokeBtn=null,e(this.options.palette),this.options=null},t.prototype.open=function(t){if(this.element)return this.isOpen()||(b.hasTransition?this.fadeIn():this.element.style.display="",this.options.revokable&&this.toggleRevokeButton(),this.options.onPopupOpen.call(this)),this},t.prototype.close=function(t){if(this.element)return this.isOpen()&&(b.hasTransition?this.fadeOut():this.element.style.display="none",t&&this.options.revokable&&this.toggleRevokeButton(!0),this.options.onPopupClose.call(this)),this},t.prototype.fadeIn=function(){var t=this.element;if(b.hasTransition&&t&&(this.afterTransition&&n.call(this,t),y.hasClass(t,"cc-invisible"))){if(t.style.display="",this.options.static){var e=this.element.clientHeight;this.element.parentNode.style.maxHeight=e+"px"}var i=20;this.openingTimeout=setTimeout(s.bind(this,t),20)}},t.prototype.fadeOut=function(){var t=this.element;b.hasTransition&&t&&(this.openingTimeout&&(clearTimeout(this.openingTimeout),s.bind(this,t)),y.hasClass(t,"cc-invisible")||(this.options.static&&(this.element.parentNode.style.maxHeight=""),this.afterTransition=n.bind(this,t),t.addEventListener(b.transitionEnd,this.afterTransition),y.addClass(t,"cc-invisible")))},t.prototype.isOpen=function(){return this.element&&""==this.element.style.display&&(!b.hasTransition||!y.hasClass(this.element,"cc-invisible"))},t.prototype.toggleRevokeButton=function(t){this.revokeBtn&&(this.revokeBtn.style.display=t?"":"none")},t.prototype.revokeChoice=function(t){this.options.enabled=!0,this.clearStatus(),this.options.onRevokeChoice.call(this),t||this.autoOpen()},t.prototype.hasAnswered=function(t){return 0<=Object.keys(b.status).indexOf(this.getStatus())},t.prototype.hasConsented=function(t){var e=this.getStatus();return e==b.status.allow||e==b.status.dismiss},t.prototype.autoOpen=function(t){!this.hasAnswered()&&this.options.enabled&&this.open()},t.prototype.setStatus=function(t){var e=this.options.cookie,i=y.getCookie(e.name),s=0<=Object.keys(b.status).indexOf(i);0<=Object.keys(b.status).indexOf(t)?(y.setCookie(e.name,t,e.expiryDays,e.domain,e.path),this.options.onStatusChange.call(this,t,s)):this.clearStatus()},t.prototype.getStatus=function(){return y.getCookie(this.options.cookie.name)},t.prototype.clearStatus=function(){var t=this.options.cookie;y.setCookie(t.name,"",-1,t.domain,t.path)},t}(),b.Location=function(){function t(t){y.deepExtend(this.options={},e),y.isPlainObject(t)&&y.deepExtend(this.options,t),this.currentServiceIndex=-1}function o(t,e,i){var s,n=document.createElement("script");n.type="text/"+(t.type||"javascript"),n.src=t.src||t,n.async=!1,n.onreadystatechange=n.onload=function(){var t=n.readyState;clearTimeout(s),e.done||t&&!/loaded|complete/.test(t)||(e.done=!0,e(),n.onreadystatechange=n.onload=null)},document.body.appendChild(n),s=setTimeout(function(){e.done=!0,e(),n.onreadystatechange=n.onload=null},i)}function a(t,e,i,s,n){var o=new(window.XMLHttpRequest||window.ActiveXObject)("MSXML2.XMLHTTP.3.0");if(o.open(s?"POST":"GET",t,1),o.setRequestHeader("X-Requested-With","XMLHttpRequest"),o.setRequestHeader("Content-type","application/x-www-form-urlencoded"),Array.isArray(n))for(var a=0,r=n.length;a").attr({width:"100%",height:500,src:"//www.youtube-nocookie.com/embed/"+n,frameborder:0,allowfullscreen:!0,"data-st-video":this.id}).hide().insertAfter(this),t.addClass("st-collapsed").text(s+" einblenden").attr("href","javascript:void(0);")}t.each(e),t.click(function(){var t=u(this),e=u("[data-st-video="+this.id+"]"),i=t.text(),s=i.length-11,n=i.substring(0,s);t.hasClass("st-collapsed")?(e.slideDown("slow"),t.text(n+" ausblenden"),t.removeClass("st-collapsed")):(e.slideUp(400),t.text(n+" einblenden"),t.addClass("st-collapsed"))});var i=u("#st-default-modal");function s(t,e){function i(){e<=0||(r&&clearInterval(r),r=setInterval(function(){s()},e))}function s(){n(c===a-1?0:c+1),i()}function n(t){l[c].removeClass("active"),l[c=t].addClass("active")}e||(e=0);var o=u(".slide",t),a=o.length;if(1i.datepicker("getDate")&&i.datepicker("setDate",new Date(t.getFullYear(),t.getMonth(),t.getDate()+14))})}o<=992&&h(),u(window).on("resize",function(t){var e;u(window).width()<=992?h():(u(".scroller-right-nav-tabs").hide(),u(".scroller-left-nav-tabs").hide())}),u(".scroller-right-nav-tabs").click(function(){-1*l()+u(".wrapper-nav-tabs").outerWidth()<-1*r()?(u(".scroller-left-nav-tabs").fadeIn("slow"),u(".list-nav-tabs").animate({left:"+="+-1*u(".wrapper-nav-tabs").outerWidth()+"px"},"slow",function(){})):(u(".scroller-left-nav-tabs").fadeIn("slow"),u(".scroller-right-nav-tabs").fadeOut("slow"),u(".list-nav-tabs").animate({left:"+="+r()+"px"},"slow",function(){}))}),u(".scroller-left-nav-tabs").click(function(){l()+u(".wrapper-nav-tabs").outerWidth()<0?(u(".scroller-left-nav-tabs").fadeIn("slow"),u(".list-nav-tabs").animate({left:"-="+-1*u(".wrapper-nav-tabs").outerWidth()+"px"},"slow",function(){})):(u(".scroller-right-nav-tabs").fadeIn("slow"),u(".scroller-left-nav-tabs").fadeOut("slow"),u(".list-nav-tabs").animate({left:"-="+l()+"px"},"slow",function(){u(".list-nav-tabs").css({left:0})}))}),768",""],responsive:{0:{items:1},600:{items:2},1e3:{items:3}}}),u(".get-box-link").click(function(){var t=u(this),e=t.find(".is-box-link").attr("href");return"_blank"===t.attr("target")?window.open(e):location.href=e,!1}),u(".datepicker").each(function(){var t;u(window).width()<=768&&u(this).attr("readonly","true")}),u(".datepicker").datepicker({dateFormat:"dd.mm.yy",prevText:"<zurück",prevStatus:"",prevJumpText:"<<",prevJumpStatus:"",nextText:"Vor>",nextStatus:"",nextJumpText:">>",nextJumpStatus:"",currentText:"heute",currentStatus:"",todayText:"heute",todayStatus:"",clearText:"-",clearStatus:"",closeText:"schließen",closeStatus:"",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],firstDay:1,beforeShowDay:function(t){var e=u(this).attr("data-allowed-dates");if(e){for(var i=e.split(";"),s=0;s*{text-transform:uppercase;color:#777}#topMain .dropdown a:hover,#topMain .dropdown a:hover>*,#topMain .dropdown:hover a>*{color:#fff;transition:all .800s}#header .navbar-collapse.navbar-centered{position:absolute;left:0;right:0;text-align:center;z-index:-1}#header .navbar-collapse.navbar-centered>.nav-main{display:inline-block}#navigation button.btn-mobile{display:none}#navigation button.btn-mobile{position:relative;float:left;padding:7px 10px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:0px}#navigation button.btn-mobile i{padding:10px;font-size:24px}@media only screen and (max-width: 767px){#navigation button.btn-mobile{display:inline-block}}#header.transparent{position:absolute;background-color:transparent;border-bottom:rgba(255,255,255,0.3) 1px solid;box-shadow:none}#header.transparent.color,#header.transparent.dark{border:0}#header.transparent #topMain.nav-pills>li>a{color:#fff;border-radius:0}#header.transparent #topMain.nav-pills>li.active>a,#header.transparent #topMain.nav-pills>li>a:hover{background-color:rgba(0,0,0,0.03)}#header.transparent+section.page-header.page-header-lg,#header.transparent+section.page-header{padding:180px 0}#header.transparent+section.page-header.page-header-xlg{padding:280px 0;padding-top:350px}#header.transparent+section.page-header.page-header-lg{padding-top:250px}#header.transparent a.social-icon{background-color:rgba(0,0,0,0.2)}#header.transparent a.social-icon>i{color:#eaeaea}#header.fixed.transparent{background-color:#fff}#header.fixed.dark,#header.fixed.dark.transparent{background-color:#333;border:0}#header.fixed.transparent ul.nav-second-main li a,#header.fixed.transparent ul.nav-second-main li a>i,#header.fixed.transparent #topMain.nav-pills>li>a{color:#151515}#header.fixed.dark.transparent ul.nav-second-main li a,#header.fixed.dark.transparent ul.nav-second-main li a>i,#header.fixed.dark.transparent #topMain.nav-pills>li>a{color:#fff}@media only screen and (max-width: 767px){#header.transparent.fixed #topNav button.btn-mobile{color:#333 !important}#header.transparent.dark.fixed #topNav button.btn-mobile{color:#fff !important}#header.transparent #topMain.nav-pills>li>a{color:#fff}#header.transparent.dark #topMain.nav-pills>li>a{color:#fff}}@media only screen and (max-width: 767px){#header.transparent+section.page-header{margin-top:0}#header.transparent #topMain{background-color:#333 !important}#header.transparent #topMain li.active>a{color:#fff !important}}#header.translucent{position:absolute;background-color:rgba(0,0,0,0.2);box-shadow:none}#header.translucent #topMain.nav-pills>li>a{color:#fff;border-radius:0}#header.translucent #topMain.nav-pills>li.active>a,#header.translucent #topMain.nav-pills>li>a:hover{color:#fff;background-color:rgba(0,0,0,0.1)}#header.translucent+section.page-header{margin-top:-100px;padding:180px 0}#header.translucent+section.page-header.page-header-xlg{padding:280px 0;padding-top:420px}#header.translucent+section.page-header.page-header-lg{padding-top:350px}#header.fixed.translucent{background-color:#fff}#header.fixed.dark,#header.fixed.dark.translucent{background-color:#333;border:0}#header.fixed.translucent ul.nav-second-main li a,#header.fixed.translucent ul.nav-second-main li a>i,#header.fixed.translucent #topMain.nav-pills>li>a{color:#151515}#header.fixed.dark.translucent ul.nav-second-main li a,#header.fixed.dark.translucent ul.nav-second-main li a>i,#header.fixed.dark.translucent #topMain.nav-pills>li>a{color:#fff}@media only screen and (max-width: 767px){#header.transparent+section.page-header{margin-top:0}}#header.bottom{position:absolute;top:auto;bottom:0;border-bottom:rgba(0,0,0,0.05) 1px solid}#header.bottom.fixed{top:0;bottom:auto}#header.bottom.sticky{position:absolute}#header.bottom.fixed.sticky{position:fixed}#header.bottom.dropup #topMain>li>ul.dropdown-menu ul.dropdown-menu{bottom:auto;box-shadow:none}#header.bottom.dropup ul.dropdown-menu{bottom:94px}#header.header-md.bottom.dropup ul.dropdown-menu{bottom:68px}#header.header-sm.bottom.dropup ul.dropdown-menu{bottom:58px}#header.bottom.dropup.slim ul.dropdown-menu{bottom:53px}#header.bottom.dropup .nav-second-main .quick-cart-box,#header.bottom.dropup .nav-second-main .search-box{top:auto;bottom:100%;margin-bottom:39px;box-shadow:5px -5px rgba(91,91,91,0.2);border-bottom:0}#header.bottom.header-md.dropup .nav-second-main .quick-cart-box,#header.bottom.header-md.dropup .nav-second-main .search-box{margin-bottom:23px}#header.bottom.header-sm.dropup .nav-second-main .quick-cart-box,#header.bottom.header-sm.dropup .nav-second-main .search-box{margin-bottom:20px}#header.bottom.dropup ul.dropdown-menu:before{top:auto;bottom:-10px !important;border-bottom:0 !important;border-top:#fff 10px solid}#header.bottom.dropup.dark ul.dropdown-menu:before{border-top:rgba(33,33,33,0.95) 10px solid !important}#header.bottom+#slider{margin-bottom:94px}#header.header-md.bottom+#slider{margin-bottom:70px}#header.header-sm.bottom+#slider{margin-bottom:60px}#header.header-sm.bottom.transparent+#slider,#header.header-sm.bottom.translucent+#slider{margin-bottom:0}#header.bottom+#slider>.swiper-container .swiper-pagination{top:0 !important;bottom:auto}@media only screen and (max-width: 767px){#header.bottom{top:0;bottom:auto}#header.bottom.sticky{position:relative !important}#header.bottom.transparent ul.nav-second-main li a,#header.bottom.transparent ul.nav-second-main li a>i,#header.bottom.transparent #topNav button.btn-mobile{color:#212121}#header.bottom+#slider>.swiper-container .swiper-pagination{top:auto !important;bottom:10px}#header.bottom.dropup .nav-second-main .quick-cart-box,#header.bottom.dropup .nav-second-main .search-box{bottom:auto}}#header.bottom.static+#slider{margin-bottom:0}#header.bottom.static{border-top:rgba(0,0,0,0.15) 1px solid}#header.bottom.static.dark{border-top:rgba(255,255,255,0.15) 1px solid}#header.bottom.static .nav-second-main .quick-cart-box,#header.bottom.static .nav-second-main .search-box,#header.bottom.static .nav-second-main .quick-cart-box,#header.bottom.static .nav-second-main .search-box{border:rgba(0,0,0,0.15) 1px solid;border-bottom:0}#header.bottom.static.dark .nav-second-main .quick-cart-box,#header.bottom.static.dark .nav-second-main .search-box,#header.bottom.static.dark .nav-second-main .quick-cart-box,#header.bottom.static.dark .nav-second-main .search-box{border:rgba(255,255,255,0.15) 1px solid;border-bottom:0}#header.static:not(.transparent)+section.page-header{margin-top:60px}#topNav .full-container{display:block;margin:0 15px}#topNav ul.dropdown-menu>li,#topNav ul.dropdown-menu>li a{background-color:transparent}#topNav .nav-pills>li+li{margin-left:0}#header li.search .search-box form{margin:0}#header.header-md #topNav a.logo{height:70px;line-height:50px}#header.header-md #topNav a.logo>img{height:70px}#header.header-md #topNav #topMain>li>a{height:70px;line-height:50px}@media only screen and (max-width: 767px){#header.header-md #topMain.nav-pills>li>a{color:#212121}#header.header-md #topMain.nav-pills>li.active>a,#header.header-md #topMain.nav-pills>li>a:hover{color:#212121;background-color:rgba(0,0,0,0.02)}}#header.header-sm #topNav a.logo{height:60px;line-height:50px}#header.header-sm #topNav a.logo>img{height:60px}#header.header-sm #topNav #topMain>li>a{height:60px;line-height:40px}@media only screen and (max-width: 767px){#header.header-sm #topMain.nav-pills>li>a{color:#212121}#header.header-sm #topMain.nav-pills>li.active>a,#header.header-sm #topMain.nav-pills>li>a:hover{color:#212121;background-color:rgba(0,0,0,0.02)}}#header.fixed{position:fixed;border-bottom:rgba(0,0,0,0.08) 1px solid}#header.fixed #topNav a.logo{height:60px;line-height:50px}#header.fixed #topNav a.logo>img{height:60px}#header.fixed #topNav #topMain>li>a{height:60px;line-height:40px}#header.static{position:fixed}#header.static:not(.transparent){border-bottom:rgba(0,0,0,0.08) 1px solid}.header{box-shadow:0px 0px 4px 0px rgba(0,0,0,0.6)}@media only screen and (max-width: 767px){.topbar .container{padding:0}#header.header-sm #topMain.nav-pills>li>a,#header.header-md #topMain.nav-pills>li>a{color:#212121}#header.header-sm #topMain.nav-pills>li.active>a,#header.header-sm #topMain.nav-pills>li>a:hover,#header.header-md #topMain.nav-pills>li.active>a,#header.header-md #topMain.nav-pills>li>a:hover{color:#212121;background-color:rgba(0,0,0,0.02)}#header.transparent.header-sm #topMain.nav-pills>li>a,#header.transparent.header-md #topMain.nav-pills>li>a,#header.transparent.header-sm #topMain.nav-pills>li.active>a,#header.transparent.header-sm #topMain.nav-pills>li>a:hover,#header.transparent.header-md #topMain.nav-pills>li.active>a,#header.transparent.header-md #topMain.nav-pills>li>a:hover{color:#fff}#header.transparent #topMain,#header .submenu-dark #topMain{background-color:#333}#header.dark #topMain.nav-pills>li.active>a,#header.dark #topMain.nav-pills>li:hover>a,#header.dark #topMain.nav-pills>li>a{color:#333}#header.dark .submenu-dark #topMain.nav-pills>li.active>a,#header.dark .submenu-dark #topMain.nav-pills>li:hover>a,#header.dark .submenu-dark #topMain.nav-pills>li>a{color:#fff}#header.dark #topMain.nav-pills>li.active>a{background-color:rgba(0,0,0,0.1)}}#topBar{display:block;background-color:#fff;border-bottom:rgba(0,0,0,0.05) 1px solid}#topBar>.border-bottom{border-bottom:rgba(0,0,0,0.05) 1px solid}#topBar>.border-top{border-top:rgba(0,0,0,0.05) 1px solid}#topBar.dark{color:#ccc;background-color:#363839;border-bottom-color:rgba(255,255,255,0.1)}#topBar.dark .dropdown-menu a,#topBar.dark ul.top-links>li>a{color:#fff}#topBar.dark .dropdown-menu a:hover{color:#fff !important;background-color:#333}#topBar.dark ul.top-links>li{border-right:rgba(255,255,255,0.1) 1px solid}body.boxed #topBar.dark ul.top-links>li{border-right:0}#topBar.dark .dropdown-menu{background-color:#363839}#topBar.dark .dropdown-menu .divider{background-color:#444}#topBar.dark>.border-bottom{border-bottom-color:rgba(255,255,255,0.1)}#topBar.dark>.border-top{border-top-color:rgba(255,255,255,0.1)}#topBar .logo{display:inline-block}#topBar .logo img{transition:width .4s ease, height .4s ease}#topBar .logo.has-banner{height:100px;line-height:100px}#topBar .banner{margin:5px 0;display:inline-block;padding-left:5px;border-left:rgba(0,0,0,0.05) 1px solid}#topBar.dark .banner{border-left-color:rgba(255,255,255,0.05) 1px solid}#topBar .social-icon{margin:3px 0 0 0}#topBar ul.top-links{float:left;margin:0}#topBar ul.top-links>li{padding:0;display:inline-block;margin-left:-3px;position:relative;border-right:rgba(0,0,0,0.1) 1px solid}#topBar ul.top-links>li:hover>.dropdown-menu,#mainMenu ul.top-links>li:hover>.dropdown-menu{display:block !important}#topBar ul.top-links>li .dropdown-menu{z-index:3000}#topBar ul.top-links>li>a{padding:10px;font-size:12px;color:#151515;display:block;text-decoration:none}#topBar ul.top-links>li>a:hover{background-color:rgba(0,0,0,0.01)}#topBar ul.top-links>li>a>i{margin-right:5px;filter:alpha(opacity=30);opacity:0.3}@media only screen and (max-width: 767px){#topBar{text-align:center}#topBar ul.top-links{display:inline-block;float:none;margin:0 auto}#topBar ul.top-links>li:last-child>a{border-right:0}}#topBar ul.top-links li.text-welcome{padding:0 15px;font-size:12px}#topBar ul.dropdown-menu{min-width:50px;margin:0;padding:0;margin-left:-1px}#topBar ul.dropdown-menu>li>a{padding:8px 6px;font-size:12px}#topBar ul.dropdown-langs>li>a{padding:3px 6px;font-size:12px}#topBar ul.top-links>li>a>img.flag-lang{float:left;margin-top:3px;margin-right:6px}#topBar ul.dropdown-menu>li>a>i{margin-right:6px}#topBar ul.dropdown-langs>li:hover>a{color:#000 !important;background-color:#eee}#topBar ul.dropdown-menu>li.divider{margin:0;padding:0;border-bottom:0;height:1px}#header ul.nav-second-main{border-left:rgba(0,0,0,0.1) 1px solid;padding-left:15px;margin-top:39px;transition:all .300s}#header.fixed ul.nav-second-main{margin-top:20px}#header.header-sm ul.nav-second-main{margin-top:20px}#header.header-md ul.nav-second-main{margin-top:23px}#header.fixed.header-sm ul.nav-second-main.nav-social,#header.fixed.header-md ul.nav-second-main.nav-social{margin-top:18px}#header ul.nav-second-main.nav-social a{margin-left:10px !important}#header ul.nav-second-main.nav-social>li:first-child a{margin-left:10px !important}#header.fixed ul.nav-second-main.nav-social a>i:hover{color:#fff !important}#header ul.nav-second-main li{padding-top:33px;padding:0 5px 0px 5px}#header ul.nav-second-main li>a{background-color:transparent;color:#666;padding:0 3px;display:block}#header ul.nav-second-main li i{font-size:18px;width:20px;height:20px;margin:0;padding:0;opacity:0.6;filter:alpha(opacity=60);transition:all .300s}#header ul.nav-second-main li:hover i{opacity:1;filter:alpha(opacity=100)}#header ul.nav-second-main li .badge{padding:3px 6px}#header.transparent ul.nav-second-main li a,#header.transparent ul.nav-second-main li a>i,#header.color ul.nav-second-main li a,#header.color ul.nav-second-main li a>i,#header.dark ul.nav-second-main li a,#header.dark ul.nav-second-main li a>i{color:#fff;opacity:1;filter:alpha(opacity=100)}@media only screen and (max-width: 767px){#header ul.nav-second-main{margin:15px 15px 0 0;border:0}#header ul.nav-second-main li{padding:0;padding-top:6px}#header ul.nav-second-main{transition:all 0s}#header.fixed ul.nav-second-main li{padding-top:0}#header.header-md ul.nav-second-main li>a,#header.header-sm ul.nav-second-main li>a{margin-top:-6px}#header.header-md ul.nav-second-main{margin-top:20px}#header.fixed.header-sm ul.nav-second-main.nav-social,#header.fixed.header-md ul.nav-second-main.nav-social{margin-top:26px}#header.header-md.translucent ul.nav-second-main{margin-top:23px}#header.header-md.translucent.fixed ul.nav-second-main{margin-top:29px}}#topNav ul.dropdown-menu{text-align:left;margin-top:0;border:#fff 1px solid;border-top:#648859 2px solid;list-style:none;background:#fff;box-shadow:rgba(0,0,0,0.4) 0 6px 12px;min-width:200px;padding:0;transition:top .4s ease;border-radius:0}#topNav ul.dropdown-menu ul.dropdown-menu{margin-top:-1px !important}#topNav ul.dropdown-menu li{position:relative;border-bottom:rgba(0,0,0,0.15) 1px solid}#topNav ul.dropdown-menu li.first{position:relative;border-bottom:rgba(0,0,0,0.4) 1px solid}#topNav ul.dropdown-menu li:last-child{border-bottom:0}#topNav ul.dropdown-menu li a{margin:0;padding:12px 10px;font-weight:600;line-height:1.43em;color:#777;font-size:14px;display:block;text-decoration:none}#topNav ul.dropdown-menu>li a i{margin-right:6px;font-size:12px}#topNav ul.dropdown-menu a.dropdown-toggle{background-position:right center;background-repeat:no-repeat}#topNav ul.dropdown-menu li.active>a,#topNav ul.dropdown-menu li.active:hover>a,#topNav ul.dropdown-menu li.active:focus>a,#topNav ul.dropdown-menu li:hover>a,#topNav ul.dropdown-menu li:focus>a,#topNav ul.dropdown-menu li:focus>a{color:#000;background-color:rgba(0,0,0,0.05)}#topNav ul.dropdown-menu li.divider{margin:-1px 0 0 0;padding:0;border:0;background-color:rgba(0,0,0,0.1)}#topNav .nav li:hover>ul.dropdown-menu{padding:0;display:block;z-index:100}#topNav ul.dropdown-menu li .label{margin-top:4px}#topNav ul.dropdown-menu>li:hover>ul.dropdown-menu{display:block;position:absolute;left:100%;top:0;padding:0;margin:0;border-left:0 !important;border-right:0 !important;border-bottom:0 !important}#topMain.nav-onepage>li.active>a{font-weight:bold}@media only screen and (max-width: 767px){#sidebar .widget{margin-bottom:0px}#topMain.nav-pills>li>a.dropdown-toggle:after{display:block;content:"\f107";position:absolute;top:50%;right:10px;margin:-5px 0 0;font-family:FontAwesome;font-size:15px;opacity:.6;line-height:1em;transition:-webkit-transform .2s ease-in;transition:transform .2s ease-in;transition:transform .2s ease-in, -webkit-transform .2s ease-in}#topNav .navbar-collapse::before{display:none}.navbar-collapse{height:100%}form.mobile-search{display:block}#topNav div.nav-main-collapse{padding:0;margin:0}#topNav button.btn-mobile{display:block;float:right;margin-right:0}#header.dark #topNav button.btn-mobile,#header.transparent #topNav button.btn-mobile,#header.theme-color #topNav button.btn-mobile{color:#fff}#topNav nav.nav-main{background-color:#fff}#topNav div.nav-main-collapse,#topNav div.nav-main-collapse.in{width:100%;margin:-1px 0 0 0}#topNav div.nav-main-collapse{float:none;overflow-x:hidden;max-height:350px}}@media only screen and (max-width: 767px) and (max-width: 767px){html.noscroll,html.noscroll body{overflow:hidden !important}}@media only screen and (max-width: 767px){html.noscroll,html.noscroll body{overflow:hidden !important}#header.fixed #topNav div.nav-main-collapse,#topNav div.nav-main-collapse{max-height:100% !important;height:100%;width:100%;position:fixed !important;left:0 !important;right:0;bottom:0;top:60px;z-index:9999 !important;overflow-y:scroll !important;margin:0 !important}#topNav div.nav-main-collapse{-webkit-overflow-scrolling:touch;-webkit-animation:fadeIn .3s !important;animation:fadeIn .3s !important}#navigation button.btn-mobile-active{position:fixed !important;z-index:999999 !important;background-color:#232323 !important;height:60px !important;top:0 !important;width:100%;left:0;right:0;margin:0 !important;opacity:0.8}#navigation button.btn-mobile-active>i{float:right;margin-right:10px;margin-left:10px;padding:5px;color:#fff !important;font-size:30px}#navigation button.btn-mobile-active>i:before{content:"\e01f" !important}#menu-overlay{position:fixed;top:0;bottom:0;left:0;right:0;width:100%;height:100%;background-color:rgba(0,0,0,0.5);z-index:10 !important}#topMain,#topNav ul.dropdown-menu{color:#777;background-color:#fff !important}#topNav ul.dropdown-menu{border:0}#topMain>li>a{color:#fff !important}#topNav ul.dropdown-menu li>a{color:#fbfbfb !important}#topMain>li>a,#topNav ul.dropdown-menu li>a{font-size:15px !important}#topNav div.nav-main-collapse.collapse{display:none !important}#topNav div.nav-main-collapse.in{display:block !important}#topNav div.nav-main-collapse{position:relative}#topMain>li>a>span{display:none !important}#topMain li{display:block !important;float:none;text-align:left;border-radius:0}#topMain li a{text-align:left;border:0;height:auto;line-height:15px;border-radius:0}#topMain>li:hover,#topMain>li:hover>a{border-top:0 !important}#topMain>li>a{height:auto;line-height:auto}#topMain ul.dropdown-menu{position:static;clear:both;float:none;display:none !important;border-left:0 !important;box-shadow:none}#topNav nav.nav-main li.resp-active>ul.dropdown-menu{display:block !important;margin-left:30px;margin-right:30px;padding:0px 0;border-right:0}#topNav nav.nav-main li.resp-active>ul.dropdown-menu li{border-left:0;padding:0px !important}#topNav ul.nav>li:hover>a:before,#topNav ul.nav>li.active>a:before{background-color:transparent}#topNav ul.dropdown-menu>li:hover>ul.dropdown-menu{position:static}#topNav div.submenu-dark ul.dropdown-menu{border-top:0}#topNav nav.nav-main li.resp-active>ul.dropdown-menu{margin:0;padding:0}#topNav nav.nav-main li>ul.dropdown-menu li a{padding:8px 5px 8px 30px;font-size:14px !important}#topNav .dropdown-menu.pull-right,#topNav .dropdown-menu.pull-left{float:none !important}}@media only screen and (max-width: 500px){#topNav div.nav-main-collapse{max-height:290px;overflow-y:auto}}#topNav #topMain>li.mega-menu{position:inherit;color:#fff}#topNav #topMain>li.mega-menu>ul{max-width:100%;width:100%}#topNav #topMain>li.mega-menu div.row{display:table;margin:0;padding:0;width:100%}#topNav #topMain>li.mega-menu div.row div{display:table-cell;border-left:rgba(0,0,0,0.1) 1px solid;margin-left:-1px;display:table-cell;vertical-align:top;float:none;margin:0;padding:15px 0 0 0}#topNav #topMain>li.mega-menu div.row>div:first-child{border-left:0 !important}#topNav #topMain>li.mega-menu div.row div>ul>li>span{color:#111;font-weight:bold;display:block;padding:6px 15px 15px 15px}@media only screen and (max-width: 767px){#topNav #topMain>li.mega-menu div.row div>ul>li>span{color:#fff}}#topNav #topMain>li.mega-menu div.row div:first-child{border-left:0}#topNav #topMain>li.mega-menu div.row div>ul>li+li>span{margin-top:25px}#topNav ul.dropdown-menu a.dropdown-toggle{background-image:url("../images/_smarty/submenu_light.png")}#topNav div.submenu-dark ul.dropdown-menu{background:#333;background-color:#333}#topNav div.submenu-dark ul.dropdown-menu a.dropdown-toggle{background-image:url("../images/_smarty/submenu_dark.png")}#topNav div.submenu-dark ul.dropdown-menu li.active>a,#topNav div.submenu-dark ul.dropdown-menu li.active:hover>a,#topNav div.submenu-dark ul.dropdown-menu li.active:focus>a,#topNav div.submenu-dark ul.dropdown-menu li:hover>a,#topNav div.submenu-dark ul.dropdown-menu li:focus>a,#topNav div.submenu-dark ul.dropdown-menu li:focus>a{color:#fff;background-color:#ffc926}#topNav div.submenu-dark ul.dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}#topNav div.submenu-dark #topMain>li.mega-menu div.row div>ul>li>span{color:#fff}#topNav div.submenu-dark #topMain>li.mega-menu div.row>div{border-left:rgba(0,0,0,0.2) 1px solid}@media only screen and (max-width: 767px){#topNav div.submenu-dark li>a{color:#777 !important}#topNav div.submenu-dark li:hover>a{color:#fff !important}#header.translucent #topMain,#header.dark.transparent #topMain{background-color:#fff !important}}#topMain>li>a{padding:6px 10px 4px 10px}#topMain.nav-pills>li>a{font-family:Raleway,sans-serif;font-size:14px;margin-top:0;color:#777;background-color:transparent;font-weight:600}#topMain.nav-pills>li:hover>a,#topMain.nav-pills>li:focus>a{color:#fff;background-color:#ffc926}#topMain.nav-pills>li.active>a{color:#687482}#topMain.nav-pills>li>a.dropdown-toggle{border-radius:0}#topNav .navbar-collapse{float:left;padding-right:0;padding-left:0}#topNav a.logo{height:96px;line-height:96px;overflow:hidden;display:inline-block}@media only screen and (max-width: 1215px){#topMain.nav-pills>li>a{font-size:14px}}@media only screen and (max-width: 767px){#header{height:0px !important}.navbar,.navbar-collapse{margin:4px 0 0 0}#header #topNav #topMain>li>a{height:40px !important;line-height:40px !important;padding-top:0}#topMain>li{border-bottom:rgba(0,0,0,0.1) 1px solid}#topMain>li:last-child{border-bottom:0}#header li.search .search-box{margin:0 !important;position:fixed;left:0;right:0;top:60px !important;width:100%;background-color:#fff;border-top:rgba(0,0,0,0.1) 1px solid}}#topNav .navbar-collapse::before{position:absolute;content:"";z-index:99998;width:0;height:0;left:4px;top:10px;border-top:8px solid transparent;border-bottom:8px solid transparent;border-left:10px solid #ffc926} diff --git a/trunk/web/css/images/ui-bg_glass_100_f8f8f8_1x400.png b/trunk/web/css/images/ui-bg_glass_100_f8f8f8_1x400.png new file mode 100644 index 00000000..a531a9a1 Binary files /dev/null and b/trunk/web/css/images/ui-bg_glass_100_f8f8f8_1x400.png differ diff --git a/trunk/web/css/images/ui-bg_glass_35_dddddd_1x400.png b/trunk/web/css/images/ui-bg_glass_35_dddddd_1x400.png new file mode 100644 index 00000000..a70e0eb1 Binary files /dev/null and b/trunk/web/css/images/ui-bg_glass_35_dddddd_1x400.png differ diff --git a/trunk/web/css/images/ui-bg_glass_40_ffc73d_1x400.png b/trunk/web/css/images/ui-bg_glass_40_ffc73d_1x400.png new file mode 100644 index 00000000..f5280086 Binary files /dev/null and b/trunk/web/css/images/ui-bg_glass_40_ffc73d_1x400.png differ diff --git a/trunk/web/css/images/ui-bg_glass_60_eeeeee_1x400.png b/trunk/web/css/images/ui-bg_glass_60_eeeeee_1x400.png new file mode 100644 index 00000000..223433fc Binary files /dev/null and b/trunk/web/css/images/ui-bg_glass_60_eeeeee_1x400.png differ diff --git a/trunk/web/css/images/ui-bg_highlight-hard_20_0972a5_1x100.png b/trunk/web/css/images/ui-bg_highlight-hard_20_0972a5_1x100.png new file mode 100644 index 00000000..342a7e2d Binary files /dev/null and b/trunk/web/css/images/ui-bg_highlight-hard_20_0972a5_1x100.png differ diff --git a/trunk/web/css/images/ui-bg_highlight-soft_33_003147_1x100.png b/trunk/web/css/images/ui-bg_highlight-soft_33_003147_1x100.png new file mode 100644 index 00000000..3b559813 Binary files /dev/null and b/trunk/web/css/images/ui-bg_highlight-soft_33_003147_1x100.png differ diff --git a/trunk/web/css/images/ui-bg_highlight-soft_35_222222_1x100.png b/trunk/web/css/images/ui-bg_highlight-soft_35_222222_1x100.png new file mode 100644 index 00000000..68970d04 Binary files /dev/null and b/trunk/web/css/images/ui-bg_highlight-soft_35_222222_1x100.png differ diff --git a/trunk/web/css/images/ui-bg_highlight-soft_44_444444_1x100.png b/trunk/web/css/images/ui-bg_highlight-soft_44_444444_1x100.png new file mode 100644 index 00000000..3f19c178 Binary files /dev/null and b/trunk/web/css/images/ui-bg_highlight-soft_44_444444_1x100.png differ diff --git a/trunk/web/css/images/ui-bg_highlight-soft_80_eeeeee_1x100.png b/trunk/web/css/images/ui-bg_highlight-soft_80_eeeeee_1x100.png new file mode 100644 index 00000000..6a501884 Binary files /dev/null and b/trunk/web/css/images/ui-bg_highlight-soft_80_eeeeee_1x100.png differ diff --git a/trunk/web/css/images/ui-bg_inset-hard_75_999999_1x100.png b/trunk/web/css/images/ui-bg_inset-hard_75_999999_1x100.png new file mode 100644 index 00000000..b99cf570 Binary files /dev/null and b/trunk/web/css/images/ui-bg_inset-hard_75_999999_1x100.png differ diff --git a/trunk/web/css/images/ui-bg_inset-soft_50_c9c9c9_1x100.png b/trunk/web/css/images/ui-bg_inset-soft_50_c9c9c9_1x100.png new file mode 100644 index 00000000..e7a6c136 Binary files /dev/null and b/trunk/web/css/images/ui-bg_inset-soft_50_c9c9c9_1x100.png differ diff --git a/trunk/web/css/images/ui-bg_loop_25_000000_21x21.png b/trunk/web/css/images/ui-bg_loop_25_000000_21x21.png new file mode 100644 index 00000000..3c227846 Binary files /dev/null and b/trunk/web/css/images/ui-bg_loop_25_000000_21x21.png differ diff --git a/trunk/web/css/images/ui-icons_222222_256x240.png b/trunk/web/css/images/ui-icons_222222_256x240.png new file mode 100644 index 00000000..f184400d Binary files /dev/null and b/trunk/web/css/images/ui-icons_222222_256x240.png differ diff --git a/trunk/web/css/images/ui-icons_3383bb_256x240.png b/trunk/web/css/images/ui-icons_3383bb_256x240.png new file mode 100644 index 00000000..45d36133 Binary files /dev/null and b/trunk/web/css/images/ui-icons_3383bb_256x240.png differ diff --git a/trunk/web/css/images/ui-icons_454545_256x240.png b/trunk/web/css/images/ui-icons_454545_256x240.png new file mode 100644 index 00000000..e6e41cd0 Binary files /dev/null and b/trunk/web/css/images/ui-icons_454545_256x240.png differ diff --git a/trunk/web/css/images/ui-icons_4b8e0b_256x240.png b/trunk/web/css/images/ui-icons_4b8e0b_256x240.png new file mode 100644 index 00000000..4faad3e9 Binary files /dev/null and b/trunk/web/css/images/ui-icons_4b8e0b_256x240.png differ diff --git a/trunk/web/css/images/ui-icons_70b2e1_256x240.png b/trunk/web/css/images/ui-icons_70b2e1_256x240.png new file mode 100644 index 00000000..0d823681 Binary files /dev/null and b/trunk/web/css/images/ui-icons_70b2e1_256x240.png differ diff --git a/trunk/web/css/images/ui-icons_999999_256x240.png b/trunk/web/css/images/ui-icons_999999_256x240.png new file mode 100644 index 00000000..4ae5228b Binary files /dev/null and b/trunk/web/css/images/ui-icons_999999_256x240.png differ diff --git a/trunk/web/css/images/ui-icons_a83300_256x240.png b/trunk/web/css/images/ui-icons_a83300_256x240.png new file mode 100644 index 00000000..51581b3e Binary files /dev/null and b/trunk/web/css/images/ui-icons_a83300_256x240.png differ diff --git a/trunk/web/css/images/ui-icons_fbc856_256x240.png b/trunk/web/css/images/ui-icons_fbc856_256x240.png new file mode 100644 index 00000000..f696b3d1 Binary files /dev/null and b/trunk/web/css/images/ui-icons_fbc856_256x240.png differ diff --git a/trunk/web/css/images/ui-icons_ffffff_256x240.png b/trunk/web/css/images/ui-icons_ffffff_256x240.png new file mode 100644 index 00000000..2cbe10f0 Binary files /dev/null and b/trunk/web/css/images/ui-icons_ffffff_256x240.png differ diff --git a/trunk/web/css/my-custom-blessed1.css b/trunk/web/css/my-custom-blessed1.css new file mode 100644 index 00000000..b13eca91 --- /dev/null +++ b/trunk/web/css/my-custom-blessed1.css @@ -0,0 +1,17 @@ +@charset "UTF-8";@font-face{font-family:Raleway;font-style:normal;font-weight:100;src:local('Raleway Thin'),local('Raleway-Thin'),url(https://fonts.gstatic.com/s/raleway/v12/1Ptsg8zYS_SKggPNwE44TYFv.ttf) format('truetype')}@font-face{font-family:Raleway;font-style:normal;font-weight:200;src:local('Raleway ExtraLight'),local('Raleway-ExtraLight'),url(https://fonts.gstatic.com/s/raleway/v12/1Ptrg8zYS_SKggPNwOIpWqZPBQ.ttf) format('truetype')}@font-face{font-family:Raleway;font-style:normal;font-weight:300;src:local('Raleway Light'),local('Raleway-Light'),url(https://fonts.gstatic.com/s/raleway/v12/1Ptrg8zYS_SKggPNwIYqWqZPBQ.ttf) format('truetype')}@font-face{font-family:Raleway;font-style:normal;font-weight:400;src:local('Raleway'),local('Raleway-Regular'),url(https://fonts.gstatic.com/s/raleway/v12/1Ptug8zYS_SKggPNyC0ISg.ttf) format('truetype')}@font-face{font-family:Raleway;font-style:normal;font-weight:500;src:local('Raleway Medium'),local('Raleway-Medium'),url(https://fonts.gstatic.com/s/raleway/v12/1Ptrg8zYS_SKggPNwN4rWqZPBQ.ttf) format('truetype')}@font-face{font-family:Raleway;font-style:normal;font-weight:600;src:local('Raleway SemiBold'),local('Raleway-SemiBold'),url(https://fonts.gstatic.com/s/raleway/v12/1Ptrg8zYS_SKggPNwPIsWqZPBQ.ttf) format('truetype')}@font-face{font-family:Raleway;font-style:normal;font-weight:700;src:local('Raleway Bold'),local('Raleway-Bold'),url(https://fonts.gstatic.com/s/raleway/v12/1Ptrg8zYS_SKggPNwJYtWqZPBQ.ttf) format('truetype')}@font-face{font-family:Raleway;font-style:normal;font-weight:800;src:local('Raleway ExtraBold'),local('Raleway-ExtraBold'),url(https://fonts.gstatic.com/s/raleway/v12/1Ptrg8zYS_SKggPNwIouWqZPBQ.ttf) format('truetype')}@font-face{font-family:Raleway;font-style:normal;font-weight:900;src:local('Raleway Black'),local('Raleway-Black'),url(https://fonts.gstatic.com/s/raleway/v12/1Ptrg8zYS_SKggPNwK4vWqZPBQ.ttf) format('truetype')}@font-face{font-family:Oswald;font-style:normal;font-weight:400;src:local('Oswald Regular'),local('Oswald-Regular'),url(https://fonts.gstatic.com/s/oswald/v16/TK3iWkUHHAIjg752GT8D.ttf) format('truetype')}@font-face{font-family:Oswald;font-style:normal;font-weight:700;src:local('Oswald Bold'),local('Oswald-Bold'),url(https://fonts.gstatic.com/s/oswald/v16/TK3hWkUHHAIjg75-ohoTus9H.ttf) format('truetype')}/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{box-sizing:border-box}:after,:before{box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=radio]:focus,input[type=file]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition-timing-function:ease;transition-duration:.35s;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out, -webkit-transform .3s ease-out;-webkit-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out, -webkit-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}/*! jQuery UI - v1.11.4 - 2015-03-11 +* http://jqueryui.com +* Includes: core.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, draggable.css, menu.css, progressbar.css, resizable.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:active,.ui-button:hover,.ui-button:link,.ui-button:visited{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-icons-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-icons-only .ui-button-icon-primary,.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary{left:.5em}.ui-button-icons-only .ui-button-icon-secondary,.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}button.ui-button::-moz-focus-inner,input.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-next,.ui-datepicker .ui-datepicker-prev{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-next-hover,.ui-datepicker .ui-datepicker-prev-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-next span,.ui-datepicker .ui-datepicker-prev span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:700;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td a,.ui-datepicker td span{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0 0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{touch-action:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-active,.ui-menu .ui-state-focus{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url(data:image/gif;base64,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);height:100%;filter:alpha(opacity=25);opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;touch-action:none}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:700;line-height:1.5;padding:2px .4em;margin:.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:.4em 2.1em .4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{-webkit-filter:inherit;filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:0 0;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0 0}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget button,.ui-widget input,.ui-widget select,.ui-widget textarea{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:700}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:400;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-focus,.ui-state-hover,.ui-widget-content .ui-state-focus,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-focus,.ui-widget-header .ui-state-hover{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:400;color:#212121}.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:400;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-focus .ui-icon,.ui-state-hover .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-left,.ui-corner-tl,.ui-corner-top{border-top-left-radius:4px}.ui-corner-all,.ui-corner-right,.ui-corner-top,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bl,.ui-corner-bottom,.ui-corner-left{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-br,.ui-corner-right{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome-webfont.eot?v=4.7.0);src:url(../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) format('embedded-opentype'),url(../fonts/fontawesome-webfont.woff2?v=4.7.0) format('woff2'),url(../fonts/fontawesome-webfont.woff?v=4.7.0) format('woff'),url(../fonts/fontawesome-webfont.ttf?v=4.7.0) format('truetype'),url(../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-y-combinator:before,.fa-yc:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-television:before,.fa-tv:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:"\f2a3"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-address-card:before,.fa-vcard:before{content:"\f2bb"}.fa-address-card-o:before,.fa-vcard-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}/*! + * Bootstrap-select v1.13.2 (https://developer.snapappointments.com/bootstrap-select) + * + * Copyright 2012-2018 SnapAppointments, LLC + * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE) + */.bootstrap-select>select.bs-select-hidden,select.bs-select-hidden,select.selectpicker{display:none!important}.bootstrap-select{width:220px\9}.bootstrap-select>.dropdown-toggle{position:relative;width:100%;z-index:1;text-align:right;white-space:nowrap}.bootstrap-select>.dropdown-toggle.bs-placeholder,.bootstrap-select>.dropdown-toggle.bs-placeholder:active,.bootstrap-select>.dropdown-toggle.bs-placeholder:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder:hover{color:#999}.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:hover{color:rgba(255,255,255,.5)}.bootstrap-select>select{position:absolute!important;bottom:0;left:50%;display:block!important;width:.5px!important;height:100%!important;padding:0!important;opacity:0!important;border:none}.bootstrap-select>select.mobile-device{top:0;left:0;display:block!important;width:100%!important;z-index:2}.bootstrap-select.is-invalid .dropdown-toggle,.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle,.was-validated .bootstrap-select .selectpicker:invalid+.dropdown-toggle{border-color:#b94a48}.bootstrap-select.is-valid .dropdown-toggle,.was-validated .bootstrap-select .selectpicker:valid+.dropdown-toggle{border-color:#28a745}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}:not(.input-group)>.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{z-index:auto}.bootstrap-select.form-control.input-group-btn:not(:first-child):not(:last-child)>.btn{border-radius:0}.bootstrap-select:not(.input-group-btn),.bootstrap-select[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.dropdown-menu-right,.bootstrap-select[class*=col-].dropdown-menu-right,.row .bootstrap-select[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select,.form-horizontal .bootstrap-select,.form-inline .bootstrap-select{margin-bottom:0}.form-group-lg .bootstrap-select.form-control,.form-group-sm .bootstrap-select.form-control{padding:0}.form-group-lg .bootstrap-select.form-control .dropdown-toggle,.form-group-sm .bootstrap-select.form-control .dropdown-toggle{height:100%;font-size:inherit;line-height:inherit;border-radius:inherit}.bootstrap-select.form-control-lg .dropdown-toggle,.bootstrap-select.form-control-sm .dropdown-toggle{font-size:inherit;line-height:inherit;border-radius:inherit}.bootstrap-select.form-control-sm .dropdown-toggle{padding:.25rem .5rem}.bootstrap-select.form-control-lg .dropdown-toggle{padding:.5rem 1rem}.form-inline .bootstrap-select .form-control{width:100%}.bootstrap-select.disabled,.bootstrap-select>.disabled{cursor:not-allowed}.bootstrap-select.disabled:focus,.bootstrap-select>.disabled:focus{outline:0!important}.bootstrap-select.bs-container{position:absolute;top:0;left:0;height:0!important;padding:0!important}.bootstrap-select.bs-container .dropdown-menu{z-index:1060}.bootstrap-select .dropdown-toggle:before{content:'';display:inline-block}.bootstrap-select .dropdown-toggle .filter-option{position:absolute;top:0;left:0;padding-top:inherit;padding-right:inherit;padding-bottom:inherit;padding-left:inherit;height:100%;width:100%;text-align:left}.bootstrap-select .dropdown-toggle .filter-option-inner{padding-right:inherit}.bootstrap-select .dropdown-toggle .filter-option-inner-inner{overflow:hidden}.bootstrap-select .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.input-group .bootstrap-select.form-control .dropdown-toggle{border-radius:inherit}.bootstrap-select[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select .dropdown-menu{min-width:100%;box-sizing:border-box}.bootstrap-select .dropdown-menu>.inner:focus{outline:0!important}.bootstrap-select .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;box-shadow:none}.bootstrap-select .dropdown-menu li{position:relative}.bootstrap-select .dropdown-menu li.active small{color:rgba(255,255,255,.5)!important}.bootstrap-select .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select .dropdown-menu li a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bootstrap-select .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select .dropdown-menu li a span.check-mark{display:none}.bootstrap-select .dropdown-menu li a span.text{display:inline-block}.bootstrap-select .dropdown-menu li small{padding-left:.5em}.bootstrap-select .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;box-sizing:border-box}.bootstrap-select .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.fit-width .dropdown-toggle .filter-option{position:static;display:inline;padding:0}.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner,.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner-inner{display:inline}.bootstrap-select.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.show-tick .dropdown-menu .selected span.check-mark{position:absolute;display:inline-block;right:15px;top:5px}.bootstrap-select.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select .bs-ok-default:after{content:'';display:block;width:.5em;height:1em;border-style:solid;border-width:0 .26em .26em 0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle{z-index:1061}.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:before{bottom:auto;top:-4px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:after{bottom:auto;top:-4px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle .filter-option:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle .filter-option:before,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle .filter-option:after,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle .filter-option:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{width:100%;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%;float:none}.testi-item h3{font-size:25px!important}.testi-item h6{font-size:13px!important}.owl-theme .owl-controls{left:0;margin-top:0;padding:0;position:absolute;right:0;text-align:center;top:auto;width:auto}#testimonials{position:relative;display:block}#testimonials .owl-controls{bottom:10%}.top-destinations .post-title{padding-top:10px}.testi-item .hotel-title{padding:50px 0}.owl-theme .owl-controls .owl-nav [class*=owl-]{border-radius:100%;cursor:pointer;display:inline-block;color:#fff;margin:0;padding:0;text-align:center}.owl-theme .owl-controls .owl-nav [class*=owl-]:hover{color:#fff;border-color:#0b0b0b;text-decoration:none}.owl-theme .owl-controls .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:0 5px 0;background:#777;display:block;-webkit-backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#869791}.owl-carousel .animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{transition:height .5s ease-in-out}.owl-carousel{display:none;width:100%;-webkit-tap-highlight-color:transparent;position:relative;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0,0,0)}.owl-controls{position:absolute;top:0;right:0}.owl-carousel .owl-controls .owl-dot,.owl-carousel .owl-controls .owl-nav .owl-next,.owl-carousel .owl-controls .owl-nav .owl-prev{cursor:pointer;cursor:hand;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-fullwidth .owl-controls{left:0;padding:0;position:absolute;right:0;text-align:center;top:58%;width:auto}.owl-carousel .owl-controls .owl-nav .owl-next{width:60px;height:60px;line-height:53px;border:1px solid #fff!important;font-size:34px;border-radius:100%;position:absolute;bottom:0;right:auto;left:30px;background-color:transparent}.owl-carousel .owl-controls .owl-nav .owl-prev{width:60px;height:60px;line-height:53px;border:1px solid #fff!important;font-size:34px;border-radius:100%;bottom:0;position:absolute;right:30px;left:auto;background-color:transparent}.owl-carousel.owl-loaded{display:block}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel .owl-refresh .owl-item{display:none}.owl-carousel .owl-item{position:relative;min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel .owl-item img{display:block;width:100%;-webkit-transform-style:preserve-3d}.owl-carousel.owl-text-select-on .owl-item{-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.owl-carousel .owl-grab{cursor:move;cursor:-webkit-grab;cursor:-o-grab;cursor:-ms-grab;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.no-js .owl-carousel{display:block}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .4s ease}.owl-carousel .owl-item img{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;transition:scale .1s ease}.owl-carousel .owl-video-play-icon:hover{transition:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;background-size:contain;transition:opacity .4s ease}.owl-carousel .owl-video-frame{position:relative;z-index:1}.cc-window{opacity:1;transition:opacity 1s ease}.cc-window.cc-invisible{opacity:0}.cc-animate.cc-revoke{transition:-webkit-transform 1s ease;transition:transform 1s ease;transition:transform 1s ease, -webkit-transform 1s ease}.cc-animate.cc-revoke.cc-top{-webkit-transform:translateY(-2em);transform:translateY(-2em)}.cc-animate.cc-revoke.cc-bottom{-webkit-transform:translateY(2em);transform:translateY(2em)}.cc-animate.cc-revoke.cc-active.cc-bottom,.cc-animate.cc-revoke.cc-active.cc-top,.cc-revoke:hover{-webkit-transform:translateY(0);transform:translateY(0)}.cc-grower{max-height:0;overflow:hidden;transition:max-height 1s}.cc-link,.cc-revoke:hover{text-decoration:underline}.cc-revoke,.cc-window{position:fixed;overflow:hidden;box-sizing:border-box;font-family:Helvetica,Calibri,Arial,sans-serif;font-size:16px;line-height:1.5em;display:flex;flex-wrap:nowrap;z-index:99999}.cc-window.cc-static{position:static}.cc-window.cc-floating{padding:2em;max-width:24em;flex-direction:column}.cc-window.cc-banner{padding:1em 1.8em;width:100%;flex-direction:row}.cc-revoke{padding:.5em}.cc-header{font-size:18px;font-weight:700}.cc-btn,.cc-close,.cc-link,.cc-revoke{cursor:pointer}.cc-link{opacity:.8;display:inline-block;padding:.2em}.cc-link:hover{opacity:1}.cc-link:active,.cc-link:visited{color:initial}.cc-btn{display:block;padding:.4em .8em;font-size:.9em;font-weight:700;border-width:2px;border-style:solid;text-align:center;white-space:nowrap}.cc-banner .cc-btn:last-child{min-width:140px}.cc-highlight .cc-btn:first-child{background-color:transparent;border-color:transparent}.cc-highlight .cc-btn:first-child:focus,.cc-highlight .cc-btn:first-child:hover{background-color:transparent;text-decoration:underline}.cc-close{display:block;position:absolute;top:.5em;right:.5em;font-size:1.6em;opacity:.9;line-height:.75}.cc-close:focus,.cc-close:hover{opacity:1}.cc-revoke.cc-top{top:0;left:3em;border-bottom-left-radius:.5em;border-bottom-right-radius:.5em}.cc-revoke.cc-bottom{bottom:0;left:3em;border-top-left-radius:.5em;border-top-right-radius:.5em}.cc-revoke.cc-left{left:3em;right:unset}.cc-revoke.cc-right{right:3em;left:unset}.cc-top{top:1em}.cc-left{left:1em}.cc-right{right:1em}.cc-bottom{bottom:1em}.cc-floating>.cc-link{margin-bottom:1em}.cc-floating .cc-message{display:block;margin-bottom:1em}.cc-window.cc-floating .cc-compliance{flex:1 0 auto}.cc-window.cc-banner{align-items:center}.cc-banner.cc-top{left:0;right:0;top:0}.cc-banner.cc-bottom{left:0;right:0;bottom:0}.cc-banner .cc-message{flex:1}.cc-compliance{display:flex;align-items:center;align-content:space-between}.cc-compliance>.cc-btn{flex:1}.cc-btn+.cc-btn{margin-left:.5em} \ No newline at end of file diff --git a/trunk/web/css/my-custom.css b/trunk/web/css/my-custom.css new file mode 100644 index 00000000..592ccb10 --- /dev/null +++ b/trunk/web/css/my-custom.css @@ -0,0 +1 @@ +@import url('my-custom-blessed1.css?z=1543944569343');@media print{.cc-revoke,.cc-window{display:none}}@media screen and (max-width:900px){.cc-btn{white-space:normal}}@media screen and (max-width:414px) and (orientation:portrait),screen and (max-width:736px) and (orientation:landscape){.cc-window.cc-top{top:0}.cc-window.cc-bottom{bottom:0}.cc-window.cc-banner,.cc-window.cc-left,.cc-window.cc-right{left:0;right:0}.cc-window.cc-banner{flex-direction:column}.cc-window.cc-banner .cc-compliance{flex:1}.cc-window.cc-floating{max-width:none}.cc-window .cc-message{margin-bottom:1em}.cc-window.cc-banner{align-items:unset}}.cc-floating.cc-theme-classic{padding:1.2em;border-radius:5px}.cc-floating.cc-type-info.cc-theme-classic .cc-compliance{text-align:center;display:inline;flex:none}.cc-theme-classic .cc-btn{border-radius:5px}.cc-theme-classic .cc-btn:last-child{min-width:140px}.cc-floating.cc-type-info.cc-theme-classic .cc-btn{display:inline-block}.cc-theme-edgeless.cc-window{padding:0}.cc-floating.cc-theme-edgeless .cc-message{margin:2em 2em 1.5em}.cc-banner.cc-theme-edgeless .cc-btn{margin:0;padding:.8em 1.8em;height:100%}.cc-banner.cc-theme-edgeless .cc-message{margin-left:1em}.cc-floating.cc-theme-edgeless .cc-btn+.cc-btn{margin-left:0}body.no-js .lazy{display:none}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:'';content:none}table{border-collapse:collapse;border-spacing:0}strong{color:#444}@-ms-viewport{width:device-width}@-o-viewport{width:device-width}@viewport{width:device-width}body{color:#444;font-size:15px;font-family:Raleway,sans-serif;font-style:normal;font-weight:400;line-height:26px;background:#fff;padding:0;margin:0;height:100%;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;overflow-x:hidden;white-space:normal;position:relative}input,select,textarea{font-size:15px;font-style:normal;font-weight:300}.sound{border:1px solid #fff;width:100%}.alignleft{float:left;margin:5px 20px 5px 0}.alignright{float:right;margin:20px 0 20px 20px}.aligncenter{margin-left:auto;margin-right:auto;display:block;clear:both}blockquote{border:0;color:#444;display:block;margin:10px 0;line-height:2;font-size:18px;padding:20px;font-weight:400;font-style:italic}h1,h2,h3,h4,h5,h6{font-weight:400;margin-bottom:20px;color:#777;line-height:1.2em}h1{font-size:25px;position:relative;padding-bottom:8px;border-bottom:1px solid #ffc926}h2{font-size:18px;font-weight:700;position:relative}h3{font-size:18px;color:#e5aa30;position:relative;padding-bottom:8px;padding-top:8px;font-weight:500;border-bottom:1px solid #919191}h4{font-size:20px}h5{font-size:18px}h6{font-size:17px;font-weight:700}p{margin-bottom:20px}a,a>*{color:#444;text-decoration:none}a:focus,a:hover,a>:hover{text-decoration:none;outline:0;color:#444}em{font-style:italic}strong{font-weight:700}p.ft{text-align:justify}p.lead{font-size:16px;padding:0;letter-spacing:.6px;line-height:1.8}::-moz-selection{color:#fff;text-shadow:none;background:#444}:selection{color:#fff;text-shadow:none;background:#444}.first{clear:both}.last{margin-right:0}.successful{margin-bottom:20px;display:block;position:relative}.btn{text-transform:uppercase;border-radius:0;font-weight:400;padding:12px 12px}.btn-lg,.btn-primary{font-size:16px;line-height:1;font-weight:600}.btn-group-lg>.btn,.btn-lg{padding:10px 27px}.btn-white,.btn-white.active,.btn-white.focus,.btn-white:active,.btn-white:focus,.btn-white:hover,.open>.dropdown-toggle.btn-white{color:#777;background-color:#fff;border-color:#fff}.btn-default,.btn-primary.active,.btn-primary.focus,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#648859;border-color:#648859}.btn-default,.btn-primary.active,.btn-primary.focus,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#777;border-color:#777}.btn,.flickrwidget img,.post-media img,.social-footer a i,.topbar-social li,a{transition:all .3s ease-in-out}.border-radius{border-radius:120px}.btn-default.btn-normal,.btn-primary.btn-normal,.btn-white.btn-normal{font-size:15px!important;height:45px;line-height:21px;padding:13px 30px!important}.btn-default.btn-lg,.btn-primary.btn-lg,.btn-white.btn-lg{font-size:15px!important;height:50px!important;line-height:20px;padding:16px 45px!important}.btn-default.btn-sm,.btn-primary.btn-sm,.btn-white.btn-sm{font-size:13px!important;height:35px;line-height:17px;padding:9px 17px!important}.btn-default i,.btn-primary i{color:#fff}.btn-image{position:relative}.btn-image img{position:relative;top:0;left:0;bottom:0;width:100%;right:0}.btn-image span{top:50%;position:absolute;margin:-20px auto;left:0;right:0;text-align:center}#layer-dialog-box a[id^=video_],a[id^=video_]{text-transform:uppercase;border-radius:0;display:inline-block;padding:6px 12px 6px 26px;margin-bottom:6px;font-size:14px;font-weight:400;line-height:1.42857143;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid #eee;position:relative;color:#444;background-color:#eee}#layer-dialog-box a[id^=video_]:hover,a[id^=video_]:hover{color:#444;background-color:transparent}#layer-dialog-box a[id^=video_]:hover:before,a[id^=video_]:hover:before{color:#444}#layer-dialog-box a[id^=video_]:before,a[id^=video_]:before{transition:.5s ease;-o-transition:.5s ease;-webkit-transition:.5s ease;top:0;width:20px;left:4px;content:'\f078';position:absolute;text-align:center;font-weight:400;font-family:FontAwesome;line-height:30px;font-size:14px}.googlemap{width:100%;border:1px solid #fff}.map{pointer-events:none}.dropdown .btn-white{border:1px solid #ddd;font-family:Raleway;font-weight:500;background:#fff!important;color:#444!important;box-shadow:none!important;font-size:15px;font-weight:300;text-transform:none}.dropdown .btn-white .fa{font-size:24px}.dropdown .btn-white{padding-right:35px}.input-group-addon{background:#fff!important;border-radius:0!important}.bootstrap-select.btn-group .dropdown-menu li a span.text{color:#3b3b3b!important}#loader{overflow-x:hidden;overflow-y:hidden;vertical-align:middle;background-color:#fbfbfb;position:fixed;display:table;width:100%;top:0;height:100%;min-height:100%;z-index:99999}.loader-container{position:relative;display:table-cell;vertical-align:middle;z-index:12;text-align:center}.loader-back-logo{margin-top:-10px;font-size:26px}.loader{margin-top:-20px;margin-left:0}.deals-wrapper{background:#ddd;position:relative;display:block}.post-media{width:100%;display:block;overflow:hidden;position:relative}.deals-count{position:absolute;bottom:0;right:0;padding:10px 15px;top:0;background-color:rgba(0,0,0,.7);left:auto}.deals-count .dash .digit{font-size:21px;padding:0;letter-spacing:0;width:auto;color:#fff;background-color:transparent;display:inline-block;margin:0;text-align:left}.deals-count .dash_title{text-align:left;font-size:11px;color:#fff;line-height:5}.deals-count .dash{height:25%}.leave-a-feedback,.review-total{background:#eee;padding:26px;width:100%}.leave-a-feedback{margin-bottom:60px}.leave-a-feedback h6{padding:0;margin:0}.review-list h5{display:inline-block;font-size:13px;min-width:140px}.travel-icon-list{font-size:15px;font-weight:400}.icon-container{width:37px;height:37px;line-height:37px;margin-right:10px;display:inline-block;text-align:center;font-size:18px}.border-bottom2{border-bottom:1px solid #eee;margin-bottom:22px;padding:0}.travel-list{margin:60px 0}.travel-list h5{padding-top:10px}.travel-list h5 span{font-size:13px}.list-style-travel{padding-top:30px}.travel-list p{font-size:15px;margin:10px 0 5px;font-weight:700}.travel-list .lead{font-weight:300;line-height:1.4;margin:0;font-size:13px;font-style:italic}.selectmini .bootstrap-select>.btn{width:auto}.selectmini .bootstrap-select>.btn .dropdown-menu{max-width:80px!important}.selectmini .bootstrap-select.btn-group .dropdown-menu{left:-2px;min-width:70px;padding:0!important}.bootstrap-select.btn-group .dropdown-menu{padding:0}.bookform{overflow:visible}.container-form{background-color:rgba(255,255,255,.9);padding:0;box-shadow:0 0 10px rgba(0,0,0,.4)}.bookform .form-control{width:100%}.bookform .btn{height:45px;padding-top:10px;padding-left:20px;padding-right:20px;font-weight:600}.bookform .btn i{font-size:24px}.travel-title{padding-bottom:30px}.travel-title hr{width:35px;border-width:1px;width:100%}.travel-title .left{margin-left:0}.travel-widget{position:relative;display:block;overflow:hidden;margin:30px 0 0}.travel-widget p{font-weight:600;margin-bottom:10px}.travel-widget small{display:list-item;font-size:13px;list-style:inside none disc}.travel-wrapper .rating{font-size:15px;display:block;position:relative;margin-bottom:15px}.travel-wrapper .post-title{margin-top:30px}.travel-wrapper .post-title a{color:#444}.travel-wrapper{float:left;width:100%;margin-bottom:15px;border:1px solid #c3c3c3}.travel-wrapper .item{cursor:pointer}.travel-wrapper .box_mid{line-height:1.4em;padding-top:10px;padding-right:10px;padding-left:10px;padding-bottom:10px;min-height:132px}.travel-wrapper h5{font-weight:700}.travel-wrapper .item:hover .item-img div.img-background{-webkit-transform:scale(1.1,1.1);transform:scale(1.1,1.1)}.travel-wrapper .item .item-img div.img-background{width:100%;transition:all .3s ease;-webkit-transform:scale(1,1);transform:scale(1,1);background:url(/images/welcome.jpg) no-repeat center center;background-size:cover;height:160px}.travel-wrapper .item .item-img div.img-background.lower-height{width:auto;min-height:190px}.travel-wrapper .item .item-img{overflow:hidden;display:block;height:180px}.travel-wrapper .item .price{color:#558c55;font-weight:700;padding:8px 0 0}.travel-wrapper .item>a.item-button{text-transform:uppercase;display:block;position:relative;background-color:#648859;color:#fff;padding:8px 58px 8px 20px;font-size:14px;font-weight:700;text-overflow:ellipsis;word-wrap:break-word;overflow:hidden;line-height:1.45em;height:3.6em}.travel-wrapper .item>a.item-button.single_line{padding-top:17px;height:3.6em}.travel-wrapper .item>a.item-button.dobble_line{height:3.6em;padding-top:0}.travel-wrapper .item>a.item-button.dobble_line span{color:#fff;height:3.6em;display:table-cell;vertical-align:middle}.travel-wrapper .lb{position:relative}.travel-wrapper .lb .cstar_right{position:absolute;z-index:10;background:url(../images/star.png) no-repeat scroll center center/cover rgba(0,0,0,0);width:60px;height:60px;padding-top:20px;font-weight:700;text-align:center;right:4px;top:6px;color:#1a457c}.travel-wrapper .lb .cstar_left{position:absolute;z-index:10;background:url(../images/star.png) no-repeat scroll center center/cover rgba(0,0,0,0);width:60px;height:60px;padding-top:20px;font-weight:700;text-align:center;left:4px;top:6px;color:#1a457c}.travel-wrapper .lb .cprice{position:absolute;z-index:10;left:0;top:140px;background-color:#648859;color:#fff;padding:4px 6px 4px 12px;font-weight:700}.travel-wrapper .lb .cdiscount{position:absolute;z-index:10;right:0;top:23px;background-color:#ffc926;color:#1a457c;padding:4px 12px 4px 6px;font-weight:700}.travel-wrapper .item .hl5{text-overflow:ellipsis;word-wrap:break-word;overflow:hidden;height:1.4em;line-height:1.4em!important}.travel-wrapper .item p{text-overflow:ellipsis;word-wrap:break-word;overflow:hidden;height:4em;line-height:1.4em}.travel-wrapper .item>a.item-button.one-line{line-height:56px;padding:0 58px 0 20px}.item-switch{padding-top:0;position:relative;display:block;float:left;width:100%}.item-switch>a.item-button-next,.item-switch>a.item-button-prev{text-transform:uppercase;display:block;position:relative;background-color:#648859;color:#fff;padding:4px 12px 3px 12px;font-size:14px;font-weight:700;width:49%}.item-switch>a.item-button-prev{float:left;text-align:right}.item-switch>a.item-button-next{float:right;text-align:left}.item-switch>a.item-button-prev:hover{color:#fff;background-color:#ffc926}.item-switch>a.item-button-next:hover{color:#fff;background-color:#ffc926}.travel-wrapper .item>a.item-button:hover{color:#fff;background-color:#ffc926}.travel-wrapper .item>a.item-button:hover:after{background-color:#f2b600}.travel-wrapper .item>a.item-button:after{transition:.5s ease;-o-transition:.5s ease;-webkit-transition:.5s ease;top:0;bottom:0;width:46px;right:0;background-color:#4d6945;content:'';position:absolute;text-align:center;font-weight:400;font-family:FontAwesome;line-height:52px;font-size:26px}.item-switch>a.item-button-prev:hover:before{background-color:#f2b600}.item-switch>a.item-button-prev:before{transition:.5s ease;-o-transition:.5s ease;-webkit-transition:.5s ease;top:0;bottom:0;width:30px;left:0;background-color:#4d6945;content:'\f104';position:absolute;text-align:center;font-weight:400;font-family:FontAwesome;line-height:34px;font-size:26px}.item-switch>a.item-button-next:hover:after{background-color:#f2b600}.item-switch>a.item-button-next:after{transition:.5s ease;-o-transition:.5s ease;-webkit-transition:.5s ease;top:0;bottom:0;width:30px;right:0;background-color:#4d6945;content:'';position:absolute;text-align:center;font-weight:400;font-family:FontAwesome;line-height:34px;font-size:26px}.single-travel-image{position:relative}.single-travel-image img{width:100%}.sidebar-price,.single-travel-image .price{position:absolute;top:30%;right:5%;padding:25px 40px;background-color:rgba(255,255,255,.8)}.price,.sidebar-price{text-align:center}.price h2 span,.sidebar-price h2 span{font-size:15px;padding:0}.price h2,.sidebar-price h2{margin-bottom:0;font-size:45px;padding:0}.price h2 small{color:#444}.single-travel-bottom{background-color:#eee;padding:20px;margin-bottom:0;text-align:center}.single-travel-bottom p i{padding-right:5px;padding-left:30px}.single-travel-bottom p{margin-bottom:0;color:#444}.single-travel-image .thumbnails{position:absolute;bottom:15%;left:3%;padding:0}.thumbnails{max-width:100px}.thumbnails img{max-width:100px;border:2px solid #fff;margin:5px 0}.travel-hr{margin:40px 0}.notice{font-size:13px;font-style:italic}.widget .sidebar-price{position:relative;margin:30px 0 0 0!important;background:#eee;left:0!important;right:0!important}.widget .sidebar-price .btn{color:#fff!important}.table>tbody>tr>.calendar-day-disabled{background-color:#f0bcbc}.table>tbody>tr>.admin-calendar-day-reservation{background-color:#f0bcbc}.table>tbody>tr>.admin-calendar-day-free{background-color:#648859}.table>tbody>tr>.calendar-day-reservation-begin{background-color:#f0bcbc;background:linear-gradient(to bottom right,#f2f2f2 0,#f2f2f2 49%,#f0bcbc 50%,#f0bcbc 100%)}.table>tbody>tr>.calendar-day-reservation-end{background-color:#f2f2f2;background:linear-gradient(to bottom right,#f0bcbc 0,#f0bcbc 49%,#f2f2f2 50%,#f2f2f2 100%)}.table>tbody>tr>.admin-calendar-day-reservation-begin{background-color:#f0bcbc;background:linear-gradient(to bottom right,#648859 0,#648859 49%,#f0bcbc 50%,#f0bcbc 100%)}.table>tbody>tr>.admin-calendar-day-reservation-end{background-color:#648859;background:linear-gradient(to bottom right,#f0bcbc 0,#f0bcbc 49%,#648859 50%,#648859 100%)}.image-title{padding:4px 6px;color:#fff;font-size:16px;font-weight:600;background-color:rgba(0,0,0,.66)}.form-box label.required:after{color:#ffc926;position:absolute;margin-left:4px;font-family:FontAwesome;font-weight:400;font-size:12px;content:"\f069"}.form-box div.required:before{color:#ffc926;position:absolute;margin-right:20px;right:0;top:1px;font-family:FontAwesome;font-weight:400;font-size:12px;content:"\f069";z-index:1000}.form-box .table>tbody>tr>td{position:relative}.form-box .st-travelers div.required:before{margin-right:15px;right:0;top:10px}@media (max-width:998px){.form-box .st-travelers div.required:before{top:34px}}.btn-primary.disabled:hover{background-color:#648859;border-color:#648859;opacity:.65}#map{height:650px;width:100%}#map img{max-width:inherit}.map{position:relative}.infobox{display:inline-block;position:relative}.table-responsive{overflow-x:visible!important;overflow-y:visible!important}.infobox img{width:80px!important;padding-right:10px}.infobox .title{font-size:13px;font-weight:700;margin-top:0;margin-bottom:0;text-transform:uppercase;padding-bottom:5px}.infobox .title a{font-weight:700}.service-style{margin:10px 0}.service-style .icon-container{display:inline-block;font-size:31px;height:70px;line-height:70px;margin-right:10px;text-align:center;width:70px}.btn-over-slider{position:absolute;right:25px;top:70px;z-index:1000}.btn-over-slider .btn{border:1px solid #fff;box-shadow:0 0 8px 5px rgba(255,255,255,.4)}.btn-over-slider-bottom{top:280px!important}.st-slider-booking-btn-bottom{background-color:#777!important}.price-over-slider{position:absolute;left:15px;top:75px;z-index:1000}.price-over-slider .cprice{background-color:#648859;color:#fff;padding:4px 6px 4px 12px;font-weight:700;border:1px solid #fff;border-left:none}.owl-item-container .quick-view{position:absolute;left:50%;top:50%;margin:-21px 0 0 -90px;padding:16px 8px;background:rgba(255,201,38,.8);color:#fff;width:180px;text-align:center;font-size:16px;font-weight:500;box-shadow:rgba(0,0,0,.16) 0 2px 8px;transition:all .3s ease}.owl-item-container .quick-view a{color:#fff}.owl-item-container .quick-view:hover{background:#ffc926}.owl-item-container .quick-view{-webkit-transform:scale(0,0);transform:scale(0,0);filter:alpha(Opacity=0);opacity:0}.owl-item-container:hover .quick-view{-webkit-transform:scale(1,1);transform:scale(1,1);filter:alpha(Opacity=100);opacity:1}.owl-item-full{padding-left:8px;padding-right:8px}.owl-fullwidth .owl-nav{top:50%;position:absolute;width:100%;color:#fff}.owl-carousel .owl-nav .owl-next{width:60px;height:60px;line-height:53px;border:1px solid #fff!important;font-size:34px;border-radius:100%;position:absolute;bottom:0;right:0;right:auto;left:-10px;background-color:#ffc926;display:inline-block;text-align:center}.owl-carousel .owl-nav .owl-next:hover{background-color:#777}.owl-carousel .owl-nav .owl-prev{width:60px;height:60px;line-height:53px;border:1px solid #fff!important;font-size:34px;border-radius:100%;bottom:0;left:0;position:absolute;right:-10px;left:auto;background-color:#ffc926;display:inline-block;text-align:center}.owl-carousel .owl-nav .owl-prev:hover{background-color:#777}.noborder{border:0!important}.mini-desti{padding:30px 0;border-bottom:1px solid #eee}.mini-desti h6{margin:0}.mini-desti .rating{margin:5px 0;display:block}.mini-desti img{width:100%}.home-message{padding:0;padding-top:0;min-height:580px}.home-message.small{min-height:150px}.home-info-box{background:#ffc926;float:right;width:340px;height:90px;border-radius:0 0 8px 8px;margin-right:-15px;z-index:200;position:relative}.home-info-box .eKomi-header{float:left;padding-top:8px;padding-left:10px}.home-info-box .c4{float:right;width:260px;font-size:14px;font-weight:500;text-align:left;margin-top:6px}.home-info-box .c4 li{margin:0;margin-left:20px}.home-info-box .c4 li:before{color:#558c55}.form-box{background-color:#eaeaea;display:inline-block;padding:20px 12px 20px 12px;margin-bottom:20px;width:100%}.form-box h7{color:#666}.form-box h5{padding-bottom:10px;border-bottom:1px solid #ffc926}.booking_form .table{font-family:Raleway,sans-serif}.booking_form .table.first-table .bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:92%}.booking_form .table>tbody>tr>td{text-align:left;background-color:transparent;border:none;border-bottom:1px solid #fff}.booking_form #no-more-tables.table{font-family:Raleway,sans-serif}.booking_form #no-more-tables .table>thead>tr>th{background-color:transparent;font-weight:600;border:none;border-bottom:1px solid #fff;padding:0}.booking_form #no-more-tables .form-control{padding:10px;margin-bottom:0}@media (max-width:992px){.booking_form #no-more-tables td{padding-top:30px;padding-left:6px}.booking_form #no-more-tables td:last-child{padding-left:6px}}@media (max-width:786px){.booking_form .table>tbody>tr>td{display:block;width:92%}.booking_form .table.first-table .bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:98%}.booking_form .table>tbody>tr>td:first-child{border-bottom:none;font-weight:700}.booking_form .form-box{padding:20px 0 20px 0}.booking_form .btn-default.btn-lg,.booking_form .btn-primary.btn-lg,.booking_form .btn-white.btn-lg{height:60px!important;padding:2px 45px 0!important}}@media (max-width:320px){.booking_form .table.first-table .bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:82%}}.home-message,.home-message h1{color:#fff}.home-message .btn{margin-top:10px}.nav-tabs{border:none}.home-form .nav-tabs i{vertical-align:middle}.home-form .nav-tabs>li>a{color:#444;text-align:center;text-transform:uppercase;font-size:15px;padding:20px 34px 20px 34px;border:0 solid #eeebeb!important;border-radius:0;margin-right:0;width:auto;font-weight:600;background:#eeebeb;background:rgba(238,235,235,.9)}.home-form .nav-tabs>li.active>a i,.home-form .nav-tabs>li.active>a:focus i,.home-form .nav-tabs>li>a:hover i{color:#fff!important}.home-form .nav-tabs>li>a i{font-size:28px;line-height:28px}.homeform{padding:200px 0 40px}.home-form .nav-tabs>li{border-right:1px solid #aaa;border-bottom:1px solid #aaa}#withphone .home-form .nav-tabs>li{width:auto}#withphone .home-form .tab-pane{margin-top:3px}#withphone.absolute{margin-top:-75px}#withphone.absolute li h6{color:#fff;padding:20px}.home-form .tab-pane{padding:10px 10px 0 10px}.home-form .tab-pane .head_tap{font-size:22px;position:relative;padding-bottom:10px;border-bottom:1px solid #ffc926;font-weight:700;margin-top:8px;margin-bottom:10px;color:#648859;line-height:1.2em;text-align:center}.home-form .bootstrap-select>.btn{width:100%;position:relative;display:block;margin:0;color:#666!important;font-weight:600}.home-form .bootstrap-select .icon-search{vertical-align:bottom!important;font-size:31px}.make-margin{margin:30px 0 30px!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:100%}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{color:#fff;font-size:12px;background:#ffc926;border-color:#c3c3c3}.ui-datepicker .ui-datepicker-title{color:#c3c3c3;font-size:16px;font-weight:400;line-height:1.8em;margin:0 2.3em;text-align:center;text-transform:uppercase}.ui-state-focus,.ui-state-hover,.ui-widget-content .ui-state-focus,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-focus,.ui-widget-header .ui-state-hover{background:#fff!important;border:0;color:#777!important}.ui-widget-header{background:#fff!important;border:0 solid #c3c3c3!important;color:#c3c3c3!important;font-weight:700}.ui-widget-content{background:#ffc926;border:5px solid #c3c3c3;color:#fff;padding:0}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{background:#ffc926;border-color:#c3c3c3;color:#777;font-weight:400;font-size:12px;text-align:center}.ui-datepicker th,.ui-widget-header{background:#ffc926;border:1px solid #c3c3c3;color:#3b3b3b!important;font-family:raleway!important;font-weight:300}#countdown{text-align:center;margin:100px auto 0}.dash{height:100px;line-height:1.4;display:block;overflow:hidden;position:relative}.dash .digit{font-size:63px;line-height:60px;padding:10px 5px 0;border-radius:3px;font-weight:700;display:inline-block;text-align:center;overflow:hidden;position:relative}.dash_title{position:absolute;display:block;bottom:0;left:0;right:0;text-align:center;font-size:15px;text-transform:uppercase}.contact-info ul li{list-style:none;margin-top:20px}.contact-info ul li i{padding-right:5px;vertical-align:sub;margin-top:3px}.form-control{font-family:Raleway,sans-serif;font-weight:600;border-color:#ddd;height:45px;border-radius:0;padding:10px 10px;margin-bottom:16px;box-shadow:none}.form-inline .dropdown{margin-bottom:16px}.form-bottom,.form-inline .form-bottom{margin-bottom:16px;width:100%}.pricing-table-body ul li{list-style:none;border-bottom:1px solid #ddd;padding:10px 0}.pricing-table-body ul li:last-child{border-bottom:0 solid #aaa}.pricing-price sup{top:auto;bottom:0!important;font-family:arial!important;font-size:21px!important;font-weight:400!important}.pricing-price{padding:14px;position:relative}.bestoffer{background:#222;color:#fff;display:block;font-size:12px;font-weight:700;height:65px;left:15px;line-height:1.5;padding-top:13px;position:absolute;top:-30px;width:65px}.pricing-price h2{margin:0;font-size:55px}.pricing-price h4{padding:0;margin:0;font-size:16px}.pricing-table-body,.pricing-table-footer,.pricing-table-header{background:#f6f6f6;display:block;text-align:center;padding:25px;position:relative}.pricing-table-footer h3,.pricing-table-footer h3 a,.pricing-table-header h3{color:#fff;font-size:16px;letter-spacing:1px;padding:0;margin:0;text-transform:uppercase}.circle-stat{position:relative}.circle-stat h3{font-size:30px;left:0;margin:-20px auto;position:absolute;right:0;top:50%}.circle-stat h3 span{font-family:Raleway}.stat-details h3{font-size:15px;padding:20px 0 5px}.panel-title{line-height:16px}.panel-heading{border-radius:0!important;padding:18px 24px}.panel-heading h3{color:#fff;font-size:15px;padding:0;margin:0;display:inline-block}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top:0 none}.panel p{margin-bottom:0}.panel-heading i{font-size:21px;margin:-2px}.panel{border-color:#fff;border-radius:0!important;box-shadow:none}.accordion-toggle-2 .panel-body{background:#fff!important;border-left:1px solid #dadada!important;border-right:1px solid #dadada!important;border-bottom:1px solid #dadada!important}.accordion-toggle-2 .panel-heading{background:#fff!important;border:1px solid #dadada!important}.accordion-toggle-2 .panel-heading h3,.accordion-toggle-2 .panel-heading i{color:#444}.content-copy .tab-content ul{margin-bottom:20px}.content-copy .tab-content ul li{margin:5px 22px;list-style:none}.content-copy .tab-content ul li:before{font:normal normal normal 14px/1 FontAwesome;content:'\f005';display:block;position:relative;max-width:0;max-height:0;left:-20px;top:5px;color:#ffc926}.c3 li span{padding-right:10px}.c1{padding-left:10px!important;color:#3b3b3b}.c4{padding-left:20px!important;color:#3b3b3b}.c4{font-weight:700}.c1 li,.c2 li,.c3 li,.c4 li{margin:15px 15px;list-style:none}.c1 li{margin:5px 15px;list-style:none}.c1 li a{color:#3b3b3b}.c1 li a:hover{color:#e5aa30}.c1 li:before{content:'\2022';display:block;position:relative;max-width:0;max-height:0;left:-20px;top:0;font-size:40px}.c4 li:before{font-family:trips;content:"\e034";display:block;position:relative;max-width:0;max-height:0;left:-30px;top:0;font-size:24px}.c2 li span{color:#fff;margin-right:10px;text-align:center;width:25px;font-size:13px;line-height:25px;height:25px;border-radius:25px;display:inline-block}.progress{border-radius:0;height:20px;margin:20px 0;background-color:#fff;box-shadow:none;border:0 solid #ddd}.progress-bar{float:left;width:0%;height:100%;overflow:visible;color:#fff;text-align:center;background-color:#696969;transition:width 1.1s ease}.progress{overflow:initial;position:relative}.progress .progress-bar{position:absolute;z-index:10;line-height:20px}.progress .progressbar-back-text{position:absolute;width:100%;height:100%;font-size:12px;line-height:20px;text-align:center}.skills h3{font-size:15px;text-transform:uppercase}.progress .progressbar-front-text{width:100%;font-size:12px;line-height:20px}.progress-bar span{background:none repeat scroll 0 0 #000!important;border-radius:4px!important;color:#fff!important;display:block;font-size:14px;font-weight:700;height:25px;line-height:25px;overflow:visible;position:absolute;right:0;text-align:center;top:-37px;width:45px;z-index:9999}.progress-bar span:after{top:100%;left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-color:transparent;border-top-color:#000;border-width:4px;margin-left:-4px}.price-range img{margin-bottom:30px;z-index:1000;position:relative}.price-details ul li span{display:-moz-stack;width:114px}.price-details ul{margin-top:10px}.price-details ul li{list-style:none;font-size:13px}.bookprice{display:block;position:relative;padding:20px;background:#fff6cc}.bookprice .lead{font-style:italic;font-size:14px}.bookprice span.pull-right{text-decoration:line-through}.labels-wrapper{margin-bottom:20px}.labels-wrapper label{margin-bottom:20px}.modal{z-index:9999}body.modal-open{padding-right:0!important}.modal-open{overflow:auto!important}.modal-dialog{overflow-y:initial!important}.modal-body{max-height:85vh;overflow-y:auto}@media screen and (max-height:1000px){.modal-body{max-height:80vh}}@media screen and (max-height:800px){.modal-body{max-height:75vh}}@media screen and (max-height:600px){.modal-body{max-height:70vh}}.modal-body .hide-in-modal{display:none}.background{background-repeat:no-repeat;background-size:100% 100%;background-position:50% 50%;background-position:50% 50%!important\9}.fullscreen.not-overflow,.fullscreen.not-overflow .content-a,.not-fullscreen,.not-fullscreen .content-a{height:100%;overflow:hidden}.section{background-color:#fff;position:relative;display:block;padding:30px 0;padding-top:20px;overflow:hidden}.fullscreen{width:100%;min-height:100%;padding-top:150px}.section.padding-top-20{padding-top:20px}.section.padding-top-30{padding-top:30px}.section.padding-0{padding:0}.section.margin-bottom-20{margin-bottom:20px!important}.section-grey{background-color:#eee}.section-light{background-color:#f6f6f6}#page-header{background:url(images/page-header.jpg) no-repeat scroll center center/cover rgba(0,0,0,0);display:block;padding:70px 0;position:relative;text-align:center}.absolute-section{position:absolute;width:100%}.absolute{padding:0;position:relative;margin-top:-92px;z-index:100;display:block;width:100%}.parallax-slider{z-index:100;height:380px}.parallax-buttons ul{list-style:none}.parallax-buttons ul li a{content:"";width:30px;height:30px;background-color:#ffc926;border-radius:50%}.active,.carousel,.item{height:100%}.carousel-inner{height:100%;margin-top:0}.fill{width:100%;height:280px;background-position:center;background-size:cover;-o-background-size:cover}.carousel.fewo .fill{height:480px}.carousel.fewo .carousel-indicators .active,.carousel.fewo .carousel-indicators li,.carousel.fewo .carousel-indicators li:hover{width:12px;height:12px}.carousel.fewo .carousel-indicators{bottom:0}.start-slider{padding-top:148px}.start-slider .home-message{padding-top:0}.start-slider .fill{height:380px}@media (max-width:768px){.start-slider{padding-top:160px}.start-slider .home-message{padding-top:0}.start-slider .fill{height:260px}}.container-absolute{position:absolute}.absolute-carousel{position:absolute;z-index:9999;width:100%;top:49px}.carousel-indicators li{width:26px;height:26px;background-color:#fff;border:1px solid #ffc926;border-radius:50%;box-shadow:0 0 8px rgba(0,0,0,.4)}.carousel-indicators .active,.carousel-indicators li:hover{width:26px;height:26px;background-color:#ffc926;border:1px solid #fff;border-radius:50%;box-shadow:0 0 8px rgba(0,0,0,.4)}a.carousel-control .glyphicon{color:#ffc926}.px-bullets-count{position:relative;right:-50%;width:100%}.px-bullets{position:absolute;bottom:20px;right:50%;bottom:-20px}.px-bullet{width:26px;height:26px;background-color:#fff;border:1px solid #ffc926;border-radius:50%;cursor:pointer;float:left;margin:5px;box-shadow:0 0 8px rgba(0,0,0,.4)}.px-bullet:hover{background-color:#ffc926;border:1px solid #fff}.px-bullet-selected{background-color:#ffc926;border:1px solid #fff}#ui-datepicker-div{z-index:1000!important}i{vertical-align:middle}#page-header .rating{padding-right:10px}#page-header p{margin-top:20px;margin-bottom:0}#page-header h3{font-size:25px;margin:0;padding:0;text-transform:uppercase;z-index:1}.breadcrumb-holder{padding-top:20px;padding-bottom:10px}.breadcrumb>li+li::before{content:">";padding:0 2px 0 0;font-size:12px}.breadcrumb{background-color:transparent;border-radius:0;position:absolute;left:15px;top:-10px;font-weight:500;list-style:outside none none;margin:0;padding:0;padding-left:5px}.breadcrumb li a,.breadcrumb li a>span{color:#444!important}.breadcrumb li a.on,.breadcrumb li a.on>span{color:#e5aa30!important;font-weight:600}.ekomi_prop{margin-top:-10px}.prop{text-align:center;position:relative;background-color:#f6f6f6;padding:71px 20px 18px}.prop .maxheight{min-height:160px}.prop .fa{color:#fff;line-height:75px;font-size:36px;text-align:center;position:absolute;border-radius:500px;display:block;border:6px solid #fff;width:84px;height:84px;left:50%;margin-left:-42px;top:-41px;background-color:#ffc926}.prop .title{margin-bottom:12px;font-weight:500;font-size:28px;line-height:36px;text-transform:uppercase}.prop p{margin-bottom:0;padding:0 20px}#content section{margin-bottom:40px}#content section .hl2{font-size:25px;position:relative;padding-bottom:8px;border-bottom:1px solid #ffc926;font-weight:400;margin-bottom:20px;color:#777;line-height:1.2em;vertical-align:baseline}#content section .hl5{font-size:16px;position:relative;padding-bottom:8px;font-weight:700;margin-bottom:10px;color:#777;line-height:1.2em;vertical-align:baseline}#content section .hl5.bottom{margin-bottom:30px}#content section .content-copy h5{font-weight:700}#content section .content-copy p{line-height:1.4em}#content section .nav-tabs{padding-bottom:20px;overflow-x:auto;overflow-y:hidden;display:-webkit-box;display:-moz-box;overflow-x:hidden}#content section .nav-tabs .fa{color:#ffd659;padding-bottom:3px}#content section .nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:0;color:#5e5e5e;background-color:#c3c3c3;font-weight:600;white-space:nowrap;padding:10px 10px;cursor:pointer}#content section .nav-tabs>li.active>a,#content section .nav-tabs>li.active>a:focus,#content section .nav-tabs>li.active>a:hover,#content section .nav-tabs>li>a:focus,#content section .nav-tabs>li>a:hover{color:#fff;background-color:#ffc926;border:1px solid #ddd;border-bottom-color:transparent;cursor:pointer}#content section .nav-tabs>li.active>a .fa,#content section .nav-tabs>li.active>a:focus .fa,#content section .nav-tabs>li.active>a:hover .fa,#content section .nav-tabs>li>a:focus .fa,#content section .nav-tabs>li>a:hover .fa{color:#fff}#content section .scroller-nav-tabs{display:none}#content section .scroller-right-nav-tabs{display:none}#content section .scroller-left-nav-tabs{display:none}@media (max-width:992px){#content section .scroller-nav-tabs{display:block;text-align:center;cursor:pointer;display:none;padding:4px;padding-top:6px;white-space:no-wrap;vertical-align:middle;background-color:#fff}#content section .scroller-right-nav-tabs{float:right}#content section .scroller-left-nav-tabs{float:left}#content section .wrapper-nav-tabs{position:relative;margin:0 auto;overflow:hidden;padding:5px;height:50px}#content section .wrapper-nav-tabs .list-nav-tabs{position:absolute;left:0;top:0;min-width:3000px;margin-top:0}#content section .wrapper-nav-tabs .list-nav-tabs li{display:table-cell;position:relative;text-align:center;cursor:grab;cursor:-webkit-grab;color:#efefef;vertical-align:middle;width:auto}}.result-wrapper .table{font-size:.9em}.result-wrapper .table>thead>tr>th{padding:4px}.result-wrapper .result{background-color:#eaeaea;display:inline-block;padding:20px 12px 20px 12px;margin-bottom:20px;width:100%;margin-bottom:-7px}@media (max-width:992px){.result-wrapper .result .image img.img-responsive{margin:0 auto}}.result-wrapper .result .title{font-size:18px;font-weight:700;margin-top:6px;margin-bottom:12px}.result-wrapper .result .dates-count{text-align:right;font-style:italic;color:#868686}.result-wrapper .result .price{font-weight:700;background-color:#558c55;font-size:20px;padding:4px 8px;color:#fff}.result-wrapper .result .price .small{font-size:15px;font-style:italic}.table{font-family:Oswald,serif;font-weight:400;color:#5a5a5a;border-color:#fff;margin-bottom:40px}.table>thead>tr>th{background-color:#d8d8d8;border:1px solid #fff;text-align:center;vertical-align:middle}.table>tbody>tr>td{background-color:#f2f2f2;border:1px solid #fff;text-align:center;vertical-align:middle}.table strong{color:#5a5a5a}.table strong.small{font-size:80%}.table .old_price{display:block;text-decoration:line-through;white-space:nowrap}.table .new_price{display:block;font-weight:700;color:#558c55;white-space:nowrap}.table a.color-brand{text-decoration:underline}.table .color-brand{color:#e5aa30}.tooltip.top .tooltip-inner{background-color:#777;font-size:1.1em}.tooltip.top .tooltip-arrow{border-top-color:#777}.icons-percent{font-family:Oswald,sans-serif}.icons-percent::before{content:'%';font-weight:700;width:34px;height:34px;line-height:34px;font-size:20px;float:left;background:#ffc926;color:#fff;border-radius:50%;margin-top:4px}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.topbar{padding:0;border:0;position:relative;min-height:40px;line-height:40px;display:block}.topbar-drops{margin-right:-15px}.topbar-drops i{vertical-align:middle;padding-right:4px;font-size:17px;padding-bottom:2px;color:#e5aa30}.topbar,.topbar a,.topbar p{margin:0;padding:0;font-size:14px;font-family:Oswald,serif;color:#777}.topbar ul{background:#e5e5e5;border-radius:0 0 5px 5px}.topbar li:hover{background-color:#b2b2b2;color:#fff}.topbar li.nohover:hover{background-color:transparent;color:#777}.topbar li{padding:0 10px;margin:0;border-radius:0 0 5px 5px}.topbar li.nohover .fa{color:#558c55}.navbar-brand{position:absolute;width:100%;left:0;top:0;text-align:center;margin:auto}.navbar-brand img{max-width:220px;margin-top:12px}.header{display:block;position:relative;padding-top:0;border-bottom:1px solid #eee;background-color:#fff}.header.sticky{position:fixed}.navbar-nav>li>a{font-family:Raleway,sans-serif;font-weight:600;text-transform:uppercase;font-size:16px;color:#3b3b3b;padding:10px 10px 4px 10px;margin-top:8px;border-bottom:3px solid #fff}.navbar-nav>li>a:hover{background:#ffc926}.navbar .navbar-times{background:0 0;color:#777}.navbar .navbar-times i{vertical-align:middle;color:#e5aa30;font-size:40px;padding-top:24px;padding-right:6px}.navbar .navbar-times span{line-height:20px;font-size:13px;font-weight:500;float:right;display:block;text-align:right;padding-top:10px;font-family:Oswald,serif}.navbar .navbar-subnavi{display:block}.navbar .navbar-subnavi .subnavi{padding-left:16px;position:relative}.navbar .navbar-subnavi .subnavi::before{position:absolute;content:"";z-index:99998;width:0;height:0;left:4px;top:10px;border-top:8px solid transparent;border-bottom:8px solid transparent;border-left:10px solid #ffc926}.subnavi .navbar-nav>li>a{font-family:Raleway,sans-serif;font-size:14px;margin-top:0;color:#777}.subnavi .navbar-nav>li>a>span{color:#777}.subnavi .navbar-nav>li>a:hover>span{color:#fff}.subnavi .navbar-nav>li.open>a>span{color:#fff}.navbar-default{border:0;background-color:#fff}.navbar,.navbar-collapse{margin:0;border:0;margin-right:-15px}#side-navigation{margin-right:0}.navbar-brand>img{margin:0}.navbar .navbar-left{margin-top:24px;padding-left:0}.navbar .navbar-right{margin-right:0}nav hr{margin-top:0;margin-bottom:0;border:0;border-top:1px solid #777}.navbar .navbar-subnavi .subnavi{margin-top:0}.dropdown-menu{background-color:#fff!important;border-left:1px solid #ddd;border-right:1px solid #ddd;border-radius:0;box-shadow:none!important;color:#fff;min-width:210px;padding:0;z-index:9999}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover,.navbar-nav>li>a.active,.navbar-nav>li>a:active,.navbar-nav>li>a:focus,.navbar-nav>li>a:hover{background:#fff!important;background:#fff;box-shadow:none}.sidebar li a,.sidebar li a:focus,.sidebar li a:hover{background-color:transparent;background:#fff;background:rgba(255,255,255,0)}.dropdown-menu li:last-child{border-bottom:1px solid transparents}.dropdown-menu li{font-family:Raleway,sans-serif;font-weight:600}.dropdown-menu li a{color:#777;font-weight:600;padding:3px 10px}.bootstrap-select .dropdown-menu li a{padding:8px 10px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#fff;text-decoration:none;background-color:transparent}.dropdown-menu li{color:#fff;font-size:14px;line-height:28px}.dropdown-menu li.first{border-bottom:1px solid #c4c4c4}.dropdown-menu li.first a{font-weight:700}.dropdown-menu>li:focus,.dropdown-menu>li:hover{color:#fff;background:#ffc926}.yamm .dropdown-menu li h3{font-size:15px;margin-bottom:0;color:#999;padding:10px 0}.nopadding{padding:0!important}.yamm-content .col-md-6{min-width:210px}.navbar-nav .noborder{border-bottom:0 none!important;font-size:18px;margin-top:10px;padding:8px 15px 4px}.fixedheader{background:#fff!important;background:#fff;background:rgba(255,255,255,.9)!important;box-shadow:none;position:absolute;top:0;left:0;z-index:9999;width:100%}.nomargin{top:0}.setbg{background:url(../images/header-bg.png) no-repeat scroll center top/cover #fff!important}.fixedheader .nav .open>a,.fixedheader .nav .open>a:focus,.fixedheader .nav .open>a:hover,.fixedheader .navbar-nav>li>a.active,.fixedheader .navbar-nav>li>a:active,.fixedheader .navbar-nav>li>a:focus,.fixedheader .navbar-nav>li>a:hover,.nobg{background:#fff!important;background:#fff;background:rgba(255,255,255,0)!important}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover,.navbar-nav>li>a.active,.navbar-nav>li>a:focus,.navbar-nav>li>a:hover{border-color:#777}.subnavi li:hover.dropdown::before{position:absolute;content:"";z-index:99998;width:0;height:0;left:5px;top:37px;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #777}.fixedheader .navbar-nav>li>a{border-color:transparent;background:rgba(255,255,255,0)!important}.fixedheader .navbar-nav>li>a:hover{background:#ffc926!important;color:#fff}.fixedheader .nav .open>a.dropdown-toggle:focus,.fixedheader .nav .open>a.dropdown-toggle:hover,.fixedheader .navbar-nav>li>a.dropdown-toggle.active,.fixedheader .navbar-nav>li>a.dropdown-toggle:active,.fixedheader .navbar-nav>li>a.dropdown-toggle:focus,.fixedheader .navbar-nav>li>a.dropdown-toggle:hover{background:#ffc926!important;color:#fff}.fixedheader .subnavi .navbar-nav>li>a:hover{color:#3b3b3b}.nobg .navbar-nav>li>a,.nobg .navbar-nav>li>a i{color:#fff}.nobg{border-bottom:1px solid rgba(255,255,255,.3);-webkit-background-clip:padding-box;background-clip:padding-box}.navbar-toggle{float:left;margin-bottom:0}.navbar.navbar-static .navbar-header{float:left}.navbar .navbar-toggle.toggle-left{float:left;margin-left:15px}.navbar .navbar-toggle.toggle-right{float:right;margin-right:15px}.navbar .navbar-toggle.toggle-sidebar,[data-toggle=sidebar]{display:block}.sidebar{padding:20px;background:#fff;border-left:1px solid rgba(50,50,50,.1)}.sidebar li{text-transform:uppercase;border-bottom:1px solid #ececec}.sidebar li:last-child{border-bottom:0}.sidebar a,.sidebar i{color:#000}.sidebar{position:fixed;display:block;top:0;bottom:0;z-index:9999;min-width:280px!important;min-height:100%;max-height:none;overflow:auto}.sidebar img{width:90%;margin:20px auto}.sidebar-left{left:0}.sidebar-right{right:0}.row .sidebar.sidebar-left.sidebar-xs-show{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.row .sidebar.sidebar-right.sidebar-xs-show{right:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.sidebar-animate{transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease, -webkit-transform .3s ease}.sidebar.sidebar-left{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.sidebar.sidebar-left.sidebar-open{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.sidebar.sidebar-right{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.sidebar.sidebar-right.sidebar-open{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.fixedslider{position:absolute;top:0}.boxedcontainer{max-width:1170px;margin:auto;padding:0 30px}.tp-banner-container{width:100%;position:relative;padding:0}.tp-banner{width:100%;position:relative}.tp-banner-fullscreen-container{width:100%;position:relative;padding:0}.slider-title,.tp-caption.slider-title{position:absolute;color:#fff;font-size:45px;line-height:60px;margin:0;text-align:center;border-width:0;letter-spacing:2px;border-style:none;white-space:nowrap}.slider-title small{font-size:20px;display:block;margin-top:20px}.slider-title2,.tp-caption.slider-title2{position:absolute;color:#fff;font-weight:300;font-size:18px;line-height:24px;margin:0;text-align:center;border-width:0;border-style:none;white-space:nowrap}.slider-title1,.tp-caption.slider-title1{position:absolute;color:#fff;font-weight:300;font-size:16px;line-height:28px;margin:0;text-align:center;border-width:0;border-style:none;white-space:nowrap}.margin-top a,.slider-btn .btn,.tp-caption.slider-btn .btn{color:#fff;font-size:13px!important;text-transform:uppercase;margin:0 10px 0 0;padding:14px 44px}.slider-btn .btn-white,.tp-caption.slider-btn .btn-white{color:#444}.tp-bannertimer{display:none}.margin-top{margin-top:30px}footer .fa{color:#e5aa30;font-size:50px;padding-right:14px}footer a,footer p.text{font-size:28px;color:#777}footer a:hover{color:#e5aa30}footer .info-text .fa{float:left}footer .info-text .small{display:block;font-size:12px;line-height:1.4em}footer.clearfix{border-top:1px solid #aaa;padding-top:20px}.footer{background-color:#777;padding:30px 0 30px;font-size:16px;color:#fff}.footer .left-img{float:left;padding-right:25px}.footer .c4{float:left}.footer .c4 li{color:#fff}.footer p.hl4{font-size:20px;text-transform:uppercase;color:#fff;padding:20px 0 0;font-weight:600}.footer .padding-bottom{padding-bottom:40px}.flogo{padding-top:10px}.footer .form-control{background-color:#919191;border-color:#fff;color:#fff;height:45px;margin:0 6px 0 0;border-radius:50px;padding-left:40px;width:100%}.social-footer a:link i,.social-footer a:visited i{color:#fff}.social-footer a:active i,.social-footer a:hover i{background-color:#777}.social-footer i{display:inline-block;width:50px;height:50px;line-height:50px;text-align:center;font-size:28px;margin:0 3px 3px 0;padding:0}.social-footer i.fa-facebook{background-color:#3b5998}.social-footer i.fa-twitter{background-color:#00aced}.social-footer i.fa-google-plus{background-color:#dd4b39}.social-footer i.fa-youtube{background-color:#b00}.social-footer i.fa-linkedin{background-color:#007bb6}.social-footer i.fa-instagram{background-color:#517fa4}.social-footer i.fa-pinterest-p{background-color:#cb2027}.social-footer i.fa-vine{background-color:#00bf8f}.social-footer i.fa-flickr{background-color:#ff0084}.social-footer i.fa-tumblr{background-color:#32506d}.social-footer i.fa-vimeo{background-color:#aad450}.social-footer i.fa-foursquare{background-color:#0072b1}.social-footer i.fa-users{background-color:#e5aa30}.footer .form-control::-moz-placeholder{color:#fff;opacity:1}.footer .form-control:-ms-input-placeholder{color:#fff}.footer .form-control::-webkit-input-placeholder{color:#fff}.footer .btn-primary{height:45px!important;line-height:1!important;padding-left:25px!important;padding-right:25px!important}.footer .btn-primary:hover{background-color:#fff;color:#e5aa30;border-color:#ffc926}.copyrights{background-color:#5e5e5e;padding:30px 0;font-size:15px;color:#fff}.copyrights p{margin:0}.copyrights a{font-weight:600}.link-footer a i{color:#666!important;font-size:16px;margin-left:7px}.link-footer a:hover i{color:#fff!important}.flickrwidget img,.post-media img{opacity:1}.flickrwidget img:hover,.post-media img:hover{opacity:.8}#sidebar{padding:0 20px}#sidebar .widget{position:relative;display:block;margin-bottom:40px}#sidebar ul{padding:0}#sidebar .widget a.collapse-widget{color:#777}#sidebar .widget a.collapse-widget::before{display:none;font-family:FontAwesome;content:"";padding:0;font-size:0;color:#ffc926}#sidebar .widget a.collapse-widget.collapsed::before{display:none;content:""}@media (max-width:768px){#sidebar .widget a.collapse-widget{color:#777}#sidebar .widget a.collapse-widget::before{display:inline-block;font-family:FontAwesome;content:"\f106";padding:6px 10px 0 0;font-size:32px;color:#ffc926}#sidebar .widget a.collapse-widget.collapsed::before{display:inline-block;content:"\f107"}}#sidebar .widget .hl5,#sidebar .widget .hl5 a{color:#e5aa30;font-size:18px;font-weight:600;margin-bottom:14px}#sidebar .widget .hl5 a:hover,#sidebar .widget .hl5:hover{background:0 0;color:#777}#sidebar .widget .boxwidget{text-align:center;margin:0 auto;padding-bottom:20px}#sidebar .widget .searchwidget{background-color:#eaeaea;border-bottom:1px solid transparent;padding:12px 12px}#sidebar .widget .searchwidget .form-group{margin-bottom:10px}#sidebar .widget .searchwidget .fa-question{background-color:#777;width:26px;height:26px;border-radius:50%;line-height:26px;color:#fff;padding-left:8px;font-size:18px}#sidebar .widget .newswidget{border-bottom:1px solid #777;padding-bottom:10px;margin-bottom:10px}#sidebar .widget .newswidget p{line-height:1.4em}#sidebar .widget .newswidget.gray-box{background-color:#eaeaea;border-bottom:1px solid transparent;padding:12px 12px}#sidebar .widget .newswidget.gray-box .hl4{color:#e5aa30;font-weight:600;font-size:17px;margin-bottom:12px}#sidebar .widget .newswidget.gray-box .hl5{height:4.5em;overflow:hidden}#sidebar .widget .newswidget.gray-box p{font-style:italic;height:10em;overflow:hidden}#sidebar .widget .imgswidget img{width:100%;display:block;padding-bottom:50px;padding-right:10px;padding-left:10px}#sidebar #side-navigation .side-menu{float:left;width:100%;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none}#sidebar #side-navigation .side-menu li{padding:5px 12px 5px!important;font-size:14px;line-height:28px;background:0 0;border-bottom:1px solid #c3c3c3}#sidebar #side-navigation .side-menu li a{color:#777;font-weight:600;padding:0 0 3px 2px}#sidebar #side-navigation .side-menu li.active,#sidebar #side-navigation .side-menu li:hover{color:#fff;background:#ffc926}#sidebar #side-navigation .side-menu li.active a,#sidebar #side-navigation .side-menu li:hover a{color:#fff}#sidebar #side-navigation .side-menu li.sub-menu-item{border-bottom:none;border-bottom:1px solid #eaeaea;list-style:none}#sidebar #side-navigation .side-menu li.sub-menu-item.active a{color:#000}#sidebar #side-navigation .side-menu li.sub-menu-item.active .fa{color:#648859}#sidebar #side-navigation .side-menu li.sub-menu-item .fa{color:#ffc926}#sidebar #side-navigation .side-menu li.sub-menu-item.active,#sidebar #side-navigation .side-menu li.sub-menu-item:hover{color:#000;background:0 0}#sidebar #side-navigation .side-menu li.sub-menu-item.active a,#sidebar #side-navigation .side-menu li.sub-menu-item:hover a{color:#000}.listwidget ul li{padding:12px 0;margin-left:10px;border-bottom:1px solid #ddd}.listwidget ul li:last-child{padding-bottom:0;border-bottom:0 solid #ddd}.flickrwidget .list-inline>li{margin:0;float:left;padding:0;width:33.3333%}.flickrwidget img{width:94%;padding:0}#sidebar .widget,#sidebar .widget-title{margin-top:0;padding-top:0}#sidebar .widget-title{font-size:25px;position:relative;padding-bottom:8px;border-bottom:1px solid #ffc926;font-weight:400;margin-bottom:20px;color:#777;line-height:1.2em;vertical-align:baseline}.btn-default.active,.btn-default.focus,.btn-default:active,.btn-default:focus,.btn-default:hover,.btn-primary,.btn-white.active,.btn-white.focus,.btn-white:active,.btn-white:focus,.btn-white:hover,.c2 li span,.dash .digit,.home-form .nav-tabs>li.active>a,.home-form .nav-tabs>li.active>a:focus,.home-form .nav-tabs>li>a:hover,.icon-container,.open>.dropdown-toggle.btn-default,.open>.dropdown-toggle.btn-white,.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span,.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover,.panel-default>.panel-heading,.pricing-table-footer,.pricing-table-header,.slider-btn .btn-white:hover,.tp-caption.slider-btn .btn-white:hover,.yellow,h1:hover a,h2:hover a,h3:hover a,h4:hover a,h5:hover a{color:#fff;background-color:#648859;border-color:#648859}.btn-primary:active:hover,.btn-primary:hover{background-color:#ffc926;border-color:#ffc926}.form-control:focus{border-color:#ffc926;box-shadow:none}.travel-title hr{border-color:#ffc926}#infoform .form-control,.dropdown .btn-white,.form-inline .input-group>.form-control,.input-group-addon{border-bottom-color:#ffc926}.bootstrap-select .fa-angle-down,.breadcrumb>li+li::before,.c1 li:before,.c3 span,.input-group-addon i,.post-title .pull-right span,.rating i,.sidebar li a:focus,.sidebar li a:hover,.yamm .dropdown-menu li h3 i,.yamm .yamm-content li a:focus,.yamm .yamm-content li a:hover,a{color:#e5aa30}.help-block{color:#cd2929}.col-lg-15,.col-md-15,.col-sm-15,.col-xs-15{position:relative;min-height:1px;padding-right:10px;padding-left:10px}.col-xs-15{width:20%;float:left}@media (min-width:768px){.col-sm-15{width:20%;float:left}}@media (min-width:992px){.col-md-15{width:20%;float:left}}@media (min-width:1200px){.col-lg-15{width:20%;float:left}}@media (max-width:1200px){.navbar-nav>li>a{font-size:13px;padding:10px 7px 6px 7px}.absolute-carousel{top:53px}}@media (max-width:1024px){#sidebar #side-navigation .side-menu{width:100%}.bookform .input-group{width:100%!important}.bookform .form-group{margin-bottom:5px}.navbar-nav>li>a{font-size:16px}.navbar-brand{right:0;width:auto;left:auto}.navbar-times{display:none}.home-message{min-height:360px}.navbar .navbar-subnavi .subnavi{padding-left:0}.navbar .navbar-subnavi .subnavi::before{left:0;top:0;border-top:none;border-bottom:none;border-left:none}footer .info-text,footer .text-right{text-align:center}footer .info-text .fa,footer .text-right .fa{float:none}footer .text-center{padding-bottom:12px}.absolute-carousel{top:52px}}@media (max-width:992px){#no-more-tables table,#no-more-tables tbody,#no-more-tables td,#no-more-tables th,#no-more-tables thead,#no-more-tables tr{display:block}#no-more-tables thead tr{position:absolute;top:-9999px;left:-9999px}#no-more-tables tr{border:1px solid #ccc}#no-more-tables td{border:none;border-bottom:1px solid #fff;position:relative;padding-left:50%;white-space:normal;text-align:right}#no-more-tables td:before{position:absolute;top:6px;left:6px;width:45%;padding-right:10px;white-space:nowrap;text-align:left;font-weight:700}#no-more-tables .btn{display:block;width:100%}#no-more-tables .icons-percent::before{float:right;padding-right:6px}#no-more-tables td:last-child{padding-left:8px}#no-more-tables tr:nth-child(2n+1)>td{background-color:#d8d8d8}#no-more-tables td:before{content:attr(data-title)}}@media (max-width:992px){.no-more-tables table,.no-more-tables tbody,.no-more-tables td,.no-more-tables th,.no-more-tables thead,.no-more-tables tr{display:block}.no-more-tables thead tr{position:absolute;top:-9999px;left:-9999px}.no-more-tables tr{border:1px solid #ccc}.no-more-tables .table>tbody>tr>td,.no-more-tables td{border:none;border-bottom:1px solid #fff;position:relative;padding-left:50%;white-space:normal;text-align:right}.no-more-tables td:before{position:absolute;top:6px;left:6px;width:45%;padding-right:10px;white-space:nowrap;text-align:left;font-weight:700}.no-more-tables .btn{display:block;width:100%}.no-more-tables .icons-percent::before{float:right;padding-right:6px}.no-more-tables td:last-child{padding-left:8px}.no-more-tables tr:nth-child(2n+1)>td{background-color:#d8d8d8}.no-more-tables td:before{content:attr(data-title)}}@media (min-width:768px){.dropdown-menu li.first{display:none}}@media (max-width:768px){.btn-default.btn-lg,.btn-primary.btn-lg,.btn-white.btn-lg{padding:10px 27px!important;height:auto!important}.navbar .navbar-subnavi .navbar-nav{margin:7.5px -10px}#no-more-tables_first{overflow-x:hidden}.container{padding-left:8px;padding-right:8px}.home-info-box{margin-right:-30px}.btn-over-slider{top:110px}.btn-over-slider-bottom{top:320px}.st-slider-booking-btn-bottom{background-color:#777!important}.price-over-slider{top:115px}#sidebar #side-navigation .side-menu{width:100%}#widthphone.home-form .nav-tabs>li{width:50%}.fullscreen{padding:0;padding-top:96px}.absolute-carousel{top:0;left:-10px}.home-message{padding-right:30px;padding-top:0;min-height:360px}.breadcrumb-holder{padding-top:0}.absolute{margin-top:0;top:0}.fixedheader{position:relative;top:0}.travel-list .alignleft{width:100%;float:none}.single-travel-image .thumbnails{display:none!important}.sidebar-price,.single-travel-image .price{display:none;position:absolute}.pricing-table-header{margin-top:20px}.navbar-toggle{margin-top:0;padding:10px;font-size:24px}.dropdown-menu li{padding:5px 10px 5px!important}.yamm .yamm-content{padding:0 0}.navbar,.navbar-collapse{border:0 none;margin:4px 0}.breadcrumb,.navbar-nav .noborder,.sidebar-menu-container{display:none}.topbar-social{display:inline}.topbar{line-height:40px}.topbar li,.topbar-social li{padding:0 5px}.topbar .pull-left,.topbar .pull-right,.topbar-social{float:none!important;text-align:center!important}.copyrights .text-left,.copyrights .text-right{text-align:center!important}.navbar-nav>li>a{padding:10px 15px;border:0}.subnavi li:hover.dropdown::before{display:none}.navbar-brand{margin-top:0;padding:0}.navbar-brand img{margin-top:4px}.navbar .navbar-left{padding-left:15px}.header{padding:0 0}.nobg{background:#222!important;background-color:#222!important}.home-form .nav-tabs>li>a{padding:20px 22px}h1{font-size:28px}.mini-desti img,.service-style .icon-container{margin-bottom:20px}.homeform{padding:40px 0 0!important}.home-form .nav-tabs>li>a i{font-size:16px;line-height:16px}.bookform .form-control{margin-bottom:0}}@media (max-width:374px){.home-message{padding-right:0;padding-top:0}}.checkbox{padding-left:20px;display:block}.checkbox label{display:inline-block;vertical-align:middle;position:relative;padding-left:5px;white-space:normal}.checkbox label::before{content:"";display:inline-block;position:absolute;width:18px;height:18px;left:0;top:3px;margin-left:-20px;border:1px solid #ccc;border-radius:3px;background-color:#fff;transition:border .15s ease-in-out,color .15s ease-in-out}.checkbox label::after{display:inline-block;position:absolute;width:16px;height:16px;left:0;top:0;margin-left:-20px;padding-left:3px;padding-top:1px;font-size:11px;color:#555}.checkbox input[type=checkbox],.checkbox input[type=radio]{opacity:0;z-index:1}.checkbox input[type=checkbox]:focus+label::before,.checkbox input[type=radio]:focus+label::before{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.checkbox input[type=checkbox]:checked+label::after,.checkbox input[type=radio]:checked+label::after{font-family:FontAwesome;font-size:16px;line-height:23px;content:"\f00c"}.checkbox input[type=checkbox]:indeterminate+label::after,.checkbox input[type=radio]:indeterminate+label::after{display:block;content:" ";width:10px;height:3px;background-color:#555;border-radius:2px;margin-left:-16.5px;margin-top:7px}.checkbox input[type=checkbox]:disabled+label,.checkbox input[type=radio]:disabled+label{opacity:.65}.checkbox input[type=checkbox]:disabled+label::before,.checkbox input[type=radio]:disabled+label::before{background-color:#eee;cursor:not-allowed}.checkbox.checkbox-circle label::before{border-radius:50%}.checkbox.checkbox-inline{margin-top:0}.checkbox-primary input[type=checkbox]:checked+label::before,.checkbox-primary input[type=radio]:checked+label::before{background-color:#777;border-color:#777}.checkbox-primary input[type=checkbox]:checked+label::after,.checkbox-primary input[type=radio]:checked+label::after{color:#fff}.checkbox-danger input[type=checkbox]:checked+label::before,.checkbox-danger input[type=radio]:checked+label::before{background-color:#d9534f;border-color:#d9534f}.checkbox-danger input[type=checkbox]:checked+label::after,.checkbox-danger input[type=radio]:checked+label::after{color:#fff}.checkbox-info input[type=checkbox]:checked+label::before,.checkbox-info input[type=radio]:checked+label::before{background-color:#5bc0de;border-color:#5bc0de}.checkbox-info input[type=checkbox]:checked+label::after,.checkbox-info input[type=radio]:checked+label::after{color:#fff}.checkbox-warning input[type=checkbox]:checked+label::before,.checkbox-warning input[type=radio]:checked+label::before{background-color:#f0ad4e;border-color:#f0ad4e}.checkbox-warning input[type=checkbox]:checked+label::after,.checkbox-warning input[type=radio]:checked+label::after{color:#fff}.checkbox-success input[type=checkbox]:checked+label::before,.checkbox-success input[type=radio]:checked+label::before{background-color:#558c55;border-color:#558c55}.checkbox-success input[type=checkbox]:checked+label::after,.checkbox-success input[type=radio]:checked+label::after{color:#fff}.checkbox-primary input[type=checkbox]:indeterminate+label::before,.checkbox-primary input[type=radio]:indeterminate+label::before{background-color:#777;border-color:#777}.checkbox-primary input[type=checkbox]:indeterminate+label::after,.checkbox-primary input[type=radio]:indeterminate+label::after{background-color:#fff}.checkbox-danger input[type=checkbox]:indeterminate+label::before,.checkbox-danger input[type=radio]:indeterminate+label::before{background-color:#d9534f;border-color:#d9534f}.checkbox-danger input[type=checkbox]:indeterminate+label::after,.checkbox-danger input[type=radio]:indeterminate+label::after{background-color:#fff}.checkbox-info input[type=checkbox]:indeterminate+label::before,.checkbox-info input[type=radio]:indeterminate+label::before{background-color:#5bc0de;border-color:#5bc0de}.checkbox-info input[type=checkbox]:indeterminate+label::after,.checkbox-info input[type=radio]:indeterminate+label::after{background-color:#fff}.checkbox-warning input[type=checkbox]:indeterminate+label::before,.checkbox-warning input[type=radio]:indeterminate+label::before{background-color:#f0ad4e;border-color:#f0ad4e}.checkbox-warning input[type=checkbox]:indeterminate+label::after,.checkbox-warning input[type=radio]:indeterminate+label::after{background-color:#fff}.checkbox-success input[type=checkbox]:indeterminate+label::before,.checkbox-success input[type=radio]:indeterminate+label::before{background-color:#558c55;border-color:#558c55}.checkbox-success input[type=checkbox]:indeterminate+label::after,.checkbox-success input[type=radio]:indeterminate+label::after{background-color:#fff}.radio{padding-left:20px}.radio label{display:inline-block;vertical-align:middle;position:relative;padding-left:5px}.radio label::before{content:"";display:inline-block;position:absolute;width:17px;height:17px;left:0;margin-left:-20px;border:1px solid #ccc;border-radius:50%;background-color:#fff;transition:border .15s ease-in-out}.radio label::after{display:inline-block;position:absolute;content:" ";width:11px;height:11px;left:3px;top:3px;margin-left:-20px;border-radius:50%;background-color:#555;-webkit-transform:scale(0,0);transform:scale(0,0);transition:-webkit-transform .1s cubic-bezier(.8,-.33,.2,1.33);transition:transform .1s cubic-bezier(.8,-.33,.2,1.33);transition:transform .1s cubic-bezier(.8,-.33,.2,1.33), -webkit-transform .1s cubic-bezier(.8,-.33,.2,1.33)}.radio input[type=radio]{opacity:0;z-index:1}.radio input[type=radio]:focus+label::before{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.radio input[type=radio]:checked+label::after{-webkit-transform:scale(1,1);transform:scale(1,1)}.radio input[type=radio]:disabled+label{opacity:.65}.radio input[type=radio]:disabled+label::before{cursor:not-allowed}.radio.radio-inline{margin-top:0}.radio-primary input[type=radio]+label::after{background-color:#777}.radio-primary input[type=radio]:checked+label::before{border-color:#777}.radio-primary input[type=radio]:checked+label::after{background-color:#777}.radio-danger input[type=radio]+label::after{background-color:#d9534f}.radio-danger input[type=radio]:checked+label::before{border-color:#d9534f}.radio-danger input[type=radio]:checked+label::after{background-color:#d9534f}.radio-info input[type=radio]+label::after{background-color:#5bc0de}.radio-info input[type=radio]:checked+label::before{border-color:#5bc0de}.radio-info input[type=radio]:checked+label::after{background-color:#5bc0de}.radio-warning input[type=radio]+label::after{background-color:#f0ad4e}.radio-warning input[type=radio]:checked+label::before{border-color:#f0ad4e}.radio-warning input[type=radio]:checked+label::after{background-color:#f0ad4e}.radio-success input[type=radio]+label::after{background-color:#558c55}.radio-success input[type=radio]:checked+label::before{border-color:#558c55}.radio-success input[type=radio]:checked+label::after{background-color:#558c55}input[type=checkbox].styled:checked+label:after,input[type=radio].styled:checked+label:after{font-family:FontAwesome;content:"\f00c"}input[type=checkbox] .styled:checked+label::before,input[type=radio] .styled:checked+label::before{color:#fff}input[type=checkbox] .styled:checked+label::after,input[type=radio] .styled:checked+label::after{color:#fff}@font-face{font-family:trips;src:url(../fonts/trips.eot);src:url(../fonts/trips.eot?#iefix) format("embedded-opentype"),url(../fonts/trips.woff) format("woff"),url(../fonts/trips.ttf) format("truetype"),url(../fonts/trips.svg#trips) format("svg");font-weight:400;font-style:normal;font-display:auto}[data-icon]:before{font-family:trips!important;content:attr(data-icon);font-style:normal!important;font-weight:400!important;font-variant:normal!important;text-transform:none!important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}[class*=" icon-"]:before,[class^=icon-]:before{font-family:trips!important;font-style:normal!important;font-weight:400!important;font-variant:normal!important;text-transform:none!important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-air6:before{content:"a"}.icon-airplane51:before{content:"b"}.icon-airplane67:before{content:"c"}.icon-airplane68:before{content:"d"}.icon-airplane70:before{content:"e"}.icon-airplane72:before{content:"f"}.icon-airplane73:before{content:"g"}.icon-airplane74:before{content:"h"}.icon-bag30:before{content:"i"}.icon-bicycle2:before{content:"j"}.icon-bicycle12:before{content:"k"}.icon-black186:before{content:"l"}.icon-black401:before{content:"m"}.icon-boat17:before{content:"n"}.icon-bus7:before{content:"o"}.icon-bus21:before{content:"p"}.icon-bus46:before{content:"q"}.icon-calendar157:before{content:"r"}.icon-car80:before{content:"s"}.icon-car82:before{content:"t"}.icon-car95:before{content:"u"}.icon-check52:before{content:"v"}.icon-checkin:before{content:"w"}.icon-coconut8:before{content:"x"}.icon-comment43:before{content:"y"}.icon-compass67:before{content:"z"}.icon-containers:before{content:"A"}.icon-delivery17:before{content:"B"}.icon-delivery18:before{content:"C"}.icon-delivery25:before{content:"D"}.icon-directions2:before{content:"E"}.icon-distance1:before{content:"F"}.icon-earth72:before{content:"G"}.icon-earth186:before{content:"H"}.icon-earth190:before{content:"I"}.icon-home63:before{content:"J"}.icon-hotel16:before{content:"K"}.icon-hotel68:before{content:"L"}.icon-house129:before{content:"M"}.icon-international11:before{content:"N"}.icon-international22:before{content:"O"}.icon-location38:before{content:"P"}.icon-logistics3:before{content:"Q"}.icon-logistics4:before{content:"R"}.icon-luggage5:before{content:"S"}.icon-map29:before{content:"T"}.icon-map30:before{content:"U"}.icon-map110:before{content:"V"}.icon-motorcycle10:before{content:"W"}.icon-ocean3:before{content:"X"}.icon-open207:before{content:"Y"}.icon-parking15:before{content:"Z"}.icon-passport4:before{content:"0"}.icon-pc13:before{content:"1"}.icon-person199:before{content:"2"}.icon-person209:before{content:"3"}.icon-persons10:before{content:"4"}.icon-photo25:before{content:"5"}.icon-photo147:before{content:"6"}.icon-pinterest33:before{content:"7"}.icon-place4:before{content:"8"}.icon-plane18:before{content:"9"}.icon-plate17:before{content:"!"}.icon-road24:before{content:"\""}.icon-road29:before{content:"#"}.icon-rocket48:before{content:"$"}.icon-rocket61:before{content:"%"}.icon-school31:before{content:"&"}.icon-scooter7:before{content:"'"}.icon-sea8:before{content:"("}.icon-sedan3:before{content:")"}.icon-shipping:before{content:"*"}.icon-silhouette66:before{content:"+"}.icon-smoking4:before{content:","}.icon-snacks1:before{content:"-"}.icon-stars10:before{content:"."}.icon-student40:before{content:"/"}.icon-suv:before{content:":"}.icon-taxi13:before{content:";"}.icon-taxi14:before{content:"<"}.icon-tea24:before{content:"="}.icon-telephone5:before{content:">"}.icon-tick7:before{content:"?"}.icon-toilets:before{content:"@"}.icon-tour:before{content:"["}.icon-traffic17:before{content:"]"}.icon-train8:before{content:"^"}.icon-train20:before{content:"_"}.icon-tram4:before{content:"`"}.icon-transport22:before{content:"{"}.icon-travel23:before{content:"|"}.icon-travel25:before{content:"}"}.icon-truck31:before{content:"~"}.icon-waiting2:before{content:"\\"}.icon-walk12:before{content:"\e000"}.icon-wallet17:before{content:"\e001"}.icon-wifi10:before{content:"\e002"}.icon-woman55:before{content:"\e003"}.icon-address:before{content:"\e004"}.icon-adjust:before{content:"\e005"}.icon-air:before{content:"\e006"}.icon-alert:before{content:"\e007"}.icon-archive:before{content:"\e008"}.icon-arrow-combo:before{content:"\e009"}.icon-arrows-ccw:before{content:"\e00a"}.icon-attach:before{content:"\e00b"}.icon-attention:before{content:"\e00c"}.icon-back:before{content:"\e00d"}.icon-back-in-time:before{content:"\e00e"}.icon-bag:before{content:"\e00f"}.icon-basket:before{content:"\e010"}.icon-battery:before{content:"\e011"}.icon-behance:before{content:"\e012"}.icon-bell:before{content:"\e013"}.icon-block:before{content:"\e014"}.icon-book:before{content:"\e015"}.icon-book-open:before{content:"\e016"}.icon-bookmark:before{content:"\e017"}.icon-bookmarks:before{content:"\e018"}.icon-box:before{content:"\e019"}.icon-briefcase:before{content:"\e01a"}.icon-brush:before{content:"\e01b"}.icon-bucket:before{content:"\e01c"}.icon-calendar:before{content:"\e01d"}.icon-camera:before{content:"\e01e"}.icon-cancel:before{content:"\e01f"}.icon-cancel-circled:before{content:"\e020"}.icon-cancel-squared:before{content:"\e021"}.icon-cc:before{content:"\e022"}.icon-cc-by:before{content:"\e023"}.icon-cc-nc:before{content:"\e024"}.icon-cc-nc-eu:before{content:"\e025"}.icon-cc-nc-jp:before{content:"\e026"}.icon-cc-nd:before{content:"\e027"}.icon-cc-pd:before{content:"\e028"}.icon-cc-remix:before{content:"\e029"}.icon-cc-sa:before{content:"\e02a"}.icon-cc-share:before{content:"\e02b"}.icon-cc-zero:before{content:"\e02c"}.icon-ccw:before{content:"\e02d"}.icon-cd:before{content:"\e02e"}.icon-chart-area:before{content:"\e02f"}.icon-chart-bar:before{content:"\e030"}.icon-chart-line:before{content:"\e031"}.icon-chart-pie:before{content:"\e032"}.icon-chat:before{content:"\e033"}.icon-check:before{content:"\e034"}.icon-clipboard:before{content:"\e035"}.icon-clock:before{content:"\e036"}.icon-cloud:before{content:"\e037"}.icon-cloud-thunder:before{content:"\e038"}.icon-code:before{content:"\e039"}.icon-cog:before{content:"\e03a"}.icon-comment:before{content:"\e03b"}.icon-compass:before{content:"\e03c"}.icon-credit-card:before{content:"\e03d"}.icon-cup:before{content:"\e03e"}.icon-cw:before{content:"\e03f"}.icon-database:before{content:"\e040"}.icon-db-shape:before{content:"\e041"}.icon-direction:before{content:"\e042"}.icon-doc:before{content:"\e043"}.icon-doc-landscape:before{content:"\e044"}.icon-doc-text:before{content:"\e045"}.icon-doc-text-inv:before{content:"\e046"}.icon-docs:before{content:"\e047"}.icon-dot:before{content:"\e048"}.icon-dot-2:before{content:"\e049"}.icon-dot-3:before{content:"\e04a"}.icon-down:before{content:"\e04b"}.icon-down-bold:before{content:"\e04c"}.icon-down-circled:before{content:"\e04d"}.icon-down-dir:before{content:"\e04e"}.icon-down-open:before{content:"\e04f"}.icon-down-open-big:before{content:"\e050"}.icon-down-open-mini:before{content:"\e051"}.icon-down-thin:before{content:"\e052"}.icon-download:before{content:"\e053"}.icon-dribbble:before{content:"\e054"}.icon-dribbble-circled:before{content:"\e055"}.icon-drive:before{content:"\e056"}.icon-dropbox:before{content:"\e057"}.icon-droplet:before{content:"\e058"}.icon-erase:before{content:"\e059"}.icon-evernote:before{content:"\e05a"}.icon-export:before{content:"\e05b"}.icon-eye:before{content:"\e05c"}.icon-facebook:before{content:"\e05d"}.icon-facebook-circled:before{content:"\e05e"}.icon-facebook-squared:before{content:"\e05f"}.icon-fast-backward:before{content:"\e060"}.icon-fast-forward:before{content:"\e061"}.icon-feather:before{content:"\e062"}.icon-flag:before{content:"\e063"}.icon-flash:before{content:"\e064"}.icon-flashlight:before{content:"\e065"}.icon-flattr:before{content:"\e066"}.icon-flickr:before{content:"\e067"}.icon-flickr-circled:before{content:"\e068"}.icon-flight:before{content:"\e069"}.icon-floppy:before{content:"\e06a"}.icon-flow-branch:before{content:"\e06b"}.icon-flow-cascade:before{content:"\e06c"}.icon-flow-line:before{content:"\e06d"}.icon-flow-parallel:before{content:"\e06e"}.icon-flow-tree:before{content:"\e06f"}.icon-folder:before{content:"\e070"}.icon-forward:before{content:"\e071"}.icon-gauge:before{content:"\e072"}.icon-github:before{content:"\e073"}.icon-github-circled:before{content:"\e074"}.icon-globe:before{content:"\e075"}.icon-google-circles:before{content:"\e076"}.icon-gplus:before{content:"\e077"}.icon-gplus-circled:before{content:"\e078"}.icon-graduation-cap:before{content:"\e079"}.icon-heart:before{content:"\e07a"}.icon-heart-empty:before{content:"\e07b"}.icon-help:before{content:"\e07c"}.icon-help-circled:before{content:"\e07d"}.icon-home:before{content:"\e07e"}.icon-hourglass:before{content:"\e07f"}.icon-inbox:before{content:"\e080"}.icon-infinity:before{content:"\e081"}.icon-info:before{content:"\e082"}.icon-info-circled:before{content:"\e083"}.icon-instagrem:before{content:"\e084"}.icon-install:before{content:"\e085"}.icon-key:before{content:"\e086"}.icon-keyboard:before{content:"\e087"}.icon-lamp:before{content:"\e088"}.icon-language:before{content:"\e089"}.icon-lastfm:before{content:"\e08a"}.icon-lastfm-circled:before{content:"\e08b"}.icon-layout:before{content:"\e08c"}.icon-leaf:before{content:"\e08d"}.icon-left:before{content:"\e08e"}.icon-left-bold:before{content:"\e08f"}.icon-left-circled:before{content:"\e090"}.icon-left-dir:before{content:"\e091"}.icon-left-open:before{content:"\e092"}.icon-left-open-big:before{content:"\e093"}.icon-left-open-mini:before{content:"\e094"}.icon-left-thin:before{content:"\e095"}.icon-level-down:before{content:"\e096"}.icon-level-up:before{content:"\e097"}.icon-lifebuoy:before{content:"\e098"}.icon-light-down:before{content:"\e099"}.icon-light-up:before{content:"\e09a"}.icon-link:before{content:"\e09b"}.icon-linkedin:before{content:"\e09c"}.icon-linkedin-circled:before{content:"\e09d"}.icon-list:before{content:"\e09e"}.icon-list-add:before{content:"\e09f"}.icon-location:before{content:"\e0a0"}.icon-lock:before{content:"\e0a1"}.icon-lock-open:before{content:"\e0a2"}.icon-login:before{content:"\e0a3"}.icon-logo-db:before{content:"\e0a4"}.icon-logout:before{content:"\e0a5"}.icon-loop:before{content:"\e0a6"}.icon-magnet:before{content:"\e0a7"}.icon-mail:before{content:"\e0a8"}.icon-map:before{content:"\e0a9"}.icon-megaphone:before{content:"\e0aa"}.icon-menu:before{content:"\e0ab"}.icon-mic:before{content:"\e0ac"}.icon-minus:before{content:"\e0ad"}.icon-minus-circled:before{content:"\e0ae"}.icon-minus-squared:before{content:"\e0af"}.icon-mixi:before{content:"\e0b0"}.icon-mobile:before{content:"\e0b1"}.icon-monitor:before{content:"\e0b2"}.icon-moon:before{content:"\e0b3"}.icon-mouse:before{content:"\e0b4"}.icon-music:before{content:"\e0b5"}.icon-mute:before{content:"\e0b6"}.icon-network:before{content:"\e0b7"}.icon-newspaper:before{content:"\e0b8"}.icon-note:before{content:"\e0b9"}.icon-note-beamed:before{content:"\e0ba"}.icon-palette:before{content:"\e0bb"}.icon-paper-plane:before{content:"\e0bc"}.icon-pause:before{content:"\e0bd"}.icon-paypal:before{content:"\e0be"}.icon-pencil:before{content:"\e0bf"}.icon-phone:before{content:"\e0c0"}.icon-picasa:before{content:"\e0c1"}.icon-picture:before{content:"\e0c2"}.icon-pinterest:before{content:"\e0c3"}.icon-pinterest-circled:before{content:"\e0c4"}.icon-play:before{content:"\e0c5"}.icon-plus:before{content:"\e0c6"}.icon-plus-circled:before{content:"\e0c7"}.icon-plus-squared:before{content:"\e0c8"}.icon-popup:before{content:"\e0c9"}.icon-print:before{content:"\e0ca"}.icon-progress-0:before{content:"\e0cb"}.icon-progress-1:before{content:"\e0cc"}.icon-progress-2:before{content:"\e0cd"}.icon-progress-3:before{content:"\e0ce"}.icon-publish:before{content:"\e0cf"}.icon-qq:before{content:"\e0d0"}.icon-quote:before{content:"\e0d1"}.icon-rdio:before{content:"\e0d2"}.icon-rdio-circled:before{content:"\e0d3"}.icon-record:before{content:"\e0d4"}.icon-renren:before{content:"\e0d5"}.icon-reply:before{content:"\e0d6"}.icon-reply-all:before{content:"\e0d7"}.icon-resize-full:before{content:"\e0d8"}.icon-resize-small:before{content:"\e0d9"}.icon-retweet:before{content:"\e0da"}.icon-right:before{content:"\e0db"}.icon-right-bold:before{content:"\e0dc"}.icon-right-circled:before{content:"\e0dd"}.icon-right-dir:before{content:"\e0de"}.icon-right-open:before{content:"\e0df"}.icon-right-open-big:before{content:"\e0e0"}.icon-right-open-mini:before{content:"\e0e1"}.icon-right-thin:before{content:"\e0e2"}.icon-rocket:before{content:"\e0e3"}.icon-rss:before{content:"\e0e4"}.icon-search:before{content:"\e0e5"}.icon-share:before{content:"\e0e6"}.icon-shareable:before{content:"\e0e7"}.icon-shuffle:before{content:"\e0e8"}.icon-signal:before{content:"\e0e9"}.icon-sina-weibo:before{content:"\e0ea"}.icon-skype:before{content:"\e0eb"}.icon-skype-circled:before{content:"\e0ec"}.icon-smashing:before{content:"\e0ed"}.icon-sound:before{content:"\e0ee"}.icon-soundcloud:before{content:"\e0ef"}.icon-spotify:before{content:"\e0f0"}.icon-spotify-circled:before{content:"\e0f1"}.icon-star:before{content:"\e0f2"}.icon-star-empty:before{content:"\e0f3"}.icon-stop:before{content:"\e0f4"}.icon-stumbleupon:before{content:"\e0f5"}.icon-stumbleupon-circled:before{content:"\e0f6"}.icon-suitcase:before{content:"\e0f7"}.icon-sweden:before{content:"\e0f8"}.icon-switch:before{content:"\e0f9"}.icon-tag:before{content:"\e0fa"}.icon-tape:before{content:"\e0fb"}.icon-target:before{content:"\e0fc"}.icon-thermometer:before{content:"\e0fd"}.icon-thumbs-down:before{content:"\e0fe"}.icon-thumbs-up:before{content:"\e0ff"}.icon-ticket:before{content:"\e100"}.icon-to-end:before{content:"\e101"}.icon-to-start:before{content:"\e102"}.icon-tools:before{content:"\e103"}.icon-traffic-cone:before{content:"\e104"}.icon-trash:before{content:"\e105"}.icon-trophy:before{content:"\e106"}.icon-tumblr:before{content:"\e107"}.icon-tumblr-circled:before{content:"\e108"}.icon-twitter:before{content:"\e109"}.icon-twitter-circled:before{content:"\e10a"}.icon-up:before{content:"\e10b"}.icon-up-bold:before{content:"\e10c"}.icon-up-circled:before{content:"\e10d"}.icon-up-dir:before{content:"\e10e"}.icon-up-open:before{content:"\e10f"}.icon-up-open-big:before{content:"\e110"}.icon-up-open-mini:before{content:"\e111"}.icon-up-thin:before{content:"\e112"}.icon-upload:before{content:"\e113"}.icon-upload-cloud:before{content:"\e114"}.icon-user:before{content:"\e115"}.icon-user-add:before{content:"\e116"}.icon-users:before{content:"\e117"}.icon-vcard:before{content:"\e118"}.icon-video:before{content:"\e119"}.icon-vimeo:before{content:"\e11a"}.icon-vimeo-circled:before{content:"\e11b"}.icon-vkontakte:before{content:"\e11c"}.icon-volume:before{content:"\e11d"}.icon-water:before{content:"\e11e"}.icon-window:before{content:"\e11f"}.icon-weather-downpour-fullmoon:before{content:"\e120"}.icon-weather-downpour-halfmoon:before{content:"\e121"}.icon-weather-downpour-sun:before{content:"\e122"}.icon-weather-drop:before{content:"\e123"}.icon-weather-first-quarter:before{content:"\e124"}.icon-weather-fog:before{content:"\e125"}.icon-weather-fog-fullmoon:before{content:"\e126"}.icon-weather-fog-halfmoon:before{content:"\e127"}.icon-weather-fog-sun:before{content:"\e128"}.icon-weather-fullmoon:before{content:"\e129"}.icon-weather-gemini:before{content:"\e12a"}.icon-weather-hail:before{content:"\e12b"}.icon-weather-hail-fullmoon:before{content:"\e12c"}.icon-weather-hail-halfmoon:before{content:"\e12d"}.icon-weather-hail-sun:before{content:"\e12e"}.icon-weather-last-quarter:before{content:"\e12f"}.icon-weather-leo:before{content:"\e130"}.icon-weather-libra:before{content:"\e131"}.icon-weather-lightning:before{content:"\e132"}.icon-weather-mistyrain:before{content:"\e133"}.icon-weather-mistyrain-fullmoon:before{content:"\e134"}.icon-weather-mistyrain-halfmoon:before{content:"\e135"}.icon-weather-mistyrain-sun:before{content:"\e136"}.icon-weather-moon:before{content:"\e137"}.icon-weather-moondown-full:before{content:"\e138"}.icon-weather-moondown-half:before{content:"\e139"}.icon-weather-moonset-full:before{content:"\e13a"}.icon-weather-moonset-half:before{content:"\e13b"}.icon-weather-move2:before{content:"\e13c"}.icon-weather-newmoon:before{content:"\e13d"}.icon-weather-pisces:before{content:"\e13e"}.icon-weather-rain:before{content:"\e13f"}.icon-weather-rain-fullmoon:before{content:"\e140"}.icon-weather-rain-halfmoon:before{content:"\e141"}.icon-weather-rain-sun:before{content:"\e142"}.icon-weather-sagittarius:before{content:"\e143"}.icon-weather-scorpio:before{content:"\e144"}.icon-weather-snow:before{content:"\e145"}.icon-weather-snow-fullmoon:before{content:"\e146"}.icon-weather-snow-halfmoon:before{content:"\e147"}.icon-weather-snow-sun:before{content:"\e148"}.icon-weather-snowflake:before{content:"\e149"}.icon-weather-star:before{content:"\e14a"}.icon-weather-storm-11:before{content:"\e14b"}.icon-weather-storm-32:before{content:"\e14c"}.icon-weather-storm-fullmoon:before{content:"\e14d"}.icon-weather-storm-halfmoon:before{content:"\e14e"}.icon-weather-storm-sun:before{content:"\e14f"}.icon-weather-sun:before{content:"\e150"}.icon-weather-sundown:before{content:"\e151"}.icon-weather-sunset:before{content:"\e152"}.icon-weather-taurus:before{content:"\e153"}.icon-weather-tempest:before{content:"\e154"}.icon-weather-tempest-fullmoon:before{content:"\e155"}.icon-weather-tempest-halfmoon:before{content:"\e156"}.icon-weather-tempest-sun:before{content:"\e157"}.icon-weather-variable-fullmoon:before{content:"\e158"}.icon-weather-variable-halfmoon:before{content:"\e159"}.icon-weather-variable-sun:before{content:"\e15a"}.icon-weather-virgo:before{content:"\e15b"}.icon-weather-waning-cresent:before{content:"\e15c"}.icon-weather-waning-gibbous:before{content:"\e15d"}.icon-weather-waxing-cresent:before{content:"\e15e"}.icon-weather-waxing-gibbous:before{content:"\e15f"}.icon-weather-wind:before{content:"\e160"}.icon-weather-cloud:before{content:"\e161"}.icon-weather-cloud-drop:before{content:"\e162"}.icon-weather-cloud-lightning:before{content:"\e163"}.icon-weather-cloud-snowflake:before{content:"\e164"}.icon-arrow413:before{content:"\e165"}.icon-arrow427:before{content:"\e166"}.icon-wrong6:before{content:"\e167"}.icon-list23:before{content:"\e168"}.icon-list23-1:before{content:"\e169"}.icon-menu27:before{content:"\e16a"}.icon-menu45:before{content:"\e16b"}.icon-menu53:before{content:"\e16c"}.icon-menu55:before{content:"\e16d"}.icon-wrong6-1:before{content:"\e16e"}.icon-thin35:before{content:"\e16f"}.icon-thin36:before{content:"\e170"}.icon-right106:before{content:"\e171"}.icon-up77:before{content:"\e172"}.icon-next15:before{content:"\e173"}.icon-previous11:before{content:"\e174"}.box-slider .slide:not(.active){display:none}#preloader{display:none}#header{position:relative;left:0;top:0;right:0;z-index:1000;font-size:14px;background-color:#fff;border-bottom:rgba(0,0,0,.05) 1px solid;transition:all .8s}#topMain .dropdown a.dropdown-toggle,#topMain .dropdown a>*{text-transform:uppercase;color:#777}#topMain .dropdown a:hover,#topMain .dropdown a:hover>*,#topMain .dropdown:hover a>*{color:#fff;transition:all .8s}#header .navbar-collapse.navbar-centered{position:absolute;left:0;right:0;text-align:center;z-index:-1}#header .navbar-collapse.navbar-centered>.nav-main{display:inline-block}#navigation button.btn-mobile{display:none}#navigation button.btn-mobile{position:relative;float:left;padding:7px 10px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:0}#navigation button.btn-mobile i{padding:10px;font-size:24px}@media only screen and (max-width:767px){#navigation button.btn-mobile{display:inline-block}}#header.transparent{position:absolute;background-color:transparent;border-bottom:rgba(255,255,255,.3) 1px solid;box-shadow:none}#header.transparent.color,#header.transparent.dark{border:0}#header.transparent #topMain.nav-pills>li>a{color:#fff;border-radius:0}#header.transparent #topMain.nav-pills>li.active>a,#header.transparent #topMain.nav-pills>li>a:hover{background-color:rgba(0,0,0,.03)}#header.transparent+section.page-header,#header.transparent+section.page-header.page-header-lg{padding:180px 0}#header.transparent+section.page-header.page-header-xlg{padding:280px 0;padding-top:350px}#header.transparent+section.page-header.page-header-lg{padding-top:250px}#header.transparent a.social-icon{background-color:rgba(0,0,0,.2)}#header.transparent a.social-icon>i{color:#eaeaea}#header.fixed.transparent{background-color:#fff}#header.fixed.dark,#header.fixed.dark.transparent{background-color:#333;border:0}#header.fixed.transparent #topMain.nav-pills>li>a,#header.fixed.transparent ul.nav-second-main li a,#header.fixed.transparent ul.nav-second-main li a>i{color:#151515}#header.fixed.dark.transparent #topMain.nav-pills>li>a,#header.fixed.dark.transparent ul.nav-second-main li a,#header.fixed.dark.transparent ul.nav-second-main li a>i{color:#fff}@media only screen and (max-width:767px){#header.transparent.fixed #topNav button.btn-mobile{color:#333!important}#header.transparent.dark.fixed #topNav button.btn-mobile{color:#fff!important}#header.transparent #topMain.nav-pills>li>a{color:#fff}#header.transparent.dark #topMain.nav-pills>li>a{color:#fff}}@media only screen and (max-width:767px){#header.transparent+section.page-header{margin-top:0}#header.transparent #topMain{background-color:#333!important}#header.transparent #topMain li.active>a{color:#fff!important}}#header.translucent{position:absolute;background-color:rgba(0,0,0,.2);box-shadow:none}#header.translucent #topMain.nav-pills>li>a{color:#fff;border-radius:0}#header.translucent #topMain.nav-pills>li.active>a,#header.translucent #topMain.nav-pills>li>a:hover{color:#fff;background-color:rgba(0,0,0,.1)}#header.translucent+section.page-header{margin-top:-100px;padding:180px 0}#header.translucent+section.page-header.page-header-xlg{padding:280px 0;padding-top:420px}#header.translucent+section.page-header.page-header-lg{padding-top:350px}#header.fixed.translucent{background-color:#fff}#header.fixed.dark,#header.fixed.dark.translucent{background-color:#333;border:0}#header.fixed.translucent #topMain.nav-pills>li>a,#header.fixed.translucent ul.nav-second-main li a,#header.fixed.translucent ul.nav-second-main li a>i{color:#151515}#header.fixed.dark.translucent #topMain.nav-pills>li>a,#header.fixed.dark.translucent ul.nav-second-main li a,#header.fixed.dark.translucent ul.nav-second-main li a>i{color:#fff}@media only screen and (max-width:767px){#header.transparent+section.page-header{margin-top:0}}#header.bottom{position:absolute;top:auto;bottom:0;border-bottom:rgba(0,0,0,.05) 1px solid}#header.bottom.fixed{top:0;bottom:auto}#header.bottom.sticky{position:absolute}#header.bottom.fixed.sticky{position:fixed}#header.bottom.dropup #topMain>li>ul.dropdown-menu ul.dropdown-menu{bottom:auto;box-shadow:none}#header.bottom.dropup ul.dropdown-menu{bottom:94px}#header.header-md.bottom.dropup ul.dropdown-menu{bottom:68px}#header.header-sm.bottom.dropup ul.dropdown-menu{bottom:58px}#header.bottom.dropup.slim ul.dropdown-menu{bottom:53px}#header.bottom.dropup .nav-second-main .quick-cart-box,#header.bottom.dropup .nav-second-main .search-box{top:auto;bottom:100%;margin-bottom:39px;box-shadow:5px -5px rgba(91,91,91,.2);border-bottom:0}#header.bottom.header-md.dropup .nav-second-main .quick-cart-box,#header.bottom.header-md.dropup .nav-second-main .search-box{margin-bottom:23px}#header.bottom.header-sm.dropup .nav-second-main .quick-cart-box,#header.bottom.header-sm.dropup .nav-second-main .search-box{margin-bottom:20px}#header.bottom.dropup ul.dropdown-menu:before{top:auto;bottom:-10px!important;border-bottom:0!important;border-top:#fff 10px solid}#header.bottom.dropup.dark ul.dropdown-menu:before{border-top:rgba(33,33,33,.95) 10px solid!important}#header.bottom+#slider{margin-bottom:94px}#header.header-md.bottom+#slider{margin-bottom:70px}#header.header-sm.bottom+#slider{margin-bottom:60px}#header.header-sm.bottom.translucent+#slider,#header.header-sm.bottom.transparent+#slider{margin-bottom:0}#header.bottom+#slider>.swiper-container .swiper-pagination{top:0!important;bottom:auto}@media only screen and (max-width:767px){#header.bottom{top:0;bottom:auto}#header.bottom.sticky{position:relative!important}#header.bottom.transparent #topNav button.btn-mobile,#header.bottom.transparent ul.nav-second-main li a,#header.bottom.transparent ul.nav-second-main li a>i{color:#212121}#header.bottom+#slider>.swiper-container .swiper-pagination{top:auto!important;bottom:10px}#header.bottom.dropup .nav-second-main .quick-cart-box,#header.bottom.dropup .nav-second-main .search-box{bottom:auto}}#header.bottom.static+#slider{margin-bottom:0}#header.bottom.static{border-top:rgba(0,0,0,.15) 1px solid}#header.bottom.static.dark{border-top:rgba(255,255,255,.15) 1px solid}#header.bottom.static .nav-second-main .quick-cart-box,#header.bottom.static .nav-second-main .search-box{border:rgba(0,0,0,.15) 1px solid;border-bottom:0}#header.bottom.static.dark .nav-second-main .quick-cart-box,#header.bottom.static.dark .nav-second-main .search-box{border:rgba(255,255,255,.15) 1px solid;border-bottom:0}#header.static:not(.transparent)+section.page-header{margin-top:60px}#topNav .full-container{display:block;margin:0 15px}#topNav ul.dropdown-menu>li,#topNav ul.dropdown-menu>li a{background-color:transparent}#topNav .nav-pills>li+li{margin-left:0}#header li.search .search-box form{margin:0}#header.header-md #topNav a.logo{height:70px;line-height:50px}#header.header-md #topNav a.logo>img{height:70px}#header.header-md #topNav #topMain>li>a{height:70px;line-height:50px}@media only screen and (max-width:767px){#header.header-md #topMain.nav-pills>li>a{color:#212121}#header.header-md #topMain.nav-pills>li.active>a,#header.header-md #topMain.nav-pills>li>a:hover{color:#212121;background-color:rgba(0,0,0,.02)}}#header.header-sm #topNav a.logo{height:60px;line-height:50px}#header.header-sm #topNav a.logo>img{height:60px}#header.header-sm #topNav #topMain>li>a{height:60px;line-height:40px}@media only screen and (max-width:767px){#header.header-sm #topMain.nav-pills>li>a{color:#212121}#header.header-sm #topMain.nav-pills>li.active>a,#header.header-sm #topMain.nav-pills>li>a:hover{color:#212121;background-color:rgba(0,0,0,.02)}}#header.fixed{position:fixed;border-bottom:rgba(0,0,0,.08) 1px solid}#header.fixed #topNav a.logo{height:60px;line-height:50px}#header.fixed #topNav a.logo>img{height:60px}#header.fixed #topNav #topMain>li>a{height:60px;line-height:40px}#header.static{position:fixed}#header.static:not(.transparent){border-bottom:rgba(0,0,0,.08) 1px solid}.header{box-shadow:0 0 4px 0 rgba(0,0,0,.6)}@media only screen and (max-width:767px){.topbar .container{padding:0}#header.header-md #topMain.nav-pills>li>a,#header.header-sm #topMain.nav-pills>li>a{color:#212121}#header.header-md #topMain.nav-pills>li.active>a,#header.header-md #topMain.nav-pills>li>a:hover,#header.header-sm #topMain.nav-pills>li.active>a,#header.header-sm #topMain.nav-pills>li>a:hover{color:#212121;background-color:rgba(0,0,0,.02)}#header.transparent.header-md #topMain.nav-pills>li.active>a,#header.transparent.header-md #topMain.nav-pills>li>a,#header.transparent.header-md #topMain.nav-pills>li>a:hover,#header.transparent.header-sm #topMain.nav-pills>li.active>a,#header.transparent.header-sm #topMain.nav-pills>li>a,#header.transparent.header-sm #topMain.nav-pills>li>a:hover{color:#fff}#header .submenu-dark #topMain,#header.transparent #topMain{background-color:#333}#header.dark #topMain.nav-pills>li.active>a,#header.dark #topMain.nav-pills>li:hover>a,#header.dark #topMain.nav-pills>li>a{color:#333}#header.dark .submenu-dark #topMain.nav-pills>li.active>a,#header.dark .submenu-dark #topMain.nav-pills>li:hover>a,#header.dark .submenu-dark #topMain.nav-pills>li>a{color:#fff}#header.dark #topMain.nav-pills>li.active>a{background-color:rgba(0,0,0,.1)}}#topBar{display:block;background-color:#fff;border-bottom:rgba(0,0,0,.05) 1px solid}#topBar>.border-bottom{border-bottom:rgba(0,0,0,.05) 1px solid}#topBar>.border-top{border-top:rgba(0,0,0,.05) 1px solid}#topBar.dark{color:#ccc;background-color:#363839;border-bottom-color:rgba(255,255,255,.1)}#topBar.dark .dropdown-menu a,#topBar.dark ul.top-links>li>a{color:#fff}#topBar.dark .dropdown-menu a:hover{color:#fff!important;background-color:#333}#topBar.dark ul.top-links>li{border-right:rgba(255,255,255,.1) 1px solid}body.boxed #topBar.dark ul.top-links>li{border-right:0}#topBar.dark .dropdown-menu{background-color:#363839}#topBar.dark .dropdown-menu .divider{background-color:#444}#topBar.dark>.border-bottom{border-bottom-color:rgba(255,255,255,.1)}#topBar.dark>.border-top{border-top-color:rgba(255,255,255,.1)}#topBar .logo{display:inline-block}#topBar .logo img{transition:width .4s ease,height .4s ease}#topBar .logo.has-banner{height:100px;line-height:100px}#topBar .banner{margin:5px 0;display:inline-block;padding-left:5px;border-left:rgba(0,0,0,.05) 1px solid}#topBar.dark .banner{border-left-color:rgba(255,255,255,.05) 1px solid}#topBar .social-icon{margin:3px 0 0 0}#topBar ul.top-links{float:left;margin:0}#topBar ul.top-links>li{padding:0;display:inline-block;margin-left:-3px;position:relative;border-right:rgba(0,0,0,.1) 1px solid}#mainMenu ul.top-links>li:hover>.dropdown-menu,#topBar ul.top-links>li:hover>.dropdown-menu{display:block!important}#topBar ul.top-links>li .dropdown-menu{z-index:3000}#topBar ul.top-links>li>a{padding:10px;font-size:12px;color:#151515;display:block;text-decoration:none}#topBar ul.top-links>li>a:hover{background-color:rgba(0,0,0,.01)}#topBar ul.top-links>li>a>i{margin-right:5px;filter:alpha(opacity=30);opacity:.3}@media only screen and (max-width:767px){#topBar{text-align:center}#topBar ul.top-links{display:inline-block;float:none;margin:0 auto}#topBar ul.top-links>li:last-child>a{border-right:0}}#topBar ul.top-links li.text-welcome{padding:0 15px;font-size:12px}#topBar ul.dropdown-menu{min-width:50px;margin:0;padding:0;margin-left:-1px}#topBar ul.dropdown-menu>li>a{padding:8px 6px;font-size:12px}#topBar ul.dropdown-langs>li>a{padding:3px 6px;font-size:12px}#topBar ul.top-links>li>a>img.flag-lang{float:left;margin-top:3px;margin-right:6px}#topBar ul.dropdown-menu>li>a>i{margin-right:6px}#topBar ul.dropdown-langs>li:hover>a{color:#000!important;background-color:#eee}#topBar ul.dropdown-menu>li.divider{margin:0;padding:0;border-bottom:0;height:1px}#header ul.nav-second-main{border-left:rgba(0,0,0,.1) 1px solid;padding-left:15px;margin-top:39px;transition:all .3s}#header.fixed ul.nav-second-main{margin-top:20px}#header.header-sm ul.nav-second-main{margin-top:20px}#header.header-md ul.nav-second-main{margin-top:23px}#header.fixed.header-md ul.nav-second-main.nav-social,#header.fixed.header-sm ul.nav-second-main.nav-social{margin-top:18px}#header ul.nav-second-main.nav-social a{margin-left:10px!important}#header ul.nav-second-main.nav-social>li:first-child a{margin-left:10px!important}#header.fixed ul.nav-second-main.nav-social a>i:hover{color:#fff!important}#header ul.nav-second-main li{padding-top:33px;padding:0 5px 0 5px}#header ul.nav-second-main li>a{background-color:transparent;color:#666;padding:0 3px;display:block}#header ul.nav-second-main li i{font-size:18px;width:20px;height:20px;margin:0;padding:0;opacity:.6;filter:alpha(opacity=60);transition:all .3s}#header ul.nav-second-main li:hover i{opacity:1;filter:alpha(opacity=100)}#header ul.nav-second-main li .badge{padding:3px 6px}#header.color ul.nav-second-main li a,#header.color ul.nav-second-main li a>i,#header.dark ul.nav-second-main li a,#header.dark ul.nav-second-main li a>i,#header.transparent ul.nav-second-main li a,#header.transparent ul.nav-second-main li a>i{color:#fff;opacity:1;filter:alpha(opacity=100)}@media only screen and (max-width:767px){#header ul.nav-second-main{margin:15px 15px 0 0;border:0}#header ul.nav-second-main li{padding:0;padding-top:6px}#header ul.nav-second-main{transition:all 0s}#header.fixed ul.nav-second-main li{padding-top:0}#header.header-md ul.nav-second-main li>a,#header.header-sm ul.nav-second-main li>a{margin-top:-6px}#header.header-md ul.nav-second-main{margin-top:20px}#header.fixed.header-md ul.nav-second-main.nav-social,#header.fixed.header-sm ul.nav-second-main.nav-social{margin-top:26px}#header.header-md.translucent ul.nav-second-main{margin-top:23px}#header.header-md.translucent.fixed ul.nav-second-main{margin-top:29px}}#topNav ul.dropdown-menu{text-align:left;margin-top:0;border:#fff 1px solid;border-top:#648859 2px solid;list-style:none;background:#fff;box-shadow:rgba(0,0,0,.4) 0 6px 12px;min-width:200px;padding:0;transition:top .4s ease;border-radius:0}#topNav ul.dropdown-menu ul.dropdown-menu{margin-top:-1px!important}#topNav ul.dropdown-menu li{position:relative;border-bottom:rgba(0,0,0,.15) 1px solid}#topNav ul.dropdown-menu li.first{position:relative;border-bottom:rgba(0,0,0,.4) 1px solid}#topNav ul.dropdown-menu li:last-child{border-bottom:0}#topNav ul.dropdown-menu li a{margin:0;padding:12px 10px;font-weight:600;line-height:1.43em;color:#777;font-size:14px;display:block;text-decoration:none}#topNav ul.dropdown-menu>li a i{margin-right:6px;font-size:12px}#topNav ul.dropdown-menu a.dropdown-toggle{background-position:right center;background-repeat:no-repeat}#topNav ul.dropdown-menu li.active:focus>a,#topNav ul.dropdown-menu li.active:hover>a,#topNav ul.dropdown-menu li.active>a,#topNav ul.dropdown-menu li:focus>a,#topNav ul.dropdown-menu li:hover>a{color:#000;background-color:rgba(0,0,0,.05)}#topNav ul.dropdown-menu li.divider{margin:-1px 0 0 0;padding:0;border:0;background-color:rgba(0,0,0,.1)}#topNav .nav li:hover>ul.dropdown-menu{padding:0;display:block;z-index:100}#topNav ul.dropdown-menu li .label{margin-top:4px}#topNav ul.dropdown-menu>li:hover>ul.dropdown-menu{display:block;position:absolute;left:100%;top:0;padding:0;margin:0;border-left:0!important;border-right:0!important;border-bottom:0!important}#topMain.nav-onepage>li.active>a{font-weight:700}@media only screen and (max-width:767px){#sidebar .widget{margin-bottom:0}#topMain.nav-pills>li>a.dropdown-toggle:after{display:block;content:"\f107";position:absolute;top:50%;right:10px;margin:-5px 0 0;font-family:FontAwesome;font-size:15px;opacity:.6;line-height:1em;transition:-webkit-transform .2s ease-in;transition:transform .2s ease-in;transition:transform .2s ease-in, -webkit-transform .2s ease-in;transition:transform .2s ease-in,-webkit-transform .2s ease-in}#topNav .navbar-collapse::before{display:none}.navbar-collapse{height:100%}form.mobile-search{display:block}#topNav div.nav-main-collapse{padding:0;margin:0}#topNav button.btn-mobile{display:block;float:right;margin-right:0}#header.dark #topNav button.btn-mobile,#header.theme-color #topNav button.btn-mobile,#header.transparent #topNav button.btn-mobile{color:#fff}#topNav nav.nav-main{background-color:#fff}#topNav div.nav-main-collapse,#topNav div.nav-main-collapse.in{width:100%;margin:-1px 0 0 0}#topNav div.nav-main-collapse{float:none;overflow-x:hidden;max-height:350px}}@media only screen and (max-width:767px) and (max-width:767px){html.noscroll,html.noscroll body{overflow:hidden!important}}@media only screen and (max-width:767px){html.noscroll,html.noscroll body{overflow:hidden!important}#header.fixed #topNav div.nav-main-collapse,#topNav div.nav-main-collapse{max-height:100%!important;height:100%;width:100%;position:fixed!important;left:0!important;right:0;bottom:0;top:60px;z-index:9999!important;overflow-y:scroll!important;margin:0!important}#topNav div.nav-main-collapse{-webkit-overflow-scrolling:touch;-webkit-animation:fadeIn .3s!important;animation:fadeIn .3s!important}#navigation button.btn-mobile-active{position:fixed!important;z-index:999999!important;background-color:#232323!important;height:60px!important;top:0!important;width:100%;left:0;right:0;margin:0!important;opacity:.8}#navigation button.btn-mobile-active>i{float:right;margin-right:10px;margin-left:10px;padding:5px;color:#fff!important;font-size:30px}#navigation button.btn-mobile-active>i:before{content:"\e01f"!important}#menu-overlay{position:fixed;top:0;bottom:0;left:0;right:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);z-index:10!important}#topMain,#topNav ul.dropdown-menu{color:#777;background-color:#fff!important}#topNav ul.dropdown-menu{border:0}#topMain>li>a{color:#fff!important}#topNav ul.dropdown-menu li>a{color:#fbfbfb!important}#topMain>li>a,#topNav ul.dropdown-menu li>a{font-size:15px!important}#topNav div.nav-main-collapse.collapse{display:none!important}#topNav div.nav-main-collapse.in{display:block!important}#topNav div.nav-main-collapse{position:relative}#topMain>li>a>span{display:none!important}#topMain li{display:block!important;float:none;text-align:left;border-radius:0}#topMain li a{text-align:left;border:0;height:auto;line-height:15px;border-radius:0}#topMain>li:hover,#topMain>li:hover>a{border-top:0!important}#topMain>li>a{height:auto;line-height:auto}#topMain ul.dropdown-menu{position:static;clear:both;float:none;display:none!important;border-left:0!important;box-shadow:none}#topNav nav.nav-main li.resp-active>ul.dropdown-menu{display:block!important;margin-left:30px;margin-right:30px;padding:0 0;border-right:0}#topNav nav.nav-main li.resp-active>ul.dropdown-menu li{border-left:0;padding:0!important}#topNav ul.nav>li.active>a:before,#topNav ul.nav>li:hover>a:before{background-color:transparent}#topNav ul.dropdown-menu>li:hover>ul.dropdown-menu{position:static}#topNav div.submenu-dark ul.dropdown-menu{border-top:0}#topNav nav.nav-main li.resp-active>ul.dropdown-menu{margin:0;padding:0}#topNav nav.nav-main li>ul.dropdown-menu li a{padding:8px 5px 8px 30px;font-size:14px!important}#topNav .dropdown-menu.pull-left,#topNav .dropdown-menu.pull-right{float:none!important}}@media only screen and (max-width:500px){#topNav div.nav-main-collapse{max-height:290px;overflow-y:auto}}#topNav #topMain>li.mega-menu{position:inherit;color:#fff}#topNav #topMain>li.mega-menu>ul{max-width:100%;width:100%}#topNav #topMain>li.mega-menu div.row{display:table;margin:0;padding:0;width:100%}#topNav #topMain>li.mega-menu div.row div{display:table-cell;border-left:rgba(0,0,0,.1) 1px solid;margin-left:-1px;display:table-cell;vertical-align:top;float:none;margin:0;padding:15px 0 0 0}#topNav #topMain>li.mega-menu div.row>div:first-child{border-left:0!important}#topNav #topMain>li.mega-menu div.row div>ul>li>span{color:#111;font-weight:700;display:block;padding:6px 15px 15px 15px}@media only screen and (max-width:767px){#topNav #topMain>li.mega-menu div.row div>ul>li>span{color:#fff}}#topNav #topMain>li.mega-menu div.row div:first-child{border-left:0}#topNav #topMain>li.mega-menu div.row div>ul>li+li>span{margin-top:25px}#topNav ul.dropdown-menu a.dropdown-toggle{background-image:url(../images/_smarty/submenu_light.png)}#topNav div.submenu-dark ul.dropdown-menu{background:#333;background-color:#333}#topNav div.submenu-dark ul.dropdown-menu a.dropdown-toggle{background-image:url(../images/_smarty/submenu_dark.png)}#topNav div.submenu-dark ul.dropdown-menu li.active:focus>a,#topNav div.submenu-dark ul.dropdown-menu li.active:hover>a,#topNav div.submenu-dark ul.dropdown-menu li.active>a,#topNav div.submenu-dark ul.dropdown-menu li:focus>a,#topNav div.submenu-dark ul.dropdown-menu li:hover>a{color:#fff;background-color:#ffc926}#topNav div.submenu-dark ul.dropdown-menu li.divider{background-color:rgba(255,255,255,.1)}#topNav div.submenu-dark #topMain>li.mega-menu div.row div>ul>li>span{color:#fff}#topNav div.submenu-dark #topMain>li.mega-menu div.row>div{border-left:rgba(0,0,0,.2) 1px solid}@media only screen and (max-width:767px){#topNav div.submenu-dark li>a{color:#777!important}#topNav div.submenu-dark li:hover>a{color:#fff!important}#header.dark.transparent #topMain,#header.translucent #topMain{background-color:#fff!important}}#topMain>li>a{padding:6px 10px 4px 10px}#topMain.nav-pills>li>a{font-family:Raleway,sans-serif;font-size:14px;margin-top:0;color:#777;background-color:transparent;font-weight:600}#topMain.nav-pills>li:focus>a,#topMain.nav-pills>li:hover>a{color:#fff;background-color:#ffc926}#topMain.nav-pills>li.active>a{color:#687482}#topMain.nav-pills>li>a.dropdown-toggle{border-radius:0}#topNav .navbar-collapse{float:left;padding-right:0;padding-left:0}#topNav a.logo{height:96px;line-height:96px;overflow:hidden;display:inline-block}@media only screen and (max-width:1215px){#topMain.nav-pills>li>a{font-size:14px}}@media only screen and (max-width:767px){#header{height:0!important}.navbar,.navbar-collapse{margin:4px 0 0 0}#header #topNav #topMain>li>a{height:40px!important;line-height:40px!important;padding-top:0}#topMain>li{border-bottom:rgba(0,0,0,.1) 1px solid}#topMain>li:last-child{border-bottom:0}#header li.search .search-box{margin:0!important;position:fixed;left:0;right:0;top:60px!important;width:100%;background-color:#fff;border-top:rgba(0,0,0,.1) 1px solid}}#topNav .navbar-collapse::before{position:absolute;content:"";z-index:99998;width:0;height:0;left:4px;top:10px;border-top:8px solid transparent;border-bottom:8px solid transparent;border-left:10px solid #ffc926} \ No newline at end of file diff --git a/trunk/web/css/my-custom.css.map b/trunk/web/css/my-custom.css.map new file mode 100644 index 00000000..a0eaa80f --- /dev/null +++ b/trunk/web/css/my-custom.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["my-custom.css","../../src/AppBundle/Resources/public/css/https:/fonts.googleapis.com/css?family=Raleway:400,100,200,300,500,600,700,800,900","../../src/AppBundle/Resources/public/css/https:/fonts.googleapis.com/css?family=Oswald:400,700","../../src/AppBundle/Resources/public/css/bootstrap-3.3.7.css","../../src/AppBundle/Resources/public/css/jqueryUI.css","../../src/AppBundle/Resources/public/css/font-awesome-4.7.0.css","../../src/AppBundle/Resources/public/css/bootstrap-select-1.13.2.css","../../src/AppBundle/Resources/public/css/owl-carousel.css","../../src/AppBundle/Resources/public/css/cookieconsent.min.css","../../src/AppBundle/Resources/public/css/custom.css","../../src/AppBundle/Resources/public/css/header-min.css"],"names":[],"mappings":"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RAEE,WACA,yBACA,oBAGF,CAAA,2EAEE,qBAQF,CAAA,6RAGE,yBACA,oBAEF,CAAA,oBACE,cACA,qBAEF,CAAA,YACE,WACA,yBACA,oBAGF,CAAA,oCACE,WACA,yBACA,oBAEF,CAAA,kBACE,WACA,yBACA,oBAGF,CAAA,wEAEE,WACA,yBACA,oBASF,CAAA,8QAEE,WACA,yBACA,oBAGF,CAAA,wEAEE,qBAQF,CAAA,oRAGE,yBACA,oBAEF,CAAA,mBACE,cACA,qBAEF,CAAA,UACE,gBACA,cACA,eAEF,CAAA,6FAKE,6BACA,AACQ,eAEV,CAAA,2DAIE,wBAGF,CAAA,gCACE,cACA,0BACA,4BAIF,CAAA,0HAEE,WACA,oBAGF,CAAA,2BACE,kBACA,eACA,sBACA,iBAGF,CAAA,2BACE,iBACA,eACA,gBACA,iBAGF,CAAA,2BACE,gBACA,eACA,gBACA,iBAEF,CAAA,WACE,cACA,UAEF,CAAA,sBACE,cAIF,CAAA,sFACE,UAEF,CAAA,MACE,UACA,AAEQ,8BAEV,CAAA,SACE,SAEF,CAAA,UACE,YAEF,CAAA,aACE,aAEF,CAAA,eACE,iBAEF,CAAA,kBACE,uBAEF,CAAA,YACE,kBACA,SACA,gBACA,AAEQ,gCACR,AAEQ,yBACR,AAEQ,qCAEV,CAAA,OACE,qBACA,QACA,SACA,gBACA,sBACA,sBACA,uBACA,mCACA,iCAGF,CAAA,kBACE,iBAEF,CAAA,uBACE,SAEF,CAAA,eACE,kBACA,SACA,OACA,aACA,aACA,WACA,gBACA,cACA,eACA,eACA,gBACA,gBACA,sBACA,oCACQ,4BACR,sBACA,iCACA,kBACA,AACQ,sCAEV,CAAA,0BACE,QACA,SAEF,CAAA,wBACE,WACA,aACA,gBACA,wBAEF,CAAA,oBACE,cACA,iBACA,WACA,gBACA,uBACA,WACA,kBAGF,CAAA,oDACE,cACA,qBACA,wBAEF,CAAA,uFAGE,WACA,qBACA,yBACA,SAEF,CAAA,6FAGE,UAGF,CAAA,kEACE,qBACA,mBACA,6BACA,sBACA,gEAEF,CAAA,qBACE,aAEF,CAAA,QACE,SAEF,CAAA,qBA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yDACE,2BAEF,CAAA,eACE,oBAEF,CAAA,8BACE,cACA,yBACA,oBAEF,CAAA,0DACE,wBAEF,CAAA,qCACE,cACA,wBAEF,CAAA,yDACE,2BAEF,CAAA,YACE,oBAEF,CAAA,2BACE,cACA,yBACA,oBAEF,CAAA,uDACE,wBAEF,CAAA,kCACE,cACA,wBAEF,CAAA,sDACE,2BAEF,CAAA,eACE,oBAEF,CAAA,8BACE,cACA,yBACA,oBAEF,CAAA,0DACE,wBAEF,CAAA,qCACE,cACA,wBAEF,CAAA,yDACE,2BAEF,CAAA,cACE,oBAEF,CAAA,6BACE,cACA,yBACA,oBAEF,CAAA,yDACE,wBAEF,CAAA,oCACE,cACA,wBAEF,CAAA,wDACE,2BAEF,CAAA,kBACE,kBACA,cACA,SACA,UACA,eAEF,CAAA,2IAKE,kBACA,MACA,SACA,OACA,WACA,YACA,QAEF,CAAA,wBACE,qBAEF,CAAA,uBACE,kBAEF,CAAA,MACE,gBACA,aACA,mBACA,yBACA,yBACA,kBACA,AACQ,0CAEV,CAAA,iBACE,kBACA,4BAEF,CAAA,SACE,aACA,iBAEF,CAAA,SACE,YACA,iBAEF,CAAA,OACE,YACA,eACA,gBACA,cACA,WACA,yBACA,yBACA,UAGF,CAAA,0BACE,WACA,qBACA,eACA,yBACA,UAEF,CAAA,aACE,wBACA,UACA,eACA,eACA,QAEF,CAAA,YACE,eAEF,CAAA,OACE,eACA,MACA,QACA,SACA,OACA,aACA,aACA,gBACA,iCACA,SAEF,CAAA,0BAGU,0CACR,AADQ,kCACR,AADQ,kEACR,oCACI,AAEI,2BAEV,CAAA,wBACE,iCACI,AAEI,wBAEV,CAAA,mBACE,kBACA,eAEF,CAAA,cACE,kBACA,WACA,WAEF,CAAA,eACE,kBACA,sBACA,oCACQ,4BACR,sBACA,gCACA,kBACA,UACA,AACQ,mCAEV,CAAA,gBACE,eACA,MACA,QACA,SACA,OACA,aACA,qBAEF,CAAA,qBACE,wBACA,SAEF,CAAA,mBACE,yBACA,UAEF,CAAA,cACE,aACA,+BAEF,CAAA,qBACE,eAEF,CAAA,aACE,SACA,sBAEF,CAAA,YACE,kBACA,YAEF,CAAA,cACE,aACA,iBACA,4BAEF,CAAA,wBACE,gBACA,eAEF,CAAA,mCACE,gBAEF,CAAA,oCACE,aAEF,CAAA,yBACE,kBACA,YACA,WACA,YACA,eAEF,CAAA,yBACE,cACE,YACA,gBAEF,CAAA,eAEU,oCAEV,CAAA,UACE,WAGJ,CAAA,CAAA,yBACE,UACE,WAGJ,CAAA,CAAA,SACE,kBACA,aACA,cACA,wDACA,eACA,kBACA,gBACA,uBACA,gBACA,iBACA,qBACA,iBACA,oBACA,sBACA,kBACA,oBACA,iBACA,mBACA,wBACA,UAEA,eAEF,CAAA,YACE,yBACA,UAEF,CAAA,aACE,cACA,eAEF,CAAA,eACE,cACA,eAEF,CAAA,gBACE,cACA,cAEF,CAAA,cACE,cACA,gBAEF,CAAA,eACE,gBACA,gBACA,WACA,kBACA,sBACA,iBAEF,CAAA,eACE,kBACA,QACA,SACA,yBACA,kBAEF,CAAA,4BACE,SACA,SACA,iBACA,uBACA,qBAEF,CAAA,iCACE,UACA,SACA,mBACA,uBACA,qBAEF,CAAA,kCACE,SACA,SACA,mBACA,uBACA,qBAEF,CAAA,8BACE,QACA,OACA,gBACA,2BACA,uBAEF,CAAA,6BACE,QACA,QACA,gBACA,2BACA,sBAEF,CAAA,+BACE,MACA,SACA,iBACA,uBACA,wBAEF,CAAA,oCACE,MACA,UACA,gBACA,uBACA,wBAEF,CAAA,qCACE,MACA,SACA,gBACA,uBACA,wBAEF,CAAA,SACE,kBACA,MACA,OACA,aACA,aACA,gBACA,YACA,wDACA,eACA,kBACA,gBACA,uBACA,gBACA,iBACA,qBACA,iBACA,oBACA,sBACA,kBACA,oBACA,iBACA,mBACA,sBACA,oCACQ,4BACR,sBACA,gCACA,kBACA,AACQ,qCAER,eAEF,CAAA,aACE,gBAEF,CAAA,eACE,gBAEF,CAAA,gBACE,eAEF,CAAA,cACE,iBAEF,CAAA,eACE,iBACA,SACA,eACA,yBACA,gCACA,yBAEF,CAAA,iBACE,gBAEF,CAAA,sCAEE,kBACA,cACA,QACA,SACA,yBACA,kBAEF,CAAA,gBACE,iBAEF,CAAA,sBACE,WACA,iBAEF,CAAA,oBACE,aACA,SACA,kBACA,sBACA,iCACA,qBAEF,CAAA,0BACE,WACA,kBACA,YACA,sBACA,qBAEF,CAAA,sBACE,QACA,WACA,iBACA,wBACA,mCACA,mBAEF,CAAA,4BACE,aACA,SACA,YACA,wBACA,mBAEF,CAAA,uBACE,UACA,SACA,kBACA,mBACA,yBACA,mCAEF,CAAA,6BACE,QACA,kBACA,YACA,mBACA,wBAEF,CAAA,qBACE,QACA,YACA,iBACA,qBACA,uBACA,iCAEF,CAAA,2BACE,UACA,aACA,YACA,qBACA,sBAEF,CAAA,UACE,iBAEF,CAAA,gBACE,kBACA,WACA,eAEF,CAAA,sBACE,kBACA,aACA,AAEQ,+BAGV,CAAA,sDACE,aAEF,CAAA,qDACE,sBAGU,6CAER,AAFQ,qCAER,AAFQ,wEAER,mCACQ,2BACR,2BACQ,kBAGV,CAAA,8DACE,OACA,wCACQ,+BAGV,CAAA,6DACE,OACA,yCACQ,gCAIV,CAAA,8FACE,OACA,qCACQ,4BAGZ,CAAA,CAAA,oEAGE,aAEF,CAAA,wBACE,MAEF,CAAA,4CAEE,kBACA,MACA,UAEF,CAAA,sBACE,SAEF,CAAA,sBACE,UAEF,CAAA,uDAEE,MAEF,CAAA,6BACE,UAEF,CAAA,8BACE,SAEF,CAAA,kBACE,kBACA,MACA,SACA,OACA,UACA,eACA,WACA,kBACA,qCACA,+BACA,yBACA,UAEF,CAAA,uBAIE,mFACA,sHACA,0BAEF,CAAA,wBACE,QACA,UACA,AAGA,mFACA,sHACA,0BAGF,CAAA,gDACE,WACA,qBACA,yBACA,UACA,UAIF,CAAA,+IAEE,kBACA,QACA,UACA,qBACA,gBAGF,CAAA,uEACE,SACA,iBAGF,CAAA,wEACE,UACA,kBAGF,CAAA,0DACE,WACA,YACA,kBACA,aAEF,CAAA,oCACE,eAEF,CAAA,oCACE,eAEF,CAAA,qBACE,kBACA,YACA,SACA,WACA,UACA,eACA,iBACA,kBACA,eAEF,CAAA,wBACE,qBACA,WACA,YACA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","file":"my-custom.css"} \ No newline at end of file diff --git a/trunk/web/css/preload-min.css b/trunk/web/css/preload-min.css new file mode 100644 index 00000000..3ce2b60f --- /dev/null +++ b/trunk/web/css/preload-min.css @@ -0,0 +1 @@ +#preloader{position:fixed;z-index:9999999;top:0;bottom:0;right:0;left:0;background:#fff}.inner{position:absolute;top:0;bottom:0;right:0;left:0;width:54px;height:54px;margin:auto}.page-loader{display:block;width:100%;height:100%;position:fixed;top:0;left:0;background:#fefefe;z-index:100000}#preloader span.loader{width:50px;height:50px;position:absolute;top:50%;left:50%;margin:-25px 0 0 -25px;font-size:10px;text-indent:-12345px;border-top:1px solid rgba(0,0,0,0.08);border-right:1px solid rgba(0,0,0,0.08);border-bottom:1px solid rgba(0,0,0,0.08);border-left:1px solid rgba(0,0,0,0.5);border-radius:50%;-webkit-animation:spinner 700ms infinite linear;animation:spinner 700ms infinite linear;z-index:100001}@-webkit-keyframes spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}} diff --git a/trunk/web/fonts/FontAwesome.otf b/trunk/web/fonts/FontAwesome.otf new file mode 100644 index 00000000..401ec0f3 Binary files /dev/null and b/trunk/web/fonts/FontAwesome.otf differ diff --git a/trunk/web/fonts/fontawesome-webfont.eot b/trunk/web/fonts/fontawesome-webfont.eot new file mode 100644 index 00000000..e9f60ca9 Binary files /dev/null and b/trunk/web/fonts/fontawesome-webfont.eot differ diff --git a/trunk/web/fonts/fontawesome-webfont.svg b/trunk/web/fonts/fontawesome-webfont.svg new file mode 100644 index 00000000..855c845e --- /dev/null +++ b/trunk/web/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/trunk/web/fonts/fontawesome-webfont.ttf b/trunk/web/fonts/fontawesome-webfont.ttf new file mode 100644 index 00000000..35acda2f Binary files /dev/null and b/trunk/web/fonts/fontawesome-webfont.ttf differ diff --git a/trunk/web/fonts/fontawesome-webfont.woff b/trunk/web/fonts/fontawesome-webfont.woff new file mode 100644 index 00000000..400014a4 Binary files /dev/null and b/trunk/web/fonts/fontawesome-webfont.woff differ diff --git a/trunk/web/fonts/fontawesome-webfont.woff2 b/trunk/web/fonts/fontawesome-webfont.woff2 new file mode 100644 index 00000000..4d13fc60 Binary files /dev/null and b/trunk/web/fonts/fontawesome-webfont.woff2 differ diff --git a/trunk/web/fonts/glyphicons-halflings-regular.eot b/trunk/web/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 00000000..b93a4953 Binary files /dev/null and b/trunk/web/fonts/glyphicons-halflings-regular.eot differ diff --git a/trunk/web/fonts/glyphicons-halflings-regular.svg b/trunk/web/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 00000000..94fb5490 --- /dev/null +++ b/trunk/web/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/trunk/web/fonts/glyphicons-halflings-regular.ttf b/trunk/web/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 00000000..1413fc60 Binary files /dev/null and b/trunk/web/fonts/glyphicons-halflings-regular.ttf differ diff --git a/trunk/web/fonts/glyphicons-halflings-regular.woff b/trunk/web/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 00000000..9e612858 Binary files /dev/null and b/trunk/web/fonts/glyphicons-halflings-regular.woff differ diff --git a/trunk/web/fonts/glyphicons-halflings-regular.woff2 b/trunk/web/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 00000000..64539b54 Binary files /dev/null and b/trunk/web/fonts/glyphicons-halflings-regular.woff2 differ diff --git a/trunk/web/fonts/trips.eot b/trunk/web/fonts/trips.eot new file mode 100644 index 00000000..1a047088 Binary files /dev/null and b/trunk/web/fonts/trips.eot differ diff --git a/trunk/web/fonts/trips.svg b/trunk/web/fonts/trips.svg new file mode 100644 index 00000000..0cc25cbe --- /dev/null +++ b/trunk/web/fonts/trips.svg @@ -0,0 +1,477 @@ + + + +Generated by Fontastic.me + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/trunk/web/fonts/trips.ttf b/trunk/web/fonts/trips.ttf new file mode 100644 index 00000000..26843a51 Binary files /dev/null and b/trunk/web/fonts/trips.ttf differ diff --git a/trunk/web/fonts/trips.woff b/trunk/web/fonts/trips.woff new file mode 100644 index 00000000..9553a729 Binary files /dev/null and b/trunk/web/fonts/trips.woff differ diff --git a/trunk/web/googlec26cab604b52fdc7.html b/trunk/web/googlec26cab604b52fdc7.html new file mode 100644 index 00000000..9e36064e --- /dev/null +++ b/trunk/web/googlec26cab604b52fdc7.html @@ -0,0 +1 @@ +google-site-verification: googlec26cab604b52fdc7.html \ No newline at end of file diff --git a/trunk/web/images/.DS_Store b/trunk/web/images/.DS_Store index 7d88cb9f..bd8d402e 100644 Binary files a/trunk/web/images/.DS_Store and b/trunk/web/images/.DS_Store differ diff --git a/trunk/web/images/48d1667.png b/trunk/web/images/48d1667.png deleted file mode 100644 index 5a8a457d..00000000 Binary files a/trunk/web/images/48d1667.png and /dev/null differ diff --git a/trunk/web/images/48d1667_stern-tours_1.png b/trunk/web/images/48d1667_stern-tours_1.png deleted file mode 100644 index 5a8a457d..00000000 Binary files a/trunk/web/images/48d1667_stern-tours_1.png and /dev/null differ diff --git a/trunk/web/js/6d62c9a.js b/trunk/web/js/6d62c9a.js new file mode 100644 index 00000000..51c707db --- /dev/null +++ b/trunk/web/js/6d62c9a.js @@ -0,0 +1,96 @@ +$(document).ready(function() { + + var frm$ = $('.st-booking-form'); + var summary$ = $('.st-booking-summary'); + + var roomCountSR$ = $('#booking_request_singleRoomCount'); + var roomCountDR$ = $('#booking_request_doubleRoomCount'); + var roomCountTR$ = $('#booking_request_tripleRoomCount'); + //var travelersIndices = $('.st-traveller-index'); + + var travelers$ = $('.st-traveler'); + var travelerFields$ = travelers$.find('input,select'); + + frm$.find('input, select').change(function() { + var tmp = location.href.split('?'); + var tmp2 = tmp[0].split('/'); + tmp2.pop(); + var url = tmp2.join('/') + '/berechne-gesamtpreis'; + if (tmp[1]) + { + url += '?'+ tmp[1]; + } + + $.ajax({ + url: url, + type: 'post', + data: frm$.serialize() + + }).then(function(r) { + summary$.html(r); + + }, function() { + summary$.html('Aufgrund eines Fehlers konnte kein Angebot ermittelt werden.'); + }) + }); + + function updateTravelers() + { + var travelersIndex = 1; + + var singleTravelerCount = parseInt(roomCountSR$.val()); + var doubleTravelerCount = parseInt(roomCountDR$.val()) * 2; + var tripleTravelerCount = parseInt(roomCountTR$.val()) * 3; + + var allTravelersCount = singleTravelerCount + doubleTravelerCount + tripleTravelerCount; + + travelers$.hide(); + travelerFields$.prop('required', false); + + if(singleTravelerCount > 0) + { + for(var i = 1; i <= singleTravelerCount; i++) + { + var travelerSelector = '.st-traveler-' + i; + var roomIndexSelector = travelerSelector+' .st-traveller-index'; + var currentRoomIndex = $(travelerSelector).attr("data-room-index"); + $(travelerSelector).show().find('input,select').prop('required', true); + //$(roomIndexSelector).text(currentRoomIndex); + $(roomIndexSelector).text("Einzelzimmer"); + } + } + + if(doubleTravelerCount > 0) + { + var offset = 5 - singleTravelerCount; + for(var j = 6; j <= doubleTravelerCount + 5; j++) + { + var travelerSelector = '.st-traveler-'+j; + var roomIndexSelector = travelerSelector+' .st-traveller-index'; + var currentRoomIndex = $(travelerSelector).attr("data-room-index"); + $(travelerSelector).show().find('input,select').prop('required', true); + //$(roomIndexSelector).text(currentRoomIndex - offset); + $(roomIndexSelector).text("Doppelzimmer"); + } + } + + if(tripleTravelerCount > 0) + { + var offset = 10 - (singleTravelerCount + (doubleTravelerCount / 2)); + for(var k = 16; k <= tripleTravelerCount + 15; k++) + { + var travelerSelector = '.st-traveler-'+k; + var roomIndexSelector = travelerSelector+' .st-traveller-index'; + var currentRoomIndex = $(travelerSelector).attr("data-room-index"); + $(travelerSelector).show().find('input,select').prop('required', true); + //$(roomIndexSelector).text(currentRoomIndex - offset); + $(roomIndexSelector).text("Dreibettzimmer"); + } + } + + } + roomCountSR$.change(updateTravelers); + roomCountDR$.change(updateTravelers); + roomCountTR$.change(updateTravelers); + updateTravelers(); +}); \ No newline at end of file diff --git a/trunk/web/js/760e580.js b/trunk/web/js/760e580.js new file mode 100644 index 00000000..a2ba6fe8 --- /dev/null +++ b/trunk/web/js/760e580.js @@ -0,0 +1,38098 @@ +/*! + * jQuery JavaScript Library v3.1.1 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2016-09-22T22:30Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var document = window.document; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var concat = arr.concat; + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + + + + function DOMEval( code, doc ) { + doc = doc || document; + + var script = doc.createElement( "script" ); + + script.text = code; + doc.head.appendChild( script ).parentNode.removeChild( script ); + } +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.1.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android <=4.0 only + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = jQuery.isArray( copy ) ) ) ) { + + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray( src ) ? src : []; + + } else { + clone = src && jQuery.isPlainObject( src ) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isFunction: function( obj ) { + return jQuery.type( obj ) === "function"; + }, + + isArray: Array.isArray, + + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, + + isNumeric: function( obj ) { + + // As of jQuery 3.0, isNumeric is limited to + // strings and numbers (primitives or objects) + // that can be coerced to finite numbers (gh-2662) + var type = jQuery.type( obj ); + return ( type === "number" || type === "string" ) && + + // parseFloat NaNs numeric-cast false positives ("") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + !isNaN( obj - parseFloat( obj ) ); + }, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + + /* eslint-disable no-unused-vars */ + // See https://github.com/eslint/eslint/issues/6125 + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + globalEval: function( code ) { + DOMEval( code ); + }, + + // Convert dashed to camelCase; used by the css and data modules + // Support: IE <=9 - 11, Edge 12 - 13 + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android <=4.0 only + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: Date.now, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.3 + * https://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-08-08 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + disabledAncestor = addCombinator( + function( elem ) { + return elem.disabled === true && ("form" in elem || "label" in elem); + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[i] = "#" + nid + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement("fieldset"); + + try { + return !!fn( el ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + disabledAncestor( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( preferredDoc !== document && + (subWindow = document.defaultView) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( el ) { + el.className = "i"; + return !el.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( el ) { + el.appendChild( document.createComment("") ); + return !el.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID filter and find + if ( support.getById ) { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( (elem = elems[i++]) ) { + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( el ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll(":enabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll(":disabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( el ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + !compilerCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return (sel + "").replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( (oldCache = uniqueCache[ key ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( el ) { + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( el ) { + return el.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Simple selector that can be filtered directly, removing non-Elements + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + // Complex selector, compare the two sets, removing non-Elements + qualifier = jQuery.filter( qualifier, elements ); + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1; + } ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + return elem.contentDocument || jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( jQuery.isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && jQuery.isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + resolve.call( undefined, value ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.call( undefined, value ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( jQuery.isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ jQuery.camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ jQuery.camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( jQuery.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( jQuery.camelCase ); + } else { + key = jQuery.camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + jQuery.contains( elem.ownerDocument, elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + +var swap = function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, + scale = 1, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + do { + + // If previous iteration zeroed out, double until we get *something*. + // Use string for doubling so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + initialInUnit = initialInUnit / scale; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // Break the loop if scale is unchanged or perfect, or if we've just had enough. + } while ( + scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations + ); + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); + +var rscriptType = ( /^$|\/(?:java|ecma)script/i ); + + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // Support: IE <=9 only + option: [ 1, "" ], + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
      " ], + col: [ 2, "", "
      " ], + tr: [ 2, "", "
      " ], + td: [ 3, "", "
      " ], + + _default: [ 0, "", "" ] +}; + +// Support: IE <=9 only +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && jQuery.nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, contains, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +} )(); +var documentElement = document.documentElement; + + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 only +// See #13393 for more info +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + // Make a writable jQuery.Event from the native event object + var event = jQuery.event.fix( nativeEvent ); + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or 2) have namespace(s) + // a subset or equal to those in the bound event (both can have no namespace). + if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: jQuery.isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + this.focus(); + return false; + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + /* eslint-disable max-len */ + + // See https://github.com/eslint/eslint/issues/3229 + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, + + /* eslint-enable */ + + // Support: IE <=10 - 11, Edge 12 - 13 + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +function manipulationTarget( elem, content ) { + if ( jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return elem.getElementsByTagName( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + + if ( match ) { + elem.type = match[ 1 ]; + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.access( src ); + pdataCur = dataPriv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rmargin = ( /^margin/ ); + +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + div.style.cssText = + "box-sizing:border-box;" + + "position:relative;display:block;" + + "margin:auto;border:1px;padding:1px;" + + "top:1%;width:50%"; + div.innerHTML = ""; + documentElement.appendChild( container ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = divStyle.marginLeft === "2px"; + boxSizingReliableVal = divStyle.width === "4px"; + + // Support: Android 4.0 - 4.3 only + // Some styles come back with percentage values, even though they shouldn't + div.style.marginRight = "50%"; + pixelMarginRightVal = divStyle.marginRight === "4px"; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" + + "padding:0;margin-top:1px;position:absolute"; + container.appendChild( div ); + + jQuery.extend( support, { + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelMarginRight: function() { + computeStyleTests(); + return pixelMarginRightVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + style = elem.style; + + computed = computed || getStyles( elem ); + + // Support: IE <=9 only + // getPropertyValue is only needed for .css('filter') (#12537) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }, + + cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style; + +// Return a css property mapped to a potentially vendor prefixed property +function vendorPropName( name ) { + + // Shortcut for names that are not vendor prefixed + if ( name in emptyStyle ) { + return name; + } + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +function setPositiveNumber( elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i, + val = 0; + + // If we already have the right measurement, avoid augmentation + if ( extra === ( isBorderBox ? "border" : "content" ) ) { + i = 4; + + // Otherwise initialize for horizontal or vertical properties + } else { + i = name === "width" ? 1 : 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // At this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + + // At this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // At this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with offset property, which is equivalent to the border-box value + var val, + valueIsBorderBox = true, + styles = getStyles( elem ), + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + if ( elem.getClientRects().length ) { + val = elem.getBoundingClientRect()[ name ]; + } + + // Some non-html elements return undefined for offsetWidth, so check for null/undefined + // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 + // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 + if ( val <= 0 || val == null ) { + + // Fall back to computed then uncomputed css if necessary + val = curCSS( elem, name, styles ); + if ( val < 0 || val == null ) { + val = elem.style[ name ]; + } + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test( val ) ) { + return val; + } + + // Check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && + ( support.boxSizingReliable() || val === elem.style[ name ] ); + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + } + + // Use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + "float": "cssFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + style = elem.style; + + name = jQuery.cssProps[ origName ] || + ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName ); + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + if ( type === "number" ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + style[ name ] = value; + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = jQuery.camelCase( name ); + + // Make sure that we're working with the right name + name = jQuery.cssProps[ origName ] || + ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName ); + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( i, name ) { + jQuery.cssHooks[ name ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, name, extra ); + } ) : + getWidthOrHeight( elem, name, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = extra && getStyles( elem ), + subtract = extra && augmentWidthOrHeight( + elem, + name, + extra, + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + styles + ); + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ name ] = value; + value = jQuery.css( elem, name ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( !rmargin.test( prefix ) ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( jQuery.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && + ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || + jQuery.cssHooks[ tween.prop ] ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, timerId, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function raf() { + if ( timerId ) { + window.requestAnimationFrame( raf ); + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = jQuery.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 13 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = jQuery.camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( jQuery.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + if ( percent < 1 && length ) { + return remaining; + } else { + deferred.resolveWith( elem, [ animation ] ); + return false; + } + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( jQuery.isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + jQuery.proxy( result.stop, result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( jQuery.isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + // attach callbacks from options + return animation.progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( jQuery.isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + jQuery.isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing + }; + + // Go to the end state if fx are off or if document is hidden + if ( jQuery.fx.off || document.hidden ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( jQuery.isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue && type !== false ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = jQuery.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Checks the timer has not already been removed + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + if ( timer() ) { + jQuery.fx.start(); + } else { + jQuery.timers.pop(); + } +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( !timerId ) { + timerId = window.requestAnimationFrame ? + window.requestAnimationFrame( raf ) : + window.setInterval( jQuery.fx.tick, jQuery.fx.interval ); + } +}; + +jQuery.fx.stop = function() { + if ( window.cancelAnimationFrame ) { + window.cancelAnimationFrame( timerId ); + } else { + window.clearInterval( timerId ); + } + + timerId = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + jQuery.nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnothtmlwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnothtmlwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value; + + if ( typeof stateVal === "boolean" && type === "string" ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( jQuery.isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( type === "string" ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = value.match( rnothtmlwhite ) || []; + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, isFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup contextmenu" ).split( " " ), + function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; +} ); + +jQuery.fn.extend( { + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +} ); + + + + +support.focusin = "onfocusin" in window; + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = jQuery.now(); + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( jQuery.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && jQuery.type( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = jQuery.isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + // If an array was passed in, assume that it is an array of form elements. + if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( jQuery.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( jQuery.isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; + } + } + match = responseHeaders[ key.toLowerCase() ]; + } + return match == null ? null : match; + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 13 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available, append data to url + if ( s.data ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( jQuery.isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + + +jQuery._evalUrl = function( url ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + "throws": true + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( jQuery.isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain requests + if ( s.crossDomain ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( "
    • ' /* html or false to disable */ + }, pp_settings); + + // Global variables accessible only by prettyPhoto + var matchedObjects = this, percentBased = false, pp_dimensions, pp_open, + + // prettyPhoto container specific + pp_contentHeight, pp_contentWidth, pp_containerHeight, pp_containerWidth, + + // Window size + windowHeight = $(window).height(), windowWidth = $(window).width(), + + // Global elements + pp_slideshow; + + doresize = true, scroll_pos = _get_scroll(); + + // Window/Keyboard events + $(window).unbind('resize.prettyphoto').bind('resize.prettyphoto',function(){ _center_overlay(); _resize_overlay(); }); + + if(pp_settings.keyboard_shortcuts) { + $(document).unbind('keydown.prettyphoto').bind('keydown.prettyphoto',function(e){ + if(typeof $pp_pic_holder != 'undefined'){ + if($pp_pic_holder.is(':visible')){ + switch(e.keyCode){ + case 37: + $.prettyPhoto.changePage('previous'); + e.preventDefault(); + break; + case 39: + $.prettyPhoto.changePage('next'); + e.preventDefault(); + break; + case 27: + if(!settings.modal) + $.prettyPhoto.close(); + e.preventDefault(); + break; + }; + // return false; + }; + }; + }); + }; + + /** + * Initialize prettyPhoto. + */ + $.prettyPhoto.initialize = function() { + + settings = pp_settings; + + if(settings.theme == 'pp_default') settings.horizontal_padding = 16; + + // Find out if the picture is part of a set + theRel = $(this).attr(settings.hook); + galleryRegExp = /\[(?:.*)\]/; + isSet = (galleryRegExp.exec(theRel)) ? true : false; + + // Put the SRCs, TITLEs, ALTs into an array. + pp_images = (isSet) ? jQuery.map(matchedObjects, function(n, i){ if($(n).attr(settings.hook).indexOf(theRel) != -1) return $(n).attr('href'); }) : $.makeArray($(this).attr('href')); + pp_titles = (isSet) ? jQuery.map(matchedObjects, function(n, i){ if($(n).attr(settings.hook).indexOf(theRel) != -1) return ($(n).find('img').attr('alt')) ? $(n).find('img').attr('alt') : ""; }) : $.makeArray($(this).find('img').attr('alt')); + pp_descriptions = (isSet) ? jQuery.map(matchedObjects, function(n, i){ if($(n).attr(settings.hook).indexOf(theRel) != -1) return ($(n).attr('title')) ? $(n).attr('title') : ""; }) : $.makeArray($(this).attr('title')); + + if(pp_images.length > settings.overlay_gallery_max) settings.overlay_gallery = false; + + set_position = jQuery.inArray($(this).attr('href'), pp_images); // Define where in the array the clicked item is positionned + rel_index = (isSet) ? set_position : $("a["+settings.hook+"^='"+theRel+"']").index($(this)); + + _build_overlay(this); // Build the overlay {this} being the caller + + if(settings.allow_resize) + $(window).bind('scroll.prettyphoto',function(){ _center_overlay(); }); + + + $.prettyPhoto.open(); + + return false; + } + + + /** + * Opens the prettyPhoto modal box. + * @param image {String,Array} Full path to the image to be open, can also be an array containing full images paths. + * @param title {String,Array} The title to be displayed with the picture, can also be an array containing all the titles. + * @param description {String,Array} The description to be displayed with the picture, can also be an array containing all the descriptions. + */ + $.prettyPhoto.open = function(event) { + if(typeof settings == "undefined"){ // Means it's an API call, need to manually get the settings and set the variables + settings = pp_settings; + pp_images = $.makeArray(arguments[0]); + pp_titles = (arguments[1]) ? $.makeArray(arguments[1]) : $.makeArray(""); + pp_descriptions = (arguments[2]) ? $.makeArray(arguments[2]) : $.makeArray(""); + isSet = (pp_images.length > 1) ? true : false; + set_position = (arguments[3])? arguments[3]: 0; + _build_overlay(event.target); // Build the overlay {this} being the caller + } + + if(settings.hideflash) $('object,embed,iframe[src*=youtube],iframe[src*=vimeo]').css('visibility','hidden'); // Hide the flash + + _checkPosition($(pp_images).size()); // Hide the next/previous links if on first or last images. + + $('.pp_loaderIcon').show(); + + if(settings.deeplinking) + setHashtag(); + + // Rebuild Facebook Like Button with updated href + if(settings.social_tools){ + facebook_like_link = settings.social_tools.replace('{location_href}', encodeURIComponent(location.href)); + $pp_pic_holder.find('.pp_social').html(facebook_like_link); + } + + // Fade the content in + if($ppt.is(':hidden')) $ppt.css('opacity',0).show(); + $pp_overlay.show().fadeTo(settings.animation_speed,settings.opacity); + + // Display the current position + $pp_pic_holder.find('.currentTextHolder').text((set_position+1) + settings.counter_separator_label + $(pp_images).size()); + + // Set the description + if(typeof pp_descriptions[set_position] != 'undefined' && pp_descriptions[set_position] != ""){ + $pp_pic_holder.find('.pp_description').show().html(unescape(pp_descriptions[set_position])); + }else{ + $pp_pic_holder.find('.pp_description').hide(); + } + + // Get the dimensions + movie_width = ( parseFloat(getParam('width',pp_images[set_position])) ) ? getParam('width',pp_images[set_position]) : settings.default_width.toString(); + movie_height = ( parseFloat(getParam('height',pp_images[set_position])) ) ? getParam('height',pp_images[set_position]) : settings.default_height.toString(); + + // If the size is % based, calculate according to window dimensions + percentBased=false; + if(movie_height.indexOf('%') != -1) { movie_height = parseFloat(($(window).height() * parseFloat(movie_height) / 100) - 150); percentBased = true; } + if(movie_width.indexOf('%') != -1) { movie_width = parseFloat(($(window).width() * parseFloat(movie_width) / 100) - 150); percentBased = true; } + + // Fade the holder + $pp_pic_holder.fadeIn(function(){ + // Set the title + (settings.show_title && pp_titles[set_position] != "" && typeof pp_titles[set_position] != "undefined") ? $ppt.html(unescape(pp_titles[set_position])) : $ppt.html(' '); + + imgPreloader = ""; + skipInjection = false; + + // Inject the proper content + switch(_getFileType(pp_images[set_position])){ + case 'image': + imgPreloader = new Image(); + + // Preload the neighbour images + nextImage = new Image(); + if(isSet && set_position < $(pp_images).size() -1) nextImage.src = pp_images[set_position + 1]; + prevImage = new Image(); + if(isSet && pp_images[set_position - 1]) prevImage.src = pp_images[set_position - 1]; + + $pp_pic_holder.find('#pp_full_res')[0].innerHTML = settings.image_markup.replace(/{path}/g,pp_images[set_position]); + + imgPreloader.onload = function(){ + // Fit item to viewport + pp_dimensions = _fitToViewport(imgPreloader.width,imgPreloader.height); + + _showContent(); + }; + + imgPreloader.onerror = function(){ + alert('Image cannot be loaded. Make sure the path is correct and image exist.'); + $.prettyPhoto.close(); + }; + + imgPreloader.src = pp_images[set_position]; + break; + + case 'youtube': + pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport + + // Regular youtube link + movie_id = getParam('v',pp_images[set_position]); + + // youtu.be link + if(movie_id == ""){ + movie_id = pp_images[set_position].split('youtu.be/'); + movie_id = movie_id[1]; + if(movie_id.indexOf('?') > 0) + movie_id = movie_id.substr(0,movie_id.indexOf('?')); // Strip anything after the ? + + if(movie_id.indexOf('&') > 0) + movie_id = movie_id.substr(0,movie_id.indexOf('&')); // Strip anything after the & + } + + movie = 'http://www.youtube.com/embed/'+movie_id; + (getParam('rel',pp_images[set_position])) ? movie+="?rel="+getParam('rel',pp_images[set_position]) : movie+="?rel=1"; + + if(settings.autoplay) movie += "&autoplay=1"; + + toInject = settings.iframe_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,movie); + break; + + case 'vimeo': + pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport + + movie_id = pp_images[set_position]; + var regExp = /http(s?):\/\/(www\.)?vimeo.com\/(\d+)/; + var match = movie_id.match(regExp); + + movie = 'http://player.vimeo.com/video/'+ match[3] +'?title=0&byline=0&portrait=0'; + if(settings.autoplay) movie += "&autoplay=1;"; + + vimeo_width = pp_dimensions['width'] + '/embed/?moog_width='+ pp_dimensions['width']; + + toInject = settings.iframe_markup.replace(/{width}/g,vimeo_width).replace(/{height}/g,pp_dimensions['height']).replace(/{path}/g,movie); + break; + + case 'quicktime': + pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport + pp_dimensions['height']+=15; pp_dimensions['contentHeight']+=15; pp_dimensions['containerHeight']+=15; // Add space for the control bar + + toInject = settings.quicktime_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,pp_images[set_position]).replace(/{autoplay}/g,settings.autoplay); + break; + + case 'flash': + pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport + + flash_vars = pp_images[set_position]; + flash_vars = flash_vars.substring(pp_images[set_position].indexOf('flashvars') + 10,pp_images[set_position].length); + + filename = pp_images[set_position]; + filename = filename.substring(0,filename.indexOf('?')); + + toInject = settings.flash_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,filename+'?'+flash_vars); + break; + + case 'iframe': + pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport + + frame_url = pp_images[set_position]; + frame_url = frame_url.substr(0,frame_url.indexOf('iframe')-1); + + toInject = settings.iframe_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{path}/g,frame_url); + break; + + case 'ajax': + doresize = false; // Make sure the dimensions are not resized. + pp_dimensions = _fitToViewport(movie_width,movie_height); + doresize = true; // Reset the dimensions + + skipInjection = true; + $.get(pp_images[set_position],function(responseHTML){ + toInject = settings.inline_markup.replace(/{content}/g,responseHTML); + $pp_pic_holder.find('#pp_full_res')[0].innerHTML = toInject; + _showContent(); + }); + + break; + + case 'custom': + pp_dimensions = _fitToViewport(movie_width,movie_height); // Fit item to viewport + + toInject = settings.custom_markup; + break; + + case 'inline': + // to get the item height clone it, apply default width, wrap it in the prettyPhoto containers , then delete + myClone = $(pp_images[set_position]).clone().append('
      ').css({'width':settings.default_width}).wrapInner('
      ').appendTo($('body')).show(); + doresize = false; // Make sure the dimensions are not resized. + pp_dimensions = _fitToViewport($(myClone).width(),$(myClone).height()); + doresize = true; // Reset the dimensions + $(myClone).remove(); + toInject = settings.inline_markup.replace(/{content}/g,$(pp_images[set_position]).html()); + break; + }; + + if(!imgPreloader && !skipInjection){ + $pp_pic_holder.find('#pp_full_res')[0].innerHTML = toInject; + + // Show content + _showContent(); + }; + }); + + return false; + }; + + + /** + * Change page in the prettyPhoto modal box + * @param direction {String} Direction of the paging, previous or next. + */ + $.prettyPhoto.changePage = function(direction){ + currentGalleryPage = 0; + + if(direction == 'previous') { + set_position--; + if (set_position < 0) set_position = $(pp_images).size()-1; + }else if(direction == 'next'){ + set_position++; + if(set_position > $(pp_images).size()-1) set_position = 0; + }else{ + set_position=direction; + }; + + rel_index = set_position; + + if(!doresize) doresize = true; // Allow the resizing of the images + if(settings.allow_expand) { + $('.pp_contract').removeClass('pp_contract').addClass('pp_expand'); + } + + _hideContent(function(){ $.prettyPhoto.open(); }); + }; + + + /** + * Change gallery page in the prettyPhoto modal box + * @param direction {String} Direction of the paging, previous or next. + */ + $.prettyPhoto.changeGalleryPage = function(direction){ + if(direction=='next'){ + currentGalleryPage ++; + + if(currentGalleryPage > totalPage) currentGalleryPage = 0; + }else if(direction=='previous'){ + currentGalleryPage --; + + if(currentGalleryPage < 0) currentGalleryPage = totalPage; + }else{ + currentGalleryPage = direction; + }; + + slide_speed = (direction == 'next' || direction == 'previous') ? settings.animation_speed : 0; + + slide_to = currentGalleryPage * (itemsPerPage * itemWidth); + + $pp_gallery.find('ul').animate({left:-slide_to},slide_speed); + }; + + + /** + * Start the slideshow... + */ + $.prettyPhoto.startSlideshow = function(){ + if(typeof pp_slideshow == 'undefined'){ + $pp_pic_holder.find('.pp_play').unbind('click').removeClass('pp_play').addClass('pp_pause').click(function(){ + $.prettyPhoto.stopSlideshow(); + return false; + }); + pp_slideshow = setInterval($.prettyPhoto.startSlideshow,settings.slideshow); + }else{ + $.prettyPhoto.changePage('next'); + }; + } + + + /** + * Stop the slideshow... + */ + $.prettyPhoto.stopSlideshow = function(){ + $pp_pic_holder.find('.pp_pause').unbind('click').removeClass('pp_pause').addClass('pp_play').click(function(){ + $.prettyPhoto.startSlideshow(); + return false; + }); + clearInterval(pp_slideshow); + pp_slideshow=undefined; + } + + + /** + * Closes prettyPhoto. + */ + $.prettyPhoto.close = function(){ + if($pp_overlay.is(":animated")) return; + + $.prettyPhoto.stopSlideshow(); + + $pp_pic_holder.stop().find('object,embed').css('visibility','hidden'); + + $('div.pp_pic_holder,div.ppt,.pp_fade').fadeOut(settings.animation_speed,function(){ $(this).remove(); }); + + $pp_overlay.fadeOut(settings.animation_speed, function(){ + + if(settings.hideflash) $('object,embed,iframe[src*=youtube],iframe[src*=vimeo]').css('visibility','visible'); // Show the flash + + $(this).remove(); // No more need for the prettyPhoto markup + + $(window).unbind('scroll.prettyphoto'); + + clearHashtag(); + + settings.callback(); + + doresize = true; + + pp_open = false; + + delete settings; + }); + }; + + /** + * Set the proper sizes on the containers and animate the content in. + */ + function _showContent(){ + $('.pp_loaderIcon').hide(); + + // Calculate the opened top position of the pic holder + projectedTop = scroll_pos['scrollTop'] + ((windowHeight/2) - (pp_dimensions['containerHeight']/2)); + if(projectedTop < 0) projectedTop = 0; + + $ppt.fadeTo(settings.animation_speed,1); + + // Resize the content holder + $pp_pic_holder.find('.pp_content') + .animate({ + height:pp_dimensions['contentHeight'], + width:pp_dimensions['contentWidth'] + },settings.animation_speed); + + // Resize picture the holder + $pp_pic_holder.animate({ + 'top': projectedTop, + 'left': ((windowWidth/2) - (pp_dimensions['containerWidth']/2) < 0) ? 0 : (windowWidth/2) - (pp_dimensions['containerWidth']/2), + width:pp_dimensions['containerWidth'] + },settings.animation_speed,function(){ + $pp_pic_holder.find('.pp_hoverContainer,#fullResImage').height(pp_dimensions['height']).width(pp_dimensions['width']); + + $pp_pic_holder.find('.pp_fade').fadeIn(settings.animation_speed); // Fade the new content + + // Show the nav + if(isSet && _getFileType(pp_images[set_position])=="image") { $pp_pic_holder.find('.pp_hoverContainer').show(); }else{ $pp_pic_holder.find('.pp_hoverContainer').hide(); } + + if(settings.allow_expand) { + if(pp_dimensions['resized']){ // Fade the resizing link if the image is resized + $('a.pp_expand,a.pp_contract').show(); + }else{ + $('a.pp_expand').hide(); + } + } + + if(settings.autoplay_slideshow && !pp_slideshow && !pp_open) $.prettyPhoto.startSlideshow(); + + settings.changepicturecallback(); // Callback! + + pp_open = true; + }); + + _insert_gallery(); + pp_settings.ajaxcallback(); + }; + + /** + * Hide the content...DUH! + */ + function _hideContent(callback){ + // Fade out the current picture + $pp_pic_holder.find('#pp_full_res object,#pp_full_res embed').css('visibility','hidden'); + $pp_pic_holder.find('.pp_fade').fadeOut(settings.animation_speed,function(){ + $('.pp_loaderIcon').show(); + + callback(); + }); + }; + + /** + * Check the item position in the gallery array, hide or show the navigation links + * @param setCount {integer} The total number of items in the set + */ + function _checkPosition(setCount){ + (setCount > 1) ? $('.pp_nav').show() : $('.pp_nav').hide(); // Hide the bottom nav if it's not a set. + }; + + /** + * Resize the item dimensions if it's bigger than the viewport + * @param width {integer} Width of the item to be opened + * @param height {integer} Height of the item to be opened + * @return An array containin the "fitted" dimensions + */ + function _fitToViewport(width,height){ + resized = false; + + _getDimensions(width,height); + + // Define them in case there's no resize needed + imageWidth = width, imageHeight = height; + + if( ((pp_containerWidth > windowWidth) || (pp_containerHeight > windowHeight)) && doresize && settings.allow_resize && !percentBased) { + resized = true, fitting = false; + + while (!fitting){ + if((pp_containerWidth > windowWidth)){ + imageWidth = (windowWidth - 200); + imageHeight = (height/width) * imageWidth; + }else if((pp_containerHeight > windowHeight)){ + imageHeight = (windowHeight - 200); + imageWidth = (width/height) * imageHeight; + }else{ + fitting = true; + }; + + pp_containerHeight = imageHeight, pp_containerWidth = imageWidth; + }; + + + + if((pp_containerWidth > windowWidth) || (pp_containerHeight > windowHeight)){ + _fitToViewport(pp_containerWidth,pp_containerHeight) + }; + + _getDimensions(imageWidth,imageHeight); + }; + + return { + width:Math.floor(imageWidth), + height:Math.floor(imageHeight), + containerHeight:Math.floor(pp_containerHeight), + containerWidth:Math.floor(pp_containerWidth) + (settings.horizontal_padding * 2), + contentHeight:Math.floor(pp_contentHeight), + contentWidth:Math.floor(pp_contentWidth), + resized:resized + }; + }; + + /** + * Get the containers dimensions according to the item size + * @param width {integer} Width of the item to be opened + * @param height {integer} Height of the item to be opened + */ + function _getDimensions(width,height){ + width = parseFloat(width); + height = parseFloat(height); + + // Get the details height, to do so, I need to clone it since it's invisible + $pp_details = $pp_pic_holder.find('.pp_details'); + $pp_details.width(width); + detailsHeight = parseFloat($pp_details.css('marginTop')) + parseFloat($pp_details.css('marginBottom')); + + $pp_details = $pp_details.clone().addClass(settings.theme).width(width).appendTo($('body')).css({ + 'position':'absolute', + 'top':-10000 + }); + detailsHeight += $pp_details.height(); + detailsHeight = (detailsHeight <= 34) ? 36 : detailsHeight; // Min-height for the details + $pp_details.remove(); + + // Get the titles height, to do so, I need to clone it since it's invisible + $pp_title = $pp_pic_holder.find('.ppt'); + $pp_title.width(width); + titleHeight = parseFloat($pp_title.css('marginTop')) + parseFloat($pp_title.css('marginBottom')); + $pp_title = $pp_title.clone().appendTo($('body')).css({ + 'position':'absolute', + 'top':-10000 + }); + titleHeight += $pp_title.height(); + $pp_title.remove(); + + // Get the container size, to resize the holder to the right dimensions + pp_contentHeight = height + detailsHeight; + pp_contentWidth = width; + pp_containerHeight = pp_contentHeight + titleHeight + $pp_pic_holder.find('.pp_top').height() + $pp_pic_holder.find('.pp_bottom').height(); + pp_containerWidth = width; + } + + function _getFileType(itemSrc){ + if (itemSrc.match(/youtube\.com\/watch/i) || itemSrc.match(/youtu\.be/i)) { + return 'youtube'; + }else if (itemSrc.match(/vimeo\.com/i)) { + return 'vimeo'; + }else if(itemSrc.match(/\b.mov\b/i)){ + return 'quicktime'; + }else if(itemSrc.match(/\b.swf\b/i)){ + return 'flash'; + }else if(itemSrc.match(/\biframe=true\b/i)){ + return 'iframe'; + }else if(itemSrc.match(/\bajax=true\b/i)){ + return 'ajax'; + }else if(itemSrc.match(/\bcustom=true\b/i)){ + return 'custom'; + }else if(itemSrc.substr(0,1) == '#'){ + return 'inline'; + }else{ + return 'image'; + }; + }; + + function _center_overlay(){ + if(doresize && typeof $pp_pic_holder != 'undefined') { + scroll_pos = _get_scroll(); + contentHeight = $pp_pic_holder.height(), contentwidth = $pp_pic_holder.width(); + + projectedTop = (windowHeight/2) + scroll_pos['scrollTop'] - (contentHeight/2); + if(projectedTop < 0) projectedTop = 0; + + if(contentHeight > windowHeight) + return; + + $pp_pic_holder.css({ + 'top': projectedTop, + 'left': (windowWidth/2) + scroll_pos['scrollLeft'] - (contentwidth/2) + }); + }; + }; + + function _get_scroll(){ + if (self.pageYOffset) { + return {scrollTop:self.pageYOffset,scrollLeft:self.pageXOffset}; + } else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict + return {scrollTop:document.documentElement.scrollTop,scrollLeft:document.documentElement.scrollLeft}; + } else if (document.body) {// all other Explorers + return {scrollTop:document.body.scrollTop,scrollLeft:document.body.scrollLeft}; + }; + }; + + function _resize_overlay() { + windowHeight = $(window).height(), windowWidth = $(window).width(); + + if(typeof $pp_overlay != "undefined") $pp_overlay.height($(document).height()).width(windowWidth); + }; + + function _insert_gallery(){ + if(isSet && settings.overlay_gallery && _getFileType(pp_images[set_position])=="image") { + itemWidth = 52+5; // 52 beign the thumb width, 5 being the right margin. + navWidth = (settings.theme == "facebook" || settings.theme == "pp_default") ? 50 : 30; // Define the arrow width depending on the theme + + itemsPerPage = Math.floor((pp_dimensions['containerWidth'] - 100 - navWidth) / itemWidth); + itemsPerPage = (itemsPerPage < pp_images.length) ? itemsPerPage : pp_images.length; + totalPage = Math.ceil(pp_images.length / itemsPerPage) - 1; + + // Hide the nav in the case there's no need for links + if(totalPage == 0){ + navWidth = 0; // No nav means no width! + $pp_gallery.find('.pp_arrow_next,.pp_arrow_previous').hide(); + }else{ + $pp_gallery.find('.pp_arrow_next,.pp_arrow_previous').show(); + }; + + galleryWidth = itemsPerPage * itemWidth; + fullGalleryWidth = pp_images.length * itemWidth; + + // Set the proper width to the gallery items + $pp_gallery + .css('margin-left',-((galleryWidth/2) + (navWidth/2))) + .find('div:first').width(galleryWidth+5) + .find('ul').width(fullGalleryWidth) + .find('li.selected').removeClass('selected'); + + goToPage = (Math.floor(set_position/itemsPerPage) < totalPage) ? Math.floor(set_position/itemsPerPage) : totalPage; + + $.prettyPhoto.changeGalleryPage(goToPage); + + $pp_gallery_li.filter(':eq('+set_position+')').addClass('selected'); + }else{ + $pp_pic_holder.find('.pp_content').unbind('mouseenter mouseleave'); + // $pp_gallery.hide(); + } + } + + function _build_overlay(caller){ + // Inject Social Tool markup into General markup + if(settings.social_tools) + facebook_like_link = settings.social_tools.replace('{location_href}', encodeURIComponent(location.href)); + + settings.markup = settings.markup.replace('{pp_social}',''); + + $('body').append(settings.markup); // Inject the markup + + $pp_pic_holder = $('.pp_pic_holder') , $ppt = $('.ppt'), $pp_overlay = $('div.pp_overlay'); // Set my global selectors + + // Inject the inline gallery! + if(isSet && settings.overlay_gallery) { + currentGalleryPage = 0; + toInject = ""; + for (var i=0; i < pp_images.length; i++) { + if(!pp_images[i].match(/\b(jpg|jpeg|png|gif)\b/gi)){ + classname = 'default'; + img_src = ''; + }else{ + classname = ''; + img_src = pp_images[i]; + } + toInject += "
    • "; + }; + + toInject = settings.gallery_markup.replace(/{gallery}/g,toInject); + + $pp_pic_holder.find('#pp_full_res').after(toInject); + + $pp_gallery = $('.pp_pic_holder .pp_gallery'), $pp_gallery_li = $pp_gallery.find('li'); // Set the gallery selectors + + $pp_gallery.find('.pp_arrow_next').click(function(){ + $.prettyPhoto.changeGalleryPage('next'); + $.prettyPhoto.stopSlideshow(); + return false; + }); + + $pp_gallery.find('.pp_arrow_previous').click(function(){ + $.prettyPhoto.changeGalleryPage('previous'); + $.prettyPhoto.stopSlideshow(); + return false; + }); + + $pp_pic_holder.find('.pp_content').hover( + function(){ + $pp_pic_holder.find('.pp_gallery:not(.disabled)').fadeIn(); + }, + function(){ + $pp_pic_holder.find('.pp_gallery:not(.disabled)').fadeOut(); + }); + + itemWidth = 52+5; // 52 beign the thumb width, 5 being the right margin. + $pp_gallery_li.each(function(i){ + $(this) + .find('a') + .click(function(){ + $.prettyPhoto.changePage(i); + $.prettyPhoto.stopSlideshow(); + return false; + }); + }); + }; + + + // Inject the play/pause if it's a slideshow + if(settings.slideshow){ + $pp_pic_holder.find('.pp_nav').prepend('Play') + $pp_pic_holder.find('.pp_nav .pp_play').click(function(){ + $.prettyPhoto.startSlideshow(); + return false; + }); + } + + $pp_pic_holder.attr('class','pp_pic_holder ' + settings.theme); // Set the proper theme + + $pp_overlay + .css({ + 'opacity':0, + 'height':$(document).height(), + 'width':$(window).width() + }) + .bind('click',function(){ + if(!settings.modal) $.prettyPhoto.close(); + }); + + $('a.pp_close').bind('click',function(){ $.prettyPhoto.close(); return false; }); + + + if(settings.allow_expand) { + $('a.pp_expand').bind('click',function(e){ + // Expand the image + if($(this).hasClass('pp_expand')){ + $(this).removeClass('pp_expand').addClass('pp_contract'); + doresize = false; + }else{ + $(this).removeClass('pp_contract').addClass('pp_expand'); + doresize = true; + }; + + _hideContent(function(){ $.prettyPhoto.open(); }); + + return false; + }); + } + + $pp_pic_holder.find('.pp_previous, .pp_nav .pp_arrow_previous').bind('click',function(){ + $.prettyPhoto.changePage('previous'); + $.prettyPhoto.stopSlideshow(); + return false; + }); + + $pp_pic_holder.find('.pp_next, .pp_nav .pp_arrow_next').bind('click',function(){ + $.prettyPhoto.changePage('next'); + $.prettyPhoto.stopSlideshow(); + return false; + }); + + _center_overlay(); // Center it + }; + + if(!pp_alreadyInitialized && getHashtag()){ + pp_alreadyInitialized = true; + + // Grab the rel index to trigger the click on the correct element + hashIndex = getHashtag(); + hashRel = hashIndex; + hashIndex = hashIndex.substring(hashIndex.indexOf('/')+1,hashIndex.length-1); + hashRel = hashRel.substring(0,hashRel.indexOf('/')); + + // Little timeout to make sure all the prettyPhoto initialize scripts has been run. + // Useful in the event the page contain several init scripts. + setTimeout(function(){ $("a["+pp_settings.hook+"^='"+hashRel+"']:eq("+hashIndex+")").trigger('click'); },50); + } + + return this.unbind('click.prettyphoto').bind('click.prettyphoto',$.prettyPhoto.initialize); // Return the jQuery object for chaining. The unbind method is used to avoid click conflict when the plugin is called more than once + }; + + function getHashtag(){ + var url = location.href; + hashtag = (url.indexOf('#prettyPhoto') !== -1) ? decodeURI(url.substring(url.indexOf('#prettyPhoto')+1,url.length)) : false; + if(hashtag){ hashtag = hashtag.replace(/<|>/g,''); } + return hashtag; + }; + + function setHashtag(){ + if(typeof theRel == 'undefined') return; // theRel is set on normal calls, it's impossible to deeplink using the API + location.hash = theRel + '/'+rel_index+'/'; + }; + + function clearHashtag(){ + if ( location.href.indexOf('#prettyPhoto') !== -1 ) location.hash = "prettyPhoto"; + } + + function getParam(name,url){ + name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); + var regexS = "[\\?&]"+name+"=([^&#]*)"; + var regex = new RegExp( regexS ); + var results = regex.exec( url ); + return ( results == null ) ? "" : results[1]; + } + +})(jQuery); + +var pp_alreadyInitialized = false; // Used for the deep linking to make sure not to call the same function several times. + +/* detect touch */ +if("ontouchstart" in window){ + document.documentElement.className = document.documentElement.className + " touch"; +} +if(!$("html").hasClass("touch")){ + /* background fix */ + $(".parallax").css("background-attachment", "fixed"); +} + +/* fix vertical when not overflow +call fullscreenFix() if .fullscreen content changes */ +function fullscreenFix(){ + var h = $('body').height(); + // set .fullscreen height + $(".content-b").each(function(i){ + if($(this).innerHeight() <= h){ + $(this).closest(".fullscreen").addClass("not-overflow"); + } + }); +} +$(window).resize(fullscreenFix); +fullscreenFix(); + +if($(".px-bullets")){ + + $('.px-bullet').on('click', function(){ + var image = 'url('+$(this).data('src')+')'; + $('.px-bullet').removeClass('px-bullet-selected'); + $(this).addClass('px-bullet-selected'); + $('.parallax').fadeTo('slow', 0.1, function() + { + $(this).css('background-image', image); + }).fadeTo('slow', 1); + //$('.parallax').css('background-image', image).fadeTo('slow', 1); + + }); + +} +/* resize background images */ +function backgroundResize(){ + var windowH = $(window).height(); + var windowW = $(window).width(); + $(".background").each(function(i){ + var path = $(this); + // variables + var contW = path.width(); + var contH = path.height(); + var imgW = path.attr("data-img-width"); + var imgH = path.attr("data-img-height"); + + var ratio = imgW / imgH; + + var ratio2 = imgH / imgW; + // overflowing difference + var diff = parseFloat(path.attr("data-diff")); + diff = diff ? diff : 0; + // remaining height to have fullscreen image only on parallax + var remainingH = 0; + var remainingW = 0; + if(path.hasClass("parallax") && !$("html").hasClass("touch")){ + + var maxW = contW > windowW ? contW : windowW + var maxH = contH > windowH ? contH : windowH; + remainingH = windowH - contH; + remainingW = windowW - contW; + } + + if(windowW > 1024){ + imgW = contW + remainingW; + imgH = imgW * ratio2; + }else{ + imgH = contH + remainingH; + imgW = imgH * ratio; + if(contW > imgW){ + imgW = contW; + imgH = imgW / ratio; + } + } + + + + // + path.data("resized-imgW", imgW); + path.data("resized-imgH", imgH); + path.css("background-size", imgW + "px " + imgH + "px"); + }); +} +$(window).resize(backgroundResize); +$(window).focus(backgroundResize); +backgroundResize(); + +/* set parallax background-position */ +function parallaxPosition(e){ + var heightWindow = $(window).height(); + var topWindow = $(window).scrollTop(); + var bottomWindow = topWindow + heightWindow; + var currentWindow = (topWindow + bottomWindow) / 2; + + $(".parallax").each(function(i){ + var path = $(this); + var height = path.height(); + var top = 150; //path.offset().top; + var bottom = top + height; + + + var diff = parseFloat(path.attr("data-diff")); + diff = diff ? diff : 0; + if(heightWindow < 1000){ + diff = 200; + } + + // only when in range + if(bottomWindow > top && topWindow < bottom){ + var imgW = path.data("resized-imgW"); + var imgH = path.data("resized-imgH"); + // min when image touch top of window + var min = 0; + // max when image touch bottom of window + var max = - imgH + heightWindow; + // overflow changes parallax + var overflowH = height < heightWindow ? imgH - height : imgH - heightWindow; // fix height on overflow + top = top - overflowH; + bottom = bottom + overflowH; + // value with linear interpolation + var value = min + (max - min) * (currentWindow + top) / (bottom + top); + + value = (value -diff); + // set background-position + var orizontalPosition = path.attr("data-oriz-pos"); + orizontalPosition = orizontalPosition ? orizontalPosition : "50%"; + $(this).css("background-position", orizontalPosition + " " + value + "px"); + } + }); +} +if(!$("html").hasClass("touch")){ + $(window).resize(parallaxPosition); + //$(window).focus(parallaxPosition); + $(window).scroll(parallaxPosition); + parallaxPosition(); +} + + +/** + * Owl Carousel v2.2.0 + * Copyright 2013-2016 David Deutsch + * Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE) + */ +/** + * Owl carousel + * @version 2.1.6 + * @author Bartosz Wojciechowski + * @author David Deutsch + * @license The MIT License (MIT) + * @todo Lazy Load Icon + * @todo prevent animationend bubling + * @todo itemsScaleUp + * @todo Test Zepto + * @todo stagePadding calculate wrong active classes + */ +;(function($, window, document, undefined) { + + /** + * Creates a carousel. + * @class The Owl Carousel. + * @public + * @param {HTMLElement|jQuery} element - The element to create the carousel for. + * @param {Object} [options] - The options + */ + function Owl(element, options) { + + /** + * Current settings for the carousel. + * @public + */ + this.settings = null; + + /** + * Current options set by the caller including defaults. + * @public + */ + this.options = $.extend({}, Owl.Defaults, options); + + /** + * Plugin element. + * @public + */ + this.$element = $(element); + + /** + * Proxied event handlers. + * @protected + */ + this._handlers = {}; + + /** + * References to the running plugins of this carousel. + * @protected + */ + this._plugins = {}; + + /** + * Currently suppressed events to prevent them from beeing retriggered. + * @protected + */ + this._supress = {}; + + /** + * Absolute current position. + * @protected + */ + this._current = null; + + /** + * Animation speed in milliseconds. + * @protected + */ + this._speed = null; + + /** + * Coordinates of all items in pixel. + * @todo The name of this member is missleading. + * @protected + */ + this._coordinates = []; + + /** + * Current breakpoint. + * @todo Real media queries would be nice. + * @protected + */ + this._breakpoint = null; + + /** + * Current width of the plugin element. + */ + this._width = null; + + /** + * All real items. + * @protected + */ + this._items = []; + + /** + * All cloned items. + * @protected + */ + this._clones = []; + + /** + * Merge values of all items. + * @todo Maybe this could be part of a plugin. + * @protected + */ + this._mergers = []; + + /** + * Widths of all items. + */ + this._widths = []; + + /** + * Invalidated parts within the update process. + * @protected + */ + this._invalidated = {}; + + /** + * Ordered list of workers for the update process. + * @protected + */ + this._pipe = []; + + /** + * Current state information for the drag operation. + * @todo #261 + * @protected + */ + this._drag = { + time: null, + target: null, + pointer: null, + stage: { + start: null, + current: null + }, + direction: null + }; + + /** + * Current state information and their tags. + * @type {Object} + * @protected + */ + this._states = { + current: {}, + tags: { + 'initializing': [ 'busy' ], + 'animating': [ 'busy' ], + 'dragging': [ 'interacting' ] + } + }; + + $.each([ 'onResize', 'onThrottledResize' ], $.proxy(function(i, handler) { + this._handlers[handler] = $.proxy(this[handler], this); + }, this)); + + $.each(Owl.Plugins, $.proxy(function(key, plugin) { + this._plugins[key.charAt(0).toLowerCase() + key.slice(1)] + = new plugin(this); + }, this)); + + $.each(Owl.Workers, $.proxy(function(priority, worker) { + this._pipe.push({ + 'filter': worker.filter, + 'run': $.proxy(worker.run, this) + }); + }, this)); + + this.setup(); + this.initialize(); + } + + /** + * Default options for the carousel. + * @public + */ + Owl.Defaults = { + items: 3, + loop: false, + center: false, + rewind: false, + + mouseDrag: true, + touchDrag: true, + pullDrag: true, + freeDrag: false, + + margin: 0, + stagePadding: 0, + + merge: false, + mergeFit: true, + autoWidth: false, + + startPosition: 0, + rtl: false, + + smartSpeed: 250, + fluidSpeed: false, + dragEndSpeed: false, + + responsive: {}, + responsiveRefreshRate: 200, + responsiveBaseElement: window, + + fallbackEasing: 'swing', + + info: false, + + nestedItemSelector: false, + itemElement: 'div', + stageElement: 'div', + + refreshClass: 'owl-refresh', + loadedClass: 'owl-loaded', + loadingClass: 'owl-loading', + rtlClass: 'owl-rtl', + responsiveClass: 'owl-responsive', + dragClass: 'owl-drag', + itemClass: 'owl-item', + stageClass: 'owl-stage', + stageOuterClass: 'owl-stage-outer', + grabClass: 'owl-grab' + }; + + /** + * Enumeration for width. + * @public + * @readonly + * @enum {String} + */ + Owl.Width = { + Default: 'default', + Inner: 'inner', + Outer: 'outer' + }; + + /** + * Enumeration for types. + * @public + * @readonly + * @enum {String} + */ + Owl.Type = { + Event: 'event', + State: 'state' + }; + + /** + * Contains all registered plugins. + * @public + */ + Owl.Plugins = {}; + + /** + * List of workers involved in the update process. + */ + Owl.Workers = [ { + filter: [ 'width', 'settings' ], + run: function() { + this._width = this.$element.width(); + } + }, { + filter: [ 'width', 'items', 'settings' ], + run: function(cache) { + cache.current = this._items && this._items[this.relative(this._current)]; + } + }, { + filter: [ 'items', 'settings' ], + run: function() { + this.$stage.children('.cloned').remove(); + } + }, { + filter: [ 'width', 'items', 'settings' ], + run: function(cache) { + var margin = this.settings.margin || '', + grid = !this.settings.autoWidth, + rtl = this.settings.rtl, + css = { + 'width': 'auto', + 'margin-left': rtl ? margin : '', + 'margin-right': rtl ? '' : margin + }; + + !grid && this.$stage.children().css(css); + + cache.css = css; + } + }, { + filter: [ 'width', 'items', 'settings' ], + run: function(cache) { + var width = (this.width() / this.settings.items).toFixed(3) - this.settings.margin, + merge = null, + iterator = this._items.length, + grid = !this.settings.autoWidth, + widths = []; + + cache.items = { + merge: false, + width: width + }; + + while (iterator--) { + merge = this._mergers[iterator]; + merge = this.settings.mergeFit && Math.min(merge, this.settings.items) || merge; + + cache.items.merge = merge > 1 || cache.items.merge; + + widths[iterator] = !grid ? this._items[iterator].width() : width * merge; + } + + this._widths = widths; + } + }, { + filter: [ 'items', 'settings' ], + run: function() { + var clones = [], + items = this._items, + settings = this.settings, + view = Math.max(settings.items * 2, 4), + size = Math.ceil(items.length / 2) * 2, + repeat = settings.loop && items.length ? settings.rewind ? view : Math.max(view, size) : 0, + append = '', + prepend = ''; + + repeat /= 2; + + while (repeat--) { + clones.push(this.normalize(clones.length / 2, true)); + append = append + items[clones[clones.length - 1]][0].outerHTML; + clones.push(this.normalize(items.length - 1 - (clones.length - 1) / 2, true)); + prepend = items[clones[clones.length - 1]][0].outerHTML + prepend; + } + + this._clones = clones; + + $(append).addClass('cloned').appendTo(this.$stage); + $(prepend).addClass('cloned').prependTo(this.$stage); + } + }, { + filter: [ 'width', 'items', 'settings' ], + run: function() { + var rtl = this.settings.rtl ? 1 : -1, + size = this._clones.length + this._items.length, + iterator = -1, + previous = 0, + current = 0, + coordinates = []; + + while (++iterator < size) { + previous = coordinates[iterator - 1] || 0; + current = this._widths[this.relative(iterator)] + this.settings.margin; + coordinates.push(previous + current * rtl); + } + + this._coordinates = coordinates; + } + }, { + filter: [ 'width', 'items', 'settings' ], + run: function() { + var padding = this.settings.stagePadding, + coordinates = this._coordinates, + css = { + 'width': Math.ceil(Math.abs(coordinates[coordinates.length - 1])) + padding * 2, + 'padding-left': padding || '', + 'padding-right': padding || '' + }; + + this.$stage.css(css); + } + }, { + filter: [ 'width', 'items', 'settings' ], + run: function(cache) { + var iterator = this._coordinates.length, + grid = !this.settings.autoWidth, + items = this.$stage.children(); + + if (grid && cache.items.merge) { + while (iterator--) { + cache.css.width = this._widths[this.relative(iterator)]; + items.eq(iterator).css(cache.css); + } + } else if (grid) { + cache.css.width = cache.items.width; + items.css(cache.css); + } + } + }, { + filter: [ 'items' ], + run: function() { + this._coordinates.length < 1 && this.$stage.removeAttr('style'); + } + }, { + filter: [ 'width', 'items', 'settings' ], + run: function(cache) { + cache.current = cache.current ? this.$stage.children().index(cache.current) : 0; + cache.current = Math.max(this.minimum(), Math.min(this.maximum(), cache.current)); + this.reset(cache.current); + } + }, { + filter: [ 'position' ], + run: function() { + this.animate(this.coordinates(this._current)); + } + }, { + filter: [ 'width', 'position', 'items', 'settings' ], + run: function() { + var rtl = this.settings.rtl ? 1 : -1, + padding = this.settings.stagePadding * 2, + begin = this.coordinates(this.current()) + padding, + end = begin + this.width() * rtl, + inner, outer, matches = [], i, n; + + for (i = 0, n = this._coordinates.length; i < n; i++) { + inner = this._coordinates[i - 1] || 0; + outer = Math.abs(this._coordinates[i]) + padding * rtl; + + if ((this.op(inner, '<=', begin) && (this.op(inner, '>', end))) + || (this.op(outer, '<', begin) && this.op(outer, '>', end))) { + matches.push(i); + } + } + + this.$stage.children('.active').removeClass('active'); + this.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass('active'); + + if (this.settings.center) { + this.$stage.children('.center').removeClass('center'); + this.$stage.children().eq(this.current()).addClass('center'); + } + } + } ]; + + /** + * Initializes the carousel. + * @protected + */ + Owl.prototype.initialize = function() { + this.enter('initializing'); + this.trigger('initialize'); + + this.$element.toggleClass(this.settings.rtlClass, this.settings.rtl); + + if (this.settings.autoWidth && !this.is('pre-loading')) { + var imgs, nestedSelector, width; + imgs = this.$element.find('img'); + nestedSelector = this.settings.nestedItemSelector ? '.' + this.settings.nestedItemSelector : undefined; + width = this.$element.children(nestedSelector).width(); + + if (imgs.length && width <= 0) { + this.preloadAutoWidthImages(imgs); + } + } + + this.$element.addClass(this.options.loadingClass); + + // create stage + this.$stage = $('<' + this.settings.stageElement + ' class="' + this.settings.stageClass + '"/>') + .wrap('
      '); + + // append stage + this.$element.append(this.$stage.parent()); + + // append content + this.replace(this.$element.children().not(this.$stage.parent())); + + // check visibility + if (this.$element.is(':visible')) { + // update view + this.refresh(); + } else { + // invalidate width + this.invalidate('width'); + } + + this.$element + .removeClass(this.options.loadingClass) + .addClass(this.options.loadedClass); + + // register event handlers + this.registerEventHandlers(); + + this.leave('initializing'); + this.trigger('initialized'); + }; + + /** + * Setups the current settings. + * @todo Remove responsive classes. Why should adaptive designs be brought into IE8? + * @todo Support for media queries by using `matchMedia` would be nice. + * @public + */ + Owl.prototype.setup = function() { + var viewport = this.viewport(), + overwrites = this.options.responsive, + match = -1, + settings = null; + + if (!overwrites) { + settings = $.extend({}, this.options); + } else { + $.each(overwrites, function(breakpoint) { + if (breakpoint <= viewport && breakpoint > match) { + match = Number(breakpoint); + } + }); + + settings = $.extend({}, this.options, overwrites[match]); + if (typeof settings.stagePadding === 'function') { + settings.stagePadding = settings.stagePadding(); + } + delete settings.responsive; + + // responsive class + if (settings.responsiveClass) { + this.$element.attr('class', + this.$element.attr('class').replace(new RegExp('(' + this.options.responsiveClass + '-)\\S+\\s', 'g'), '$1' + match) + ); + } + } + + this.trigger('change', { property: { name: 'settings', value: settings } }); + this._breakpoint = match; + this.settings = settings; + this.invalidate('settings'); + this.trigger('changed', { property: { name: 'settings', value: this.settings } }); + }; + + /** + * Updates option logic if necessery. + * @protected + */ + Owl.prototype.optionsLogic = function() { + if (this.settings.autoWidth) { + this.settings.stagePadding = false; + this.settings.merge = false; + } + }; + + /** + * Prepares an item before add. + * @todo Rename event parameter `content` to `item`. + * @protected + * @returns {jQuery|HTMLElement} - The item container. + */ + Owl.prototype.prepare = function(item) { + var event = this.trigger('prepare', { content: item }); + + if (!event.data) { + event.data = $('<' + this.settings.itemElement + '/>') + .addClass(this.options.itemClass).append(item) + } + + this.trigger('prepared', { content: event.data }); + + return event.data; + }; + + /** + * Updates the view. + * @public + */ + Owl.prototype.update = function() { + var i = 0, + n = this._pipe.length, + filter = $.proxy(function(p) { return this[p] }, this._invalidated), + cache = {}; + + while (i < n) { + if (this._invalidated.all || $.grep(this._pipe[i].filter, filter).length > 0) { + this._pipe[i].run(cache); + } + i++; + } + + this._invalidated = {}; + + !this.is('valid') && this.enter('valid'); + }; + + /** + * Gets the width of the view. + * @public + * @param {Owl.Width} [dimension=Owl.Width.Default] - The dimension to return. + * @returns {Number} - The width of the view in pixel. + */ + Owl.prototype.width = function(dimension) { + dimension = dimension || Owl.Width.Default; + switch (dimension) { + case Owl.Width.Inner: + case Owl.Width.Outer: + return this._width; + default: + return this._width - this.settings.stagePadding * 2 + this.settings.margin; + } + }; + + /** + * Refreshes the carousel primarily for adaptive purposes. + * @public + */ + Owl.prototype.refresh = function() { + this.enter('refreshing'); + this.trigger('refresh'); + + this.setup(); + + this.optionsLogic(); + + this.$element.addClass(this.options.refreshClass); + + this.update(); + + this.$element.removeClass(this.options.refreshClass); + + this.leave('refreshing'); + this.trigger('refreshed'); + }; + + /** + * Checks window `resize` event. + * @protected + */ + Owl.prototype.onThrottledResize = function() { + window.clearTimeout(this.resizeTimer); + this.resizeTimer = window.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate); + }; + + /** + * Checks window `resize` event. + * @protected + */ + Owl.prototype.onResize = function() { + if (!this._items.length) { + return false; + } + + if (this._width === this.$element.width()) { + return false; + } + + if (!this.$element.is(':visible')) { + return false; + } + + this.enter('resizing'); + + if (this.trigger('resize').isDefaultPrevented()) { + this.leave('resizing'); + return false; + } + + this.invalidate('width'); + + this.refresh(); + + this.leave('resizing'); + this.trigger('resized'); + }; + + /** + * Registers event handlers. + * @todo Check `msPointerEnabled` + * @todo #261 + * @protected + */ + Owl.prototype.registerEventHandlers = function() { + if ($.support.transition) { + this.$stage.on($.support.transition.end + '.owl.core', $.proxy(this.onTransitionEnd, this)); + } + + if (this.settings.responsive !== false) { + this.on(window, 'resize', this._handlers.onThrottledResize); + } + + if (this.settings.mouseDrag) { + this.$element.addClass(this.options.dragClass); + this.$stage.on('mousedown.owl.core', $.proxy(this.onDragStart, this)); + this.$stage.on('dragstart.owl.core selectstart.owl.core', function() { return false }); + } + + if (this.settings.touchDrag){ + this.$stage.on('touchstart.owl.core', $.proxy(this.onDragStart, this)); + this.$stage.on('touchcancel.owl.core', $.proxy(this.onDragEnd, this)); + } + }; + + /** + * Handles `touchstart` and `mousedown` events. + * @todo Horizontal swipe threshold as option + * @todo #261 + * @protected + * @param {Event} event - The event arguments. + */ + Owl.prototype.onDragStart = function(event) { + var stage = null; + + if (event.which === 3) { + return; + } + + if ($.support.transform) { + stage = this.$stage.css('transform').replace(/.*\(|\)| /g, '').split(','); + stage = { + x: stage[stage.length === 16 ? 12 : 4], + y: stage[stage.length === 16 ? 13 : 5] + }; + } else { + stage = this.$stage.position(); + stage = { + x: this.settings.rtl ? + stage.left + this.$stage.width() - this.width() + this.settings.margin : + stage.left, + y: stage.top + }; + } + + if (this.is('animating')) { + $.support.transform ? this.animate(stage.x) : this.$stage.stop() + this.invalidate('position'); + } + + this.$element.toggleClass(this.options.grabClass, event.type === 'mousedown'); + + this.speed(0); + + this._drag.time = new Date().getTime(); + this._drag.target = $(event.target); + this._drag.stage.start = stage; + this._drag.stage.current = stage; + this._drag.pointer = this.pointer(event); + + $(document).on('mouseup.owl.core touchend.owl.core', $.proxy(this.onDragEnd, this)); + + $(document).one('mousemove.owl.core touchmove.owl.core', $.proxy(function(event) { + var delta = this.difference(this._drag.pointer, this.pointer(event)); + + $(document).on('mousemove.owl.core touchmove.owl.core', $.proxy(this.onDragMove, this)); + + if (Math.abs(delta.x) < Math.abs(delta.y) && this.is('valid')) { + return; + } + + event.preventDefault(); + + this.enter('dragging'); + this.trigger('drag'); + }, this)); + }; + + /** + * Handles the `touchmove` and `mousemove` events. + * @todo #261 + * @protected + * @param {Event} event - The event arguments. + */ + Owl.prototype.onDragMove = function(event) { + var minimum = null, + maximum = null, + pull = null, + delta = this.difference(this._drag.pointer, this.pointer(event)), + stage = this.difference(this._drag.stage.start, delta); + + if (!this.is('dragging')) { + return; + } + + event.preventDefault(); + + if (this.settings.loop) { + minimum = this.coordinates(this.minimum()); + maximum = this.coordinates(this.maximum() + 1) - minimum; + stage.x = (((stage.x - minimum) % maximum + maximum) % maximum) + minimum; + } else { + minimum = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum()); + maximum = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum()); + pull = this.settings.pullDrag ? -1 * delta.x / 5 : 0; + stage.x = Math.max(Math.min(stage.x, minimum + pull), maximum + pull); + } + + this._drag.stage.current = stage; + + this.animate(stage.x); + }; + + /** + * Handles the `touchend` and `mouseup` events. + * @todo #261 + * @todo Threshold for click event + * @protected + * @param {Event} event - The event arguments. + */ + Owl.prototype.onDragEnd = function(event) { + var delta = this.difference(this._drag.pointer, this.pointer(event)), + stage = this._drag.stage.current, + direction = delta.x > 0 ^ this.settings.rtl ? 'left' : 'right'; + + $(document).off('.owl.core'); + + this.$element.removeClass(this.options.grabClass); + + if (delta.x !== 0 && this.is('dragging') || !this.is('valid')) { + this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed); + this.current(this.closest(stage.x, delta.x !== 0 ? direction : this._drag.direction)); + this.invalidate('position'); + this.update(); + + this._drag.direction = direction; + + if (Math.abs(delta.x) > 3 || new Date().getTime() - this._drag.time > 300) { + this._drag.target.one('click.owl.core', function() { return false; }); + } + } + + if (!this.is('dragging')) { + return; + } + + this.leave('dragging'); + this.trigger('dragged'); + }; + + /** + * Gets absolute position of the closest item for a coordinate. + * @todo Setting `freeDrag` makes `closest` not reusable. See #165. + * @protected + * @param {Number} coordinate - The coordinate in pixel. + * @param {String} direction - The direction to check for the closest item. Ether `left` or `right`. + * @return {Number} - The absolute position of the closest item. + */ + Owl.prototype.closest = function(coordinate, direction) { + var position = -1, + pull = 30, + width = this.width(), + coordinates = this.coordinates(); + + if (!this.settings.freeDrag) { + // check closest item + $.each(coordinates, $.proxy(function(index, value) { + // on a left pull, check on current index + if (direction === 'left' && coordinate > value - pull && coordinate < value + pull) { + position = index; + // on a right pull, check on previous index + // to do so, subtract width from value and set position = index + 1 + } else if (direction === 'right' && coordinate > value - width - pull && coordinate < value - width + pull) { + position = index + 1; + } else if (this.op(coordinate, '<', value) + && this.op(coordinate, '>', coordinates[index + 1] || value - width)) { + position = direction === 'left' ? index + 1 : index; + } + return position === -1; + }, this)); + } + + if (!this.settings.loop) { + // non loop boundries + if (this.op(coordinate, '>', coordinates[this.minimum()])) { + position = coordinate = this.minimum(); + } else if (this.op(coordinate, '<', coordinates[this.maximum()])) { + position = coordinate = this.maximum(); + } + } + + return position; + }; + + /** + * Animates the stage. + * @todo #270 + * @public + * @param {Number} coordinate - The coordinate in pixels. + */ + Owl.prototype.animate = function(coordinate) { + var animate = this.speed() > 0; + + this.is('animating') && this.onTransitionEnd(); + + if (animate) { + this.enter('animating'); + this.trigger('translate'); + } + + if ($.support.transform3d && $.support.transition) { + this.$stage.css({ + transform: 'translate3d(' + coordinate + 'px,0px,0px)', + transition: (this.speed() / 1000) + 's' + }); + } else if (animate) { + this.$stage.animate({ + left: coordinate + 'px' + }, this.speed(), this.settings.fallbackEasing, $.proxy(this.onTransitionEnd, this)); + } else { + this.$stage.css({ + left: coordinate + 'px' + }); + } + }; + + /** + * Checks whether the carousel is in a specific state or not. + * @param {String} state - The state to check. + * @returns {Boolean} - The flag which indicates if the carousel is busy. + */ + Owl.prototype.is = function(state) { + return this._states.current[state] && this._states.current[state] > 0; + }; + + /** + * Sets the absolute position of the current item. + * @public + * @param {Number} [position] - The new absolute position or nothing to leave it unchanged. + * @returns {Number} - The absolute position of the current item. + */ + Owl.prototype.current = function(position) { + if (position === undefined) { + return this._current; + } + + if (this._items.length === 0) { + return undefined; + } + + position = this.normalize(position); + + if (this._current !== position) { + var event = this.trigger('change', { property: { name: 'position', value: position } }); + + if (event.data !== undefined) { + position = this.normalize(event.data); + } + + this._current = position; + + this.invalidate('position'); + + this.trigger('changed', { property: { name: 'position', value: this._current } }); + } + + return this._current; + }; + + /** + * Invalidates the given part of the update routine. + * @param {String} [part] - The part to invalidate. + * @returns {Array.} - The invalidated parts. + */ + Owl.prototype.invalidate = function(part) { + if ($.type(part) === 'string') { + this._invalidated[part] = true; + this.is('valid') && this.leave('valid'); + } + return $.map(this._invalidated, function(v, i) { return i }); + }; + + /** + * Resets the absolute position of the current item. + * @public + * @param {Number} position - The absolute position of the new item. + */ + Owl.prototype.reset = function(position) { + position = this.normalize(position); + + if (position === undefined) { + return; + } + + this._speed = 0; + this._current = position; + + this.suppress([ 'translate', 'translated' ]); + + this.animate(this.coordinates(position)); + + this.release([ 'translate', 'translated' ]); + }; + + /** + * Normalizes an absolute or a relative position of an item. + * @public + * @param {Number} position - The absolute or relative position to normalize. + * @param {Boolean} [relative=false] - Whether the given position is relative or not. + * @returns {Number} - The normalized position. + */ + Owl.prototype.normalize = function(position, relative) { + var n = this._items.length, + m = relative ? 0 : this._clones.length; + + if (!this.isNumeric(position) || n < 1) { + position = undefined; + } else if (position < 0 || position >= n + m) { + position = ((position - m / 2) % n + n) % n + m / 2; + } + + return position; + }; + + /** + * Converts an absolute position of an item into a relative one. + * @public + * @param {Number} position - The absolute position to convert. + * @returns {Number} - The converted position. + */ + Owl.prototype.relative = function(position) { + position -= this._clones.length / 2; + return this.normalize(position, true); + }; + + /** + * Gets the maximum position for the current item. + * @public + * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position. + * @returns {Number} + */ + Owl.prototype.maximum = function(relative) { + var settings = this.settings, + maximum = this._coordinates.length, + iterator, + reciprocalItemsWidth, + elementWidth; + + if (settings.loop) { + maximum = this._clones.length / 2 + this._items.length - 1; + } else if (settings.autoWidth || settings.merge) { + iterator = this._items.length; + reciprocalItemsWidth = this._items[--iterator].width(); + elementWidth = this.$element.width(); + while (iterator--) { + reciprocalItemsWidth += this._items[iterator].width() + this.settings.margin; + if (reciprocalItemsWidth > elementWidth) { + break; + } + } + maximum = iterator + 1; + } else if (settings.center) { + maximum = this._items.length - 1; + } else { + maximum = this._items.length - settings.items; + } + + if (relative) { + maximum -= this._clones.length / 2; + } + + return Math.max(maximum, 0); + }; + + /** + * Gets the minimum position for the current item. + * @public + * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position. + * @returns {Number} + */ + Owl.prototype.minimum = function(relative) { + return relative ? 0 : this._clones.length / 2; + }; + + /** + * Gets an item at the specified relative position. + * @public + * @param {Number} [position] - The relative position of the item. + * @return {jQuery|Array.} - The item at the given position or all items if no position was given. + */ + Owl.prototype.items = function(position) { + if (position === undefined) { + return this._items.slice(); + } + + position = this.normalize(position, true); + return this._items[position]; + }; + + /** + * Gets an item at the specified relative position. + * @public + * @param {Number} [position] - The relative position of the item. + * @return {jQuery|Array.} - The item at the given position or all items if no position was given. + */ + Owl.prototype.mergers = function(position) { + if (position === undefined) { + return this._mergers.slice(); + } + + position = this.normalize(position, true); + return this._mergers[position]; + }; + + /** + * Gets the absolute positions of clones for an item. + * @public + * @param {Number} [position] - The relative position of the item. + * @returns {Array.} - The absolute positions of clones for the item or all if no position was given. + */ + Owl.prototype.clones = function(position) { + var odd = this._clones.length / 2, + even = odd + this._items.length, + map = function(index) { return index % 2 === 0 ? even + index / 2 : odd - (index + 1) / 2 }; + + if (position === undefined) { + return $.map(this._clones, function(v, i) { return map(i) }); + } + + return $.map(this._clones, function(v, i) { return v === position ? map(i) : null }); + }; + + /** + * Sets the current animation speed. + * @public + * @param {Number} [speed] - The animation speed in milliseconds or nothing to leave it unchanged. + * @returns {Number} - The current animation speed in milliseconds. + */ + Owl.prototype.speed = function(speed) { + if (speed !== undefined) { + this._speed = speed; + } + + return this._speed; + }; + + /** + * Gets the coordinate of an item. + * @todo The name of this method is missleanding. + * @public + * @param {Number} position - The absolute position of the item within `minimum()` and `maximum()`. + * @returns {Number|Array.} - The coordinate of the item in pixel or all coordinates. + */ + Owl.prototype.coordinates = function(position) { + var multiplier = 1, + newPosition = position - 1, + coordinate; + + if (position === undefined) { + return $.map(this._coordinates, $.proxy(function(coordinate, index) { + return this.coordinates(index); + }, this)); + } + + if (this.settings.center) { + if (this.settings.rtl) { + multiplier = -1; + newPosition = position + 1; + } + + coordinate = this._coordinates[position]; + coordinate += (this.width() - coordinate + (this._coordinates[newPosition] || 0)) / 2 * multiplier; + } else { + coordinate = this._coordinates[newPosition] || 0; + } + + coordinate = Math.ceil(coordinate); + + return coordinate; + }; + + /** + * Calculates the speed for a translation. + * @protected + * @param {Number} from - The absolute position of the start item. + * @param {Number} to - The absolute position of the target item. + * @param {Number} [factor=undefined] - The time factor in milliseconds. + * @returns {Number} - The time in milliseconds for the translation. + */ + Owl.prototype.duration = function(from, to, factor) { + if (factor === 0) { + return 0; + } + + return Math.min(Math.max(Math.abs(to - from), 1), 6) * Math.abs((factor || this.settings.smartSpeed)); + }; + + /** + * Slides to the specified item. + * @public + * @param {Number} position - The position of the item. + * @param {Number} [speed] - The time in milliseconds for the transition. + */ + Owl.prototype.to = function(position, speed) { + var current = this.current(), + revert = null, + distance = position - this.relative(current), + direction = (distance > 0) - (distance < 0), + items = this._items.length, + minimum = this.minimum(), + maximum = this.maximum(); + + if (this.settings.loop) { + if (!this.settings.rewind && Math.abs(distance) > items / 2) { + distance += direction * -1 * items; + } + + position = current + distance; + revert = ((position - minimum) % items + items) % items + minimum; + + if (revert !== position && revert - distance <= maximum && revert - distance > 0) { + current = revert - distance; + position = revert; + this.reset(current); + } + } else if (this.settings.rewind) { + maximum += 1; + position = (position % maximum + maximum) % maximum; + } else { + position = Math.max(minimum, Math.min(maximum, position)); + } + + this.speed(this.duration(current, position, speed)); + this.current(position); + + if (this.$element.is(':visible')) { + this.update(); + } + }; + + /** + * Slides to the next item. + * @public + * @param {Number} [speed] - The time in milliseconds for the transition. + */ + Owl.prototype.next = function(speed) { + speed = speed || false; + this.to(this.relative(this.current()) + 1, speed); + }; + + /** + * Slides to the previous item. + * @public + * @param {Number} [speed] - The time in milliseconds for the transition. + */ + Owl.prototype.prev = function(speed) { + speed = speed || false; + this.to(this.relative(this.current()) - 1, speed); + }; + + /** + * Handles the end of an animation. + * @protected + * @param {Event} event - The event arguments. + */ + Owl.prototype.onTransitionEnd = function(event) { + + // if css2 animation then event object is undefined + if (event !== undefined) { + event.stopPropagation(); + + // Catch only owl-stage transitionEnd event + if ((event.target || event.srcElement || event.originalTarget) !== this.$stage.get(0)) { + return false; + } + } + + this.leave('animating'); + this.trigger('translated'); + }; + + /** + * Gets viewport width. + * @protected + * @return {Number} - The width in pixel. + */ + Owl.prototype.viewport = function() { + var width; + if (this.options.responsiveBaseElement !== window) { + width = $(this.options.responsiveBaseElement).width(); + } else if (window.innerWidth) { + width = window.innerWidth; + } else if (document.documentElement && document.documentElement.clientWidth) { + width = document.documentElement.clientWidth; + } else { + throw 'Can not detect viewport width.'; + } + return width; + }; + + /** + * Replaces the current content. + * @public + * @param {HTMLElement|jQuery|String} content - The new content. + */ + Owl.prototype.replace = function(content) { + this.$stage.empty(); + this._items = []; + + if (content) { + content = (content instanceof jQuery) ? content : $(content); + } + + if (this.settings.nestedItemSelector) { + content = content.find('.' + this.settings.nestedItemSelector); + } + + content.filter(function() { + return this.nodeType === 1; + }).each($.proxy(function(index, item) { + item = this.prepare(item); + this.$stage.append(item); + this._items.push(item); + this._mergers.push(item.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1); + }, this)); + + this.reset(this.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0); + + this.invalidate('items'); + }; + + /** + * Adds an item. + * @todo Use `item` instead of `content` for the event arguments. + * @public + * @param {HTMLElement|jQuery|String} content - The item content to add. + * @param {Number} [position] - The relative position at which to insert the item otherwise the item will be added to the end. + */ + Owl.prototype.add = function(content, position) { + var current = this.relative(this._current); + + position = position === undefined ? this._items.length : this.normalize(position, true); + content = content instanceof jQuery ? content : $(content); + + this.trigger('add', { content: content, position: position }); + + content = this.prepare(content); + + if (this._items.length === 0 || position === this._items.length) { + this._items.length === 0 && this.$stage.append(content); + this._items.length !== 0 && this._items[position - 1].after(content); + this._items.push(content); + this._mergers.push(content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1); + } else { + this._items[position].before(content); + this._items.splice(position, 0, content); + this._mergers.splice(position, 0, content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1); + } + + this._items[current] && this.reset(this._items[current].index()); + + this.invalidate('items'); + + this.trigger('added', { content: content, position: position }); + }; + + /** + * Removes an item by its position. + * @todo Use `item` instead of `content` for the event arguments. + * @public + * @param {Number} position - The relative position of the item to remove. + */ + Owl.prototype.remove = function(position) { + position = this.normalize(position, true); + + if (position === undefined) { + return; + } + + this.trigger('remove', { content: this._items[position], position: position }); + + this._items[position].remove(); + this._items.splice(position, 1); + this._mergers.splice(position, 1); + + this.invalidate('items'); + + this.trigger('removed', { content: null, position: position }); + }; + + /** + * Preloads images with auto width. + * @todo Replace by a more generic approach + * @protected + */ + Owl.prototype.preloadAutoWidthImages = function(images) { + images.each($.proxy(function(i, element) { + this.enter('pre-loading'); + element = $(element); + $(new Image()).one('load', $.proxy(function(e) { + element.attr('src', e.target.src); + element.css('opacity', 1); + this.leave('pre-loading'); + !this.is('pre-loading') && !this.is('initializing') && this.refresh(); + }, this)).attr('src', element.attr('src') || element.attr('data-src') || element.attr('data-src-retina')); + }, this)); + }; + + /** + * Destroys the carousel. + * @public + */ + Owl.prototype.destroy = function() { + + this.$element.off('.owl.core'); + this.$stage.off('.owl.core'); + $(document).off('.owl.core'); + + if (this.settings.responsive !== false) { + window.clearTimeout(this.resizeTimer); + this.off(window, 'resize', this._handlers.onThrottledResize); + } + + for (var i in this._plugins) { + this._plugins[i].destroy(); + } + + this.$stage.children('.cloned').remove(); + + this.$stage.unwrap(); + this.$stage.children().contents().unwrap(); + this.$stage.children().unwrap(); + + this.$element + .removeClass(this.options.refreshClass) + .removeClass(this.options.loadingClass) + .removeClass(this.options.loadedClass) + .removeClass(this.options.rtlClass) + .removeClass(this.options.dragClass) + .removeClass(this.options.grabClass) + .attr('class', this.$element.attr('class').replace(new RegExp(this.options.responsiveClass + '-\\S+\\s', 'g'), '')) + .removeData('owl.carousel'); + }; + + /** + * Operators to calculate right-to-left and left-to-right. + * @protected + * @param {Number} [a] - The left side operand. + * @param {String} [o] - The operator. + * @param {Number} [b] - The right side operand. + */ + Owl.prototype.op = function(a, o, b) { + var rtl = this.settings.rtl; + switch (o) { + case '<': + return rtl ? a > b : a < b; + case '>': + return rtl ? a < b : a > b; + case '>=': + return rtl ? a <= b : a >= b; + case '<=': + return rtl ? a >= b : a <= b; + default: + break; + } + }; + + /** + * Attaches to an internal event. + * @protected + * @param {HTMLElement} element - The event source. + * @param {String} event - The event name. + * @param {Function} listener - The event handler to attach. + * @param {Boolean} capture - Wether the event should be handled at the capturing phase or not. + */ + Owl.prototype.on = function(element, event, listener, capture) { + if (element.addEventListener) { + element.addEventListener(event, listener, capture); + } else if (element.attachEvent) { + element.attachEvent('on' + event, listener); + } + }; + + /** + * Detaches from an internal event. + * @protected + * @param {HTMLElement} element - The event source. + * @param {String} event - The event name. + * @param {Function} listener - The attached event handler to detach. + * @param {Boolean} capture - Wether the attached event handler was registered as a capturing listener or not. + */ + Owl.prototype.off = function(element, event, listener, capture) { + if (element.removeEventListener) { + element.removeEventListener(event, listener, capture); + } else if (element.detachEvent) { + element.detachEvent('on' + event, listener); + } + }; + + /** + * Triggers a public event. + * @todo Remove `status`, `relatedTarget` should be used instead. + * @protected + * @param {String} name - The event name. + * @param {*} [data=null] - The event data. + * @param {String} [namespace=carousel] - The event namespace. + * @param {String} [state] - The state which is associated with the event. + * @param {Boolean} [enter=false] - Indicates if the call enters the specified state or not. + * @returns {Event} - The event arguments. + */ + Owl.prototype.trigger = function(name, data, namespace, state, enter) { + var status = { + item: { count: this._items.length, index: this.current() } + }, handler = $.camelCase( + $.grep([ 'on', name, namespace ], function(v) { return v }) + .join('-').toLowerCase() + ), event = $.Event( + [ name, 'owl', namespace || 'carousel' ].join('.').toLowerCase(), + $.extend({ relatedTarget: this }, status, data) + ); + + if (!this._supress[name]) { + $.each(this._plugins, function(name, plugin) { + if (plugin.onTrigger) { + plugin.onTrigger(event); + } + }); + + this.register({ type: Owl.Type.Event, name: name }); + this.$element.trigger(event); + + if (this.settings && typeof this.settings[handler] === 'function') { + this.settings[handler].call(this, event); + } + } + + return event; + }; + + /** + * Enters a state. + * @param name - The state name. + */ + Owl.prototype.enter = function(name) { + $.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) { + if (this._states.current[name] === undefined) { + this._states.current[name] = 0; + } + + this._states.current[name]++; + }, this)); + }; + + /** + * Leaves a state. + * @param name - The state name. + */ + Owl.prototype.leave = function(name) { + $.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) { + this._states.current[name]--; + }, this)); + }; + + /** + * Registers an event or state. + * @public + * @param {Object} object - The event or state to register. + */ + Owl.prototype.register = function(object) { + if (object.type === Owl.Type.Event) { + if (!$.event.special[object.name]) { + $.event.special[object.name] = {}; + } + + if (!$.event.special[object.name].owl) { + var _default = $.event.special[object.name]._default; + $.event.special[object.name]._default = function(e) { + if (_default && _default.apply && (!e.namespace || e.namespace.indexOf('owl') === -1)) { + return _default.apply(this, arguments); + } + return e.namespace && e.namespace.indexOf('owl') > -1; + }; + $.event.special[object.name].owl = true; + } + } else if (object.type === Owl.Type.State) { + if (!this._states.tags[object.name]) { + this._states.tags[object.name] = object.tags; + } else { + this._states.tags[object.name] = this._states.tags[object.name].concat(object.tags); + } + + this._states.tags[object.name] = $.grep(this._states.tags[object.name], $.proxy(function(tag, i) { + return $.inArray(tag, this._states.tags[object.name]) === i; + }, this)); + } + }; + + /** + * Suppresses events. + * @protected + * @param {Array.} events - The events to suppress. + */ + Owl.prototype.suppress = function(events) { + $.each(events, $.proxy(function(index, event) { + this._supress[event] = true; + }, this)); + }; + + /** + * Releases suppressed events. + * @protected + * @param {Array.} events - The events to release. + */ + Owl.prototype.release = function(events) { + $.each(events, $.proxy(function(index, event) { + delete this._supress[event]; + }, this)); + }; + + /** + * Gets unified pointer coordinates from event. + * @todo #261 + * @protected + * @param {Event} - The `mousedown` or `touchstart` event. + * @returns {Object} - Contains `x` and `y` coordinates of current pointer position. + */ + Owl.prototype.pointer = function(event) { + var result = { x: null, y: null }; + + event = event.originalEvent || event || window.event; + + event = event.touches && event.touches.length ? + event.touches[0] : event.changedTouches && event.changedTouches.length ? + event.changedTouches[0] : event; + + if (event.pageX) { + result.x = event.pageX; + result.y = event.pageY; + } else { + result.x = event.clientX; + result.y = event.clientY; + } + + return result; + }; + + /** + * Determines if the input is a Number or something that can be coerced to a Number + * @protected + * @param {Number|String|Object|Array|Boolean|RegExp|Function|Symbol} - The input to be tested + * @returns {Boolean} - An indication if the input is a Number or can be coerced to a Number + */ + Owl.prototype.isNumeric = function(number) { + return !isNaN(parseFloat(number)); + }; + + /** + * Gets the difference of two vectors. + * @todo #261 + * @protected + * @param {Object} - The first vector. + * @param {Object} - The second vector. + * @returns {Object} - The difference. + */ + Owl.prototype.difference = function(first, second) { + return { + x: first.x - second.x, + y: first.y - second.y + }; + }; + + /** + * The jQuery Plugin for the Owl Carousel + * @todo Navigation plugin `next` and `prev` + * @public + */ + $.fn.owlCarousel = function(option) { + var args = Array.prototype.slice.call(arguments, 1); + + return this.each(function() { + var $this = $(this), + data = $this.data('owl.carousel'); + + if (!data) { + data = new Owl(this, typeof option == 'object' && option); + $this.data('owl.carousel', data); + + $.each([ + 'next', 'prev', 'to', 'destroy', 'refresh', 'replace', 'add', 'remove' + ], function(i, event) { + data.register({ type: Owl.Type.Event, name: event }); + data.$element.on(event + '.owl.carousel.core', $.proxy(function(e) { + if (e.namespace && e.relatedTarget !== this) { + this.suppress([ event ]); + data[event].apply(this, [].slice.call(arguments, 1)); + this.release([ event ]); + } + }, data)); + }); + } + + if (typeof option == 'string' && option.charAt(0) !== '_') { + data[option].apply(data, args); + } + }); + }; + + /** + * The constructor for the jQuery Plugin + * @public + */ + $.fn.owlCarousel.Constructor = Owl; + +})(window.Zepto || window.jQuery, window, document); + +/** + * AutoRefresh Plugin + * @version 2.1.0 + * @author Artus Kolanowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + /** + * Creates the auto refresh plugin. + * @class The Auto Refresh Plugin + * @param {Owl} carousel - The Owl Carousel + */ + var AutoRefresh = function(carousel) { + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * Refresh interval. + * @protected + * @type {number} + */ + this._interval = null; + + /** + * Whether the element is currently visible or not. + * @protected + * @type {Boolean} + */ + this._visible = null; + + /** + * All event handlers. + * @protected + * @type {Object} + */ + this._handlers = { + 'initialized.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.autoRefresh) { + this.watch(); + } + }, this) + }; + + // set default options + this._core.options = $.extend({}, AutoRefresh.Defaults, this._core.options); + + // register event handlers + this._core.$element.on(this._handlers); + }; + + /** + * Default options. + * @public + */ + AutoRefresh.Defaults = { + autoRefresh: true, + autoRefreshInterval: 500 + }; + + /** + * Watches the element. + */ + AutoRefresh.prototype.watch = function() { + if (this._interval) { + return; + } + + this._visible = this._core.$element.is(':visible'); + this._interval = window.setInterval($.proxy(this.refresh, this), this._core.settings.autoRefreshInterval); + }; + + /** + * Refreshes the element. + */ + AutoRefresh.prototype.refresh = function() { + if (this._core.$element.is(':visible') === this._visible) { + return; + } + + this._visible = !this._visible; + + this._core.$element.toggleClass('owl-hidden', !this._visible); + + this._visible && (this._core.invalidate('width') && this._core.refresh()); + }; + + /** + * Destroys the plugin. + */ + AutoRefresh.prototype.destroy = function() { + var handler, property; + + window.clearInterval(this._interval); + + for (handler in this._handlers) { + this._core.$element.off(handler, this._handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.AutoRefresh = AutoRefresh; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Lazy Plugin + * @version 2.1.0 + * @author Bartosz Wojciechowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + /** + * Creates the lazy plugin. + * @class The Lazy Plugin + * @param {Owl} carousel - The Owl Carousel + */ + var Lazy = function(carousel) { + + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * Already loaded items. + * @protected + * @type {Array.} + */ + this._loaded = []; + + /** + * Event handlers. + * @protected + * @type {Object} + */ + this._handlers = { + 'initialized.owl.carousel change.owl.carousel resized.owl.carousel': $.proxy(function(e) { + if (!e.namespace) { + return; + } + + if (!this._core.settings || !this._core.settings.lazyLoad) { + return; + } + + if ((e.property && e.property.name == 'position') || e.type == 'initialized') { + var settings = this._core.settings, + n = (settings.center && Math.ceil(settings.items / 2) || settings.items), + i = ((settings.center && n * -1) || 0), + position = (e.property && e.property.value !== undefined ? e.property.value : this._core.current()) + i, + clones = this._core.clones().length, + load = $.proxy(function(i, v) { this.load(v) }, this); + + while (i++ < n) { + this.load(clones / 2 + this._core.relative(position)); + clones && $.each(this._core.clones(this._core.relative(position)), load); + position++; + } + } + }, this) + }; + + // set the default options + this._core.options = $.extend({}, Lazy.Defaults, this._core.options); + + // register event handler + this._core.$element.on(this._handlers); + }; + + /** + * Default options. + * @public + */ + Lazy.Defaults = { + lazyLoad: false + }; + + /** + * Loads all resources of an item at the specified position. + * @param {Number} position - The absolute position of the item. + * @protected + */ + Lazy.prototype.load = function(position) { + var $item = this._core.$stage.children().eq(position), + $elements = $item && $item.find('.owl-lazy'); + + if (!$elements || $.inArray($item.get(0), this._loaded) > -1) { + return; + } + + $elements.each($.proxy(function(index, element) { + var $element = $(element), image, + url = (window.devicePixelRatio > 1 && $element.attr('data-src-retina')) || $element.attr('data-src'); + + this._core.trigger('load', { element: $element, url: url }, 'lazy'); + + if ($element.is('img')) { + $element.one('load.owl.lazy', $.proxy(function() { + $element.css('opacity', 1); + this._core.trigger('loaded', { element: $element, url: url }, 'lazy'); + }, this)).attr('src', url); + } else { + image = new Image(); + image.onload = $.proxy(function() { + $element.css({ + 'background-image': 'url(' + url + ')', + 'opacity': '1' + }); + this._core.trigger('loaded', { element: $element, url: url }, 'lazy'); + }, this); + image.src = url; + } + }, this)); + + this._loaded.push($item.get(0)); + }; + + /** + * Destroys the plugin. + * @public + */ + Lazy.prototype.destroy = function() { + var handler, property; + + for (handler in this.handlers) { + this._core.$element.off(handler, this.handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.Lazy = Lazy; + +})(window.Zepto || window.jQuery, window, document); + +/** + * AutoHeight Plugin + * @version 2.1.0 + * @author Bartosz Wojciechowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + /** + * Creates the auto height plugin. + * @class The Auto Height Plugin + * @param {Owl} carousel - The Owl Carousel + */ + var AutoHeight = function(carousel) { + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * All event handlers. + * @protected + * @type {Object} + */ + this._handlers = { + 'initialized.owl.carousel refreshed.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.autoHeight) { + this.update(); + } + }, this), + 'changed.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.autoHeight && e.property.name == 'position'){ + this.update(); + } + }, this), + 'loaded.owl.lazy': $.proxy(function(e) { + if (e.namespace && this._core.settings.autoHeight + && e.element.closest('.' + this._core.settings.itemClass).index() === this._core.current()) { + this.update(); + } + }, this) + }; + + // set default options + this._core.options = $.extend({}, AutoHeight.Defaults, this._core.options); + + // register event handlers + this._core.$element.on(this._handlers); + }; + + /** + * Default options. + * @public + */ + AutoHeight.Defaults = { + autoHeight: false, + autoHeightClass: 'owl-height' + }; + + /** + * Updates the view. + */ + AutoHeight.prototype.update = function() { + var start = this._core._current, + end = start + this._core.settings.items, + visible = this._core.$stage.children().toArray().slice(start, end), + heights = [], + maxheight = 0; + + $.each(visible, function(index, item) { + heights.push($(item).height()); + }); + + maxheight = Math.max.apply(null, heights); + + this._core.$stage.parent() + .height(maxheight) + .addClass(this._core.settings.autoHeightClass); + }; + + AutoHeight.prototype.destroy = function() { + var handler, property; + + for (handler in this._handlers) { + this._core.$element.off(handler, this._handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.AutoHeight = AutoHeight; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Video Plugin + * @version 2.1.0 + * @author Bartosz Wojciechowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + /** + * Creates the video plugin. + * @class The Video Plugin + * @param {Owl} carousel - The Owl Carousel + */ + var Video = function(carousel) { + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * Cache all video URLs. + * @protected + * @type {Object} + */ + this._videos = {}; + + /** + * Current playing item. + * @protected + * @type {jQuery} + */ + this._playing = null; + + /** + * All event handlers. + * @todo The cloned content removale is too late + * @protected + * @type {Object} + */ + this._handlers = { + 'initialized.owl.carousel': $.proxy(function(e) { + if (e.namespace) { + this._core.register({ type: 'state', name: 'playing', tags: [ 'interacting' ] }); + } + }, this), + 'resize.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.video && this.isInFullScreen()) { + e.preventDefault(); + } + }, this), + 'refreshed.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.is('resizing')) { + this._core.$stage.find('.cloned .owl-video-frame').remove(); + } + }, this), + 'changed.owl.carousel': $.proxy(function(e) { + if (e.namespace && e.property.name === 'position' && this._playing) { + this.stop(); + } + }, this), + 'prepared.owl.carousel': $.proxy(function(e) { + if (!e.namespace) { + return; + } + + var $element = $(e.content).find('.owl-video'); + + if ($element.length) { + $element.css('display', 'none'); + this.fetch($element, $(e.content)); + } + }, this) + }; + + // set default options + this._core.options = $.extend({}, Video.Defaults, this._core.options); + + // register event handlers + this._core.$element.on(this._handlers); + + this._core.$element.on('click.owl.video', '.owl-video-play-icon', $.proxy(function(e) { + this.play(e); + }, this)); + }; + + /** + * Default options. + * @public + */ + Video.Defaults = { + video: false, + videoHeight: false, + videoWidth: false + }; + + /** + * Gets the video ID and the type (YouTube/Vimeo/vzaar only). + * @protected + * @param {jQuery} target - The target containing the video data. + * @param {jQuery} item - The item containing the video. + */ + Video.prototype.fetch = function(target, item) { + var type = (function() { + if (target.attr('data-vimeo-id')) { + return 'vimeo'; + } else if (target.attr('data-vzaar-id')) { + return 'vzaar' + } else { + return 'youtube'; + } + })(), + id = target.attr('data-vimeo-id') || target.attr('data-youtube-id') || target.attr('data-vzaar-id'), + width = target.attr('data-width') || this._core.settings.videoWidth, + height = target.attr('data-height') || this._core.settings.videoHeight, + url = target.attr('href'); + + if (url) { + + /* + Parses the id's out of the following urls (and probably more): + https://www.youtube.com/watch?v=:id + https://youtu.be/:id + https://vimeo.com/:id + https://vimeo.com/channels/:channel/:id + https://vimeo.com/groups/:group/videos/:id + https://app.vzaar.com/videos/:id + + Visual example: https://regexper.com/#(http%3A%7Chttps%3A%7C)%5C%2F%5C%2F(player.%7Cwww.%7Capp.)%3F(vimeo%5C.com%7Cyoutu(be%5C.com%7C%5C.be%7Cbe%5C.googleapis%5C.com)%7Cvzaar%5C.com)%5C%2F(video%5C%2F%7Cvideos%5C%2F%7Cembed%5C%2F%7Cchannels%5C%2F.%2B%5C%2F%7Cgroups%5C%2F.%2B%5C%2F%7Cwatch%5C%3Fv%3D%7Cv%5C%2F)%3F(%5BA-Za-z0-9._%25-%5D*)(%5C%26%5CS%2B)%3F + */ + + id = url.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/); + + if (id[3].indexOf('youtu') > -1) { + type = 'youtube'; + } else if (id[3].indexOf('vimeo') > -1) { + type = 'vimeo'; + } else if (id[3].indexOf('vzaar') > -1) { + type = 'vzaar'; + } else { + throw new Error('Video URL not supported.'); + } + id = id[6]; + } else { + throw new Error('Missing video URL.'); + } + + this._videos[url] = { + type: type, + id: id, + width: width, + height: height + }; + + item.attr('data-video', url); + + this.thumbnail(target, this._videos[url]); + }; + + /** + * Creates video thumbnail. + * @protected + * @param {jQuery} target - The target containing the video data. + * @param {Object} info - The video info object. + * @see `fetch` + */ + Video.prototype.thumbnail = function(target, video) { + var tnLink, + icon, + path, + dimensions = video.width && video.height ? 'style="width:' + video.width + 'px;height:' + video.height + 'px;"' : '', + customTn = target.find('img'), + srcType = 'src', + lazyClass = '', + settings = this._core.settings, + create = function(path) { + icon = '
      '; + + if (settings.lazyLoad) { + tnLink = '
      '; + } else { + tnLink = '
      '; + } + target.after(tnLink); + target.after(icon); + }; + + // wrap video content into owl-video-wrapper div + target.wrap('
      '); + + if (this._core.settings.lazyLoad) { + srcType = 'data-src'; + lazyClass = 'owl-lazy'; + } + + // custom thumbnail + if (customTn.length) { + create(customTn.attr(srcType)); + customTn.remove(); + return false; + } + + if (video.type === 'youtube') { + path = "//img.youtube.com/vi/" + video.id + "/hqdefault.jpg"; + create(path); + } else if (video.type === 'vimeo') { + $.ajax({ + type: 'GET', + url: '//vimeo.com/api/v2/video/' + video.id + '.json', + jsonp: 'callback', + dataType: 'jsonp', + success: function(data) { + path = data[0].thumbnail_large; + create(path); + } + }); + } else if (video.type === 'vzaar') { + $.ajax({ + type: 'GET', + url: '//vzaar.com/api/videos/' + video.id + '.json', + jsonp: 'callback', + dataType: 'jsonp', + success: function(data) { + path = data.framegrab_url; + create(path); + } + }); + } + }; + + /** + * Stops the current video. + * @public + */ + Video.prototype.stop = function() { + this._core.trigger('stop', null, 'video'); + this._playing.find('.owl-video-frame').remove(); + this._playing.removeClass('owl-video-playing'); + this._playing = null; + this._core.leave('playing'); + this._core.trigger('stopped', null, 'video'); + }; + + /** + * Starts the current video. + * @public + * @param {Event} event - The event arguments. + */ + Video.prototype.play = function(event) { + var target = $(event.target), + item = target.closest('.' + this._core.settings.itemClass), + video = this._videos[item.attr('data-video')], + width = video.width || '100%', + height = video.height || this._core.$stage.height(), + html; + + if (this._playing) { + return; + } + + this._core.enter('playing'); + this._core.trigger('play', null, 'video'); + + item = this._core.items(this._core.relative(item.index())); + + this._core.reset(item.index()); + + if (video.type === 'youtube') { + html = ''; + } else if (video.type === 'vimeo') { + html = ''; + } else if (video.type === 'vzaar') { + html = ''; + } + + $('
      ' + html + '
      ').insertAfter(item.find('.owl-video')); + + this._playing = item.addClass('owl-video-playing'); + }; + + /** + * Checks whether an video is currently in full screen mode or not. + * @todo Bad style because looks like a readonly method but changes members. + * @protected + * @returns {Boolean} + */ + Video.prototype.isInFullScreen = function() { + var element = document.fullscreenElement || document.mozFullScreenElement || + document.webkitFullscreenElement; + + return element && $(element).parent().hasClass('owl-video-frame'); + }; + + /** + * Destroys the plugin. + */ + Video.prototype.destroy = function() { + var handler, property; + + this._core.$element.off('click.owl.video'); + + for (handler in this._handlers) { + this._core.$element.off(handler, this._handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.Video = Video; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Animate Plugin + * @version 2.1.0 + * @author Bartosz Wojciechowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + /** + * Creates the animate plugin. + * @class The Navigation Plugin + * @param {Owl} scope - The Owl Carousel + */ + var Animate = function(scope) { + this.core = scope; + this.core.options = $.extend({}, Animate.Defaults, this.core.options); + this.swapping = true; + this.previous = undefined; + this.next = undefined; + + this.handlers = { + 'change.owl.carousel': $.proxy(function(e) { + if (e.namespace && e.property.name == 'position') { + this.previous = this.core.current(); + this.next = e.property.value; + } + }, this), + 'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function(e) { + if (e.namespace) { + this.swapping = e.type == 'translated'; + } + }, this), + 'translate.owl.carousel': $.proxy(function(e) { + if (e.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) { + this.swap(); + } + }, this) + }; + + this.core.$element.on(this.handlers); + }; + + /** + * Default options. + * @public + */ + Animate.Defaults = { + animateOut: false, + animateIn: false + }; + + /** + * Toggles the animation classes whenever an translations starts. + * @protected + * @returns {Boolean|undefined} + */ + Animate.prototype.swap = function() { + + if (this.core.settings.items !== 1) { + return; + } + + if (!$.support.animation || !$.support.transition) { + return; + } + + this.core.speed(0); + + var left, + clear = $.proxy(this.clear, this), + previous = this.core.$stage.children().eq(this.previous), + next = this.core.$stage.children().eq(this.next), + incoming = this.core.settings.animateIn, + outgoing = this.core.settings.animateOut; + + if (this.core.current() === this.previous) { + return; + } + + if (outgoing) { + left = this.core.coordinates(this.previous) - this.core.coordinates(this.next); + previous.one($.support.animation.end, clear) + .css( { 'left': left + 'px' } ) + .addClass('animated owl-animated-out') + .addClass(outgoing); + } + + if (incoming) { + next.one($.support.animation.end, clear) + .addClass('animated owl-animated-in') + .addClass(incoming); + } + }; + + Animate.prototype.clear = function(e) { + $(e.target).css( { 'left': '' } ) + .removeClass('animated owl-animated-out owl-animated-in') + .removeClass(this.core.settings.animateIn) + .removeClass(this.core.settings.animateOut); + this.core.onTransitionEnd(); + }; + + /** + * Destroys the plugin. + * @public + */ + Animate.prototype.destroy = function() { + var handler, property; + + for (handler in this.handlers) { + this.core.$element.off(handler, this.handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.Animate = Animate; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Autoplay Plugin + * @version 2.1.0 + * @author Bartosz Wojciechowski + * @author Artus Kolanowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + /** + * Creates the autoplay plugin. + * @class The Autoplay Plugin + * @param {Owl} scope - The Owl Carousel + */ + var Autoplay = function(carousel) { + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * The autoplay timeout. + * @type {Timeout} + */ + this._timeout = null; + + /** + * Indicates whenever the autoplay is paused. + * @type {Boolean} + */ + this._paused = false; + + /** + * All event handlers. + * @protected + * @type {Object} + */ + this._handlers = { + 'changed.owl.carousel': $.proxy(function(e) { + if (e.namespace && e.property.name === 'settings') { + if (this._core.settings.autoplay) { + this.play(); + } else { + this.stop(); + } + } else if (e.namespace && e.property.name === 'position') { + //console.log('play?', e); + if (this._core.settings.autoplay) { + this._setAutoPlayInterval(); + } + } + }, this), + 'initialized.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.autoplay) { + this.play(); + } + }, this), + 'play.owl.autoplay': $.proxy(function(e, t, s) { + if (e.namespace) { + this.play(t, s); + } + }, this), + 'stop.owl.autoplay': $.proxy(function(e) { + if (e.namespace) { + this.stop(); + } + }, this), + 'mouseover.owl.autoplay': $.proxy(function() { + if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { + this.pause(); + } + }, this), + 'mouseleave.owl.autoplay': $.proxy(function() { + if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { + this.play(); + } + }, this), + 'touchstart.owl.core': $.proxy(function() { + if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { + this.pause(); + } + }, this), + 'touchend.owl.core': $.proxy(function() { + if (this._core.settings.autoplayHoverPause) { + this.play(); + } + }, this) + }; + + // register event handlers + this._core.$element.on(this._handlers); + + // set default options + this._core.options = $.extend({}, Autoplay.Defaults, this._core.options); + }; + + /** + * Default options. + * @public + */ + Autoplay.Defaults = { + autoplay: false, + autoplayTimeout: 5000, + autoplayHoverPause: false, + autoplaySpeed: false + }; + + /** + * Starts the autoplay. + * @public + * @param {Number} [timeout] - The interval before the next animation starts. + * @param {Number} [speed] - The animation speed for the animations. + */ + Autoplay.prototype.play = function(timeout, speed) { + this._paused = false; + + if (this._core.is('rotating')) { + return; + } + + this._core.enter('rotating'); + + this._setAutoPlayInterval(); + }; + + /** + * Gets a new timeout + * @private + * @param {Number} [timeout] - The interval before the next animation starts. + * @param {Number} [speed] - The animation speed for the animations. + * @return {Timeout} + */ + Autoplay.prototype._getNextTimeout = function(timeout, speed) { + if ( this._timeout ) { + window.clearTimeout(this._timeout); + } + return window.setTimeout($.proxy(function() { + if (this._paused || this._core.is('busy') || this._core.is('interacting') || document.hidden) { + return; + } + this._core.next(speed || this._core.settings.autoplaySpeed); + }, this), timeout || this._core.settings.autoplayTimeout); + }; + + /** + * Sets autoplay in motion. + * @private + */ + Autoplay.prototype._setAutoPlayInterval = function() { + this._timeout = this._getNextTimeout(); + }; + + /** + * Stops the autoplay. + * @public + */ + Autoplay.prototype.stop = function() { + if (!this._core.is('rotating')) { + return; + } + + window.clearTimeout(this._timeout); + this._core.leave('rotating'); + }; + + /** + * Stops the autoplay. + * @public + */ + Autoplay.prototype.pause = function() { + if (!this._core.is('rotating')) { + return; + } + + this._paused = true; + }; + + /** + * Destroys the plugin. + */ + Autoplay.prototype.destroy = function() { + var handler, property; + + this.stop(); + + for (handler in this._handlers) { + this._core.$element.off(handler, this._handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.autoplay = Autoplay; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Navigation Plugin + * @version 2.1.0 + * @author Artus Kolanowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + 'use strict'; + + /** + * Creates the navigation plugin. + * @class The Navigation Plugin + * @param {Owl} carousel - The Owl Carousel. + */ + var Navigation = function(carousel) { + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * Indicates whether the plugin is initialized or not. + * @protected + * @type {Boolean} + */ + this._initialized = false; + + /** + * The current paging indexes. + * @protected + * @type {Array} + */ + this._pages = []; + + /** + * All DOM elements of the user interface. + * @protected + * @type {Object} + */ + this._controls = {}; + + /** + * Markup for an indicator. + * @protected + * @type {Array.} + */ + this._templates = []; + + /** + * The carousel element. + * @type {jQuery} + */ + this.$element = this._core.$element; + + /** + * Overridden methods of the carousel. + * @protected + * @type {Object} + */ + this._overrides = { + next: this._core.next, + prev: this._core.prev, + to: this._core.to + }; + + /** + * All event handlers. + * @protected + * @type {Object} + */ + this._handlers = { + 'prepared.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.dotsData) { + this._templates.push('
      ' + + $(e.content).find('[data-dot]').addBack('[data-dot]').attr('data-dot') + '
      '); + } + }, this), + 'added.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.dotsData) { + this._templates.splice(e.position, 0, this._templates.pop()); + } + }, this), + 'remove.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.dotsData) { + this._templates.splice(e.position, 1); + } + }, this), + 'changed.owl.carousel': $.proxy(function(e) { + if (e.namespace && e.property.name == 'position') { + this.draw(); + } + }, this), + 'initialized.owl.carousel': $.proxy(function(e) { + if (e.namespace && !this._initialized) { + this._core.trigger('initialize', null, 'navigation'); + this.initialize(); + this.update(); + this.draw(); + this._initialized = true; + this._core.trigger('initialized', null, 'navigation'); + } + }, this), + 'refreshed.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._initialized) { + this._core.trigger('refresh', null, 'navigation'); + this.update(); + this.draw(); + this._core.trigger('refreshed', null, 'navigation'); + } + }, this) + }; + + // set default options + this._core.options = $.extend({}, Navigation.Defaults, this._core.options); + + // register event handlers + this.$element.on(this._handlers); + }; + + /** + * Default options. + * @public + * @todo Rename `slideBy` to `navBy` + */ + Navigation.Defaults = { + nav: false, + navText: [ 'prev', 'next' ], + navSpeed: false, + navElement: 'div', + navContainer: false, + navContainerClass: 'owl-nav', + navClass: [ 'owl-prev', 'owl-next' ], + slideBy: 1, + dotClass: 'owl-dot', + dotsClass: 'owl-dots', + dots: true, + dotsEach: false, + dotsData: false, + dotsSpeed: false, + dotsContainer: false + }; + + /** + * Initializes the layout of the plugin and extends the carousel. + * @protected + */ + Navigation.prototype.initialize = function() { + var override, + settings = this._core.settings; + + // create DOM structure for relative navigation + this._controls.$relative = (settings.navContainer ? $(settings.navContainer) + : $('
      ').addClass(settings.navContainerClass).appendTo(this.$element)).addClass('disabled'); + + this._controls.$previous = $('<' + settings.navElement + '>') + .addClass(settings.navClass[0]) + .html(settings.navText[0]) + .prependTo(this._controls.$relative) + .on('click', $.proxy(function(e) { + this.prev(settings.navSpeed); + }, this)); + this._controls.$next = $('<' + settings.navElement + '>') + .addClass(settings.navClass[1]) + .html(settings.navText[1]) + .appendTo(this._controls.$relative) + .on('click', $.proxy(function(e) { + this.next(settings.navSpeed); + }, this)); + + // create DOM structure for absolute navigation + if (!settings.dotsData) { + this._templates = [ $('
      ') + .addClass(settings.dotClass) + .append($('')) + .prop('outerHTML') ]; + } + + this._controls.$absolute = (settings.dotsContainer ? $(settings.dotsContainer) + : $('
      ').addClass(settings.dotsClass).appendTo(this.$element)).addClass('disabled'); + + this._controls.$absolute.on('click', 'div', $.proxy(function(e) { + var index = $(e.target).parent().is(this._controls.$absolute) + ? $(e.target).index() : $(e.target).parent().index(); + + e.preventDefault(); + + this.to(index, settings.dotsSpeed); + }, this)); + + // override public methods of the carousel + for (override in this._overrides) { + this._core[override] = $.proxy(this[override], this); + } + }; + + /** + * Destroys the plugin. + * @protected + */ + Navigation.prototype.destroy = function() { + var handler, control, property, override; + + for (handler in this._handlers) { + this.$element.off(handler, this._handlers[handler]); + } + for (control in this._controls) { + this._controls[control].remove(); + } + for (override in this.overides) { + this._core[override] = this._overrides[override]; + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + /** + * Updates the internal state. + * @protected + */ + Navigation.prototype.update = function() { + var i, j, k, + lower = this._core.clones().length / 2, + upper = lower + this._core.items().length, + maximum = this._core.maximum(true), + settings = this._core.settings, + size = settings.center || settings.autoWidth || settings.dotsData + ? 1 : settings.dotsEach || settings.items; + + if (settings.slideBy !== 'page') { + settings.slideBy = Math.min(settings.slideBy, settings.items); + } + + if (settings.dots || settings.slideBy == 'page') { + this._pages = []; + + for (i = lower, j = 0, k = 0; i < upper; i++) { + if (j >= size || j === 0) { + this._pages.push({ + start: Math.min(maximum, i - lower), + end: i - lower + size - 1 + }); + if (Math.min(maximum, i - lower) === maximum) { + break; + } + j = 0, ++k; + } + j += this._core.mergers(this._core.relative(i)); + } + } + }; + + /** + * Draws the user interface. + * @todo The option `dotsData` wont work. + * @protected + */ + Navigation.prototype.draw = function() { + var difference, + settings = this._core.settings, + disabled = this._core.items().length <= settings.items, + index = this._core.relative(this._core.current()), + loop = settings.loop || settings.rewind; + + this._controls.$relative.toggleClass('disabled', !settings.nav || disabled); + + if (settings.nav) { + this._controls.$previous.toggleClass('disabled', !loop && index <= this._core.minimum(true)); + this._controls.$next.toggleClass('disabled', !loop && index >= this._core.maximum(true)); + } + + this._controls.$absolute.toggleClass('disabled', !settings.dots || disabled); + + if (settings.dots) { + difference = this._pages.length - this._controls.$absolute.children().length; + + if (settings.dotsData && difference !== 0) { + this._controls.$absolute.html(this._templates.join('')); + } else if (difference > 0) { + this._controls.$absolute.append(new Array(difference + 1).join(this._templates[0])); + } else if (difference < 0) { + this._controls.$absolute.children().slice(difference).remove(); + } + + this._controls.$absolute.find('.active').removeClass('active'); + this._controls.$absolute.children().eq($.inArray(this.current(), this._pages)).addClass('active'); + } + }; + + /** + * Extends event data. + * @protected + * @param {Event} event - The event object which gets thrown. + */ + Navigation.prototype.onTrigger = function(event) { + var settings = this._core.settings; + + event.page = { + index: $.inArray(this.current(), this._pages), + count: this._pages.length, + size: settings && (settings.center || settings.autoWidth || settings.dotsData + ? 1 : settings.dotsEach || settings.items) + }; + }; + + /** + * Gets the current page position of the carousel. + * @protected + * @returns {Number} + */ + Navigation.prototype.current = function() { + var current = this._core.relative(this._core.current()); + return $.grep(this._pages, $.proxy(function(page, index) { + return page.start <= current && page.end >= current; + }, this)).pop(); + }; + + /** + * Gets the current succesor/predecessor position. + * @protected + * @returns {Number} + */ + Navigation.prototype.getPosition = function(successor) { + var position, length, + settings = this._core.settings; + + if (settings.slideBy == 'page') { + position = $.inArray(this.current(), this._pages); + length = this._pages.length; + successor ? ++position : --position; + position = this._pages[((position % length) + length) % length].start; + } else { + position = this._core.relative(this._core.current()); + length = this._core.items().length; + successor ? position += settings.slideBy : position -= settings.slideBy; + } + + return position; + }; + + /** + * Slides to the next item or page. + * @public + * @param {Number} [speed=false] - The time in milliseconds for the transition. + */ + Navigation.prototype.next = function(speed) { + $.proxy(this._overrides.to, this._core)(this.getPosition(true), speed); + }; + + /** + * Slides to the previous item or page. + * @public + * @param {Number} [speed=false] - The time in milliseconds for the transition. + */ + Navigation.prototype.prev = function(speed) { + $.proxy(this._overrides.to, this._core)(this.getPosition(false), speed); + }; + + /** + * Slides to the specified item or page. + * @public + * @param {Number} position - The position of the item or page. + * @param {Number} [speed] - The time in milliseconds for the transition. + * @param {Boolean} [standard=false] - Whether to use the standard behaviour or not. + */ + Navigation.prototype.to = function(position, speed, standard) { + var length; + + if (!standard && this._pages.length) { + length = this._pages.length; + $.proxy(this._overrides.to, this._core)(this._pages[((position % length) + length) % length].start, speed); + } else { + $.proxy(this._overrides.to, this._core)(position, speed); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.Navigation = Navigation; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Hash Plugin + * @version 2.1.0 + * @author Artus Kolanowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + 'use strict'; + + /** + * Creates the hash plugin. + * @class The Hash Plugin + * @param {Owl} carousel - The Owl Carousel + */ + var Hash = function(carousel) { + /** + * Reference to the core. + * @protected + * @type {Owl} + */ + this._core = carousel; + + /** + * Hash index for the items. + * @protected + * @type {Object} + */ + this._hashes = {}; + + /** + * The carousel element. + * @type {jQuery} + */ + this.$element = this._core.$element; + + /** + * All event handlers. + * @protected + * @type {Object} + */ + this._handlers = { + 'initialized.owl.carousel': $.proxy(function(e) { + if (e.namespace && this._core.settings.startPosition === 'URLHash') { + $(window).trigger('hashchange.owl.navigation'); + } + }, this), + 'prepared.owl.carousel': $.proxy(function(e) { + if (e.namespace) { + var hash = $(e.content).find('[data-hash]').addBack('[data-hash]').attr('data-hash'); + + if (!hash) { + return; + } + + this._hashes[hash] = e.content; + } + }, this), + 'changed.owl.carousel': $.proxy(function(e) { + if (e.namespace && e.property.name === 'position') { + var current = this._core.items(this._core.relative(this._core.current())), + hash = $.map(this._hashes, function(item, hash) { + return item === current ? hash : null; + }).join(); + + if (!hash || window.location.hash.slice(1) === hash) { + return; + } + + window.location.hash = hash; + } + }, this) + }; + + // set default options + this._core.options = $.extend({}, Hash.Defaults, this._core.options); + + // register the event handlers + this.$element.on(this._handlers); + + // register event listener for hash navigation + $(window).on('hashchange.owl.navigation', $.proxy(function(e) { + var hash = window.location.hash.substring(1), + items = this._core.$stage.children(), + position = this._hashes[hash] && items.index(this._hashes[hash]); + + if (position === undefined || position === this._core.current()) { + return; + } + + this._core.to(this._core.relative(position), false, true); + }, this)); + }; + + /** + * Default options. + * @public + */ + Hash.Defaults = { + URLhashListener: false + }; + + /** + * Destroys the plugin. + * @public + */ + Hash.prototype.destroy = function() { + var handler, property; + + $(window).off('hashchange.owl.navigation'); + + for (handler in this._handlers) { + this._core.$element.off(handler, this._handlers[handler]); + } + for (property in Object.getOwnPropertyNames(this)) { + typeof this[property] != 'function' && (this[property] = null); + } + }; + + $.fn.owlCarousel.Constructor.Plugins.Hash = Hash; + +})(window.Zepto || window.jQuery, window, document); + +/** + * Support Plugin + * + * @version 2.1.0 + * @author Vivid Planet Software GmbH + * @author Artus Kolanowski + * @author David Deutsch + * @license The MIT License (MIT) + */ +;(function($, window, document, undefined) { + + var style = $('').get(0).style, + prefixes = 'Webkit Moz O ms'.split(' '), + events = { + transition: { + end: { + WebkitTransition: 'webkitTransitionEnd', + MozTransition: 'transitionend', + OTransition: 'oTransitionEnd', + transition: 'transitionend' + } + }, + animation: { + end: { + WebkitAnimation: 'webkitAnimationEnd', + MozAnimation: 'animationend', + OAnimation: 'oAnimationEnd', + animation: 'animationend' + } + } + }, + tests = { + csstransforms: function() { + return !!test('transform'); + }, + csstransforms3d: function() { + return !!test('perspective'); + }, + csstransitions: function() { + return !!test('transition'); + }, + cssanimations: function() { + return !!test('animation'); + } + }; + + function test(property, prefixed) { + var result = false, + upper = property.charAt(0).toUpperCase() + property.slice(1); + + $.each((property + ' ' + prefixes.join(upper + ' ') + upper).split(' '), function(i, property) { + if (style[property] !== undefined) { + result = prefixed ? property : true; + return false; + } + }); + + return result; + } + + function prefixed(property) { + return test(property, true); + } + + if (tests.csstransitions()) { + /* jshint -W053 */ + $.support.transition = new String(prefixed('transition')) + $.support.transition.end = events.transition.end[ $.support.transition ]; + } + + if (tests.cssanimations()) { + /* jshint -W053 */ + $.support.animation = new String(prefixed('animation')) + $.support.animation.end = events.animation.end[ $.support.animation ]; + } + + if (tests.csstransforms()) { + /* jshint -W053 */ + $.support.transform = new String(prefixed('transform')); + $.support.transform3d = tests.csstransforms3d(); + } + +})(window.Zepto || window.jQuery, window, document); + +/*! + * Bootstrap-select v1.12.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); + }); + } else if (typeof module === 'object' && module.exports) { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require("jquery")); + } else { + factory(root["jQuery"]); + } +}(this, function (jQuery) { + +(function ($) { + 'use strict'; + + // + if (!String.prototype.includes) { + (function () { + 'use strict'; // needed to support `apply`/`call` with `undefined`/`null` + var toString = {}.toString; + var defineProperty = (function () { + // IE 8 only supports `Object.defineProperty` on DOM elements + try { + var object = {}; + var $defineProperty = Object.defineProperty; + var result = $defineProperty(object, object, object) && $defineProperty; + } catch (error) { + } + return result; + }()); + var indexOf = ''.indexOf; + var includes = function (search) { + if (this == null) { + throw new TypeError(); + } + var string = String(this); + if (search && toString.call(search) == '[object RegExp]') { + throw new TypeError(); + } + var stringLength = string.length; + var searchString = String(search); + var searchLength = searchString.length; + var position = arguments.length > 1 ? arguments[1] : undefined; + // `ToInteger` + var pos = position ? Number(position) : 0; + if (pos != pos) { // better `isNaN` + pos = 0; + } + var start = Math.min(Math.max(pos, 0), stringLength); + // Avoid the `indexOf` call if no match is possible + if (searchLength + start > stringLength) { + return false; + } + return indexOf.call(string, searchString, pos) != -1; + }; + if (defineProperty) { + defineProperty(String.prototype, 'includes', { + 'value': includes, + 'configurable': true, + 'writable': true + }); + } else { + String.prototype.includes = includes; + } + }()); + } + + if (!String.prototype.startsWith) { + (function () { + 'use strict'; // needed to support `apply`/`call` with `undefined`/`null` + var defineProperty = (function () { + // IE 8 only supports `Object.defineProperty` on DOM elements + try { + var object = {}; + var $defineProperty = Object.defineProperty; + var result = $defineProperty(object, object, object) && $defineProperty; + } catch (error) { + } + return result; + }()); + var toString = {}.toString; + var startsWith = function (search) { + if (this == null) { + throw new TypeError(); + } + var string = String(this); + if (search && toString.call(search) == '[object RegExp]') { + throw new TypeError(); + } + var stringLength = string.length; + var searchString = String(search); + var searchLength = searchString.length; + var position = arguments.length > 1 ? arguments[1] : undefined; + // `ToInteger` + var pos = position ? Number(position) : 0; + if (pos != pos) { // better `isNaN` + pos = 0; + } + var start = Math.min(Math.max(pos, 0), stringLength); + // Avoid the `indexOf` call if no match is possible + if (searchLength + start > stringLength) { + return false; + } + var index = -1; + while (++index < searchLength) { + if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) { + return false; + } + } + return true; + }; + if (defineProperty) { + defineProperty(String.prototype, 'startsWith', { + 'value': startsWith, + 'configurable': true, + 'writable': true + }); + } else { + String.prototype.startsWith = startsWith; + } + }()); + } + + if (!Object.keys) { + Object.keys = function ( + o, // object + k, // key + r // result array + ){ + // initialize object and result + r=[]; + // iterate over object keys + for (k in o) + // fill result array with non-prototypical keys + r.hasOwnProperty.call(o, k) && r.push(k); + // return result + return r; + }; + } + + // set data-selected on select element if the value has been programmatically selected + // prior to initialization of bootstrap-select + // * consider removing or replacing an alternative method * + var valHooks = { + useDefault: false, + _set: $.valHooks.select.set + }; + + $.valHooks.select.set = function(elem, value) { + if (value && !valHooks.useDefault) $(elem).data('selected', true); + + return valHooks._set.apply(this, arguments); + }; + + var changed_arguments = null; + $.fn.triggerNative = function (eventName) { + var el = this[0], + event; + + if (el.dispatchEvent) { // for modern browsers & IE9+ + if (typeof Event === 'function') { + // For modern browsers + event = new Event(eventName, { + bubbles: true + }); + } else { + // For IE since it doesn't support Event constructor + event = document.createEvent('Event'); + event.initEvent(eventName, true, false); + } + + el.dispatchEvent(event); + } else if (el.fireEvent) { // for IE8 + event = document.createEventObject(); + event.eventType = eventName; + el.fireEvent('on' + eventName, event); + } else { + // fall back to jQuery.trigger + this.trigger(eventName); + } + }; + // + + // Case insensitive contains search + $.expr.pseudos.icontains = function (obj, index, meta) { + var $obj = $(obj); + var haystack = ($obj.data('tokens') || $obj.text()).toString().toUpperCase(); + return haystack.includes(meta[3].toUpperCase()); + }; + + // Case insensitive begins search + $.expr.pseudos.ibegins = function (obj, index, meta) { + var $obj = $(obj); + var haystack = ($obj.data('tokens') || $obj.text()).toString().toUpperCase(); + return haystack.startsWith(meta[3].toUpperCase()); + }; + + // Case and accent insensitive contains search + $.expr.pseudos.aicontains = function (obj, index, meta) { + var $obj = $(obj); + var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toString().toUpperCase(); + return haystack.includes(meta[3].toUpperCase()); + }; + + // Case and accent insensitive begins search + $.expr.pseudos.aibegins = function (obj, index, meta) { + var $obj = $(obj); + var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toString().toUpperCase(); + return haystack.startsWith(meta[3].toUpperCase()); + }; + + /** + * Remove all diatrics from the given text. + * @access private + * @param {String} text + * @returns {String} + */ + function normalizeToBase(text) { + var rExps = [ + {re: /[\xC0-\xC6]/g, ch: "A"}, + {re: /[\xE0-\xE6]/g, ch: "a"}, + {re: /[\xC8-\xCB]/g, ch: "E"}, + {re: /[\xE8-\xEB]/g, ch: "e"}, + {re: /[\xCC-\xCF]/g, ch: "I"}, + {re: /[\xEC-\xEF]/g, ch: "i"}, + {re: /[\xD2-\xD6]/g, ch: "O"}, + {re: /[\xF2-\xF6]/g, ch: "o"}, + {re: /[\xD9-\xDC]/g, ch: "U"}, + {re: /[\xF9-\xFC]/g, ch: "u"}, + {re: /[\xC7-\xE7]/g, ch: "c"}, + {re: /[\xD1]/g, ch: "N"}, + {re: /[\xF1]/g, ch: "n"} + ]; + $.each(rExps, function () { + text = text ? text.replace(this.re, this.ch) : ''; + }); + return text; + } + + + // List of HTML entities for escaping. + var escapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; + + var unescapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + ''': "'", + '`': '`' + }; + + // Functions for escaping and unescaping strings to/from HTML interpolation. + var createEscaper = function(map) { + var escaper = function(match) { + return map[match]; + }; + // Regexes for identifying a key that needs to be escaped. + var source = '(?:' + Object.keys(map).join('|') + ')'; + var testRegexp = RegExp(source); + var replaceRegexp = RegExp(source, 'g'); + return function(string) { + string = string == null ? '' : '' + string; + return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; + }; + }; + + var htmlEscape = createEscaper(escapeMap); + var htmlUnescape = createEscaper(unescapeMap); + + var Selectpicker = function (element, options, e) { + // bootstrap-select has been initialized - revert valHooks.select.set back to its original function + if (!valHooks.useDefault) { + $.valHooks.select.set = valHooks._set; + valHooks.useDefault = true; + } + + if (e) { + e.stopPropagation(); + e.preventDefault(); + } + + this.$element = $(element); + this.$newElement = null; + this.$button = null; + this.$menu = null; + this.$lis = null; + this.options = options; + + // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a + // data-attribute) + if (this.options.title === null) { + this.options.title = this.$element.attr('title'); + } + + // Format window padding + var winPad = this.options.windowPadding; + if (typeof winPad === 'number') { + this.options.windowPadding = [winPad, winPad, winPad, winPad]; + } + + //Expose public methods + this.val = Selectpicker.prototype.val; + this.render = Selectpicker.prototype.render; + this.refresh = Selectpicker.prototype.refresh; + this.setStyle = Selectpicker.prototype.setStyle; + this.selectAll = Selectpicker.prototype.selectAll; + this.deselectAll = Selectpicker.prototype.deselectAll; + this.destroy = Selectpicker.prototype.destroy; + this.remove = Selectpicker.prototype.remove; + this.show = Selectpicker.prototype.show; + this.hide = Selectpicker.prototype.hide; + + this.init(); + }; + + Selectpicker.VERSION = '1.12.0'; + + // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both. + Selectpicker.DEFAULTS = { + noneSelectedText: 'Nothing selected', + noneResultsText: 'No results matched {0}', + countSelectedText: function (numSelected, numTotal) { + return (numSelected == 1) ? "{0} item selected" : "{0} items selected"; + }, + maxOptionsText: function (numAll, numGroup) { + return [ + (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)', + (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)' + ]; + }, + selectAllText: 'Select All', + deselectAllText: 'Deselect All', + doneButton: false, + doneButtonText: 'Close', + multipleSeparator: ', ', + styleBase: 'btn', + style: 'btn-default', + size: 'auto', + title: null, + selectedTextFormat: 'values', + width: false, + container: false, + hideDisabled: false, + showSubtext: false, + showIcon: true, + showContent: true, + dropupAuto: true, + header: false, + liveSearch: false, + liveSearchPlaceholder: null, + liveSearchNormalize: false, + liveSearchStyle: 'contains', + actionsBox: false, + iconBase: 'glyphicon', + tickIcon: 'glyphicon-ok', + showTick: false, + template: { + caret: '' + }, + maxOptions: false, + mobile: false, + selectOnTab: false, + dropdownAlignRight: false, + windowPadding: 0 + }; + + Selectpicker.prototype = { + + constructor: Selectpicker, + + init: function () { + var that = this, + id = this.$element.attr('id'); + + this.$element.addClass('bs-select-hidden'); + + // store originalIndex (key) and newIndex (value) in this.liObj for fast accessibility + // allows us to do this.$lis.eq(that.liObj[index]) instead of this.$lis.filter('[data-original-index="' + index + '"]') + this.liObj = {}; + this.multiple = this.$element.prop('multiple'); + this.autofocus = this.$element.prop('autofocus'); + this.$newElement = this.createView(); + this.$element + .after(this.$newElement) + .appendTo(this.$newElement); + this.$button = this.$newElement.children('button'); + this.$menu = this.$newElement.children('.dropdown-menu'); + this.$menuInner = this.$menu.children('.inner'); + this.$searchbox = this.$menu.find('input'); + + this.$element.removeClass('bs-select-hidden'); + + if (this.options.dropdownAlignRight === true) this.$menu.addClass('dropdown-menu-right'); + + if (typeof id !== 'undefined') { + this.$button.attr('data-id', id); + $('label[for="' + id + '"]').click(function (e) { + e.preventDefault(); + that.$button.focus(); + }); + } + + this.checkDisabled(); + this.clickListener(); + if (this.options.liveSearch) this.liveSearchListener(); + this.render(); + this.setStyle(); + this.setWidth(); + if (this.options.container) this.selectPosition(); + this.$menu.data('this', this); + this.$newElement.data('this', this); + if (this.options.mobile) this.mobile(); + + this.$newElement.on({ + 'hide.bs.dropdown': function (e) { + that.$menuInner.attr('aria-expanded', false); + that.$element.trigger('hide.bs.select', e); + }, + 'hidden.bs.dropdown': function (e) { + that.$element.trigger('hidden.bs.select', e); + }, + 'show.bs.dropdown': function (e) { + that.$menuInner.attr('aria-expanded', true); + that.$element.trigger('show.bs.select', e); + }, + 'shown.bs.dropdown': function (e) { + that.$element.trigger('shown.bs.select', e); + } + }); + + if (that.$element[0].hasAttribute('required')) { + this.$element.on('invalid', function () { + that.$button + .addClass('bs-invalid') + .focus(); + + that.$element.on({ + 'focus.bs.select': function () { + that.$button.focus(); + that.$element.off('focus.bs.select'); + }, + 'shown.bs.select': function () { + that.$element + .val(that.$element.val()) // set the value to hide the validation message in Chrome when menu is opened + .off('shown.bs.select'); + }, + 'rendered.bs.select': function () { + // if select is no longer invalid, remove the bs-invalid class + if (this.validity.valid) that.$button.removeClass('bs-invalid'); + that.$element.off('rendered.bs.select'); + } + }); + }); + } + + setTimeout(function () { + that.$element.trigger('loaded.bs.select'); + }); + }, + + createDropdown: function () { + // Options + // If we are multiple or showTick option is set, then add the show-tick class + var showTick = (this.multiple || this.options.showTick) ? ' show-tick' : '', + inputGroup = this.$element.parent().hasClass('input-group') ? ' input-group-btn' : '', + autofocus = this.autofocus ? ' autofocus' : ''; + // Elements + var header = this.options.header ? '
      ' + this.options.header + '
      ' : ''; + var searchbox = this.options.liveSearch ? + '' + : ''; + var actionsbox = this.multiple && this.options.actionsBox ? + '
      ' + + '
      ' + + '' + + '' + + '
      ' + + '
      ' + : ''; + var donebutton = this.multiple && this.options.doneButton ? + '
      ' + + '
      ' + + '' + + '
      ' + + '
      ' + : ''; + var drop = + '
      ' + + '' + + '' + + '
      '; + + return $(drop); + }, + + createView: function () { + var $drop = this.createDropdown(), + li = this.createLi(); + + $drop.find('ul')[0].innerHTML = li; + return $drop; + }, + + reloadLi: function () { + // rebuild + var li = this.createLi(); + this.$menuInner[0].innerHTML = li; + }, + + createLi: function () { + var that = this, + _li = [], + optID = 0, + titleOption = document.createElement('option'), + liIndex = -1; // increment liIndex whenever a new
    • element is created to ensure liObj is correct + + // Helper functions + /** + * @param content + * @param [index] + * @param [classes] + * @param [optgroup] + * @returns {string} + */ + var generateLI = function (content, index, classes, optgroup) { + return '' + content + '
    • '; + }; + + /** + * @param text + * @param [classes] + * @param [inline] + * @param [tokens] + * @returns {string} + */ + var generateA = function (text, classes, inline, tokens) { + return '' + text + + '' + + ''; + }; + + if (this.options.title && !this.multiple) { + // this option doesn't create a new
    • element, but does add a new option, so liIndex is decreased + // since liObj is recalculated on every refresh, liIndex needs to be decreased even if the titleOption is already appended + liIndex--; + + if (!this.$element.find('.bs-title-option').length) { + // Use native JS to prepend option (faster) + var element = this.$element[0]; + titleOption.className = 'bs-title-option'; + titleOption.innerHTML = this.options.title; + titleOption.value = ''; + element.insertBefore(titleOption, element.firstChild); + // Check if selected or data-selected attribute is already set on an option. If not, select the titleOption option. + // the selected item may have been changed by user or programmatically before the bootstrap select plugin runs, + // if so, the select will have the data-selected attribute + var $opt = $(element.options[element.selectedIndex]); + if ($opt.attr('selected') === undefined && this.$element.data('selected') === undefined) { + titleOption.selected = true; + } + } + } + + this.$element.find('option').each(function (index) { + var $this = $(this); + + liIndex++; + + if ($this.hasClass('bs-title-option')) return; + + // Get the class and text for the option + var optionClass = this.className || '', + inline = this.style.cssText, + text = $this.data('content') ? $this.data('content') : $this.html(), + tokens = $this.data('tokens') ? $this.data('tokens') : null, + subtext = typeof $this.data('subtext') !== 'undefined' ? '' + $this.data('subtext') + '' : '', + icon = typeof $this.data('icon') !== 'undefined' ? ' ' : '', + $parent = $this.parent(), + isOptgroup = $parent[0].tagName === 'OPTGROUP', + isOptgroupDisabled = isOptgroup && $parent[0].disabled, + isDisabled = this.disabled || isOptgroupDisabled; + + if (icon !== '' && isDisabled) { + icon = '' + icon + ''; + } + + if (that.options.hideDisabled && (isDisabled && !isOptgroup || isOptgroupDisabled)) { + liIndex--; + return; + } + + if (!$this.data('content')) { + // Prepend any icon and append any subtext to the main text. + text = icon + '' + text + subtext + ''; + } + + if (isOptgroup && $this.data('divider') !== true) { + if (that.options.hideDisabled && isDisabled) { + if ($parent.data('allOptionsDisabled') === undefined) { + var $options = $parent.children(); + $parent.data('allOptionsDisabled', $options.filter(':disabled').length === $options.length); + } + + if ($parent.data('allOptionsDisabled')) { + liIndex--; + return; + } + } + + var optGroupClass = ' ' + $parent[0].className || ''; + + if ($this.index() === 0) { // Is it the first option of the optgroup? + optID += 1; + + // Get the opt group label + var label = $parent[0].label, + labelSubtext = typeof $parent.data('subtext') !== 'undefined' ? '' + $parent.data('subtext') + '' : '', + labelIcon = $parent.data('icon') ? ' ' : ''; + + label = labelIcon + '' + htmlEscape(label) + labelSubtext + ''; + + if (index !== 0 && _li.length > 0) { // Is it NOT the first option of the select && are there elements in the dropdown? + liIndex++; + _li.push(generateLI('', null, 'divider', optID + 'div')); + } + liIndex++; + _li.push(generateLI(label, null, 'dropdown-header' + optGroupClass, optID)); + } + + if (that.options.hideDisabled && isDisabled) { + liIndex--; + return; + } + + _li.push(generateLI(generateA(text, 'opt ' + optionClass + optGroupClass, inline, tokens), index, '', optID)); + } else if ($this.data('divider') === true) { + _li.push(generateLI('', index, 'divider')); + } else if ($this.data('hidden') === true) { + _li.push(generateLI(generateA(text, optionClass, inline, tokens), index, 'hidden is-hidden')); + } else { + var showDivider = this.previousElementSibling && this.previousElementSibling.tagName === 'OPTGROUP'; + + // if previous element is not an optgroup and hideDisabled is true + if (!showDivider && that.options.hideDisabled) { + // get previous elements + var $prev = $(this).prevAll(); + + for (var i = 0; i < $prev.length; i++) { + // find the first element in the previous elements that is an optgroup + if ($prev[i].tagName === 'OPTGROUP') { + var optGroupDistance = 0; + + // loop through the options in between the current option and the optgroup + // and check if they are hidden or disabled + for (var d = 0; d < i; d++) { + var prevOption = $prev[d]; + if (prevOption.disabled || $(prevOption).data('hidden') === true) optGroupDistance++; + } + + // if all of the options between the current option and the optgroup are hidden or disabled, show the divider + if (optGroupDistance === i) showDivider = true; + + break; + } + } + } + + if (showDivider) { + liIndex++; + _li.push(generateLI('', null, 'divider', optID + 'div')); + } + _li.push(generateLI(generateA(text, optionClass, inline, tokens), index)); + } + + that.liObj[index] = liIndex; + }); + + //If we are not multiple, we don't have a selected item, and we don't have a title, select the first element so something is set in the button + if (!this.multiple && this.$element.find('option:selected').length === 0 && !this.options.title) { + this.$element.find('option').eq(0).prop('selected', true).attr('selected', 'selected'); + } + + return _li.join(''); + }, + + findLis: function () { + if (this.$lis == null) this.$lis = this.$menu.find('li'); + return this.$lis; + }, + + /** + * @param [updateLi] defaults to true + */ + render: function (updateLi) { + var that = this, + notDisabled; + + //Update the LI to match the SELECT + if (updateLi !== false) { + this.$element.find('option').each(function (index) { + var $lis = that.findLis().eq(that.liObj[index]); + + that.setDisabled(index, this.disabled || this.parentNode.tagName === 'OPTGROUP' && this.parentNode.disabled, $lis); + that.setSelected(index, this.selected, $lis); + }); + } + + this.togglePlaceholder(); + + this.tabIndex(); + + var selectedItems = this.$element.find('option').map(function () { + if (this.selected) { + if (that.options.hideDisabled && (this.disabled || this.parentNode.tagName === 'OPTGROUP' && this.parentNode.disabled)) return; + + var $this = $(this), + icon = $this.data('icon') && that.options.showIcon ? ' ' : '', + subtext; + + if (that.options.showSubtext && $this.data('subtext') && !that.multiple) { + subtext = ' ' + $this.data('subtext') + ''; + } else { + subtext = ''; + } + if (typeof $this.attr('title') !== 'undefined') { + return $this.attr('title'); + } else if ($this.data('content') && that.options.showContent) { + return $this.data('content').toString(); + } else { + return icon + $this.html() + subtext; + } + } + }).toArray(); + + //Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled + //Convert all the values into a comma delimited string + var title = !this.multiple ? selectedItems[0] : selectedItems.join(this.options.multipleSeparator); + + //If this is multi select, and the selectText type is count, the show 1 of 2 selected etc.. + if (this.multiple && this.options.selectedTextFormat.indexOf('count') > -1) { + var max = this.options.selectedTextFormat.split('>'); + if ((max.length > 1 && selectedItems.length > max[1]) || (max.length == 1 && selectedItems.length >= 2)) { + notDisabled = this.options.hideDisabled ? ', [disabled]' : ''; + var totalCount = this.$element.find('option').not('[data-divider="true"], [data-hidden="true"]' + notDisabled).length, + tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText; + title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString()); + } + } + + if (this.options.title == undefined) { + this.options.title = this.$element.attr('title'); + } + + if (this.options.selectedTextFormat == 'static') { + title = this.options.title; + } + + //If we dont have a title, then use the default, or if nothing is set at all, use the not selected text + if (!title) { + title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText; + } + + //strip all HTML tags and trim the result, then unescape any escaped tags + this.$button.attr('title', htmlUnescape($.trim(title.replace(/<[^>]*>?/g, '')))); + this.$button.children('.filter-option').html(title); + + this.$element.trigger('rendered.bs.select'); + }, + + /** + * @param [style] + * @param [status] + */ + setStyle: function (style, status) { + if (this.$element.attr('class')) { + this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, '')); + } + + var buttonClass = style ? style : this.options.style; + + if (status == 'add') { + this.$button.addClass(buttonClass); + } else if (status == 'remove') { + this.$button.removeClass(buttonClass); + } else { + this.$button.removeClass(this.options.style); + this.$button.addClass(buttonClass); + } + }, + + liHeight: function (refresh) { + if (!refresh && (this.options.size === false || this.sizeInfo)) return; + + var newElement = document.createElement('div'), + menu = document.createElement('div'), + menuInner = document.createElement('ul'), + divider = document.createElement('li'), + li = document.createElement('li'), + a = document.createElement('a'), + text = document.createElement('span'), + header = this.options.header && this.$menu.find('.popover-title').length > 0 ? this.$menu.find('.popover-title')[0].cloneNode(true) : null, + search = this.options.liveSearch ? document.createElement('div') : null, + actions = this.options.actionsBox && this.multiple && this.$menu.find('.bs-actionsbox').length > 0 ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null, + doneButton = this.options.doneButton && this.multiple && this.$menu.find('.bs-donebutton').length > 0 ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null; + + text.className = 'text'; + newElement.className = this.$menu[0].parentNode.className + ' open'; + menu.className = 'dropdown-menu open'; + menuInner.className = 'dropdown-menu inner'; + divider.className = 'divider'; + + text.appendChild(document.createTextNode('Inner text')); + a.appendChild(text); + li.appendChild(a); + menuInner.appendChild(li); + menuInner.appendChild(divider); + if (header) menu.appendChild(header); + if (search) { + // create a span instead of input as creating an input element is slower + var input = document.createElement('span'); + search.className = 'bs-searchbox'; + input.className = 'form-control'; + search.appendChild(input); + menu.appendChild(search); + } + if (actions) menu.appendChild(actions); + menu.appendChild(menuInner); + if (doneButton) menu.appendChild(doneButton); + newElement.appendChild(menu); + + document.body.appendChild(newElement); + + var liHeight = a.offsetHeight, + headerHeight = header ? header.offsetHeight : 0, + searchHeight = search ? search.offsetHeight : 0, + actionsHeight = actions ? actions.offsetHeight : 0, + doneButtonHeight = doneButton ? doneButton.offsetHeight : 0, + dividerHeight = $(divider).outerHeight(true), + // fall back to jQuery if getComputedStyle is not supported + menuStyle = typeof getComputedStyle === 'function' ? getComputedStyle(menu) : false, + $menu = menuStyle ? null : $(menu), + menuPadding = { + vert: parseInt(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) + + parseInt(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) + + parseInt(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) + + parseInt(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')), + horiz: parseInt(menuStyle ? menuStyle.paddingLeft : $menu.css('paddingLeft')) + + parseInt(menuStyle ? menuStyle.paddingRight : $menu.css('paddingRight')) + + parseInt(menuStyle ? menuStyle.borderLeftWidth : $menu.css('borderLeftWidth')) + + parseInt(menuStyle ? menuStyle.borderRightWidth : $menu.css('borderRightWidth')) + }, + menuExtras = { + vert: menuPadding.vert + + parseInt(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) + + parseInt(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2, + horiz: menuPadding.horiz + + parseInt(menuStyle ? menuStyle.marginLeft : $menu.css('marginLeft')) + + parseInt(menuStyle ? menuStyle.marginRight : $menu.css('marginRight')) + 2 + } + + document.body.removeChild(newElement); + + this.sizeInfo = { + liHeight: liHeight, + headerHeight: headerHeight, + searchHeight: searchHeight, + actionsHeight: actionsHeight, + doneButtonHeight: doneButtonHeight, + dividerHeight: dividerHeight, + menuPadding: menuPadding, + menuExtras: menuExtras + }; + }, + + setSize: function () { + this.findLis(); + this.liHeight(); + + if (this.options.header) this.$menu.css('padding-top', 0); + if (this.options.size === false) return; + + var that = this, + $menu = this.$menu, + $menuInner = this.$menuInner, + $window = $(window), + selectHeight = this.$newElement[0].offsetHeight, + selectWidth = this.$newElement[0].offsetWidth, + liHeight = this.sizeInfo['liHeight'], + headerHeight = this.sizeInfo['headerHeight'], + searchHeight = this.sizeInfo['searchHeight'], + actionsHeight = this.sizeInfo['actionsHeight'], + doneButtonHeight = this.sizeInfo['doneButtonHeight'], + divHeight = this.sizeInfo['dividerHeight'], + menuPadding = this.sizeInfo['menuPadding'], + menuExtras = this.sizeInfo['menuExtras'], + notDisabled = this.options.hideDisabled ? '.disabled' : '', + menuHeight, + menuWidth, + getHeight, + getWidth, + selectOffsetTop, + selectOffsetBot, + selectOffsetLeft, + selectOffsetRight, + getPos = function() { + var pos = that.$newElement.offset(), + $container = $(that.options.container), + containerPos; + + if (that.options.container && !$container.is('body')) { + containerPos = $container.offset(); + containerPos.top += parseInt($container.css('borderTopWidth')); + containerPos.left += parseInt($container.css('borderLeftWidth')); + } else { + containerPos = { top: 0, left: 0 }; + } + + var winPad = that.options.windowPadding; + selectOffsetTop = pos.top - containerPos.top - $window.scrollTop(); + selectOffsetBot = $window.height() - selectOffsetTop - selectHeight - containerPos.top - winPad[2]; + selectOffsetLeft = pos.left - containerPos.left - $window.scrollLeft(); + selectOffsetRight = $window.width() - selectOffsetLeft - selectWidth - containerPos.left - winPad[1]; + selectOffsetTop -= winPad[0]; + selectOffsetLeft -= winPad[3]; + }; + + getPos(); + + if (this.options.size === 'auto') { + var getSize = function () { + var minHeight, + hasClass = function (className, include) { + return function (element) { + if (include) { + return (element.classList ? element.classList.contains(className) : $(element).hasClass(className)); + } else { + return !(element.classList ? element.classList.contains(className) : $(element).hasClass(className)); + } + }; + }, + lis = that.$menuInner[0].getElementsByTagName('li'), + lisVisible = Array.prototype.filter ? Array.prototype.filter.call(lis, hasClass('hidden', false)) : that.$lis.not('.hidden'), + optGroup = Array.prototype.filter ? Array.prototype.filter.call(lisVisible, hasClass('dropdown-header', true)) : lisVisible.filter('.dropdown-header'); + + getPos(); + menuHeight = selectOffsetBot - menuExtras.vert; + menuWidth = selectOffsetRight - menuExtras.horiz; + + if (that.options.container) { + if (!$menu.data('height')) $menu.data('height', $menu.height()); + getHeight = $menu.data('height'); + + if (!$menu.data('width')) $menu.data('width', $menu.width()); + getWidth = $menu.data('width'); + } else { + getHeight = $menu.height(); + getWidth = $menu.width(); + } + + if (that.options.dropupAuto) { + that.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras.vert) < getHeight); + } + + if (that.$newElement.hasClass('dropup')) { + menuHeight = selectOffsetTop - menuExtras.vert; + } + + if (that.options.dropdownAlignRight === 'auto') { + $menu.toggleClass('dropdown-menu-right', selectOffsetLeft > selectOffsetRight && (menuWidth - menuExtras.horiz) < (getWidth - selectWidth)); + } + + if ((lisVisible.length + optGroup.length) > 3) { + minHeight = liHeight * 3 + menuExtras.vert - 2; + } else { + minHeight = 0; + } + + $menu.css({ + 'max-height': menuHeight + 'px', + 'overflow': 'hidden', + 'min-height': minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px' + }); + $menuInner.css({ + 'max-height': menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding.vert + 'px', + 'overflow-y': 'auto', + 'min-height': Math.max(minHeight - menuPadding.vert, 0) + 'px' + }); + }; + getSize(); + this.$searchbox.off('input.getSize propertychange.getSize').on('input.getSize propertychange.getSize', getSize); + $window.off('resize.getSize scroll.getSize').on('resize.getSize scroll.getSize', getSize); + } else if (this.options.size && this.options.size != 'auto' && this.$lis.not(notDisabled).length > this.options.size) { + var optIndex = this.$lis.not('.divider').not(notDisabled).children().slice(0, this.options.size).last().parent().index(), + divLength = this.$lis.slice(0, optIndex + 1).filter('.divider').length; + menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding.vert; + + if (that.options.container) { + if (!$menu.data('height')) $menu.data('height', $menu.height()); + getHeight = $menu.data('height'); + } else { + getHeight = $menu.height(); + } + + if (that.options.dropupAuto) { + //noinspection JSUnusedAssignment + this.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras.vert) < getHeight); + } + $menu.css({ + 'max-height': menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px', + 'overflow': 'hidden', + 'min-height': '' + }); + $menuInner.css({ + 'max-height': menuHeight - menuPadding.vert + 'px', + 'overflow-y': 'auto', + 'min-height': '' + }); + } + }, + + setWidth: function () { + if (this.options.width === 'auto') { + this.$menu.css('min-width', '0'); + + // Get correct width if element is hidden + var $selectClone = this.$menu.parent().clone().appendTo('body'), + $selectClone2 = this.options.container ? this.$newElement.clone().appendTo('body') : $selectClone, + ulWidth = $selectClone.children('.dropdown-menu').outerWidth(), + btnWidth = $selectClone2.css('width', 'auto').children('button').outerWidth(); + + $selectClone.remove(); + $selectClone2.remove(); + + // Set width to whatever's larger, button title or longest option + this.$newElement.css('width', Math.max(ulWidth, btnWidth) + 'px'); + } else if (this.options.width === 'fit') { + // Remove inline min-width so width can be changed from 'auto' + this.$menu.css('min-width', ''); + this.$newElement.css('width', '').addClass('fit-width'); + } else if (this.options.width) { + // Remove inline min-width so width can be changed from 'auto' + this.$menu.css('min-width', ''); + this.$newElement.css('width', this.options.width); + } else { + // Remove inline min-width/width so width can be changed + this.$menu.css('min-width', ''); + this.$newElement.css('width', ''); + } + // Remove fit-width class if width is changed programmatically + if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') { + this.$newElement.removeClass('fit-width'); + } + }, + + selectPosition: function () { + this.$bsContainer = $('
      '); + + var that = this, + $container = $(this.options.container), + pos, + containerPos, + actualHeight, + getPlacement = function ($element) { + that.$bsContainer.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass('dropup', $element.hasClass('dropup')); + pos = $element.offset(); + + if (!$container.is('body')) { + containerPos = $container.offset(); + containerPos.top += parseInt($container.css('borderTopWidth')) - $container.scrollTop(); + containerPos.left += parseInt($container.css('borderLeftWidth')) - $container.scrollLeft(); + } else { + containerPos = { top: 0, left: 0 }; + } + + actualHeight = $element.hasClass('dropup') ? 0 : $element[0].offsetHeight; + + that.$bsContainer.css({ + 'top': pos.top - containerPos.top + actualHeight, + 'left': pos.left - containerPos.left, + 'width': $element[0].offsetWidth + }); + }; + + this.$button.on('click', function () { + var $this = $(this); + + if (that.isDisabled()) { + return; + } + + getPlacement(that.$newElement); + + that.$bsContainer + .appendTo(that.options.container) + .toggleClass('open', !$this.hasClass('open')) + .append(that.$menu); + }); + + $(window).on('resize scroll', function () { + getPlacement(that.$newElement); + }); + + this.$element.on('hide.bs.select', function () { + that.$menu.data('height', that.$menu.height()); + that.$bsContainer.detach(); + }); + }, + + /** + * @param {number} index - the index of the option that is being changed + * @param {boolean} selected - true if the option is being selected, false if being deselected + * @param {JQuery} $lis - the 'li' element that is being modified + */ + setSelected: function (index, selected, $lis) { + if (!$lis) { + this.togglePlaceholder(); // check if setSelected is being called by changing the value of the select + $lis = this.findLis().eq(this.liObj[index]); + } + + $lis.toggleClass('selected', selected).find('a').attr('aria-selected', selected); + }, + + /** + * @param {number} index - the index of the option that is being disabled + * @param {boolean} disabled - true if the option is being disabled, false if being enabled + * @param {JQuery} $lis - the 'li' element that is being modified + */ + setDisabled: function (index, disabled, $lis) { + if (!$lis) { + $lis = this.findLis().eq(this.liObj[index]); + } + + if (disabled) { + $lis.addClass('disabled').children('a').attr('href', '#').attr('tabindex', -1).attr('aria-disabled', true); + } else { + $lis.removeClass('disabled').children('a').removeAttr('href').attr('tabindex', 0).attr('aria-disabled', false); + } + }, + + isDisabled: function () { + return this.$element[0].disabled; + }, + + checkDisabled: function () { + var that = this; + + if (this.isDisabled()) { + this.$newElement.addClass('disabled'); + this.$button.addClass('disabled').attr('tabindex', -1).attr('aria-disabled', true); + } else { + if (this.$button.hasClass('disabled')) { + this.$newElement.removeClass('disabled'); + this.$button.removeClass('disabled').attr('aria-disabled', false); + } + + if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) { + this.$button.removeAttr('tabindex'); + } + } + + this.$button.click(function () { + return !that.isDisabled(); + }); + }, + + togglePlaceholder: function () { + var value = this.$element.val(); + this.$button.toggleClass('bs-placeholder', value === null || value === '' || (value.constructor === Array && value.length === 0)); + }, + + tabIndex: function () { + if (this.$element.data('tabindex') !== this.$element.attr('tabindex') && + (this.$element.attr('tabindex') !== -98 && this.$element.attr('tabindex') !== '-98')) { + this.$element.data('tabindex', this.$element.attr('tabindex')); + this.$button.attr('tabindex', this.$element.data('tabindex')); + } + + this.$element.attr('tabindex', -98); + }, + + clickListener: function () { + var that = this, + $document = $(document); + + $document.data('spaceSelect', false); + + this.$button.on('keyup', function (e) { + if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) { + e.preventDefault(); + $document.data('spaceSelect', false); + } + }); + + this.$button.on('click', function () { + that.setSize(); + }); + + this.$element.on('shown.bs.select', function () { + if (!that.options.liveSearch && !that.multiple) { + that.$menuInner.find('.selected a').focus(); + } else if (!that.multiple) { + var selectedIndex = that.liObj[that.$element[0].selectedIndex]; + + if (typeof selectedIndex !== 'number' || that.options.size === false) return; + + // scroll to selected option + var offset = that.$lis.eq(selectedIndex)[0].offsetTop - that.$menuInner[0].offsetTop; + offset = offset - that.$menuInner[0].offsetHeight/2 + that.sizeInfo.liHeight/2; + that.$menuInner[0].scrollTop = offset; + } + }); + + this.$menuInner.on('click', 'li a', function (e) { + var $this = $(this), + clickedIndex = $this.parent().data('originalIndex'), + prevValue = that.$element.val(), + prevIndex = that.$element.prop('selectedIndex'), + triggerChange = true; + + // Don't close on multi choice menu + if (that.multiple && that.options.maxOptions !== 1) { + e.stopPropagation(); + } + + e.preventDefault(); + + //Don't run if we have been disabled + if (!that.isDisabled() && !$this.parent().hasClass('disabled')) { + var $options = that.$element.find('option'), + $option = $options.eq(clickedIndex), + state = $option.prop('selected'), + $optgroup = $option.parent('optgroup'), + maxOptions = that.options.maxOptions, + maxOptionsGrp = $optgroup.data('maxOptions') || false; + + if (!that.multiple) { // Deselect all others if not multi select box + $options.prop('selected', false); + $option.prop('selected', true); + that.$menuInner.find('.selected').removeClass('selected').find('a').attr('aria-selected', false); + that.setSelected(clickedIndex, true); + } else { // Toggle the one we have chosen if we are multi select. + $option.prop('selected', !state); + that.setSelected(clickedIndex, !state); + $this.blur(); + + if (maxOptions !== false || maxOptionsGrp !== false) { + var maxReached = maxOptions < $options.filter(':selected').length, + maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length; + + if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) { + if (maxOptions && maxOptions == 1) { + $options.prop('selected', false); + $option.prop('selected', true); + that.$menuInner.find('.selected').removeClass('selected'); + that.setSelected(clickedIndex, true); + } else if (maxOptionsGrp && maxOptionsGrp == 1) { + $optgroup.find('option:selected').prop('selected', false); + $option.prop('selected', true); + var optgroupID = $this.parent().data('optgroup'); + that.$menuInner.find('[data-optgroup="' + optgroupID + '"]').removeClass('selected'); + that.setSelected(clickedIndex, true); + } else { + var maxOptionsText = typeof that.options.maxOptionsText === 'string' ? [that.options.maxOptionsText, that.options.maxOptionsText] : that.options.maxOptionsText, + maxOptionsArr = typeof maxOptionsText === 'function' ? maxOptionsText(maxOptions, maxOptionsGrp) : maxOptionsText, + maxTxt = maxOptionsArr[0].replace('{n}', maxOptions), + maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp), + $notify = $('
      '); + // If {var} is set in array, replace it + /** @deprecated */ + if (maxOptionsArr[2]) { + maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]); + maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]); + } + + $option.prop('selected', false); + + that.$menu.append($notify); + + if (maxOptions && maxReached) { + $notify.append($('
      ' + maxTxt + '
      ')); + triggerChange = false; + that.$element.trigger('maxReached.bs.select'); + } + + if (maxOptionsGrp && maxReachedGrp) { + $notify.append($('
      ' + maxTxtGrp + '
      ')); + triggerChange = false; + that.$element.trigger('maxReachedGrp.bs.select'); + } + + setTimeout(function () { + that.setSelected(clickedIndex, false); + }, 10); + + $notify.delay(750).fadeOut(300, function () { + $(this).remove(); + }); + } + } + } + } + + if (!that.multiple || (that.multiple && that.options.maxOptions === 1)) { + that.$button.focus(); + } else if (that.options.liveSearch) { + that.$searchbox.focus(); + } + + // Trigger select 'change' + if (triggerChange) { + if ((prevValue != that.$element.val() && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) { + // $option.prop('selected') is current option state (selected/unselected). state is previous option state. + changed_arguments = [clickedIndex, $option.prop('selected'), state]; + that.$element + .triggerNative('change'); + } + } + } + }); + + this.$menu.on('click', 'li.disabled a, .popover-title, .popover-title :not(.close)', function (e) { + if (e.currentTarget == this) { + e.preventDefault(); + e.stopPropagation(); + if (that.options.liveSearch && !$(e.target).hasClass('close')) { + that.$searchbox.focus(); + } else { + that.$button.focus(); + } + } + }); + + this.$menuInner.on('click', '.divider, .dropdown-header', function (e) { + e.preventDefault(); + e.stopPropagation(); + if (that.options.liveSearch) { + that.$searchbox.focus(); + } else { + that.$button.focus(); + } + }); + + this.$menu.on('click', '.popover-title .close', function () { + that.$button.click(); + }); + + this.$searchbox.on('click', function (e) { + e.stopPropagation(); + }); + + this.$menu.on('click', '.actions-btn', function (e) { + if (that.options.liveSearch) { + that.$searchbox.focus(); + } else { + that.$button.focus(); + } + + e.preventDefault(); + e.stopPropagation(); + + if ($(this).hasClass('bs-select-all')) { + that.selectAll(); + } else { + that.deselectAll(); + } + }); + + this.$element.change(function () { + that.render(false); + that.$element.trigger('changed.bs.select', changed_arguments); + changed_arguments = null; + }); + }, + + liveSearchListener: function () { + var that = this, + $no_results = $('
    • '); + + this.$button.on('click.dropdown.data-api', function () { + that.$menuInner.find('.active').removeClass('active'); + if (!!that.$searchbox.val()) { + that.$searchbox.val(''); + that.$lis.not('.is-hidden').removeClass('hidden'); + if (!!$no_results.parent().length) $no_results.remove(); + } + if (!that.multiple) that.$menuInner.find('.selected').addClass('active'); + setTimeout(function () { + that.$searchbox.focus(); + }, 10); + }); + + this.$searchbox.on('click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api', function (e) { + e.stopPropagation(); + }); + + this.$searchbox.on('input propertychange', function () { + that.$lis.not('.is-hidden').removeClass('hidden'); + that.$lis.filter('.active').removeClass('active'); + $no_results.remove(); + + if (that.$searchbox.val()) { + var $searchBase = that.$lis.not('.is-hidden, .divider, .dropdown-header'), + $hideItems; + if (that.options.liveSearchNormalize) { + $hideItems = $searchBase.not(':a' + that._searchStyle() + '("' + normalizeToBase(that.$searchbox.val()) + '")'); + } else { + $hideItems = $searchBase.not(':' + that._searchStyle() + '("' + that.$searchbox.val() + '")'); + } + + if ($hideItems.length === $searchBase.length) { + $no_results.html(that.options.noneResultsText.replace('{0}', '"' + htmlEscape(that.$searchbox.val()) + '"')); + that.$menuInner.append($no_results); + that.$lis.addClass('hidden'); + } else { + $hideItems.addClass('hidden'); + + var $lisVisible = that.$lis.not('.hidden'), + $foundDiv; + + // hide divider if first or last visible, or if followed by another divider + $lisVisible.each(function (index) { + var $this = $(this); + + if ($this.hasClass('divider')) { + if ($foundDiv === undefined) { + $this.addClass('hidden'); + } else { + if ($foundDiv) $foundDiv.addClass('hidden'); + $foundDiv = $this; + } + } else if ($this.hasClass('dropdown-header') && $lisVisible.eq(index + 1).data('optgroup') !== $this.data('optgroup')) { + $this.addClass('hidden'); + } else { + $foundDiv = null; + } + }); + if ($foundDiv) $foundDiv.addClass('hidden'); + + $searchBase.not('.hidden').first().addClass('active'); + } + } + }); + }, + + _searchStyle: function () { + var styles = { + begins: 'ibegins', + startsWith: 'ibegins' + }; + + return styles[this.options.liveSearchStyle] || 'icontains'; + }, + + val: function (value) { + if (typeof value !== 'undefined') { + this.$element.val(value); + this.render(); + + return this.$element; + } else { + return this.$element.val(); + } + }, + + changeAll: function (status) { + if (!this.multiple) return; + if (typeof status === 'undefined') status = true; + + this.findLis(); + + var $options = this.$element.find('option'), + $lisVisible = this.$lis.not('.divider, .dropdown-header, .disabled, .hidden'), + lisVisLen = $lisVisible.length, + selectedOptions = []; + + if (status) { + if ($lisVisible.filter('.selected').length === $lisVisible.length) return; + } else { + if ($lisVisible.filter('.selected').length === 0) return; + } + + $lisVisible.toggleClass('selected', status); + + for (var i = 0; i < lisVisLen; i++) { + var origIndex = $lisVisible[i].getAttribute('data-original-index'); + selectedOptions[selectedOptions.length] = $options.eq(origIndex)[0]; + } + + $(selectedOptions).prop('selected', status); + + this.render(false); + + this.togglePlaceholder(); + + this.$element + .triggerNative('change'); + }, + + selectAll: function () { + return this.changeAll(true); + }, + + deselectAll: function () { + return this.changeAll(false); + }, + + toggle: function (e) { + e = e || window.event; + + if (e) e.stopPropagation(); + + this.$button.trigger('click'); + }, + + keydown: function (e) { + var $this = $(this), + $parent = $this.is('input') ? $this.parent().parent() : $this.parent(), + $items, + that = $parent.data('this'), + index, + next, + first, + last, + prev, + nextPrev, + prevIndex, + isActive, + selector = ':not(.disabled, .hidden, .dropdown-header, .divider)', + keyCodeMap = { + 32: ' ', + 48: '0', + 49: '1', + 50: '2', + 51: '3', + 52: '4', + 53: '5', + 54: '6', + 55: '7', + 56: '8', + 57: '9', + 59: ';', + 65: 'a', + 66: 'b', + 67: 'c', + 68: 'd', + 69: 'e', + 70: 'f', + 71: 'g', + 72: 'h', + 73: 'i', + 74: 'j', + 75: 'k', + 76: 'l', + 77: 'm', + 78: 'n', + 79: 'o', + 80: 'p', + 81: 'q', + 82: 'r', + 83: 's', + 84: 't', + 85: 'u', + 86: 'v', + 87: 'w', + 88: 'x', + 89: 'y', + 90: 'z', + 96: '0', + 97: '1', + 98: '2', + 99: '3', + 100: '4', + 101: '5', + 102: '6', + 103: '7', + 104: '8', + 105: '9' + }; + + if (that.options.liveSearch) $parent = $this.parent().parent(); + + if (that.options.container) $parent = that.$menu; + + $items = $('[role="listbox"] li', $parent); + + isActive = that.$newElement.hasClass('open'); + + if (!isActive && (e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode >= 96 && e.keyCode <= 105 || e.keyCode >= 65 && e.keyCode <= 90)) { + if (!that.options.container) { + that.setSize(); + that.$menu.parent().addClass('open'); + isActive = true; + } else { + that.$button.trigger('click'); + } + that.$searchbox.focus(); + return; + } + + if (that.options.liveSearch) { + if (/(^9$|27)/.test(e.keyCode.toString(10)) && isActive) { + e.preventDefault(); + e.stopPropagation(); + that.$menuInner.click(); + that.$button.focus(); + } + // $items contains li elements when liveSearch is enabled + $items = $('[role="listbox"] li' + selector, $parent); + if (!$this.val() && !/(38|40)/.test(e.keyCode.toString(10))) { + if ($items.filter('.active').length === 0) { + $items = that.$menuInner.find('li'); + if (that.options.liveSearchNormalize) { + $items = $items.filter(':a' + that._searchStyle() + '(' + normalizeToBase(keyCodeMap[e.keyCode]) + ')'); + } else { + $items = $items.filter(':' + that._searchStyle() + '(' + keyCodeMap[e.keyCode] + ')'); + } + } + } + } + + if (!$items.length) return; + + if (/(38|40)/.test(e.keyCode.toString(10))) { + index = $items.index($items.find('a').filter(':focus').parent()); + first = $items.filter(selector).first().index(); + last = $items.filter(selector).last().index(); + next = $items.eq(index).nextAll(selector).eq(0).index(); + prev = $items.eq(index).prevAll(selector).eq(0).index(); + nextPrev = $items.eq(next).prevAll(selector).eq(0).index(); + + if (that.options.liveSearch) { + $items.each(function (i) { + if (!$(this).hasClass('disabled')) { + $(this).data('index', i); + } + }); + index = $items.index($items.filter('.active')); + first = $items.first().data('index'); + last = $items.last().data('index'); + next = $items.eq(index).nextAll().eq(0).data('index'); + prev = $items.eq(index).prevAll().eq(0).data('index'); + nextPrev = $items.eq(next).prevAll().eq(0).data('index'); + } + + prevIndex = $this.data('prevIndex'); + + if (e.keyCode == 38) { + if (that.options.liveSearch) index--; + if (index != nextPrev && index > prev) index = prev; + if (index < first) index = first; + if (index == prevIndex) index = last; + } else if (e.keyCode == 40) { + if (that.options.liveSearch) index++; + if (index == -1) index = 0; + if (index != nextPrev && index < next) index = next; + if (index > last) index = last; + if (index == prevIndex) index = first; + } + + $this.data('prevIndex', index); + + if (!that.options.liveSearch) { + $items.eq(index).children('a').focus(); + } else { + e.preventDefault(); + if (!$this.hasClass('dropdown-toggle')) { + $items.removeClass('active').eq(index).addClass('active').children('a').focus(); + $this.focus(); + } + } + + } else if (!$this.is('input')) { + var keyIndex = [], + count, + prevKey; + + $items.each(function () { + if (!$(this).hasClass('disabled')) { + if ($.trim($(this).children('a').text().toLowerCase()).substring(0, 1) == keyCodeMap[e.keyCode]) { + keyIndex.push($(this).index()); + } + } + }); + + count = $(document).data('keycount'); + count++; + $(document).data('keycount', count); + + prevKey = $.trim($(':focus').text().toLowerCase()).substring(0, 1); + + if (prevKey != keyCodeMap[e.keyCode]) { + count = 1; + $(document).data('keycount', count); + } else if (count >= keyIndex.length) { + $(document).data('keycount', 0); + if (count > keyIndex.length) count = 1; + } + + $items.eq(keyIndex[count - 1]).children('a').focus(); + } + + // Select focused option if "Enter", "Spacebar" or "Tab" (when selectOnTab is true) are pressed inside the menu. + if ((/(13|32)/.test(e.keyCode.toString(10)) || (/(^9$)/.test(e.keyCode.toString(10)) && that.options.selectOnTab)) && isActive) { + if (!/(32)/.test(e.keyCode.toString(10))) e.preventDefault(); + if (!that.options.liveSearch) { + var elem = $(':focus'); + elem.click(); + // Bring back focus for multiselects + elem.focus(); + // Prevent screen from scrolling if the user hit the spacebar + e.preventDefault(); + // Fixes spacebar selection of dropdown items in FF & IE + $(document).data('spaceSelect', true); + } else if (!/(32)/.test(e.keyCode.toString(10))) { + that.$menuInner.find('.active a').click(); + $this.focus(); + } + $(document).data('keycount', 0); + } + + if ((/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && (that.multiple || that.options.liveSearch)) || (/(27)/.test(e.keyCode.toString(10)) && !isActive)) { + that.$menu.parent().removeClass('open'); + if (that.options.container) that.$newElement.removeClass('open'); + that.$button.focus(); + } + }, + + mobile: function () { + this.$element.addClass('mobile-device'); + }, + + refresh: function () { + this.$lis = null; + this.liObj = {}; + this.reloadLi(); + this.render(); + this.checkDisabled(); + this.liHeight(true); + this.setStyle(); + this.setWidth(); + if (this.$lis) this.$searchbox.trigger('propertychange'); + + this.$element.trigger('refreshed.bs.select'); + }, + + hide: function () { + this.$newElement.hide(); + }, + + show: function () { + this.$newElement.show(); + }, + + remove: function () { + this.$newElement.remove(); + this.$element.remove(); + }, + + destroy: function () { + this.$newElement.before(this.$element).remove(); + + if (this.$bsContainer) { + this.$bsContainer.remove(); + } else { + this.$menu.remove(); + } + + this.$element + .off('.bs.select') + .removeData('selectpicker') + .removeClass('bs-select-hidden selectpicker'); + } + }; + + // SELECTPICKER PLUGIN DEFINITION + // ============================== + function Plugin(option, event) { + // get the args of the outer function.. + var args = arguments; + // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them + // to get lost/corrupted in android 2.3 and IE9 #715 #775 + var _option = option, + _event = event; + [].shift.apply(args); + + var value; + var chain = this.each(function () { + var $this = $(this); + if ($this.is('select')) { + var data = $this.data('selectpicker'), + options = typeof _option == 'object' && _option; + + if (!data) { + var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options); + config.template = $.extend({}, Selectpicker.DEFAULTS.template, ($.fn.selectpicker.defaults ? $.fn.selectpicker.defaults.template : {}), $this.data().template, options.template); + $this.data('selectpicker', (data = new Selectpicker(this, config, _event))); + } else if (options) { + for (var i in options) { + if (options.hasOwnProperty(i)) { + data.options[i] = options[i]; + } + } + } + + if (typeof _option == 'string') { + if (data[_option] instanceof Function) { + value = data[_option].apply(data, args); + } else { + value = data.options[_option]; + } + } + } + }); + + if (typeof value !== 'undefined') { + //noinspection JSUnusedAssignment + return value; + } else { + return chain; + } + } + + var old = $.fn.selectpicker; + $.fn.selectpicker = Plugin; + $.fn.selectpicker.Constructor = Selectpicker; + + // SELECTPICKER NO CONFLICT + // ======================== + $.fn.selectpicker.noConflict = function () { + $.fn.selectpicker = old; + return this; + }; + + $(document) + .data('keycount', 0) + .on('keydown.bs.select', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="listbox"], .bs-searchbox input', Selectpicker.prototype.keydown) + .on('focusin.modal', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="listbox"], .bs-searchbox input', function (e) { + e.stopPropagation(); + }); + + // SELECTPICKER DATA-API + // ===================== + $(window).on('load.bs.select.data-api', function () { + $('.selectpicker').each(function () { + var $selectpicker = $(this); + Plugin.call($selectpicker, $selectpicker.data()); + }) + }); +})(jQuery); + + +})); + +jQuery(document).ready(function($) { + "use strict"; + + /* ============================================== + VIDEOS --> + =============================================== */ + + var videos$ = $('a[id^="video_"]'); + + function videoInitHandler() + { + var el$ = $(this); + + var text = el$.text(); + var length = text.length - 11; + var caption = text.substring(0, length); + var expl = this.id.substring(6, this.id.length); + + $('')).attr("height",o),a.attr("width",n),"youtube"===s.type?a.attr("src","//www.youtube.com/embed/"+s.id+"?autoplay=1&rel=0&v="+s.id):"vimeo"===s.type?a.attr("src","//player.vimeo.com/video/"+s.id+"?autoplay=1"):"vzaar"===s.type&&a.attr("src","//view.vzaar.com/"+s.id+"/player?autoplay=true"),r=u(a).wrap('
      ').insertAfter(i.find(".owl-video")),this._playing=i.addClass("owl-video-playing"))},s.prototype.isInFullScreen=function(){var t=e.fullscreenElement||e.mozFullScreenElement||e.webkitFullscreenElement;return t&&u(t).parent().hasClass("owl-video-frame")},s.prototype.destroy=function(){var t,e;for(t in this._core.$element.off("click.owl.video"),this._handlers)this._core.$element.off(t,this._handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},u.fn.owlCarousel.Constructor.Plugins.Video=s}(window.Zepto||window.jQuery,window,document),function(a,t,e,i){var s=function(t){this.core=t,this.core.options=a.extend({},s.Defaults,this.core.options),this.swapping=!0,this.previous=i,this.next=i,this.handlers={"change.owl.carousel":a.proxy(function(t){t.namespace&&"position"==t.property.name&&(this.previous=this.core.current(),this.next=t.property.value)},this),"drag.owl.carousel dragged.owl.carousel translated.owl.carousel":a.proxy(function(t){t.namespace&&(this.swapping="translated"==t.type)},this),"translate.owl.carousel":a.proxy(function(t){t.namespace&&this.swapping&&(this.core.options.animateOut||this.core.options.animateIn)&&this.swap()},this)},this.core.$element.on(this.handlers)};s.Defaults={animateOut:!1,animateIn:!1},s.prototype.swap=function(){if(1===this.core.settings.items&&a.support.animation&&a.support.transition){this.core.speed(0);var t,e=a.proxy(this.clear,this),i=this.core.$stage.children().eq(this.previous),s=this.core.$stage.children().eq(this.next),n=this.core.settings.animateIn,o=this.core.settings.animateOut;this.core.current()!==this.previous&&(o&&(t=this.core.coordinates(this.previous)-this.core.coordinates(this.next),i.one(a.support.animation.end,e).css({left:t+"px"}).addClass("animated owl-animated-out").addClass(o)),n&&s.one(a.support.animation.end,e).addClass("animated owl-animated-in").addClass(n))}},s.prototype.clear=function(t){a(t.target).css({left:""}).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut),this.core.onTransitionEnd()},s.prototype.destroy=function(){var t,e;for(t in this.handlers)this.core.$element.off(t,this.handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},a.fn.owlCarousel.Constructor.Plugins.Animate=s}(window.Zepto||window.jQuery,window,document),function(s,n,e,t){var i=function(t){this._core=t,this._call=null,this._time=0,this._timeout=0,this._paused=!0,this._handlers={"changed.owl.carousel":s.proxy(function(t){t.namespace&&"settings"===t.property.name?this._core.settings.autoplay?this.play():this.stop():t.namespace&&"position"===t.property.name&&this._paused&&(this._time=0)},this),"initialized.owl.carousel":s.proxy(function(t){t.namespace&&this._core.settings.autoplay&&this.play()},this),"play.owl.autoplay":s.proxy(function(t,e,i){t.namespace&&this.play(e,i)},this),"stop.owl.autoplay":s.proxy(function(t){t.namespace&&this.stop()},this),"mouseover.owl.autoplay":s.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()},this),"mouseleave.owl.autoplay":s.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.play()},this),"touchstart.owl.core":s.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()},this),"touchend.owl.core":s.proxy(function(){this._core.settings.autoplayHoverPause&&this.play()},this)},this._core.$element.on(this._handlers),this._core.options=s.extend({},i.Defaults,this._core.options)};i.Defaults={autoplay:!1,autoplayTimeout:5e3,autoplayHoverPause:!1,autoplaySpeed:!1},i.prototype._next=function(t){this._call=n.setTimeout(s.proxy(this._next,this,t),this._timeout*(Math.round(this.read()/this._timeout)+1)-this.read()),this._core.is("interacting")||e.hidden||this._core.next(t||this._core.settings.autoplaySpeed)},i.prototype.read=function(){return(new Date).getTime()-this._time},i.prototype.play=function(t,e){var i;this._core.is("rotating")||this._core.enter("rotating"),t=t||this._core.settings.autoplayTimeout,i=Math.min(this._time%(this._timeout||t),t),this._paused?(this._time=this.read(),this._paused=!1):n.clearTimeout(this._call),this._time+=this.read()%t-i,this._timeout=t,this._call=n.setTimeout(s.proxy(this._next,this,e),t-i)},i.prototype.stop=function(){this._core.is("rotating")&&(this._time=0,this._paused=!0,n.clearTimeout(this._call),this._core.leave("rotating"))},i.prototype.pause=function(){this._core.is("rotating")&&!this._paused&&(this._time=this.read(),this._paused=!0,n.clearTimeout(this._call))},i.prototype.destroy=function(){var t,e;for(t in this.stop(),this._handlers)this._core.$element.off(t,this._handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},s.fn.owlCarousel.Constructor.Plugins.autoplay=i}(window.Zepto||window.jQuery,window,document),function(o,t,e,i){"use strict";var s=function(t){this._core=t,this._initialized=!1,this._pages=[],this._controls={},this._templates=[],this.$element=this._core.$element,this._overrides={next:this._core.next,prev:this._core.prev,to:this._core.to},this._handlers={"prepared.owl.carousel":o.proxy(function(t){t.namespace&&this._core.settings.dotsData&&this._templates.push('
      '+o(t.content).find("[data-dot]").addBack("[data-dot]").attr("data-dot")+"
      ")},this),"added.owl.carousel":o.proxy(function(t){t.namespace&&this._core.settings.dotsData&&this._templates.splice(t.position,0,this._templates.pop())},this),"remove.owl.carousel":o.proxy(function(t){t.namespace&&this._core.settings.dotsData&&this._templates.splice(t.position,1)},this),"changed.owl.carousel":o.proxy(function(t){t.namespace&&"position"==t.property.name&&this.draw()},this),"initialized.owl.carousel":o.proxy(function(t){t.namespace&&!this._initialized&&(this._core.trigger("initialize",null,"navigation"),this.initialize(),this.update(),this.draw(),this._initialized=!0,this._core.trigger("initialized",null,"navigation"))},this),"refreshed.owl.carousel":o.proxy(function(t){t.namespace&&this._initialized&&(this._core.trigger("refresh",null,"navigation"),this.update(),this.draw(),this._core.trigger("refreshed",null,"navigation"))},this)},this._core.options=o.extend({},s.Defaults,this._core.options),this.$element.on(this._handlers)};s.Defaults={nav:!1,navText:['',''],navSpeed:!1,navElement:'button type="button" role="presentation"',navContainer:!1,navContainerClass:"owl-nav",navClass:["owl-prev","owl-next"],slideBy:1,dotClass:"owl-dot",dotsClass:"owl-dots",dots:!0,dotsEach:!1,dotsData:!1,dotsSpeed:!1,dotsContainer:!1},s.prototype.initialize=function(){var t,i=this._core.settings;for(t in this._controls.$relative=(i.navContainer?o(i.navContainer):o("
      ").addClass(i.navContainerClass).appendTo(this.$element)).addClass("disabled"),this._controls.$previous=o("<"+i.navElement+">").addClass(i.navClass[0]).html(i.navText[0]).prependTo(this._controls.$relative).on("click",o.proxy(function(t){this.prev(i.navSpeed)},this)),this._controls.$next=o("<"+i.navElement+">").addClass(i.navClass[1]).html(i.navText[1]).appendTo(this._controls.$relative).on("click",o.proxy(function(t){this.next(i.navSpeed)},this)),i.dotsData||(this._templates=[o('