diff --git a/.gitignore b/.gitignore index e9150297a..150b05bdc 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,19 @@ ################################################################################ /.vs +/packages +/PlexRequests.Api +/PlexRequests.Api.Interfaces +/PlexRequests.Api.Models +/PlexRequests.Core +/PlexRequests.Core.Tests +/PlexRequests.Helpers +/PlexRequests.Helpers.Tests +/PlexRequests.Services +/PlexRequests.Services.Tests +/PlexRequests.UI.Tests +/PlexRequests.UI +/PlexRequests.Store +/_NCrunch_PlexRequests +/PlexRequests.v2.ncrunchsolution +/PlexRequests.ncrunchsolution.user diff --git a/fonts/.DS_Store b/fonts/.DS_Store new file mode 100644 index 000000000..5008ddfcf Binary files /dev/null and b/fonts/.DS_Store differ diff --git a/fonts/FontAwesome.otf b/fonts/FontAwesome.otf new file mode 100644 index 000000000..3461e3fce Binary files /dev/null and b/fonts/FontAwesome.otf differ diff --git a/fonts/fontawesome-webfont.eot b/fonts/fontawesome-webfont.eot new file mode 100644 index 000000000..6cfd56609 Binary files /dev/null and b/fonts/fontawesome-webfont.eot differ diff --git a/fonts/fontawesome-webfont.svg b/fonts/fontawesome-webfont.svg new file mode 100644 index 000000000..a9f846950 --- /dev/null +++ b/fonts/fontawesome-webfont.svg @@ -0,0 +1,504 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/fonts/fontawesome-webfont.ttf b/fonts/fontawesome-webfont.ttf new file mode 100644 index 000000000..5cd6cff6d Binary files /dev/null and b/fonts/fontawesome-webfont.ttf differ diff --git a/fonts/fontawesome-webfont.woff b/fonts/fontawesome-webfont.woff new file mode 100644 index 000000000..9eaecb379 Binary files /dev/null and b/fonts/fontawesome-webfont.woff differ diff --git a/img/.DS_Store b/img/.DS_Store new file mode 100644 index 000000000..5008ddfcf Binary files /dev/null and b/img/.DS_Store differ diff --git a/img/Portfolio-pic1.jpg b/img/Portfolio-pic1.jpg new file mode 100644 index 000000000..49ab58992 Binary files /dev/null and b/img/Portfolio-pic1.jpg differ diff --git a/img/Portfolio-pic2.jpg b/img/Portfolio-pic2.jpg new file mode 100644 index 000000000..98e64961d Binary files /dev/null and b/img/Portfolio-pic2.jpg differ diff --git a/img/Portfolio-pic3.jpg b/img/Portfolio-pic3.jpg new file mode 100644 index 000000000..ca02fe5f6 Binary files /dev/null and b/img/Portfolio-pic3.jpg differ diff --git a/img/Portfolio-pic4.jpg b/img/Portfolio-pic4.jpg new file mode 100644 index 000000000..16bf93eb8 Binary files /dev/null and b/img/Portfolio-pic4.jpg differ diff --git a/img/Portfolio-pic5.jpg b/img/Portfolio-pic5.jpg new file mode 100644 index 000000000..d2afd07e2 Binary files /dev/null and b/img/Portfolio-pic5.jpg differ diff --git a/img/Portfolio-pic6.jpg b/img/Portfolio-pic6.jpg new file mode 100644 index 000000000..c0ddae99b Binary files /dev/null and b/img/Portfolio-pic6.jpg differ diff --git a/img/Thumbs.db b/img/Thumbs.db new file mode 100644 index 000000000..e0e4ff42d Binary files /dev/null and b/img/Thumbs.db differ diff --git a/img/bg-map.png b/img/bg-map.png new file mode 100644 index 000000000..d4954963c Binary files /dev/null and b/img/bg-map.png differ diff --git a/img/c-liogo1.png b/img/c-liogo1.png new file mode 100644 index 000000000..e18369db9 Binary files /dev/null and b/img/c-liogo1.png differ diff --git a/img/c-liogo2.png b/img/c-liogo2.png new file mode 100644 index 000000000..0ed9959c9 Binary files /dev/null and b/img/c-liogo2.png differ diff --git a/img/c-liogo3.png b/img/c-liogo3.png new file mode 100644 index 000000000..573ce0926 Binary files /dev/null and b/img/c-liogo3.png differ diff --git a/img/c-liogo4.png b/img/c-liogo4.png new file mode 100644 index 000000000..f09a3252c Binary files /dev/null and b/img/c-liogo4.png differ diff --git a/img/c-liogo5.png b/img/c-liogo5.png new file mode 100644 index 000000000..9c6f3adbf Binary files /dev/null and b/img/c-liogo5.png differ diff --git a/img/client-pic1.jpg b/img/client-pic1.jpg new file mode 100644 index 000000000..e20c8fc06 Binary files /dev/null and b/img/client-pic1.jpg differ diff --git a/img/footer-logo.png b/img/footer-logo.png new file mode 100644 index 000000000..ff2c44d5f Binary files /dev/null and b/img/footer-logo.png differ diff --git a/img/glyphicons-halflings-white.png b/img/glyphicons-halflings-white.png new file mode 100644 index 000000000..3bf6484a2 Binary files /dev/null and b/img/glyphicons-halflings-white.png differ diff --git a/img/glyphicons-halflings.png b/img/glyphicons-halflings.png new file mode 100644 index 000000000..a99699932 Binary files /dev/null and b/img/glyphicons-halflings.png differ diff --git a/img/iPad.png b/img/iPad.png new file mode 100644 index 000000000..c46a5540e Binary files /dev/null and b/img/iPad.png differ diff --git a/img/imac.png b/img/imac.png new file mode 100644 index 000000000..d59a1d598 Binary files /dev/null and b/img/imac.png differ diff --git a/img/iphone.png b/img/iphone.png new file mode 100644 index 000000000..4ac488e79 Binary files /dev/null and b/img/iphone.png differ diff --git a/img/list-style.png b/img/list-style.png new file mode 100644 index 000000000..472f557bd Binary files /dev/null and b/img/list-style.png differ diff --git a/img/logo.png b/img/logo.png new file mode 100644 index 000000000..c0537a14d Binary files /dev/null and b/img/logo.png differ diff --git a/img/macbook-pro.png b/img/macbook-pro.png new file mode 100644 index 000000000..b028f4f40 Binary files /dev/null and b/img/macbook-pro.png differ diff --git a/img/pw_maze_black.png b/img/pw_maze_black.png new file mode 100644 index 000000000..20922820f Binary files /dev/null and b/img/pw_maze_black.png differ diff --git a/img/pw_maze_black_2X.png b/img/pw_maze_black_2X.png new file mode 100644 index 000000000..4863b2279 Binary files /dev/null and b/img/pw_maze_black_2X.png differ diff --git a/img/res_nav_click.png b/img/res_nav_click.png new file mode 100644 index 000000000..f7c66cbe4 Binary files /dev/null and b/img/res_nav_click.png differ diff --git a/img/section-bg1.jpg b/img/section-bg1.jpg new file mode 100644 index 000000000..400f47688 Binary files /dev/null and b/img/section-bg1.jpg differ diff --git a/img/section-bg2.jpg b/img/section-bg2.jpg new file mode 100644 index 000000000..082b71470 Binary files /dev/null and b/img/section-bg2.jpg differ diff --git a/img/small-logo.png b/img/small-logo.png new file mode 100644 index 000000000..19b17bcdb Binary files /dev/null and b/img/small-logo.png differ diff --git a/img/team-leader-pic1.jpg b/img/team-leader-pic1.jpg new file mode 100644 index 000000000..bd6630b6f Binary files /dev/null and b/img/team-leader-pic1.jpg differ diff --git a/img/team-leader-pic2.jpg b/img/team-leader-pic2.jpg new file mode 100644 index 000000000..53615e50d Binary files /dev/null and b/img/team-leader-pic2.jpg differ diff --git a/img/team-leader-pic3.jpg b/img/team-leader-pic3.jpg new file mode 100644 index 000000000..530283e85 Binary files /dev/null and b/img/team-leader-pic3.jpg differ diff --git a/img/wp.png b/img/wp.png new file mode 100644 index 000000000..8e33bcf0f Binary files /dev/null and b/img/wp.png differ diff --git a/index.html b/index.html index 97e01ec0c..e69323705 100644 --- a/index.html +++ b/index.html @@ -1,64 +1,449 @@ - + - - - - Plexrequests.net by tidusjar + + + - - - - - - -
-
-

