2018-02-04 21:15:30 +05:00
/ * !
* Bootstrap v3 . 3.6 ( http : //getbootstrap.com)
* Copyright 2011 - 2015 Twitter , Inc .
* Licensed under the MIT license
* /
if ( "undefined" == typeof jQuery ) throw new Error ( "Bootstrap's JavaScript requires jQuery" ) ; + function ( a ) { "use strict" ; var b = a . fn . jquery . split ( " " ) [ 0 ] . split ( "." ) ; if ( b [ 0 ] < 2 && b [ 1 ] < 9 || 1 == b [ 0 ] && 9 == b [ 1 ] && b [ 2 ] < 1 || b [ 0 ] > 2 ) throw new Error ( "Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3" ) } ( jQuery ) , + function ( a ) { "use strict" ; function b ( ) { var a = document . createElement ( "bootstrap" ) , b = { WebkitTransition : "webkitTransitionEnd" , MozTransition : "transitionend" , OTransition : "oTransitionEnd otransitionend" , transition : "transitionend" } ; for ( var c in b ) if ( void 0 !== a . style [ c ] ) return { end : b [ c ] } ; return ! 1 } a . fn . emulateTransitionEnd = function ( b ) { var c = ! 1 , d = this ; a ( this ) . one ( "bsTransitionEnd" , function ( ) { c = ! 0 } ) ; var e = function ( ) { c || a ( d ) . trigger ( a . support . transition . end ) } ; return setTimeout ( e , b ) , this } , a ( function ( ) { a . support . transition = b ( ) , a . support . transition && ( a . event . special . bsTransitionEnd = { bindType : a . support . transition . end , delegateType : a . support . transition . end , handle : function ( b ) { return a ( b . target ) . is ( this ) ? b . handleObj . handler . apply ( this , arguments ) : void 0 } } ) } ) } ( jQuery ) , + function ( a ) { "use strict" ; function b ( b ) { return this . each ( function ( ) { var c = a ( this ) , e = c . data ( "bs.alert" ) ; e || c . data ( "bs.alert" , e = new d ( this ) ) , "string" == typeof b && e [ b ] . call ( c ) } ) } var c = '[data-dismiss="alert"]' , d = function ( b ) { a ( b ) . on ( "click" , c , this . close ) } ; d . VERSION = "3.3.6" , d . TRANSITION _DURATION = 150 , d . prototype . close = function ( b ) { function c ( ) { g . detach ( ) . trigger ( "closed.bs.alert" ) . remove ( ) } var e = a ( this ) , f = e . attr ( "data-target" ) ; f || ( f = e . attr ( "href" ) , f = f && f . replace ( /.*(?=#[^\s]*$)/ , "" ) ) ; var g = a ( f ) ; b && b . preventDefault ( ) , g . length || ( g = e . closest ( ".alert" ) ) , g . trigger ( b = a . Event ( "close.bs.alert" ) ) , b . isDefaultPrevented ( ) || ( g . removeClass ( "in" ) , a . support . transition && g . hasClass ( "fade" ) ? g . one ( "bsTransitionEnd" , c ) . emulateTransitionEnd ( d . TRANSITION _DURATION ) : c ( ) ) } ; var e = a . fn . alert ; a . fn . alert = b , a . fn . alert . Constructor = d , a . fn . alert . noConflict = function ( ) { return a . fn . alert = e , this } , a ( document ) . on ( "click.bs.alert.data-api" , c , d . prototype . close ) } ( jQuery ) , + function ( a ) { "use strict" ; function b ( b ) { return this . each ( function ( ) { var d = a ( this ) , e = d . data ( "bs.button" ) , f = "object" == typeof b && b ; e || d . data ( "bs.button" , e = new c ( this , f ) ) , "toggle" == b ? e . toggle ( ) : b && e . setState ( b ) } ) } var c = function ( b , d ) { this . $element = a ( b ) , this . options = a . extend ( { } , c . DEFAULTS , d ) , this . isLoading = ! 1 } ; c . VERSION = "3.3.6" , c . DEFAULTS = { loadingText : "loading..." } , c . prototype . setState = function ( b ) { var c = "disabled" , d = this . $element , e = d . is ( "input" ) ? "val" : "html" , f = d . data ( ) ; b += "Text" , null == f . resetText && d . data ( "resetText" , d [ e ] ( ) ) , setTimeout ( a . proxy ( function ( ) { d [ e ] ( null == f [ b ] ? this . options [ b ] : f [ b ] ) , "loadingText" == b ? ( this . isLoading = ! 0 , d . addClass ( c ) . attr ( c , c ) ) : this . isLoading && ( this . isLoading = ! 1 , d . removeClass ( c ) . removeAttr ( c ) ) } , this ) , 0 ) } , c . prototype . toggle = function ( ) { var a = ! 0 , b = this . $element . closest ( '[data-toggle="buttons"]' ) ; if ( b . length ) { var c = this . $element . find ( "input" ) ; "radio" == c . prop ( "type" ) ? ( c . prop ( "checked" ) && ( a = ! 1 ) , b . find ( ".active" ) . removeClass ( "active" ) , this . $element . addClass ( "active" ) ) : "checkbox" == c . prop ( "type" ) && ( c . prop ( "checked" ) !== this . $element . hasClass ( "active" ) && ( a = ! 1 ) , this . $element . toggleClass ( "active" ) ) , c . prop ( "checked" , this . $element . hasClass ( "active" ) ) , a && c . trigger ( "change" ) } else this . $element . attr ( "aria-pressed" , ! this . $element . hasClass ( "active" ) ) , this . $element . toggleClass ( "active" ) } ; var d = a . fn . button ; a . fn . button = b , a . fn . button . Constructor = c , a . fn . button . noConflict = function ( ) { return a . fn . button = d , this } , a ( document ) . on ( "click.bs.button.data-api" , '[data-toggle^="button"]' , function ( c ) { var d = a ( c . target ) ; d . hasClass ( "btn" ) || ( d = d . closest ( ".btn" ) ) , b . call ( d , "toggle" ) , a ( c . target ) . is ( 'input[type="radio"]' ) || a ( c . target ) . is ( 'input[type="checkbox"]' ) || c . preventDefault ( ) } ) . on ( "focus.bs.button.data-api blur.bs.button.data-api" , '[data-toggle^="button"]' , function ( b ) { a ( b . target ) . closest ( ".btn" ) . toggleClass ( "focus" , /^focus(in)?$/ . test ( b . type ) ) } ) } ( jQuery ) , + function ( a ) { "use strict" ; function b ( b ) { return this . each ( function ( ) { var d = a ( this ) , e = d . data ( "bs.carousel" ) , f = a . extend ( { } , c . DEFAULTS , d . data ( ) , "object" == typeof b && b ) , g = "string" == typeof b ? b : f . slide ; e || d . data ( " bs . carouse
d . parent ( ".dropdown-menu" ) . length && ( d = d . closest ( "li.dropdown" ) . addClass ( "active" ) ) , d . trigger ( "activate.bs.scrollspy" ) } , b . prototype . clear = function ( ) { a ( this . selector ) . parentsUntil ( this . options . target , ".active" ) . removeClass ( "active" ) } ; var d = a . fn . scrollspy ; a . fn . scrollspy = c , a . fn . scrollspy . Constructor = b , a . fn . scrollspy . noConflict = function ( ) { return a . fn . scrollspy = d , this } , a ( window ) . on ( "load.bs.scrollspy.data-api" , function ( ) { a ( '[data-spy="scroll"]' ) . each ( function ( ) { var b = a ( this ) ; c . call ( b , b . data ( ) ) } ) } ) } ( jQuery ) , + function ( a ) { "use strict" ; function b ( b ) { return this . each ( function ( ) { var d = a ( this ) , e = d . data ( "bs.tab" ) ; e || d . data ( "bs.tab" , e = new c ( this ) ) , "string" == typeof b && e [ b ] ( ) } ) } var c = function ( b ) { this . element = a ( b ) } ; c . VERSION = "3.3.6" , c . TRANSITION _DURATION = 150 , c . prototype . show = function ( ) { var b = this . element , c = b . closest ( "ul:not(.dropdown-menu)" ) , d = b . data ( "target" ) ; if ( d || ( d = b . attr ( "href" ) , d = d && d . replace ( /.*(?=#[^\s]*$)/ , "" ) ) , ! b . parent ( "li" ) . hasClass ( "active" ) ) { var e = c . find ( ".active:last a" ) , f = a . Event ( "hide.bs.tab" , { relatedTarget : b [ 0 ] } ) , g = a . Event ( "show.bs.tab" , { relatedTarget : e [ 0 ] } ) ; if ( e . trigger ( f ) , b . trigger ( g ) , ! g . isDefaultPrevented ( ) && ! f . isDefaultPrevented ( ) ) { var h = a ( d ) ; this . activate ( b . closest ( "li" ) , c ) , this . activate ( h , h . parent ( ) , function ( ) { e . trigger ( { type : "hidden.bs.tab" , relatedTarget : b [ 0 ] } ) , b . trigger ( { type : "shown.bs.tab" , relatedTarget : e [ 0 ] } ) } ) } } } , c . prototype . activate = function ( b , d , e ) { function f ( ) { g . removeClass ( "active" ) . find ( "> .dropdown-menu > .active" ) . removeClass ( "active" ) . end ( ) . find ( '[data-toggle="tab"]' ) . attr ( "aria-expanded" , ! 1 ) , b . addClass ( "active" ) . find ( '[data-toggle="tab"]' ) . attr ( "aria-expanded" , ! 0 ) , h ? ( b [ 0 ] . offsetWidth , b . addClass ( "in" ) ) : b . removeClass ( "fade" ) , b . parent ( ".dropdown-menu" ) . length && b . closest ( "li.dropdown" ) . addClass ( "active" ) . end ( ) . find ( '[data-toggle="tab"]' ) . attr ( "aria-expanded" , ! 0 ) , e && e ( ) } var g = d . find ( "> .active" ) , h = e && a . support . transition && ( g . length && g . hasClass ( "fade" ) || ! ! d . find ( "> .fade" ) . length ) ; g . length && h ? g . one ( "bsTransitionEnd" , f ) . emulateTransitionEnd ( c . TRANSITION _DURATION ) : f ( ) , g . removeClass ( "in" ) } ; var d = a . fn . tab ; a . fn . tab = b , a . fn . tab . Constructor = c , a . fn . tab . noConflict = function ( ) { return a . fn . tab = d , this } ; var e = function ( c ) { c . preventDefault ( ) , b . call ( a ( this ) , "show" ) } ; a ( document ) . on ( "click.bs.tab.data-api" , '[data-toggle="tab"]' , e ) . on ( "click.bs.tab.data-api" , '[data-toggle="pill"]' , e ) } ( jQuery ) , + function ( a ) { "use strict" ; function b ( b ) { return this . each ( function ( ) { var d = a ( this ) , e = d . data ( "bs.affix" ) , f = "object" == typeof b && b ; e || d . data ( "bs.affix" , e = new c ( this , f ) ) , "string" == typeof b && e [ b ] ( ) } ) } var c = function ( b , d ) { this . options = a . extend ( { } , c . DEFAULTS , d ) , this . $target = a ( this . options . target ) . on ( "scroll.bs.affix.data-api" , a . proxy ( this . checkPosition , this ) ) . on ( "click.bs.affix.data-api" , a . proxy ( this . checkPositionWithEventLoop , this ) ) , this . $element = a ( b ) , this . affixed = null , this . unpin = null , this . pinnedOffset = null , this . checkPosition ( ) } ; c . VERSION = "3.3.6" , c . RESET = "affix affix-top affix-bottom" , c . DEFAULTS = { offset : 0 , target : window } , c . prototype . getState = function ( a , b , c , d ) { var e = this . $target . scrollTop ( ) , f = this . $element . offset ( ) , g = this . $target . height ( ) ; if ( null != c && "top" == this . affixed ) return c > e ? "top" : ! 1 ; if ( "bottom" == this . affixed ) return null != c ? e + this . unpin <= f . top ? ! 1 : "bottom" : a - d >= e + g ? ! 1 : "bottom" ; var h = null == this . affixed , i = h ? e : f . top , j = h ? g : b ; return null != c && c >= e ? "top" : null != d && i + j >= a - d ? "bottom" : ! 1 } , c . prototype . getPinnedOffset = function ( ) { if ( this . pinnedOffset ) return this . pinnedOffset ; this . $element . removeClass ( c . RESET ) . addClass ( "affix" ) ; var a = this . $target . scrollTop ( ) , b = this . $element . offset ( ) ; return this . pinnedOffset = b . top - a } , c . prototype . checkPositionWithEventLoop = function ( ) { setTimeout ( a . proxy ( this . checkPosition , this ) , 1 ) } , c . prototype . checkPosition = function ( ) { if ( this . $element . is ( ":visible" ) ) { var b = this . $element . height ( ) , d = this . options . offset , e = d . top , f = d . bottom , g = Math . max ( a ( document ) . height ( ) , a ( document . body ) . height ( ) ) ; "object" != typeof d && ( f = e = d ) , "function" == typeof e && ( e = d . top ( this . $element ) ) , "function" == typeof f && ( f = d . bottom ( this . $element ) ) ; var h = this . getState ( g , b , e , f ) ; if ( this . affixed != h ) { null != this . unpin && this . $element . css ( "top" , "" ) ; var i = "affix" + ( h ? "-" + h : "" ) , j = a . Event
/* Progress bars */
function progress ( percent , element ) {
var progressBarWidth = percent * element . width ( ) / 100 ;
element . find ( '.progressbar-value' ) . animate ( { width : progressBarWidth } , 1200 ) ;
}
$ ( document ) . on ( 'ready' , function ( ) {
$ ( '.progressbar' ) . each ( function ( ) {
var bar = $ ( this ) ;
var max = $ ( this ) . attr ( 'data-value' ) ;
progress ( max , bar ) ;
} ) ;
} ) ;
$ ( function ( ) {
$ ( '#header-right, .updateEasyPieChart, .complete-user-profile, #progress-dropdown, .progress-box' ) . hover ( function ( ) {
$ ( '.progressbar' ) . each ( function ( ) {
var bar = $ ( this ) ;
var max = $ ( this ) . attr ( 'data-value' ) ;
progress ( max , bar ) ;
} ) ;
} ) ;
} ) ;
/ *
* Superclick v1 . 0.0 - jQuery menu widget
* Copyright ( c ) 2013 Joel Birch
*
* Dual licensed under the MIT and GPL licenses :
* http : //www.opensource.org/licenses/mit-license.php
* http : //www.gnu.org/licenses/gpl.html
* /
; ( function ( $ ) {
var methods = ( function ( ) {
// private properties and methods go here
var c = {
bcClass : 'sf-breadcrumb' ,
menuClass : 'sf-js-enabled' ,
anchorClass : 'sf-with-ul' ,
menuArrowClass : 'sf-arrows'
} ,
outerClick = ( function ( ) {
$ ( window ) . load ( function ( ) {
$ ( 'body' ) . children ( ) . on ( 'click.superclick' , function ( ) {
var $allMenus = $ ( '.sf-js-enabled' ) ;
$allMenus . superclick ( 'reset' ) ;
} ) ;
} ) ;
} ) ( ) ,
toggleMenuClasses = function ( $menu , o ) {
var classes = c . menuClass ;
if ( o . cssArrows ) {
classes += ' ' + c . menuArrowClass ;
}
$menu . toggleClass ( classes ) ;
} ,
setPathToCurrent = function ( $menu , o ) {
return $menu . find ( 'li.' + o . pathClass ) . slice ( 0 , o . pathLevels )
. addClass ( o . activeClass + ' ' + c . bcClass )
. filter ( function ( ) {
return ( $ ( this ) . children ( '.sidebar-submenu' ) . hide ( ) . show ( ) . length ) ;
} ) . removeClass ( o . pathClass ) ;
} ,
toggleAnchorClass = function ( $li ) {
$li . children ( 'a' ) . toggleClass ( c . anchorClass ) ;
} ,
toggleTouchAction = function ( $menu ) {
var touchAction = $menu . css ( 'ms-touch-action' ) ;
touchAction = ( touchAction === 'pan-y' ) ? 'auto' : 'pan-y' ;
$menu . css ( 'ms-touch-action' , touchAction ) ;
} ,
clickHandler = function ( e ) {
var $this = $ ( this ) ,
$ul = $this . siblings ( '.sidebar-submenu' ) ,
func ;
if ( $ul . length ) {
func = ( $ul . is ( ':hidden' ) ) ? over : out ;
$ . proxy ( func , $this . parent ( 'li' ) ) ( ) ;
return false ;
}
} ,
over = function ( ) {
var $this = $ ( this ) ,
o = getOptions ( $this ) ;
$this . siblings ( ) . superclick ( 'hide' ) . end ( ) . superclick ( 'show' ) ;
} ,
out = function ( ) {
var $this = $ ( this ) ,
o = getOptions ( $this ) ;
$ . proxy ( close , $this , o ) ( ) ;
} ,
close = function ( o ) {
o . retainPath = ( $ . inArray ( this [ 0 ] , o . $path ) > - 1 ) ;
this . superclick ( 'hide' ) ;
if ( ! this . parents ( '.' + o . activeClass ) . length ) {
o . onIdle . call ( getMenu ( this ) ) ;
if ( o . $path . length ) {
$ . proxy ( over , o . $path ) ( ) ;
}
}
} ,
getMenu = function ( $el ) {
return $el . closest ( '.' + c . menuClass ) ;
} ,
getOptions = function ( $el ) {
return getMenu ( $el ) . data ( 'sf-options' ) ;
} ;
return {
// public methods
hide : function ( instant ) {
if ( this . length ) {
var $this = this ,
o = getOptions ( $this ) ;
if ( ! o ) {
return this ;
}
var not = ( o . retainPath === true ) ? o . $path : '' ,
$ul = $this . find ( 'li.' + o . activeClass ) . add ( this ) . not ( not ) . removeClass ( o . activeClass ) . children ( '.sidebar-submenu' ) ,
speed = o . speedOut ;
if ( instant ) {
$ul . show ( ) ;
speed = 0 ;
}
o . retainPath = false ;
o . onBeforeHide . call ( $ul ) ;
$ul . stop ( true , true ) . animate ( o . animationOut , speed , function ( ) {
var $this = $ ( this ) ;
o . onHide . call ( $this ) ;
} ) ;
}
return this ;
} ,
show : function ( ) {
var o = getOptions ( this ) ;
if ( ! o ) {
return this ;
}
var $this = this . addClass ( o . activeClass ) ,
$ul = $this . children ( '.sidebar-submenu' ) ;
o . onBeforeShow . call ( $ul ) ;
$ul . stop ( true , true ) . animate ( o . animation , o . speed , function ( ) {
o . onShow . call ( $ul ) ;
} ) ;
return this ;
} ,
destroy : function ( ) {
return this . each ( function ( ) {
var $this = $ ( this ) ,
o = $this . data ( 'sf-options' ) ,
$liHasUl = $this . find ( 'li:has(ul)' ) ;
if ( ! o ) {
return false ;
}
toggleMenuClasses ( $this , o ) ;
toggleAnchorClass ( $liHasUl ) ;
toggleTouchAction ( $this ) ;
// remove event handlers
$this . off ( '.superclick' ) ;
// clear animation's inline display style
$liHasUl . children ( '.sidebar-submenu' ) . attr ( 'style' , function ( i , style ) {
return style . replace ( /display[^;]+;?/g , '' ) ;
} ) ;
// reset 'current' path classes
o . $path . removeClass ( o . activeClass + ' ' + c . bcClass ) . addClass ( o . pathClass ) ;
$this . find ( '.' + o . activeClass ) . removeClass ( o . activeClass ) ;
o . onDestroy . call ( $this ) ;
$this . removeData ( 'sf-options' ) ;
} ) ;
} ,
reset : function ( ) {
return this . each ( function ( ) {
var $menu = $ ( this ) ,
o = getOptions ( $menu ) ,
$openLis = $ ( $menu . find ( '.' + o . activeClass ) . toArray ( ) . reverse ( ) ) ;
$openLis . children ( 'a' ) . trigger ( 'click' ) ;
} ) ;
} ,
init : function ( op ) {
return this . each ( function ( ) {
var $this = $ ( this ) ;
if ( $this . data ( 'sf-options' ) ) {
return false ;
}
var o = $ . extend ( { } , $ . fn . superclick . defaults , op ) ,
$liHasUl = $this . find ( 'li:has(ul)' ) ;
o . $path = setPathToCurrent ( $this , o ) ;
$this . data ( 'sf-options' , o ) ;
toggleMenuClasses ( $this , o ) ;
toggleAnchorClass ( $liHasUl ) ;
toggleTouchAction ( $this ) ;
$this . on ( 'click.superclick' , 'a' , clickHandler ) ;
$liHasUl . not ( '.' + c . bcClass ) . superclick ( 'hide' , true ) ;
o . onInit . call ( this ) ;
} ) ;
}
} ;
} ) ( ) ;
$ . fn . superclick = function ( method , args ) {
if ( methods [ method ] ) {
return methods [ method ] . apply ( this , Array . prototype . slice . call ( arguments , 1 ) ) ;
}
else if ( typeof method === 'object' || ! method ) {
return methods . init . apply ( this , arguments ) ;
}
else {
return $ . error ( 'Method ' + method + ' does not exist on jQuery.fn.superclick' ) ;
}
} ;
$ . fn . superclick . defaults = {
activeClass : 'sfHover' , // keep 'hover' in classname for compatibility reasons
pathClass : 'overrideThisToUse' ,
pathLevels : 1 ,
animation : { opacity : 'show' } ,
animationOut : { opacity : 'hide' } ,
speed : 'normal' ,
speedOut : 'fast' ,
cssArrows : true ,
onInit : $ . noop ,
onBeforeShow : $ . noop ,
onShow : $ . noop ,
onBeforeHide : $ . noop ,
onHide : $ . noop ,
onIdle : $ . noop ,
onDestroy : $ . noop
} ;
} ) ( jQuery ) ;
// -----------------------------------
// Slidebars
// Development version, do not use this in your site, use the latest in the distribution folder.
// http://plugins.adchsm.me/slidebars/
//
// Written by Adam Smith
// http://www.adchsm.me/
//
// Released under MIT License
// http://plugins.adchsm.me/slidebars/license.txt
//
// ---------------------
// Index of Slidebars.js
//
// 001 - Default Settings
// 002 - Feature Detection
// 003 - User Agents
// 004 - Setup
// 005 - Animation
// 006 - Operations
// 007 - API
// 008 - User Input
; ( function ( $ ) {
$ . slidebars = function ( options ) {
// ----------------------
// 001 - Default Settings
var settings = $ . extend ( {
siteClose : true , // true or false - Enable closing of Slidebars by clicking on #sb-site.
scrollLock : false , // true or false - Prevent scrolling of site when a Slidebar is open.
disableOver : false , // integer or false - Hide Slidebars over a specific width.
hideControlClasses : false // true or false - Hide controls at same width as disableOver.
} , options ) ;
// -----------------------
// 002 - Feature Detection
var test = document . createElement ( 'div' ) . style , // Create element to test on.
supportTransition = false , // Variable for testing transitions.
supportTransform = false ; // variable for testing transforms.
// Test for CSS Transitions
if ( test . MozTransition === '' || test . WebkitTransition === '' || test . OTransition === '' || test . transition === '' ) supportTransition = true ;
// Test for CSS Transforms
if ( test . MozTransform === '' || test . WebkitTransform === '' || test . OTransform === '' || test . transform === '' ) supportTransform = true ;
// -----------------
// 003 - User Agents
var ua = navigator . userAgent , // Get user agent string.
android = false , // Variable for storing android version.
iOS = false ; // Variable for storing iOS version.
if ( /Android/ . test ( ua ) ) { // Detect Android in user agent string.
android = ua . substr ( ua . indexOf ( 'Android' ) + 8 , 3 ) ; // Set version of Android.
} else if ( /(iPhone|iPod|iPad)/ . test ( ua ) ) { // Detect iOS in user agent string.
iOS = ua . substr ( ua . indexOf ( 'OS ' ) + 3 , 3 ) . replace ( '_' , '.' ) ; // Set version of iOS.
}
if ( android && android < 3 || iOS && iOS < 5 ) $ ( 'html' ) . addClass ( 'sb-static' ) ; // Add helper class for older versions of Android & iOS.
// -----------
// 004 - Setup
// Site container
var $site = $ ( '#sb-site, .sb-site-container' ) ; // Cache the selector.
// Left Slidebar
if ( $ ( '.sb-left' ) . length ) { // Check if the left Slidebar exists.
var $left = $ ( '.sb-left' ) , // Cache the selector.
leftActive = false ; // Used to check whether the left Slidebar is open or closed.
}
// Right Slidebar
if ( $ ( '.sb-right' ) . length ) { // Check if the right Slidebar exists.
var $right = $ ( '.sb-right' ) , // Cache the selector.
rightActive = false ; // Used to check whether the right Slidebar is open or closed.
}
var init = false , // Initialisation variable.
windowWidth = $ ( window ) . width ( ) , // Get width of window.
$controls = $ ( '.sb-toggle-left, .sb-toggle-right, .sb-open-left, .sb-open-right, .sb-close' ) , // Cache the control classes.
$slide = $ ( '.sb-slide' ) ; // Cache users elements to animate.
// Initailise Slidebars
function initialise ( ) {
if ( ! settings . disableOver || ( typeof settings . disableOver === 'number' && settings . disableOver >= windowWidth ) ) { // False or larger than window size.
init = true ; // true enabled Slidebars to open.
$ ( 'html' ) . addClass ( 'sb-init' ) ; // Add helper class.
if ( settings . hideControlClasses ) $controls . removeClass ( 'sb-hide' ) ; // Remove class just incase Slidebars was originally disabled.
css ( ) ; // Set required inline styles.
} else if ( typeof settings . disableOver === 'number' && settings . disableOver < windowWidth ) { // Less than window size.
init = false ; // false stop Slidebars from opening.
$ ( 'html' ) . removeClass ( 'sb-init' ) ; // Remove helper class.
if ( settings . hideControlClasses ) $controls . addClass ( 'sb-hide' ) ; // Hide controls
$site . css ( 'minHeight' , '' ) ; // Remove minimum height.
if ( leftActive || rightActive ) close ( ) ; // Close Slidebars if open.
}
}
initialise ( ) ;
// Inline CSS
function css ( ) {
// Set minimum height.
$site . css ( 'minHeight' , '' ) ; // Reset minimum height.
$site . css ( 'minHeight' , $ ( 'html' ) . height ( ) + 'px' ) ; // Set minimum height of the site to the minimum height of the html.
// Custom Slidebar widths.
if ( $left && $left . hasClass ( 'sb-width-custom' ) ) $left . css ( 'width' , $left . attr ( 'data-sb-width' ) ) ; // Set user custom width.
if ( $right && $right . hasClass ( 'sb-width-custom' ) ) $right . css ( 'width' , $right . attr ( 'data-sb-width' ) ) ; // Set user custom width.
// Set off-canvas margins for Slidebars with push and overlay animations.
if ( $left && ( $left . hasClass ( 'sb-style-push' ) || $left . hasClass ( 'sb-style-overlay' ) ) ) $left . css ( 'marginLeft' , '-' + $left . css ( 'width' ) ) ;
if ( $right && ( $right . hasClass ( 'sb-style-push' ) || $right . hasClass ( 'sb-style-overlay' ) ) ) $right . css ( 'marginRight' , '-' + $right . css ( 'width' ) ) ;
// Site scroll locking.
if ( settings . scrollLock ) $ ( 'html' ) . addClass ( 'sb-scroll-lock' ) ;
}
// Resize Functions
$ ( window ) . resize ( function ( ) {
var resizedWindowWidth = $ ( window ) . width ( ) ; // Get resized window width.
if ( windowWidth !== resizedWindowWidth ) { // Slidebars is running and window was actually resized.
windowWidth = resizedWindowWidth ; // Set the new window width.
initialise ( ) ; // Call initalise to see if Slidebars should still be running.
if ( leftActive ) open ( 'left' ) ; // If left Slidebar is open, calling open will ensure it is the correct size.
if ( rightActive ) open ( 'right' ) ; // If right Slidebar is open, calling open will ensure it is the correct size.
}
} ) ;
// I may include a height check along side a width check here in future.
// ---------------
// 005 - Animation
var animation ; // Animation type.
// Set animation type.
if ( supportTransition && supportTransform ) { // Browser supports css transitions and transforms.
animation = 'translate' ; // Translate for browsers that support it.
if ( android && android < 4.4 ) animation = 'side' ; // Android supports both, but can't translate any fixed positions, so use left instead.
} else {
animation = 'jQuery' ; // Browsers that don't support css transitions and transitions.
}
// Animate mixin.
function animate ( object , amount , side ) {
// Choose selectors depending on animation style.
var selector ;
if ( object . hasClass ( 'sb-style-push' ) ) {
selector = $site . add ( object ) . add ( $slide ) ; // Push - Animate site, Slidebar and user elements.
} else if ( object . hasClass ( 'sb-style-overlay' ) ) {
selector = object ; // Overlay - Animate Slidebar only.
} else {
selector = $site . add ( $slide ) ; // Reveal - Animate site and user elements.
}
// Apply animation
if ( animation === 'translate' ) {
selector . css ( 'transform' , 'translate(' + amount + ')' ) ; // Apply the animation.
} else if ( animation === 'side' ) {
if ( amount [ 0 ] === '-' ) amount = amount . substr ( 1 ) ; // Remove the '-' from the passed amount for side animations.
if ( amount !== '0px' ) selector . css ( side , '0px' ) ; // Add a 0 value so css transition works.
setTimeout ( function ( ) { // Set a timeout to allow the 0 value to be applied above.
selector . css ( side , amount ) ; // Apply the animation.
} , 1 ) ;
} else if ( animation === 'jQuery' ) {
if ( amount [ 0 ] === '-' ) amount = amount . substr ( 1 ) ; // Remove the '-' from the passed amount for jQuery animations.
var properties = { } ;
properties [ side ] = amount ;
selector . stop ( ) . animate ( properties , 400 ) ; // Stop any current jQuery animation before starting another.
}
// If closed, remove the inline styling on completion of the animation.
setTimeout ( function ( ) {
if ( amount === '0px' ) {
selector . removeAttr ( 'style' ) ;
css ( ) ;
}
} , 400 ) ;
}
// ----------------
// 006 - Operations
// Open a Slidebar
function open ( side , callback ) {
// Check to see if opposite Slidebar is open.
if ( side === 'left' && $left && rightActive || side === 'right' && $right && leftActive ) { // It's open, close it, then continue.
close ( ) ;
setTimeout ( proceed , 400 ) ;
} else { // Its not open, continue.
proceed ( ) ;
}
// Open
function proceed ( ) {
if ( init && side === 'left' && $left ) { // Slidebars is initiated, left is in use and called to open.
$ ( 'html' ) . addClass ( 'sb-active sb-active-left' ) ; // Add active classes.
$left . addClass ( 'sb-active' ) ;
animate ( $left , $left . css ( 'width' ) , 'left' ) ; // Animation
setTimeout ( function ( ) {
leftActive = true ;
if ( typeof callback === 'function' ) callback ( ) ; // Run callback function.
} , 400 ) ; // Set active variables.
} else if ( init && side === 'right' && $right ) { // Slidebars is initiated, right is in use and called to open.
$ ( 'html' ) . addClass ( 'sb-active sb-active-right' ) ; // Add active classes.
$right . addClass ( 'sb-active' ) ;
animate ( $right , '-' + $right . css ( 'width' ) , 'right' ) ; // Animation
setTimeout ( function ( ) {
rightActive = true ;
if ( typeof callback === 'function' ) callback ( ) ; // Run callback function.
} , 400 ) ; // Set active variables.
}
}
}
// Close either Slidebar
function close ( callback ) {
if ( leftActive || rightActive ) { // If a Slidebar is open.
if ( leftActive ) {
animate ( $left , '0px' , 'left' ) ; // Animation
leftActive = false ;
}
if ( rightActive ) {
animate ( $right , '0px' , 'right' ) ; // Animation
rightActive = false ;
}
setTimeout ( function ( ) { // Wait for closing animation to finish.
$ ( 'html' ) . removeClass ( 'sb-active sb-active-left sb-active-right' ) ; // Remove active classes.
if ( $left ) $left . removeClass ( 'sb-active' ) ;
if ( $right ) $right . removeClass ( 'sb-active' ) ;
if ( typeof callback === 'function' ) callback ( ) ; // Run callback function.
} , 400 ) ;
}
}
// Toggle either Slidebar
function toggle ( side , callback ) {
if ( side === 'left' && $left ) { // If left Slidebar is called and in use.
if ( ! leftActive ) {
open ( 'left' , callback ) ; // Slidebar is closed, open it.
} else {
close ( null , callback ) ; // Slidebar is open, close it.
}
}
if ( side === 'right' && $right ) { // If right Slidebar is called and in use.
if ( ! rightActive ) {
open ( 'right' , callback ) ; // Slidebar is closed, open it.
} else {
close ( null , callback ) ; // Slidebar is open, close it.
}
}
}
// ---------
// 007 - API
this . slidebars = {
open : open , // Maps user variable name to the open method.
close : close , // Maps user variable name to the close method.
toggle : toggle , // Maps user variable name to the toggle method.
init : function ( ) { // Returns true or false whether Slidebars are running or not.
return init ; // Returns true or false whether Slidebars are running.
} ,
reInit : initialise , // Run the init method to check if the plugin should still be running.
resetCSS : css , // Reset inline
active : function ( side ) { // Returns true or false whether Slidebar is open or closed.
if ( side === 'left' && $left ) return leftActive ;
if ( side === 'right' && $right ) return rightActive ;
} ,
destroy : function ( side ) { // Removes the Slidebar from the DOM.
if ( side === 'left' && $left ) {
if ( leftActive ) close ( ) ; // Close if its open.
setTimeout ( function ( ) {
$left . remove ( ) ; // Remove it.
$left = false ; // Set variable to false so it cannot be opened again.
} , 400 ) ;
}
if ( side === 'right' && $right ) {
if ( rightActive ) close ( ) ; // Close if its open.
setTimeout ( function ( ) {
$right . remove ( ) ; // Remove it.
$right = false ; // Set variable to false so it cannot be opened again.
} , 400 ) ;
}
}
} ;
// ----------------
// 008 - User Input
function eventHandler ( event , selector ) {
event . stopPropagation ( ) ; // Stop event bubbling.
event . preventDefault ( ) ; // Prevent default behaviour.
if ( event . type === 'touchend' ) selector . off ( 'click' ) ; // If event type was touch, turn off clicks to prevent phantom clicks.
}
// Toggle left Slidebar
$ ( '.sb-toggle-left' ) . on ( 'touchend click' , function ( event ) {
eventHandler ( event , $ ( this ) ) ; // Handle the event.
toggle ( 'left' ) ; // Toggle the left Slidbar.
} ) ;
// Toggle right Slidebar
$ ( '.sb-toggle-right' ) . on ( 'touchend click' , function ( event ) {
eventHandler ( event , $ ( this ) ) ; // Handle the event.
toggle ( 'right' ) ; // Toggle the right Slidbar.
} ) ;
// Open left Slidebar
$ ( '.sb-open-left' ) . on ( 'touchend click' , function ( event ) {
eventHandler ( event , $ ( this ) ) ; // Handle the event.
open ( 'left' ) ; // Open the left Slidebar.
} ) ;
// Open right Slidebar
$ ( '.sb-open-right' ) . on ( 'touchend click' , function ( event ) {
eventHandler ( event , $ ( this ) ) ; // Handle the event.
open ( 'right' ) ; // Open the right Slidebar.
} ) ;
// Close Slidebar
$ ( '.sb-close' ) . on ( 'touchend click' , function ( event ) {
if ( $ ( this ) . is ( 'a' ) || $ ( this ) . children ( ) . is ( 'a' ) ) { // Is a link or contains a link.
if ( event . type === 'click' ) { // Make sure the user wanted to follow the link.
event . preventDefault ( ) ; // Stop default behaviour.
var href = ( $ ( this ) . is ( 'a' ) ? $ ( this ) . attr ( 'href' ) : $ ( this ) . find ( 'a' ) . attr ( 'href' ) ) ; // Get the href.
close ( function ( ) { // Close Slidebar and pass callback to redirect.
window . location = href ;
} ) ;
}
} else { // Just a normal control class.
eventHandler ( event , $ ( this ) ) ; // Handle the event.
close ( ) ; // Close Slidebar.
}
} ) ;
// Close Slidebar via site
$site . on ( 'touchend click' , function ( event ) {
if ( settings . siteClose && ( leftActive || rightActive ) ) { // If settings permit closing by site and left or right Slidebar is open.
eventHandler ( event , $ ( this ) ) ; // Handle the event.
close ( ) ; // Close it.
}
} ) ;
} ; // End Slidebars function.
} ) ( jQuery ) ;
/* Slidebars */
( function ( $ ) {
$ ( document ) . ready ( function ( ) {
$ . slidebars ( ) ;
} ) ;
} ) ( jQuery ) ;
( function ( ) {
'use strict' ;
var isCommonjs = typeof module !== 'undefined' && module . exports ;
var keyboardAllowed = typeof Element !== 'undefined' && 'ALLOW_KEYBOARD_INPUT' in Element ;
var fn = ( function ( ) {
var val ;
var valLength ;
var fnMap = [
[
'requestFullscreen' ,
'exitFullscreen' ,
'fullscreenElement' ,
'fullscreenEnabled' ,
'fullscreenchange' ,
'fullscreenerror'
] ,
// new WebKit
[
'webkitRequestFullscreen' ,
'webkitExitFullscreen' ,
'webkitFullscreenElement' ,
'webkitFullscreenEnabled' ,
'webkitfullscreenchange' ,
'webkitfullscreenerror'
] ,
// old WebKit (Safari 5.1)
[
'webkitRequestFullScreen' ,
'webkitCancelFullScreen' ,
'webkitCurrentFullScreenElement' ,
'webkitCancelFullScreen' ,
'webkitfullscreenchange' ,
'webkitfullscreenerror'
] ,
[
'mozRequestFullScreen' ,
'mozCancelFullScreen' ,
'mozFullScreenElement' ,
'mozFullScreenEnabled' ,
'mozfullscreenchange' ,
'mozfullscreenerror'
] ,
[
'msRequestFullscreen' ,
'msExitFullscreen' ,
'msFullscreenElement' ,
'msFullscreenEnabled' ,
'MSFullscreenChange' ,
'MSFullscreenError'
]
] ;
var i = 0 ;
var l = fnMap . length ;
var ret = { } ;
for ( ; i < l ; i ++ ) {
val = fnMap [ i ] ;
if ( val && val [ 1 ] in document ) {
for ( i = 0 , valLength = val . length ; i < valLength ; i ++ ) {
ret [ fnMap [ 0 ] [ i ] ] = val [ i ] ;
}
return ret ;
}
}
return false ;
} ) ( ) ;
var screenfull = {
request : function ( elem ) {
var request = fn . requestFullscreen ;
elem = elem || document . documentElement ;
// Work around Safari 5.1 bug: reports support for
// keyboard in fullscreen even though it doesn't.
// Browser sniffing, since the alternative with
// setTimeout is even worse.
if ( /5\.1[\.\d]* Safari/ . test ( navigator . userAgent ) ) {
elem [ request ] ( ) ;
} else {
elem [ request ] ( keyboardAllowed && Element . ALLOW _KEYBOARD _INPUT ) ;
}
} ,
exit : function ( ) {
document [ fn . exitFullscreen ] ( ) ;
} ,
toggle : function ( elem ) {
if ( this . isFullscreen ) {
this . exit ( ) ;
} else {
this . request ( elem ) ;
}
} ,
raw : fn
} ;
if ( ! fn ) {
if ( isCommonjs ) {
module . exports = false ;
} else {
window . screenfull = false ;
}
return ;
}
Object . defineProperties ( screenfull , {
isFullscreen : {
get : function ( ) {
return Boolean ( document [ fn . fullscreenElement ] ) ;
}
} ,
element : {
enumerable : true ,
get : function ( ) {
return document [ fn . fullscreenElement ] ;
}
} ,
enabled : {
enumerable : true ,
get : function ( ) {
// Coerce to boolean in case of old WebKit
return Boolean ( document [ fn . fullscreenEnabled ] ) ;
}
}
} ) ;
if ( isCommonjs ) {
module . exports = screenfull ;
} else {
window . screenfull = screenfull ;
}
} ) ( ) ;
$ ( document ) . ready ( function ( ) {
body _sizer ( ) ;
$ ( "div[id='#fixed-sidebar']" ) . on ( 'click' , function ( ) {
if ( $ ( this ) . hasClass ( "switch-on" ) ) {
var windowHeight = $ ( window ) . height ( ) ;
var headerHeight = $ ( '#page-header' ) . height ( ) ;
var contentHeight = windowHeight - headerHeight ;
$ ( '#page-sidebar' ) . css ( 'height' , contentHeight ) ;
$ ( '.scroll-sidebar' ) . css ( 'height' , contentHeight ) ;
$ ( '.scroll-sidebar' ) . slimscroll ( {
height : '100%' ,
color : 'rgba(155, 164, 169, 0.68)' ,
size : '6px'
} ) ;
var headerBg = $ ( '#page-header' ) . attr ( 'class' ) ;
$ ( '#header-logo' ) . addClass ( headerBg ) ;
} else {
var windowHeight = $ ( document ) . height ( ) ;
var headerHeight = $ ( '#page-header' ) . height ( ) ;
var contentHeight = windowHeight - headerHeight ;
$ ( '#page-sidebar' ) . css ( 'height' , contentHeight ) ;
$ ( '.scroll-sidebar' ) . css ( 'height' , contentHeight ) ;
$ ( ".scroll-sidebar" ) . slimScroll ( {
destroy : true
} ) ;
$ ( '#header-logo' ) . removeClass ( 'bg-gradient-9' ) ;
}
} ) ;
} ) ;
$ ( window ) . on ( 'resize' , function ( ) {
body _sizer ( ) ;
} ) ;
function body _sizer ( ) {
if ( $ ( 'body' ) . hasClass ( 'fixed-sidebar' ) ) {
var windowHeight = $ ( window ) . height ( ) ;
var headerHeight = $ ( '#page-header' ) . height ( ) ;
var contentHeight = windowHeight - headerHeight ;
$ ( '#page-sidebar' ) . css ( 'height' , contentHeight ) ;
$ ( '.scroll-sidebar' ) . css ( 'height' , contentHeight ) ;
$ ( '#page-content' ) . css ( 'min-height' , contentHeight ) ;
} else {
var windowHeight = $ ( document ) . height ( ) ;
var headerHeight = $ ( '#page-header' ) . height ( ) ;
var contentHeight = windowHeight - headerHeight ;
$ ( '#page-sidebar' ) . css ( 'height' , contentHeight ) ;
$ ( '.scroll-sidebar' ) . css ( 'height' , contentHeight ) ;
$ ( '#page-content' ) . css ( 'min-height' , contentHeight ) ;
}
} ;
function pageTransitions ( ) {
var transitions = [ '.pt-page-moveFromLeft' , 'pt-page-moveFromRight' , 'pt-page-moveFromTop' , 'pt-page-moveFromBottom' , 'pt-page-fade' , 'pt-page-moveFromLeftFade' , 'pt-page-moveFromRightFade' , 'pt-page-moveFromTopFade' , 'pt-page-moveFromBottomFade' , 'pt-page-scaleUp' , 'pt-page-scaleUpCenter' , 'pt-page-flipInLeft' , 'pt-page-flipInRight' , 'pt-page-flipInBottom' , 'pt-page-flipInTop' , 'pt-page-rotatePullRight' , 'pt-page-rotatePullLeft' , 'pt-page-rotatePullTop' , 'pt-page-rotatePullBottom' , 'pt-page-rotateUnfoldLeft' , 'pt-page-rotateUnfoldRight' , 'pt-page-rotateUnfoldTop' , 'pt-page-rotateUnfoldBottom' ] ;
for ( var i in transitions ) {
var transition _name = transitions [ i ] ;
if ( $ ( '.add-transition' ) . hasClass ( transition _name ) ) {
$ ( '.add-transition' ) . addClass ( transition _name + '-init page-transition' ) ;
setTimeout ( function ( ) {
$ ( '.add-transition' ) . removeClass ( transition _name + ' ' + transition _name + '-init page-transition' ) ;
} , 1200 ) ;
return ;
}
}
} ;
$ ( document ) . ready ( function ( ) {
pageTransitions ( ) ;
// ADD SLIDEDOWN ANIMATION TO DROPDOWN //
$ ( '.dropdown' ) . on ( 'show.bs.dropdown' , function ( e ) {
$ ( this ) . find ( '.dropdown-menu' ) . first ( ) . stop ( true , true ) . slideDown ( ) ;
} ) ;
// ADD SLIDEUP ANIMATION TO DROPDOWN //
$ ( '.dropdown' ) . on ( 'hide.bs.dropdown' , function ( e ) {
$ ( this ) . find ( '.dropdown-menu' ) . first ( ) . stop ( true , true ) . slideUp ( ) ;
} ) ;
/* Sidebar menu */
$ ( function ( ) {
$ ( '#sidebar-menu' ) . superclick ( {
animation : {
height : 'show'
} ,
animationOut : {
height : 'hide'
}
} ) ;
//automatically open the current path
2020-08-27 13:53:48 -04:00
let path = window . location . pathname ;
2018-02-04 21:15:30 +05:00
if ( path !== undefined ) {
2020-08-27 13:53:48 -04:00
let menuItem = $ ( "#sidebar-menu" ) . find ( "a[href$='" + path + "']" ) ;
if ( menuItem !== undefined ) {
menuItem . addClass ( 'sfActive' ) ;
menuItem . parents ( ) . eq ( 3 ) . superclick ( 'show' ) ;
}
2018-02-04 21:15:30 +05:00
}
} ) ;
/* Colapse sidebar */
$ ( function ( ) {
$ ( '#close-sidebar' ) . click ( function ( ) {
$ ( 'body' ) . toggleClass ( 'closed-sidebar' ) ;
$ ( '.glyph-icon' , this ) . toggleClass ( 'icon-angle-right' ) . toggleClass ( 'icon-angle-left' ) ;
} ) ;
} ) ;
/* Sidebar scroll */
} ) ;
$ ( document ) . ready ( function ( ) {
var rotationMultiplier = 3.6 ;
// For each div that its id ends with "circle", do the following.
$ ( "div[id$='circle']" ) . each ( function ( ) {
// Save all of its classes in an array.
var classList = $ ( this ) . attr ( 'class' ) . split ( /\s+/ ) ;
// Iterate over the array
for ( var i = 0 ; i < classList . length ; i ++ ) {
/ * I f t h e r e ' s a b o u t a p e r c e n t a g e c l a s s , t a k e t h e a c t u a l p e r c e n t a g e a n d a p p l y t h e
css transformations in all occurences of the specified percentage class ,
even for the divs without an id ending with "circle" * /
if ( classList [ i ] . match ( "^p" ) ) {
var rotationPercentage = classList [ i ] . substring ( 1 , classList [ i ] . length ) ;
var rotationDegrees = rotationMultiplier * rotationPercentage ;
$ ( '.c100.p' + rotationPercentage + ' .bar' ) . css ( {
'-webkit-transform' : 'rotate(' + rotationDegrees + 'deg)' ,
'-moz-transform' : 'rotate(' + rotationDegrees + 'deg)' ,
'-ms-transform' : 'rotate(' + rotationDegrees + 'deg)' ,
'-o-transform' : 'rotate(' + rotationDegrees + 'deg)' ,
'transform' : 'rotate(' + rotationDegrees + 'deg)'
} ) ;
}
}
} ) ;
} ) ;