/*!
* Beagle v1.8.0
* https://foxythemes.net
*
* Copyright (c) 2020 Foxy Themes
*/
var App = (function () {
'use strict';
//Basic Config
var config = {
assetsPath: 'assets',
imgPath: 'img',
jsPath: 'js',
libsPath: 'lib',
leftSidebarSlideSpeed: 200,
leftSidebarToggleSpeed: 300,
enableLeftSidebar: true,
enableSwipe: true,
swipeTreshold: 100,
scrollTop: true,
openRightSidebarClass: 'open-right-sidebar',
openLeftSidebarClass: 'open-left-sidebar',
disabledLeftSidebarClass: 'be-left-sidebar-disabled',
offCanvasLeftSidebarClass: 'be-offcanvas-menu',
offCanvasLeftSidebarMobileClass: 'be-offcanvas-menu-sm',
topHeaderMenuClass: 'be-top-menu',
closeRsOnClickOutside: true,
removeLeftSidebarClass: 'be-nosidebar-left',
collapsibleSidebarClass: 'be-collapsible-sidebar',
collapsibleSidebarCollapsedClass: 'be-collapsible-sidebar-collapsed',
openLeftSidebarOnClick: true,
transitionClass: 'be-animate',
openSidebarDelay: 400
};
var colors = {};
var scrollers = {};
var body,
wrapper,
topNavbar,
leftSidebar,
rightSidebar,
asideDiv,
notificationsDiv,
toggleLeftSidebarButton,
openSidebar;
//Perfect scrollbar variables
var ps_be_scroller_notifications,
ps_left_sidebar,
ps_be_scroller_left_sidebar,
ps_sub_menu_scroller,
ps_chat_scroll,
ps_todo_scroll,
ps_settings_scroll,
ps_messages_scroll,
ps_aside_scroll;
//Get the template css colors into js vars
function getColor( c ){
var tmp = $("
", { class: c }).appendTo("body");
var color = tmp.css("background-color");
tmp.remove();
return color;
}
// Refresh scroller
function updateScroller(ps_object){
if( typeof ps_object !== 'undefined' ) {
ps_object.update();
}
}
// Destroy scroller
function destroyScroller(ps_object){
ps_object.destroy();
}
// Initialize scroller
function initScroller(domObject) {
if( typeof domObject[0] !== 'undefined' ) {
return new PerfectScrollbar(domObject[0], {
wheelPropagation: false
});
}
}
//Core private functions
function leftSidebarInit(){
var firstAnchor = $(".sidebar-elements > li > a", leftSidebar);
var anchor = $(".sidebar-elements li a", leftSidebar);
var lsc = $(".left-sidebar-scroll", leftSidebar);
var lsToggle = $(".left-sidebar-toggle", leftSidebar);
var openLeftSidebarOnClick = config.openLeftSidebarOnClick ? true : false;
// Collapsible sidebar toggle functionality
function toggleSideBar(){
var button = $(".be-toggle-left-sidebar");
button.on("click", function(){
if( wrapper.hasClass( config.collapsibleSidebarCollapsedClass ) ) {
wrapper.removeClass( config.collapsibleSidebarCollapsedClass );
$("li.open", leftSidebar).removeClass("open");
$("li.active", leftSidebar).parents(".parent").addClass("active open");
leftSidebar.trigger( "shown.left-sidebar.collapse" );
if (typeof ps_be_scroller_left_sidebar === "undefined" || !ps_be_scroller_left_sidebar || !ps_be_scroller_left_sidebar.nodeName) {
ps_be_scroller_left_sidebar = initScroller($(".be-scroller", leftSidebar));
}
destroyScroller(ps_be_scroller_left_sidebar);
// Destroy Perfect Scrollbar collapsed instance
if (typeof ps_sub_menu_scroller !== "undefined") {
destroyScroller(ps_sub_menu_scroller);
}
} else {
wrapper.addClass( config.collapsibleSidebarCollapsedClass );
$("li.active", leftSidebar).parents(".parent").removeClass("open");
$("li.open", leftSidebar).removeClass("open");
leftSidebar.trigger( "hidden.left-sidebar.collapse" );
}
});
}
// Tooltip sidebar funcionality
function tooltipSidebar(){
var menu = $(".sidebar-elements > li > a", leftSidebar);
for(var i = 0; i <= menu.length; i++ ){
var _self = menu[i];
var title = $("> span", _self).text();
$(_self).attr({
'data-toggle': 'tooltip',
'data-placement': 'right',
'title': title
});
$(_self).tooltip({
trigger: 'manual'
});
}
menu.on('mouseenter', function(){
if(!$.isSm() && wrapper.hasClass(config.collapsibleSidebarCollapsedClass)){
$(this).tooltip('show');
}
});
menu.on('mouseleave', function(){
$(this).tooltip('hide');
});
}
// Collapsed sidebar submenu title
function syncSubMenu( item ){
var elements;
if( typeof item !== "undefined" ) {
elements = item;
} else {
elements = $(".sidebar-elements > li", leftSidebar);
}
$.each( elements, function(){
var title = $(this).find("> a span").html();
var ul = $(this).find("> ul");
var subEls = $("> li", ul);
title = $('
' + title + '');
var subContainer = $('
');
if( !ul.find("> li.title").length ){
ul.prepend( title );
subEls.appendTo( subContainer.find(".content ul") );
subContainer.appendTo( ul );
}
});
}
// Return boolean whether the sidebar is collapsed or not
function isCollapsed(){
return wrapper.hasClass( config.collapsibleSidebarCollapsedClass );
}
// Return true if the collapsible left sidebar is enabled
function isCollapsible(){
return wrapper.hasClass( config.collapsibleSidebarClass );
}
// Close submenu function
function closeSubMenu( subMenu, event ){
var target = $( event.currentTarget );
var li = $( subMenu ).parent();
var openChildren = $( 'li.open', li );
var clickOutside = !target.closest( leftSidebar ).length;
var slideSpeed = config.leftSidebarSlideSpeed;
var isFirstLevel = target.parents().eq( 1 ).hasClass( 'sidebar-elements' );
// If left sidebar is collapsed, is not small device
// and the trigger element is first level
// or click outside the left sidebar
if ( !$.isSm() && isCollapsed() && ( isFirstLevel || clickOutside ) ){
li.removeClass( 'open' );
subMenu.removeClass( 'visible' );
openChildren.removeClass( 'open' ).removeAttr( 'style' );
} else { // If not execute classic slide interaction
subMenu.slideUp({ duration: slideSpeed, complete: function(){
li.removeClass( 'open' );
$( this ).removeAttr( 'style' );
// Close opened child submenus
openChildren.removeClass( 'open' ).removeAttr( 'style' );
if( wrapper.hasClass("be-fixed-sidebar") && !$.isSm() ){
updateScroller(ps_left_sidebar);
}
}});
}
}
// Open submenu function
function openSubMenu( anchor, event ){
var _el = $( anchor );
var li = $( _el ).parent();
var subMenu = $( _el ).next();
var slideSpeed = config.leftSidebarSlideSpeed;
var isFirstLevel = $( event.currentTarget ).parents().eq( 1 ).hasClass( 'sidebar-elements' );
// Get the open sub menus
var openSubMenus = li.siblings( '.open' );
// If there are open sub menus close them
if( openSubMenus ) {
closeSubMenu( $( '> ul', openSubMenus ), event );
}
// If left sidebar is collapsed, is not small device
// and the trigger element is first level
if ( !$.isSm() && isCollapsed() && isFirstLevel ){
li.addClass( 'open' );
subMenu.addClass( 'visible' );
//Renew Perfect Scroller instance
if (typeof ps_sub_menu_scroller !== "undefined") {
destroyScroller(ps_sub_menu_scroller);
}
if (typeof ps_sub_menu_scroller === "undefined" || !ps_sub_menu_scroller || !ps_sub_menu_scroller.nodeName) {
ps_sub_menu_scroller = initScroller(li.find('.be-scroller'));
}
$(window).resize(function () {
waitForFinalEvent(function(){
if( !$.isXs() ){
if (typeof ps_sub_menu_scroller !== "undefined") {
updateScroller(ps_sub_menu_scroller);
}
}
}, 500, "am_check_phone_classes");
});
} else { // If not execute classic slide interaction
subMenu.slideDown({ duration: slideSpeed, complete: function(){
li.addClass( 'open' );
$( this ).removeAttr( 'style' );
if( wrapper.hasClass("be-fixed-sidebar") && !$.isSm() ){
updateScroller(ps_left_sidebar);
}
}});
}
}
// Execute if collapsible sidebar is enabled
if ( isCollapsible() ){
/*Create sub menu elements*/
syncSubMenu();
toggleSideBar();
tooltipSidebar();
if( !openLeftSidebarOnClick ){
/*Open sub-menu on hover*/
firstAnchor.on('mouseover',function( event ){
if( isCollapsed() ) {
openSubMenu( this, event );
}
});
/*Open sub-menu on click (fix for touch devices)*/
firstAnchor.on('touchstart',function( event ){
var anchor = $( this );
var li = anchor.parent();
var subMenu = anchor.next();
if( isCollapsed() && !$.isSm() ) {
if( li.hasClass('open') ) {
closeSubMenu( subMenu, event );
} else {
openSubMenu( this, event );
}
if( $( this ).next().is( 'ul' ) ) {
event.preventDefault();
}
}
});
/*Sub-menu delay on mouse leave*/
firstAnchor.on('mouseleave',function( event ){
var _self = $( this );
var _li = _self.parent();
var subMenu = _li.find( '> ul' );
if( !$.isSm() && isCollapsed() ){
//If mouse is over sub menu attach an additional mouseleave event to submenu
if ( subMenu.length > 0 ){
setTimeout(function(){
if( subMenu.is( ':hover' ) ){
subMenu.on( 'mouseleave', function(){
setTimeout(function(){
if( !_self.is( ':hover' ) ){
closeSubMenu( subMenu, event );
subMenu.off( 'mouseleave' );
}
}, 300);
});
}else{
closeSubMenu( subMenu, event );
}
}, 300);
}else{
_li.removeClass( 'open' );
}
}
});
}
/*Close sidebar on click outside*/
$( document ).on("mousedown touchstart",function( event ){
if ( !$( event.target ).closest( leftSidebar ).length && !$.isSm() ) {
closeSubMenu( $( "ul.visible", leftSidebar), event );
}
});
}
/*Open sub-menu functionality*/
anchor.on("click",function( event ){
var $el = $(this), $open;
var $li = $el.parent();
var $subMenu = $el.next();
var isFirstLevel = $el.parents().eq(1).hasClass('sidebar-elements');
// Get the open menus
$open = $li.siblings(".open");
if( $li.hasClass('open') ){
closeSubMenu( $subMenu, event );
}else{
openSubMenu( this, event );
}
//If current element has children stop link action
if( $el.next().is('ul') ){
event.preventDefault();
}
});
/*Calculate sidebar tree active & open classes*/
if ( wrapper.hasClass( config.collapsibleSidebarCollapsedClass ) ){
$("li.active", leftSidebar).parents(".parent").addClass("active");
} else {
$("li.active", leftSidebar).parents(".parent").addClass("active open");
}
/* Add classes if top menu is present */
if( topNavbar.find('.container-fluid > .navbar-collapse').length && leftSidebar.length ) {
wrapper.addClass( config.offCanvasLeftSidebarClass ).addClass( config.offCanvasLeftSidebarMobileClass );
wrapper.addClass( config.topHeaderMenuClass );
toggleLeftSidebarButton = $('');
$('.be-navbar-header', topNavbar).prepend(toggleLeftSidebarButton);
}
/*Scrollbar plugin init when left sidebar is fixed*/
if( wrapper.hasClass("be-fixed-sidebar") ){
if( !$.isSm() || wrapper.hasClass( config.offCanvasLeftSidebarClass ) ) {
if (typeof ps_left_sidebar === "undefined" || !ps_left_sidebar || !ps_left_sidebar.nodeName) {
ps_left_sidebar = initScroller(lsc);
}
}
/*Update scrollbar height on window resize*/
$(window).resize(function () {
waitForFinalEvent(function(){
if( $.isSm() && !wrapper.hasClass( config.offCanvasLeftSidebarClass ) ) {
destroyScroller(ps_left_sidebar);
} else {
if( lsc.hasClass('ps') ) {
updateScroller(ps_left_sidebar);
} else {
if (typeof ps_left_sidebar === "undefined" || !ps_left_sidebar || !ps_left_sidebar.nodeName) {
ps_left_sidebar = initScroller(lsc);
}
}
}
}, 500, "be_update_scroller");
});
}
/*Toggle sidebar on small devices*/
lsToggle.on('click',function( e ){
var spacer = $(this).next('.left-sidebar-spacer'), toggleBtn = $(this);
toggleBtn.toggleClass('open');
spacer.slideToggle(config.leftSidebarToggleSpeed, function(){
$(this).removeAttr('style').toggleClass('open');
});
e.preventDefault();
});
/*Off canvas menu*/
function leftSidebarOffCanvas() {
/*Open Sidebar with toggle button*/
toggleLeftSidebarButton.on("click", function(e){
if ( openSidebar && body.hasClass(config.openLeftSidebarClass) ) {
body.removeClass(config.openLeftSidebarClass);
sidebarDelay();
} else {
body.addClass( config.openLeftSidebarClass + " " + config.transitionClass);
openSidebar = true;
}
e.preventDefault();
});
/*Close sidebar on click outside*/
$( document ).on("mousedown touchstart",function( e ){
if ( !$( e.target ).closest( leftSidebar ).length && !$( e.target ).closest( toggleLeftSidebarButton ).length && body.hasClass( config.openLeftSidebarClass ) ) {
body.removeClass( config.openLeftSidebarClass );
sidebarDelay();
}
});
}
// Left sidebar off-canvas
if ( wrapper.hasClass(config.offCanvasLeftSidebarClass) ) {
leftSidebarOffCanvas();
}
}
function rightSidebarInit(){
var rsChatScrollbar = $(".be-scroller-chat", rightSidebar);
var rsTodoScrollbar = $(".be-scroller-todo", rightSidebar);
var rsSettingsScrollbar = $(".be-scroller-settings", rightSidebar);
function oSidebar(){
body.addClass( config.openRightSidebarClass + " " + config.transitionClass );
openSidebar = true;
}
function cSidebar(){
body.removeClass( config.openRightSidebarClass ).addClass( config.transitionClass );
sidebarDelay();
}
if( rightSidebar.length > 0 ){
/*Open-Sidebar when click on topbar button*/
$('.be-toggle-right-sidebar').on("click", function(e){
if( openSidebar && body.hasClass( config.openRightSidebarClass ) ){
cSidebar();
}else if( !openSidebar ){
oSidebar();
}
e.preventDefault();
});
/*Close sidebar on click outside*/
$( document ).on("mousedown touchstart",function( e ){
if ( !$( e.target ).closest( rightSidebar ).length && body.hasClass( config.openRightSidebarClass ) && (config.closeRsOnClickOutside || $.isSm()) ) {
cSidebar();
}
});
}
if ((typeof ps_chat_scroll === "undefined" || !ps_chat_scroll || !ps_chat_scroll.nodeName) && rsChatScrollbar.length) {
ps_chat_scroll = initScroller(rsChatScrollbar);
}
if ((typeof ps_todo_scroll === "undefined" || !ps_todo_scroll || !ps_todo_scroll.nodeName) && rsTodoScrollbar.length) {
ps_todo_scroll = initScroller(rsTodoScrollbar);
}
if ((typeof ps_settings_scroll === "undefined" || !ps_settings_scroll || !ps_settings_scroll.nodeName) && rsSettingsScrollbar.length) {
ps_settings_scroll = initScroller(rsSettingsScrollbar);
}
/*Update scrollbar height on window resize*/
$(window).resize(function () {
waitForFinalEvent(function(){
updateScroller(ps_chat_scroll);
updateScroller(ps_todo_scroll);
updateScroller(ps_settings_scroll);
}, 500, "be_rs_update_scroller");
});
/*Update scrollbar when click on a tab*/
$('a[data-toggle="tab"]', rightSidebar).on('shown.bs.tab', function (e) {
updateScroller(ps_chat_scroll);
updateScroller(ps_todo_scroll);
updateScroller(ps_settings_scroll);
});
}
function sidebarDelay(){
openSidebar = true;
setTimeout(function(){
openSidebar = false;
}, config.openSidebarDelay );
}
function sidebarSwipe(){
/*Open sidedar on swipe*/
wrapper.swipe( {
allowPageScroll: "vertical",
preventDefaultEvents: false,
fallbackToMouseEvents: false,
swipeLeft: function(e){
if( !openSidebar && rightSidebar.length > 0 ){
body.addClass( config.openRightSidebarClass + " " + config.transitionClass );
openSidebar = true;
}
},
threshold: config.swipeTreshold
});
}
function chatWidget(){
var chat = $(".be-right-sidebar .tab-chat");
var contactsEl = $(".chat-contacts", chat);
var conversationEl = $(".chat-window", chat);
var messagesContainer = $(".chat-messages", conversationEl);
var messagesList = $(".content ul", messagesContainer);
var messagesScroll = $(".be-scroller-messages", messagesContainer);
var chatInputContainer = $(".chat-input", conversationEl);
var chatInput = $("input", chatInputContainer);
var chatInputSendButton = $(".send-msg", chatInputContainer);
function openChatWindow(){
if( !chat.hasClass("chat-opened") ){
chat.addClass("chat-opened");
if (typeof ps_messages_scroll === "undefined" || !ps_messages_scroll || !ps_messages_scroll.nodeName) {
ps_messages_scroll = initScroller(messagesScroll);
}
}
}
function closeChatWindow(){
if( chat.hasClass("chat-opened") ){
chat.removeClass("chat-opened");
}
}
/*Open Conversation Window when click on chat user*/
$(".user a", contactsEl).on('click',function( e ){
openChatWindow();
e.preventDefault();
});
/*Close chat conv window*/
$(".title .return", conversationEl).on('click',function( e ){
closeChatWindow();
scrollerInit();
});
/*Send message*/
function sendMsg(msg, self){
var $message = $('
');
if( msg != '' ){
$('
' + msg + '
').appendTo($message);
$message.appendTo(messagesList);
messagesScroll.stop().animate({
'scrollTop': messagesScroll.prop("scrollHeight")
}, 900, 'swing');
updateScroller(ps_messages_scroll);
}
}
/*Send msg when click on 'send' button or press 'Enter'*/
chatInput.keypress(function(event){
var keycode = (event.keyCode ? event.keyCode : event.which);
var msg = $(this).val();
if(keycode == '13'){
sendMsg(msg, true);
$(this).val("");
}
event.stopPropagation();
});
chatInputSendButton.on('click',function(){
var msg = chatInput.val();
sendMsg(msg, true);
chatInput.val("");
});
}
function scrollerInit(){
if (typeof ps_be_scroller_notifications === "undefined" || !ps_be_scroller_notifications || !ps_be_scroller_notifications.nodeName) {
ps_be_scroller_notifications = initScroller(notificationsDiv);
}
}
function scrollTopButton(){
var offset = 220;
var duration = 500;
var button = $('
');
button.appendTo("body");
$(window).on('scroll',function() {
if ( $(this).scrollTop() > offset ) {
button.fadeIn(duration);
} else {
button.fadeOut(duration);
}
});
button.on('touchstart mouseup',function( e ) {
$( 'html, body' ).animate({ scrollTop: 0 }, duration);
e.preventDefault();
});
}
//Add and remove active class on left sidebar
function activeItemLeftSidebar(menu_item){
var firstAnchor = menu_item;
var li = $(firstAnchor).parent();
var menu = $(li).parents('li');
if( !li.hasClass('active') ){
$('li.active', leftSidebar).removeClass('active');
$(menu).addClass('active');
$(li).addClass('active');
}
}
function initAsidePS() {
var pas = asideDiv;
ps_aside_scroll = initScroller(asideDiv);
$(window).resize(function () {
if( $.isSm() && !wrapper.hasClass( config.offCanvasLeftSidebarClass ) ) {
destroyScroller(ps_aside_scroll);
} else {
if( pas.hasClass('ps') ) {
updateScroller(ps_aside_scroll);
} else {
if (typeof ps_aside_scroll === "undefined" || !ps_aside_scroll || !ps_aside_scroll.nodeName) {
ps_aside_scroll = initScroller(asideDiv);
}
}
}
});
}
//Wait for final event on window resize
var waitForFinalEvent = (function () {
var timers = {};
return function (callback, ms, uniqueId) {
if (!uniqueId) {
uniqueId = "x1x2x3x4";
}
if (timers[uniqueId]) {
clearTimeout (timers[uniqueId]);
}
timers[uniqueId] = setTimeout(callback, ms);
};
})();
return {
//General data
conf: config,
color: colors,
scroller: scrollers,
//Init function
init: function (options) {
//Get the main elements when document is ready
body = $("body");
wrapper = $(".be-wrapper");
topNavbar = $('.be-top-header', wrapper);
leftSidebar = $(".be-left-sidebar", wrapper);
rightSidebar = $(".be-right-sidebar", wrapper);
asideDiv = $(".be-scroller-aside", wrapper);
toggleLeftSidebarButton = $('.be-toggle-left-sidebar', topNavbar);
notificationsDiv = $(".be-scroller-notifications", topNavbar);
openSidebar = false;
//Extends basic config with options
$.extend( config, options );
/*FastClick on mobile*/
FastClick.attach(document.body);
/*Left Sidebar*/
if ( config.enableLeftSidebar ){
leftSidebarInit();
} else {
wrapper.addClass(config.disabledLeftSidebarClass);
}
/*Right Sidebar*/
if ( rightSidebar.length ){
rightSidebarInit();
chatWidget();
}
/*Sidebars Swipe*/
if( config.enableSwipe ){
sidebarSwipe();
}
/*Scroll Top button*/
if( config.scrollTop ){
scrollTopButton();
}
/*Page Aside*/
if( asideDiv.length ){
initAsidePS();
}
/*Scroller plugin init*/
if ( notificationsDiv.length ){
scrollerInit();
}
/*Get colors*/
colors.primary = getColor('clr-primary');
colors.success = getColor('clr-success');
colors.warning = getColor('clr-warning');
colors.danger = getColor('clr-danger');
colors.grey = getColor('clr-grey');
/*Get scrollers*/
scrollers.be_scroller_notifications = ps_be_scroller_notifications;
scrollers.left_sidebar_scroll = ps_left_sidebar;
scrollers.be_left_sidebar_scroll = ps_be_scroller_left_sidebar;
scrollers.sub_menu_scroll = ps_sub_menu_scroller;
scrollers.chat_scroll = ps_chat_scroll;
scrollers.todo_scroll = ps_todo_scroll;
scrollers.settings_scroll = ps_settings_scroll;
scrollers.messages_scroll = ps_messages_scroll;
scrollers.aside_scroll = ps_aside_scroll;
scrollers.updateScroller = updateScroller;
scrollers.destroyScroller = destroyScroller;
scrollers.initScroller = initScroller;
/*Bind plugins on hidden elements*/
/*Dropdown shown event*/
$('.be-icons-nav .dropdown').on('shown.bs.dropdown', function () {
updateScroller(ps_be_scroller_notifications);
});
/*Tooltips*/
$('[data-toggle="tooltip"]').tooltip();
/*Popover*/
$('[data-toggle="popover"]').popover();
/*Bootstrap modal scroll top fix*/
$('.modal').on('show.bs.modal', function(){
$("html").addClass('be-modal-open');
});
$('.modal').on('hidden.bs.modal', function(){
$("html").removeClass('be-modal-open');
});
/*Fixes the Sweetalert gap in the top header on boxed layout*/
if (typeof Swal == 'function' && wrapper.hasClass('be-boxed-layout')) {
var observer = new MutationObserver(function(mutationsList, observer) {
mutationsList.forEach(function(mutation){
if (mutation.type == 'attributes' && mutation.attributeName == 'style') {
if(document.body.className.indexOf('swal2-shown') > 0){
topNavbar.css({marginLeft: 'calc(-' + document.body.style.paddingRight + ' / 2)'});
} else {
topNavbar.css({marginLeft: '0'});
}
}
});
});
observer.observe(document.body, { attributes: true });
}
},
//Methods
activeItemLeftSidebar: activeItemLeftSidebar
};
})();
function FastClick(o,e){"use strict";var t;if(e=e||{},this.trackingClick=!1,this.trackingClickStart=0,this.targetElement=null,this.touchStartX=0,this.touchStartY=0,this.lastTouchIdentifier=0,this.touchBoundary=e.touchBoundary||10,this.layer=o,this.tapDelay=e.tapDelay||200,!FastClick.notNeeded(o)){for(var n=["onMouse","onClick","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel"],i=this,r=0,s=n.length;r
n.offsetHeight){t=n,e.fastClickScrollParent=n;break}n=n.parentElement}while(n)}t&&(t.fastClickLastScrollTop=t.scrollTop)},FastClick.prototype.getTargetElementFromEventTarget=function(e){"use strict";return e.nodeType===Node.TEXT_NODE?e.parentNode:e},FastClick.prototype.onTouchStart=function(e){"use strict";var t,n,i;if(1n||Math.abs(t.pageY-this.touchStartY)>n},FastClick.prototype.onTouchMove=function(e){"use strict";return this.trackingClick&&(this.targetElement===this.getTargetElementFromEventTarget(e.target)&&!this.touchHasMoved(e)||(this.trackingClick=!1,this.targetElement=null)),!0},FastClick.prototype.findControl=function(e){"use strict";return void 0!==e.control?e.control:e.htmlFor?document.getElementById(e.htmlFor):e.querySelector("button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea")},FastClick.prototype.onTouchEnd=function(e){"use strict";var t,n,i,o,r,s=this.targetElement;if(!this.trackingClick)return!0;if(e.timeStamp-this.lastClickTime0)){var event=jqEvent.originalEvent?jqEvent.originalEvent:jqEvent;if(!event.pointerType||"mouse"!=event.pointerType||0!=options.fallbackToMouseEvents){var ret,touches=event.touches,evt=touches?touches[0]:event;return phase=PHASE_START,touches?fingerCount=touches.length:options.preventDefaultEvents!==!1&&jqEvent.preventDefault(),distance=0,direction=null,currentDirection=null,pinchDirection=null,duration=0,startTouchesDistance=0,endTouchesDistance=0,pinchZoom=1,pinchDistance=0,maximumsMap=createMaximumsData(),cancelMultiFingerRelease(),createFingerData(0,evt),!touches||fingerCount===options.fingers||options.fingers===ALL_FINGERS||hasPinches()?(startTime=getTimeStamp(),2==fingerCount&&(createFingerData(1,touches[1]),startTouchesDistance=endTouchesDistance=calculateTouchesDistance(fingerData[0].start,fingerData[1].start)),(options.swipeStatus||options.pinchStatus)&&(ret=triggerHandler(event,phase))):ret=!1,ret===!1?(phase=PHASE_CANCEL,triggerHandler(event,phase),ret):(options.hold&&(holdTimeout=setTimeout($.proxy(function(){$element.trigger("hold",[event.target]),options.hold&&(ret=options.hold.call($element,event,event.target))},this),options.longTapThreshold)),setTouchInProgress(!0),null)}}}function touchMove(jqEvent){var event=jqEvent.originalEvent?jqEvent.originalEvent:jqEvent;if(phase!==PHASE_END&&phase!==PHASE_CANCEL&&!inMultiFingerRelease()){var ret,touches=event.touches,evt=touches?touches[0]:event,currentFinger=updateFingerData(evt);if(endTime=getTimeStamp(),touches&&(fingerCount=touches.length),options.hold&&clearTimeout(holdTimeout),phase=PHASE_MOVE,2==fingerCount&&(0==startTouchesDistance?(createFingerData(1,touches[1]),startTouchesDistance=endTouchesDistance=calculateTouchesDistance(fingerData[0].start,fingerData[1].start)):(updateFingerData(touches[1]),endTouchesDistance=calculateTouchesDistance(fingerData[0].end,fingerData[1].end),pinchDirection=calculatePinchDirection(fingerData[0].end,fingerData[1].end)),pinchZoom=calculatePinchZoom(startTouchesDistance,endTouchesDistance),pinchDistance=Math.abs(startTouchesDistance-endTouchesDistance)),fingerCount===options.fingers||options.fingers===ALL_FINGERS||!touches||hasPinches()){if(direction=calculateDirection(currentFinger.start,currentFinger.end),currentDirection=calculateDirection(currentFinger.last,currentFinger.end),validateDefaultEvent(jqEvent,currentDirection),distance=calculateDistance(currentFinger.start,currentFinger.end),duration=calculateDuration(),setMaxDistance(direction,distance),ret=triggerHandler(event,phase),!options.triggerOnTouchEnd||options.triggerOnTouchLeave){var inBounds=!0;if(options.triggerOnTouchLeave){var bounds=getbounds(this);inBounds=isInBounds(currentFinger.end,bounds)}!options.triggerOnTouchEnd&&inBounds?phase=getNextPhase(PHASE_MOVE):options.triggerOnTouchLeave&&!inBounds&&(phase=getNextPhase(PHASE_END)),phase!=PHASE_CANCEL&&phase!=PHASE_END||triggerHandler(event,phase)}}else phase=PHASE_CANCEL,triggerHandler(event,phase);ret===!1&&(phase=PHASE_CANCEL,triggerHandler(event,phase))}}function touchEnd(jqEvent){var event=jqEvent.originalEvent?jqEvent.originalEvent:jqEvent,touches=event.touches;if(touches){if(touches.length&&!inMultiFingerRelease())return startMultiFingerRelease(event),!0;if(touches.length&&inMultiFingerRelease())return!0}return inMultiFingerRelease()&&(fingerCount=fingerCountAtRelease),endTime=getTimeStamp(),duration=calculateDuration(),didSwipeBackToCancel()||!validateSwipeDistance()?(phase=PHASE_CANCEL,triggerHandler(event,phase)):options.triggerOnTouchEnd||options.triggerOnTouchEnd===!1&&phase===PHASE_MOVE?(options.preventDefaultEvents!==!1&&jqEvent.cancelable!==!1&&jqEvent.preventDefault(),phase=PHASE_END,triggerHandler(event,phase)):!options.triggerOnTouchEnd&&hasTap()?(phase=PHASE_END,triggerHandlerForGesture(event,phase,TAP)):phase===PHASE_MOVE&&(phase=PHASE_CANCEL,triggerHandler(event,phase)),setTouchInProgress(!1),null}function touchCancel(){fingerCount=0,endTime=0,startTime=0,startTouchesDistance=0,endTouchesDistance=0,pinchZoom=1,cancelMultiFingerRelease(),setTouchInProgress(!1)}function touchLeave(jqEvent){var event=jqEvent.originalEvent?jqEvent.originalEvent:jqEvent;options.triggerOnTouchLeave&&(phase=getNextPhase(PHASE_END),triggerHandler(event,phase))}function removeListeners(){$element.off(START_EV,touchStart),$element.off(CANCEL_EV,touchCancel),$element.off(MOVE_EV,touchMove),$element.off(END_EV,touchEnd),LEAVE_EV&&$element.off(LEAVE_EV,touchLeave),setTouchInProgress(!1)}function getNextPhase(currentPhase){var nextPhase=currentPhase,validTime=validateSwipeTime(),validDistance=validateSwipeDistance(),didCancel=didSwipeBackToCancel();return!validTime||didCancel?nextPhase=PHASE_CANCEL:!validDistance||currentPhase!=PHASE_MOVE||options.triggerOnTouchEnd&&!options.triggerOnTouchLeave?!validDistance&¤tPhase==PHASE_END&&options.triggerOnTouchLeave&&(nextPhase=PHASE_CANCEL):nextPhase=PHASE_END,nextPhase}function triggerHandler(event,phase){var ret,touches=event.touches;return(didSwipe()||hasSwipes())&&(ret=triggerHandlerForGesture(event,phase,SWIPE)),(didPinch()||hasPinches())&&ret!==!1&&(ret=triggerHandlerForGesture(event,phase,PINCH)),didDoubleTap()&&ret!==!1?ret=triggerHandlerForGesture(event,phase,DOUBLE_TAP):didLongTap()&&ret!==!1?ret=triggerHandlerForGesture(event,phase,LONG_TAP):didTap()&&ret!==!1&&(ret=triggerHandlerForGesture(event,phase,TAP)),phase===PHASE_CANCEL&&touchCancel(event),phase===PHASE_END&&(touches?touches.length||touchCancel(event):touchCancel(event)),ret}function triggerHandlerForGesture(event,phase,gesture){var ret;if(gesture==SWIPE){if($element.trigger("swipeStatus",[phase,direction||null,distance||0,duration||0,fingerCount,fingerData,currentDirection]),options.swipeStatus&&(ret=options.swipeStatus.call($element,event,phase,direction||null,distance||0,duration||0,fingerCount,fingerData,currentDirection),ret===!1))return!1;if(phase==PHASE_END&&validateSwipe()){if(clearTimeout(singleTapTimeout),clearTimeout(holdTimeout),$element.trigger("swipe",[direction,distance,duration,fingerCount,fingerData,currentDirection]),options.swipe&&(ret=options.swipe.call($element,event,direction,distance,duration,fingerCount,fingerData,currentDirection),ret===!1))return!1;switch(direction){case LEFT:$element.trigger("swipeLeft",[direction,distance,duration,fingerCount,fingerData,currentDirection]),options.swipeLeft&&(ret=options.swipeLeft.call($element,event,direction,distance,duration,fingerCount,fingerData,currentDirection));break;case RIGHT:$element.trigger("swipeRight",[direction,distance,duration,fingerCount,fingerData,currentDirection]),options.swipeRight&&(ret=options.swipeRight.call($element,event,direction,distance,duration,fingerCount,fingerData,currentDirection));break;case UP:$element.trigger("swipeUp",[direction,distance,duration,fingerCount,fingerData,currentDirection]),options.swipeUp&&(ret=options.swipeUp.call($element,event,direction,distance,duration,fingerCount,fingerData,currentDirection));break;case DOWN:$element.trigger("swipeDown",[direction,distance,duration,fingerCount,fingerData,currentDirection]),options.swipeDown&&(ret=options.swipeDown.call($element,event,direction,distance,duration,fingerCount,fingerData,currentDirection))}}}if(gesture==PINCH){if($element.trigger("pinchStatus",[phase,pinchDirection||null,pinchDistance||0,duration||0,fingerCount,pinchZoom,fingerData]),options.pinchStatus&&(ret=options.pinchStatus.call($element,event,phase,pinchDirection||null,pinchDistance||0,duration||0,fingerCount,pinchZoom,fingerData),ret===!1))return!1;if(phase==PHASE_END&&validatePinch())switch(pinchDirection){case IN:$element.trigger("pinchIn",[pinchDirection||null,pinchDistance||0,duration||0,fingerCount,pinchZoom,fingerData]),options.pinchIn&&(ret=options.pinchIn.call($element,event,pinchDirection||null,pinchDistance||0,duration||0,fingerCount,pinchZoom,fingerData));break;case OUT:$element.trigger("pinchOut",[pinchDirection||null,pinchDistance||0,duration||0,fingerCount,pinchZoom,fingerData]),options.pinchOut&&(ret=options.pinchOut.call($element,event,pinchDirection||null,pinchDistance||0,duration||0,fingerCount,pinchZoom,fingerData))}}return gesture==TAP?phase!==PHASE_CANCEL&&phase!==PHASE_END||(clearTimeout(singleTapTimeout),clearTimeout(holdTimeout),hasDoubleTap()&&!inDoubleTap()?(doubleTapStartTime=getTimeStamp(),singleTapTimeout=setTimeout($.proxy(function(){doubleTapStartTime=null,$element.trigger("tap",[event.target]),options.tap&&(ret=options.tap.call($element,event,event.target))},this),options.doubleTapThreshold)):(doubleTapStartTime=null,$element.trigger("tap",[event.target]),options.tap&&(ret=options.tap.call($element,event,event.target)))):gesture==DOUBLE_TAP?phase!==PHASE_CANCEL&&phase!==PHASE_END||(clearTimeout(singleTapTimeout),clearTimeout(holdTimeout),doubleTapStartTime=null,$element.trigger("doubletap",[event.target]),options.doubleTap&&(ret=options.doubleTap.call($element,event,event.target))):gesture==LONG_TAP&&(phase!==PHASE_CANCEL&&phase!==PHASE_END||(clearTimeout(singleTapTimeout),doubleTapStartTime=null,$element.trigger("longtap",[event.target]),options.longTap&&(ret=options.longTap.call($element,event,event.target)))),ret}function validateSwipeDistance(){var valid=!0;return null!==options.threshold&&(valid=distance>=options.threshold),valid}function didSwipeBackToCancel(){var cancelled=!1;return null!==options.cancelThreshold&&null!==direction&&(cancelled=getMaxDistance(direction)-distance>=options.cancelThreshold),cancelled}function validatePinchDistance(){return null!==options.pinchThreshold?pinchDistance>=options.pinchThreshold:!0}function validateSwipeTime(){var result;return result=options.maxTimeThreshold?!(duration>=options.maxTimeThreshold):!0}function validateDefaultEvent(jqEvent,direction){if(options.preventDefaultEvents!==!1)if(options.allowPageScroll===NONE)jqEvent.preventDefault();else{var auto=options.allowPageScroll===AUTO;switch(direction){case LEFT:(options.swipeLeft&&auto||!auto&&options.allowPageScroll!=HORIZONTAL)&&jqEvent.preventDefault();break;case RIGHT:(options.swipeRight&&auto||!auto&&options.allowPageScroll!=HORIZONTAL)&&jqEvent.preventDefault();break;case UP:(options.swipeUp&&auto||!auto&&options.allowPageScroll!=VERTICAL)&&jqEvent.preventDefault();break;case DOWN:(options.swipeDown&&auto||!auto&&options.allowPageScroll!=VERTICAL)&&jqEvent.preventDefault();break;case NONE:}}}function validatePinch(){var hasCorrectFingerCount=validateFingers(),hasEndPoint=validateEndPoint(),hasCorrectDistance=validatePinchDistance();return hasCorrectFingerCount&&hasEndPoint&&hasCorrectDistance}function hasPinches(){return!!(options.pinchStatus||options.pinchIn||options.pinchOut)}function didPinch(){return!(!validatePinch()||!hasPinches())}function validateSwipe(){var hasValidTime=validateSwipeTime(),hasValidDistance=validateSwipeDistance(),hasCorrectFingerCount=validateFingers(),hasEndPoint=validateEndPoint(),didCancel=didSwipeBackToCancel(),valid=!didCancel&&hasEndPoint&&hasCorrectFingerCount&&hasValidDistance&&hasValidTime;return valid}function hasSwipes(){return!!(options.swipe||options.swipeStatus||options.swipeLeft||options.swipeRight||options.swipeUp||options.swipeDown)}function didSwipe(){return!(!validateSwipe()||!hasSwipes())}function validateFingers(){return fingerCount===options.fingers||options.fingers===ALL_FINGERS||!SUPPORTS_TOUCH}function validateEndPoint(){return 0!==fingerData[0].end.x}function hasTap(){return!!options.tap}function hasDoubleTap(){return!!options.doubleTap}function hasLongTap(){return!!options.longTap}function validateDoubleTap(){if(null==doubleTapStartTime)return!1;var now=getTimeStamp();return hasDoubleTap()&&now-doubleTapStartTime<=options.doubleTapThreshold}function inDoubleTap(){return validateDoubleTap()}function validateTap(){return(1===fingerCount||!SUPPORTS_TOUCH)&&(isNaN(distance)||distanceoptions.longTapThreshold&&DOUBLE_TAP_THRESHOLD>distance}function didTap(){return!(!validateTap()||!hasTap())}function didDoubleTap(){return!(!validateDoubleTap()||!hasDoubleTap())}function didLongTap(){return!(!validateLongTap()||!hasLongTap())}function startMultiFingerRelease(event){previousTouchEndTime=getTimeStamp(),fingerCountAtRelease=event.touches.length+1}function cancelMultiFingerRelease(){previousTouchEndTime=0,fingerCountAtRelease=0}function inMultiFingerRelease(){var withinThreshold=!1;if(previousTouchEndTime){var diff=getTimeStamp()-previousTouchEndTime;diff<=options.fingerReleaseThreshold&&(withinThreshold=!0)}return withinThreshold}function getTouchInProgress(){return!($element.data(PLUGIN_NS+"_intouch")!==!0)}function setTouchInProgress(val){$element&&(val===!0?($element.on(MOVE_EV,touchMove),$element.on(END_EV,touchEnd),LEAVE_EV&&$element.on(LEAVE_EV,touchLeave)):($element.off(MOVE_EV,touchMove,!1),$element.off(END_EV,touchEnd,!1),LEAVE_EV&&$element.off(LEAVE_EV,touchLeave,!1)),$element.data(PLUGIN_NS+"_intouch",val===!0))}function createFingerData(id,evt){var f={start:{x:0,y:0},last:{x:0,y:0},end:{x:0,y:0}};return f.start.x=f.last.x=f.end.x=evt.pageX||evt.clientX,f.start.y=f.last.y=f.end.y=evt.pageY||evt.clientY,fingerData[id]=f,f}function updateFingerData(evt){var id=void 0!==evt.identifier?evt.identifier:0,f=getFingerData(id);return null===f&&(f=createFingerData(id,evt)),f.last.x=f.end.x,f.last.y=f.end.y,f.end.x=evt.pageX||evt.clientX,f.end.y=evt.pageY||evt.clientY,f}function getFingerData(id){return fingerData[id]||null}function setMaxDistance(direction,distance){direction!=NONE&&(distance=Math.max(distance,getMaxDistance(direction)),maximumsMap[direction].distance=distance)}function getMaxDistance(direction){return maximumsMap[direction]?maximumsMap[direction].distance:void 0}function createMaximumsData(){var maxData={};return maxData[LEFT]=createMaximumVO(LEFT),maxData[RIGHT]=createMaximumVO(RIGHT),maxData[UP]=createMaximumVO(UP),maxData[DOWN]=createMaximumVO(DOWN),maxData}function createMaximumVO(dir){return{direction:dir,distance:0}}function calculateDuration(){return endTime-startTime}function calculateTouchesDistance(startPoint,endPoint){var diffX=Math.abs(startPoint.x-endPoint.x),diffY=Math.abs(startPoint.y-endPoint.y);return Math.round(Math.sqrt(diffX*diffX+diffY*diffY))}function calculatePinchZoom(startDistance,endDistance){var percent=endDistance/startDistance*1;return percent.toFixed(2)}function calculatePinchDirection(){return 1>pinchZoom?OUT:IN}function calculateDistance(startPoint,endPoint){return Math.round(Math.sqrt(Math.pow(endPoint.x-startPoint.x,2)+Math.pow(endPoint.y-startPoint.y,2)))}function calculateAngle(startPoint,endPoint){var x=startPoint.x-endPoint.x,y=endPoint.y-startPoint.y,r=Math.atan2(y,x),angle=Math.round(180*r/Math.PI);return 0>angle&&(angle=360-Math.abs(angle)),angle}function calculateDirection(startPoint,endPoint){if(comparePoints(startPoint,endPoint))return NONE;var angle=calculateAngle(startPoint,endPoint);return 45>=angle&&angle>=0?LEFT:360>=angle&&angle>=315?LEFT:angle>=135&&225>=angle?RIGHT:angle>45&&135>angle?DOWN:UP}function getTimeStamp(){var now=new Date;return now.getTime()}function getbounds(el){el=$(el);var offset=el.offset(),bounds={left:offset.left,right:offset.left+el.outerWidth(),top:offset.top,bottom:offset.top+el.outerHeight()};return bounds}function isInBounds(point,bounds){return point.x>bounds.left&&point.xbounds.top&&point.y.5?i/(2-f-g):i/(f+g),f){case a:d=(b-c)/i+(c>b?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return{h:d,s:e,l:h}}function f(a,b,c){function d(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+6*(b-a)*(2/3-c):a}var e,f,g;if(a=A(a,360),b=A(b,100),c=A(c,100),0===b)e=f=g=c;else{var h=.5>c?c*(1+b):c+b-c*b,i=2*c-h;e=d(i,h,a+1/3),f=d(i,h,a),g=d(i,h,a-1/3)}return{r:255*e,g:255*f,b:255*g}}function g(a,b,c){a=A(a,255),b=A(b,255),c=A(c,255);var d,e,f=R(a,b,c),g=Q(a,b,c),h=f,i=f-g;if(e=0===f?0:i/f,f==g)d=0;else{switch(f){case a:d=(b-c)/i+(c>b?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return{h:d,s:e,v:h}}function h(b,c,d){b=6*A(b,360),c=A(c,100),d=A(d,100);var e=a.floor(b),f=b-e,g=d*(1-c),h=d*(1-f*c),i=d*(1-(1-f)*c),j=e%6,k=[d,h,g,g,i,d][j],l=[i,d,d,h,g,g][j],m=[g,g,i,d,d,h][j];return{r:255*k,g:255*l,b:255*m}}function i(a,b,c,d){var e=[F(P(a).toString(16)),F(P(b).toString(16)),F(P(c).toString(16))];return d&&e[0].charAt(0)==e[0].charAt(1)&&e[1].charAt(0)==e[1].charAt(1)&&e[2].charAt(0)==e[2].charAt(1)?e[0].charAt(0)+e[1].charAt(0)+e[2].charAt(0):e.join("")}function j(a,b,c,d,e){var f=[F(P(a).toString(16)),F(P(b).toString(16)),F(P(c).toString(16)),F(H(d))];return e&&f[0].charAt(0)==f[0].charAt(1)&&f[1].charAt(0)==f[1].charAt(1)&&f[2].charAt(0)==f[2].charAt(1)&&f[3].charAt(0)==f[3].charAt(1)?f[0].charAt(0)+f[1].charAt(0)+f[2].charAt(0)+f[3].charAt(0):f.join("")}function k(a,b,c,d){var e=[F(H(d)),F(P(a).toString(16)),F(P(b).toString(16)),F(P(c).toString(16))];return e.join("")}function l(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.s-=c/100,d.s=B(d.s),b(d)}function m(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.s+=c/100,d.s=B(d.s),b(d)}function n(a){return b(a).desaturate(100)}function o(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.l+=c/100,d.l=B(d.l),b(d)}function p(a,c){c=0===c?0:c||10;var d=b(a).toRgb();return d.r=R(0,Q(255,d.r-P(255*-(c/100)))),d.g=R(0,Q(255,d.g-P(255*-(c/100)))),d.b=R(0,Q(255,d.b-P(255*-(c/100)))),b(d)}function q(a,c){c=0===c?0:c||10;var d=b(a).toHsl();return d.l-=c/100,d.l=B(d.l),b(d)}function r(a,c){var d=b(a).toHsl(),e=(d.h+c)%360;return d.h=0>e?360+e:e,b(d)}function s(a){var c=b(a).toHsl();return c.h=(c.h+180)%360,b(c)}function t(a){var c=b(a).toHsl(),d=c.h;return[b(a),b({h:(d+120)%360,s:c.s,l:c.l}),b({h:(d+240)%360,s:c.s,l:c.l})]}function u(a){var c=b(a).toHsl(),d=c.h;return[b(a),b({h:(d+90)%360,s:c.s,l:c.l}),b({h:(d+180)%360,s:c.s,l:c.l}),b({h:(d+270)%360,s:c.s,l:c.l})]}function v(a){var c=b(a).toHsl(),d=c.h;return[b(a),b({h:(d+72)%360,s:c.s,l:c.l}),b({h:(d+216)%360,s:c.s,l:c.l})]}function w(a,c,d){c=c||6,d=d||30;var e=b(a).toHsl(),f=360/d,g=[b(a)];for(e.h=(e.h-(f*c>>1)+720)%360;--c;)e.h=(e.h+f)%360,g.push(b(e));return g}function x(a,c){c=c||6;for(var d=b(a).toHsv(),e=d.h,f=d.s,g=d.v,h=[],i=1/c;c--;)h.push(b({h:e,s:f,v:g})),g=(g+i)%1;return h}function y(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[a[c]]=c);return b}function z(a){return a=parseFloat(a),(isNaN(a)||0>a||a>1)&&(a=1),a}function A(b,c){D(b)&&(b="100%");var d=E(b);return b=Q(c,R(0,parseFloat(b))),d&&(b=parseInt(b*c,10)/100),a.abs(b-c)<1e-6?1:b%c/parseFloat(c)}function B(a){return Q(1,R(0,a))}function C(a){return parseInt(a,16)}function D(a){return"string"==typeof a&&-1!=a.indexOf(".")&&1===parseFloat(a)}function E(a){return"string"==typeof a&&-1!=a.indexOf("%")}function F(a){return 1==a.length?"0"+a:""+a}function G(a){return 1>=a&&(a=100*a+"%"),a}function H(b){return a.round(255*parseFloat(b)).toString(16)}function I(a){return C(a)/255}function J(a){return!!V.CSS_UNIT.exec(a)}function K(a){a=a.replace(M,"").replace(N,"").toLowerCase();var b=!1;if(T[a])a=T[a],b=!0;else if("transparent"==a)return{r:0,g:0,b:0,a:0,format:"name"};var c;return(c=V.rgb.exec(a))?{r:c[1],g:c[2],b:c[3]}:(c=V.rgba.exec(a))?{r:c[1],g:c[2],b:c[3],a:c[4]}:(c=V.hsl.exec(a))?{h:c[1],s:c[2],l:c[3]}:(c=V.hsla.exec(a))?{h:c[1],s:c[2],l:c[3],a:c[4]}:(c=V.hsv.exec(a))?{h:c[1],s:c[2],v:c[3]}:(c=V.hsva.exec(a))?{h:c[1],s:c[2],v:c[3],a:c[4]}:(c=V.hex8.exec(a))?{r:C(c[1]),g:C(c[2]),b:C(c[3]),a:I(c[4]),format:b?"name":"hex8"}:(c=V.hex6.exec(a))?{r:C(c[1]),g:C(c[2]),b:C(c[3]),format:b?"name":"hex"}:(c=V.hex4.exec(a))?{r:C(c[1]+""+c[1]),g:C(c[2]+""+c[2]),b:C(c[3]+""+c[3]),a:I(c[4]+""+c[4]),format:b?"name":"hex8"}:(c=V.hex3.exec(a))?{r:C(c[1]+""+c[1]),g:C(c[2]+""+c[2]),b:C(c[3]+""+c[3]),format:b?"name":"hex"}:!1}function L(a){var b,c;return a=a||{level:"AA",size:"small"},b=(a.level||"AA").toUpperCase(),c=(a.size||"small").toLowerCase(),"AA"!==b&&"AAA"!==b&&(b="AA"),"small"!==c&&"large"!==c&&(c="small"),{level:b,size:c}}var M=/^\s+/,N=/\s+$/,O=0,P=a.round,Q=a.min,R=a.max,S=a.random;b.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var a=this.toRgb();return(299*a.r+587*a.g+114*a.b)/1e3},getLuminance:function(){var b,c,d,e,f,g,h=this.toRgb();return b=h.r/255,c=h.g/255,d=h.b/255,e=.03928>=b?b/12.92:a.pow((b+.055)/1.055,2.4),f=.03928>=c?c/12.92:a.pow((c+.055)/1.055,2.4),g=.03928>=d?d/12.92:a.pow((d+.055)/1.055,2.4),.2126*e+.7152*f+.0722*g},setAlpha:function(a){return this._a=z(a),this._roundA=P(100*this._a)/100,this},toHsv:function(){var a=g(this._r,this._g,this._b);return{h:360*a.h,s:a.s,v:a.v,a:this._a}},toHsvString:function(){var a=g(this._r,this._g,this._b),b=P(360*a.h),c=P(100*a.s),d=P(100*a.v);return 1==this._a?"hsv("+b+", "+c+"%, "+d+"%)":"hsva("+b+", "+c+"%, "+d+"%, "+this._roundA+")"},toHsl:function(){var a=e(this._r,this._g,this._b);return{h:360*a.h,s:a.s,l:a.l,a:this._a}},toHslString:function(){var a=e(this._r,this._g,this._b),b=P(360*a.h),c=P(100*a.s),d=P(100*a.l);return 1==this._a?"hsl("+b+", "+c+"%, "+d+"%)":"hsla("+b+", "+c+"%, "+d+"%, "+this._roundA+")"},toHex:function(a){return i(this._r,this._g,this._b,a)},toHexString:function(a){return"#"+this.toHex(a)},toHex8:function(a){return j(this._r,this._g,this._b,this._a,a)},toHex8String:function(a){return"#"+this.toHex8(a)},toRgb:function(){return{r:P(this._r),g:P(this._g),b:P(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+P(this._r)+", "+P(this._g)+", "+P(this._b)+")":"rgba("+P(this._r)+", "+P(this._g)+", "+P(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:P(100*A(this._r,255))+"%",g:P(100*A(this._g,255))+"%",b:P(100*A(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+P(100*A(this._r,255))+"%, "+P(100*A(this._g,255))+"%, "+P(100*A(this._b,255))+"%)":"rgba("+P(100*A(this._r,255))+"%, "+P(100*A(this._g,255))+"%, "+P(100*A(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":this._a<1?!1:U[i(this._r,this._g,this._b,!0)]||!1},toFilter:function(a){var c="#"+k(this._r,this._g,this._b,this._a),d=c,e=this._gradientType?"GradientType = 1, ":"";if(a){var f=b(a);d="#"+k(f._r,f._g,f._b,f._a)}return"progid:DXImageTransform.Microsoft.gradient("+e+"startColorstr="+c+",endColorstr="+d+")"},toString:function(a){var b=!!a;a=a||this._format;var c=!1,d=this._a<1&&this._a>=0,e=!b&&d&&("hex"===a||"hex6"===a||"hex3"===a||"hex4"===a||"hex8"===a||"name"===a);return e?"name"===a&&0===this._a?this.toName():this.toRgbString():("rgb"===a&&(c=this.toRgbString()),"prgb"===a&&(c=this.toPercentageRgbString()),("hex"===a||"hex6"===a)&&(c=this.toHexString()),"hex3"===a&&(c=this.toHexString(!0)),"hex4"===a&&(c=this.toHex8String(!0)),"hex8"===a&&(c=this.toHex8String()),"name"===a&&(c=this.toName()),"hsl"===a&&(c=this.toHslString()),"hsv"===a&&(c=this.toHsvString()),c||this.toHexString())},clone:function(){return b(this.toString())},_applyModification:function(a,b){var c=a.apply(null,[this].concat([].slice.call(b)));return this._r=c._r,this._g=c._g,this._b=c._b,this.setAlpha(c._a),this},lighten:function(){return this._applyModification(o,arguments)},brighten:function(){return this._applyModification(p,arguments)},darken:function(){return this._applyModification(q,arguments)},desaturate:function(){return this._applyModification(l,arguments)},saturate:function(){return this._applyModification(m,arguments)},greyscale:function(){return this._applyModification(n,arguments)},spin:function(){return this._applyModification(r,arguments)},_applyCombination:function(a,b){return a.apply(null,[this].concat([].slice.call(b)))},analogous:function(){return this._applyCombination(w,arguments)},complement:function(){return this._applyCombination(s,arguments)},monochromatic:function(){return this._applyCombination(x,arguments)},splitcomplement:function(){return this._applyCombination(v,arguments)},triad:function(){return this._applyCombination(t,arguments)},tetrad:function(){return this._applyCombination(u,arguments)}},b.fromRatio=function(a,c){if("object"==typeof a){var d={};for(var e in a)a.hasOwnProperty(e)&&(d[e]="a"===e?a[e]:G(a[e]));a=d}return b(a,c)},b.equals=function(a,c){return a&&c?b(a).toRgbString()==b(c).toRgbString():!1},b.random=function(){return b.fromRatio({r:S(),g:S(),b:S()})},b.mix=function(a,c,d){d=0===d?0:d||50;var e=b(a).toRgb(),f=b(c).toRgb(),g=d/100,h={r:(f.r-e.r)*g+e.r,g:(f.g-e.g)*g+e.g,b:(f.b-e.b)*g+e.b,a:(f.a-e.a)*g+e.a};return b(h)},b.readability=function(c,d){var e=b(c),f=b(d);return(a.max(e.getLuminance(),f.getLuminance())+.05)/(a.min(e.getLuminance(),f.getLuminance())+.05)},b.isReadable=function(a,c,d){var e,f,g=b.readability(a,c);switch(f=!1,e=L(d),e.level+e.size){case"AAsmall":case"AAAlarge":f=g>=4.5;break;case"AAlarge":f=g>=3;break;case"AAAsmall":f=g>=7}return f},b.mostReadable=function(a,c,d){var e,f,g,h,i=null,j=0;d=d||{},f=d.includeFallbackColors,g=d.level,h=d.size;for(var k=0;kj&&(j=e,i=b(c[k]));return b.isReadable(a,i,{level:g,size:h})||!f?i:(d.includeFallbackColors=!1,b.mostReadable(a,["#fff","#000"],d))};var T=b.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},U=b.hexNames=y(T),V=function(){var a="[-\\+]?\\d+%?",b="[-\\+]?\\d*\\.\\d+%?",c="(?:"+b+")|(?:"+a+")",d="[\\s|\\(]+("+c+")[,|\\s]+("+c+")[,|\\s]+("+c+")\\s*\\)?",e="[\\s|\\(]+("+c+")[,|\\s]+("+c+")[,|\\s]+("+c+")[,|\\s]+("+c+")\\s*\\)?";return{CSS_UNIT:new RegExp(c),rgb:new RegExp("rgb"+d),rgba:new RegExp("rgba"+e),hsl:new RegExp("hsl"+d),hsla:new RegExp("hsla"+e),hsv:new RegExp("hsv"+d),hsva:new RegExp("hsva"+e),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();"undefined"!=typeof module&&module.exports?module.exports=b:"function"==typeof define&&define.amd?define(function(){return b}):window.tinycolor=b}(Math);
!function(r){var i=function(n){var e,i;return i=(e=r("",{class:n}).appendTo("body")).is(":visible"),e.remove(),i};r.isBreakpoint=function(n){var e;switch(n){case"xs":e="d-block d-sm-none";break;case"sm":e="d-none d-sm-block d-md-none";break;case"md":e="d-none d-md-block d-lg-none";break;case"lg":e="d-none d-lg-block d-xl-none";break;case"xl":e="d-none d-xl-block"}return i(e)},r.isBreakpointUp=function(n){var e;switch(n){case"xs":return!0;case"sm":e="d-none d-sm-block";break;case"md":e="d-none d-md-block";break;case"lg":e="d-none d-lg-block";break;case"xl":e="d-none d-xl-block"}return i(e)},r.extend(r,{isXs:function(){return r.isBreakpoint("xs")},isSm:function(){return r.isBreakpoint("sm")},isMd:function(){return r.isBreakpoint("md")},isLg:function(){return r.isBreakpoint("lg")},isXl:function(){return r.isBreakpoint("xl")},isXsUp:function(){return r.isBreakpointUp("xs")},isSmUp:function(){return r.isBreakpointUp("sm")},isMdUp:function(){return r.isBreakpointUp("md")},isLgUp:function(){return r.isBreakpointUp("lg")},isXlUp:function(){return r.isBreakpointUp("xl")}})}(jQuery);