Plexrequests.net

-

Want a Movie or TV Show on Plex? Use Plex Requests!

+Homepage + + -

View the Project on GitHub tidusjar/PlexRequests.Net

+ + + + + + + + + + + + + + + + + + -
+ + + + + + + +
+
+

Services

+
We offer exceptional service with complimentary hugs.
+
+
+
+
+ +
+
+

branding & identity

+

Proin iaculis purus digni consequat sem digni ssim. Donec entum digni ssim.

+
+
+
+
+ +
+
+

web development

+

Proin iaculis purus consequat sem digni ssim. Digni ssim porttitora .

+
+
+
+
+ +
+
+

mobile design

+

Proin iaculis purus consequat digni sem digni ssim. Purus donec porttitora entum.

+
+
+
+
+ +
+
+

24/7 Support

+

Proin iaculis purus consequat sem digni ssim. Sem porttitora entum.

+
+
+
+
+ +
+ +
+
+
+ + + +
+
+
+
+ +
+ +
+
+
+ + + +
+
+

Portfolio

+
Fresh portfolio of designs that will keep you wanting more.
+ + +
+
+
+ +

Foto Album

+

Print Design

+
+
+ +

Luca Theme

+

Web Design

+
+
+ +

Uni Sans

+

Branding

+
+
+ +

