2021-04-14 06:42:32 +00:00
/ * !
2021-11-09 03:43:23 +00:00
* ZUI : Standard edition - v1 . 10.0 - 2021 - 11 - 04
2021-04-14 06:42:32 +00:00
* http : //openzui.com
* GitHub : https : //github.com/easysoft/zui.git
2021-07-22 09:34:25 +00:00
* Copyright ( c ) 2021 cnezsoft . com ; Licensed MIT
2021-04-14 06:42:32 +00:00
* /
/*! Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*/
2021-11-09 03:43:23 +00:00
! function ( t , e , i ) { "use strict" ; if ( "undefined" == typeof t ) throw new Error ( "ZUI requires jQuery" ) ; t . zui || ( t . zui = function ( e ) { t . isPlainObject ( e ) && t . extend ( t . zui , e ) } ) ; var n = { all : - 1 , left : 0 , middle : 1 , right : 2 } , o = 0 ; t . zui ( { uuid : function ( t ) { var e = 1e5 * ( Date . now ( ) - 1580890015292 ) + 10 * Math . floor ( 1e4 * Math . random ( ) ) + o ++ % 10 ; return t ? e : e . toString ( 36 ) } , callEvent : function ( t , e , n ) { if ( "function" == typeof t ) { n !== i && ( t = t . bind ( n ) ) ; var o = t ( e ) ; return e && ( e . result = o ) , ! ( o !== i && ! o ) } return 1 } , strCode : function ( t ) { var e = 0 ; if ( "string" != typeof t && ( t = String ( t ) ) , t && t . length ) for ( var i = 0 ; i < t . length ; ++ i ) e += ( i + 1 ) * t . charCodeAt ( i ) ; return e } , getMouseButtonCode : function ( t ) { return "number" != typeof t && ( t = n [ t ] ) , t !== i && null !== t || ( t = - 1 ) , t } , defaultLang : "en" , clientLang : function ( ) { var i , n = e . config ; if ( "undefined" != typeof n && n . clientLang && ( i = n . clientLang ) , ! i ) { var o = t ( "html" ) . attr ( "lang" ) ; i = o ? o : navigator . userLanguage || navigator . userLanguage || t . zui . defaultLang } return i . replace ( "-" , "_" ) . toLowerCase ( ) } , langDataMap : { } , addLangData : function ( e , i , n ) { var o = { } ; n && i && e ? ( o [ i ] = { } , o [ i ] [ e ] = n ) : e && i && ! n ? ( n = i , t . each ( n , function ( t ) { o [ t ] = { } , o [ t ] [ e ] = n [ t ] } ) ) : ! e || i || n || t . each ( n , function ( e ) { var i = n [ e ] ; t . each ( i , function ( t ) { o [ t ] || ( o [ t ] = { } ) , o [ t ] [ e ] = i [ t ] } ) } ) , t . extend ( ! 0 , t . zui . langDataMap , o ) } , getLangData : function ( e , i , n ) { if ( ! arguments . length ) return t . extend ( { } , t . zui . langDataMap ) ; if ( 1 === arguments . length ) return t . extend ( { } , t . zui . langDataMap [ e ] ) ; if ( 2 === arguments . length ) { var o = t . zui . langDataMap [ e ] ; return o ? i ? o [ i ] : o : { } } if ( 3 === arguments . length ) { i = i || t . zui . clientLang ( ) ; var o = t . zui . langDataMap [ e ] , a = o ? o [ i ] : { } ; return t . extend ( ! 0 , { } , n [ i ] || n . en || n . zh _cn , a ) } return null } , lang : function ( ) { return arguments . length && t . isPlainObject ( arguments [ arguments . length - 1 ] ) ? t . zui . addLangData . apply ( null , arguments ) : t . zui . getLangData . apply ( null , arguments ) } , _scrollbarWidth : 0 , checkBodyScrollbar : function ( ) { if ( document . body . clientWidth >= e . innerWidth ) return 0 ; if ( ! t . zui . _scrollbarWidth ) { var i = document . createElement ( "div" ) ; i . className = "scrollbar-measure" , document . body . appendChild ( i ) , t . zui . _scrollbarWidth = i . offsetWidth - i . clientWidth , document . body . removeChild ( i ) } return t . zui . _scrollbarWidth } , fixBodyScrollbar : function ( ) { if ( t . zui . checkBodyScrollbar ( ) ) { var e = t ( "body" ) , i = parseInt ( e . css ( "padding-right" ) || 0 , 10 ) ; return t . zui . _scrollbarWidth && e . css ( { paddingRight : i + t . zui . _scrollbarWidth , overflowY : "hidden" } ) , ! 0 } } , resetBodyScrollbar : function ( ) { t ( "body" ) . css ( { paddingRight : "" , overflowY : "" } ) } } ) , t . fn . callEvent = function ( e , n , o ) { var a = t ( this ) , r = e . indexOf ( ".zui." ) , s = r < 0 ? e : e . substring ( 0 , r ) , l = t . Event ( s , n ) ; if ( o === i && r > 0 && ( o = a . data ( e . substring ( r + 1 ) ) ) , o && o . options ) { var d = o . options [ s ] ; "function" == typeof d && ( l . result = t . zui . callEvent ( d , l , o ) ) } return a . trigger ( l ) , l } , t . fn . callComEvent = function ( t , e , n ) { n === i || Array . isArray ( n ) || ( n = [ n ] ) ; var o , a = this ; a . trigger ( e , n ) ; var r = t . options [ e ] ; return r && ( o = r . apply ( t , n ) ) , o } } ( jQuery , window , void 0 ) , function ( t ) { "use strict" ; t . fn . fixOlPd = function ( e ) { return e = e || 10 , this . each ( function ( ) { var i = t ( this ) ; i . css ( "paddingLeft" , Math . ceil ( Math . log10 ( i . children ( ) . length ) ) * e + 10 ) } ) } , t ( function ( ) { t ( ".ol-pd-fix,.article ol" ) . fixOlPd ( ) } ) } ( jQuery ) , + function ( t ) { "use strict" ; var e = function ( i , n ) { this . $element = t ( i ) , this . options = t . extend ( { } , e . DEFAULTS , n ) , this . isLoading = ! 1 } ; e . DEFAULTS = { loadingText : "loading..." } , e . prototype . setState = function ( t ) { var e = "disabled" , i = this . $element , n = i . is ( "input" ) ? "val" : "html" , o = i . data ( ) ; t += "Text" , o . resetText || i . data ( "resetText" , i [ n ] ( ) ) , i [ n ] ( o [ t ] || this . options [ t ] ) , setTimeout ( function ( ) { "loadingText" == t ? ( this . isLoading = ! 0 , i . addClass ( e ) . attr ( e , e ) ) : this . isLoading && ( this . isLoading = ! 1 , i . removeClass ( e ) . removeAttr ( e ) ) } . bind ( this ) , 0 ) } , e . prototype . toggle = function ( ) { var t = ! 0 , e = this . $element . closest ( '[data-toggle="buttons"]' ) ; if ( e . length ) { var i = this . $element . find ( "input" ) ; "radio" == i . prop ( "type" ) && ( i . prop ( "checked" ) && this . $element . hasClass ( "active" ) ? t = ! 1 : e . find ( ".active" ) . removeClass ( "active" ) ) , t && i . prop ( "checked" , ! this . $element . hasClass ( "active" ) ) . trigger ( "change" ) } t && this . $element . toggleClass ( "active" ) } ; var i = t . fn . button ; t . fn . button = function ( i ) { return this . each ( function ( ) { var n = t ( this ) , o = n . data ( "zui.button" ) , a = "object" == typeof i && i ; o || n . data ( "zui.button" , o = new
2021-04-14 06:42:32 +00:00
* jQuery resize event - v1 . 1
* http : //benalman.com/projects/jquery-resize-plugin/
* Copyright ( c ) 2010 "Cowboy" Ben Alman
* MIT & GPL http : //benalman.com/about/license/
* /
2021-07-22 09:34:25 +00:00
function ( t , e , i ) { "$:nomunge" ; function n ( ) { o = e [ s ] ( function ( ) { a . each ( function ( ) { var e = t ( this ) , i = e . width ( ) , n = e . height ( ) , o = t . data ( this , d ) ; i === o . w && n === o . h || e . trigger ( l , [ o . w = i , o . h = n ] ) } ) , n ( ) } , r [ c ] ) } var o , a = t ( [ ] ) , r = t . resize = t . extend ( t . resize , { } ) , s = "setTimeout" , l = "resize" , d = l + "-special-event" , c = "delay" , p = "throttleWindow" ; r [ c ] = 250 , r [ p ] = ! 0 , t . event . special [ l ] = { setup : function ( ) { if ( ! r [ p ] && this [ s ] ) return ! 1 ; var e = t ( this ) ; a = a . add ( e ) , t . data ( this , d , { w : e . width ( ) , h : e . height ( ) } ) , 1 === a . length && n ( ) } , teardown : function ( ) { if ( ! r [ p ] && this [ s ] ) return ! 1 ; var e = t ( this ) ; a = a . not ( e ) , e . removeData ( d ) , a . length || clearTimeout ( o ) } , add : function ( e ) { function n ( e , n , a ) { var r = t ( this ) , s = t . data ( this , d ) || { } ; s . w = n !== i ? n : r . width ( ) , s . h = a !== i ? a : r . height ( ) , o . apply ( this , arguments ) } if ( ! r [ p ] && this [ s ] ) return ! 1 ; var o ; return "function" == typeof e ? ( o = e , n ) : ( o = e . handler , void ( e . handler = n ) ) } } } ( jQuery , this ) , + function ( t ) { "use strict" ; function e ( n , o ) { var a , r = this . process . bind ( this ) ; this . $element = t ( t ( n ) . is ( "body" ) ? window : n ) , this . $body = t ( "body" ) , this . $scrollElement = this . $element . on ( "scroll." + i + ".data-api" , r ) , this . options = t . extend ( { } , e . DEFAULTS , o ) , this . selector || ( this . selector = ( this . options . target || ( a = t ( n ) . attr ( "href" ) ) && a . replace ( /.*(?=#[^\s]+$)/ , "" ) || "" ) + " .nav li > a" ) , this . offsets = t ( [ ] ) , this . targets = t ( [ ] ) , this . activeTarget = null , this . refresh ( ) , this . process ( ) } var i = "zui.scrollspy" ; e . DEFAULTS = { offset : 10 } , e . prototype . refresh = function ( ) { var e = this . $element [ 0 ] == window ? "offset" : "position" ; this . offsets = t ( [ ] ) , this . targets = t ( [ ] ) ; var i = this ; this . $body . find ( this . selector ) . map ( function ( ) { var n = t ( this ) , o = n . data ( "target" ) || n . attr ( "href" ) , a = /^#./ . test ( o ) && t ( o ) ; return a && a . length && a . is ( ":visible" ) && [ [ a [ e ] ( ) . top + ( ! t . isWindow ( i . $scrollElement . get ( 0 ) ) && i . $scrollElement . scrollTop ( ) ) , o ] ] || null } ) . sort ( function ( t , e ) { return t [ 0 ] - e [ 0 ] } ) . each ( function ( ) { i . offsets . push ( this [ 0 ] ) , i . targets . push ( this [ 1 ] ) } ) } , e . prototype . process = function ( ) { var t , e = this . $scrollElement . scrollTop ( ) + this . options . offset , i = this . $scrollElement [ 0 ] . scrollHeight || this . $body [ 0 ] . scrollHeight , n = i - this . $scrollElement . height ( ) , o = this . offsets , a = this . targets , r = this . activeTarget ; if ( e >= n ) return r != ( t = a . last ( ) [ 0 ] ) && this . activate ( t ) ; if ( r && e <= o [ 0 ] ) return r != ( t = a [ 0 ] ) && this . activate ( t ) ; for ( t = o . length ; t -- ; ) r != a [ t ] && e >= o [ t ] && ( ! o [ t + 1 ] || e <= o [ t + 1 ] ) && this . activate ( a [ t ] ) } , e . prototype . activate = function ( e ) { this . activeTarget = e , t ( this . selector ) . parentsUntil ( this . options . target , ".active" ) . removeClass ( "active" ) ; var n = this . selector + '[data-target="' + e + '"],' + this . selector + '[href="' + e + '"]' , o = t ( n ) . parents ( "li" ) . addClass ( "active" ) ; o . parent ( ".dropdown-menu" ) . length && ( o = o . closest ( "li.dropdown" ) . addClass ( "active" ) ) , o . trigger ( "activate." + i ) } ; var n = t . fn . scrollspy ; t . fn . scrollspy = function ( n ) { return this . each ( function ( ) { var o = t ( this ) , a = o . data ( i ) , r = "object" == typeof n && n ; a || o . data ( i , a = new e ( this , r ) ) , "string" == typeof n && a [ n ] ( ) } ) } , t . fn . scrollspy . Constructor = e , t . fn . scrollspy . noConflict = function ( ) { return t . fn . scrollspy = n , this } , t ( window ) . on ( "load" , function ( ) { t ( '[data-spy="scroll"]' ) . each ( function ( ) { var e = t ( this ) ; e . scrollspy ( e . data ( ) ) } ) } ) } ( jQuery ) , function ( t , e ) { "use strict" ; var i , n , o = "localStorage" , a = "page_" + t . location . pathname + t . location . search , r = function ( ) { this . silence = ! 0 ; try { o in t && t [ o ] && t [ o ] . setItem && ( this . enable = ! 0 , i = t [ o ] ) } catch ( r ) { } this . enable || ( n = { } , i = { getLength : function ( ) { var t = 0 ; return e . each ( n , function ( ) { t ++ } ) , t } , key : function ( t ) { var i , o = 0 ; return e . each ( n , function ( e ) { return o === t ? ( i = e , ! 1 ) : void o ++ } ) , i } , removeItem : function ( t ) { delete n [ t ] } , getItem : function ( t ) { return n [ t ] } , setItem : function ( t , e ) { n [ t ] = e } , clear : function ( ) { n = { } } } ) , this . storage = i , this . page = this . get ( a , { } ) } ; r . prototype . pageSave = function ( ) { if ( e . isEmptyObject ( this . page ) ) this . remove ( a ) ; else { var t , i = [ ] ; for ( t in this . page ) { var n = this . page [ t ] ; null === n && i . push ( t ) } for ( t = i . length - 1 ; t >= 0 ; t -- ) delete this . page [ i [ t ] ] ; this . set ( a , this . page ) } } , r . prototype . pageRemove = function ( t ) { "undefined" != typeof this . page [ t ] && ( this . page [ t ] = null , this . pageSave ( ) ) } , r . prototype . pageClear = function ( ) { this . page = { } , this . pageSave ( ) } , r . prototype . pageGet = function ( t , e ) { var i = this . page [ t ] ; return void 0 === e || null !== i && void 0 !== i ? i : e } , r . prototype . pageSet = function ( t , i ) { e . isPla
2021-11-09 03:43:23 +00:00
var c = 0 ; t . left < 0 && ( c = t . left * - 2 , t . left = 0 , n . offset ( t ) , l = n [ 0 ] . offsetWidth , d = n [ 0 ] . offsetHeight ) , this . replaceArrow ( c - o + l , l , "left" ) } else this . replaceArrow ( d - a , d , "top" ) ; i && n . offset ( t ) } , e . prototype . replaceArrow = function ( t , e , i ) { this . arrow ( ) . css ( i , t ? 50 * ( 1 - t / e ) + "%" : "" ) } , e . prototype . setContent = function ( t ) { var e = this . tip ( ) , i = t || this . getTitle ( ) ; this . options . tipId && e . attr ( "id" , this . options . tipId ) , this . options . tipClass && e . addClass ( this . options . tipClass ) , e . find ( ".tooltip-inner" ) [ this . options . html ? "html" : "text" ] ( i ) , e . removeClass ( "fade in top bottom left right" ) } , e . prototype . hide = function ( ) { function e ( ) { "in" != i . hoverState && n . detach ( ) } var i = this , n = this . tip ( ) , o = t . Event ( "hide.zui." + this . type ) ; if ( this . $element . trigger ( o ) , ! o . isDefaultPrevented ( ) ) return n . removeClass ( "in" ) , t . support . transition && this . $tip . hasClass ( "fade" ) ? n . one ( t . support . transition . end , e ) . emulateTransitionEnd ( 150 ) : e ( ) , this . $element . trigger ( "hidden.zui." + this . type ) , this } , e . prototype . fixTitle = function ( ) { var t = this . $element ; ( t . attr ( "title" ) || "string" != typeof t . attr ( "data-original-title" ) ) && t . attr ( "data-original-title" , t . attr ( "title" ) || "" ) . attr ( "title" , "" ) } , e . prototype . hasContent = function ( ) { return this . getTitle ( ) } , e . prototype . getPosition = function ( ) { var e = this . $element [ 0 ] ; return t . extend ( { } , "function" == typeof e . getBoundingClientRect ? e . getBoundingClientRect ( ) : { width : e . offsetWidth , height : e . offsetHeight } , this . $element . offset ( ) ) } , e . prototype . getCalculatedOffset = function ( t , e , i , n ) { return "bottom" == t ? { top : e . top + e . height , left : e . left + e . width / 2 - i / 2 } : "top" == t ? { top : e . top - n , left : e . left + e . width / 2 - i / 2 } : "left" == t ? { top : e . top + e . height / 2 - n / 2 , left : e . left - i } : { top : e . top + e . height / 2 - n / 2 , left : e . left + e . width } } , e . prototype . getTitle = function ( ) { var t , e = this . $element , i = this . options ; return t = e . attr ( "data-original-title" ) || ( "function" == typeof i . title ? i . title . call ( e [ 0 ] ) : i . title ) } , e . prototype . tip = function ( ) { return this . $tip = this . $tip || t ( this . options . template ) } , e . prototype . arrow = function ( ) { return this . $arrow = this . $arrow || this . tip ( ) . find ( ".tooltip-arrow" ) } , e . prototype . validate = function ( ) { this . $element [ 0 ] . parentNode || ( this . hide ( ) , this . $element = null , this . options = null ) } , e . prototype . enable = function ( ) { this . enabled = ! 0 } , e . prototype . disable = function ( ) { this . enabled = ! 1 } , e . prototype . toggleEnabled = function ( ) { this . enabled = ! this . enabled } , e . prototype . toggle = function ( e ) { var i = e ? t ( e . currentTarget ) [ this . type ] ( this . getDelegateOptions ( ) ) . data ( "zui." + this . type ) : this ; i . tip ( ) . hasClass ( "in" ) ? i . leave ( i ) : i . enter ( i ) } , e . prototype . destroy = function ( ) { this . hide ( ) . $element . off ( "." + this . type ) . removeData ( "zui." + this . type ) } ; var i = t . fn . tooltip ; t . fn . tooltip = function ( i , n ) { return this . each ( function ( ) { var o = t ( this ) , a = o . data ( "zui.tooltip" ) , r = "object" == typeof i && i ; a || o . data ( "zui.tooltip" , a = new e ( this , r ) ) , "string" == typeof i && a [ i ] ( n ) } ) } , t . fn . tooltip . Constructor = e , t . fn . tooltip . noConflict = function ( ) { return t . fn . tooltip = i , this } } ( window . jQuery ) , + function ( t ) { "use strict" ; var e = function ( t , e ) { this . init ( "popover" , t , e ) } ; if ( ! t . fn . tooltip ) throw new Error ( "Popover requires tooltip.js" ) ; e . DEFAULTS = t . extend ( { } , t . fn . tooltip . Constructor . DEFAULTS , { placement : "right" , trigger : "click" , content : "" , template : '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' } ) , e . prototype = t . extend ( { } , t . fn . tooltip . Constructor . prototype ) , e . prototype . constructor = e , e . prototype . getDefaults = function ( ) { return e . DEFAULTS } , e . prototype . setContent = function ( ) { var t = this . tip ( ) , e = this . getTarget ( ) ; if ( e ) return e . find ( ".arrow" ) . length < 1 && t . addClass ( "no-arrow" ) , void t . html ( e . html ( ) ) ; var i = this . getTitle ( ) , n = this . getContent ( ) ; t . find ( ".popover-title" ) [ this . options . html ? "html" : "text" ] ( i ) , t . find ( ".popover-content" ) [ this . options . html ? "html" : "text" ] ( n ) , t . removeClass ( "fade top bottom left right in" ) , this . options . tipId && t . attr ( "id" , this . options . tipId ) , this . options . tipClass && t . addClass ( this . options . tipClass ) , t . find ( ".popover-title" ) . html ( ) || t . find ( ".popover-title" ) . hide ( ) } , e . prototype . hasContent = function ( ) { return this . getTarget ( ) || this . getTitle ( ) || this . getContent ( ) } , e . prototype . getContent = function ( ) { var t = this . $element , e = this . options ; return t . attr ( "data-content" )
2021-07-22 09:34:25 +00:00
function ( t ) { "use strict" ; t . zui . imgReady = function ( ) { var t = [ ] , e = null , i = function ( ) { for ( var e = 0 ; e < t . length ; e ++ ) t [ e ] . end ? t . splice ( e -- , 1 ) : t [ e ] ( ) ; ! t . length && n ( ) } , n = function ( ) { clearInterval ( e ) , e = null } ; return function ( n , o , a , r ) { var s , l , d , c , p , u = new Image ; return u . src = n , u . complete ? ( o . call ( u ) , void ( a && a . call ( u ) ) ) : ( l = u . width , d = u . height , u . onerror = function ( ) { r && r . call ( u ) , s . end = ! 0 , u = u . onload = u . onerror = null } , s = function ( ) { c = u . width , p = u . height , ( c !== l || p !== d || c * p > 1024 ) && ( o . call ( u ) , s . end = ! 0 ) } , s ( ) , u . onload = function ( ) { ! s . end && s ( ) , a && a . call ( u ) , u = u . onload = u . onerror = null } , void ( s . end || ( t . push ( s ) , null === e && ( e = setInterval ( i , 40 ) ) ) ) ) } } ( ) } ( jQuery ) , function ( t , e , i ) { "use strict" ; if ( ! t . fn . modalTrigger ) throw new Error ( "modal & modalTrigger requires for lightbox" ) ; if ( ! t . zui . imgReady ) throw new Error ( "imgReady requires for lightbox" ) ; var n = function ( e , i ) { this . $ = t ( e ) , this . options = this . getOptions ( i ) , this . init ( ) } ; n . DEFAULTS = { modalTeamplate : '<div class="icon-spinner icon-spin loader"></div><div class="modal-dialog"><button class="close" data-dismiss="modal" aria-hidden="true"><i class="icon-remove"></i></button><button class="controller prev"><i class="icon icon-chevron-left"></i></button><button class="controller next"><i class="icon icon-chevron-right"></i></button><img class="lightbox-img" src="{image}" alt="" data-dismiss="modal" /><div class="caption"><div class="content">{caption}<div></div></div>' } , n . prototype . getOptions = function ( e ) { var i = "image" ; return e = t . extend ( { } , n . DEFAULTS , this . $ . data ( ) , e ) , e [ i ] || ( e [ i ] = this . $ . attr ( "src" ) || this . $ . attr ( "href" ) || this . $ . find ( "img" ) . attr ( "src" ) , this . $ . data ( i , e [ i ] ) ) , e } , n . prototype . init = function ( ) { this . bindEvents ( ) } , n . prototype . initGroups = function ( ) { var e = this . $ . data ( "groups" ) ; e || ( e = t ( '[data-toggle="lightbox"][data-group="' + this . options . group + '"], [data-lightbox-group="' + this . options . group + '"]' ) , this . $ . data ( "groups" , e ) , e . each ( function ( e ) { t ( this ) . attr ( "data-group-index" , e ) } ) ) , this . groups = e , this . groupIndex = parseInt ( this . $ . data ( "group-index" ) ) } , n . prototype . setImage = function ( t , e ) { void 0 !== t && ( this . options . image = t ) , void 0 !== e && ( this . options . caption = e ) } , n . prototype . show = function ( t , e ) { this . setImage ( t , e ) , this . $ . triggerHandler ( "click" ) } , n . prototype . bindEvents = function ( ) { var n = this . $ , o = this , a = this . options ; return ! ! a . image && void n . modalTrigger ( { type : "custom" , name : "lightboxModal" , position : "center" , custom : function ( n ) { o . initGroups ( ) ; var r = n . modal , s = o . groups , l = o . groupIndex ; r . addClass ( "modal-lightbox" ) . html ( a . modalTeamplate . format ( a ) ) . toggleClass ( "lightbox-with-caption" , "string" == typeof a . caption ) . removeClass ( "lightbox-full" ) . data ( "group-index" , l ) ; var d = r . find ( ".modal-dialog" ) , c = t ( e ) . width ( ) ; t . zui . imgReady ( a . image , function ( ) { d . css ( { width : i . min ( c , this . width ) } ) , c < this . width + 30 && r . addClass ( "lightbox-full" ) , n . ready ( 200 ) } ) , r . find ( ".prev" ) . toggleClass ( "show" , s . filter ( '[data-group-index="' + ( l - 1 ) + '"]' ) . length > 0 ) , r . find ( ".next" ) . toggleClass ( "show" , s . filter ( '[data-group-index="' + ( l + 1 ) + '"]' ) . length > 0 ) , r . find ( ".controller" ) . click ( function ( ) { var o = t ( this ) , a = r . data ( "group-index" ) + ( o . hasClass ( "prev" ) ? - 1 : 1 ) , l = s . filter ( '[data-group-index="' + a + '"]' ) ; if ( l . length ) { var p = l . data ( "image" ) , u = l . data ( "caption" ) ; r . addClass ( "modal-loading" ) . data ( "group-index" , a ) . toggleClass ( "lightbox-with-caption" , "string" == typeof u ) . removeClass ( "lightbox-full" ) , r . find ( ".lightbox-img" ) . attr ( "src" , p ) , r . find ( ".caption > .content" ) . text ( u ) , c = t ( e ) . width ( ) , t . zui . imgReady ( p , function ( ) { d . css ( { width : i . min ( c , this . width ) } ) , c < this . width + 30 && r . addClass ( "lightbox-full" ) , n . ready ( ) } ) } return r . find ( ".prev" ) . toggleClass ( "show" , s . filter ( '[data-group-index="' + ( a - 1 ) + '"]' ) . length > 0 ) , r . find ( ".next" ) . toggleClass ( "show" , s . filter ( '[data-group-index="' + ( a + 1 ) + '"]' ) . length > 0 ) , ! 1 } ) } } ) } , t . fn . lightbox = function ( e ) { var i = "group" + ( new Date ) . getTime ( ) ; return this . each ( function ( ) { var o = t ( this ) , a = "object" == typeof e && e ; "object" == typeof a && a . group ? o . attr ( "data-lightbox-group" , a . group ) : o . data ( "group" ) ? o . attr ( "data-lightbox-group" , o . data ( "group" ) ) : o . attr ( "data-lightbox-group" , i ) , o . data ( "group" , o . data ( "lightbox-group" ) ) ; var r = o . data ( "zui.lightbox" ) ; r || o . data ( "zui.lightbox" , r = new n ( this , a ) ) , "string" == typeof e && r [ e ] ( ) } ) } , t . fn . lightb