Vinyl Record

+

Photography

+
+
+ +

Hipster

+

Branding

+
+
+ +

Windmills

+

Photography

+
+
+
+ + +
+
+ +
+
+

It was a pleasure to work with the guys at Knight Studio. They made sure +we were well fed and drunk all the time!

+
+
+ +
+
+
+
+ +
+
+
+
+

team

+
Take a closer look into our amazing team. We won’t bite.
+
+
+
+
+ +
    +
  • +
  • +
  • +
  • +
+
+

Walter White

+ Chief Executive Officer +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin consequat sollicitudin cursus. Dolor sit amet, consectetur adipiscing elit proin consequat.

+
+
+
+
+ +
    +
  • +
  • +
  • +
  • +
+
+

Jesse Pinkman

+ Product Manager +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin consequat sollicitudin cursus. Dolor sit amet, consectetur adipiscing elit proin consequat.

+
+
+
+
+ +
    +
  • +
  • +
  • +
  • +
+
+

Skyler white

+ Accountant +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin consequat sollicitudin cursus. Dolor sit amet, consectetur adipiscing elit proin consequat.

+
+
+
+
+ + + +
+
+

Let’s Talk Business.

+
+
+
+
+ +
+
+
+

Address:

+ 308 Negra Arroyo Lane
Albuquerque, New Mexico, 87111.
+
+
+

Phone:

+ 1-800-BOO-YAHH +
+ +
+

Hours:

+ Monday - Thursday: 10am - 6pm
Friday: People work on Fridays now?
Saturday - Sunday: Best not to ask.
+
+ +
+
+
+ + + + +
+
+
+
+
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/js/.DS_Store b/js/.DS_Store new file mode 100644 index 000000000..5008ddfcf Binary files /dev/null and b/js/.DS_Store differ diff --git a/js/bootstrap.js b/js/bootstrap.js new file mode 100644 index 000000000..ef04057fb --- /dev/null +++ b/js/bootstrap.js @@ -0,0 +1,1998 @@ +/* ======================================================================== + * Bootstrap: alert.js v3.0.3 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.hasClass('alert') ? $this : $this.parent() + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + $parent.trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one($.support.transition.end, removeElement) + .emulateTransitionEnd(150) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + var old = $.fn.alert + + $.fn.alert = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.0.3 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + } + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state = state + 'Text' + + if (!data.resetText) $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout(function () { + state == 'loadingText' ? + $el.addClass(d).attr(d, d) : + $el.removeClass(d).removeAttr(d); + }, 0) + } + + Button.prototype.toggle = function () { + var $parent = this.$element.closest('[data-toggle="buttons"]') + var changed = true + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') === 'radio') { + // see if clicking on current one + if ($input.prop('checked') && this.$element.hasClass('active')) + changed = false + else + $parent.find('.active').removeClass('active') + } + if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') + } + + if (changed) this.$element.toggleClass('active') + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + var old = $.fn.button + + $.fn.button = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + e.preventDefault() + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.0.3 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = + this.sliding = + this.interval = + this.$active = + this.$items = null + + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.DEFAULTS = { + interval: 5000 + , pause: 'hover' + , wrap: true + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getActiveIndex = function () { + this.$active = this.$element.find('.item.active') + this.$items = this.$active.parent().children() + + return this.$items.index(this.$active) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getActiveIndex() + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition.end) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || $active[type]() + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var fallback = type == 'next' ? 'first' : 'last' + var that = this + + if (!$next.length) { + if (!this.options.wrap) return + $next = this.$element.find('.item')[fallback]() + } + + this.sliding = true + + isCycling && this.pause() + + var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction }) + + if ($next.hasClass('active')) return + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + this.$element.one('slid.bs.carousel', function () { + var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) + $nextIndicator && $nextIndicator.addClass('active') + }) + } + + if ($.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0) + }) + .emulateTransitionEnd(600) + } else { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid.bs.carousel') + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + var old = $.fn.carousel + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { + var $this = $(this), href + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + $target.carousel(options) + + if (slideIndex = $this.attr('data-slide-to')) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + }) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + $carousel.carousel($carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.0.3 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle=dropdown]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $('