/*! fineui 2019-12-09 15:00:29 */
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) throw new TypeError ( "Cannot call a class as a function" ) } ! function ( r ) { function i ( t ) { if ( e [ t ] ) return e [ t ] . exports ; var n = e [ t ] = { i : t , l : ! 1 , exports : { } } ; return r [ t ] . call ( n . exports , n , n . exports , i ) , n . l = ! 0 , n . exports } var e = { } ; i . m = r , i . c = e , i . d = function ( t , n , r ) { i . o ( t , n ) || Object . defineProperty ( t , n , { enumerable : ! 0 , get : r } ) } , i . r = function ( t ) { "undefined" != typeof Symbol && Symbol . toStringTag && Object . defineProperty ( t , Symbol . toStringTag , { value : "Module" } ) , Object . defineProperty ( t , "__esModule" , { value : ! 0 } ) } , i . t = function ( n , t ) { if ( 1 & t && ( n = i ( n ) ) , 8 & t ) return n ; if ( 4 & t && "object" == typeof n && n && n . _ _esModule ) return n ; var r = Object . create ( null ) ; if ( i . r ( r ) , Object . defineProperty ( r , "default" , { enumerable : ! 0 , value : n } ) , 2 & t && "string" != typeof n ) for ( var e in n ) i . d ( r , e , function ( t ) { return n [ t ] } . bind ( null , e ) ) ; return r } , i . n = function ( t ) { var n = t && t . _ _esModule ? function ( ) { return t [ "default" ] } : function ( ) { return t } ; return i . d ( n , "a" , n ) , n } , i . o = function ( t , n ) { return Object . prototype . hasOwnProperty . call ( t , n ) } , i . p = "" , i ( i . s = 121 ) } ( [ function ( t , n , r ) { var d = r ( 1 ) , y = r ( 7 ) , g = r ( 14 ) , m = r ( 11 ) , b = r ( 17 ) , w = "prototype" , x = function ( t , n , r ) { var e , i , o , u , c = t & x . F , f = t & x . G , a = t & x . S , s = t & x . P , l = t & x . B , h = f ? d : a ? d [ n ] || ( d [ n ] = { } ) : ( d [ n ] || { } ) [ w ] , p = f ? y : y [ n ] || ( y [ n ] = { } ) , v = p [ w ] || ( p [ w ] = { } ) ; for ( e in f && ( r = n ) , r ) o = ( ( i = ! c && h && void 0 !== h [ e ] ) ? h : r ) [ e ] , u = l && i ? b ( o , d ) : s && "function" == typeof o ? b ( Function . call , o ) : o , h && m ( h , e , o , t & x . U ) , p [ e ] != o && g ( p , e , u ) , s && v [ e ] != o && ( v [ e ] = o ) } ; d . core = y , x . F = 1 , x . G = 2 , x . S = 4 , x . P = 8 , x . B = 16 , x . W = 32 , x . U = 64 , x . R = 128 , t . exports = x } , function ( t , n ) { var r = t . exports = "undefined" != typeof window && window . Math == Math ? window : "undefined" != typeof self && self . Math == Math ? self : Function ( "return this" ) ( ) ; "number" == typeof _ _g && ( _ _g = r ) } , function ( t , n ) { t . exports = function ( t ) { try { return ! ! t ( ) } catch ( n ) { return ! 0 } } } , function ( t , n , r ) { var e = r ( 4 ) ; t . exports = function ( t ) { if ( ! e ( t ) ) throw TypeError ( t + " is not an object!" ) ; return t } } , function ( t , n ) { t . exports = function ( t ) { return "object" == typeof t ? null !== t : "function" == typeof t } } , function ( t , n , r ) { var e = r ( 48 ) ( "wks" ) , i = r ( 29 ) , o = r ( 1 ) . Symbol , u = "function" == typeof o ; ( t . exports = function ( t ) { return e [ t ] || ( e [ t ] = u && o [ t ] || ( u ? o : i ) ( "Symbol." + t ) ) } ) . store = e } , function ( t , n , r ) { var e = r ( 19 ) , i = Math . min ; t . exports = function ( t ) { return 0 < t ? i ( e ( t ) , 9007199254740991 ) : 0 } } , function ( t , n ) { var r = t . exports = { version : "2.6.9" } ; "number" == typeof _ _e && ( _ _e = r ) } , function ( t , n , r ) { t . exports = ! r ( 2 ) ( function ( ) { return 7 != Object . defineProperty ( { } , "a" , { get : function ( ) { return 7 } } ) . a } ) } , function ( t , n , r ) { var i = r ( 3 ) , o = r ( 88 ) , u = r ( 26 ) , c = Object . defineProperty ; n . f = r ( 8 ) ? Object . defineProperty : function ( t , n , r ) { if ( i ( t ) , n = u ( n , ! 0 ) , i ( r ) , o ) try { return c ( t , n , r ) } catch ( e ) { } if ( "get" in r || "set" in r ) throw TypeError ( "Accessors not supported!" ) ; return "value" in r && ( t [ n ] = r . value ) , t } } , function ( t , n , r ) { var e = r ( 24 ) ; t . exports = function ( t ) { return Object ( e ( t ) ) } } , function ( t , n , r ) { var o = r ( 1 ) , u = r ( 14 ) , c = r ( 13 ) , f = r ( 29 ) ( "src" ) , e = r ( 126 ) , i = "toString" , a = ( "" + e ) . split ( i ) ; r ( 7 ) . inspectSource = function ( t ) { return e . call ( t ) } , ( t . exports = function ( t , n , r , e ) { var i = "function" == typeof r ; i && ( c ( r , "name" ) || u ( r , "name" , n ) ) , t [ n ] !== r && ( i && ( c ( r , f ) || u ( r , f , t [ n ] ? "" + t [ n ] : a . join ( String ( n ) ) ) ) , t === o ? t [ n ] = r : e ? t [ n ] ? t [ n ] = r : u ( t , n , r ) : ( delete t [ n ] , u ( t , n , r ) ) ) } ) ( Function . prototype , i , function ( ) { return "function" == typeof this && this [ f ] || e . call ( this ) } ) } , function ( t , n , r ) { function e ( t , n , r , e ) { var i = String ( u ( t ) ) , o = "<" + n ; return "" !== r && ( o += " " + r + '="' + String ( e ) . replace ( c , """ ) + '"' ) , o + ">" + i + "</" + n + ">" } var i = r ( 0 ) , o = r ( 2 ) , u = r ( 24 ) , c = /"/g ; t . exports = function ( n , t ) { var r = { } ; r [ n ] = t ( e ) , i ( i . P + i . F * o ( function ( ) { var t = "" [ n ] ( '"' ) ; return t !== t . toLowerCase ( ) || 3 < t . split ( '"' ) . length } ) , "String" , r ) } } , function ( t , n ) { var r = { } . hasOwnProperty ; t . exports = function ( t , n ) { return r . call ( t , n ) } } , function ( t , n , r ) { var e = r ( 9 ) , i = r ( 28 ) ; t . exports = r ( 8 ) ? function ( t , n , r ) { return e . f ( t , n , i ( 1 , r ) ) } : function ( t , n , r ) { return t [ n ] = r , t } } , function ( t , n , r ) { var e = r ( 44 ) , i = r ( 24 ) ; t . exports = function ( t ) { return e ( i ( t ) ) } } , function ( t , n , r ) { "use strict" ; var e = r ( 2 ) ; t . exports = function ( t , n ) { return ! ! t && e ( function ( ) { n ? t . call ( null , function ( ) { } , 1 ) : t . call ( null ) } ) } } , function ( t , n , r ) { var o = r ( 18 ) ; t . exports = function ( e , i , t ) { if ( o ( e ) , void 0 === i ) return e ; switch ( t ) { case 1 : return fu
case 4 : return e ? t ( n [ 0 ] , n [ 1 ] , n [ 2 ] , n [ 3 ] ) : t . call ( r , n [ 0 ] , n [ 1 ] , n [ 2 ] , n [ 3 ] ) } return t . apply ( r , n ) } } , function ( t , n , r ) { var e = r ( 1 ) . parseInt , i = r ( 39 ) . trim , o = r ( 66 ) , u = /^[-+]?0[xX]/ ; t . exports = 8 !== e ( o + "08" ) || 22 !== e ( o + "0x16" ) ? function ( t , n ) { var r = i ( String ( t ) , 3 ) ; return e ( r , n >>> 0 || ( u . test ( r ) ? 16 : 10 ) ) } : e } , function ( t , n , r ) { var e = r ( 1 ) . parseFloat , i = r ( 39 ) . trim ; t . exports = 1 / e ( r ( 66 ) + "-0" ) != - ( 1 / 0 ) ? function ( t ) { var n = i ( String ( t ) , 3 ) , r = e ( n ) ; return 0 === r && "-" == n . charAt ( 0 ) ? - 0 : r } : e } , function ( t , n , r ) { var e = r ( 23 ) ; t . exports = function ( t , n ) { if ( "number" != typeof t && "Number" != e ( t ) ) throw TypeError ( n ) ; return + t } } , function ( t , n , r ) { var e = r ( 4 ) , i = Math . floor ; t . exports = function ( t ) { return ! e ( t ) && isFinite ( t ) && i ( t ) === t } } , function ( t , n ) { t . exports = Math . log1p || function ( t ) { return - 1e-8 < ( t = + t ) && t < 1e-8 ? t - t * t / 2 : Math . log ( 1 + t ) } } , function ( t , n , r ) { "use strict" ; var e = r ( 33 ) , i = r ( 28 ) , o = r ( 38 ) , u = { } ; r ( 14 ) ( u , r ( 5 ) ( "iterator" ) , function ( ) { return this } ) , t . exports = function ( t , n , r ) { t . prototype = e ( u , { next : i ( 1 , r ) } ) , o ( t , n + " Iterator" ) } } , function ( t , n , r ) { var u = r ( 3 ) ; t . exports = function ( t , n , r , e ) { try { return e ? n ( u ( r ) [ 0 ] , r [ 1 ] ) : n ( r ) } catch ( o ) { var i = t [ "return" ] ; throw void 0 !== i && u ( i . call ( t ) ) , o } } } , function ( t , n , r ) { var e = r ( 216 ) ; t . exports = function ( t , n ) { return new ( e ( t ) ) ( n ) } } , function ( t , n , r ) { var s = r ( 18 ) , l = r ( 10 ) , h = r ( 44 ) , p = r ( 6 ) ; t . exports = function ( t , n , r , e , i ) { s ( n ) ; var o = l ( t ) , u = h ( o ) , c = p ( o . length ) , f = i ? c - 1 : 0 , a = i ? - 1 : 1 ; if ( r < 2 ) for ( ; ; ) { if ( f in u ) { e = u [ f ] , f += a ; break } if ( f += a , i ? f < 0 : c <= f ) throw TypeError ( "Reduce of empty array with no initial value" ) } for ( ; i ? 0 <= f : f < c ; f += a ) f in u && ( e = n ( e , u [ f ] , f , o ) ) ; return e } } , function ( t , n , r ) { "use strict" ; var a = r ( 10 ) , s = r ( 32 ) , l = r ( 6 ) ; t . exports = [ ] . copyWithin || function ( t , n ) { var r = a ( this ) , e = l ( r . length ) , i = s ( t , e ) , o = s ( n , e ) , u = 2 < arguments . length ? arguments [ 2 ] : void 0 , c = Math . min ( ( void 0 === u ? e : s ( u , e ) ) - o , e - i ) , f = 1 ; for ( o < i && i < o + c && ( f = - 1 , o += c - 1 , i += c - 1 ) ; 0 < c -- ; ) o in r ? r [ i ] = r [ o ] : delete r [ i ] , i += f , o += f ; return r } } , function ( t , n ) { t . exports = function ( t , n ) { return { value : n , done : ! ! t } } } , function ( t , n , r ) { "use strict" ; var e = r ( 81 ) ; r ( 0 ) ( { target : "RegExp" , proto : ! 0 , forced : e !== /./ . exec } , { exec : e } ) } , function ( t , n , r ) { r ( 8 ) && "g" != /./g . flags && r ( 9 ) . f ( RegExp . prototype , "flags" , { configurable : ! 0 , get : r ( 53 ) } ) } , function ( t , n , e ) { "use strict" ; function i ( ) { } function h ( t ) { var n ; return ! ( ! y ( t ) || "function" != typeof ( n = t . then ) ) && n } function o ( l , r ) { if ( ! l . _n ) { l . _n = ! 0 ; var e = l . _c ; S ( function ( ) { for ( var a = l . _v , s = 1 == l . _s , t = 0 , n = function ( t ) { var n , r , e , i = s ? t . ok : t . fail , o = t . resolve , u = t . reject , c = t . domain ; try { i ? ( s || ( 2 == l . _h && D ( l ) , l . _h = 1 ) , ! 0 === i ? n = a : ( c && c . enter ( ) , n = i ( a ) , c && ( c . exit ( ) , e = ! 0 ) ) , n === t . promise ? u ( M ( "Promise-chain cycle" ) ) : ( r = h ( n ) ) ? r . call ( n , o , u ) : o ( n ) ) : u ( a ) } catch ( f ) { c && ! e && c . exit ( ) , u ( f ) } } ; e . length > t ; ) n ( e [ t ++ ] ) ; l . _c = [ ] , l . _n = ! 1 , r && ! l . _h && k ( l ) } ) } } function u ( t ) { var n = this ; n . _d || ( n . _d = ! 0 , ( n = n . _w || n ) . _v = t , n . _s = 2 , n . _a || ( n . _a = n . _c . slice ( ) ) , o ( n , ! 0 ) ) } var r , c , f , a , s = e ( 30 ) , l = e ( 1 ) , p = e ( 17 ) , v = e ( 46 ) , d = e ( 0 ) , y = e ( 4 ) , g = e ( 18 ) , m = e ( 42 ) , b = e ( 56 ) , w = e ( 47 ) , x = e ( 83 ) . set , S = e ( 236 ) ( ) , _ = e ( 111 ) , E = e ( 237 ) , O = e ( 57 ) , P = e ( 112 ) , F = "Promise" , M = l . TypeError , A = l . process , j = A && A . versions , I = j && j . v8 || "" , T = l [ F ] , N = "process" == v ( A ) , L = c = _ . f , R = ! ! function ( ) { try { var t = T . resolve ( 1 ) , n = ( t . constructor = { } ) [ e ( 5 ) ( "species" ) ] = function ( t ) { t ( i , i ) } ; return ( N || "function" == typeof PromiseRejectionEvent ) && t . then ( i ) instanceof n && 0 !== I . indexOf ( "6.6" ) && - 1 === O . indexOf ( "Chrome/66" ) } catch ( r ) { } } ( ) , k = function ( o ) { x . call ( l , function ( ) { var t , n , r , e = o . _v , i = C ( o ) ; if ( i && ( t = E ( function ( ) { N ? A . emit ( "unhandledRejection" , e , o ) : ( n = l . onunhandledrejection ) ? n ( { promise : o , reason : e } ) : ( r = l . console ) && r . error && r . error ( "Unhandled promise rejection" , e ) } ) , o . _h = N || C ( o ) ? 2 : 1 ) , o . _a = void 0 , i && t . e ) throw t . v } ) } , C = function ( t ) { return 1 !== t . _h && 0 === ( t . _a || t . _c ) . length } , D = function ( n ) { x . call ( l , function ( ) { var t ; N ? A . emit ( "rejectionHandled" , n ) : ( t = l . onrejectionhandled ) && t ( { promise : n , reason : n . _v } ) } ) } , U = function ( r ) { var e , i = this ; if ( ! i . _d ) { i . _d = ! 0 , i = i . _w || i ; try { if ( i === r ) throw M ( "Promise can't be resolved itself" ) ; ( e = h ( r ) ) ? S ( function ( ) { var t = { _w : i , _d : ! 1 } ; try { e . call ( r , p ( U , t , 1 ) , p ( u , t , 1 ) ) } catch ( n ) { u . call ( t , n ) } } ) : ( i . _v = r , i . _s = 1 , o ( i , ! 1 ) ) } catch ( t ) { u . call ( { _w : i , _d : ! 1 } , t ) } } } ; R || ( T = function ( t ) { m ( this , T , F , "_h" ) , g ( t ) , r . call ( this ) ; try { t ( p ( U , this , 1 ) , p ( u , this , 1 ) ) } catch ( n ) { u . call ( this , n ) } } , ( r = function ( t ) { this . _c = [ ] , this . _a = void 0 , this . _s = 0 , thi
r ( 2 ) ( function ( ) { return "/a/b" != f . call ( { source : "a" , flags : "b" } ) } ) ? e ( function ( ) { var t = i ( this ) ; return "/" . concat ( t . source , "/" , "flags" in t ? t . flags : ! u && t instanceof RegExp ? o . call ( t ) : void 0 ) } ) : f . name != c && e ( function ( ) { return f . call ( this ) } ) } , function ( t , n , r ) { "use strict" ; var l = r ( 3 ) , h = r ( 6 ) , p = r ( 82 ) , v = r ( 54 ) ; r ( 55 ) ( "match" , 1 , function ( e , i , a , s ) { return [ function ( t ) { var n = e ( this ) , r = void 0 == t ? void 0 : t [ i ] ; return void 0 !== r ? r . call ( t , n ) : new RegExp ( t ) [ i ] ( String ( n ) ) } , function ( t ) { var n = s ( a , t , this ) ; if ( n . done ) return n . value ; var r = l ( t ) , e = String ( this ) ; if ( ! r . global ) return v ( r , e ) ; for ( var i , o = r . unicode , u = [ ] , c = r . lastIndex = 0 ; null !== ( i = v ( r , e ) ) ; ) { var f = String ( i [ 0 ] ) ; "" === ( u [ c ] = f ) && ( r . lastIndex = p ( e , h ( r . lastIndex ) , o ) ) , c ++ } return 0 === c ? null : u } ] } ) } , function ( t , n , r ) { "use strict" ; var E = r ( 3 ) , e = r ( 10 ) , O = r ( 6 ) , P = r ( 19 ) , F = r ( 82 ) , M = r ( 54 ) , A = Math . max , j = Math . min , h = Math . floor , p = /\$([$&`']|\d\d?|<[^>]*>)/g , v = /\$([$&`']|\d\d?)/g ; r ( 55 ) ( "replace" , 2 , function ( i , o , x , S ) { function _ ( o , u , c , f , a , t ) { var s = c + o . length , l = f . length , n = v ; return void 0 !== a && ( a = e ( a ) , n = p ) , x . call ( t , n , function ( t , n ) { var r ; switch ( n . charAt ( 0 ) ) { case "$" : return "$" ; case "&" : return o ; case "`" : return u . slice ( 0 , c ) ; case "'" : return u . slice ( s ) ; case "<" : r = a [ n . slice ( 1 , - 1 ) ] ; break ; default : var e = + n ; if ( 0 == e ) return t ; if ( l < e ) { var i = h ( e / 10 ) ; return 0 === i ? t : i <= l ? void 0 === f [ i - 1 ] ? n . charAt ( 1 ) : f [ i - 1 ] + n . charAt ( 1 ) : t } r = f [ e - 1 ] } return void 0 === r ? "" : r } ) } return [ function ( t , n ) { var r = i ( this ) , e = void 0 == t ? void 0 : t [ o ] ; return void 0 !== e ? e . call ( t , r , n ) : x . call ( String ( r ) , t , n ) } , function ( t , n ) { var r = S ( x , t , this , n ) ; if ( r . done ) return r . value ; var e = E ( t ) , i = String ( this ) , o = "function" == typeof n ; o || ( n = String ( n ) ) ; var u = e . global ; if ( u ) { var c = e . unicode ; e . lastIndex = 0 } for ( var f = [ ] ; ; ) { var a = M ( e , i ) ; if ( null === a ) break ; if ( f . push ( a ) , ! u ) break ; "" === String ( a [ 0 ] ) && ( e . lastIndex = F ( i , O ( e . lastIndex ) , c ) ) } for ( var s , l = "" , h = 0 , p = 0 ; p < f . length ; p ++ ) { a = f [ p ] ; for ( var v = String ( a [ 0 ] ) , d = A ( j ( P ( a . index ) , i . length ) , 0 ) , y = [ ] , g = 1 ; g < a . length ; g ++ ) y . push ( void 0 === ( s = a [ g ] ) ? s : String ( s ) ) ; var m = a . groups ; if ( o ) { var b = [ v ] . concat ( y , d , i ) ; void 0 !== m && b . push ( m ) ; var w = String ( n . apply ( void 0 , b ) ) } else w = _ ( v , i , d , y , m , n ) ; h <= d && ( l += i . slice ( h , d ) + w , h = d + v . length ) } return l + i . slice ( h ) } ] } ) } , function ( t , n , r ) { "use strict" ; var f = r ( 3 ) , a = r ( 94 ) , s = r ( 54 ) ; r ( 55 ) ( "search" , 1 , function ( e , i , u , c ) { return [ function ( t ) { var n = e ( this ) , r = void 0 == t ? void 0 : t [ i ] ; return void 0 !== r ? r . call ( t , n ) : new RegExp ( t ) [ i ] ( String ( n ) ) } , function ( t ) { var n = c ( u , t , this ) ; if ( n . done ) return n . value ; var r = f ( t ) , e = String ( this ) , i = r . lastIndex ; a ( i , 0 ) || ( r . lastIndex = 0 ) ; var o = s ( r , e ) ; return a ( r . lastIndex , i ) || ( r . lastIndex = i ) , null === o ? - 1 : o . index } ] } ) } , function ( t , n , r ) { "use strict" ; var l = r ( 74 ) , b = r ( 3 ) , w = r ( 47 ) , x = r ( 82 ) , S = r ( 6 ) , _ = r ( 54 ) , h = r ( 81 ) , e = r ( 2 ) , E = Math . min , p = [ ] . push , u = "split" , v = "length" , d = "lastIndex" , O = 4294967295 , P = ! e ( function ( ) { RegExp ( O , "y" ) } ) ; r ( 55 ) ( "split" , 2 , function ( i , o , y , g ) { var m ; return m = "c" == "abbc" [ u ] ( /(b)*/ ) [ 1 ] || 4 != "test" [ u ] ( /(?:)/ , - 1 ) [ v ] || 2 != "ab" [ u ] ( /(?:ab)*/ ) [ v ] || 4 != "." [ u ] ( /(.?)(.?)/ ) [ v ] || 1 < "." [ u ] ( /()()/ ) [ v ] || "" [ u ] ( /.?/ ) [ v ] ? function ( t , n ) { var r = String ( this ) ; if ( void 0 === t && 0 === n ) return [ ] ; if ( ! l ( t ) ) return y . call ( r , t , n ) ; for ( var e , i , o , u = [ ] , c = ( t . ignoreCase ? "i" : "" ) + ( t . multiline ? "m" : "" ) + ( t . unicode ? "u" : "" ) + ( t . sticky ? "y" : "" ) , f = 0 , a = void 0 === n ? O : n >>> 0 , s = new RegExp ( t . source , c + "g" ) ; ( e = h . call ( s , r ) ) && ! ( f < ( i = s [ d ] ) && ( u . push ( r . slice ( f , e . index ) ) , 1 < e [ v ] && e . index < r [ v ] && p . apply ( u , e . slice ( 1 ) ) , o = e [ 0 ] [ v ] , f = i , u [ v ] >= a ) ) ; ) s [ d ] === e . index && s [ d ] ++ ; return f === r [ v ] ? ! o && s . test ( "" ) || u . push ( "" ) : u . push ( r . slice ( f ) ) , u [ v ] > a ? u . slice ( 0 , a ) : u } : "0" [ u ] ( void 0 , 0 ) [ v ] ? function ( t , n ) { return void 0 === t && 0 === n ? [ ] : y . call ( this , t , n ) } : y , [ function ( t , n ) { var r = i ( this ) , e = void 0 == t ? void 0 : t [ o ] ; return void 0 !== e ? e . call ( t , r , n ) : m . call ( String ( r ) , t , n ) } , function ( t , n ) { var r = g ( m , t , this , n , m !== y ) ; if ( r . done ) return r . value ; var e = b ( t ) , i = String ( this ) , o = w ( e , RegExp ) , u = e . unicode , c = ( e . ignoreCase ? "i" : "" ) + ( e . multiline ? "m" : "" ) + ( e . unicode ? "u" : "" ) + ( P ? "y" : "g" ) , f = new o ( P ? e : "^(?:" + e . source + ")" , c ) , a = void 0 === n ? O : n >>> 0 ; if ( 0 == a ) return [ ] ; if ( 0 === i . length ) return null === _ ( f , i ) ? [ i ] : [ ] ; for ( var s = 0 , l = 0 , h = [ ] ; l < i . length ; ) { f . lastIndex = P ? l : 0 ; var p , v = _ ( f , P ? i : i . slice ( l ) ) ; if ( null === v || ( p = E ( S ( f . lastIndex + ( P ? 0 : l ) ) , i . length ) ) === s ) l = x ( i , l , u ) ; else { if ( h . push ( i . slice ( s , l ) ) , h . length === a ) return h ; for ( var d = 1 ; d <= v . length - 1
this . fun = t , this . array = n } function d ( ) { } var r , e , i = t . exports = { } ; ! function ( ) { try { r = "function" == typeof setTimeout ? setTimeout : o } catch ( t ) { r = o } try { e = "function" == typeof clearTimeout ? clearTimeout : u } catch ( t ) { e = u } } ( ) ; var f , a = [ ] , s = ! 1 , l = - 1 ; i . nextTick = function ( t ) { var n = new Array ( arguments . length - 1 ) ; if ( 1 < arguments . length ) for ( var r = 1 ; r < arguments . length ; r ++ ) n [ r - 1 ] = arguments [ r ] ; a . push ( new v ( t , n ) ) , 1 !== a . length || s || c ( p ) } , v . prototype . run = function ( ) { this . fun . apply ( null , this . array ) } , i . title = "browser" , i . browser = ! 0 , i . env = { } , i . argv = [ ] , i . version = "" , i . versions = { } , i . on = d , i . addListener = d , i . once = d , i . off = d , i . removeListener = d , i . removeAllListeners = d , i . emit = d , i . prependListener = d , i . prependOnceListener = d , i . listeners = function ( t ) { return [ ] } , i . binding = function ( t ) { throw new Error ( "process.binding is not supported" ) } , i . cwd = function ( ) { return "/" } , i . chdir = function ( t ) { throw new Error ( "process.chdir is not supported" ) } , i . umask = function ( ) { return 0 } } , function ( t , n ) { function r ( t ) { return ( r = "function" == typeof Symbol && "symbol" == typeof Symbol . iterator ? function ( t ) { return typeof t } : function ( t ) { return t && "function" == typeof Symbol && t . constructor === Symbol && t !== Symbol . prototype ? "symbol" : typeof t } ) ( t ) } var e ; e = function ( ) { return this } ( ) ; try { e = e || new Function ( "return this" ) ( ) } catch ( i ) { "object" === ( "undefined" == typeof window ? "undefined" : r ( window ) ) && ( e = window ) } t . exports = e } ] ) ; var _global ; _global = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this , null == _global . BI && ( _global . BI = { prepares : [ ] } ) , null == _global . BI . prepares && ( _global . BI . prepares = [ ] ) , Array . prototype . indexOf || ( Array . prototype . indexOf = function ( searchElement , fromIndex ) { var k ; if ( null == this ) throw new TypeError ( '"this" is null or not defined' ) ; var o = Object ( this ) , len = o . length >>> 0 ; if ( 0 === len ) return - 1 ; var n = 0 | fromIndex ; if ( n >= len ) return - 1 ; for ( k = Math . max ( n >= 0 ? n : len - Math . abs ( n ) , 0 ) ; k < len ; ) { if ( k in o && o [ k ] === searchElement ) return k ; k ++ } return - 1 } ) , Array . prototype . lastIndexOf || ( Array . prototype . lastIndexOf = function ( searchElement ) { "use strict" ; if ( void 0 === this || null === this ) throw new TypeError ; var n , k , t = Object ( this ) , len = t . length >>> 0 ; if ( 0 === len ) return - 1 ; for ( n = len - 1 , arguments . length > 1 && ( n = Number ( arguments [ 1 ] ) , n != n ? n = 0 : 0 != n && n != 1 / 0 && n != - ( 1 / 0 ) && ( n = ( n > 0 || - 1 ) * Math . floor ( Math . abs ( n ) ) ) ) , k = n >= 0 ? Math . min ( n , len - 1 ) : len - Math . abs ( n ) ; k >= 0 ; k -- ) if ( k in t && t [ k ] === searchElement ) return k ; return - 1 } ) , _global . console = _global . console || function ( ) { var c = { } ; return c . log = c . warn = c . debug = c . info = c . error = c . time = c . dir = c . profile = c . clear = c . exception = c . trace = c . assert = function ( ) { } , c } ( ) , _global . localStorage || ( _global . localStorage = { items : { } , setItem : function ( k , v ) { BI . Cache . addCookie ( k , v ) } , getItem : function ( k ) { return BI . Cache . getCookie ( k ) } , removeItem : function ( k ) { BI . Cache . deleteCookie ( k ) } , key : function ( ) { } , clear : function ( ) { this . items = { } } } ) , Object . keys || ( Object . keys = function ( o ) { if ( o !== Object ( o ) ) throw new TypeError ( "Object.keys called on a non-object" ) ; var falsy , skipArray = { _ _ob _ _ : falsy , $accessors : falsy , $vbthis : falsy , $vbsetter : falsy } , k = [ ] , p ; for ( p in o ) p in skipArray || Object . prototype . hasOwnProperty . call ( o , p ) && k . push ( p ) ; return k } ) , Array . isArray || ( Array . isArray = function ( arg ) { return "[object Array]" === Object . prototype . toString . call ( arg ) } ) , Date . now || ( Date . now = function ( ) { return ( new Date ) . valueOf ( ) } ) , "undefined" != typeof Set && Set . toString ( ) . match ( /native code/ ) || ( Set = function ( ) { this . set = { } } , Set . prototype . has = function ( key ) { return void 0 !== this . set [ key ] } , Set . prototype . add = function ( key ) { this . set [ key ] = 1 } , Set . prototype . clear = function ( ) { this . set = { } } ) , ! function ( window ) { var ua = window . navigator . userAgent . toLowerCase ( ) , reg = /msie/ ; if ( reg . test ( ua ) ) { var _sort = Array . prototype . sort ; Array . prototype . sort = function ( fn ) { if ( fn && "function" == typeof fn ) { if ( this . length < 2 ) return this ; for ( var i = 0 , j = i + 1 , l = this . length , tmp , r = ! 1 , t = 0 ; i < l ; i ++ ) for ( j = i + 1 ; j < l ; j ++ ) t = fn . call ( this , this [ i ] , this [ j ] ) , r = ( "number" == typeof t ? t : t ? 1 : 0 ) > 0 , r === ! 0 && ( tmp = this [ i ] , this [ i ] = this [ j ] , this [ j ] = tmp ) ; return this } return _sort . call ( this ) } } } ( window ) ; var _global ; _global = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this , null == _global . BI && ( _global . BI = { prepares : [ ] } ) , null
return action . func . apply ( action . thisArg , arrayPush ( [ result ] , action . args ) ) } , result ) } function baseZipObject ( props , values , assignFunc ) { for ( var index = - 1 , length = props . length , valsLength = values . length , result = { } ; ++ index < length ; ) { var value = index < valsLength ? values [ index ] : undefined ; assignFunc ( result , props [ index ] , value ) } return result } function castArrayLikeObject ( value ) { return isArrayLikeObject ( value ) ? value : [ ] } function castPath ( value , object ) { return isArray ( value ) ? value : isKey ( value , object ) ? [ value ] : stringToPath ( toString ( value ) ) } function castSlice ( array , start , end ) { var length = array . length ; return end = end === undefined ? length : end , ! start && end >= length ? array : baseSlice ( array , start , end ) } function cloneBuffer ( buffer , isDeep ) { if ( isDeep ) return buffer . slice ( ) ; var length = buffer . length , result = allocUnsafe ? allocUnsafe ( length ) : new buffer . constructor ( length ) ; return buffer . copy ( result ) , result } function cloneArrayBuffer ( arrayBuffer ) { var result = new arrayBuffer . constructor ( arrayBuffer . byteLength ) ; return new Uint8Array ( result ) . set ( new Uint8Array ( arrayBuffer ) ) , result } function cloneDataView ( dataView , isDeep ) { var buffer = isDeep ? cloneArrayBuffer ( dataView . buffer ) : dataView . buffer ; return new dataView . constructor ( buffer , dataView . byteOffset , dataView . byteLength ) } function cloneRegExp ( regexp ) { var result = new regexp . constructor ( regexp . source , reFlags . exec ( regexp ) ) ; return result . lastIndex = regexp . lastIndex , result } function cloneSymbol ( symbol ) { return symbolValueOf ? Object ( symbolValueOf . call ( symbol ) ) : { } } function cloneTypedArray ( typedArray , isDeep ) { var buffer = isDeep ? cloneArrayBuffer ( typedArray . buffer ) : typedArray . buffer ; return new typedArray . constructor ( buffer , typedArray . byteOffset , typedArray . length ) } function compareAscending ( value , other ) { if ( value !== other ) { var valIsDefined = value !== undefined , valIsNull = null === value , valIsReflexive = value === value , valIsSymbol = isSymbol ( value ) , othIsDefined = other !== undefined , othIsNull = null === other , othIsReflexive = other === other , othIsSymbol = isSymbol ( other ) ; if ( ! othIsNull && ! othIsSymbol && ! valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && ! othIsNull && ! othIsSymbol || valIsNull && othIsDefined && othIsReflexive || ! valIsDefined && othIsReflexive || ! valIsReflexive ) return 1 ; if ( ! valIsNull && ! valIsSymbol && ! othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && ! valIsNull && ! valIsSymbol || othIsNull && valIsDefined && valIsReflexive || ! othIsDefined && valIsReflexive || ! othIsReflexive ) return - 1 } return 0 } function compareMultiple ( object , other , orders ) { for ( var index = - 1 , objCriteria = object . criteria , othCriteria = other . criteria , length = objCriteria . length , ordersLength = orders . length ; ++ index < length ; ) { var result = compareAscending ( objCriteria [ index ] , othCriteria [ index ] ) ; if ( result ) { if ( index >= ordersLength ) return result ; var order = orders [ index ] ; return result * ( "desc" == order ? - 1 : 1 ) } } return object . index - other . index } function composeArgs ( args , partials , holders , isCurried ) { for ( var argsIndex = - 1 , argsLength = args . length , holdersLength = holders . length , leftIndex = - 1 , leftLength = partials . length , rangeLength = nativeMax ( argsLength - holdersLength , 0 ) , result = Array ( leftLength + rangeLength ) , isUncurried = ! isCurried ; ++ leftIndex < leftLength ; ) result [ leftIndex ] = partials [ leftIndex ] ; for ( ; ++ argsIndex < holdersLength ; ) ( isUncurried || argsIndex < argsLength ) && ( result [ holders [ argsIndex ] ] = args [ argsIndex ] ) ; for ( ; rangeLength -- ; ) result [ leftIndex ++ ] = args [ argsIndex ++ ] ; return result } function composeArgsRight ( args , partials , holders , isCurried ) { for ( var argsIndex = - 1 , argsLength = args . length , holdersIndex = - 1 , holdersLength = holders . length , rightIndex = - 1 , rightLength = partials . length , rangeLength = nativeMax ( argsLength - holdersLength , 0 ) , result = Array ( rangeLength + rightLength ) , isUncurried = ! isCurried ; ++ argsIndex < rangeLength ; ) result [ argsIndex ] = args [ argsIndex ] ; for ( var offset = argsIndex ; ++ rightIndex < rightLength ; ) result [ offset + rightIndex ] = partials [ rightIndex ] ; for ( ; ++ holdersIndex < holdersLength ; ) ( isUncurried || argsIndex < argsLength ) && ( result [ offset + holders [ holdersIndex ] ] = args [ argsIndex ++ ] ) ; return result } function copyArray ( source , array ) { var index = - 1 , length = source . length ; for ( array || ( array = Array ( length ) ) ; ++ index < length ; ) array [ index ] = source [ index ] ; return array } function copyObject ( sour
invokeFunc ( lastCallTime ) } return timerId === undefined && ( timerId = setTimeout ( timerExpired , wait ) ) , result } var lastArgs , lastThis , maxWait , result , timerId , lastCallTime , lastInvokeTime = 0 , leading = ! 1 , maxing = ! 1 , trailing = ! 0 ; if ( "function" != typeof func ) throw new TypeError ( FUNC _ERROR _TEXT ) ; return wait = toNumber ( wait ) || 0 , isObject ( options ) && ( leading = ! ! options . leading , maxing = "maxWait" in options , maxWait = maxing ? nativeMax ( toNumber ( options . maxWait ) || 0 , wait ) : maxWait , trailing = "trailing" in options ? ! ! options . trailing : trailing ) , debounced . cancel = cancel , debounced . flush = flush , debounced } function memoize ( func , resolver ) { if ( "function" != typeof func || null != resolver && "function" != typeof resolver ) throw new TypeError ( FUNC _ERROR _TEXT ) ; var memoized = function ( ) { var args = arguments , key = resolver ? resolver . apply ( this , args ) : args [ 0 ] , cache = memoized . cache ; if ( cache . has ( key ) ) return cache . get ( key ) ; var result = func . apply ( this , args ) ; return memoized . cache = cache . set ( key , result ) || cache , result } ; return memoized . cache = new ( memoize . Cache || MapCache ) , memoized } function negate ( predicate ) { if ( "function" != typeof predicate ) throw new TypeError ( FUNC _ERROR _TEXT ) ; return function ( ) { var args = arguments ; switch ( args . length ) { case 0 : return ! predicate . call ( this ) ; case 1 : return ! predicate . call ( this , args [ 0 ] ) ; case 2 : return ! predicate . call ( this , args [ 0 ] , args [ 1 ] ) ; case 3 : return ! predicate . call ( this , args [ 0 ] , args [ 1 ] , args [ 2 ] ) } return ! predicate . apply ( this , args ) } } function once ( func ) { return before ( 2 , func ) } function rest ( func , start ) { if ( "function" != typeof func ) throw new TypeError ( FUNC _ERROR _TEXT ) ; return start = start === undefined ? start : toInteger ( start ) , baseRest ( func , start ) } function throttle ( func , wait , options ) { var leading = ! 0 , trailing = ! 0 ; if ( "function" != typeof func ) throw new TypeError ( FUNC _ERROR _TEXT ) ; return isObject ( options ) && ( leading = "leading" in options ? ! ! options . leading : leading , trailing = "trailing" in options ? ! ! options . trailing : trailing ) , debounce ( func , wait , { leading : leading , maxWait : wait , trailing : trailing } ) } function clone ( value ) { return baseClone ( value , CLONE _SYMBOLS _FLAG ) } function cloneDeep ( value ) { return baseClone ( value , CLONE _DEEP _FLAG | CLONE _SYMBOLS _FLAG ) } function eq ( value , other ) { return value === other || value !== value && other !== other } function isArrayLike ( value ) { return null != value && isLength ( value . length ) && ! isFunction ( value ) } function isArrayLikeObject ( value ) { return isObjectLike ( value ) && isArrayLike ( value ) } function isBoolean ( value ) { return value === ! 0 || value === ! 1 || isObjectLike ( value ) && baseGetTag ( value ) == boolTag } function isEmpty ( value ) { if ( null == value ) return ! 0 ; if ( isArrayLike ( value ) && ( isArray ( value ) || "string" == typeof value || "function" == typeof value . splice || isBuffer ( value ) || isTypedArray ( value ) || isArguments ( value ) ) ) return ! value . length ; var tag = getTag ( value ) ; if ( tag == mapTag || tag == setTag ) return ! value . size ; if ( isPrototype ( value ) ) return ! baseKeys ( value ) . length ; for ( var key in value ) if ( hasOwnProperty . call ( value , key ) ) return ! 1 ; return ! 0 } function isEqual ( value , other ) { return baseIsEqual ( value , other ) } function isFinite ( value ) { return "number" == typeof value && nativeIsFinite ( value ) } function isFunction ( value ) { if ( ! isObject ( value ) ) return ! 1 ; var tag = baseGetTag ( value ) ; return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag } function isLength ( value ) { return "number" == typeof value && value > - 1 && value % 1 == 0 && value <= MAX _SAFE _INTEGER } function isObject ( value ) { var type = typeof value ; return null != value && ( "object" == type || "function" == type ) } function isObjectLike ( value ) { return null != value && "object" == typeof value } function isNaN ( value ) { return isNumber ( value ) && value != + value } function isNull ( value ) { return null === value } function isNumber ( value ) { return "number" == typeof value || isObjectLike ( value ) && baseGetTag ( value ) == numberTag } function isPlainObject ( value ) { if ( ! isObjectLike ( value ) || baseGetTag ( value ) != objectTag ) return ! 1 ; var proto = getPrototype ( value ) ; if ( null === proto ) return ! 0 ; var Ctor = hasOwnProperty . call ( proto , "constructor" ) && proto . constructor ; return "function" == typeof Ctor && Ctor instanceof Ctor && funcToString . call ( Ctor ) == objectCtorString } function isString ( value ) { return "string" == typeof value || ! isArray ( value ) && isObjectLike ( value ) && baseGetTag ( value ) == stringTag } function isSymbol ( value ) { return "symbol" == typeof value
return func . apply ( isArray ( value ) ? value : [ ] , args ) } ) } } ) , baseForOwn ( LazyWrapper . prototype , function ( func , methodName ) { var lodashFunc = lodash [ methodName ] ; if ( lodashFunc ) { var key = lodashFunc . name + "" , names = realNames [ key ] || ( realNames [ key ] = [ ] ) ; names . push ( { name : methodName , func : lodashFunc } ) } } ) , realNames [ createHybrid ( undefined , WRAP _BIND _KEY _FLAG ) . name ] = [ { name : "wrapper" , func : undefined } ] , LazyWrapper . prototype . clone = lazyClone , LazyWrapper . prototype . reverse = lazyReverse , LazyWrapper . prototype . value = lazyValue , lodash . prototype . first = lodash . prototype . head , symIterator && ( lodash . prototype [ symIterator ] = wrapperToIterator ) , "function" == typeof define && "object" == typeof define . amd && define . amd ? ( root . _ = lodash , define ( function ( ) { return lodash } ) ) : freeModule ? ( ( freeModule . exports = lodash ) . _ = lodash , freeExports . _ = lodash ) : root . _ = lodash } . call ( this ) ; var _global ; _global = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this , _global . BI || ( _global . BI = { } ) , ! function ( undefined ) { var traverse = function ( func , context ) { return function ( value , key , obj ) { return func . call ( context , key , value , obj ) } } , _apply = function ( name ) { return function ( ) { return _ [ name ] . apply ( _ , arguments ) } } , _applyFunc = function ( name ) { return function ( ) { var args = Array . prototype . slice . call ( arguments , 0 ) ; return args [ 1 ] = _ . isFunction ( args [ 1 ] ) ? traverse ( args [ 1 ] , args [ 2 ] ) : args [ 1 ] , _ [ name ] . apply ( _ , args ) } } ; _ . extend ( BI , { assert : function ( v , is ) { if ( this . isFunction ( is ) ) { if ( is ( v ) ) return ! 0 ; throw new Error ( v + " error" ) } if ( this . isArray ( is ) || ( is = [ is ] ) , ! this . deepContains ( is , v ) ) throw new Error ( v + " error" ) } , warn : function ( message ) { console . warn ( message ) } , UUID : function ( ) { for ( var f = [ "0" , "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "a" , "b" , "c" , "d" , "e" , "f" ] , str = "" , i = 0 ; i < 16 ; i ++ ) { var r = parseInt ( f . length * Math . random ( ) , 10 ) ; str += f [ r ] } return str } , isWidget : function ( widget ) { return widget instanceof BI . Widget || BI . View && widget instanceof BI . View } , createWidgets : function ( items , options , context ) { if ( ! BI . isArray ( items ) ) throw new Error ( "cannot create Widgets" ) ; return BI . isWidget ( options ) ? ( context = options , options = { } ) : options || ( options = { } ) , BI . map ( BI . flatten ( items ) , function ( i , item ) { return BI . createWidget ( item , BI . deepClone ( options ) ) } ) } , createItems : function ( data , innerAttr , outerAttr ) { return innerAttr = BI . isArray ( innerAttr ) ? innerAttr : BI . makeArray ( BI . flatten ( data ) . length , innerAttr || { } ) , outerAttr = BI . isArray ( outerAttr ) ? outerAttr : BI . makeArray ( BI . flatten ( data ) . length , outerAttr || { } ) , BI . map ( data , function ( i , item ) { return BI . isArray ( item ) ? BI . createItems ( item , innerAttr , outerAttr ) : item instanceof BI . Widget ? BI . extend ( { } , innerAttr . shift ( ) , outerAttr . shift ( ) , { type : null , el : item } ) : innerAttr [ 0 ] instanceof BI . Widget ? ( outerAttr . shift ( ) , BI . extend ( { } , item , { el : innerAttr . shift ( ) } ) ) : item . el instanceof BI . Widget || BI . View && item . el instanceof BI . View ? ( innerAttr . shift ( ) , BI . extend ( { } , outerAttr . shift ( ) , { type : null } , item ) ) : item . el ? BI . extend ( { } , outerAttr . shift ( ) , item , { el : BI . extend ( { } , innerAttr . shift ( ) , item . el ) } ) : BI . extend ( { } , outerAttr . shift ( ) , { el : BI . extend ( { } , innerAttr . shift ( ) , item ) } ) } ) } , packageItems : function ( items , layouts ) { for ( var i = layouts . length - 1 ; i >= 0 ; i -- ) items = BI . map ( items , function ( k , it ) { return BI . extend ( { } , layouts [ i ] , { items : [ BI . extend ( { } , layouts [ i ] . el , { el : it } ) ] } ) } ) ; return items } , formatEL : function ( obj ) { return obj && ! obj . type && obj . el ? obj : { el : obj } } , stripEL : function ( obj ) { return obj . type && obj || obj . el || obj } , trans2Element : function ( widgets ) { return BI . map ( widgets , function ( i , wi ) { return wi . element } ) } } ) , _ . each ( [ "where" , "findWhere" , "invoke" , "pluck" , "shuffle" , "sample" , "toArray" , "size" ] , function ( name ) { BI [ name ] = _apply ( name ) } ) , _ . each ( [ "get" , "set" , "each" , "map" , "reduce" , "reduceRight" , "find" , "filter" , "reject" , "every" , "all" , "some" , "any" , "max" , "min" , "sortBy" , "groupBy" , "indexBy" , "countBy" , "partition" , "clamp" ] , function ( name ) { "any" === name ? BI [ name ] = _applyFunc ( "some" ) : BI [ name ] = _applyFunc ( name ) } ) , _ . extend ( BI , { count : function ( from , to , predicate ) { var t ; if ( predicate ) for ( t = from ; t < to ; t ++ ) predicate ( t ) ; return to - from } , inverse : function ( from , to , predicate ) { return BI . count ( to , from , predicate ) } , firstKey : function ( obj ) { var res = undefined ; return BI . any ( obj , function ( key , value ) { return res = key , ! 0 } ) , res } , lastKey : function ( obj )
properties . hasOwnProperty ( "toString" ) && ( this . toString = properties . toString ) } , clone : function ( ) { return this . init . prototype . extend ( this ) } } } ( ) , WordArray = C _lib . WordArray = Base . extend ( { init : function ( words , sigBytes ) { words = this . words = words || [ ] , sigBytes != undefined ? this . sigBytes = sigBytes : this . sigBytes = 4 * words . length } , toString : function ( encoder ) { return ( encoder || Hex ) . stringify ( this ) } , concat : function ( wordArray ) { var thisWords = this . words , thatWords = wordArray . words , thisSigBytes = this . sigBytes , thatSigBytes = wordArray . sigBytes ; if ( this . clamp ( ) , thisSigBytes % 4 ) for ( var i = 0 ; i < thatSigBytes ; i ++ ) { var thatByte = thatWords [ i >>> 2 ] >>> 24 - i % 4 * 8 & 255 ; thisWords [ thisSigBytes + i >>> 2 ] |= thatByte << 24 - ( thisSigBytes + i ) % 4 * 8 } else if ( thatWords . length > 65535 ) for ( var i = 0 ; i < thatSigBytes ; i += 4 ) thisWords [ thisSigBytes + i >>> 2 ] = thatWords [ i >>> 2 ] ; else thisWords . push . apply ( thisWords , thatWords ) ; return this . sigBytes += thatSigBytes , this } , clamp : function ( ) { var words = this . words , sigBytes = this . sigBytes ; words [ sigBytes >>> 2 ] &= 4294967295 << 32 - sigBytes % 4 * 8 , words . length = Math . ceil ( sigBytes / 4 ) } , clone : function ( ) { var clone = Base . clone . call ( this ) ; return clone . words = this . words . slice ( 0 ) , clone } , random : function ( nBytes ) { for ( var words = [ ] , i = 0 ; i < nBytes ; i += 4 ) words . push ( 4294967296 * Math . random ( ) | 0 ) ; return new WordArray . init ( words , nBytes ) } } ) , C _enc = C . enc = { } , Hex = C _enc . Hex = { stringify : function ( wordArray ) { for ( var words = wordArray . words , sigBytes = wordArray . sigBytes , hexChars = [ ] , i = 0 ; i < sigBytes ; i ++ ) { var bite = words [ i >>> 2 ] >>> 24 - i % 4 * 8 & 255 ; hexChars . push ( ( bite >>> 4 ) . toString ( 16 ) ) , hexChars . push ( ( 15 & bite ) . toString ( 16 ) ) } return hexChars . join ( "" ) } , parse : function ( hexStr ) { for ( var hexStrLength = hexStr . length , words = [ ] , i = 0 ; i < hexStrLength ; i += 2 ) words [ i >>> 3 ] |= parseInt ( hexStr . substr ( i , 2 ) , 16 ) << 24 - i % 8 * 4 ; return new WordArray . init ( words , hexStrLength / 2 ) } } , Latin1 = C _enc . Latin1 = { stringify : function ( wordArray ) { for ( var words = wordArray . words , sigBytes = wordArray . sigBytes , latin1Chars = [ ] , i = 0 ; i < sigBytes ; i ++ ) { var bite = words [ i >>> 2 ] >>> 24 - i % 4 * 8 & 255 ; latin1Chars . push ( String . fromCharCode ( bite ) ) } return latin1Chars . join ( "" ) } , parse : function ( latin1Str ) { for ( var latin1StrLength = latin1Str . length , words = [ ] , i = 0 ; i < latin1StrLength ; i ++ ) words [ i >>> 2 ] |= ( 255 & latin1Str . charCodeAt ( i ) ) << 24 - i % 4 * 8 ; return new WordArray . init ( words , latin1StrLength ) } } , Utf8 = C _enc . Utf8 = { stringify : function ( wordArray ) { try { return decodeURIComponent ( escape ( Latin1 . stringify ( wordArray ) ) ) } catch ( e ) { throw new Error ( "Malformed UTF-8 data" ) } } , parse : function ( utf8Str ) { return Latin1 . parse ( unescape ( encodeURIComponent ( utf8Str ) ) ) } } , BufferedBlockAlgorithm = C _lib . BufferedBlockAlgorithm = Base . extend ( { reset : function ( ) { this . _data = new WordArray . init , this . _nDataBytes = 0 } , _append : function ( data ) { "string" == typeof data && ( data = Utf8 . parse ( data ) ) , this . _data . concat ( data ) , this . _nDataBytes += data . sigBytes } , _process : function ( doFlush ) { var data = this . _data , dataWords = data . words , dataSigBytes = data . sigBytes , blockSize = this . blockSize , blockSizeBytes = 4 * blockSize , nBlocksReady = dataSigBytes / blockSizeBytes ; nBlocksReady = doFlush ? Math . ceil ( nBlocksReady ) : Math . max ( ( 0 | nBlocksReady ) - this . _minBufferSize , 0 ) ; var nWordsReady = nBlocksReady * blockSize , nBytesReady = Math . min ( 4 * nWordsReady , dataSigBytes ) ; if ( nWordsReady ) { for ( var offset = 0 ; offset < nWordsReady ; offset += blockSize ) this . _doProcessBlock ( dataWords , offset ) ; var processedWords = dataWords . splice ( 0 , nWordsReady ) ; data . sigBytes -= nBytesReady } return new WordArray . init ( processedWords , nBytesReady ) } , clone : function ( ) { var clone = Base . clone . call ( this ) ; return clone . _data = this . _data . clone ( ) , clone } , _minBufferSize : 0 } ) , Hasher = C _lib . Hasher = BufferedBlockAlgorithm . extend ( { cfg : Base . extend ( ) , init : function ( cfg ) { this . cfg = this . cfg . extend ( cfg ) , this . reset ( ) } , reset : function ( ) { BufferedBlockAlgorithm . reset . call ( this ) , this . _doReset ( ) } , update : function ( messageUpdate ) { return this . _append ( messageUpdate ) , this . _process ( ) , this } , finalize : function ( messageUpdate ) { messageUpdate && this . _append ( messageUpdate ) ; var hash = this . _doFinalize ( ) ; return hash } , blockSize : 16 , _createHelper : function ( hasher ) { return function ( message , cfg ) { return new hasher . init ( cfg ) . finalize ( message ) } } , _createHmacHelper : function ( hasher ) { return function ( message , key ) { return new C _algo . HMAC . init ( hasher , key ) . finalize ( messag
19969 : "DZ" , 19975 : "WM" , 19988 : "QJ" , 20048 : "YL" , 20056 : "SC" , 20060 : "NM" , 20094 : "QG" , 20127 : "QJ" , 20167 : "QC" , 20193 : "YG" , 20250 : "KH" , 20256 : "ZC" , 20282 : "SC" , 20285 : "QJG" , 20291 : "TD" , 20314 : "YD" , 20315 : "BF" , 20340 : "NE" , 20375 : "TD" , 20389 : "YJ" , 20391 : "CZ" , 20415 : "PB" , 20446 : "YS" , 20447 : "SQ" , 20504 : "TC" , 20608 : "KG" , 20854 : "QJ" , 20857 : "ZC" , 20911 : "PF" , 20985 : "AW" , 21032 : "PB" , 21048 : "XQ" , 21049 : "SC" , 21089 : "YS" , 21119 : "JC" , 21242 : "SB" , 21273 : "SC" , 21305 : "YP" , 21306 : "QO" , 21330 : "ZC" , 21333 : "SDC" , 21345 : "QK" , 21378 : "CA" , 21397 : "SC" , 21414 : "XS" , 21442 : "SC" , 21477 : "JG" , 21480 : "TD" , 21484 : "ZS" , 21494 : "YX" , 21505 : "YX" , 21512 : "HG" , 21523 : "XH" , 21537 : "PB" , 21542 : "PF" , 21549 : "KH" , 21571 : "E" , 21574 : "DA" , 21588 : "TD" , 21589 : "O" , 21618 : "ZC" , 21621 : "KHA" , 21632 : "ZJ" , 21654 : "KG" , 21679 : "LKG" , 21683 : "KH" , 21710 : "A" , 21719 : "YH" , 21734 : "WOE" , 21769 : "A" , 21780 : "WN" , 21804 : "XH" , 21834 : "A" , 21899 : "ZD" , 21903 : "RN" , 21908 : "WO" , 21939 : "ZC" , 21956 : "SA" , 21964 : "YA" , 21970 : "TD" , 22003 : "A" , 22031 : "JG" , 22040 : "XS" , 22060 : "ZC" , 22066 : "ZC" , 22079 : "MH" , 22129 : "XJ" , 22179 : "XA" , 22237 : "NJ" , 22244 : "TD" , 22280 : "JQ" , 22300 : "YH" , 22313 : "XW" , 22331 : "YQ" , 22343 : "YJ" , 22351 : "PH" , 22395 : "DC" , 22412 : "TD" , 22484 : "PB" , 22500 : "PB" , 22534 : "ZD" , 22549 : "DH" , 22561 : "PB" , 22612 : "TD" , 22771 : "KQ" , 22831 : "HB" , 22841 : "JG" , 22855 : "QJ" , 22865 : "XQ" , 23013 : "ML" , 23081 : "WM" , 23487 : "SX" , 23558 : "QJ" , 23561 : "YW" , 23586 : "YW" , 23614 : "YW" , 23615 : "SN" , 23631 : "PB" , 23646 : "ZS" , 23663 : "ZT" , 23673 : "YG" , 23762 : "TD" , 23769 : "ZS" , 23780 : "QJ" , 23884 : "QK" , 24055 : "XH" , 24113 : "DC" , 24162 : "ZC" , 24191 : "GA" , 24273 : "QJ" , 24324 : "NL" , 24377 : "TD" , 24378 : "QJ" , 24439 : "PF" , 24554 : "ZS" , 24683 : "TD" , 24694 : "WE" , 24733 : "LK" , 24925 : "TN" , 25094 : "ZG" , 25100 : "XQ" , 25103 : "XH" , 25153 : "PB" , 25170 : "PB" , 25179 : "KG" , 25203 : "PB" , 25240 : "ZS" , 25282 : "FB" , 25303 : "NA" , 25324 : "KG" , 25341 : "ZY" , 25373 : "WZ" , 25375 : "XJ" , 25384 : "A" , 25457 : "A" , 25528 : "SD" , 25530 : "SC" , 25552 : "TD" , 25774 : "ZC" , 25874 : "ZC" , 26044 : "YW" , 26080 : "WM" , 26292 : "PB" , 26333 : "PB" , 26355 : "ZY" , 26366 : "CZ" , 26397 : "ZC" , 26399 : "QJ" , 26415 : "ZS" , 26451 : "SB" , 26526 : "ZC" , 26552 : "JG" , 26561 : "TD" , 26588 : "JG" , 26597 : "CZ" , 26629 : "ZS" , 26638 : "YL" , 26646 : "XQ" , 26653 : "KG" , 26657 : "XJ" , 26727 : "HG" , 26894 : "ZC" , 26937 : "ZS" , 26946 : "ZC" , 26999 : "KJ" , 27099 : "KJ" , 27449 : "YQ" , 27481 : "XS" , 27542 : "ZS" , 27663 : "ZS" , 27748 : "TS" , 27784 : "SC" , 27788 : "ZD" , 27795 : "TD" , 27812 : "O" , 27850 : "PB" , 27852 : "MB" , 27895 : "SL" , 27898 : "PL" , 27973 : "QJ" , 27981 : "KH" , 27986 : "HX" , 27994 : "XJ" , 28044 : "YC" , 28065 : "WG" , 28177 : "SM" , 28267 : "QJ" , 28291 : "KH" , 28337 : "ZQ" , 28463 : "TL" , 28548 : "DC" , 28601 : "TD" , 28689 : "PB" , 28805 : "JG" , 28820 : "QG" , 28846 : "PB" , 28952 : "TD" , 28975 : "ZC" , 29100 : "A" , 29325 : "QJ" , 29575 : "SL" , 29602 : "FB" , 30010 : "TD" , 30044 : "CX" , 30058 : "PF" , 30091 : "YSP" , 30111 : "YN" , 30229 : "XJ" , 30427 : "SC" , 30465 : "SX" , 30631 : "YQ" , 30655 : "QJ" , 30684 : "QJG" , 30707 : "SD" , 30729 : "XH" , 30796 : "LG" , 30917 : "PB" , 31074 : "NM" , 31085 : "JZ" , 31109 : "SC" , 31181 : "ZC" , 31192 : "MLB" , 31293 : "JQ" , 31400 : "YX" , 31584 : "YJ" , 31896 : "ZN" , 31909 : "ZY" , 31995 : "XJ" , 32321 : "PF" , 32327 : "ZY" , 32418 : "HG" , 32420 : "XQ" , 32421 : "HG" , 32438 : "LG" , 32473 : "GJ" , 32488 : "TD" , 32521 : "QJ" , 32527 : "PB" , 32562 : "ZSQ" , 32564 : "JZ" , 32735 : "ZD" , 32793 : "PB" , 33071 : "PF" , 33098 : "XL" , 33100 : "YA" , 33152 : "PB" , 33261 : "CX" , 33324 : "BP" , 33333 : "TD" , 33406 : "YA" , 33426 : "WM" , 33432 : "PB" , 33445 : "JG" , 33486 : "ZN" , 33493 : "TS" , 33507 : "QJ" , 33540 : "QJ" , 33544 : "ZC" , 33564 : "XQ" , 33617 : "YT" , 33632 : "QJ" , 33636 : "XH" , 33637 : "YX" , 33694 : "WG" , 33705 : "PF" , 33728 : "YW" , 33882 : "SR" , 34067 : "WM" , 34074 : "YW" , 34121 : "QJ" , 34255 : "ZC" , 34259 : "XL" , 34425 : "JH" , 34430 : "XH" , 34485 : "KH" , 34503 : "YS" , 34532 : "HG" , 34552 : "XS" , 34558 : "YE" , 34593 : "ZL" , 34660 : "YQ" , 34892 : "XH" , 34928 : "SC" , 34999 : "QJ" , 35048 : "PB" , 35059 : "SC" , 35098 : "ZC" , 35203 : "TQ" , 35265 : "JX" , 35299 : "JX" , 35782 : "SZ" , 35828 : "YS" , 35830 : "E" , 35843 : "TD" , 35895 : "YG" , 35977 : "MH" , 36158 : "JG" , 36228 : "QJ" , 36426 : "XQ" , 36466 : "DC" , 36710 : "JC" , 36711 : "ZYG" , 36767 : "PB" , 36866 : "SK" , 36951 : "YW" , 37034 : "YX" , 37063 : "XH" , 37218 : "ZC" , 37325 : "ZC" , 38063 : "PB" , 38079 : "TD" , 38085 : "QY" , 38107 : "DC" , 38116 : "TD" , 38123 : "YD" , 38224 : "HG" , 38241 : "XTC" , 38271 : "ZC" , 38415 : "YE" , 38426 : "KH" , 38461 : "YD" , 38463 : "AE" , 38466 : "PB" , 38477 : "XJ" , 38518 : "YT" , 38551 : "WK" , 38585 : "ZC" , 38704 : "XS" , 38739 : "LJ" , 38761 : "GJ" , 38808 : "SQ" , 39048 : "JG" , 39049 : "XJ" , 39052 : "HG" , 39076 : "CZ" , 39271 : "XT" , 39534 : "TD" , 39552 : "TD" , 39584 : "PB" , 39647 : "SB" , 39730 : "LG" , 39748 : "TPB" , 40109 : "ZQ" , 40479 : "ND" , 40516 : "HG" , 40536 : "HG" , 40583 : "QJ" , 40765 : "YQ" , 40784 : "QJ" , 40840 : "YK" , 40863 : "QJG" } , _checkPYCh =
if ( ! ( index < 0 || index > this . options . items . length - 1 ) ) { var child = this . _children [ this . _getChildName ( index ) ] , updated ; if ( updated = child . update ( this . _getOptions ( item ) ) ) return updated ; var del = this . _children [ this . _getChildName ( index ) ] ; delete this . _children [ this . _getChildName ( index ) ] , this . options . items . splice ( index , 1 ) ; var w = this . _addElement ( index , item ) ; this . options . items . splice ( index , 0 , item ) , this . _children [ this . _getChildName ( index ) ] = w , index > 0 ? this . _children [ this . _getChildName ( index - 1 ) ] . element . after ( w . element ) : w . element . prependTo ( this . _getWrapper ( ) ) , del . _destroy ( ) , w . _mount ( ) } } , addItems : function ( items , context ) { var self = this , o = this . options , fragment = BI . Widget . _renderEngine . createFragment ( ) , added = [ ] ; BI . each ( items , function ( i , item ) { var w = self . _addElement ( o . items . length , item , context ) ; self . _children [ self . _getChildName ( o . items . length ) ] = w , o . items . push ( item ) , added . push ( w ) , fragment . appendChild ( w . element [ 0 ] ) } ) , this . _isMounted && ( this . _getWrapper ( ) . append ( fragment ) , BI . each ( added , function ( i , w ) { w . _mount ( ) } ) ) } , prependItems : function ( items , context ) { var self = this ; items = items || [ ] ; for ( var fragment = BI . Widget . _renderEngine . createFragment ( ) , added = [ ] , i = items . length - 1 ; i >= 0 ; i -- ) { this . _addItemAt ( 0 , items [ i ] ) ; var w = this . _addElement ( 0 , items [ i ] , context ) ; self . _children [ self . _getChildName ( 0 ) ] = w , this . options . items . unshift ( items [ i ] ) , added . push ( w ) , fragment . appendChild ( w . element [ 0 ] ) } this . _isMounted && ( this . _getWrapper ( ) . prepend ( fragment ) , BI . each ( added , function ( i , w ) { w . _mount ( ) } ) ) } , getValue : function ( ) { var self = this , value = [ ] , child ; return BI . each ( this . options . items , function ( i ) { if ( child = self . _children [ self . _getChildName ( i ) ] ) { var v = child . getValue ( ) ; v = BI . isArray ( v ) ? v : [ v ] , value = value . concat ( v ) } } ) , value } , setValue : function ( v ) { var self = this , child ; BI . each ( this . options . items , function ( i ) { ( child = self . _children [ self . _getChildName ( i ) ] ) && child . setValue ( v ) } ) } , setText : function ( v ) { var self = this , child ; BI . each ( this . options . items , function ( i ) { ( child = self . _children [ self . _getChildName ( i ) ] ) && child . setText ( v ) } ) } , patchItem : function ( oldVnode , vnode , index ) { var shouldUpdate = this . shouldUpdateItem ( index , vnode ) ; if ( shouldUpdate === ! 0 || null === shouldUpdate && ! this . _compare ( oldVnode , vnode ) ) return this . updateItemAt ( index , vnode ) } , updateChildren : function ( oldCh , newCh ) { function sameVnode ( vnode1 , vnode2 , oldIndex , newIndex ) { return vnode1 = self . _getOptions ( vnode1 ) , vnode2 = self . _getOptions ( vnode2 ) , BI . isKey ( vnode1 . key ) ? vnode1 . key === vnode2 . key : oldIndex >= 0 ? oldIndex === newIndex : void 0 } function addNode ( vnode , index ) { var opt = self . _getOptions ( vnode ) , key = null == opt . key ? self . _getChildName ( index ) : opt . key ; return children [ key ] = self . _addElement ( key , vnode ) } function addVnodes ( before , vnodes , startIdx , endIdx ) { for ( ; startIdx <= endIdx ; ++ startIdx ) { var node = addNode ( vnodes [ startIdx ] , startIdx ) ; insertBefore ( node , before , ! 1 , startIdx ) } } function removeVnodes ( vnodes , startIdx , endIdx ) { for ( ; startIdx <= endIdx ; ++ startIdx ) { var ch = vnodes [ startIdx ] ; if ( BI . isNotNull ( ch ) ) { var node = self . _getOptions ( ch ) , key = null == node . key ? self . _getChildName ( startIdx ) : node . key ; delete self . _children [ self . _getChildName ( key ) ] , children [ key ] . _destroy ( ) } } } function insertBefore ( insert , before , isNext , index ) { insert = self . _getOptions ( insert ) , before = before && self . _getOptions ( before ) ; var insertKey = BI . isKey ( insert . key ) ? insert . key : self . _getChildName ( index ) ; if ( before && children [ before . key ] ) { var beforeKey = BI . isKey ( before . key ) ? before . key : self . _getChildName ( index ) , next ; next = isNext ? children [ beforeKey ] . element . next ( ) : children [ beforeKey ] . element , next . length > 0 ? next . before ( children [ insertKey ] . element ) : self . _getWrapper ( ) . append ( children [ insertKey ] . element ) } else self . _getWrapper ( ) . append ( children [ insertKey ] . element ) } function findOldVnode ( vnodes , vNode , beginIdx , endIdx ) { var i , found ; for ( i = beginIdx ; i <= endIdx ; ++ i ) vnodes [ i ] && sameVnode ( vnodes [ i ] , vNode ) && ( found = vnodes [ i ] ) ; return found } var self = this , oldStartIdx = 0 , newStartIdx = 0 , oldEndIdx = oldCh . length - 1 , oldStartVnode = oldCh [ 0 ] , oldEndVnode = oldCh [ oldEndIdx ] , newEndIdx = newCh . length - 1 , newStartVnode = newCh [ 0 ] , newEndVnode = newCh [ newEndIdx ] , before , updated , children = { } ; for ( BI . each ( oldCh , function ( i , child ) { child = self . _getOptions ( child ) ; var key = null == child . key ? i : child . key ; BI . isKey ( key ) && ( children [ ke
self . layerManager [ name ] . destroy ( ) , self . layouts [ name ] . destroy ( ) } ) , this . layerManager = { } , this . layouts = { } , this } } ) , BI . MaskersController = BI . inherit ( BI . LayerController , { _defaultConfig : function ( ) { return BI . extend ( BI . MaskersController . superclass . _defaultConfig . apply ( this , arguments ) , { } ) } , _init : function ( ) { BI . MaskersController . superclass . _init . apply ( this , arguments ) , this . zindex = BI . zIndex _masker } } ) , BI . PopoverController = BI . inherit ( BI . Controller , { _defaultConfig : function ( ) { return BI . extend ( BI . PopoverController . superclass . _defaultConfig . apply ( this , arguments ) , { modal : ! 0 , render : "body" } ) } , _init : function ( ) { BI . PopoverController . superclass . _init . apply ( this , arguments ) , this . modal = this . options . modal , this . floatManager = { } , this . floatLayer = { } , this . floatContainer = { } , this . floatOpened = { } , this . zindex = BI . zIndex _popover , this . zindexMap = { } } , _check : function ( name ) { return BI . isNotNull ( this . floatManager [ name ] ) } , create : function ( name , options , context ) { if ( this . _check ( name ) ) return this ; var popover = BI . createWidget ( options || { } , { type : "bi.popover" } , context ) ; return this . add ( name , popover , options , context ) , this } , add : function ( name , popover , options , context ) { var self = this ; return options || ( options = { } ) , this . _check ( name ) ? this : ( this . floatContainer [ name ] = BI . createWidget ( { type : "bi.absolute" , cls : "bi-popup-view" , items : [ { el : this . floatLayer [ name ] = BI . createWidget ( { type : "bi.absolute" , items : [ popover ] } , context ) , left : 0 , right : 0 , top : 0 , bottom : 0 } ] } ) , this . floatManager [ name ] = popover , function ( key ) { popover . on ( BI . Popover . EVENT _CLOSE , function ( ) { self . close ( key ) } ) } ( name ) , BI . createWidget ( { type : "bi.absolute" , element : options . container || this . options . render , items : [ { el : this . floatContainer [ name ] , left : 0 , right : 0 , top : 0 , bottom : 0 } ] } ) , this ) } , open : function ( name ) { if ( ! this . _check ( name ) ) return this ; if ( ! this . floatOpened [ name ] ) { this . floatOpened [ name ] = ! 0 ; var container = this . floatContainer [ name ] ; container . element . css ( "zIndex" , this . zindex ++ ) , this . modal && container . element . _ _hasZIndexMask _ _ ( this . zindexMap [ name ] ) && container . element . _ _releaseZIndexMask _ _ ( this . zindexMap [ name ] ) , this . zindexMap [ name ] = this . zindex , this . modal && container . element . _ _buildZIndexMask _ _ ( this . zindex ++ ) , this . get ( name ) . setZindex ( this . zindex ++ ) , this . floatContainer [ name ] . visible ( ) ; var popover = this . get ( name ) ; popover . show && popover . show ( ) ; var W = BI . Widget . _renderEngine . createElement ( this . options . render ) . width ( ) , H = BI . Widget . _renderEngine . createElement ( this . options . render ) . height ( ) , w = popover . element . width ( ) , h = popover . element . height ( ) , left = ( W - w ) / 2 , top = ( H - h ) / 2 ; left < 0 && ( left = 0 ) , top < 0 && ( top = 0 ) , popover . element . css ( { left : left + "px" , top : top + "px" } ) } return this } , close : function ( name ) { return this . _check ( name ) ? ( this . floatOpened [ name ] && ( delete this . floatOpened [ name ] , this . floatContainer [ name ] . invisible ( ) , this . modal && this . floatContainer [ name ] . element . _ _releaseZIndexMask _ _ ( this . zindexMap [ name ] ) ) , this ) : this } , get : function ( name ) { return this . floatManager [ name ] } , remove : function ( name ) { return this . _check ( name ) ? ( this . floatContainer [ name ] . destroy ( ) , this . modal && this . floatContainer [ name ] . element . _ _releaseZIndexMask _ _ ( this . zindexMap [ name ] ) , delete this . floatManager [ name ] , delete this . floatLayer [ name ] , delete this . zindexMap [ name ] , delete this . floatContainer [ name ] , delete this . floatOpened [ name ] , this ) : this } , removeAll : function ( ) { var self = this ; return BI . each ( this . floatContainer , function ( name , container ) { container . destroy ( ) , self . modal && self . floatContainer [ name ] . element . _ _releaseZIndexMask _ _ ( self . zindexMap [ name ] ) } ) , this . floatManager = { } , this . floatLayer = { } , this . floatContainer = { } , this . floatOpened = { } , this . zindexMap = { } , this } } ) , BI . ResizeController = BI . inherit ( BI . Controller , { _defaultConfig : function ( ) { return BI . extend ( BI . ResizeController . superclass . _defaultConfig . apply ( this , arguments ) , { } ) } , _init : function ( ) { BI . ResizeController . superclass . _init . apply ( this , arguments ) ; var self = this ; this . resizerManger = { } ; var fn = BI . debounce ( function ( ev ) { self . _resize ( ev ) } , 30 ) ; BI . Widget . _renderEngine . createElement ( _global ) . resize ( fn ) } , _resize : function ( ev ) { BI . each ( this . resizerManger , function ( key , resizer ) { return resizer instanceof BI . $ ? void ( resizer . is ( ":visible" ) && resizer . trigger ( "__resize__" ) ) : resizer instanceof BI . Layout ? void resizer . resize ( ) : BI . i
type : "bi.flex_horizontal" } ) : BI . extend ( ob , { type : "bi.table_adapt" } ) } ) , BI . Plugin . registerWidget ( "bi.center_adapt" , function ( ob ) { var isIE = BI . isIE ( ) , supportFlex = isSupportFlex ( ) , justOneItem = ob . items && ob . items . length <= 1 ; return ! isIE && supportFlex && justOneItem ? ob . scrollable === ! 0 || ob . scrollx === ! 0 || ob . scrolly === ! 0 ? BI . extend ( ob , { type : "bi.flex_scrollable_center_adapt" } ) : BI . extend ( ob , { type : "bi.flex_center_adapt" } ) : justOneItem ? BI . extend ( ob , { type : "bi.inline_center_adapt" } ) : ob } ) , BI . Plugin . registerWidget ( "bi.vertical_adapt" , function ( ob ) { var isIE = BI . isIE ( ) , supportFlex = isSupportFlex ( ) ; return ! isIE && supportFlex ? ob . scrollable === ! 0 || ob . scrollx === ! 0 || ob . scrolly === ! 0 ? BI . extend ( { } , ob , { type : "bi.flex_scrollable_vertical_center_adapt" } ) : BI . extend ( ob , { type : "bi.flex_vertical_center_adapt" } ) : BI . extend ( ob , { type : "bi.inline_vertical_adapt" } ) } ) , BI . Plugin . registerWidget ( "bi.horizontal_adapt" , function ( ob ) { return ob . items && ob . items . length <= 1 ? BI . extend ( ob , { type : "bi.horizontal_auto" } ) : ob } ) , BI . Plugin . registerWidget ( "bi.float_center_adapt" , function ( ob ) { return ! BI . isIE ( ) && isSupportFlex ( ) ? ob . scrollable === ! 0 || ob . scrollx === ! 0 || ob . scrolly === ! 0 ? BI . extend ( { } , ob , { type : "bi.flex_scrollable_center_adapt" } ) : BI . extend ( ob , { type : "bi.flex_center_adapt" } ) : BI . extend ( ob , { type : "bi.inline_center_adapt" } ) } ) , BI . Plugin . registerWidget ( "bi.flex_horizontal" , function ( ob ) { if ( ob . scrollable === ! 0 || ob . scrolly === ! 0 ) return BI . extend ( { } , ob , { type : "bi.flex_scrollable_horizontal" } ) } ) , BI . Plugin . registerWidget ( "bi.flex_vertical" , function ( ob ) { if ( ob . scrollable === ! 0 || ob . scrollx === ! 0 ) return BI . extend ( { } , ob , { type : "bi.flex_scrollable_vertical" } ) } ) , BI . Plugin . registerWidget ( "bi.flex_horizontal_adapt" , function ( ob ) { if ( ob . scrollable === ! 0 || ob . scrollx === ! 0 ) return BI . extend ( { } , ob , { type : "bi.flex_scrollable_horizontal_adapt" } ) } ) , BI . Plugin . registerWidget ( "bi.flex_vertical_adapt" , function ( ob ) { if ( ob . scrollable === ! 0 || ob . scrolly === ! 0 ) return BI . extend ( { } , ob , { type : "bi.flex_scrollable_vertical_adapt" } ) } ) , BI . Plugin . registerWidget ( "bi.flex_horizontal_center_adapt" , function ( ob ) { if ( ob . scrollable === ! 0 || ob . scrollx === ! 0 ) return BI . extend ( { } , ob , { type : "bi.flex_scrollable_horizontal_adapt" } ) } ) , BI . Plugin . registerWidget ( "bi.flex_vertical_center_adapt" , function ( ob ) { if ( ob . scrollable === ! 0 || ob . scrolly === ! 0 ) return BI . extend ( { } , ob , { type : "bi.flex_scrollable_vertical_adapt" } ) } ) , BI . Plugin . registerWidget ( "bi.flex_center_adapt" , function ( ob ) { if ( ob . scrollable === ! 0 || ob . scrolly === ! 0 || ob . scrollx === ! 0 ) return BI . extend ( { } , ob , { type : "bi.flex_scrollable_center_adapt" } ) } ) , BI . Plugin . registerWidget ( "bi.radio" , function ( ob ) { return BI . isIE ( ) && BI . getIEVersion ( ) < 9 ? BI . extend ( ob , { type : "bi.image_radio" } ) : ob } ) , BI . Plugin . registerWidget ( "bi.checkbox" , function ( ob ) { return BI . isIE ( ) && BI . getIEVersion ( ) < 9 ? BI . extend ( ob , { type : "bi.image_checkbox" } ) : ob } ) , BI . Plugin . registerWidget ( "bi.half_icon_button" , function ( ob ) { return BI . isIE ( ) && BI . getIEVersion ( ) < 9 ? ob : BI . extend ( ob , { type : "bi.half_button" } ) } ) } ) , ! function ( ) { var attachEvent = _global . document && _global . document . attachEvent , stylesCreated = ! 1 ; if ( _global . document && ! attachEvent ) { var requestFrame = function ( ) { var raf = _global . requestAnimationFrame || _global . mozRequestAnimationFrame || _global . webkitRequestAnimationFrame || function ( fn ) { return _global . setTimeout ( fn , 20 ) } ; return function ( fn ) { return raf ( fn ) } } ( ) , cancelFrame = function ( ) { var cancel = _global . cancelAnimationFrame || _global . mozCancelAnimationFrame || _global . webkitCancelAnimationFrame || _global . clearTimeout ; return function ( id ) { return cancel ( id ) } } ( ) , resetTriggers = function ( element ) { var triggers = element . _ _resizeTriggers _ _ , expand = triggers . firstElementChild , contract = triggers . lastElementChild , expandChild = expand . firstElementChild ; contract . scrollLeft = contract . scrollWidth , contract . scrollTop = contract . scrollHeight , expandChild . style . width = expand . offsetWidth + 1 + "px" , expandChild . style . height = expand . offsetHeight + 1 + "px" , expand . scrollLeft = expand . scrollWidth , expand . scrollTop = expand . scrollHeight } , checkTriggers = function ( element ) { return element . offsetWidth !== element . _ _resizeLast _ _ . width || element . offsetHeight !== element . _ _resizeLast _ _ . height } , scrollListener = function ( e ) { var element = this ; resetTriggers ( this ) , this . _ _resizeRAF _ _ && c
if ( 1 === dest . nodeType && jQuery . hasData ( src ) ) { var type , i , l , oldData = jQuery . _data ( src ) , curData = jQuery . _data ( dest , oldData ) , events = oldData . events ; if ( events ) { delete curData . handle , curData . events = { } ; for ( type in events ) for ( i = 0 , l = events [ type ] . length ; i < l ; i ++ ) jQuery . event . add ( dest , type , events [ type ] [ i ] ) } curData . data && ( curData . data = jQuery . extend ( { } , curData . data ) ) } } function fixCloneNodeIssues ( src , dest ) { var nodeName , e , data ; if ( 1 === dest . nodeType ) { if ( nodeName = dest . nodeName . toLowerCase ( ) , ! jQuery . support . noCloneEvent && dest [ jQuery . expando ] ) { data = jQuery . _data ( dest ) ; for ( e in data . events ) jQuery . removeEvent ( dest , e , data . handle ) ; dest . removeAttribute ( jQuery . expando ) } "script" === nodeName && dest . text !== src . text ? ( disableScript ( dest ) . text = src . text , restoreScript ( dest ) ) : "object" === nodeName ? ( dest . parentNode && ( dest . outerHTML = src . outerHTML ) , jQuery . support . html5Clone && src . innerHTML && ! jQuery . trim ( dest . innerHTML ) && ( dest . innerHTML = src . innerHTML ) ) : "input" === nodeName && manipulation _rcheckableType . test ( src . type ) ? ( dest . defaultChecked = dest . checked = src . checked , dest . value !== src . value && ( dest . value = src . value ) ) : "option" === nodeName ? dest . defaultSelected = dest . selected = src . defaultSelected : "input" !== nodeName && "textarea" !== nodeName || ( dest . defaultValue = src . defaultValue ) } } function getAll ( context , tag ) { var elems , elem , i = 0 , found = typeof context . getElementsByTagName !== core _strundefined ? context . getElementsByTagName ( tag || "*" ) : typeof context . querySelectorAll !== core _strundefined ? context . querySelectorAll ( tag || "*" ) : undefined ; if ( ! found ) for ( found = [ ] , elems = context . childNodes || context ; null != ( elem = elems [ i ] ) ; i ++ ) ! tag || jQuery . nodeName ( elem , tag ) ? found . push ( elem ) : jQuery . merge ( found , getAll ( elem , tag ) ) ; return tag === undefined || tag && jQuery . nodeName ( context , tag ) ? jQuery . merge ( [ context ] , found ) : found } function fixDefaultChecked ( elem ) { manipulation _rcheckableType . test ( elem . type ) && ( elem . defaultChecked = elem . checked ) } function vendorPropName ( style , name ) { if ( name in style ) return name ; for ( var capName = name . charAt ( 0 ) . toUpperCase ( ) + name . slice ( 1 ) , origName = name , i = cssPrefixes . length ; i -- ; ) if ( name = cssPrefixes [ i ] + capName , name in style ) return name ; return origName } function isHidden ( elem , el ) { return elem = el || elem , "none" === jQuery . css ( elem , "display" ) || ! jQuery . contains ( elem . ownerDocument , elem ) } function showHide ( elements , show ) { for ( var display , elem , hidden , values = [ ] , index = 0 , length = elements . length ; index < length ; index ++ ) elem = elements [ index ] , elem . style && ( values [ index ] = jQuery . _data ( elem , "olddisplay" ) , display = elem . style . display , show ? ( values [ index ] || "none" !== display || ( elem . style . display = "" ) , "" === elem . style . display && isHidden ( elem ) && ( values [ index ] = jQuery . _data ( elem , "olddisplay" , css _defaultDisplay ( elem . nodeName ) ) ) ) : values [ index ] || ( hidden = isHidden ( elem ) , ( display && "none" !== display || ! hidden ) && jQuery . _data ( elem , "olddisplay" , hidden ? display : jQuery . css ( elem , "display" ) ) ) ) ; for ( index = 0 ; index < length ; index ++ ) elem = elements [ index ] , elem . style && ( show && "none" !== elem . style . display && "" !== elem . style . display || ( elem . style . display = show ? values [ index ] || "" : "none" ) ) ; return elements } function setPositiveNumber ( elem , value , subtract ) { var matches = rnumsplit . exec ( value ) ; return matches ? Math . max ( 0 , matches [ 1 ] - ( subtract || 0 ) ) + ( matches [ 2 ] || "px" ) : value } function augmentWidthOrHeight ( elem , name , extra , isBorderBox , styles ) { for ( var i = extra === ( isBorderBox ? "border" : "content" ) ? 4 : "width" === name ? 1 : 0 , val = 0 ; i < 4 ; i += 2 ) "margin" === extra && ( val += jQuery . css ( elem , extra + cssExpand [ i ] , ! 0 , styles ) ) , isBorderBox ? ( "content" === extra && ( val -= jQuery . css ( elem , "padding" + cssExpand [ i ] , ! 0 , styles ) ) , "margin" !== extra && ( val -= jQuery . css ( elem , "border" + cssExpand [ i ] + "Width" , ! 0 , styles ) ) ) : ( val += jQuery . css ( elem , "padding" + cssExpand [ i ] , ! 0 , styles ) , "padding" !== extra && ( val += jQuery . css ( elem , "border" + cssExpand [ i ] + "Width" , ! 0 , styles ) ) ) ; return val } function getWidthOrHeight ( elem , name , extra ) { var valueIsBorderBox = ! 0 , val = "width" === name ? elem . offsetWidth : elem . offsetHeight , styles = getStyles ( elem ) , isBorderBox = jQuery . support . boxSizing && "border-box" === jQuery . css ( elem , "boxSizing" , ! 1 , styles ) ; if ( val <= 0 || null == val ) { if ( val = curCSS ( elem , name , styles ) , ( val < 0 || null == val ) && ( val = elem . style [ name ] ) , rnumnonpx . test ( val ) ) return val ; valueIsBorderBox = isBorderBox && ( jQuery . support .
marginDiv . style . cssText = div . style . cssText = divReset , marginDiv . style . marginRight = marginDiv . style . width = "0" , div . style . width = "1px" , support . reliableMarginRight = ! parseFloat ( ( window . getComputedStyle ( marginDiv , null ) || { } ) . marginRight ) ) , typeof div . style . zoom !== core _strundefined && ( div . innerHTML = "" , div . style . cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1" , support . inlineBlockNeedsLayout = 3 === div . offsetWidth , div . style . display = "block" , div . innerHTML = "<div></div>" , div . firstChild . style . width = "5px" , support . shrinkWrapBlocks = 3 !== div . offsetWidth , support . inlineBlockNeedsLayout && ( body . style . zoom = 1 ) ) , body . removeChild ( container ) , container = div = tds = marginDiv = null ) } ) , all = select = fragment = opt = a = input = null , support } ( ) ; var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/ , rmultiDash = /([A-Z])/g ; jQuery . extend ( { cache : { } , expando : "jQuery" + ( core _version + Math . random ( ) ) . replace ( /\D/g , "" ) , noData : { embed : ! 0 , object : "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" , applet : ! 0 } , hasData : function ( elem ) { return elem = elem . nodeType ? jQuery . cache [ elem [ jQuery . expando ] ] : elem [ jQuery . expando ] , ! ! elem && ! isEmptyDataObject ( elem ) } , data : function ( elem , name , data ) { return internalData ( elem , name , data ) } , removeData : function ( elem , name ) { return internalRemoveData ( elem , name ) } , _data : function ( elem , name , data ) { return internalData ( elem , name , data , ! 0 ) } , _removeData : function ( elem , name ) { return internalRemoveData ( elem , name , ! 0 ) } , acceptData : function ( elem ) { if ( elem . nodeType && 1 !== elem . nodeType && 9 !== elem . nodeType ) return ! 1 ; var noData = elem . nodeName && jQuery . noData [ elem . nodeName . toLowerCase ( ) ] ; return ! noData || noData !== ! 0 && elem . getAttribute ( "classid" ) === noData } } ) , jQuery . fn . extend ( { data : function ( key , value ) { var attrs , name , elem = this [ 0 ] , i = 0 , data = null ; if ( key === undefined ) { if ( this . length && ( data = jQuery . data ( elem ) , 1 === elem . nodeType && ! jQuery . _data ( elem , "parsedAttrs" ) ) ) { for ( attrs = elem . attributes ; i < attrs . length ; i ++ ) name = attrs [ i ] . name , name . indexOf ( "data-" ) || ( name = jQuery . camelCase ( name . slice ( 5 ) ) , dataAttr ( elem , name , data [ name ] ) ) ; jQuery . _data ( elem , "parsedAttrs" , ! 0 ) } return data } return "object" == typeof key ? this . each ( function ( ) { jQuery . data ( this , key ) } ) : jQuery . access ( this , function ( value ) { return value === undefined ? elem ? dataAttr ( elem , key , jQuery . data ( elem , key ) ) : null : void this . each ( function ( ) { jQuery . data ( this , key , value ) } ) } , null , value , arguments . length > 1 , null , ! 0 ) } , removeData : function ( key ) { return this . each ( function ( ) { jQuery . removeData ( this , key ) } ) } } ) , jQuery . extend ( { queue : function ( elem , type , data ) { var queue ; if ( elem ) return type = ( type || "fx" ) + "queue" , queue = jQuery . _data ( elem , type ) , data && ( ! queue || jQuery . isArray ( data ) ? queue = jQuery . _data ( elem , type , jQuery . makeArray ( data ) ) : queue . push ( data ) ) , queue || [ ] } , dequeue : function ( elem , type ) { type = type || "fx" ; var queue = jQuery . queue ( elem , type ) , startLength = queue . length , fn = queue . shift ( ) , hooks = jQuery . _queueHooks ( elem , type ) , next = function ( ) { jQuery . dequeue ( elem , type ) } ; "inprogress" === fn && ( fn = queue . shift ( ) , startLength -- ) , hooks . cur = fn , fn && ( "fx" === type && queue . unshift ( "inprogress" ) , delete hooks . stop , fn . call ( elem , next , hooks ) ) , ! startLength && hooks && hooks . empty . fire ( ) } , _queueHooks : function ( elem , type ) { var key = type + "queueHooks" ; return jQuery . _data ( elem , key ) || jQuery . _data ( elem , key , { empty : jQuery . Callbacks ( "once memory" ) . add ( function ( ) { jQuery . _removeData ( elem , type + "queue" ) , jQuery . _removeData ( elem , key ) } ) } ) } } ) , jQuery . fn . extend ( { queue : function ( type , data ) { var setter = 2 ; return "string" != typeof type && ( data = type , type = "fx" , setter -- ) , arguments . length < setter ? jQuery . queue ( this [ 0 ] , type ) : data === undefined ? this : this . each ( function ( ) { var queue = jQuery . queue ( this , type , data ) ; jQuery . _queueHooks ( this , type ) , "fx" === type && "inprogress" !== queue [ 0 ] && jQuery . dequeue ( this , type ) } ) } , dequeue : function ( type ) { return this . each ( function ( ) { jQuery . dequeue ( this , type ) } ) } , delay : function ( time , type ) { return time = jQuery . fx ? jQuery . fx . speeds [ time ] || time : time , type = type || "fx" , this . queue ( type , function ( next , hooks ) { var timeout = setTimeout ( next , time ) ; hooks . stop = function ( ) { clearTimeout ( timeout ) } } ) } , clearQueue : function ( type ) { return this . queue ( type || "fx" , [ ] ) } , promise : function ( type , obj ) { var tmp , count = 1 , defer = jQuery . Deferred ( ) , elements = this , i = this . length , resolve = function ( ) { -- count || defer . resolveWith ( elements , [ el
function createPositionalPseudo ( fn ) { return markFunction ( function ( argument ) { return argument = + argument , markFunction ( function ( seed , matches ) { for ( var j , matchIndexes = fn ( [ ] , seed . length , argument ) , i = matchIndexes . length ; i -- ; ) seed [ j = matchIndexes [ i ] ] && ( seed [ j ] = ! ( matches [ j ] = seed [ j ] ) ) } ) } ) } function tokenize ( selector , parseOnly ) { var matched , match , tokens , type , soFar , groups , preFilters , cached = tokenCache [ selector + " " ] ; if ( cached ) return parseOnly ? 0 : cached . slice ( 0 ) ; for ( soFar = selector , groups = [ ] , preFilters = Expr . preFilter ; soFar ; ) { matched && ! ( match = rcomma . exec ( soFar ) ) || ( match && ( soFar = soFar . slice ( match [ 0 ] . length ) || soFar ) , groups . push ( tokens = [ ] ) ) , matched = ! 1 , ( match = rcombinators . exec ( soFar ) ) && ( matched = match . shift ( ) , tokens . push ( { value : matched , type : match [ 0 ] . replace ( rtrim , " " ) } ) , soFar = soFar . slice ( matched . length ) ) ; for ( type in Expr . filter ) ! ( match = matchExpr [ type ] . exec ( soFar ) ) || preFilters [ type ] && ! ( match = preFilters [ type ] ( match ) ) || ( matched = match . shift ( ) , tokens . push ( { value : matched , type : type , matches : match } ) , soFar = soFar . slice ( matched . length ) ) ; if ( ! matched ) break } return parseOnly ? soFar . length : soFar ? Sizzle . error ( selector ) : tokenCache ( selector , groups ) . slice ( 0 ) } function toSelector ( tokens ) { for ( var i = 0 , len = tokens . length , selector = "" ; i < len ; i ++ ) selector += tokens [ i ] . value ; return selector } function addCombinator ( matcher , combinator , base ) { var dir = combinator . dir , checkNonElements = base && "parentNode" === dir , doneName = done ++ ; return combinator . first ? function ( elem , context , xml ) { for ( ; elem = elem [ dir ] ; ) if ( 1 === elem . nodeType || checkNonElements ) return matcher ( elem , context , xml ) } : function ( elem , context , xml ) { var data , cache , outerCache , dirkey = dirruns + " " + doneName ; if ( xml ) { for ( ; elem = elem [ dir ] ; ) if ( ( 1 === elem . nodeType || checkNonElements ) && matcher ( elem , context , xml ) ) return ! 0 } else for ( ; elem = elem [ dir ] ; ) if ( 1 === elem . nodeType || checkNonElements ) if ( outerCache = elem [ expando ] || ( elem [ expando ] = { } ) , ( cache = outerCache [ dir ] ) && cache [ 0 ] === dirkey ) { if ( ( data = cache [ 1 ] ) === ! 0 || data === cachedruns ) return data === ! 0 } else if ( cache = outerCache [ dir ] = [ dirkey ] , cache [ 1 ] = matcher ( elem , context , xml ) || cachedruns , cache [ 1 ] === ! 0 ) return ! 0 } } function elementMatcher ( matchers ) { return matchers . length > 1 ? function ( elem , context , xml ) { for ( var i = matchers . length ; i -- ; ) if ( ! matchers [ i ] ( elem , context , xml ) ) return ! 1 ; return ! 0 } : matchers [ 0 ] } function condense ( unmatched , map , filter , context , xml ) { for ( var elem , newUnmatched = [ ] , i = 0 , len = unmatched . length , mapped = null != map ; i < len ; i ++ ) ( elem = unmatched [ i ] ) && ( filter && ! filter ( elem , context , xml ) || ( newUnmatched . push ( elem ) , mapped && map . push ( i ) ) ) ; return newUnmatched } function setMatcher ( preFilter , selector , matcher , postFilter , postFinder , postSelector ) { return postFilter && ! postFilter [ expando ] && ( postFilter = setMatcher ( postFilter ) ) , postFinder && ! postFinder [ expando ] && ( postFinder = setMatcher ( postFinder , postSelector ) ) , markFunction ( function ( seed , results , context , xml ) { var temp , i , elem , preMap = [ ] , postMap = [ ] , preexisting = results . length , elems = seed || multipleContexts ( selector || "*" , context . nodeType ? [ context ] : context , [ ] ) , matcherIn = ! preFilter || ! seed && selector ? elems : condense ( elems , preMap , preFilter , context , xml ) , matcherOut = matcher ? postFinder || ( seed ? preFilter : preexisting || postFilter ) ? [ ] : results : matcherIn ; if ( matcher && matcher ( matcherIn , matcherOut , context , xml ) , postFilter ) for ( temp = condense ( matcherOut , postMap ) , postFilter ( temp , [ ] , context , xml ) , i = temp . length ; i -- ; ) ( elem = temp [ i ] ) && ( matcherOut [ postMap [ i ] ] = ! ( matcherIn [ postMap [ i ] ] = elem ) ) ; if ( seed ) { if ( postFinder || preFilter ) { if ( postFinder ) { for ( temp = [ ] , i = matcherOut . length ; i -- ; ) ( elem = matcherOut [ i ] ) && temp . push ( matcherIn [ i ] = elem ) ; postFinder ( null , matcherOut = [ ] , temp , xml ) } for ( i = matcherOut . length ; i -- ; ) ( elem = matcherOut [ i ] ) && ( temp = postFinder ? indexOf . call ( seed , elem ) : preMap [ i ] ) > - 1 && ( seed [ temp ] = ! ( results [ temp ] = elem ) ) } } else matcherOut = condense ( matcherOut === results ? matcherOut . splice ( preexisting , matcherOut . length ) : matcherOut ) , postFinder ? postFinder ( null , results , matcherOut , xml ) : push . apply ( results , matcherOut ) } ) } function matcherFromTokens ( tokens ) { for ( var checkContext , matcher , j , len = tokens . length , leadingRelative = Expr . relative [ tokens [ 0 ] . type ] , implicitRelative = leadingRelative || Expr . relative [ " " ] , i = leadingRelative ? 1 : 0 , matchContext = addCombinator ( function ( elem ) { return elem === che
1 !== this . nodeType && 11 !== this . nodeType && 9 !== this . nodeType || this . insertBefore ( elem , this . firstChild ) } ) } , before : function ( ) { return this . domManip ( arguments , ! 1 , function ( elem ) { this . parentNode && this . parentNode . insertBefore ( elem , this ) } ) } , after : function ( ) { return this . domManip ( arguments , ! 1 , function ( elem ) { this . parentNode && this . parentNode . insertBefore ( elem , this . nextSibling ) } ) } , remove : function ( selector , keepData ) { for ( var elem , i = 0 ; null != ( elem = this [ i ] ) ; i ++ ) ( ! selector || jQuery . filter ( selector , [ elem ] ) . length > 0 ) && ( keepData || 1 !== elem . nodeType || jQuery . cleanData ( getAll ( elem ) ) , elem . parentNode && ( keepData && jQuery . contains ( elem . ownerDocument , elem ) && setGlobalEval ( getAll ( elem , "script" ) ) , elem . parentNode . removeChild ( elem ) ) ) ; return this } , empty : function ( ) { for ( var elem , i = 0 ; null != ( elem = this [ i ] ) ; i ++ ) { for ( 1 === elem . nodeType && jQuery . cleanData ( getAll ( elem , ! 1 ) ) ; elem . firstChild ; ) elem . removeChild ( elem . firstChild ) ; elem . options && jQuery . nodeName ( elem , "select" ) && ( elem . options . length = 0 ) } return this } , clone : function ( dataAndEvents , deepDataAndEvents ) { return dataAndEvents = null != dataAndEvents && dataAndEvents , deepDataAndEvents = null == deepDataAndEvents ? dataAndEvents : deepDataAndEvents , this . map ( function ( ) { return jQuery . clone ( this , dataAndEvents , deepDataAndEvents ) } ) } , html : function ( value ) { return jQuery . access ( this , function ( value ) { var elem = this [ 0 ] || { } , i = 0 , l = this . length ; if ( value === undefined ) return 1 === elem . nodeType ? elem . innerHTML . replace ( rinlinejQuery , "" ) : undefined ; if ( "string" == typeof value && ! rnoInnerhtml . test ( value ) && ( jQuery . support . htmlSerialize || ! rnoshimcache . test ( value ) ) && ( jQuery . support . leadingWhitespace || ! rleadingWhitespace . test ( value ) ) && ! wrapMap [ ( rtagName . exec ( value ) || [ "" , "" ] ) [ 1 ] . toLowerCase ( ) ] ) { value = value . replace ( rxhtmlTag , "<$1></$2>" ) ; try { for ( ; i < l ; i ++ ) elem = this [ i ] || { } , 1 === elem . nodeType && ( jQuery . cleanData ( getAll ( elem , ! 1 ) ) , elem . innerHTML = value ) ; elem = 0 } catch ( e ) { } } elem && this . empty ( ) . append ( value ) } , null , value , arguments . length ) } , replaceWith : function ( value ) { var isFunc = jQuery . isFunction ( value ) ; return isFunc || "string" == typeof value || ( value = jQuery ( value ) . not ( this ) . detach ( ) ) , this . domManip ( [ value ] , ! 0 , function ( elem ) { var next = this . nextSibling , parent = this . parentNode ; parent && ( jQuery ( this ) . remove ( ) , parent . insertBefore ( elem , next ) ) } ) } , detach : function ( selector ) { return this . remove ( selector , ! 0 ) } , domManip : function ( args , table , callback ) { args = core _concat . apply ( [ ] , args ) ; var first , node , hasScripts , scripts , doc , fragment , i = 0 , l = this . length , set = this , iNoClone = l - 1 , value = args [ 0 ] , isFunction = jQuery . isFunction ( value ) ; if ( isFunction || ! ( l <= 1 || "string" != typeof value || jQuery . support . checkClone ) && rchecked . test ( value ) ) return this . each ( function ( index ) { var self = set . eq ( index ) ; isFunction && ( args [ 0 ] = value . call ( this , index , table ? self . html ( ) : undefined ) ) , self . domManip ( args , table , callback ) } ) ; if ( l && ( fragment = jQuery . buildFragment ( args , this [ 0 ] . ownerDocument , ! 1 , this ) , first = fragment . firstChild , 1 === fragment . childNodes . length && ( fragment = first ) , first ) ) { for ( table = table && jQuery . nodeName ( first , "tr" ) , scripts = jQuery . map ( getAll ( fragment , "script" ) , disableScript ) , hasScripts = scripts . length ; i < l ; i ++ ) node = fragment , i !== iNoClone && ( node = jQuery . clone ( node , ! 0 , ! 0 ) , hasScripts && jQuery . merge ( scripts , getAll ( node , "script" ) ) ) , callback . call ( table && jQuery . nodeName ( this [ i ] , "table" ) ? findOrAppend ( this [ i ] , "tbody" ) : this [ i ] , node , i ) ; if ( hasScripts ) for ( doc = scripts [ scripts . length - 1 ] . ownerDocument , jQuery . map ( scripts , restoreScript ) , i = 0 ; i < hasScripts ; i ++ ) node = scripts [ i ] , rscriptType . test ( node . type || "" ) && ! jQuery . _data ( node , "globalEval" ) && jQuery . contains ( doc , node ) && ( node . src ? jQuery . ajax ( { url : node . src , type : "GET" , dataType : "script" , async : ! 1 , global : ! 1 , "throws" : ! 0 } ) : jQuery . globalEval ( ( node . text || node . textContent || node . innerHTML || "" ) . replace ( rcleanScript , "" ) ) ) ; fragment = first = null } return this } } ) , jQuery . each ( { appendTo : "append" , prependTo : "prepend" , insertBefore : "before" , insertAfter : "after" , replaceAll : "replaceWith" } , function ( name , original ) { jQuery . fn [ name ] = function ( selector ) { for ( var elems , i = 0 , ret = [ ] , insert = jQuery ( selector ) , last = insert . length - 1 ; i <= last ; i ++ ) elems = i === last ? this : this . clone ( ! 0 ) , jQuery ( insert [ i ] ) [ original ] ( elems ) , core _push . apply ( ret , elems . get ( ) ) ; return this . pushStack ( ret ) } } ) , jQuery . e
for ( index = timers . length ; index -- ; ) timers [ index ] . elem !== this || null != type && timers [ index ] . queue !== type || ( timers [ index ] . anim . stop ( gotoEnd ) , dequeue = ! 1 , timers . splice ( index , 1 ) ) ; ! dequeue && gotoEnd || jQuery . dequeue ( this , type ) } ) } , finish : function ( type ) { return type !== ! 1 && ( type = type || "fx" ) , this . each ( function ( ) { var index , data = jQuery . _data ( this ) , queue = data [ type + "queue" ] , hooks = data [ type + "queueHooks" ] , timers = jQuery . timers , length = queue ? queue . length : 0 ; for ( data . finish = ! 0 , jQuery . queue ( this , type , [ ] ) , hooks && hooks . cur && hooks . cur . finish && hooks . cur . finish . call ( this ) , index = timers . length ; index -- ; ) timers [ index ] . elem === this && timers [ index ] . queue === type && ( timers [ index ] . anim . stop ( ! 0 ) , timers . splice ( index , 1 ) ) ; for ( index = 0 ; index < length ; index ++ ) queue [ index ] && queue [ index ] . finish && queue [ index ] . finish . call ( this ) ; delete data . finish } ) } } ) , jQuery . each ( { slideDown : genFx ( "show" ) , slideUp : genFx ( "hide" ) , slideToggle : genFx ( "toggle" ) , fadeIn : { opacity : "show" } , fadeOut : { opacity : "hide" } , fadeToggle : { opacity : "toggle" } } , function ( name , props ) { jQuery . fn [ name ] = function ( speed , easing , callback ) { return this . animate ( props , speed , easing , callback ) } } ) , jQuery . speed = function ( speed , easing , fn ) { var opt = speed && "object" == typeof speed ? jQuery . extend ( { } , speed ) : { complete : fn || ! fn && easing || jQuery . isFunction ( speed ) && speed , duration : speed , easing : fn && easing || easing && ! jQuery . isFunction ( easing ) && easing } ; return opt . duration = jQuery . fx . off ? 0 : "number" == typeof opt . duration ? opt . duration : opt . duration in jQuery . fx . speeds ? jQuery . fx . speeds [ opt . duration ] : jQuery . fx . speeds . _default , null != opt . queue && opt . queue !== ! 0 || ( opt . queue = "fx" ) , opt . old = opt . complete , opt . complete = function ( ) { jQuery . isFunction ( opt . old ) && opt . old . call ( this ) , opt . queue && jQuery . dequeue ( this , opt . queue ) } , opt } , jQuery . easing = { linear : function ( p ) { return p } , swing : function ( p ) { return . 5 - Math . cos ( p * Math . PI ) / 2 } } , jQuery . timers = [ ] , jQuery . fx = Tween . prototype . init , jQuery . fx . tick = function ( ) { var timer , timers = jQuery . timers , i = 0 ; for ( fxNow = jQuery . now ( ) ; i < timers . length ; i ++ ) timer = timers [ i ] , timer ( ) || timers [ i ] !== timer || timers . splice ( i -- , 1 ) ; timers . length || jQuery . fx . stop ( ) , fxNow = undefined } , jQuery . fx . timer = function ( timer ) { timer ( ) && jQuery . timers . push ( timer ) && jQuery . fx . start ( ) } , jQuery . fx . interval = 13 , jQuery . fx . start = function ( ) { timerId || ( timerId = setInterval ( jQuery . fx . tick , jQuery . fx . interval ) ) } , jQuery . fx . stop = function ( ) { clearInterval ( timerId ) , timerId = null } , jQuery . fx . speeds = { slow : 600 , fast : 200 , _default : 400 } , jQuery . fx . step = { } , jQuery . expr && jQuery . expr . filters && ( jQuery . expr . filters . animated = function ( elem ) { return jQuery . grep ( jQuery . timers , function ( fn ) { return elem === fn . elem } ) . length } ) , jQuery . fn . offset = function ( options ) { if ( arguments . length ) return options === undefined ? this : this . each ( function ( i ) { jQuery . offset . setOffset ( this , options , i ) } ) ; var docElem , win , box = { top : 0 , left : 0 } , elem = this [ 0 ] , doc = elem && elem . ownerDocument ; if ( doc ) return docElem = doc . documentElement , jQuery . contains ( docElem , elem ) ? ( typeof elem . getBoundingClientRect !== core _strundefined && ( box = elem . getBoundingClientRect ( ) ) , win = getWindow ( doc ) , { top : box . top + ( win . pageYOffset || docElem . scrollTop ) - ( docElem . clientTop || 0 ) , left : box . left + ( win . pageXOffset || docElem . scrollLeft ) - ( docElem . clientLeft || 0 ) } ) : box } , jQuery . offset = { setOffset : function ( elem , options , i ) { var position = jQuery . css ( elem , "position" ) ; "static" === position && ( elem . style . position = "relative" ) ; var curElem = jQuery ( elem ) , curOffset = curElem . offset ( ) , curCSSTop = jQuery . css ( elem , "top" ) , curCSSLeft = jQuery . css ( elem , "left" ) , calculatePosition = ( "absolute" === position || "fixed" === position ) && jQuery . inArray ( "auto" , [ curCSSTop , curCSSLeft ] ) > - 1 , props = { } , curPosition = { } , curTop , curLeft ; calculatePosition ? ( curPosition = curElem . position ( ) , curTop = curPosition . top , curLeft = curPosition . left ) : ( curTop = parseFloat ( curCSSTop ) || 0 , curLeft = parseFloat ( curCSSLeft ) || 0 ) , jQuery . isFunction ( options ) && ( options = options . call ( elem , i , curOffset ) ) , null != options . top && ( props . top = options . top - curOffset . top + curTop ) , null != options . left && ( props . left = options . left - curOffset . left + curLeft ) , "using" in options ? options . using . call ( elem , props ) : curElem . css ( props ) } } , jQuery . fn . extend ( { position : function ( ) { if ( this [ 0 ] ) { var offsetParent , offset , parentOffset = { top : 0 , left : 0 } , elem = this [ 0 ] ; return "fixed" === j
return w . element . css ( { position : "relative" , "flex-shrink" : "0" } ) , o . columnSize [ i ] > 0 && w . element . width ( o . columnSize [ i ] ) , "fill" === o . columnSize [ i ] && w . element . css ( "flex" , "1" ) , o . vgap + o . tgap + ( item . tgap || 0 ) + ( item . vgap || 0 ) !== 0 && w . element . css ( { "margin-top" : o . vgap + o . tgap + ( item . tgap || 0 ) + ( item . vgap || 0 ) + "px" } ) , o . hgap + o . lgap + ( item . lgap || 0 ) + ( item . hgap || 0 ) !== 0 && w . element . css ( { "margin-left" : ( 0 === i ? o . hgap : 0 ) + o . lgap + ( item . lgap || 0 ) + ( item . hgap || 0 ) + "px" } ) , o . hgap + o . rgap + ( item . rgap || 0 ) + ( item . hgap || 0 ) !== 0 && w . element . css ( { "margin-right" : o . hgap + o . rgap + ( item . rgap || 0 ) + ( item . hgap || 0 ) + "px" } ) , o . vgap + o . bgap + ( item . bgap || 0 ) + ( item . vgap || 0 ) !== 0 && w . element . css ( { "margin-bottom" : o . vgap + o . bgap + ( item . bgap || 0 ) + ( item . vgap || 0 ) + "px" } ) , w } , resize : function ( ) { } , populate : function ( items ) { BI . FlexHorizontalLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.flex_horizontal" , BI . FlexHorizontalLayout ) , BI . FlexVerticalCenter = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . FlexVerticalCenter . superclass . props . apply ( this , arguments ) , { baseCls : "bi-flex-vertical-center-adapt-layout" , horizontalAlign : BI . HorizontalAlign . Left , columnSize : [ ] , scrollx : ! 1 , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { var self = this , o = this . options ; return { type : "bi.flex_horizontal" , ref : function ( _ref ) { self . wrapper = _ref } , verticalAlign : BI . VerticalAlign . Middle , horizontalAlign : o . horizontalAlign , columnSize : o . columnSize , scrollx : o . scrollx , scrolly : o . scrolly , scrollable : o . scrollable , vgap : o . vgap , lgap : o . lgap , rgap : o . rgap , hgap : o . hgap , items : o . items } } , resize : function ( ) { } , update : function ( opt ) { return this . wrapper . update ( opt ) } , populate : function ( items ) { this . wrapper . populate ( items ) } } ) , BI . shortcut ( "bi.flex_vertical_adapt" , BI . FlexVerticalCenter ) , BI . shortcut ( "bi.flex_vertical_center_adapt" , BI . FlexVerticalCenter ) , BI . FlexVerticalLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . FlexVerticalLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-flex-vertical-layout" , horizontalAlign : BI . HorizontalAlign . Left , verticalAlign : BI . VerticalAlign . Top , rowSize : [ ] , scrolly : ! 0 , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . FlexVerticalLayout . superclass . render . apply ( this , arguments ) ; var o = this . options ; this . element . addClass ( "h-" + o . horizontalAlign ) . addClass ( "v-" + o . verticalAlign ) , this . populate ( this . options . items ) } , _addElement : function ( i , item ) { var w = BI . FlexVerticalLayout . superclass . _addElement . apply ( this , arguments ) , o = this . options ; return w . element . css ( { position : "relative" , "flex-shrink" : "0" } ) , o . rowSize [ i ] > 0 && w . element . height ( o . rowSize [ i ] ) , "fill" === o . rowSize [ i ] && w . element . css ( "flex" , "1" ) , o . vgap + o . tgap + ( item . tgap || 0 ) + ( item . vgap || 0 ) !== 0 && w . element . css ( { "margin-top" : ( 0 === i ? o . vgap : 0 ) + o . tgap + ( item . tgap || 0 ) + ( item . vgap || 0 ) + "px" } ) , o . hgap + o . lgap + ( item . lgap || 0 ) + ( item . hgap || 0 ) !== 0 && w . element . css ( { "margin-left" : o . hgap + o . lgap + ( item . lgap || 0 ) + ( item . hgap || 0 ) + "px" } ) , o . hgap + o . rgap + ( item . rgap || 0 ) + ( item . hgap || 0 ) !== 0 && w . element . css ( { "margin-right" : o . hgap + o . rgap + ( item . rgap || 0 ) + ( item . hgap || 0 ) + "px" } ) , o . vgap + o . bgap + ( item . bgap || 0 ) + ( item . vgap || 0 ) !== 0 && w . element . css ( { "margin-bottom" : o . vgap + o . bgap + ( item . bgap || 0 ) + ( item . vgap || 0 ) + "px" } ) , w } , resize : function ( ) { } , populate : function ( items ) { BI . FlexVerticalLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.flex_vertical" , BI . FlexVerticalLayout ) , BI . FlexWrapperCenterLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . FlexWrapperCenterLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-flex-scrollable-center-adapt-layout clearfix" , scrollable : ! 0 } ) } , render : function ( ) { BI . FlexWrapperCenterLayout . superclass . render . apply ( this , arguments ) , this . $wrapper = BI . Widget . _renderEngine . createElement ( "<div>" ) . addClass ( "flex-scrollable-center-adapt-layout-wrapper" ) , this . populate ( this . options . items ) } , _addElement : function ( i , item ) { var o = this . options , w = BI . FlexWrapperCenterLayout . superclass . _addElement . apply ( this , arguments ) ; return w . element . css ( { position : "relative" , "margin-left" : ( 0 === i ? o . hgap : 0 ) + "px" , "margin-right" : o . hgap + "px" , "margin-top" : o . vgap + "px" , "margin-bottom" : o . vgap + "px" } ) , w } , appendFragment : function ( frag ) { this . $wrapper . append ( frag ) , th
baseCls : "bi-inline-layout" , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . InlineLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , _addElement : function ( i , item ) { var o = this . options , w = BI . InlineLayout . superclass . _addElement . apply ( this , arguments ) ; return w . element . css ( { position : "relative" , display : "inline-block" , "*display" : "inline" , "*zoom" : 1 } ) , o . vgap + o . tgap + ( item . tgap || 0 ) + ( item . vgap || 0 ) !== 0 && w . element . css ( { "margin-top" : o . vgap + o . tgap + ( item . tgap || 0 ) + ( item . vgap || 0 ) + "px" } ) , o . hgap + o . lgap + ( item . lgap || 0 ) + ( item . hgap || 0 ) !== 0 && w . element . css ( { "margin-left" : ( 0 === i ? o . hgap : 0 ) + o . lgap + ( item . lgap || 0 ) + ( item . hgap || 0 ) + "px" } ) , o . hgap + o . rgap + ( item . rgap || 0 ) + ( item . hgap || 0 ) !== 0 && w . element . css ( { "margin-right" : o . hgap + o . rgap + ( item . rgap || 0 ) + ( item . hgap || 0 ) + "px" } ) , o . vgap + o . bgap + ( item . bgap || 0 ) + ( item . vgap || 0 ) !== 0 && w . element . css ( { "margin-bottom" : o . vgap + o . bgap + ( item . bgap || 0 ) + ( item . vgap || 0 ) + "px" } ) , w } , resize : function ( ) { this . stroke ( this . options . items ) } , populate : function ( items ) { BI . InlineLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.inline" , BI . InlineLayout ) , BI . LatticeLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . LatticeLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-lattice-layout clearfix" } ) } , render : function ( ) { BI . LatticeLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , _addElement : function ( i , item ) { var o = this . options , w = BI . LatticeLayout . superclass . _addElement . apply ( this , arguments ) ; if ( o . columnSize && o . columnSize [ i ] ) var width = o . columnSize [ i ] / BI . sum ( o . columnSize ) * 100 + "%" ; else var width = 1 / this . options . items . length * 100 + "%" ; return w . element . css ( { position : "relative" , "float" : "left" , width : width } ) , w } , addItem : function ( item ) { var w = BI . LatticeLayout . superclass . addItem . apply ( this , arguments ) ; return this . resize ( ) , w } , addItemAt : function ( item ) { var w = BI . LatticeLayout . superclass . addItemAt . apply ( this , arguments ) ; return this . resize ( ) , w } , resize : function ( ) { this . stroke ( this . options . items ) } , populate : function ( items ) { BI . LatticeLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.lattice" , BI . LatticeLayout ) , BI . TableLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . TableLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-table-layout" , scrolly : ! 0 , columnSize : [ 200 , 200 , "fill" ] , rowSize : 30 , hgap : 0 , vgap : 0 , items : [ [ { el : { text : "label1" } } , { el : { text : "label2" } } , { el : { text : "label3" } } ] ] } ) } , render : function ( ) { BI . TableLayout . superclass . render . apply ( this , arguments ) , this . rows = 0 , this . populate ( this . options . items ) } , _addElement : function ( idx , arr ) { function firstElement ( item , row , col ) { 0 === row && item . addClass ( "first-row" ) , 0 === col && item . addClass ( "first-col" ) , item . addClass ( BI . isOdd ( row + 1 ) ? "odd-row" : "even-row" ) , item . addClass ( BI . isOdd ( col + 1 ) ? "odd-col" : "even-col" ) , item . addClass ( "center-element" ) } function firstObject ( item , row , col ) { var cls = "" ; 0 === row && ( cls += " first-row" ) , 0 === col && ( cls += " first-col" ) , cls += BI . isOdd ( row + 1 ) ? " odd-row" : " even-row" , cls += BI . isOdd ( col + 1 ) ? " odd-col" : " even-col" , item . cls = ( item . cls || "" ) + cls + " center-element" } function first ( item , row , col ) { item instanceof BI . Widget ? firstElement ( item . element , row , col ) : item . el instanceof BI . Widget ? firstElement ( item . el . element , row , col ) : item . el ? firstObject ( item . el , row , col ) : firstObject ( item , row , col ) } var o = this . options , abs = [ ] , left = 0 , right = 0 , i , j ; for ( i = 0 ; i < arr . length && BI . isNumber ( o . columnSize [ i ] ) ; i ++ ) first ( arr [ i ] , this . rows , i ) , abs . push ( BI . extend ( { top : 0 , bottom : 0 , left : o . columnSize [ i ] <= 1 ? 100 * left + "%" : left , width : o . columnSize [ i ] <= 1 ? 100 * o . columnSize [ i ] + "%" : o . columnSize [ i ] } , arr [ i ] ) ) , left += o . columnSize [ i ] + ( o . columnSize [ i ] < 1 ? 0 : o . hgap ) ; for ( j = arr . length - 1 ; j > i ; j -- ) { if ( ! BI . isNumber ( o . columnSize [ j ] ) ) throw new Error ( "item with fill can only be one" ) ; first ( arr [ j ] , this . rows , j ) , abs . push ( BI . extend ( { top : 0 , bottom : 0 , right : o . columnSize [ j ] <= 1 ? 100 * right + "%" : right , width : o . columnSize [ j ] <= 1 ? 100 * o . columnSize [ j ] + "%" : o . columnSize [ j ] } , arr [ j ] ) ) , right += o . columnSize [ j ] + ( o . columnSize [ j ] < 1 ? 0 : o . hgap ) } i >= 0 && i < arr . length && ( first ( arr [ i ] , this . rows , i ) , abs . push ( BI . extend ( { top : 0 , bottom : 0 , left : left <= 1 ? 100 * left + "%" : left , right : right <= 1 ? 100 * right + " %
mixins = mixins || [ ] , _ . each ( mixins . reverse ( ) , function ( mixinType ) { var mixin$$1 = getMixins ( mixinType ) ; for ( var key in mixin$$1 ) "function" == typeof mixin$$1 [ key ] && ( _ . has ( vm , key ) || ( vm [ key ] = _ . bind ( mixin$$1 [ key ] , vm . $$model ? vm . model : vm ) ) ) } ) } function defineProps ( vm , keys ) { for ( var props = { } , _loop = ( function _loop ( i , len ) { var key = keys [ i ] ; key in $$skipArray || ( props [ key ] = { enumerable : ! 0 , configurable : ! 0 , get : function get ( ) { if ( vm . $$computed && key in vm . $$computed ) return vm . $$computed [ key ] ; if ( vm . $$state && key in vm . $$state ) return vm . $$state [ key ] ; if ( vm . $$model && key in vm . $$model ) return vm . $$model [ key ] ; for ( var p = vm . _parent ; p ; ) { if ( p . $$context && key in p . $$context ) return p . $$context [ key ] ; p = p . _parent } } , set : function set ( val ) { if ( vm . $$state && key in vm . $$state ) return vm . $$state [ key ] = val ; if ( vm . $$model && key in vm . $$model ) return vm . $$model [ key ] = val ; for ( var p = vm . _parent ; p ; ) { if ( p . $$context && key in p . $$context ) return p . $$context [ key ] = val ; p = p . _parent } } } ) } ) , i = 0 , len = keys . length ; i < len ; i ++ ) _loop ( i , len ) ; vm . model = createViewModel$1 ( { } , props ) } function defineContext ( vm , keys ) { for ( var props = { } , _loop2 = ( function _loop2 ( i , len ) { var key = keys [ i ] ; key in $$skipArray || ( props [ key ] = { enumerable : ! 0 , configurable : ! 0 , get : function get ( ) { return vm . model [ key ] } , set : function set ( val ) { return vm . model [ key ] = val } } ) } ) , i = 0 , len = keys . length ; i < len ; i ++ ) _loop2 ( i , len ) ; vm . $$context = createViewModel$1 ( { } , props ) } function toJSON ( model ) { var result = void 0 ; if ( _ . isArray ( model ) ) { result = [ ] ; for ( var i = 0 , len = model . length ; i < len ; i ++ ) result [ i ] = toJSON ( model [ i ] ) } else if ( model && isPlainObject ( model ) ) { result = { } ; for ( var _key4 in model ) _ . has ( $$skipArray , _key4 ) || ( result [ _key4 ] = toJSON ( model [ _key4 ] ) ) } else result = model ; return result } function define ( model ) { return new Observer ( model ) . model } var rhashcode = /\d\.\d{4}/ , hasProto = "__proto__" in { } , isIE = function isIE ( ) { return "undefined" != typeof navigator && /(msie|trident)/i . test ( navigator . userAgent . toLowerCase ( ) ) } , getIEVersion = function getIEVersion ( ) { var version = 0 ; if ( "undefined" == typeof navigator ) return ! 1 ; var agent = navigator . userAgent . toLowerCase ( ) , v1 = agent . match ( /(?:msie\s([\w.]+))/ ) , v2 = agent . match ( /(?:trident.*rv:([\w.]+))/ ) ; return version = v1 && v2 && v1 [ 1 ] && v2 [ 1 ] ? Math . max ( 1 * v1 [ 1 ] , 1 * v2 [ 1 ] ) : v1 && v1 [ 1 ] ? 1 * v1 [ 1 ] : v2 && v2 [ 1 ] ? 1 * v2 [ 1 ] : 0 } , isIE9Below = isIE ( ) && getIEVersion ( ) < 9 , _toString = Object . prototype . toString , bailRE = /[^\w.$]/ , nextTick = function ( ) { function nextTickHandler ( ) { pending = ! 1 ; var copies = callbacks . slice ( 0 ) ; callbacks . length = 0 ; for ( var i = 0 ; i < copies . length ; i ++ ) copies [ i ] ( ) } var callbacks = [ ] , pending = ! 1 , timerFunc = void 0 ; if ( "undefined" != typeof setImmediate && isNative ( setImmediate ) ) timerFunc = function timerFunc ( ) { setImmediate ( nextTickHandler ) } ; else if ( "undefined" == typeof MessageChannel || ! isNative ( MessageChannel ) && "[object MessageChannelConstructor]" !== MessageChannel . toString ( ) ) if ( "undefined" != typeof Promise && isNative ( Promise ) ) { var p = Promise . resolve ( ) ; timerFunc = function timerFunc ( ) { p . then ( nextTickHandler ) } } else timerFunc = function timerFunc ( ) { setTimeout ( nextTickHandler , 0 ) } ; else { var channel = new MessageChannel , port = channel . port2 ; channel . port1 . onmessage = nextTickHandler , timerFunc = function timerFunc ( ) { port . postMessage ( 1 ) } } return function queueNextTick ( cb , ctx ) { var _resolve = void 0 ; if ( callbacks . push ( function ( ) { if ( cb ) try { cb . call ( ctx ) } catch ( e ) { console . error ( e ) } else _resolve && _resolve ( ctx ) } ) , pending || ( pending = ! 0 , timerFunc ( ) ) , ! cb && "undefined" != typeof Promise ) return new Promise ( function ( resolve , reject ) { _resolve = resolve } ) } } ( ) , falsy , $$skipArray = { _ _ob _ _ : falsy , $accessors : falsy , $vbthis : falsy , $vbsetter : falsy } , uid = 0 , Dep = function ( ) { function Dep ( ) { _classCallCheck ( this , Dep ) , this . id = uid ++ , this . subs = [ ] } return Dep . prototype . addSub = function addSub ( sub ) { this . subs . push ( sub ) } , Dep . prototype . removeSub = function removeSub ( sub ) { remove ( this . subs , sub ) } , Dep . prototype . depend = function depend ( ) { Dep . target && Dep . target . addDep ( this ) } , Dep . prototype . notify = function notify ( options ) { for ( var subs = this . subs . slice ( ) , i = 0 , l = subs . length ; i < l ; i ++ ) subs [ i ] . update ( options ) } , Dep } ( ) ; Dep . target = null ; var targetStack = [ ] , arrayProto = Array . prototype , arrayMethods = [ ] ; _ . each ( [ "push" , "pop" , "shift" , "unshift" , "splice" , "sort" , "reverse" ] , function ( method ) { var original = arrayProto [ method ] ; array
behavior . doBehavior . apply ( behavior , args ) } ) , BI . each ( buttons , function ( i , btn ) { btn . on ( BI . Controller . EVENT _CHANGE , function ( type , value , obj ) { if ( type === BI . Events . CLICK ) { switch ( o . chooseType ) { case BI . ButtonGroup . CHOOSE _TYPE _SINGLE : self . setValue ( btn . getValue ( ) ) ; break ; case BI . ButtonGroup . CHOOSE _TYPE _NONE : self . setValue ( [ ] ) } self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , self . fireEvent ( BI . ButtonGroup . EVENT _CHANGE , value , obj ) } else self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , btn . on ( BI . Events . DESTROY , function ( ) { BI . remove ( self . buttons , btn ) } ) } ) , buttons } , _packageBtns : function ( btns ) { for ( var o = this . options , i = o . layouts . length - 1 ; i > 0 ; i -- ) btns = BI . map ( btns , function ( k , it ) { return BI . extend ( { } , o . layouts [ i ] , { items : [ BI . extend ( { } , o . layouts [ i ] . el , { el : it } ) ] } ) } ) ; return btns } , _packageSimpleItems : function ( btns ) { var o = this . options ; return BI . map ( o . items , function ( i , item ) { return BI . stripEL ( item ) === item ? btns [ i ] : BI . extend ( { } , item , { el : btns [ i ] } ) } ) } , _packageItems : function ( items , packBtns ) { return BI . createItems ( BI . makeArrayByArray ( items , { } ) , BI . clone ( packBtns ) ) } , _packageLayout : function ( items ) { for ( var o = this . options , layout = BI . deepClone ( o . layouts [ 0 ] ) , lay = BI . formatEL ( layout ) . el ; lay && lay . items && ! BI . isEmpty ( lay . items ) ; ) lay = BI . formatEL ( lay . items [ 0 ] ) . el ; return lay . items = items , layout } , _isSimpleLayout : function ( ) { var o = this . options ; return 1 === o . layouts . length && ! BI . isArray ( o . items [ 0 ] ) } , doBehavior : function ( ) { var args = Array . prototype . slice . call ( arguments ) ; args . unshift ( this . buttons ) , BI . each ( this . behaviors , function ( i , behavior ) { behavior . doBehavior . apply ( behavior , args ) } ) } , prependItems : function ( items ) { var o = this . options , btns = this . _btnsCreator . apply ( this , arguments ) ; return this . buttons = BI . concat ( btns , this . buttons ) , this . _isSimpleLayout ( ) && this . layouts && this . layouts . prependItems ? void this . layouts . prependItems ( btns ) : ( items = this . _packageItems ( items , this . _packageBtns ( btns ) ) , void this . layouts . prependItems ( this . _packageLayout ( items ) . items ) ) } , addItems : function ( items ) { var o = this . options , btns = this . _btnsCreator . apply ( this , arguments ) ; return this . buttons = BI . concat ( this . buttons , btns ) , this . _isSimpleLayout ( ) && this . layouts && this . layouts . addItems ? void this . layouts . addItems ( btns ) : ( items = this . _packageItems ( items , this . _packageBtns ( btns ) ) , void this . layouts . addItems ( this . _packageLayout ( items ) . items ) ) } , removeItemAt : function ( indexes ) { BI . removeAt ( this . buttons , indexes ) , this . layouts . removeItemAt ( indexes ) } , removeItems : function ( values ) { values = BI . isArray ( values ) ? values : [ values ] ; var deleted = [ ] ; BI . each ( this . buttons , function ( i , button ) { BI . deepContains ( values , button . getValue ( ) ) && deleted . push ( i ) } ) , BI . removeAt ( this . buttons , deleted ) , this . layouts . removeItemAt ( deleted ) } , populate : function ( items ) { items = items || [ ] , this . empty ( ) , this . options . items = items , this . buttons = this . _btnsCreator . apply ( this , arguments ) , items = this . _isSimpleLayout ( ) ? this . _packageSimpleItems ( this . buttons ) : this . _packageItems ( items , this . _packageBtns ( this . buttons ) ) , this . layouts = BI . createWidget ( BI . extend ( { element : this } , this . _packageLayout ( items ) ) ) } , setNotSelectedValue : function ( v ) { v = BI . isArray ( v ) ? v : [ v ] , BI . each ( this . buttons , function ( i , item ) { BI . deepContains ( v , item . getValue ( ) ) ? item . setSelected && item . setSelected ( ! 1 ) : item . setSelected && item . setSelected ( ! 0 ) } ) } , setEnabledValue : function ( v ) { v = BI . isArray ( v ) ? v : [ v ] , BI . each ( this . buttons , function ( i , item ) { BI . deepContains ( v , item . getValue ( ) ) ? item . setEnable ( ! 0 ) : item . setEnable ( ! 1 ) } ) } , setValue : function ( v ) { v = BI . isArray ( v ) ? v : [ v ] , BI . each ( this . buttons , function ( i , item ) { BI . deepContains ( v , item . getValue ( ) ) ? item . setSelected && item . setSelected ( ! 0 ) : item . setSelected && item . setSelected ( ! 1 ) } ) } , getNotSelectedValue : function ( ) { var v = [ ] ; return BI . each ( this . buttons , function ( i , item ) { ! item . isEnabled ( ) || item . isSelected && item . isSelected ( ) || v . push ( item . getValue ( ) ) } ) , v } , getValue : function ( ) { var v = [ ] ; return BI . each ( this . buttons , function ( i , item ) { item . isEnabled ( ) && item . isSelected && item . isSelected ( ) && v . push ( item . getValue ( ) ) } ) , v } , getAllButtons : function ( ) { return this . buttons } , getAllLeaves : function ( ) { return this . buttons } , getSelectedButtons : function ( ) { var btns = [ ] ; return BI . each ( this . buttons , function ( i , item ) { item . isSelected && item . isSelected ( ) && btns . push ( item ) } ) , btn
this . _width = width } , _cellRenderers : function ( height , width , x , y ) { return this . _lastRenderedCellIndices = this . _sectionManager . getCellIndices ( height , width , x , y ) , this . _cellGroupRenderer ( ) } , _cellGroupRenderer : function ( ) { var self = this , o = this . options , rendered = [ ] ; return BI . each ( this . _lastRenderedCellIndices , function ( i , index ) { var cellMetadata = self . _sectionManager . getCellMetadata ( index ) ; rendered . push ( cellMetadata ) } ) , rendered } , _calculateChildrenToRender : function ( ) { var self = this , o = this . options , scrollLeft = BI . clamp ( o . scrollLeft , 0 , this . _getMaxScrollLeft ( ) ) , scrollTop = BI . clamp ( o . scrollTop , 0 , this . _getMaxScrollTop ( ) ) , left = Math . max ( 0 , scrollLeft - o . horizontalOverscanSize ) , top = Math . max ( 0 , scrollTop - o . verticalOverscanSize ) , right = Math . min ( this . _width , scrollLeft + o . width + o . horizontalOverscanSize ) , bottom = Math . min ( this . _height , scrollTop + o . height + o . verticalOverscanSize ) ; if ( right > 0 && bottom > 0 ) { if ( top >= this . renderRange . minY && bottom <= this . renderRange . maxY && left >= this . renderRange . minX && right <= this . renderRange . maxX ) return ; for ( var childrenToDisplay = this . _cellRenderers ( bottom - top , right - left , left , top ) , renderedCells = [ ] , renderedKeys = { } , renderedWidgets = { } , lefts = { } , tops = { } , i = 0 , len = childrenToDisplay . length ; i < len ; i ++ ) { var datum = childrenToDisplay [ i ] ; lefts [ datum . x ] = datum . x , lefts [ datum . x + datum . width ] = datum . x + datum . width , tops [ datum . y ] = datum . y , tops [ datum . y + datum . height ] = datum . y + datum . height } lefts = BI . toArray ( lefts ) , tops = BI . toArray ( tops ) ; for ( var leftMap = BI . invert ( lefts ) , topMap = BI . invert ( tops ) , leftBorder = { } , rightBorder = { } , topBorder = { } , bottomBorder = { } , assertMinBorder = function ( border , offset ) { null == border [ offset ] && ( border [ offset ] = Number . MAX _VALUE ) } , assertMaxBorder = function ( border , offset ) { null == border [ offset ] && ( border [ offset ] = 0 ) } , i = 0 , len = childrenToDisplay . length ; i < len ; i ++ ) { var datum = childrenToDisplay [ i ] , index = this . renderedKeys [ datum . index ] && this . renderedKeys [ datum . index ] [ 1 ] , child ; index >= 0 ? ( datum . width !== this . renderedCells [ index ] . _width && ( this . renderedCells [ index ] . _width = datum . width , this . renderedCells [ index ] . el . setWidth ( datum . width ) ) , datum . height !== this . renderedCells [ index ] . _height && ( this . renderedCells [ index ] . _height = datum . height , this . renderedCells [ index ] . el . setHeight ( datum . height ) ) , this . renderedCells [ index ] . _left !== datum . x && this . renderedCells [ index ] . el . element . css ( "left" , datum . x + "px" ) , this . renderedCells [ index ] . _top !== datum . y && this . renderedCells [ index ] . el . element . css ( "top" , datum . y + "px" ) , renderedCells . push ( child = this . renderedCells [ index ] ) ) : ( child = BI . createWidget ( BI . extend ( { type : "bi.label" , width : datum . width , height : datum . height } , o . items [ datum . index ] , { cls : ( o . items [ datum . index ] . cls || "" ) + " container-cell" + ( 0 === datum . y ? " first-row" : "" ) + ( 0 === datum . x ? " first-col" : "" ) , _left : datum . x , _top : datum . y } ) ) , renderedCells . push ( { el : child , left : datum . x , top : datum . y , _left : datum . x , _top : datum . y , _width : datum . width , _height : datum . height } ) ) ; for ( var startTopIndex = 0 | topMap [ datum . y ] , endTopIndex = 0 | topMap [ datum . y + datum . height ] , k = startTopIndex ; k <= endTopIndex ; k ++ ) { var t = tops [ k ] ; assertMinBorder ( leftBorder , t ) , assertMaxBorder ( rightBorder , t ) , leftBorder [ t ] = Math . min ( leftBorder [ t ] , datum . x ) , rightBorder [ t ] = Math . max ( rightBorder [ t ] , datum . x + datum . width ) } for ( var startLeftIndex = 0 | leftMap [ datum . x ] , endLeftIndex = 0 | leftMap [ datum . x + datum . width ] , k = startLeftIndex ; k <= endLeftIndex ; k ++ ) { var l = lefts [ k ] ; assertMinBorder ( topBorder , l ) , assertMaxBorder ( bottomBorder , l ) , topBorder [ l ] = Math . min ( topBorder [ l ] , datum . y ) , bottomBorder [ l ] = Math . max ( bottomBorder [ l ] , datum . y + datum . height ) } renderedKeys [ datum . index ] = [ datum . index , i ] , renderedWidgets [ i ] = child } var existSet = { } , addSet = { } , deleteArray = [ ] ; BI . each ( renderedKeys , function ( i , key ) { self . renderedKeys [ i ] ? existSet [ i ] = key : addSet [ i ] = key } ) , BI . each ( this . renderedKeys , function ( i , key ) { existSet [ i ] || addSet [ i ] || deleteArray . push ( key [ 1 ] ) } ) , BI . each ( deleteArray , function ( i , index ) { self . renderedCells [ index ] . el . _destroy ( ) } ) ; var addedItems = [ ] ; BI . each ( addSet , function ( index , key ) { addedItems . push ( renderedCells [ key [ 1 ] ] ) } ) , this . container . addItems ( addedItems ) , this . container . _children = renderedWidgets , this . container . attr ( "items" , renderedCells ) , this . renderedCells = renderedCells , this . renderedKeys = renderedKeys ; var minX = BI . min ( leftBorder ) , maxX = BI . max ( rig
times : 1 } , function ( ) { if ( 0 === arguments . length ) throw new Error ( "arguments can not be null!!!" ) ; self . populate . apply ( self , arguments ) , o . onLoaded ( ) } ] ) , ! 1 ) : ( this . options . items = items , this . times = 1 , this . count = 0 , this . count += items . length , BI . isObject ( this . next ) && ( this . hasNext ( ) ? this . next . setLoaded ( ) : this . next . invisible ( ) ) , BI . isObject ( this . prev ) && ( this . hasPrev ( ) ? this . prev . setLoaded ( ) : this . prev . invisible ( ) ) , ! 0 ) } , populate : function ( ) { this . _populate . apply ( this , arguments ) && this . button _group . populate . apply ( this . button _group , arguments ) } , setNotSelectedValue : function ( ) { this . button _group . setNotSelectedValue . apply ( this . button _group , arguments ) } , getNotSelectedValue : function ( ) { return this . button _group . getNotSelectedValue ( ) } , setValue : function ( ) { this . button _group . setValue . apply ( this . button _group , arguments ) } , getValue : function ( ) { return this . button _group . getValue . apply ( this . button _group , arguments ) } , getAllButtons : function ( ) { return this . button _group . getAllButtons ( ) } , getAllLeaves : function ( ) { return this . button _group . getAllLeaves ( ) } , getSelectedButtons : function ( ) { return this . button _group . getSelectedButtons ( ) } , getNotSelectedButtons : function ( ) { return this . button _group . getNotSelectedButtons ( ) } , getIndexByValue : function ( value ) { return this . button _group . getIndexByValue ( value ) } , getNodeById : function ( id ) { return this . button _group . getNodeById ( id ) } , getNodeByValue : function ( value ) { return this . button _group . getNodeByValue ( value ) } , empty : function ( ) { this . button _group . empty ( ) , BI . each ( [ this . prev , this . next ] , function ( i , ob ) { ob && ob . setVisible ( ! 1 ) } ) } , destroy : function ( ) { BI . Loader . superclass . destroy . apply ( this , arguments ) } } ) , BI . Loader . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.loader" , BI . Loader ) , BI . Navigation = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . Navigation . superclass . _defaultConfig . apply ( this , arguments ) , { direction : "bottom" , logic : { dynamic : ! 1 } , single : ! 1 , showIndex : ! 1 , tab : ! 1 , cardCreator : function ( v ) { return BI . createWidget ( ) } , afterCardCreated : BI . emptyFn , afterCardShow : BI . emptyFn } ) } , render : function ( ) { var self = this , o = this . options ; this . tab = BI . createWidget ( this . options . tab , { type : "bi.button_group" } ) , this . cardMap = { } , this . showIndex = 0 , this . layout = BI . createWidget ( { type : "bi.card" } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( BI . LogicFactory . createLogicTypeByDirection ( o . direction ) , BI . extend ( { } , o . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( o . direction , this . tab , this . layout ) } ) ) ) ) , new BI . ShowListener ( { eventObj : this . tab , cardLayout : this . layout , cardNameCreator : function ( v ) { return self . showIndex + v } , cardCreator : function ( v ) { var card = o . cardCreator ( v ) ; return self . cardMap [ v ] = card , card } , afterCardCreated : BI . bind ( this . afterCardCreated , this ) , afterCardShow : BI . bind ( this . afterCardShow , this ) } ) } , mounted : function ( ) { var o = this . options ; o . showIndex !== ! 1 && this . setSelect ( o . showIndex ) } , _deleteOtherCards : function ( currCardName ) { var self = this , o = this . options ; o . single === ! 0 && BI . each ( this . cardMap , function ( name , card ) { name !== currCardName + "" && ( self . layout . deleteCardByName ( name ) , delete self . cardMap [ name ] ) } ) } , afterCardCreated : function ( v ) { var self = this ; this . cardMap [ v ] . on ( BI . Controller . EVENT _CHANGE , function ( type , value , obj ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , type === BI . Events . CLICK && self . fireEvent ( BI . Navigation . EVENT _CHANGE , obj ) } ) , this . options . afterCardCreated . apply ( this , arguments ) } , afterCardShow : function ( v ) { this . showIndex = v , this . _deleteOtherCards ( v ) , this . options . afterCardShow . apply ( this , arguments ) } , populate : function ( ) { var card = this . layout . getShowingCard ( ) ; if ( card ) return card . populate . apply ( card , arguments ) } , _assertCard : function ( v ) { if ( ! this . layout . isCardExisted ( v ) ) { var card = this . options . cardCreator ( v ) ; this . cardMap [ v ] = card , this . layout . addCardByName ( v , card ) , this . afterCardCreated ( v ) } } , setSelect : function ( v ) { this . _assertCard ( v ) , this . layout . showCardByName ( v ) , this . _deleteOtherCards ( v ) , this . showIndex !== v && ( this . showIndex = v , BI . nextTick ( BI . bind ( this . afterCardShow , this , v ) ) ) } , getSelect : function ( ) { return this . showIndex } , getSelectedCard : function ( ) { if ( BI . isKey ( this . showIndex ) ) return this . cardMap [ this . showIndex ] } , setValue : function ( v ) { var card = this . layout . getShowingCard ( ) ; card && card
} , getScrollTop : function ( ) { return this . options . scrollTop } , getMaxScrollLeft : function ( ) { return this . _getMaxScrollLeft ( ) } , getMaxScrollTop : function ( ) { return this . _getMaxScrollTop ( ) } , setEstimatedColumnSize : function ( width ) { this . options . estimatedColumnSize = width } , setEstimatedRowSize : function ( height ) { this . options . estimatedRowSize = height } , _reRange : function ( ) { this . renderRange = { } } , _clearChildren : function ( ) { this . container . _children = { } , this . container . attr ( "items" , [ ] ) } , restore : function ( ) { BI . each ( this . renderedCells , function ( i , cell ) { cell . el . _destroy ( ) } ) , this . _clearChildren ( ) , this . renderedCells = [ ] , this . renderedKeys = [ ] , this . renderRange = { } , this . _scrollLock = ! 1 } , populate : function ( items ) { items && items !== this . options . items && this . restore ( ) , this . _populate ( items ) } } ) , BI . GridView . EVENT _SCROLL = "EVENT_SCROLL" , BI . shortcut ( "bi.grid_view" , BI . GridView ) , BI . Popover = BI . inherit ( BI . Widget , { _constant : { SIZE : { SMALL : "small" , NORMAL : "normal" , BIG : "big" } , HEADER _HEIGHT : 40 } , _defaultConfig : function ( ) { return BI . extend ( BI . Popover . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-popover bi-card bi-border-radius" , size : "normal" , logic : { dynamic : ! 1 } , header : null , body : null , footer : null , closable : ! 0 } ) } , render : function ( ) { var self = this , o = this . options ; this . startX = 0 , this . startY = 0 , this . tracker = new BI . MouseMoveTracker ( function ( deltaX , deltaY ) { var size = self . _calculateSize ( ) , W = BI . Widget . _renderEngine . createElement ( "body" ) . width ( ) , H = BI . Widget . _renderEngine . createElement ( "body" ) . height ( ) ; self . startX += deltaX , self . startY += deltaY , self . element . css ( { left : BI . clamp ( self . startX , 0 , W - self . element . width ( ) ) + "px" , top : BI . clamp ( self . startY , 0 , H - self . element . height ( ) ) + "px" } ) , BI . Resizers . _resize ( ) } , function ( ) { self . tracker . releaseMouseMoves ( ) } , _global ) ; var items = [ { el : { type : "bi.htape" , cls : "bi-message-title bi-header-background" , ref : function ( _ref ) { self . dragger = _ref } , items : [ { type : "bi.absolute" , items : [ { el : BI . isPlainObject ( o . header ) ? BI . createWidget ( o . header , { extraCls : "bi-font-bold" } ) : { type : "bi.label" , cls : "bi-font-bold" , height : this . _constant . HEADER _HEIGHT , text : o . header , title : o . header , textAlign : "left" } , left : 20 , top : 0 , right : 0 , bottom : 0 } ] } , { el : o . closable ? { type : "bi.icon_button" , cls : "bi-message-close close-font" , height : this . _constant . HEADER _HEIGHT , handler : function ( ) { self . close ( ) } } : { type : "bi.layout" } , width : 56 } ] , height : this . _constant . HEADER _HEIGHT } , height : this . _constant . HEADER _HEIGHT } , { el : o . logic . dynamic ? { type : "bi.vertical" , scrolly : ! 1 , cls : "popover-body" , ref : function ( ) { self . body = this } , hgap : 20 , tgap : 10 , items : [ { el : BI . createWidget ( o . body ) } ] } : { type : "bi.absolute" , items : [ { el : BI . createWidget ( o . body ) , left : 20 , top : 10 , right : 20 , bottom : 0 } ] } } ] ; o . footer && items . push ( { el : { type : "bi.absolute" , items : [ { el : BI . createWidget ( o . footer ) , left : 20 , top : 0 , right : 20 , bottom : 0 } ] , height : 44 } , height : 44 } ) ; var size = this . _calculateSize ( ) ; return BI . extend ( { type : o . logic . dynamic ? "bi.vertical" : "bi.vtape" , items : items , width : size . width } , o . logic . dynamic ? { type : "bi.vertical" , scrolly : ! 1 } : { type : "bi.vtape" , height : size . height } ) } , mounted : function ( ) { var self = this , o = this . options ; if ( this . dragger . element . mousedown ( function ( e ) { var pos = self . element . offset ( ) ; self . startX = pos . left , self . startY = pos . top , self . tracker . captureMouseMoves ( e ) } ) , o . logic . dynamic ) { var size = this . _calculateSize ( ) , height = this . element . height ( ) , compareHeight = BI . clamp ( height , size . height , 600 ) - ( o . footer ? 84 : 44 ) ; this . body . element . height ( compareHeight ) } } , _calculateSize : function ( ) { var o = this . options , size = { } ; if ( BI . isNotNull ( o . size ) ) switch ( o . size ) { case this . _constant . SIZE . SMALL : size . width = 450 , size . height = 200 ; break ; case this . _constant . SIZE . BIG : size . width = 900 , size . height = 500 ; break ; default : size . width = 550 , size . height = 500 } return { width : o . width || size . width , height : o . height || size . height } } , hide : function ( ) { } , open : function ( ) { this . show ( ) , this . fireEvent ( BI . Popover . EVENT _OPEN , arguments ) } , close : function ( ) { this . hide ( ) , this . fireEvent ( BI . Popover . EVENT _CLOSE , arguments ) } , setZindex : function ( zindex ) { this . element . css ( { "z-index" : zindex } ) } , destroyed : function ( ) { } } ) , BI . shortcut ( "bi.popover" , BI . Popover ) , BI . BarPopover = BI . inherit ( BI . Popover , { _defaultConfig : function ( ) { return BI . extend ( BI . BarPopover . superclass . _defaultConfig . apply ( this , arguments ) , { btns : [ BI .
blankWidth : 0 , iconHeight : null , iconWidth : null , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . BlankIconTextIconItem . superclass . _init . apply ( this , arguments ) ; var o = this . options , c = this . _const ; this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , hgap : o . textHgap , vgap : o . textVgap , lgap : o . textLgap , rgap : o . textRgap , text : o . text , value : o . value , keyword : o . keyword , height : o . height } ) ; var icon1 = BI . createWidget ( { type : "bi.icon_label" , cls : o . iconCls1 , width : o . height , height : o . height , iconWidth : o . iconWidth , iconHeight : o . iconHeight } ) ; BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.icon_label" , cls : o . iconCls2 , width : o . height , height : o . height , iconWidth : o . iconWidth , iconHeight : o . iconHeight } , top : 0 , bottom : 0 , right : 0 } ] } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "horizontal" , BI . extend ( o . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "left" , { type : "bi.layout" , width : o . blankWidth } , icon1 , this . text , { type : "bi.layout" , width : o . height } ) } ) ) ) ) } , doClick : function ( ) { BI . BlankIconTextIconItem . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . BlankIconTextIconItem . EVENT _CHANGE , this . getValue ( ) , this ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doHighLight : function ( ) { this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } , setValue : function ( ) { this . isReadOnly ( ) || this . text . setValue . apply ( this . text , arguments ) } , getValue : function ( ) { return this . text . getValue ( ) } , setText : function ( ) { this . text . setText . apply ( this . text , arguments ) } , getText : function ( ) { return this . text . getText ( ) } } ) , BI . BlankIconTextIconItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.blank_icon_text_icon_item" , BI . BlankIconTextIconItem ) , BI . BlankIconTextItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { var conf = BI . BlankIconTextItem . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-blank-icon-text-item" , logic : { dynamic : ! 1 } , cls : "close-ha-font" , blankWidth : 0 , iconHeight : null , iconWidth : null , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . BlankIconTextItem . superclass . _init . apply ( this , arguments ) ; var o = this . options , c = this . _const , blank = BI . createWidget ( { type : "bi.layout" , width : o . blankWidth } ) ; this . text = BI . createWidget ( { type : "bi.label" , cls : "list-item-text" , textAlign : "left" , hgap : o . textHgap , vgap : o . textVgap , lgap : o . textLgap , rgap : o . textRgap , text : o . text , value : o . value , keyword : o . keyword , height : o . height } ) , this . icon = BI . createWidget ( { type : "bi.icon_label" , width : o . height , height : o . height , iconWidth : o . iconWidth , iconHeight : o . iconHeight } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "horizontal" , BI . extend ( o . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "left" , blank , this . icon , this . text ) } ) ) ) ) } , doClick : function ( ) { BI . BlankIconTextItem . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . BlankIconTextItem . EVENT _CHANGE , this . getValue ( ) , this ) } , setValue : function ( ) { this . isReadOnly ( ) || this . text . setValue . apply ( this . text , arguments ) } , getValue : function ( ) { return this . text . getValue ( ) } , setText : function ( ) { this . text . setText . apply ( this . text , arguments ) } , getText : function ( ) { return this . text . getText ( ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doHighLight : function ( ) { this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } } ) , BI . BlankIconTextItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.blank_icon_text_item" , BI . BlankIconTextItem ) , BI . IconTextIconItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { var conf = BI . IconTextIconItem . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-icon-text-icon-item" , logic : { dynamic : ! 1 } , iconCls1 : "close-ha-font" , iconCls2 : "close-ha-font" , iconHeight : null , iconWidth : null , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . IconTextIconItem
width : "100%" , height : "100%" } ) } , _init : function ( ) { var o = this . options ; o . attributes . frameborder = "0" , o . attributes . src = o . src , o . attributes . name = o . name , BI . Iframe . superclass . _init . apply ( this , arguments ) } , setSrc : function ( src ) { this . options . src = src , this . element . attr ( "src" , src ) } , getSrc : function ( ) { return this . options . src } , setName : function ( name ) { this . options . name = name , this . element . attr ( "name" , name ) } , getName : function ( ) { return this . options . name } } ) , BI . shortcut ( "bi.iframe" , BI . Iframe ) , BI . Img = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var conf = BI . Img . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { tagName : "img" , baseCls : ( conf . baseCls || "" ) + " bi-img display-block" , src : "" , attributes : { } , width : "100%" , height : "100%" } ) } , _init : function ( ) { var o = this . options ; o . attributes . src = o . src , BI . Img . superclass . _init . apply ( this , arguments ) } , setSrc : function ( src ) { this . options . src = src , this . element . attr ( "src" , src ) } , getSrc : function ( ) { return this . options . src } } ) , BI . shortcut ( "bi.img" , BI . Img ) , BI . ImageCheckbox = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { var conf = BI . ImageCheckbox . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-image-checkbox check-box-icon" , selected : ! 1 , handler : BI . emptyFn , width : 16 , height : 16 , iconWidth : 16 , iconHeight : 16 } ) } } ) , BI . ImageCheckbox . EVENT _CHANGE = BI . IconButton . EVENT _CHANGE , BI . shortcut ( "bi.image_checkbox" , BI . ImageCheckbox ) , BI . Checkbox = BI . inherit ( BI . BasicButton , { props : { baseCls : "bi-checkbox" , selected : ! 1 , handler : BI . emptyFn , width : 16 , height : 16 , iconWidth : 16 , iconHeight : 16 } , render : function ( ) { var self = this , o = this . options ; return { type : "bi.center_adapt" , items : [ { type : "bi.default" , ref : function ( _ref ) { self . checkbox = _ref } , cls : "checkbox-content" , width : o . iconWidth - 2 , height : o . iconHeight - 2 } ] } } , _setEnable : function ( enable ) { BI . Checkbox . superclass . _setEnable . apply ( this , arguments ) , enable === ! 0 ? this . checkbox . element . removeClass ( "base-disabled disabled" ) : this . checkbox . element . addClass ( "base-disabled disabled" ) } , doClick : function ( ) { BI . Checkbox . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . Checkbox . EVENT _CHANGE ) } , setSelected : function ( b ) { BI . Checkbox . superclass . setSelected . apply ( this , arguments ) , b ? this . checkbox . element . addClass ( "bi-high-light-background" ) : this . checkbox . element . removeClass ( "bi-high-light-background" ) } } ) , BI . Checkbox . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.checkbox" , BI . Checkbox ) , function ( document ) { var F = function ( item ) { return function ( input ) { var files = input . files || [ input ] ; return files . item || ( files . item = item ) , files } } ( function ( i ) { return this [ i ] } ) , event = { add : document . addEventListener ? function ( node , name , callback ) { return node . addEventListener ( name , callback , ! 1 ) , this } : function ( node , name , callback ) { return node . attachEvent ( "on" + name , callback ) , this } , del : document . removeEventListener ? function ( node , name , callback ) { return node . removeEventListener ( name , callback , ! 1 ) , this } : function ( node , name , callback ) { return node . detachEvent ( "on" + name , callback ) , this } , stop : function ( e ) { return e ? ( e . stopPropagation ? e . stopPropagation ( ) : e . cancelBubble = ! 0 , e . preventDefault ? e . preventDefault ( ) : e . returnValue = ! 1 ) : self . event && ( event . returnValue = ! ( event . cancelBubble = ! 0 ) ) , ! 1 } } , sendFile = function ( toString ) { var multipart = function ( boundary , name , file ) { return "--" . concat ( boundary , CRLF , 'Content-Disposition: form-data; name="' , name , '"; filename="' , _global . encodeURIComponent ( file . fileName ) , '"' , CRLF , "Content-Type: application/octet-stream" , CRLF , CRLF , file . getAsBinary ( ) , CRLF , "--" , boundary , "--" , CRLF ) } , isFunction = function ( Function ) { return "[object Function]" === toString . call ( Function ) } , split = "onabort.onerror.onloadstart.onprogress" . split ( "." ) , length = split . length , CRLF = "\r\n" , xhr = this . XMLHttpRequest ? new XMLHttpRequest : new ActiveXObject ( "Microsoft.XMLHTTP" ) , sendFile ; return sendFile = xhr . upload || xhr . sendAsBinary ? function ( handler , maxSize , width , height ) { if ( - 1 < maxSize && maxSize < handler . file . fileSize ) return void ( isFunction ( handler . onerror ) && handler . onerror ( ) ) ; for ( var xhr = new XMLHttpRequest , upload = xhr . upload || { addEventListener : function ( event , callback ) { this [ "on" + event ] = callback } } , i = 0 ; i < length ; i ++ ) upload . addEventListener ( split [ i ] . substring
text : "" , level : "success" } ) } , _init : function ( ) { BI . Toast . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . element . css ( { minWidth : this . _const . minWidth + "px" } ) , this . element . addClass ( "toast-" + o . level ) ; var fn = function ( e ) { return e . stopPropagation ( ) , e . stopEvent ( ) , ! 1 } ; this . element . bind ( { click : fn , mousedown : fn , mouseup : fn , mouseover : fn , mouseenter : fn , mouseleave : fn , mousemove : fn } ) ; var cls = "close-font" ; switch ( o . level ) { case "success" : cls = "toast-success-font" ; break ; case "error" : cls = "toast-error-font" ; break ; case "warning" : cls = "toast-warning-font" ; break ; case "normal" : default : cls = "toast-message-font" } var items = [ { type : "bi.icon_label" , cls : cls + " toast-icon" , width : 36 } , { el : { type : "bi.label" , whiteSpace : "normal" , text : o . text , textHeight : 16 , textAlign : "left" } , rgap : o . autoClose ? this . _const . hgap : 0 } ] , columnSize = [ 36 , "" ] ; o . autoClose === ! 1 && ( items . push ( { type : "bi.icon_button" , cls : "close-font toast-icon" , handler : function ( ) { self . destroy ( ) } , width : 36 } ) , columnSize . push ( 36 ) ) , this . text = BI . createWidget ( { type : "bi.horizontal_adapt" , element : this , items : items , vgap : 7 , columnSize : columnSize } ) } , setText : function ( text ) { this . text . setText ( text ) } , beforeDestroy : function ( ) { this . fireEvent ( BI . Toast . EVENT _DESTORY ) } } ) , BI . Toast . EVENT _DESTORY = "EVENT_DESTORY" , BI . shortcut ( "bi.toast" , BI . Toast ) , BI . Tooltip = BI . inherit ( BI . Tip , { _const : { hgap : 5 , vgap : 3 } , _defaultConfig : function ( ) { return BI . extend ( BI . Tooltip . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-tooltip" , text : "" , level : "success" , stopEvent : ! 1 , stopPropagation : ! 1 } ) } , _init : function ( ) { BI . Tooltip . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . element . addClass ( "tooltip-" + o . level ) ; var fn = function ( e ) { o . stopPropagation && e . stopPropagation ( ) , o . stopEvent && e . stopEvent ( ) } ; this . element . bind ( { click : fn , mousedown : fn , mouseup : fn , mouseover : fn , mouseenter : fn , mouseleave : fn , mousemove : fn } ) ; var texts = ( o . text + "" ) . split ( "\n" ) ; texts . length > 1 ? BI . createWidget ( { type : "bi.vertical" , element : this , hgap : this . _const . hgap , items : BI . map ( texts , function ( i , text ) { return { type : "bi.label" , textAlign : "left" , whiteSpace : "normal" , text : text , textHeight : 18 } } ) } ) : this . text = BI . createWidget ( { type : "bi.label" , element : this , textAlign : "left" , whiteSpace : "normal" , text : o . text , textHeight : 18 , hgap : this . _const . hgap } ) } , setWidth : function ( width ) { this . element . width ( width - 2 * this . _const . hgap ) } , setText : function ( text ) { this . text && this . text . setText ( text ) } , setLevel : function ( level ) { this . element . removeClass ( "tooltip-success" ) . removeClass ( "tooltip-warning" ) , this . element . addClass ( "tooltip-" + level ) } } ) , BI . shortcut ( "bi.tooltip" , BI . Tooltip ) , BI . Trigger = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var conf = BI . Trigger . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { _baseCls : ( conf . _baseCls || "" ) + " bi-trigger cursor-pointer" , height : 24 } ) } , _init : function ( ) { BI . Trigger . superclass . _init . apply ( this , arguments ) } , setKey : function ( ) { } , getKey : function ( ) { } } ) , BI . CustomTree = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . CustomTree . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-custom-tree" , expander : { el : { } , popup : { type : "bi.custom_tree" } } , items : [ ] , itemsCreator : BI . emptyFn , el : { type : "bi.button_tree" , chooseType : 0 , layouts : [ { type : "bi.vertical" } ] } } ) } , _init : function ( ) { BI . CustomTree . superclass . _init . apply ( this , arguments ) , this . initTree ( this . options . items ) } , _formatItems : function ( nodes ) { var self = this , o = this . options ; nodes = BI . Tree . transformToTreeFormat ( nodes ) ; var items = [ ] ; return BI . each ( nodes , function ( i , node ) { if ( BI . isNotEmptyArray ( node . children ) || node . isParent === ! 0 ) { var item = BI . extend ( { type : "bi.expander" , el : { value : node . value } , popup : { type : "bi.custom_tree" } } , BI . deepClone ( o . expander ) , { id : node . id , pId : node . pId } ) , el = BI . stripEL ( node ) ; BI . isWidget ( el ) ? item . el = el : ( el = BI . clone ( el ) , delete el . children , BI . extend ( item . el , el ) ) , item . popup . expander = BI . deepClone ( o . expander ) , item . items = item . popup . items = node . children , item . itemsCreator = item . popup . itemsCreator = function ( op ) { if ( BI . isNotNull ( op . node ) ) return o . itemsCreator . apply ( self , arguments ) ; var args = Array . prototype . slice . call ( arguments , 0 ) ; return args [ 0 ] . node = node , o . itemsCreator . apply ( self , args ) } , BI . isNull ( item . popup . el ) && ( item . popup
} , expandCollapseParentNode : function ( setting , node , expandFlag , animateFlag , callback ) { if ( node ) { if ( ! node . parentTId ) return void view . expandCollapseNode ( setting , node , expandFlag , animateFlag , callback ) ; view . expandCollapseNode ( setting , node , expandFlag , animateFlag ) , node . parentTId && view . expandCollapseParentNode ( setting , node . getParentNode ( ) , expandFlag , animateFlag , callback ) } } , expandCollapseSonNode : function ( setting , node , expandFlag , animateFlag , callback ) { var root = data . getRoot ( setting ) , childKey = setting . data . key . children , treeNodes = node ? node [ childKey ] : root [ childKey ] , selfAnimateSign = ! node && animateFlag , expandTriggerFlag = data . getRoot ( setting ) . expandTriggerFlag ; if ( data . getRoot ( setting ) . expandTriggerFlag = ! 1 , treeNodes ) for ( var i = 0 , l = treeNodes . length ; i < l ; i ++ ) treeNodes [ i ] && view . expandCollapseSonNode ( setting , treeNodes [ i ] , expandFlag , selfAnimateSign ) ; data . getRoot ( setting ) . expandTriggerFlag = expandTriggerFlag , view . expandCollapseNode ( setting , node , expandFlag , animateFlag , callback ) } , isSelectedNode : function ( setting , node ) { if ( ! node ) return ! 1 ; var list = data . getRoot ( setting ) . curSelectedList , i ; for ( i = list . length - 1 ; i >= 0 ; i -- ) if ( node === list [ i ] ) return ! 0 ; return ! 1 } , makeDOMNodeIcon : function ( html , setting , node ) { var nameStr = data . getNodeName ( setting , node ) , name = setting . view . nameIsHTML ? nameStr : nameStr . replace ( /&/g , "&" ) . replace ( /</g , "<" ) . replace ( />/g , ">" ) ; html . push ( "<span id='" , node . tId , consts . id . ICON , "' title='' treeNode" , consts . id . ICON , " class='" , view . makeNodeIcoClass ( setting , node ) , "' style='" , view . makeNodeIcoStyle ( setting , node ) , "'></span><span id='" , node . tId , consts . id . SPAN , "'>" , name , "</span>" ) } , makeDOMNodeLine : function ( html , setting , node ) { html . push ( "<span id='" , node . tId , consts . id . SWITCH , "' title='' class='" , view . makeNodeLineClass ( setting , node ) , "' treeNode" , consts . id . SWITCH , "></span>" ) } , makeDOMNodeMainAfter : function ( html , setting , node ) { html . push ( "</li>" ) } , makeDOMNodeMainBefore : function ( html , setting , node ) { html . push ( "<li id='" , node . tId , "' class='" , consts . className . LEVEL , node . level , "' tabindex='0' hidefocus='true' treenode>" ) } , makeDOMNodeNameAfter : function ( html , setting , node ) { html . push ( "</a>" ) } , makeDOMNodeNameBefore : function ( html , setting , node ) { var title = data . getNodeTitle ( setting , node ) , url = view . makeNodeUrl ( setting , node ) , fontcss = view . makeNodeFontCss ( setting , node ) , fontStyle = [ ] ; for ( var f in fontcss ) fontStyle . push ( f , ":" , fontcss [ f ] , ";" ) ; html . push ( "<a id='" , node . tId , consts . id . A , "' class='" , consts . className . LEVEL , node . level , "' treeNode" , consts . id . A , ' onclick="' , node . click || "" , '" ' , null != url && url . length > 0 ? "href='" + url + "'" : "" , " target='" , view . makeNodeTarget ( node ) , "' style='" , fontStyle . join ( "" ) , "'" ) , tools . apply ( setting . view . showTitle , [ setting . treeId , node ] , setting . view . showTitle ) && title && html . push ( "title='" , title . replace ( /'/g , "'" ) . replace ( /</g , "<" ) . replace ( />/g , ">" ) , "'" ) , html . push ( ">" ) } , makeNodeFontCss : function ( setting , node ) { var fontCss = tools . apply ( setting . view . fontCss , [ setting . treeId , node ] , setting . view . fontCss ) ; return fontCss && "function" != typeof fontCss ? fontCss : { } } , makeNodeIcoClass : function ( setting , node ) { var icoCss = [ "ico" ] ; return node . isAjaxing || ( icoCss [ 0 ] = ( node . iconSkin ? node . iconSkin + "_" : "" ) + icoCss [ 0 ] , node . isParent ? icoCss . push ( node . open ? consts . folder . OPEN : consts . folder . CLOSE ) : icoCss . push ( consts . folder . DOCU ) ) , consts . className . BUTTON + " " + icoCss . join ( "_" ) } , makeNodeIcoStyle : function ( setting , node ) { var icoStyle = [ ] ; if ( ! node . isAjaxing ) { var icon = node . isParent && node . iconOpen && node . iconClose ? node . open ? node . iconOpen : node . iconClose : node . icon ; icon && icoStyle . push ( "background:url(" , icon , ") 0 0 no-repeat;" ) , 0 != setting . view . showIcon && tools . apply ( setting . view . showIcon , [ setting . treeId , node ] , ! 0 ) || icoStyle . push ( "width:0px;height:0px;" ) } return icoStyle . join ( "" ) } , makeNodeLineClass : function ( setting , node ) { var lineClass = [ ] ; return setting . view . showLine ? 0 == node . level && node . isFirstNode && node . isLastNode ? lineClass . push ( consts . line . ROOT ) : 0 == node . level && node . isFirstNode ? lineClass . push ( consts . line . ROOTS ) : node . isLastNode ? lineClass . push ( consts . line . BOTTOM ) : lineClass . push ( consts . line . CENTER ) : lineClass . push ( consts . line . NOLINE ) , node . isParent ? lineClass . push ( node . open ? consts . folder . OPEN : consts . folder . CLOSE ) : lineClass
$ . extend ( ! 0 , $ . fn . zTree . _z , _z ) ; var zt = $ . fn . zTree , tools = zt . _z . tools , consts = zt . consts , view = zt . _z . view , data = zt . _z . data , event = zt . _z . event , $$ = tools . $ ; data . exSetting ( _setting ) , data . addInitBind ( _bindEvent ) , data . addInitUnBind ( _unbindEvent ) , data . addInitCache ( _initCache ) , data . addInitNode ( _initNode ) , data . addInitProxy ( _eventProxy , ! 0 ) , data . addInitRoot ( _initRoot ) , data . addBeforeA ( _beforeA ) , data . addZTreeTools ( _zTreeTools ) ; var _createNodes = view . createNodes ; view . createNodes = function ( setting , level , nodes , parentNode ) { _createNodes && _createNodes . apply ( view , arguments ) , nodes && view . repairParentChkClassWithSelf ( setting , parentNode ) } ; var _removeNode = view . removeNode ; view . removeNode = function ( setting , node ) { var parentNode = node . getParentNode ( ) ; _removeNode && _removeNode . apply ( view , arguments ) , node && parentNode && ( view . repairChkClass ( setting , parentNode ) , view . repairParentChkClass ( setting , parentNode ) ) } ; var _appendNodes = view . appendNodes ; view . appendNodes = function ( setting , level , nodes , parentNode , initFlag , openFlag ) { var html = "" ; return _appendNodes && ( html = _appendNodes . apply ( view , arguments ) ) , parentNode && data . makeChkFlag ( setting , parentNode ) , html } } ( BI . jQuery ) , BI . IconChangeButton = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var conf = BI . IconChangeButton . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : "bi-icon-change-button" , iconCls : "" , iconWidth : null , iconHeight : null , stopEvent : ! 1 , stopPropagation : ! 1 , selected : ! 1 , once : ! 1 , forceSelected : ! 1 , forceNotSelected : ! 1 , disableSelected : ! 1 , shadow : ! 1 , isShadowShowingOnSelected : ! 1 , trigger : null , handler : BI . emptyFn } ) } , _init : function ( ) { BI . IconChangeButton . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . button = BI . createWidget ( { type : "bi.icon_button" , element : this , cls : o . iconCls , height : o . height , iconWidth : o . iconWidth , iconHeight : o . iconHeight , stopEvent : o . stopEvent , stopPropagation : o . stopPropagation , selected : o . selected , once : o . once , forceSelected : o . forceSelected , forceNotSelected : o . forceNotSelected , disableSelected : o . disableSelected , shadow : o . shadow , isShadowShowingOnSelected : o . isShadowShowingOnSelected , trigger : o . trigger , handler : o . handler } ) , this . button . on ( BI . Controller . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . button . on ( BI . IconButton . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . IconChangeButton . EVENT _CHANGE , arguments ) } ) } , isSelected : function ( ) { return this . button . isSelected ( ) } , setSelected : function ( b ) { this . button . setSelected ( b ) } , setIcon : function ( cls ) { var o = this . options ; o . iconCls !== cls && ( this . element . removeClass ( o . iconCls ) . addClass ( cls ) , o . iconCls = cls ) } } ) , BI . IconChangeButton . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.icon_change_button" , BI . IconChangeButton ) , BI . TriggerIconButton = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { var conf = BI . TriggerIconButton . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-trigger-icon-button" , extraCls : "pull-down-font" } ) } } ) , BI . TriggerIconButton . EVENT _CHANGE = BI . IconButton . EVENT _CHANGE , BI . shortcut ( "bi.trigger_icon_button" , BI . TriggerIconButton ) , BI . HalfIconButton = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { var conf = BI . HalfIconButton . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { extraCls : "bi-half-icon-button check-half-select-icon" , height : 16 , width : 16 , iconWidth : 16 , iconHeight : 16 , selected : ! 1 } ) } } ) , BI . HalfIconButton . EVENT _CHANGE = BI . IconButton . EVENT _CHANGE , BI . shortcut ( "bi.half_icon_button" , BI . HalfIconButton ) , BI . HalfButton = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { var conf = BI . HalfIconButton . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { extraCls : "bi-half-button bi-high-light-border" , height : 14 , width : 14 , selected : ! 1 } ) } , _init : function ( ) { BI . HalfButton . superclass . _init . apply ( this , arguments ) , BI . createWidget ( { type : "bi.center_adapt" , element : this . element , items : [ { type : "bi.layout" , cls : "bi-high-light-background" , width : 8 , height : 8 } ] } ) } , doClick : function ( ) { BI . HalfButton . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . HalfButton . EVENT _CHANGE ) } } ) , BI . HalfButton . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.half_button" , BI . Half
this . text . setSelected ( b ) } , getValue : function ( ) { return this . text . getValue ( ) } } ) , BI . shortcut ( "bi.calendar_date_item" , BI . CalendarDateItem ) , BI . Calendar = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var conf = BI . Calendar . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : "bi-calendar" , logic : { dynamic : ! 1 } , min : "1900-01-01" , max : "2099-12-31" , year : 2015 , month : 8 , day : 25 } ) } , _dateCreator : function ( Y , M , D ) { var self = this , o = this . options , log = { } , De = BI . getDate ( ) , mins = o . min . match ( /\d+/g ) , maxs = o . max . match ( /\d+/g ) ; Y < ( 0 | mins [ 0 ] ) && ( Y = 0 | mins [ 0 ] ) , Y > ( 0 | maxs [ 0 ] ) && ( Y = 0 | maxs [ 0 ] ) , De . setFullYear ( Y , M , D ) , log . ymd = [ De . getFullYear ( ) , De . getMonth ( ) , De . getDate ( ) ] ; var MD = BI . Date . _MD . slice ( 0 ) ; MD [ 1 ] = BI . isLeapYear ( log . ymd [ 0 ] ) ? 29 : 28 , De . setFullYear ( log . ymd [ 0 ] , log . ymd [ 1 ] , 1 ) , log . FDay = De . getDay ( ) ; var offSetFDay = ( 7 - BI . StartOfWeek + log . FDay ) % 7 ; log . PDay = MD [ 0 === M ? 11 : M - 1 ] - offSetFDay + 1 , log . NDay = 1 ; var items = [ ] ; return BI . each ( BI . range ( 42 ) , function ( i ) { var td = { } , YY = log . ymd [ 0 ] , MM = log . ymd [ 1 ] + 1 , DD ; i < offSetFDay ? ( td . lastMonth = ! 0 , DD = i + log . PDay , 1 === MM && ( YY -= 1 ) , MM = 1 === MM ? 12 : MM - 1 ) : i >= offSetFDay && i < offSetFDay + MD [ log . ymd [ 1 ] ] ? ( DD = i - offSetFDay + 1 , i - offSetFDay + 1 === log . ymd [ 2 ] && ( td . currentDay = ! 0 ) ) : ( td . nextMonth = ! 0 , DD = log . NDay ++ , 12 === MM && ( YY += 1 ) , MM = 12 === MM ? 1 : MM + 1 ) , BI . checkDateVoid ( YY , MM , DD , mins , maxs ) [ 0 ] && ( td . disabled = ! 0 ) , td . text = DD , items . push ( td ) } ) , items } , _init : function ( ) { BI . Calendar . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options , items = BI . map ( this . _getWeekLabel ( ) , function ( i , value ) { return { type : "bi.label" , height : 24 , text : value } } ) , title = BI . createWidget ( { type : "bi.button_group" , height : 44 , items : items , layouts : [ { type : "bi.center" , hgap : 5 , vgap : 10 } ] } ) ; this . days = BI . createWidget ( { type : "bi.button_group" , items : BI . createItems ( this . _getItems ( ) , { } ) , layouts : [ BI . LogicFactory . createLogic ( "table" , BI . extend ( { } , o . logic , { columns : 7 , rows : 6 , columnSize : [ 1 / 7 , 1 / 7 , 1 / 7 , 1 / 7 , 1 / 7 , 1 / 7 , 1 / 7 ] , rowSize : 24 , vgap : 10 } ) ) ] } ) , this . days . on ( BI . Controller . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "vertical" , BI . extend ( { } , o . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "top" , title , this . days ) } ) ) ) ) } , _getWeekLabel : function ( ) { return BI . map ( BI . range ( 0 , 7 ) , function ( idx , v ) { return BI . Date . _SDN [ ( v + BI . StartOfWeek ) % 7 ] } ) } , isFrontDate : function ( ) { var o = this . options , c = this . _const , Y = o . year , M = o . month , De = BI . getDate ( ) , day = De . getDay ( ) ; Y = 0 | Y , De . setFullYear ( Y , M , 1 ) ; var newDate = BI . getOffsetDate ( De , - 1 * ( day + 1 ) ) ; return ! ! BI . checkDateVoid ( newDate . getFullYear ( ) , newDate . getMonth ( ) , newDate . getDate ( ) , o . min , o . max ) [ 0 ] } , isFinalDate : function ( ) { var o = this . options , c = this . _const , Y = o . year , M = o . month , De = BI . getDate ( ) , day = De . getDay ( ) ; Y = 0 | Y , De . setFullYear ( Y , M , 1 ) ; var newDate = BI . getOffsetDate ( De , 42 - day ) ; return ! ! BI . checkDateVoid ( newDate . getFullYear ( ) , newDate . getMonth ( ) , newDate . getDate ( ) , o . min , o . max ) [ 0 ] } , _getItems : function ( ) { var o = this . options , days = this . _dateCreator ( o . year , o . month - 1 , o . day ) , items = [ ] ; return items . push ( days . slice ( 0 , 7 ) ) , items . push ( days . slice ( 7 , 14 ) ) , items . push ( days . slice ( 14 , 21 ) ) , items . push ( days . slice ( 21 , 28 ) ) , items . push ( days . slice ( 28 , 35 ) ) , items . push ( days . slice ( 35 , 42 ) ) , BI . map ( items , function ( i , item ) { return BI . map ( item , function ( j , td ) { var month = td . lastMonth ? o . month - 1 : td . nextMonth ? o . month + 1 : o . month ; return BI . extend ( td , { type : "bi.calendar_date_item" , textAlign : "center" , whiteSpace : "normal" , once : ! 1 , forceSelected : ! 0 , height : 24 , value : o . year + "-" + month + "-" + td . text , disabled : td . lastMonth || td . nextMonth || td . disabled , lgap : 5 , rgap : 5 } ) } ) } ) } , _populate : function ( ) { this . days . populate ( this . _getItems ( ) ) } , setMinDate : function ( minDate ) { var o = this . options ; BI . isNotEmptyString ( o . min ) && ( o . min = minDate , this . _populate ( ) ) } , setMaxDate : function ( maxDate ) { var o = this . options ; BI . isNotEmptyString ( o . max ) && ( o . max = maxDate , this . _populate ( ) ) } , setValue : function ( ob ) { this . days . setValue ( [ ob . year + "-" + ob . month + "-" + ob . day ] ) } , getValue : function ( ) { var date = this . days . getValue ( ) [ 0 ] . match ( /\d+/g ) ; return { year : 0 | date [ 0 ] , month : 0 | date [ 1 ] , day : 0 | date [ 2 ] } } } ) , BI . extend ( BI . Calendar , { getPageByDateJSON : function ( json ) { var year = BI . getDate ( ) . getFullYear ( ) , month = BI . getDate ( ) . getMonth ( ) , page = 12 * ( json . year - year ) ; r
self . fireEvent ( BI . SimpleColorPickerEditor . EVENT _CHANGE ) ) } ) } ) , this . R = Ws [ 0 ] , this . G = Ws [ 1 ] , this . B = Ws [ 2 ] , BI . createWidget ( { type : "bi.vertical_adapt" , element : this , items : [ { el : this . colorShow , width : 16 , lgap : 20 , rgap : 15 } , { el : RGB [ 0 ] , width : 20 } , { el : this . R , width : c . REB _WIDTH } , { el : RGB [ 1 ] , width : 20 } , { el : this . G , width : c . REB _WIDTH } , { el : RGB [ 2 ] , width : 20 } , { el : this . B , width : c . REB _WIDTH } ] } ) } , _checkEditors : function ( ) { BI . isEmptyString ( this . R . getValue ( ) ) && this . R . setValue ( 0 ) , BI . isEmptyString ( this . G . getValue ( ) ) && this . G . setValue ( 0 ) , BI . isEmptyString ( this . B . getValue ( ) ) && this . B . setValue ( 0 ) } , setValue : function ( color ) { this . colorShow . element . css ( { "background-color" : color } ) ; var json = BI . DOM . rgb2json ( BI . DOM . hex2rgb ( color ) ) ; this . R . setValue ( BI . isNull ( json . r ) ? "" : json . r ) , this . G . setValue ( BI . isNull ( json . g ) ? "" : json . g ) , this . B . setValue ( BI . isNull ( json . b ) ? "" : json . b ) } , getValue : function ( ) { return BI . DOM . rgb2hex ( BI . DOM . json2rgb ( { r : this . R . getValue ( ) , g : this . G . getValue ( ) , b : this . B . getValue ( ) } ) ) } } ) , BI . SimpleColorPickerEditor . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.simple_color_picker_editor" , BI . SimpleColorPickerEditor ) , BI . Farbtastic = BI . inherit ( BI . BasicButton , { constants : { RADIUS : 84 , SQUARE : 100 , WIDTH : 194 } , props : { baseCls : "bi-farbtastic" , width : 195 , height : 195 , stopPropagation : ! 0 , value : "#000000" } , render : function ( ) { var self = this ; return { type : "bi.absolute" , items : [ { el : { type : "bi.layout" , cls : "" , ref : function ( _ref ) { self . colorWrapper = _ref } } , top : 47 , left : 47 , width : 101 , height : 101 } , { el : { type : "bi.layout" , cls : "wheel" , ref : function ( _ref ) { self . wheel = _ref } } , left : 0 , right : 0 , top : 0 , bottom : 0 } , { el : { type : "bi.layout" , cls : "overlay" , ref : function ( _ref ) { self . overlay = _ref } } , top : 47 , left : 47 , width : 101 , height : 101 } , { el : { type : "bi.layout" , cls : "marker" , ref : function ( _ref ) { self . hMarker = _ref } , scrollable : ! 1 , width : 17 , height : 17 } } , { el : { type : "bi.layout" , cls : "marker" , ref : function ( _ref ) { self . slMarker = _ref } , scrollable : ! 1 , width : 17 , height : 17 } } ] } } , mounted : function ( ) { var o = this . options ; BI . isKey ( o . value ) && this . setValue ( o . value ) } , _unpack : function ( color ) { return 7 === color . length ? [ parseInt ( "0x" + color . substring ( 1 , 3 ) ) / 255 , parseInt ( "0x" + color . substring ( 3 , 5 ) ) / 255 , parseInt ( "0x" + color . substring ( 5 , 7 ) ) / 255 ] : 4 === color . length ? [ parseInt ( "0x" + color . substring ( 1 , 2 ) ) / 15 , parseInt ( "0x" + color . substring ( 2 , 3 ) ) / 15 , parseInt ( "0x" + color . substring ( 3 , 4 ) ) / 15 ] : void 0 } , _pack : function ( rgb ) { var r = Math . round ( 255 * rgb [ 0 ] ) , g = Math . round ( 255 * rgb [ 1 ] ) , b = Math . round ( 255 * rgb [ 2 ] ) ; return "#" + ( r < 16 ? "0" : "" ) + r . toString ( 16 ) + ( g < 16 ? "0" : "" ) + g . toString ( 16 ) + ( b < 16 ? "0" : "" ) + b . toString ( 16 ) } , _setColor : function ( color ) { var unpack = this . _unpack ( color ) ; this . value !== color && unpack && ( this . value = color , this . rgb = unpack , this . hsl = this . _RGBToHSL ( this . rgb ) , this . _updateDisplay ( ) ) } , _setHSL : function ( hsl ) { return this . hsl = hsl , this . rgb = this . _HSLToRGB ( hsl ) , this . value = this . _pack ( this . rgb ) , this . _updateDisplay ( ) , this } , _HSLToRGB : function ( hsl ) { var m1 , m2 , r , g , b , h = hsl [ 0 ] , s = hsl [ 1 ] , l = hsl [ 2 ] ; return m2 = l <= . 5 ? l * ( s + 1 ) : l + s - l * s , m1 = 2 * l - m2 , [ this . _hueToRGB ( m1 , m2 , h + . 33333 ) , this . _hueToRGB ( m1 , m2 , h ) , this . _hueToRGB ( m1 , m2 , h - . 33333 ) ] } , _hueToRGB : function ( m1 , m2 , h ) { return h = h < 0 ? h + 1 : h > 1 ? h - 1 : h , 6 * h < 1 ? m1 + ( m2 - m1 ) * h * 6 : 2 * h < 1 ? m2 : 3 * h < 2 ? m1 + ( m2 - m1 ) * ( . 66666 - h ) * 6 : m1 } , _RGBToHSL : function ( rgb ) { var min , max , delta , h , s , l , r = rgb [ 0 ] , g = rgb [ 1 ] , b = rgb [ 2 ] ; return min = Math . min ( r , Math . min ( g , b ) ) , max = Math . max ( r , Math . max ( g , b ) ) , delta = max - min , l = ( min + max ) / 2 , s = 0 , l > 0 && l < 1 && ( s = delta / ( l < . 5 ? 2 * l : 2 - 2 * l ) ) , h = 0 , delta > 0 && ( max == r && max != g && ( h += ( g - b ) / delta ) , max == g && max != b && ( h += 2 + ( b - r ) / delta ) , max == b && max != r && ( h += 4 + ( r - g ) / delta ) , h /= 6 ) , [ h , s , l ] } , _updateDisplay : function ( ) { var angle = 6.28 * this . hsl [ 0 ] ; this . hMarker . element . css ( { left : Math . round ( Math . sin ( angle ) * this . constants . RADIUS + this . constants . WIDTH / 2 ) + "px" , top : Math . round ( - Math . cos ( angle ) * this . constants . RADIUS + this . constants . WIDTH / 2 ) + "px" } ) , this . slMarker . element . css ( { left : Math . round ( this . constants . SQUARE * ( . 5 - this . hsl [ 1 ] ) + this . constants . WIDTH / 2 ) + "px" , top : Math . round ( this . constants . SQUARE * ( . 5 - this . hsl [ 2 ] ) + this . constants . WIDTH / 2 ) + "px" } ) , this . colorWrapper . element . css ( "backgroundColor" , this . _pack ( this . _HSLToRGB ( [ this . hsl [ 0 ] , 1 , . 5 ] ) ) ) , this . fireEvent ( BI . Farbtastic . EVENT _CHANGE , this . getValue ( ) , this ) } , _absolutePosition : function ( el ) { var r = { x : el . offsetLeft , y : el . offsetTop } ; if ( el .
baseCls : "bi-text-value-combo" , height : 24 , chooseType : BI . ButtonGroup . CHOOSE _TYPE _SINGLE , text : "" , value : "" , attributes : { tabIndex : 0 } } ) } , _init : function ( ) { BI . TextValueCombo . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . trigger = BI . createWidget ( { type : "bi.select_text_trigger" , cls : "text-value-trigger" , items : o . items , height : o . height , text : o . text , value : o . value , warningTitle : o . warningTitle } ) , this . popup = BI . createWidget ( { type : "bi.text_value_combo_popup" , chooseType : o . chooseType , value : o . value , items : o . items } ) , this . popup . on ( BI . TextValueComboPopup . EVENT _CHANGE , function ( ) { self . setValue ( self . popup . getValue ( ) ) , self . textIconCombo . hideView ( ) , self . fireEvent ( BI . TextValueCombo . EVENT _CHANGE , arguments ) } ) , this . popup . on ( BI . Controller . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . textIconCombo = BI . createWidget ( { type : "bi.combo" , container : o . container , element : this , adjustLength : 2 , el : this . trigger , popup : { el : this . popup , maxHeight : 240 , minHeight : 25 } } ) , BI . isKey ( o . value ) && this . _checkError ( o . value ) } , _checkError : function ( v ) { if ( BI . isNotNull ( v ) ) { v = BI . isArray ( v ) ? v : [ v ] ; var result = BI . find ( this . options . items , function ( idx , item ) { return BI . contains ( v , item . value ) } ) ; BI . isNull ( result ) ? ( this . trigger . setTipType ( "warning" ) , this . element . removeClass ( "combo-error" ) . addClass ( "combo-error" ) ) : ( this . trigger . setTipType ( "success" ) , this . element . removeClass ( "combo-error" ) ) } } , setValue : function ( v ) { this . trigger . setValue ( v ) , this . popup . setValue ( v ) , this . _checkError ( v ) } , getValue : function ( ) { var value = this . popup . getValue ( ) ; return BI . isNull ( value ) ? [ ] : BI . isArray ( value ) ? value : [ value ] } , populate : function ( items ) { this . options . items = items , this . textIconCombo . populate ( items ) } } ) , BI . TextValueCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.text_value_combo" , BI . TextValueCombo ) , BI . SmallTextValueCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SmallTextValueCombo . superclass . _defaultConfig . apply ( this , arguments ) , { width : 100 , height : 20 , chooseType : BI . ButtonGroup . CHOOSE _TYPE _SINGLE , el : { } , text : "" } ) } , _init : function ( ) { BI . SmallTextValueCombo . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . trigger = BI . createWidget ( o . el , { type : "bi.small_select_text_trigger" , items : o . items , height : o . height , text : o . text } ) , this . popup = BI . createWidget ( { type : "bi.text_value_combo_popup" , chooseType : o . chooseType , items : o . items } ) , this . popup . on ( BI . TextValueComboPopup . EVENT _CHANGE , function ( ) { self . setValue ( self . popup . getValue ( ) ) , self . SmallTextValueCombo . hideView ( ) , self . fireEvent ( BI . SmallTextValueCombo . EVENT _CHANGE ) } ) , this . popup . on ( BI . Controller . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . SmallTextValueCombo = BI . createWidget ( { type : "bi.combo" , element : this , container : o . container , adjustLength : 2 , el : this . trigger , popup : { el : this . popup , maxHeight : 240 , minHeight : 25 } } ) } , setValue : function ( v ) { this . trigger . setValue ( v ) , this . popup . setValue ( v ) } , getValue : function ( ) { return this . popup . getValue ( ) } , populate : function ( items ) { this . options . items = items , this . SmallTextValueCombo . populate ( items ) } } ) , BI . SmallTextValueCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.small_text_value_combo" , BI . SmallTextValueCombo ) , BI . TextValueComboPopup = BI . inherit ( BI . Pane , { _defaultConfig : function ( ) { return BI . extend ( BI . TextValueComboPopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-text-icon-popup" , chooseType : BI . ButtonGroup . CHOOSE _TYPE _SINGLE } ) } , _init : function ( ) { BI . TextValueComboPopup . superclass . _init . apply ( this , arguments ) ; var o = this . options , self = this ; this . popup = BI . createWidget ( { type : "bi.button_group" , items : BI . createItems ( o . items , { type : "bi.single_select_item" , textAlign : o . textAlign , height : 24 } ) , chooseType : o . chooseType , layouts : [ { type : "bi.vertical" } ] , value : o . value } ) , this . popup . on ( BI . Controller . EVENT _CHANGE , function ( type , val , obj ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , type === BI . Events . CLICK && self . fireEvent ( BI . TextValueComboPopup . EVENT _CHANGE , val , obj ) } ) , this . check ( ) , BI . createWidget ( { type : "bi.vertical" , element : this , vgap : 5 , items : [ this . popup ] } ) } , populate : function ( items ) { BI . TextValueComboPopup . superclass . populate . apply ( this , arguments ) , items = BI . create
this . text . element . removeClass ( "bi-water-mark" ) ) : ( this . text . setText ( o . text ) , this . text . element . addClass ( "bi-water-mark" ) ) ) : void ( BI . isArray ( v ) && 1 !== v . length ? BI . isEmpty ( v ) ? ( this . text . setText ( o . text ) , this . text . element . addClass ( "bi-water-mark" ) ) : ( this . text . setText ( BI . i18nText ( "BI-Already_Selected" ) ) , this . text . element . removeClass ( "bi-water-mark" ) ) : ( this . text . setText ( v ) , this . text . setTitle ( v ) , this . text . element . removeClass ( "bi-water-mark" ) ) ) } } ) , BI . SimpleStateEditor . EVENT _CHANGE = "EVENT_CHANGE" , BI . SimpleStateEditor . EVENT _FOCUS = "EVENT_FOCUS" , BI . SimpleStateEditor . EVENT _BLUR = "EVENT_BLUR" , BI . SimpleStateEditor . EVENT _CLICK = "EVENT_CLICK" , BI . SimpleStateEditor . EVENT _KEY _DOWN = "EVENT_KEY_DOWN" , BI . SimpleStateEditor . EVENT _CLICK _LABEL = "EVENT_CLICK_LABEL" , BI . SimpleStateEditor . EVENT _START = "EVENT_START" , BI . SimpleStateEditor . EVENT _PAUSE = "EVENT_PAUSE" , BI . SimpleStateEditor . EVENT _STOP = "EVENT_STOP" , BI . SimpleStateEditor . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . SimpleStateEditor . EVENT _CHANGE _CONFIRM = "EVENT_CHANGE_CONFIRM" , BI . SimpleStateEditor . EVENT _VALID = "EVENT_VALID" , BI . SimpleStateEditor . EVENT _ERROR = "EVENT_ERROR" , BI . SimpleStateEditor . EVENT _ENTER = "EVENT_ENTER" , BI . SimpleStateEditor . EVENT _RESTRICT = "EVENT_RESTRICT" , BI . SimpleStateEditor . EVENT _SPACE = "EVENT_SPACE" , BI . SimpleStateEditor . EVENT _EMPTY = "EVENT_EMPTY" , BI . shortcut ( "bi.simple_state_editor" , BI . SimpleStateEditor ) , BI . MultiPopupView = BI . inherit ( BI . PopupView , { _defaultConfig : function ( ) { var conf = BI . MultiPopupView . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { _baseCls : ( conf . _baseCls || "" ) + " bi-multi-list-view" , buttons : [ BI . i18nText ( "BI-Basic_Sure" ) ] } ) } , _init : function ( ) { BI . MultiPopupView . superclass . _init . apply ( this , arguments ) } , _createToolBar : function ( ) { var o = this . options , self = this ; if ( 0 !== o . buttons . length ) { var text = [ ] ; return BI . each ( o . buttons , function ( idx , item ) { text . push ( { text : item , value : idx } ) } ) , this . buttongroup = BI . createWidget ( { type : "bi.button_group" , cls : "list-view-toolbar bi-high-light bi-split-top" , height : 24 , items : BI . createItems ( text , { type : "bi.text_button" , once : ! 1 , shadow : ! 0 , isShadowShowingOnSelected : ! 0 } ) , layouts : [ { type : "bi.center" , hgap : 0 , vgap : 0 } ] } ) , this . buttongroup . on ( BI . ButtonGroup . EVENT _CHANGE , function ( value , obj ) { self . fireEvent ( BI . MultiPopupView . EVENT _CLICK _TOOLBAR _BUTTON , value , obj ) } ) , this . buttongroup } } } ) , BI . MultiPopupView . EVENT _CHANGE = "EVENT_CHANGE" , BI . MultiPopupView . EVENT _CLICK _TOOLBAR _BUTTON = "EVENT_CLICK_TOOLBAR_BUTTON" , BI . shortcut ( "bi.multi_popup_view" , BI . MultiPopupView ) , BI . PopupPanel = BI . inherit ( BI . MultiPopupView , { _defaultConfig : function ( ) { var conf = BI . PopupPanel . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-popup-panel" , title : "" } ) } , _init : function ( ) { BI . PopupPanel . superclass . _init . apply ( this , arguments ) } , _createTool : function ( ) { var self = this , o = this . options , close = BI . createWidget ( { type : "bi.icon_button" , cls : "close-h-font" , width : 25 , height : 25 } ) ; return close . on ( BI . IconButton . EVENT _CHANGE , function ( ) { self . setVisible ( ! 1 ) , self . fireEvent ( BI . PopupPanel . EVENT _CLOSE ) } ) , BI . createWidget ( { type : "bi.htape" , cls : "popup-panel-title bi-header-background" , height : 25 , items : [ { el : { type : "bi.label" , textAlign : "left" , text : o . title , height : 25 , lgap : 10 } } , { el : close , width : 25 } ] } ) } } ) , BI . PopupPanel . EVENT _CHANGE = "EVENT_CHANGE" , BI . PopupPanel . EVENT _CLOSE = "EVENT_CLOSE" , BI . PopupPanel . EVENT _CLICK _TOOLBAR _BUTTON = "EVENT_CLICK_TOOLBAR_BUTTON" , BI . shortcut ( "bi.popup_panel" , BI . PopupPanel ) , BI . ListPane = BI . inherit ( BI . Pane , { _defaultConfig : function ( ) { var conf = BI . ListPane . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-list-pane" , logic : { dynamic : ! 0 } , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , vgap : 0 , hgap : 0 , items : [ ] , itemsCreator : BI . emptyFn , hasNext : BI . emptyFn , onLoaded : BI . emptyFn , el : { type : "bi.button_group" } } ) } , _init : function ( ) { BI . ListPane . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . button _group = BI . createWidget ( o . el , { type : "bi.button_group" , chooseType : BI . ButtonGroup . CHOOSE _TYPE _SINGLE , behaviors : { } , items : o . items , itemsCreator : function ( op , calback ) { 1 === op . times && ( self . empty ( ) , BI . nextTick ( function ( ) { self . loading ( ) } ) ) , o . itemsCreator ( op , functio
this . empty ( ) ; var pages = BI . result ( o , "pages" ) , curr = BI . result ( this , "currPage" ) , groups = BI . result ( o , "groups" ) , first = BI . result ( o , "first" ) , last = BI . result ( o , "last" ) , prev = BI . result ( o , "prev" ) , next = BI . result ( o , "next" ) ; pages === ! 1 ? ( groups = 0 , first = ! 1 , last = ! 1 ) : groups > pages && ( groups = pages ) , dict . index = Math . ceil ( ( curr + ( groups > 1 && groups !== pages ? 1 : 0 ) ) / ( 0 === groups ? 1 : groups ) ) , ( ! o . dynamicShow && ! o . dynamicShowPrevNext || curr > 1 ) && prev !== ! 1 && ( BI . isKey ( prev ) ? view . push ( { text : prev , value : "prev" , disabled : pages === ! 1 ? o . hasPrev ( curr ) === ! 1 : ! ( curr > 1 && prev !== ! 1 ) } ) : view . push ( BI . extend ( { disabled : pages === ! 1 ? o . hasPrev ( curr ) === ! 1 : ! ( curr > 1 && prev !== ! 1 ) } , prev ) ) ) , ( ! o . dynamicShow && ! o . dynamicShowFirstLast || dict . index > 1 && 0 !== groups ) && first && ( view . push ( { text : first , value : "first" , disabled : ! ( dict . index > 1 && 0 !== groups ) } ) , dict . index > 1 && 0 !== groups && view . push ( { type : "bi.label" , cls : "page-ellipsis" , text : "…" } ) ) , dict . poor = Math . floor ( ( groups - 1 ) / 2 ) , dict . start = dict . index > 1 ? curr - dict . poor : 1 , dict . end = dict . index > 1 ? function ( ) { var max = curr + ( groups - dict . poor - 1 ) ; return max > pages ? pages : max } ( ) : groups , dict . end - dict . start < groups - 1 && ( dict . start = dict . end - groups + 1 ) ; var s = dict . start , e = dict . end ; for ( first && last && dict . index > 1 && 0 !== groups && pages > groups && dict . end < pages && 0 !== groups && ( s ++ , e -- ) ; s <= e ; s ++ ) s === curr ? view . push ( { text : s , value : s , selected : ! 0 } ) : view . push ( { text : s , value : s } ) ; ( ! o . dynamicShow && ! o . dynamicShowFirstLast || pages > groups && dict . end < pages && 0 !== groups ) && last && ( pages > groups && dict . end < pages && 0 !== groups && view . push ( { type : "bi.label" , cls : "page-ellipsis" , text : "…" } ) , view . push ( { text : last , value : "last" , disabled : ! ( pages > groups && dict . end < pages && 0 !== groups ) } ) ) , dict . flow = ! prev && 0 === groups , ( ! o . dynamicShow && ! o . dynamicShowPrevNext && next || curr !== pages && next || dict . flow ) && view . push ( function ( ) { return BI . isKey ( next ) ? pages === ! 1 ? { text : next , value : "next" , disabled : o . hasNext ( curr ) === ! 1 } : dict . flow && curr === pages ? { text : next , value : "next" , disabled : ! 0 } : { text : next , value : "next" , disabled : ! ( curr !== pages && next || dict . flow ) } : BI . extend ( { disabled : pages === ! 1 ? o . hasNext ( curr ) === ! 1 : ! ( curr !== pages && next || dict . flow ) } , next ) } ( ) ) , this . button _group = BI . createWidget ( { type : "bi.button_group" , element : this , items : BI . createItems ( view , { cls : "page-item bi-border bi-list-item-active" , height : 23 , hgap : 10 } ) , behaviors : o . behaviors , layouts : o . layouts } ) , this . button _group . on ( BI . Controller . EVENT _CHANGE , function ( type , value , obj ) { if ( self . _lock !== ! 0 ) { if ( self . _lock = ! 0 , self . _debouce ( ) , type === BI . Events . CLICK ) { var v = self . button _group . getValue ( ) [ 0 ] ; switch ( v ) { case "first" : self . currPage = 1 ; break ; case "last" : self . currPage = pages ; break ; case "prev" : self . currPage -- ; break ; case "next" : self . currPage ++ ; break ; default : self . currPage = v } o . jump . apply ( self , [ { pages : pages , curr : self . currPage } ] ) , self . _populate ( ) , self . fireEvent ( BI . DetailPager . EVENT _CHANGE , obj ) } self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } } ) , this . fireEvent ( BI . DetailPager . EVENT _AFTER _POPULATE ) } , getCurrentPage : function ( ) { return this . currPage } , setAllPages : function ( pages ) { this . options . pages = pages } , hasPrev : function ( v ) { v || ( v = 1 ) ; var o = this . options , pages = this . options . pages ; return pages === ! 1 ? o . hasPrev ( v ) : v > 1 } , hasNext : function ( v ) { v || ( v = 1 ) ; var o = this . options , pages = this . options . pages ; return pages === ! 1 ? o . hasNext ( v ) : v < pages } , setValue : function ( v ) { var o = this . options ; if ( v = 0 | v , v = v < 1 ? 1 : v , o . pages === ! 1 ) { var lastPage = BI . result ( o , "lastPage" ) , firstPage = 1 ; this . currPage = v > lastPage ? lastPage : ( firstPage = BI . result ( o , "firstPage" ) , v < firstPage ? firstPage : v ) } else v = v > o . pages ? o . pages : v , this . currPage = v ; this . _populate ( ) } , getValue : function ( ) { var val = this . button _group . getValue ( ) [ 0 ] ; switch ( val ) { case "prev" : return - 1 ; case "next" : return 1 ; case "first" : return BI . MIN ; case "last" : return BI . MAX ; default : return val } } , attr : function ( key , value ) { BI . DetailPager . superclass . attr . apply ( this , arguments ) , "curr" === key && ( this . currPage = BI . result ( this . options , "curr" ) ) } , populate : function ( ) { this . _populate ( ) } } ) , BI . DetailPager . EVENT _CHANGE = "EVENT_CHANGE" , BI . DetailPager . EVENT _AFTER _POPULATE = "EVENT_AFTER_POPULATE" , BI . shortcut ( "bi.detail_pager" , BI . DetailPager ) , BI . SegmentButton = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { var conf = BI . SegmentButton . superclass . _defaultConfig . apply ( this , arguments ) ; return
items : [ { el : { type : "bi.horizontal_float" , width : 50 , items : [ { el : this . year } ] } } ] } , { el : { type : "bi.center_adapt" , items : [ this . right ] } , width : 25 } ] } ) , this . setValue ( { year : this . _year } ) } , _checkLeftValid : function ( ) { var o = this . options , valid = ! ( this . _year === BI . parseDateTime ( o . min , "%Y-%X-%d" ) . getFullYear ( ) ) ; return this . left . setEnable ( valid ) , valid } , _checkRightValid : function ( ) { var o = this . options , valid = ! ( this . _year === BI . parseDateTime ( o . max , "%Y-%X-%d" ) . getFullYear ( ) ) ; return this . right . setEnable ( valid ) , valid } , setMinDate : function ( minDate ) { this . options . min = minDate , this . year . setMinDate ( minDate ) , this . _checkLeftValid ( ) , this . _checkRightValid ( ) } , setMaxDate : function ( maxDate ) { this . options . max = maxDate , this . year . setMaxDate ( maxDate ) , this . _checkLeftValid ( ) , this . _checkRightValid ( ) } , setValue : function ( v ) { this . _year = v , this . year . setValue ( v ) , this . _checkLeftValid ( ) , this . _checkRightValid ( ) } , getValue : function ( ) { return this . year . getValue ( ) } } ) , BI . YearPicker . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.year_picker" , BI . YearPicker ) , BI . DateCalendarPopup = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var conf = BI . DateCalendarPopup . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : "bi-date-calendar-popup" , min : "1900-01-01" , max : "2099-12-31" , selectedTime : null } ) } , _createNav : function ( v ) { var date = BI . Calendar . getDateJSONByPage ( v ) , calendar = BI . createWidget ( { type : "bi.calendar" , logic : { dynamic : ! 0 } , min : this . options . min , max : this . options . max , year : date . year , month : date . month , day : 1 } ) ; return calendar } , _init : function ( ) { BI . DateCalendarPopup . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . today = BI . getDate ( ) , this . _year = this . today . getFullYear ( ) , this . _month = this . today . getMonth ( ) + 1 , this . _day = this . today . getDate ( ) , this . selectedTime = o . selectedTime || { year : this . _year , month : this . _month , day : this . _day } , this . datePicker = BI . createWidget ( { type : "bi.date_picker" , behaviors : o . behaviors , min : o . min , max : o . max } ) , this . calendar = BI . createWidget ( { direction : "top" , logic : { dynamic : ! 0 } , type : "bi.navigation" , tab : this . datePicker , cardCreator : BI . bind ( this . _createNav , this ) , afterCardCreated : function ( ) { } , afterCardShow : function ( ) { this . setValue ( self . selectedTime ) } } ) , this . datePicker . on ( BI . DatePicker . EVENT _CHANGE , function ( ) { self . selectedTime = self . datePicker . getValue ( ) , self . selectedTime . day = 1 , self . calendar . setSelect ( BI . Calendar . getPageByDateJSON ( self . selectedTime ) ) } ) , this . calendar . on ( BI . Navigation . EVENT _CHANGE , function ( ) { self . selectedTime = self . calendar . getValue ( ) , self . setValue ( self . selectedTime ) , self . fireEvent ( BI . DateCalendarPopup . EVENT _CHANGE ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . calendar , left : 5 , right : 5 } , { el : { type : "bi.layout" , cls : "bi-split-top" } , height : 1 , top : 40 , left : 0 , right : 0 } ] } ) } , _checkMin : function ( ) { var calendar = this . calendar . getSelectedCard ( ) ; BI . isNotNull ( calendar ) && calendar . setMinDate ( this . options . min ) } , _checkMax : function ( ) { var calendar = this . calendar . getSelectedCard ( ) ; BI . isNotNull ( calendar ) && calendar . setMaxDate ( this . options . max ) } , setMinDate : function ( minDate ) { BI . isNotEmptyString ( this . options . min ) && ( this . options . min = minDate , this . datePicker . setMinDate ( minDate ) , this . _checkMin ( ) ) } , setMaxDate : function ( maxDate ) { BI . isNotEmptyString ( this . options . max ) && ( this . options . max = maxDate , this . datePicker . setMaxDate ( maxDate ) , this . _checkMax ( ) ) } , setValue : function ( timeOb ) { this . datePicker . setValue ( timeOb ) , this . calendar . setSelect ( BI . Calendar . getPageByDateJSON ( timeOb ) ) , this . calendar . setValue ( timeOb ) , this . selectedTime = timeOb } , getValue : function ( ) { return this . selectedTime } } ) , BI . DateCalendarPopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.date_calendar_popup" , BI . DateCalendarPopup ) , BI . MonthPopup = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MonthPopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-month-popup" , behaviors : { } } ) } , _init : function ( ) { BI . MonthPopup . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options , month = [ 1 , 7 , 2 , 8 , 3 , 9 , 4 , 10 , 5 , 11 , 6 , 12 ] , items = [ ] ; items . push ( month . slice ( 0 , 2 ) ) , items . push ( month . slice ( 2 , 4 ) ) , items . push ( month . slice ( 4 , 6 ) ) , items . push ( month . slice ( 6 , 8 ) ) , items . push ( month . slice ( 8 , 10 ) ) , items . push ( month . slice ( 10 , 12 ) ) , items = BI . map (
} , doClick : function ( ) { BI . DownListGroupItem . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . DownListGroupItem . EVENT _CHANGE , this . getValue ( ) ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , setValue : function ( v ) { this . icon1 . setSelected ( this . _digest ( v ) ) } } ) , BI . DownListGroupItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.down_list_group_item" , BI . DownListGroupItem ) , BI . DownListPopup = BI . inherit ( BI . Pane , { constants : { nextIcon : "pull-right-e-font" , height : 24 , iconHeight : 12 , iconWidth : 12 , hgap : 0 , vgap : 0 , border : 1 } , _defaultConfig : function ( ) { var conf = BI . DownListPopup . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : "bi-down-list-popup" , items : [ ] , chooseType : BI . Selection . Multi } ) } , _init : function ( ) { BI . DownListPopup . superclass . _init . apply ( this , arguments ) , this . singleValues = [ ] , this . childValueMap = { } , this . fatherValueMap = { } , this . items = BI . deepClone ( this . options . items ) ; var self = this , o = this . options , children = this . _createChildren ( this . items ) ; this . popup = BI . createWidget ( { type : "bi.button_tree" , items : BI . createItems ( children , { } , { adjustLength : - 2 } ) , layouts : [ { type : "bi.vertical" , hgap : this . constants . hgap , vgap : this . constants . vgap } ] , value : this . _digest ( o . value ) , chooseType : o . chooseType } ) , this . popup . on ( BI . ButtonTree . EVENT _CHANGE , function ( value , object ) { var changedValue = value ; if ( BI . isNotNull ( self . childValueMap [ value ] ) ? ( changedValue = self . childValueMap [ value ] , self . fireEvent ( BI . DownListPopup . EVENT _SON _VALUE _CHANGE , changedValue , self . fatherValueMap [ value ] ) ) : self . fireEvent ( BI . DownListPopup . EVENT _CHANGE , changedValue , object ) , ! BI . contains ( self . singleValues , changedValue ) ) { var item = self . getValue ( ) , result = [ ] ; BI . each ( item , function ( i , valueObject ) { valueObject . value != changedValue && result . push ( valueObject ) } ) , self . setValue ( result ) } } ) , BI . createWidget ( { type : "bi.vertical" , element : this , items : [ this . popup ] , vgap : 5 } ) } , _createChildren : function ( items ) { var self = this , result = [ ] ; return BI . each ( items , function ( i , it ) { var item _done = { type : "bi.down_list_group" , items : [ ] } ; if ( BI . each ( it , function ( i , item ) { BI . isNotEmptyArray ( item . children ) && ! BI . isEmpty ( item . el ) ? ( item . type = "bi.combo_group" , item . isDefaultInit = ! 0 , item . cls = "down-list-group" , item . trigger = "hover" , item . isNeedAdjustWidth = ! 1 , item . el . title = item . el . title || item . el . text , item . el . type = "bi.down_list_group_item" , item . el . logic = { dynamic : ! 0 } , item . el . height = self . constants . height , item . el . iconCls2 = self . constants . nextIcon , item . popup = { lgap : 1 , el : { type : "bi.button_tree" , chooseType : 0 , layouts : [ { type : "bi.vertical" } ] } , innerVGap : 5 , maxHeight : 378 } , item . el . childValues = [ ] , BI . each ( item . children , function ( i , child ) { var fatherValue = BI . deepClone ( item . el . value ) , childValue = BI . deepClone ( child . value ) ; self . singleValues . push ( child . value ) , child . type = "bi.down_list_item" , child . extraCls = " child-down-list-item" , child . title = child . title || child . text , child . textRgap = 10 , child . isNeedAdjustWidth = ! 1 , child . logic = { dynamic : ! 0 } , child . father = fatherValue , self . fatherValueMap [ self . _createChildValue ( fatherValue , childValue ) ] = fatherValue , self . childValueMap [ self . _createChildValue ( fatherValue , childValue ) ] = childValue , child . value = self . _createChildValue ( fatherValue , childValue ) , item . el . childValues . push ( child . value ) } ) ) : ( item . type = "bi.down_list_item" , item . title = item . title || item . text , item . textRgap = 10 , item . isNeedAdjustWidth = ! 1 , item . logic = { dynamic : ! 0 } ) ; var el _done = { } ; el _done . el = item , item _done . items . push ( el _done ) } ) , self . _isGroup ( item _done . items ) && BI . each ( item _done . items , function ( i , item ) { self . singleValues . push ( item . el . value ) } ) , result . push ( item _done ) , self . _needSpliter ( i , items . length ) ) { var spliter _container = BI . createWidget ( { type : "bi.vertical" , items : [ { el : { type : "bi.layout" , cls : "bi-down-list-spliter bi-split-top cursor-pointer" , height : 0 } } ] , cls : "bi-down-list-spliter-container cursor-pointer" , vgap : 5 , lgap : 10 , rgap : 0 } ) ; result . push ( spliter _container ) } } ) , result } , _isGroup : function ( i ) { return i . length > 1 } , _needSpliter : function ( i , itemLength ) { return i < itemLength - 1 } , _createChildValue : function ( fatherValue , childValue ) { return fatherValue + "_" + childValue } , _digest : function ( valueItem ) { var self = this , valueArray = [ ] ; return
case this . _const . yearLength : this . _yearCheck ( v ) && this . editor . setValue ( v + "-" ) ; break ; case this . _const . yearMonthLength : case this . _const . yearFullMonthLength : var splitMonth = v . split ( "-" ) [ 1 ] ; ( BI . isNotNull ( splitMonth ) && 2 === splitMonth . length || this . _monthCheck ( v ) ) && this . editor . setValue ( v + "-" ) } } , _yearCheck : function ( v ) { var date = BI . print ( BI . parseDateTime ( v , this . _getFormatString ( ) ) , this . _const . compareFormat ) ; return BI . print ( BI . parseDateTime ( v , "%Y" ) , "%Y" ) === v && date >= this . options . min && date <= this . options . max } , _monthCheck : function ( v ) { var date = BI . parseDateTime ( v , this . _getFormatString ( ) ) , dateStr = BI . print ( date , this . _const . compareFormat ) ; return date . getMonth ( ) >= 0 && ( BI . print ( BI . parseDateTime ( v , "%Y-%X" ) , "%Y-%X" ) === v || BI . print ( BI . parseDateTime ( v , "%Y-%x" ) , "%Y-%x" ) === v ) && dateStr >= this . options . min && dateStr <= this . options . max } , _setInnerValue : function ( date ) { var dateStr = BI . print ( date , this . _getFormatString ( ) ) ; this . editor . setState ( dateStr ) , this . editor . setValue ( dateStr ) } , _getText : function ( obj ) { function getPositionText ( baseText , position ) { switch ( position ) { case BI . DynamicDateCard . OFFSET . BEGIN : return baseText + BI . i18nText ( "BI-Basic_Begin_Start" ) ; case BI . DynamicDateCard . OFFSET . END : return baseText + BI . i18nText ( "BI-Basic_End_Stop" ) ; case BI . DynamicDateCard . OFFSET . CURRENT : default : return BI . i18nText ( "BI-Basic_Current_Day" ) } } var value = "" , endText = "" ; return BI . isNotNull ( obj . year ) && ( 0 !== BI . parseInt ( obj . year ) && ( value += Math . abs ( obj . year ) + BI . i18nText ( "BI-Basic_Year" ) + ( obj . year < 0 ? BI . i18nText ( "BI-Basic_Front" ) : BI . i18nText ( "BI-Basic_Behind" ) ) ) , endText = getPositionText ( BI . i18nText ( "BI-Basic_Year" ) , obj . position ) ) , BI . isNotNull ( obj . quarter ) && ( 0 !== BI . parseInt ( obj . quarter ) && ( value += Math . abs ( obj . quarter ) + BI . i18nText ( "BI-Basic_Single_Quarter" ) + ( obj . quarter < 0 ? BI . i18nText ( "BI-Basic_Front" ) : BI . i18nText ( "BI-Basic_Behind" ) ) ) , endText = getPositionText ( BI . i18nText ( "BI-Basic_Single_Quarter" ) , obj . position ) ) , BI . isNotNull ( obj . month ) && ( 0 !== BI . parseInt ( obj . month ) && ( value += Math . abs ( obj . month ) + BI . i18nText ( "BI-Basic_Month" ) + ( obj . month < 0 ? BI . i18nText ( "BI-Basic_Front" ) : BI . i18nText ( "BI-Basic_Behind" ) ) ) , endText = getPositionText ( BI . i18nText ( "BI-Basic_Month" ) , obj . position ) ) , BI . isNotNull ( obj . week ) && ( 0 !== BI . parseInt ( obj . week ) && ( value += Math . abs ( obj . week ) + BI . i18nText ( "BI-Basic_Week" ) + ( obj . week < 0 ? BI . i18nText ( "BI-Basic_Front" ) : BI . i18nText ( "BI-Basic_Behind" ) ) ) , endText = getPositionText ( BI . i18nText ( "BI-Basic_Week" ) , obj . position ) ) , BI . isNotNull ( obj . day ) && ( 0 !== BI . parseInt ( obj . day ) && ( value += Math . abs ( obj . day ) + BI . i18nText ( "BI-Basic_Day" ) + ( obj . day < 0 ? BI . i18nText ( "BI-Basic_Front" ) : BI . i18nText ( "BI-Basic_Behind" ) ) ) , endText = 1 === BI . size ( obj ) ? getPositionText ( BI . i18nText ( "BI-Basic_Month" ) , obj . position ) : "" ) , BI . isNotNull ( obj . workDay ) && 0 !== BI . parseInt ( obj . workDay ) && ( value += Math . abs ( obj . workDay ) + BI . i18nText ( "BI-Basic_Work_Day" ) + ( obj . workDay < 0 ? BI . i18nText ( "BI-Basic_Front" ) : BI . i18nText ( "BI-Basic_Behind" ) ) ) , value + endText } , setValue : function ( v ) { var type , value , self = this , date = BI . getDate ( ) ; switch ( this . storeValue = v , BI . isNotNull ( v ) && ( type = v . type || BI . DynamicDateCombo . Static , value = v . value || v ) , type ) { case BI . DynamicDateCombo . Dynamic : var text = this . _getText ( value ) ; date = BI . DynamicDateHelper . getCalculation ( value ) , this . _setInnerValue ( date , text ) ; break ; case BI . DynamicDateCombo . Static : default : if ( BI . isNull ( value ) || BI . isNull ( value . day ) ) this . editor . setState ( "" ) , this . editor . setValue ( "" ) ; else { var dateStr = BI . print ( BI . getDate ( value . year , value . month - 1 , value . day ) , this . _getFormatString ( ) ) ; this . editor . setState ( dateStr ) , this . editor . setValue ( dateStr ) } } } , setMinDate : function ( minDate ) { BI . isNotEmptyString ( this . options . min ) && ( this . options . min = minDate ) } , setMaxDate : function ( maxDate ) { BI . isNotEmptyString ( this . options . max ) && ( this . options . max = maxDate ) } , getKey : function ( ) { return this . editor . getValue ( ) } , getValue : function ( ) { return this . storeValue } } ) , BI . DynamicDateTrigger . EVENT _BLUR = "EVENT_BLUR" , BI . DynamicDateTrigger . EVENT _FOCUS = "EVENT_FOCUS" , BI . DynamicDateTrigger . EVENT _START = "EVENT_START" , BI . DynamicDateTrigger . EVENT _STOP = "EVENT_STOP" , BI . DynamicDateTrigger . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . DynamicDateTrigger . EVENT _CHANGE = "EVENT_CHANGE" , BI . DynamicDateTrigger . EVENT _VALID = "EVENT_VALID" , BI . Dyna
self . fireEvent ( BI . SearchEditor . EVENT _STOP ) } ) , this . clear . invisible ( ) } , _checkClear : function ( ) { this . getValue ( ) ? this . clear . visible ( ) : this . clear . invisible ( ) } , setWaterMark : function ( v ) { this . options . watermark = v , this . editor . setWaterMark ( v ) } , focus : function ( ) { this . editor . focus ( ) } , blur : function ( ) { this . editor . blur ( ) } , getValue : function ( ) { if ( this . isValid ( ) ) { var res = this . editor . getValue ( ) . match ( /[\S]+/g ) ; return BI . isNull ( res ) ? "" : res [ res . length - 1 ] } } , getKeywords : function ( ) { var val = this . editor . getLastChangedValue ( ) , keywords = val . match ( /[\S]+/g ) ; return BI . isEndWithBlank ( val ) ? keywords . concat ( [ " " ] ) : keywords } , getLastValidValue : function ( ) { return this . editor . getLastValidValue ( ) } , getLastChangedValue : function ( ) { return this . editor . getLastChangedValue ( ) } , setValue : function ( v ) { this . editor . setValue ( v ) , BI . isKey ( v ) && this . clear . visible ( ) } , isEditing : function ( ) { return this . editor . isEditing ( ) } , isValid : function ( ) { return this . editor . isValid ( ) } } ) , BI . SearchEditor . EVENT _CHANGE = "EVENT_CHANGE" , BI . SearchEditor . EVENT _FOCUS = "EVENT_FOCUS" , BI . SearchEditor . EVENT _BLUR = "EVENT_BLUR" , BI . SearchEditor . EVENT _CLICK = "EVENT_CLICK" , BI . SearchEditor . EVENT _KEY _DOWN = "EVENT_KEY_DOWN" , BI . SearchEditor . EVENT _SPACE = "EVENT_SPACE" , BI . SearchEditor . EVENT _BACKSPACE = "EVENT_BACKSPACE" , BI . SearchEditor . EVENT _CLEAR = "EVENT_CLEAR" , BI . SearchEditor . EVENT _START = "EVENT_START" , BI . SearchEditor . EVENT _PAUSE = "EVENT_PAUSE" , BI . SearchEditor . EVENT _STOP = "EVENT_STOP" , BI . SearchEditor . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . SearchEditor . EVENT _CHANGE _CONFIRM = "EVENT_CHANGE_CONFIRM" , BI . SearchEditor . EVENT _VALID = "EVENT_VALID" , BI . SearchEditor . EVENT _ERROR = "EVENT_ERROR" , BI . SearchEditor . EVENT _ENTER = "EVENT_ENTER" , BI . SearchEditor . EVENT _RESTRICT = "EVENT_RESTRICT" , BI . SearchEditor . EVENT _REMOVE = "EVENT_REMOVE" , BI . SearchEditor . EVENT _EMPTY = "EVENT_EMPTY" , BI . shortcut ( "bi.search_editor" , BI . SearchEditor ) , BI . SmallSearchEditor = BI . inherit ( BI . SearchEditor , { _defaultConfig : function ( ) { var conf = BI . SmallSearchEditor . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-small-search-editor" , height : 20 } ) } , _init : function ( ) { BI . SmallSearchEditor . superclass . _init . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.small_search_editor" , BI . SmallSearchEditor ) , BI . TextEditor = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var conf = BI . TextEditor . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { extraCls : "bi-text-editor bi-border bi-focus-shadow" , hgap : 4 , vgap : 2 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , validationChecker : BI . emptyFn , quitChecker : BI . emptyFn , allowBlank : ! 1 , watermark : "" , errorText : "" , height : 24 } ) } , _init : function ( ) { BI . TextEditor . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; BI . isNumber ( o . height ) && this . element . css ( { height : o . height - 2 } ) , BI . isNumber ( o . width ) && this . element . css ( { width : o . width - 2 } ) , this . editor = BI . createWidget ( { type : "bi.editor" , height : o . height - 2 , hgap : o . hgap , vgap : o . vgap , lgap : o . lgap , rgap : o . rgap , tgap : o . tgap , bgap : o . bgap , value : o . value , title : o . title , tipType : o . tipType , validationChecker : o . validationChecker , quitChecker : o . quitChecker , allowBlank : o . allowBlank , watermark : o . watermark , errorText : o . errorText } ) , this . editor . on ( BI . Controller . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _FOCUS , function ( ) { self . fireEvent ( BI . TextEditor . EVENT _FOCUS ) } ) , this . editor . on ( BI . Editor . EVENT _BLUR , function ( ) { self . fireEvent ( BI . TextEditor . EVENT _BLUR ) } ) , this . editor . on ( BI . Editor . EVENT _CLICK , function ( ) { self . fireEvent ( BI . TextEditor . EVENT _CLICK ) } ) , this . editor . on ( BI . Editor . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . TextEditor . EVENT _CHANGE ) } ) , this . editor . on ( BI . Editor . EVENT _KEY _DOWN , function ( v ) { self . fireEvent ( BI . TextEditor . EVENT _KEY _DOWN ) } ) , this . editor . on ( BI . Editor . EVENT _SPACE , function ( v ) { self . fireEvent ( BI . TextEditor . EVENT _SPACE ) } ) , this . editor . on ( BI . Editor . EVENT _BACKSPACE , function ( v ) { self . fireEvent ( BI . TextEditor . EVENT _BACKSPACE ) } ) , this . editor . on ( BI . Editor . EVENT _VALID , function ( ) { self . fireEvent ( BI . TextEditor . EVENT _VALID ) } ) , this . editor . on ( BI . Editor . EVENT _CONFIRM , function ( ) { self . fireEvent ( BI . TextEditor . EVENT _CONFIRM ) } ) , this . editor . on ( BI . Editor . EVENT _CHANGE _CONFIRM , function ( ) { sel
_defaultConfig : function ( ) { return BI . extend ( BI . MultiLayerSelectTreeCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multilayer-select-tree-combo" , isDefaultInit : ! 1 , height : 24 , text : "" , itemsCreator : BI . emptyFn , items : [ ] , value : "" , attributes : { tabIndex : 0 } , allowEdit : ! 1 , allowSearchValue : ! 1 , allowInsertValue : ! 1 } ) } , render : function ( ) { var self = this , o = this . options , combo = o . itemsCreator === BI . emptyFn ? this . _getSyncConfig ( ) : this . _getAsyncConfig ( ) ; return o . allowEdit || o . itemsCreator !== BI . emptyFn ? { type : "bi.absolute" , items : [ { el : combo , left : 0 , right : 0 , top : 0 , bottom : 0 } , { el : { type : "bi.trigger_icon_button" , cls : "trigger-icon-button" , ref : function ( _ref ) { self . triggerBtn = _ref } , width : o . height , height : o . height , handler : function ( ) { self . combo . isViewVisible ( ) ? self . combo . hideView ( ) : self . combo . showView ( ) } } , right : 0 , bottom : 0 , top : 0 } ] } : combo } , _getBaseConfig : function ( ) { var self = this , o = this . options ; return { type : "bi.combo" , container : o . container , adjustLength : 2 , ref : function ( _ref ) { self . combo = _ref } , popup : { el : { type : "bi.multilayer_select_tree_popup" , isDefaultInit : o . isDefaultInit , itemsCreator : o . itemsCreator , items : o . items , ref : function ( _ref ) { self . trigger && self . trigger . getSearcher ( ) . setAdapter ( _ref ) } , listeners : [ { eventName : BI . MultiLayerSelectTreePopup . EVENT _CHANGE , action : function ( ) { self . setValue ( this . getValue ( ) ) , self . combo . hideView ( ) , self . fireEvent ( BI . MultiLayerSelectTreeCombo . EVENT _CHANGE ) } } ] , onLoaded : function ( ) { BI . nextTick ( function ( ) { self . combo . adjustWidth ( ) , self . combo . adjustHeight ( ) } ) } } , value : o . value , maxHeight : 400 , minHeight : 240 } } } , _getSearchConfig : function ( ) { var self = this , o = this . options ; return { el : { type : "bi.multilayer_select_tree_trigger" , allowInsertValue : o . allowInsertValue , allowSearchValue : o . allowSearchValue , allowEdit : o . allowEdit , cls : "multilayer-select-tree-trigger" , ref : function ( _ref ) { self . trigger = _ref } , items : o . items , itemsCreator : o . itemsCreator , valueFormatter : o . valueFormatter , watermark : o . watermark , height : o . height - 2 , text : o . text , value : o . value , tipType : o . tipType , warningTitle : o . warningTitle , title : o . title , listeners : [ { eventName : BI . MultiLayerSelectTreeTrigger . EVENT _CHANGE , action : function ( ) { self . setValue ( this . getValue ( ) ) , self . combo . hideView ( ) , self . fireEvent ( BI . MultiLayerSelectTreeCombo . EVENT _CHANGE ) } } , { eventName : BI . MultiLayerSelectTreeTrigger . EVENT _FOCUS , action : function ( ) { self . fireEvent ( BI . MultiLayerSelectTreeCombo . EVENT _FOCUS ) } } , { eventName : BI . MultiLayerSelectTreeTrigger . EVENT _BLUR , action : function ( ) { self . fireEvent ( BI . MultiLayerSelectTreeCombo . EVENT _BLUR ) } } , { eventName : BI . MultiLayerSelectTreeTrigger . EVENT _SEARCHING , action : function ( ) { self . fireEvent ( BI . MultiLayerSelectTreeCombo . EVENT _SEARCHING ) } } , { eventName : BI . MultiLayerSelectTreeTrigger . EVENT _ADD _ITEM , action : function ( ) { var value = self . trigger . getSearcher ( ) . getKeyword ( ) ; self . combo . setValue ( [ value ] ) , self . combo . hideView ( ) } } ] } , hideChecker : function ( e ) { return 0 === self . triggerBtn . element . find ( e . target ) . length } , listeners : [ { eventName : BI . Combo . EVENT _AFTER _HIDEVIEW , action : function ( ) { self . trigger . stopEditing ( ) } } ] } } , _getSyncConfig : function ( ) { var o = this . options , baseConfig = this . _getBaseConfig ( ) ; return BI . extend ( baseConfig , o . allowEdit ? this . _getSearchConfig ( ) : { el : { type : "bi.single_tree_trigger" , text : o . text , height : o . height , items : o . items , value : o . value } } ) } , _getAsyncConfig : function ( ) { var config = this . _getBaseConfig ( ) ; return BI . extend ( config , this . _getSearchConfig ( ) ) } , setValue : function ( v ) { v = BI . isArray ( v ) ? v : [ v ] , this . combo . setValue ( v ) } , getValue : function ( ) { return this . combo . getValue ( ) } , populate : function ( items ) { this . combo . populate ( items ) } } ) , BI . MultiLayerSelectTreeCombo . EVENT _SEARCHING = "EVENT_SEARCHING" , BI . MultiLayerSelectTreeCombo . EVENT _BLUR = "EVENT_BLUR" , BI . MultiLayerSelectTreeCombo . EVENT _FOCUS = "EVENT_FOCUS" , BI . MultiLayerSelectTreeCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multilayer_select_tree_combo" , BI . MultiLayerSelectTreeCombo ) , BI . MultiLayerSelectTreeInsertSearchPane = BI . inherit ( BI . Widget , { props : function ( ) { return { baseCls : "bi-multilayer-select-tree-popup" , tipText : BI . i18nText ( "BI-No_Selected_Item" ) , isDefaultInit : ! 1 , itemsCreator : BI . emptyFn , items : [ ] , value : "" } } , render : function ( ) { var self = this , o = this . options ; return this . tree = BI . createWidget ( { type : " bi . mu
getAllLeaves : function ( ) { return this . tree . getAllLeaves ( ) } , getNodeById : function ( id ) { return this . tree . getNodeById ( id ) } , getNodeByValue : function ( id ) { return this . tree . getNodeByValue ( id ) } } ) , BI . MultiLayerSingleLevelTree . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multilayer_single_level_tree" , BI . MultiLayerSingleLevelTree ) , BI . MultiLayerSingleTreePopup = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiLayerSingleTreePopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multilayer-singletree-popup" , tipText : BI . i18nText ( "BI-No_Selected_Item" ) , isDefaultInit : ! 1 , itemsCreator : BI . emptyFn , items : [ ] , onLoaded : BI . emptyFn } ) } , _init : function ( ) { BI . MultiLayerSingleTreePopup . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . tree = BI . createWidget ( { type : "bi.multilayer_single_level_tree" , isDefaultInit : o . isDefaultInit , items : o . items , itemsCreator : o . itemsCreator , keywordGetter : o . keywordGetter , value : o . value , scrollable : null , onLoaded : function ( ) { self . tree . check ( ) , o . onLoaded ( ) } } ) , BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , scrollable : ! 0 , element : this , vgap : 5 , items : [ this . tree ] } ) , this . tree . on ( BI . Controller . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . tree . on ( BI . MultiLayerSingleLevelTree . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . MultiLayerSingleTreePopup . EVENT _CHANGE ) } ) } , getValue : function ( ) { return this . tree . getValue ( ) } , setValue : function ( v ) { v = BI . isArray ( v ) ? v : [ v ] , this . tree . setValue ( v ) } , populate : function ( items ) { this . tree . populate ( items ) } } ) , BI . MultiLayerSingleTreePopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multilayer_single_tree_popup" , BI . MultiLayerSingleTreePopup ) , BI . MultiLayerSingleTreeTrigger = BI . inherit ( BI . Trigger , { props : function ( ) { return { extraCls : "bi-multi-layer-single-tree-trigger bi-border bi-focus-shadow bi-border-radius" , height : 24 , valueFormatter : function ( v ) { return v } , itemsCreator : BI . emptyFn , watermark : BI . i18nText ( "BI-Basic_Search" ) , allowSearchValue : ! 1 } } , render : function ( ) { var self = this , o = this . options ; o . itemsCreator === BI . emptyFn && this . _initData ( ) ; var content = { type : "bi.htape" , items : [ { el : { type : "bi.searcher" , ref : function ( ) { self . searcher = this } , isAutoSearch : ! 1 , el : { type : "bi.state_editor" , ref : function ( ) { self . editor = this } , defaultText : o . text , text : this . _digest ( o . value ) , value : o . value , height : o . height , tipText : "" , watermark : o . watermark , listeners : [ { eventName : BI . StateEditor . EVENT _FOCUS , action : function ( ) { self . fireEvent ( BI . MultiLayerSingleTreeTrigger . EVENT _FOCUS ) } } , { eventName : BI . StateEditor . EVENT _BLUR , action : function ( ) { self . fireEvent ( BI . MultiLayerSingleTreeTrigger . EVENT _BLUR ) } } , { eventName : BI . StateEditor . EVENT _CHANGE , action : function ( ) { self . fireEvent ( BI . MultiLayerSingleTreeTrigger . EVENT _SEARCHING ) } } ] } , popup : { type : o . allowInsertValue ? "bi.multilayer_single_tree_insert_search_pane" : "bi.multilayer_single_tree_popup" , itemsCreator : o . itemsCreator === BI . emptyFn ? BI . emptyFn : function ( op , callback ) { op . keyword = self . editor . getValue ( ) , o . itemsCreator ( op , callback ) } , keywordGetter : function ( ) { return self . editor . getValue ( ) } , cls : "bi-card" , listeners : [ { eventName : BI . MultiLayerSingleTreeInsertSearchPane . EVENT _ADD _ITEM , action : function ( ) { self . options . text = self . getSearcher ( ) . getKeyword ( ) , self . fireEvent ( BI . MultiLayerSingleTreeTrigger . EVENT _ADD _ITEM ) } } ] , ref : function ( _ref ) { self . popup = _ref } } , onSearch : function ( obj , callback ) { var keyword = obj . keyword ; o . itemsCreator === BI . emptyFn ? ( callback ( self . _getSearchItems ( keyword ) ) , o . allowInsertValue && self . popup . setKeyword ( keyword ) ) : callback ( ) } , listeners : [ { eventName : BI . Searcher . EVENT _CHANGE , action : function ( ) { self . fireEvent ( BI . MultiLayerSingleTreeTrigger . EVENT _CHANGE ) } } ] } } , { el : { type : "bi.layout" , width : 24 } , width : 24 } ] } ; return o . allowEdit ? content : { type : "bi.absolute" , items : [ { el : content , left : 0 , right : 0 , top : 0 , bottom : 0 } , { el : { type : "bi.layout" } , left : 0 , right : 24 , top : 0 , bottom : 0 } ] } } , _initData : function ( ) { var o = this . options ; this . tree = new BI . Tree , this . nodes = BI . Tree . treeFormat ( BI . deepClone ( o . items ) ) , this . tree . initTree ( this . nodes ) } , _getSearchItems : function ( keyword ) { var self = this , o = this . options , items = [ ] ; return this . tree . traverse ( function ( node ) { var find = BI . Func . getSearchResult ( self . tree . isRoot ( node ) ? [ ] : BI . c
this . requesting = ! 1 , this . trigger = BI . createWidget ( { type : "bi.multi_select_insert_trigger" , allowEdit : o . allowEdit , height : o . height , text : o . text , watermark : o . watermark , masker : { offset : { left : 0 , top : 0 , right : 0 , bottom : 25 } } , valueFormatter : o . valueFormatter , itemsCreator : BI . bind ( this . _itemsCreator4Trigger , this ) , value : o . value } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _FOCUS , function ( ) { self . fireEvent ( BI . MultiSelectInsertCombo . EVENT _FOCUS ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _BLUR , function ( ) { self . fireEvent ( BI . MultiSelectInsertCombo . EVENT _BLUR ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _START , function ( ) { self . _setStartValue ( "" ) , this . getSearcher ( ) . setValue ( self . storeValue ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _STOP , function ( ) { self . _setStartValue ( "" ) , self . fireEvent ( BI . MultiSelectInsertCombo . EVENT _STOP ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _PAUSE , function ( ) { this . getSearcher ( ) . hasMatched ( ) && self . _addItem ( assertShowValue ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _ADD _ITEM , function ( ) { this . getSearcher ( ) . hasMatched ( ) || ( self . _addItem ( assertShowValue ) , self . _stopEditing ( ) ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _SEARCHING , function ( keywords ) { var last = BI . last ( keywords ) ; keywords = BI . initial ( keywords || [ ] ) , keywords . length > 0 && self . _joinKeywords ( keywords , function ( ) { BI . isEndWithBlank ( last ) ? ( self . combo . setValue ( self . storeValue ) , assertShowValue ( ) , self . combo . populate ( ) , self . _setStartValue ( "" ) ) : ( self . combo . setValue ( self . storeValue ) , assertShowValue ( ) ) } ) , self . fireEvent ( BI . MultiSelectInsertCombo . EVENT _SEARCHING ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _CHANGE , function ( value , obj ) { obj instanceof BI . MultiSelectBar ? self . _joinAll ( this . getValue ( ) , function ( ) { assertShowValue ( ) } ) : self . _join ( this . getValue ( ) , function ( ) { assertShowValue ( ) } ) , self . fireEvent ( BI . MultiSelectInsertCombo . EVENT _CLICK _ITEM ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _BEFORE _COUNTER _POPUPVIEW , function ( ) { self . numberCounter . updateSelectedValue ( self . storeValue ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _COUNTER _CLICK , function ( ) { self . combo . isViewVisible ( ) || self . combo . showView ( ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , toggle : ! o . allowEdit , el : this . trigger , adjustLength : 1 , container : o . container , popup : { type : "bi.multi_select_popup_view" , ref : function ( ) { self . popup = this , self . trigger . setAdapter ( this ) , self . numberCounter . setAdapter ( this ) } , listeners : [ { eventName : BI . MultiSelectPopupView . EVENT _CHANGE , action : function ( ) { self . storeValue = this . getValue ( ) , self . _adjust ( function ( ) { assertShowValue ( ) } ) , self . fireEvent ( BI . MultiSelectInsertCombo . EVENT _CLICK _ITEM ) } } , { eventName : BI . MultiSelectPopupView . EVENT _CLICK _CONFIRM , action : function ( ) { self . _defaultState ( ) } } , { eventName : BI . MultiSelectPopupView . EVENT _CLICK _CLEAR , action : function ( ) { self . setValue ( ) , self . _defaultState ( ) } } ] , itemsCreator : o . itemsCreator , valueFormatter : o . valueFormatter , onLoaded : function ( ) { BI . nextTick ( function ( ) { self . combo . adjustWidth ( ) , self . combo . adjustHeight ( ) , self . numberCounter . adjustView ( ) , self . trigger . getSearcher ( ) . adjustView ( ) } ) } } , value : o . value , hideChecker : function ( e ) { return 0 === triggerBtn . element . find ( e . target ) . length && 0 === self . numberCounter . element . find ( e . target ) . length } } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { this . setValue ( self . storeValue ) , BI . nextTick ( function ( ) { self . populate ( ) } ) } ) , this . wants2Quit = ! 1 , this . combo . on ( BI . Combo . EVENT _AFTER _HIDEVIEW , function ( ) { self . _stopEditing ( ) , self . requesting === ! 0 ? self . wants2Quit = ! 0 : self . fireEvent ( BI . MultiSelectInsertCombo . EVENT _CONFIRM ) } ) ; var triggerBtn = BI . createWidget ( { type : "bi.trigger_icon_button" , width : o . height , height : o . height , cls : "multi-select-trigger-icon-button" } ) ; triggerBtn . on ( BI . TriggerIconButton . EVENT _CHANGE , function ( ) { self . numberCounter . hideView ( ) , self . combo . isViewVisible ( ) ? self . combo . hideView ( ) : self . combo . showView ( ) } ) , this . numberCounter = BI . createWidget ( { type : "bi.multi_select_check_selected_switcher" , masker : { offset : { left : 0 , top : 0 , right : 0 , bottom : 25 } } , valueFormatter : o . valueFormatter , itemsCreator : BI . bind ( this . _itemsCreator4Trigger , this ) , value : o . value } ) , this . numberCounter . on ( BI . MultiSelectCheckSelectedSwitch
this . popupView . resetWidth ( w ) } } ) , BI . MultiSelectNoBarPopupView . EVENT _CHANGE = "EVENT_CHANGE" , BI . MultiSelectNoBarPopupView . EVENT _CLICK _CONFIRM = "EVENT_CLICK_CONFIRM" , BI . MultiSelectNoBarPopupView . EVENT _CLICK _CLEAR = "EVENT_CLICK_CLEAR" , BI . shortcut ( "bi.multi_select_no_bar_popup_view" , BI . MultiSelectNoBarPopupView ) , BI . MultiSelectTrigger = BI . inherit ( BI . Trigger , { constants : { height : 14 , rgap : 4 , lgap : 4 } , _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-trigger bi-border bi-border-radius" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , searcher : { } , switcher : { } , adapter : null , masker : { } , allowEdit : ! 0 } ) } , _init : function ( ) { BI . MultiSelectTrigger . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; o . height && this . setHeight ( o . height - 2 ) , this . searcher = BI . createWidget ( o . searcher , { type : "bi.multi_select_searcher" , height : o . height , text : o . text , itemsCreator : o . itemsCreator , valueFormatter : o . valueFormatter , watermark : o . watermark , popup : { } , adapter : o . adapter , masker : o . masker , value : o . value } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _START , function ( ) { self . fireEvent ( BI . MultiSelectTrigger . EVENT _START ) } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _PAUSE , function ( ) { self . fireEvent ( BI . MultiSelectTrigger . EVENT _PAUSE ) } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _SEARCHING , function ( ) { self . fireEvent ( BI . MultiSelectTrigger . EVENT _SEARCHING , arguments ) } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _STOP , function ( ) { self . fireEvent ( BI . MultiSelectTrigger . EVENT _STOP ) } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . MultiSelectTrigger . EVENT _CHANGE , arguments ) } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _BLUR , function ( ) { self . fireEvent ( BI . MultiSelectTrigger . EVENT _BLUR ) } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _FOCUS , function ( ) { self . fireEvent ( BI . MultiSelectTrigger . EVENT _FOCUS ) } ) , this . wrapNumberCounter = BI . createWidget ( { type : "bi.layout" } ) , this . wrapper = BI . createWidget ( { type : "bi.htape" , element : this , items : [ { el : this . searcher , width : "fill" } , { el : this . wrapNumberCounter , width : 0 } , { el : BI . createWidget ( ) , width : 24 } ] } ) , ! o . allowEdit && BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.layout" } , left : 0 , right : 24 , top : 0 , bottom : 0 } ] } ) } , refreshPlaceHolderWidth : function ( width ) { this . wrapper . attr ( "items" ) [ 1 ] . width = width , this . wrapper . resize ( ) } , getSearcher : function ( ) { return this . searcher } , stopEditing : function ( ) { this . searcher . stopSearch ( ) } , setAdapter : function ( adapter ) { this . searcher . setAdapter ( adapter ) } , setValue : function ( ob ) { this . searcher . setValue ( ob ) } , getKey : function ( ) { return this . searcher . getKey ( ) } , getValue : function ( ) { return this . searcher . getValue ( ) } } ) , BI . MultiSelectTrigger . EVENT _TRIGGER _CLICK = "EVENT_TRIGGER_CLICK" , BI . MultiSelectTrigger . EVENT _COUNTER _CLICK = "EVENT_COUNTER_CLICK" , BI . MultiSelectTrigger . EVENT _CHANGE = "EVENT_CHANGE" , BI . MultiSelectTrigger . EVENT _START = "EVENT_START" , BI . MultiSelectTrigger . EVENT _STOP = "EVENT_STOP" , BI . MultiSelectTrigger . EVENT _PAUSE = "EVENT_PAUSE" , BI . MultiSelectTrigger . EVENT _SEARCHING = "EVENT_SEARCHING" , BI . MultiSelectTrigger . EVENT _BEFORE _COUNTER _POPUPVIEW = "EVENT_BEFORE_COUNTER_POPUPVIEW" , BI . MultiSelectTrigger . EVENT _BLUR = "EVENT_BLUR" , BI . MultiSelectTrigger . EVENT _FOCUS = "EVENT_FOCUS" , BI . shortcut ( "bi.multi_select_trigger" , BI . MultiSelectTrigger ) , BI . MultiSelectSearchInsertPane = BI . inherit ( BI . Widget , { constants : { height : 24 , lgap : 10 , tgap : 5 } , _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectSearchInsertPane . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-search-pane bi-card" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , keywordGetter : BI . emptyFn } ) } , _init : function ( ) { BI . MultiSelectSearchInsertPane . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . tooltipClick = BI . createWidget ( { type : "bi.label" , invisible : ! 0 , text : BI . i18nText ( "BI-Click_Blank_To_Select" ) , cls : "multi-select-toolbar" , height : this . constants . height } ) , this . addNotMatchTip = BI . createWidget ( { type : "bi.text_button" , invisible : ! 0 , text : BI . i18nText ( "BI-Basic_Click_To_Add_Text" , "" ) , height : this . constants . height , cls : "bi-high-light" , hgap : 5 , handler : func
} , itemsCreator : function ( op , callback ) { op . keywords = [ self . trigger . getKeyword ( ) ] , this . setKeyword ( op . keywords [ 0 ] ) , o . itemsCreator ( op , callback ) } , listeners : [ { eventName : BI . MultiSelectSearchInsertPane . EVENT _ADD _ITEM , action : function ( ) { var keyword = self . trigger . getKeyword ( ) ; self . trigger . hasMatched ( ) || ( self . storeValue . type === BI . Selection . Multi && BI . pushDistinct ( self . storeValue . value , keyword ) , self . _showAdapter ( ) , self . adapter . setValue ( self . storeValue ) , self . adapter . populate ( ) , self . storeValue . type === BI . Selection . Multi && self . fireEvent ( BI . MultiSelectInsertNoBarList . EVENT _CHANGE ) ) } } ] } ) , this . searcherPane . setVisible ( ! 1 ) , this . trigger = BI . createWidget ( { type : "bi.searcher" , isAutoSearch : ! 1 , isAutoSync : ! 1 , onSearch : function ( op , callback ) { callback ( ) } , adapter : this . adapter , popup : this . searcherPane , height : 200 , masker : ! 1 , listeners : [ { eventName : BI . Searcher . EVENT _START , action : function ( ) { self . _showSearcherPane ( ) , self . _setStartValue ( "" ) , this . setValue ( BI . deepClone ( self . storeValue ) ) } } , { eventName : BI . Searcher . EVENT _STOP , action : function ( ) { self . _showAdapter ( ) , self . _setStartValue ( "" ) , self . adapter . setValue ( self . storeValue ) , self . adapter . populate ( ) } } , { eventName : BI . Searcher . EVENT _PAUSE , action : function ( ) { var keyword = this . getKeyword ( ) ; this . hasMatched ( ) && self . _join ( { type : BI . Selection . Multi , value : [ keyword ] } , function ( ) { self . storeValue . type === BI . Selection . Multi && BI . pushDistinct ( self . storeValue . value , keyword ) , self . _showAdapter ( ) , self . adapter . setValue ( self . storeValue ) , self . _setStartValue ( keyword ) , assertShowValue ( ) , self . adapter . populate ( ) , self . _setStartValue ( "" ) , self . fireEvent ( BI . MultiSelectInsertNoBarList . EVENT _CHANGE ) } ) } } , { eventName : BI . Searcher . EVENT _SEARCHING , action : function ( ) { var keywords = this . getKeywords ( ) , last = BI . last ( keywords ) ; keywords = BI . initial ( keywords || [ ] ) , keywords . length > 0 && self . _joinKeywords ( keywords , function ( ) { BI . isEndWithBlank ( last ) ? ( self . adapter . setValue ( self . storeValue ) , assertShowValue ( ) , self . adapter . populate ( ) , self . _setStartValue ( "" ) ) : ( self . adapter . setValue ( self . storeValue ) , assertShowValue ( ) ) , self . fireEvent ( BI . MultiSelectInsertNoBarList . EVENT _CHANGE ) } ) } } , { eventName : BI . Searcher . EVENT _CHANGE , action : function ( value , obj ) { obj instanceof BI . MultiSelectBar ? self . _joinAll ( this . getValue ( ) , function ( ) { assertShowValue ( ) , self . fireEvent ( BI . MultiSelectInsertNoBarList . EVENT _CHANGE ) } ) : self . _join ( this . getValue ( ) , function ( ) { assertShowValue ( ) , self . fireEvent ( BI . MultiSelectInsertNoBarList . EVENT _CHANGE ) } ) } } ] , value : { type : BI . Selection . Multi , value : o . value || [ ] } } ) , BI . createWidget ( { type : "bi.vtape" , element : this , items : [ { el : this . trigger , height : 24 } , { el : this . adapter , height : "fill" } ] } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . searcherPane , top : 30 , bottom : 0 , left : 0 , right : 0 } ] } ) } , _showAdapter : function ( ) { this . adapter . setVisible ( ! 0 ) , this . searcherPane . setVisible ( ! 1 ) } , _showSearcherPane : function ( ) { this . searcherPane . setVisible ( ! 0 ) , this . adapter . setVisible ( ! 1 ) } , _defaultState : function ( ) { this . trigger . stopEditing ( ) } , _assertValue : function ( val ) { val || ( val = { } ) , val . type || ( val . type = BI . Selection . Multi ) , val . value || ( val . value = [ ] ) } , _makeMap : function ( values ) { return BI . makeObject ( values || [ ] ) } , _joinKeywords : function ( keywords , callback ) { function digest ( items ) { var selectedMap = self . _makeMap ( items ) ; BI . each ( keywords , function ( i , val ) { BI . isNotNull ( selectedMap [ val ] ) && ( self . storeValue . type === BI . Selection . Multi ? BI . pushDistinct ( self . storeValue . value , val ) : BI . remove ( self . storeValue . value , val ) ) } ) , callback ( ) } var self = this , o = this . options ; this . _assertValue ( this . storeValue ) , o . itemsCreator ( { type : BI . MultiSelectInsertNoBarList . REQ _GET _ALL _DATA , keywords : keywords } , function ( ob ) { var values = BI . map ( ob . items , "value" ) ; digest ( values ) } ) } , _joinAll : function ( res , callback ) { var self = this , o = this . options ; this . _assertValue ( res ) , o . itemsCreator ( { type : BI . MultiSelectInsertNoBarList . REQ _GET _ALL _DATA , keywords : [ self . trigger . getKeyword ( ) ] } , function ( ob ) { var items = BI . map ( ob . items , "value" ) ; if ( self . storeValue . type === res . type ) { var change = ! 1 , map = self . _makeMap ( self . storeValue . value ) ; return BI . each ( items , function ( i , v ) { BI . isNotNull ( map [ v ] ) && ( change = ! 0 , delete map [ v ] ) } ) , change && ( self . storeValue . value = BI . values ( map ) ) , void callback ( ) } var selectedMap = self . _makeMap ( self . st
baseCls : "bi-multi-tree-list-combo" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , height : 24 , allowEdit : ! 0 , allowInsertValue : ! 0 } ) } , _init : function ( ) { function showCounter ( ) { isSearching ( ) ? self . storeValue = { value : self . trigger . getValue ( ) } : isPopupView ( ) && ( self . storeValue = { value : self . combo . getValue ( ) } ) , self . trigger . setValue ( self . storeValue ) , self . numberCounter . setValue ( self . storeValue ) } BI . MultiTreeListCombo . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options , isInit = ! 1 , want2showCounter = ! 1 ; this . storeValue = { value : o . value || [ ] } , this . trigger = BI . createWidget ( { type : "bi.multi_select_trigger" , allowEdit : o . allowEdit , text : o . text , watermark : o . watermark , height : o . height , valueFormatter : o . valueFormatter , masker : { offset : this . constants . offset } , searcher : { type : "bi.multi_list_tree_searcher" , itemsCreator : o . itemsCreator , popup : { type : o . allowInsertValue ? "bi.multi_tree_search_insert_pane" : "bi.multi_tree_search_pane" , el : { type : "bi.list_part_tree" } , listeners : [ { eventName : BI . MultiTreeSearchInsertPane . EVENT _ADD _ITEM , action : function ( ) { self . storeValue . value . unshift ( [ self . trigger . getSearcher ( ) . getKeyword ( ) ] ) , self . _assertShowValue ( ) , self . combo . setValue ( self . storeValue ) , self . numberCounter . setValue ( self . storeValue ) , self . _stopEditing ( ) } } ] } } , switcher : { el : { type : "bi.multi_tree_check_selected_button" } , popup : { type : "bi.multi_tree_check_pane" , el : { type : "bi.list_display_tree" } , itemsCreator : o . itemsCreator } } , value : { value : o . value || { } } } ) , this . combo = BI . createWidget ( { type : "bi.combo" , toggle : ! o . allowEdit , container : o . container , el : this . trigger , adjustLength : 1 , popup : { type : "bi.multi_tree_popup_view" , ref : function ( ) { self . popup = this , self . trigger . setAdapter ( this ) , self . numberCounter . setAdapter ( this ) } , el : { type : "bi.list_async_tree" } , listeners : [ { eventName : BI . MultiTreePopup . EVENT _AFTERINIT , action : function ( ) { self . numberCounter . adjustView ( ) , isInit = ! 0 , want2showCounter === ! 0 && showCounter ( ) } } , { eventName : BI . MultiTreePopup . EVENT _CHANGE , action : function ( ) { change = ! 0 ; var val = { type : BI . Selection . Multi , value : this . hasChecked ( ) ? this . getValue ( ) : [ ] } ; self . trigger . getSearcher ( ) . setState ( val ) , self . numberCounter . setButtonChecked ( val ) , self . fireEvent ( BI . MultiTreeListCombo . EVENT _CLICK _ITEM , self . combo . getValue ( ) ) } } , { eventName : BI . MultiTreePopup . EVENT _CLICK _CONFIRM , action : function ( ) { self . combo . hideView ( ) } } , { eventName : BI . MultiTreePopup . EVENT _CLICK _CLEAR , action : function ( ) { clear = ! 0 , self . setValue ( ) , self . _defaultState ( ) } } ] , itemsCreator : o . itemsCreator , onLoaded : function ( ) { BI . nextTick ( function ( ) { self . numberCounter . adjustView ( ) , self . trigger . getSearcher ( ) . adjustView ( ) } ) } } , value : { value : o . value || { } } , hideChecker : function ( e ) { return 0 === triggerBtn . element . find ( e . target ) . length && 0 === self . numberCounter . element . find ( e . target ) . length } } ) ; var change = ! 1 , clear = ! 1 , isSearching = function ( ) { return self . trigger . getSearcher ( ) . isSearching ( ) } , isPopupView = function ( ) { return self . combo . isViewVisible ( ) } ; this . trigger . on ( BI . MultiSelectTrigger . EVENT _FOCUS , function ( ) { self . fireEvent ( BI . MultiTreeListCombo . EVENT _FOCUS ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _BLUR , function ( ) { self . fireEvent ( BI . MultiTreeListCombo . EVENT _BLUR ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _START , function ( ) { self . storeValue = { value : self . combo . getValue ( ) } , this . setValue ( self . storeValue ) , self . numberCounter . setValue ( self . storeValue ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _STOP , function ( ) { self . storeValue = { value : this . getValue ( ) } , self . combo . setValue ( self . storeValue ) , self . numberCounter . setValue ( self . storeValue ) , BI . nextTick ( function ( ) { isPopupView ( ) && self . combo . populate ( ) } ) , self . fireEvent ( BI . MultiTreeListCombo . EVENT _STOP ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _SEARCHING , function ( ) { self . fireEvent ( BI . MultiTreeListCombo . EVENT _SEARCHING ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _TRIGGER _CLICK , function ( ) { self . combo . toggle ( ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _CHANGE , function ( ) { var checked = this . getSearcher ( ) . hasChecked ( ) , val = { type : BI . Selection . Multi , value : checked ? { 1 : 1 } : { } } ; this . getSearcher ( ) . setState ( checked ? BI . Selection . Multi : BI . Selection . None ) , self . numberCounter . setButtonChecked ( val ) , self . fireEvent ( BI . MultiTreeListCombo . EVENT _CLICK _ITEM , self . combo . getValue ( ) ) } ) , th
self . fireEvent ( BI . NumberInterval . EVENT _CONFIRM ) , self . fireEvent ( BI . NumberInterval . EVENT _VALID ) } } ) } , isStateValid : function ( ) { return "valid" === this . options . validation } , setMinEnable : function ( b ) { this . smallEditor . setEnable ( b ) } , setCloseMinEnable : function ( b ) { this . smallCombo . setEnable ( b ) } , setMaxEnable : function ( b ) { this . bigEditor . setEnable ( b ) } , setCloseMaxEnable : function ( b ) { this . bigCombo . setEnable ( b ) } , showNumTip : function ( ) { this . smallTip . setVisible ( ! 0 ) , this . bigTip . setVisible ( ! 0 ) } , hideNumTip : function ( ) { this . smallTip . setVisible ( ! 1 ) , this . bigTip . setVisible ( ! 1 ) } , setNumTip : function ( numTip ) { this . smallTip . setText ( numTip ) , this . bigTip . setText ( numTip ) } , getNumTip : function ( ) { return this . smallTip . getText ( ) } , setValue : function ( data ) { data = data || { } ; var self = this , combo _value ; ( BI . isNumeric ( data . min ) || BI . isEmptyString ( data . min ) ) && self . smallEditor . setValue ( data . min ) , BI . isNotNull ( data . min ) || self . smallEditor . setValue ( "" ) , ( BI . isNumeric ( data . max ) || BI . isEmptyString ( data . max ) ) && self . bigEditor . setValue ( data . max ) , BI . isNotNull ( data . max ) || self . bigEditor . setValue ( "" ) , BI . isNull ( data . closeMin ) || ( combo _value = data . closeMin === ! 0 ? 1 : 0 , self . smallCombo . setValue ( combo _value ) ) , BI . isNull ( data . closeMax ) || ( combo _value = data . closeMax === ! 0 ? 1 : 0 , self . bigCombo . setValue ( combo _value ) ) , this . _checkValidation ( ) } , getValue : function ( ) { var self = this , value = { } , minComboValue = self . smallCombo . getValue ( ) , maxComboValue = self . bigCombo . getValue ( ) ; return value . min = self . smallEditor . getValue ( ) , value . max = self . bigEditor . getValue ( ) , 0 === minComboValue [ 0 ] ? value . closeMin = ! 1 : value . closeMin = ! 0 , 0 === maxComboValue [ 0 ] ? value . closeMax = ! 1 : value . closeMax = ! 0 , value } , destroyed : function ( ) { var c = this . constants ; BI . Bubbles . remove ( c . typeError ) , BI . Bubbles . remove ( c . numberError ) , BI . Bubbles . remove ( c . signalError ) } } ) , BI . NumberInterval . EVENT _CHANGE = "EVENT_CHANGE" , BI . NumberInterval . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . NumberInterval . EVENT _VALID = "EVENT_VALID" , BI . NumberInterval . EVENT _ERROR = "EVENT_ERROR" , BI . shortcut ( "bi.number_interval" , BI . NumberInterval ) , BI . NumberIntervalSingleEidtor = BI . inherit ( BI . Single , { props : { baseCls : "bi-number-interval-single-editor" , tipType : "success" , title : "" } , render : function ( ) { var self = this , o = this . options ; return { type : "bi.vertical" , items : [ { type : "bi.editor" , ref : function ( _ref ) { self . editor = _ref } , height : o . height - 2 , watermark : o . watermark , allowBlank : o . allowBlank , value : o . value , level : o . level , quitChecker : o . quitChecker , validationChecker : o . validationChecker , listeners : [ { eventName : BI . Editor . EVENT _ERROR , action : function ( ) { self . fireEvent ( BI . NumberIntervalSingleEidtor . EVENT _ERROR , arguments ) } } , { eventName : BI . Editor . EVENT _FOCUS , action : function ( ) { self . fireEvent ( BI . NumberIntervalSingleEidtor . EVENT _FOCUS , arguments ) } } , { eventName : BI . Editor . EVENT _BLUR , action : function ( ) { self . fireEvent ( BI . NumberIntervalSingleEidtor . EVENT _BLUR , arguments ) } } , { eventName : BI . Editor . EVENT _VALID , action : function ( ) { self . fireEvent ( BI . NumberIntervalSingleEidtor . EVENT _VALID , arguments ) } } , { eventName : BI . Editor . EVENT _CHANGE , action : function ( ) { self . fireEvent ( BI . NumberIntervalSingleEidtor . EVENT _CHANGE , arguments ) } } , { eventName : BI . Editor . EVENT _CONFIRM , action : function ( ) { self . fireEvent ( BI . NumberIntervalSingleEidtor . EVENT _CONFIRM , arguments ) } } , { eventName : BI . Editor . EVENT _CHANGE _CONFIRM , action : function ( ) { self . fireEvent ( BI . NumberIntervalSingleEidtor . EVENT _CHANGE _CONFIRM , arguments ) } } ] } ] } } , isValid : function ( ) { return this . editor . isValid ( ) } , getValue : function ( ) { return this . editor . getValue ( ) } , setTitle : function ( v ) { return this . editor . setTitle ( v ) } , setValue : function ( v ) { return this . editor . setValue ( v ) } } ) , BI . NumberIntervalSingleEidtor . EVENT _FOCUS = "EVENT_FOCUS" , BI . NumberIntervalSingleEidtor . EVENT _BLUR = "EVENT_BLUR" , BI . NumberIntervalSingleEidtor . EVENT _ERROR = "EVENT_ERROR" , BI . NumberIntervalSingleEidtor . EVENT _VALID = "EVENT_VALID" , BI . NumberIntervalSingleEidtor . EVENT _CHANGE = "EVENT_CHANGE" , BI . NumberIntervalSingleEidtor . EVENT _CHANGE _CONFIRM = "EVENT_CHANGE_CONFIRM" , BI . NumberIntervalSingleEidtor . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . shortcut ( "bi.number_interval_single_editor" , BI . NumberIntervalSingleEidtor ) , BI . SearchMultiTextValueCombo = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . SearchMultiTextValueCombo . supe
this . checkbox = BI . createWidget ( { type : "bi.tree_node_checkbox" , stopPropagation : ! 0 } ) , this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : o . height , height : o . height , hgap : o . hgap , text : o . text , value : o . value , keyword : o . keyword , py : o . py } ) , this . checkbox . on ( BI . Controller . EVENT _CHANGE , function ( type ) { type === BI . Events . CLICK && ( this . isSelected ( ) ? self . triggerExpand ( ) : self . triggerCollapse ( ) ) } ) ; var type = BI . LogicFactory . createLogicTypeByDirection ( BI . Direction . Left ) , items = BI . LogicFactory . createLogicItemsByDirection ( BI . Direction . Left , { width : 24 , el : this . checkbox } , this . text ) ; BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( type , BI . extend ( o . logic , { items : items } ) ) ) ) } , isOnce : function ( ) { return ! 0 } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . NodeButton . superclass . doClick . apply ( this , arguments ) } , setOpened : function ( v ) { BI . SelectTreePlusGroupNode . superclass . setOpened . apply ( this , arguments ) , BI . isNotNull ( this . checkbox ) && this . checkbox . setSelected ( v ) } } ) , BI . shortcut ( "bi.select_tree_plus_group_node" , BI . SelectTreePlusGroupNode ) , BI . SelectTreeCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SelectTreeCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-select-tree-combo" , height : 24 , text : "" , items : [ ] , value : "" , attributes : { tabIndex : 0 } } ) } , _init : function ( ) { BI . SelectTreeCombo . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . trigger = BI . createWidget ( { type : "bi.single_tree_trigger" , text : o . text , height : o . height , items : o . items , value : o . value } ) , this . popup = BI . createWidget ( { type : "bi.select_level_tree" , items : o . items , value : o . value } ) , this . combo = BI . createWidget ( { type : "bi.combo" , container : o . container , element : this , adjustLength : 2 , el : this . trigger , popup : { el : this . popup } } ) , this . combo . on ( BI . Controller . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . popup . on ( BI . SingleTreePopup . EVENT _CHANGE , function ( ) { self . setValue ( self . popup . getValue ( ) ) , self . combo . hideView ( ) } ) } , setValue : function ( v ) { v = BI . isArray ( v ) ? v : [ v ] , this . trigger . setValue ( v ) , this . popup . setValue ( v ) } , getValue : function ( ) { return this . popup . getValue ( ) } , populate : function ( items ) { this . combo . populate ( items ) } } ) , BI . shortcut ( "bi.select_tree_combo" , BI . SelectTreeCombo ) , BI . SelectTreeExpander = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SelectTreeExpander . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-select-tree-expander" , trigger : "" , toggle : ! 0 , direction : "bottom" , isDefaultInit : ! 0 , el : { } , popup : { } } ) } , _init : function ( ) { BI . SelectTreeExpander . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . trigger = BI . createWidget ( o . el ) , this . trigger . on ( BI . Controller . EVENT _CHANGE , function ( type ) { type === BI . Events . CLICK && this . isSelected ( ) && self . expander . setValue ( [ ] ) , self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . expander = BI . createWidget ( { type : "bi.expander" , element : this , trigger : o . trigger , toggle : o . toggle , direction : o . direction , isDefaultInit : o . isDefaultInit , el : this . trigger , popup : o . popup } ) , this . expander . on ( BI . Controller . EVENT _CHANGE , function ( type ) { type === BI . Events . CLICK && self . trigger . setSelected ( ! 1 ) , self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) } , getAllLeaves : function ( ) { return this . expander . getAllLeaves ( ) } , setValue : function ( v ) { BI . contains ( v , this . trigger . getValue ( ) ) ? ( this . trigger . setSelected ( ! 0 ) , this . expander . setValue ( [ ] ) ) : ( this . trigger . setSelected ( ! 1 ) , this . expander . setValue ( v ) ) } , getValue : function ( ) { return this . trigger . isSelected ( ) ? [ this . trigger . getValue ( ) ] : this . expander . getValue ( ) } , populate : function ( items ) { this . expander . populate ( items ) } } ) , BI . shortcut ( "bi.select_tree_expander" , BI . SelectTreeExpander ) , BI . SelectTreePopup = BI . inherit ( BI . Pane , { _defaultConfig : function ( ) { return BI . extend ( BI . SelectTreePopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-select-level-tree" , tipText : BI . i18nText ( "BI-No_Selected_Item" ) , items : [ ] , value : "" } ) } , _formatItems : function ( nodes , layer , pNode ) { var self = this ; return BI . each ( nodes , function ( i , node ) { var extend = { layer : lay
maxWidth : "auto" , minWidth : 135 , maxHeight : 400 , valueFormatter : BI . emptyFn , itemsCreator : BI . emptyFn , onLoaded : BI . emptyFn } ) } , _init : function ( ) { BI . SingleSelectPopupView . superclass . _init . apply ( this , arguments ) ; var self = this , opts = this . options ; this . loader = BI . createWidget ( { type : "bi.single_select_loader" , allowNoSelect : opts . allowNoSelect , itemsCreator : opts . itemsCreator , valueFormatter : opts . valueFormatter , onLoaded : opts . onLoaded , value : opts . value } ) , this . popupView = BI . createWidget ( { type : "bi.popup_view" , stopPropagation : ! 1 , maxWidth : opts . maxWidth , minWidth : opts . minWidth , maxHeight : opts . maxHeight , element : this , el : this . loader , value : opts . value } ) , this . popupView . on ( BI . MultiPopupView . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . SingleSelectPopupView . EVENT _CHANGE ) } ) } , setStartValue : function ( v ) { this . loader . setStartValue ( v ) } , setValue : function ( v ) { this . popupView . setValue ( v ) } , getValue : function ( ) { return this . popupView . getValue ( ) } , populate : function ( items ) { this . popupView . populate . apply ( this . popupView , arguments ) } , resetHeight : function ( h ) { this . popupView . resetHeight ( h ) } , resetWidth : function ( w ) { this . popupView . resetWidth ( w ) } } ) , BI . SingleSelectPopupView . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.single_select_popup_view" , BI . SingleSelectPopupView ) , BI . SingleSelectTrigger = BI . inherit ( BI . Trigger , { constants : { height : 14 , rgap : 4 , lgap : 4 } , _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-select-trigger bi-border bi-border-radius" , allowNoSelect : ! 1 , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , searcher : { } , switcher : { } , adapter : null , masker : { } , allowEdit : ! 0 } ) } , _init : function ( ) { BI . SingleSelectTrigger . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; o . height && this . setHeight ( o . height - 2 ) , this . searcher = BI . createWidget ( o . searcher , { type : "bi.single_select_searcher" , allowNoSelect : o . allowNoSelect , text : o . text , height : o . height , itemsCreator : o . itemsCreator , valueFormatter : o . valueFormatter , popup : { } , adapter : o . adapter , masker : o . masker , value : o . value } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _START , function ( ) { self . fireEvent ( BI . SingleSelectTrigger . EVENT _START ) } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _PAUSE , function ( ) { self . fireEvent ( BI . SingleSelectTrigger . EVENT _PAUSE ) } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _SEARCHING , function ( ) { self . fireEvent ( BI . SingleSelectTrigger . EVENT _SEARCHING , arguments ) } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _STOP , function ( ) { self . fireEvent ( BI . SingleSelectTrigger . EVENT _STOP ) } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . SingleSelectTrigger . EVENT _CHANGE , arguments ) } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _FOCUS , function ( ) { self . fireEvent ( BI . SingleSelectTrigger . EVENT _FOCUS ) } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _BLUR , function ( ) { self . fireEvent ( BI . SingleSelectTrigger . EVENT _BLUR , arguments ) } ) ; var wrapper = BI . createWidget ( { type : "bi.htape" , element : this , items : [ { el : this . searcher , width : "fill" } , { el : BI . createWidget ( ) , width : 24 } ] } ) ; ! o . allowEdit && BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.layout" } , left : 0 , right : 24 , top : 0 , bottom : 0 } ] } ) } , getSearcher : function ( ) { return this . searcher } , stopEditing : function ( ) { this . searcher . stopSearch ( ) } , setAdapter : function ( adapter ) { this . searcher . setAdapter ( adapter ) } , setValue : function ( v ) { this . searcher . setValue ( v ) } , getKey : function ( ) { return this . searcher . getKey ( ) } , getValue : function ( ) { return this . searcher . getValue ( ) } } ) , BI . SingleSelectTrigger . EVENT _TRIGGER _CLICK = "EVENT_TRIGGER_CLICK" , BI . SingleSelectTrigger . EVENT _COUNTER _CLICK = "EVENT_COUNTER_CLICK" , BI . SingleSelectTrigger . EVENT _CHANGE = "EVENT_CHANGE" , BI . SingleSelectTrigger . EVENT _START = "EVENT_START" , BI . SingleSelectTrigger . EVENT _STOP = "EVENT_STOP" , BI . SingleSelectTrigger . EVENT _PAUSE = "EVENT_PAUSE" , BI . SingleSelectTrigger . EVENT _SEARCHING = "EVENT_SEARCHING" , BI . SingleSelectTrigger . EVENT _BEFORE _COUNTER _POPUPVIEW = "EVENT_BEFORE_COUNTER_POPUPVIEW" , BI . SingleSelectTrigger . EVENT _FOCUS = "EVENT_FOCUS" , BI . SingleSelectTrigger . EVENT _BLUR = "EVENT_BLUR" , BI . shortcut ( "bi.single_select_trigger" , BI . SingleSelectTrigger ) , BI . SingleSelectInsertList = BI . inherit ( BI . Sin
} , window ) ; widget . element . on ( "mousedown" , function ( event ) { widget . isEnabled ( ) && ( defaultSize = this . offsetLeft , optimizeSize ( defaultSize ) , mouseMoveTracker . captureMouseMoves ( event ) ) } ) } , _createTrack : function ( ) { var self = this , c = this . _constant ; return this . grayTrack = BI . createWidget ( { type : "bi.layout" , cls : "gray-track" , height : 6 } ) , this . blueTrack = BI . createWidget ( { type : "bi.layout" , cls : "blue-track bi-high-light-background" , height : 6 } ) , this . options . color && this . blueTrack . element . css ( { "background-color" : this . options . color } ) , { type : "bi.absolute" , items : [ { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : this . grayTrack , top : 0 , left : 0 , width : "100%" } , { el : this . blueTrack , top : 0 , left : 0 , width : "0%" } ] } ] , hgap : 8 , height : 8 } , top : 8 , left : 0 , width : "100%" } ] , ref : function ( ref ) { self . track = ref } } } , _checkValidation : function ( v ) { return ! ( BI . isNull ( v ) || v < this . min || v > this . max ) } , _setBlueTrack : function ( percent ) { this . blueTrack . element . css ( { width : percent + "%" } ) } , _setSliderPosition : function ( percent ) { this . slider . element . css ( { left : percent + "%" } ) } , _setAllPosition : function ( percent ) { this . _setSliderPosition ( percent ) , this . _setBlueTrack ( percent ) } , _setVisible : function ( visible ) { this . slider . setVisible ( visible ) } , _getGrayTrackLength : function ( ) { return this . grayTrack . element [ 0 ] . scrollWidth } , _getValueByPercent : function ( percent ) { var thousandth = BI . parseInt ( 10 * percent ) ; return ( this . max - this . min ) * thousandth / 1e3 + this . min } , _getPercentByValue : function ( v ) { return 100 * ( v - this . min ) / ( this . max - this . min ) } , _setEnable : function ( b ) { BI . SingleSliderNormal . superclass . _setEnable . apply ( this , [ b ] ) , b ? this . blueTrack . element . removeClass ( "disabled-blue-track" ) . addClass ( "blue-track" ) : this . blueTrack . element . removeClass ( "blue-track" ) . addClass ( "disabled-blue-track" ) } , getValue : function ( ) { return this . value } , setValue : function ( v ) { var value = BI . parseFloat ( v ) ; isNaN ( value ) || ( this . _checkValidation ( value ) && ( this . value = value ) , value > this . max && ( this . value = this . max ) , value < this . min && ( this . value = this . min ) ) } , setMinAndMax : function ( v ) { var minNumber = BI . parseFloat ( v . min ) , maxNumber = BI . parseFloat ( v . max ) ; ! isNaN ( minNumber ) && ! isNaN ( maxNumber ) && maxNumber > minNumber && ( this . min = minNumber , this . max = maxNumber ) } , reset : function ( ) { this . _setVisible ( ! 1 ) , this . enable = ! 1 , this . value = "" , this . min = 0 , this . max = 0 , this . _setBlueTrack ( 0 ) } , populate : function ( ) { isNaN ( this . min ) || isNaN ( this . max ) || ( this . _setVisible ( ! 0 ) , this . enable = ! 0 , BI . isNumeric ( this . value ) || BI . isNotEmptyString ( this . value ) ? this . _setAllPosition ( this . _getPercentByValue ( this . value ) ) : this . _setAllPosition ( 100 ) ) } } ) , BI . SingleSliderNormal . EVENT _DRAG = "EVENT_DRAG" , BI . shortcut ( "bi.single_slider_normal" , BI . SingleSliderNormal ) , BI . SingleTreeCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleTreeCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-tree-combo" , trigger : { } , height : 24 , text : "" , items : [ ] , value : "" , attributes : { tabIndex : 0 } } ) } , _init : function ( ) { BI . SingleTreeCombo . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . trigger = BI . createWidget ( BI . extend ( { type : "bi.single_tree_trigger" , text : o . text , height : o . height , items : o . items , value : o . value } , o . trigger ) ) , this . popup = BI . createWidget ( { type : "bi.single_level_tree" , items : o . items , value : o . value } ) , this . combo = BI . createWidget ( { type : "bi.combo" , container : o . container , element : this , adjustLength : 2 , el : this . trigger , popup : { el : this . popup } } ) , this . combo . on ( BI . Controller . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { self . fireEvent ( BI . SingleTreeCombo . EVENT _BEFORE _POPUPVIEW , arguments ) } ) , this . popup . on ( BI . SingleTreePopup . EVENT _CHANGE , function ( ) { self . setValue ( self . popup . getValue ( ) ) , self . combo . hideView ( ) , self . fireEvent ( BI . SingleTreeCombo . EVENT _CHANGE ) } ) } , populate : function ( items ) { this . combo . populate ( items ) } , setValue : function ( v ) { v = BI . isArray ( v ) ? v : [ v ] , this . trigger . setValue ( v ) , this . popup . setValue ( v ) } , getValue : function ( ) { return this . popup . getValue ( ) } } ) , BI . SingleTreeCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . SingleTreeCombo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . shortcut ( "bi.single_tree_combo" , BI . SingleTreeCombo ) , BI . SingleTreePopup = BI . inherit ( BI . Pane , { _d
this . _checkLeftValid ( ) , this . _checkRightValid ( ) } } ) , BI . StaticYearCard . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.static_year_card" , BI . StaticYearCard ) , BI . DynamicYearCombo = BI . inherit ( BI . Widget , { props : { baseCls : "bi-year-combo bi-border bi-focus-shadow" , behaviors : { } , min : "1900-01-01" , max : "2099-12-31" , height : 22 } , _init : function ( ) { BI . DynamicYearCombo . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . storeValue = o . value , this . trigger = BI . createWidget ( { type : "bi.dynamic_year_trigger" , min : o . min , max : o . max , height : o . height , value : o . value || "" } ) , this . trigger . on ( BI . DynamicYearTrigger . EVENT _FOCUS , function ( ) { self . storeTriggerValue = this . getKey ( ) } ) , this . trigger . on ( BI . DynamicYearTrigger . EVENT _START , function ( ) { self . combo . isViewVisible ( ) && self . combo . hideView ( ) } ) , this . trigger . on ( BI . DynamicYearTrigger . EVENT _STOP , function ( ) { self . combo . showView ( ) } ) , this . trigger . on ( BI . DynamicYearTrigger . EVENT _ERROR , function ( ) { self . combo . isViewVisible ( ) && self . combo . hideView ( ) } ) , this . trigger . on ( BI . DynamicYearTrigger . EVENT _CONFIRM , function ( ) { self . combo . isViewVisible ( ) || ( this . getKey ( ) && this . getKey ( ) !== self . storeTriggerValue ? ( self . storeValue = self . trigger . getValue ( ) , self . setValue ( self . storeValue ) ) : this . getKey ( ) || ( self . storeValue = null , self . setValue ( ) ) , self . _checkDynamicValue ( self . storeValue ) , self . fireEvent ( BI . DynamicYearCombo . EVENT _CONFIRM ) ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , container : o . container , isNeedAdjustHeight : ! 1 , isNeedAdjustWidth : ! 1 , el : this . trigger , popup : { minWidth : 85 , stopPropagation : ! 1 , el : { type : "bi.dynamic_year_popup" , ref : function ( ) { self . popup = this } , listeners : [ { eventName : BI . DynamicYearPopup . EVENT _CHANGE , action : function ( ) { self . setValue ( self . popup . getValue ( ) ) , self . combo . hideView ( ) , self . fireEvent ( BI . DynamicYearCombo . EVENT _CONFIRM ) } } , { eventName : BI . DynamicYearPopup . BUTTON _CLEAR _EVENT _CHANGE , action : function ( ) { self . setValue ( ) , self . combo . hideView ( ) , self . fireEvent ( BI . DynamicYearCombo . EVENT _CONFIRM ) } } , { eventName : BI . DynamicYearPopup . BUTTON _lABEL _EVENT _CHANGE , action : function ( ) { var date = BI . getDate ( ) ; self . setValue ( { type : BI . DynamicYearCombo . Static , value : { year : date . getFullYear ( ) } } ) , self . combo . hideView ( ) , self . fireEvent ( BI . DynamicDateCombo . EVENT _CONFIRM ) } } , { eventName : BI . DynamicYearPopup . BUTTON _OK _EVENT _CHANGE , action : function ( ) { self . setValue ( self . popup . getValue ( ) ) , self . combo . hideView ( ) , self . fireEvent ( BI . DynamicDateCombo . EVENT _CONFIRM ) } } ] , behaviors : o . behaviors , min : o . min , max : o . max } , value : o . value || "" } } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { self . popup . setValue ( self . storeValue ) , self . fireEvent ( BI . DynamicYearCombo . EVENT _BEFORE _POPUPVIEW ) } ) , BI . createWidget ( { type : "bi.htape" , element : this , ref : function ( ) { self . comboWrapper = this } , items : [ { el : { type : "bi.icon_button" , cls : "bi-trigger-icon-button date-change-h-font" , width : 24 , height : 24 , ref : function ( ) { self . changeIcon = this } } , width : 24 } , this . combo ] } ) , this . _checkDynamicValue ( o . value ) } , _checkDynamicValue : function ( v ) { var type = null ; switch ( BI . isNotNull ( v ) && ( type = v . type ) , type ) { case BI . DynamicYearCombo . Dynamic : this . changeIcon . setVisible ( ! 0 ) , this . comboWrapper . attr ( "items" ) [ 0 ] . width = 24 , this . comboWrapper . resize ( ) ; break ; default : this . comboWrapper . attr ( "items" ) [ 0 ] . width = 0 , this . comboWrapper . resize ( ) , this . changeIcon . setVisible ( ! 1 ) } } , setValue : function ( v ) { this . storeValue = v , this . trigger . setValue ( v ) , this . _checkDynamicValue ( v ) } , getValue : function ( ) { return this . storeValue } } ) , BI . DynamicYearCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . DynamicYearCombo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . shortcut ( "bi.dynamic_year_combo" , BI . DynamicYearCombo ) , BI . extend ( BI . DynamicYearCombo , { Static : 1 , Dynamic : 2 } ) , BI . DynamicYearPopup = BI . inherit ( BI . Widget , { constants : { tabHeight : 30 , buttonHeight : 24 } , props : { baseCls : "bi-year-popup" , behaviors : { } , min : "1900-01-01" , max : "2099-12-31" , width : 180 , height : 240 } , render : function ( ) { var self = this , opts = this . options , c = this . constants ; return this . storeValue = { type : BI . DynamicYearCombo . Static } , { type : "bi.vtape" , items : [ { el : this . _getTabJson ( ) } , { el : { type : "bi.grid" , items : [ [ { type : "bi.text_button" , cls : "bi-split-top bi-high-light" , textHeight : c . buttonHeight - 1 , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_Clear" ) , listeners : [ { eventName : BI . TextButto
} ) , combo } , _dateCheck : function ( date ) { return BI . print ( BI . parseDateTime ( date , "%Y-%x" ) , "%Y-%x" ) === date || BI . print ( BI . parseDateTime ( date , "%Y-%X" ) , "%Y-%X" ) === date } , _checkVoid : function ( obj ) { var o = this . options ; return ! BI . checkDateVoid ( obj . year , obj . month , 1 , o . minDate , o . maxDate ) [ 0 ] } , _check : function ( smallDate , bigDate ) { var smallObj = smallDate . match ( /\d+/g ) , bigObj = bigDate . match ( /\d+/g ) , smallDate4Check = "" ; BI . isNotNull ( smallObj ) && ( smallDate4Check = ( smallObj [ 0 ] || "" ) + "-" + ( smallObj [ 1 ] || 1 ) ) ; var bigDate4Check = "" ; return BI . isNotNull ( bigObj ) && ( bigDate4Check = ( bigObj [ 0 ] || "" ) + "-" + ( bigObj [ 1 ] || 1 ) ) , this . _dateCheck ( smallDate4Check ) && BI . checkDateLegal ( smallDate ) && this . _checkVoid ( { year : smallObj [ 0 ] , month : smallObj [ 1 ] , day : 1 } ) && this . _dateCheck ( bigDate4Check ) && BI . checkDateLegal ( bigDate ) && this . _checkVoid ( { year : bigObj [ 0 ] , month : bigObj [ 1 ] , day : 1 } ) } , _compare : function ( smallDate , bigDate ) { return smallDate = BI . print ( BI . parseDateTime ( smallDate , "%Y-%X" ) , "%Y-%X" ) , bigDate = BI . print ( BI . parseDateTime ( bigDate , "%Y-%X" ) , "%Y-%X" ) , BI . isNotNull ( smallDate ) && BI . isNotNull ( bigDate ) && smallDate > bigDate } , _setTitle : function ( v ) { this . setTitle ( v ) } , _clearTitle : function ( ) { this . setTitle ( "" ) } , _checkValid : function ( ) { var self = this ; BI . Bubbles . hide ( "error" ) ; var smallDate = self . left . getKey ( ) , bigDate = self . right . getKey ( ) ; self . left . isValid ( ) && self . right . isValid ( ) && self . _check ( smallDate , bigDate ) && self . _compare ( smallDate , bigDate ) ? ( self . _setTitle ( BI . i18nText ( "BI-Time_Interval_Error_Text" ) ) , self . element . addClass ( self . constants . timeErrorCls ) , BI . Bubbles . show ( "error" , BI . i18nText ( "BI-Time_Interval_Error_Text" ) , self , { offsetStyle : "center" } ) , self . fireEvent ( BI . YearMonthInterval . EVENT _ERROR ) ) : ( self . _clearTitle ( ) , self . element . removeClass ( self . constants . timeErrorCls ) ) } , setValue : function ( date ) { date = date || { } , this . left . setValue ( date . start ) , this . right . setValue ( date . end ) , this . _checkValid ( ) } , getValue : function ( ) { return { start : this . left . getValue ( ) , end : this . right . getValue ( ) } } } ) , BI . YearMonthInterval . EVENT _VALID = "EVENT_VALID" , BI . YearMonthInterval . EVENT _ERROR = "EVENT_ERROR" , BI . YearMonthInterval . EVENT _CHANGE = "EVENT_CHANGE" , BI . YearMonthInterval . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . shortcut ( "bi.year_month_interval" , BI . YearMonthInterval ) , BI . DynamicYearQuarterCard = BI . inherit ( BI . Widget , { props : { baseCls : "bi-year-month-card" } , render : function ( ) { var self = this ; return { type : "bi.vertical" , items : [ { type : "bi.label" , text : BI . i18nText ( "BI-Multi_Date_Relative_Current_Time" ) , textAlign : "left" , height : 24 } , { type : "bi.dynamic_date_param_item" , ref : function ( ) { self . year = this } , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { self . fireEvent ( "EVENT_CHANGE" ) } } ] } , { type : "bi.dynamic_date_param_item" , dateType : BI . DynamicDateCard . TYPE . QUARTER , ref : function ( ) { self . quarter = this } , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { self . fireEvent ( "EVENT_CHANGE" ) } } ] } ] , vgap : 10 , hgap : 10 } } , _createValue : function ( type , v ) { return { dateType : type , value : Math . abs ( v ) , offset : v > 0 ? 1 : 0 } } , setValue : function ( v ) { v = v || { year : 0 , month : 0 } , this . year . setValue ( this . _createValue ( BI . DynamicDateCard . TYPE . YEAR , v . year ) ) , this . quarter . setValue ( this . _createValue ( BI . DynamicDateCard . TYPE . QUARTER , v . quarter ) ) } , getValue : function ( ) { var year = this . year . getValue ( ) , quarter = this . quarter . getValue ( ) ; return { year : 0 === year . offset ? - year . value : year . value , quarter : 0 === quarter . offset ? - quarter . value : quarter . value } } } ) , BI . DynamicYearQuarterCard . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.dynamic_year_quarter_card" , BI . DynamicYearQuarterCard ) , BI . StaticYearQuarterCard = BI . inherit ( BI . Widget , { props : { baseCls : "bi-static-year-quarter-card" , behaviors : { } } , _createQuarter : function ( ) { var items = [ { text : BI . Date . _QN [ 1 ] , value : 1 } , { text : BI . Date . _QN [ 2 ] , value : 2 } , { text : BI . Date . _QN [ 3 ] , value : 3 } , { text : BI . Date . _QN [ 4 ] , value : 4 } ] ; return BI . map ( items , function ( j , item ) { return BI . extend ( item , { type : "bi.text_item" , cls : "bi-list-item-select" , textAlign : "center" , whiteSpace : "nowrap" , once : ! 1 , forceSelected : ! 0 , height : 24 } ) } ) } , render : function ( ) { var self = this , o = this . options ; return { type : "bi.vertical" , items : [ { type : "bi.year_picker" , ref : function ( ) { self . yearPicker = this } , behaviors : o . behaviors , height : 30 , listeners : [ { eventName : BI . YearPicker . EVENT _CHANGE , action : function ( ) { var v
BI . nextTick ( function ( ) { callback ( { hasNext : output . length > self . _const . perPage , items : result , lastSearchValue : BI . last ( output ) } ) } ) } , _reqTreeNode : function ( op , callback ) { function judgeState ( parentValues , selected _value , checkState ) { var checked = checkState . checked , half = checkState . half ; return ! ( parentValues . length > 0 && ! checked ) && ( 0 === parentValues . length || checked && half && ! BI . isEmpty ( selected _value ) ) } function dealWithSelectedValue ( parentValues , selectedValues ) { var valueMap = { } ; return BI . each ( parentValues , function ( i , v ) { selectedValues = selectedValues [ v ] || { } } ) , BI . each ( selectedValues , function ( value , obj ) { if ( BI . isNull ( obj ) ) return void ( valueMap [ value ] = [ 0 , 0 ] ) ; if ( BI . isEmpty ( obj ) ) return void ( valueMap [ value ] = [ 2 , 0 ] ) ; var nextNames = { } ; BI . each ( obj , function ( t , o ) { ( BI . isNull ( o ) || BI . isEmpty ( o ) ) && ( nextNames [ t ] = ! 0 ) } ) , valueMap [ value ] = [ 1 , BI . size ( nextNames ) ] } ) , valueMap } function getCheckState ( current , parentValues , valueMap , checkState ) { var checked = checkState . checked , half = checkState . half , tempCheck = ! 1 , halfCheck = ! 1 ; if ( BI . has ( valueMap , current ) ) if ( 1 === valueMap [ current ] [ 0 ] ) { var values = BI . clone ( parentValues ) ; values . push ( current ) ; var childCount = self . _getChildCount ( values ) ; childCount > 0 && childCount !== valueMap [ current ] [ 1 ] && ( halfCheck = ! 0 ) } else 2 === valueMap [ current ] [ 0 ] && ( tempCheck = ! 0 ) ; var check ; return check = checked || halfCheck || tempCheck ? ( tempCheck || checked ) && ! half || BI . has ( valueMap , current ) : BI . has ( valueMap , current ) , [ check , halfCheck ] } var self = this , o = this . options , result = [ ] , times = op . times , checkState = op . checkState || { } , parentValues = op . parentValues || [ ] , selectedValues = op . selectedValues || { } , valueMap = { } ; valueMap = dealWithSelectedValue ( parentValues , selectedValues ) ; for ( var nodes = this . _getChildren ( parentValues ) , i = ( times - 1 ) * this . _const . perPage ; nodes [ i ] && i < times * this . _const . perPage ; i ++ ) { var state = getCheckState ( nodes [ i ] . value , parentValues , valueMap , checkState ) ; result . push ( { id : nodes [ i ] . id , pId : nodes [ i ] . pId , value : nodes [ i ] . value , text : nodes [ i ] . text , times : 1 , isParent : nodes [ i ] . getChildrenLength ( ) > 0 , checked : state [ 0 ] , halfCheck : state [ 1 ] , open : o . open } ) } if ( o . open ) { var allNodes = [ ] ; BI . each ( nodes , function ( idx , node ) { allNodes = BI . concat ( allNodes , self . _getAllChildren ( parentValues . concat ( [ node . value ] ) ) ) } ) , BI . each ( allNodes , function ( idx , node ) { var valueMap = dealWithSelectedValue ( node . parentValues , selectedValues ) , parentCheckState = { } , find = BI . find ( result , function ( idx , pNode ) { return pNode . id === node . pId } ) ; find && ( parentCheckState . checked = ! find . halfCheck && find . checked , parentCheckState . half = find . halfCheck ) ; var state = getCheckState ( node . value , node . parentValues , valueMap , parentCheckState ) ; result . push ( { id : node . id , pId : node . pId , value : node . value , text : node . text , times : 1 , isParent : node . getChildrenLength ( ) > 0 , checked : state [ 0 ] , halfCheck : state [ 1 ] , open : self . options . open } ) } ) } 0 === parentValues . length && 1 === times && ( result = BI . concat ( self . _getAddedValueNode ( parentValues , selectedValues ) , result ) ) , BI . nextTick ( function ( ) { callback ( { items : result , hasNext : nodes . length > times * self . _const . perPage } ) } ) } , _getAddedValueNode : function ( parentValues , selectedValues ) { var nodes = this . _getChildren ( parentValues ) ; return BI . map ( BI . difference ( BI . keys ( selectedValues ) , BI . map ( nodes , "value" ) ) , function ( idx , v ) { return { id : BI . UUID ( ) , pId : nodes . length > 0 ? nodes [ 0 ] . pId : BI . UUID ( ) , value : v , text : v , times : 1 , isParent : ! 1 , checked : ! 0 , halfCheck : ! 1 } } ) } , _getNode : function ( selectedValues , parentValues ) { for ( var pNode = selectedValues , i = 0 , len = parentValues . length ; i < len ; i ++ ) { if ( null == pNode ) return null ; pNode = pNode [ parentValues [ i ] ] } return pNode } , _deleteNode : function ( selectedValues , values ) { var name = values [ values . length - 1 ] , p = values . slice ( 0 , values . length - 1 ) , pNode = this . _getNode ( selectedValues , p ) ; if ( null != pNode && pNode [ name ] ) for ( delete pNode [ name ] ; p . length > 0 && BI . isEmpty ( pNode ) ; ) name = p [ p . length - 1 ] , p = p . slice ( 0 , p . length - 1 ) , pNode = this . _getNode ( selectedValues , p ) , null != pNode && delete pNode [ name ] } , _buildTree : function ( jo , values ) { var t = jo ; BI . each ( values , function ( i , v ) { BI . has ( t , v ) || ( t [ v ] = { } ) , t = t [ v ] } ) } , _isMatch : function ( parentValues , value , keyword ) { var o = this . options , node = this . _getTreeNode ( parentValues , value ) ; if ( ! node ) return ! 1 ; var find = BI . Func . getSearchResult ( [ node . text || node . value ] , keyword ) ; if ( o . allowSearchValue && node . value ) { var valueFind = B
} var addEventListener = _global . addEventListener || function ( eventName , listener ) { return attachEvent ( "on" + eventName , listener ) } ; if ( this . _hasPushState ? addEventListener ( "popstate" , this . checkUrl , ! 1 ) : this . _wantsHashChange && this . _hasHashChange && ! this . iframe ? addEventListener ( "hashchange" , this . checkUrl , ! 1 ) : this . _wantsHashChange && ( this . _checkUrlInterval = setInterval ( this . checkUrl , this . interval ) ) , ! this . options . silent ) return this . loadUrl ( ) } , stop : function ( ) { var removeEventListener = _global . removeEventListener || function ( eventName , listener ) { return detachEvent ( "on" + eventName , listener ) } ; this . _hasPushState ? removeEventListener ( "popstate" , this . checkUrl , ! 1 ) : this . _wantsHashChange && this . _hasHashChange && ! this . iframe && removeEventListener ( "hashchange" , this . checkUrl , ! 1 ) , this . iframe && ( document . body . removeChild ( this . iframe . frameElement ) , this . iframe = null ) , this . _checkUrlInterval && clearInterval ( this . _checkUrlInterval ) , History . started = ! 1 } , route : function ( route , callback ) { this . handlers . unshift ( { route : route , callback : callback } ) } , checkUrl : function ( e ) { var current = this . getFragment ( ) ; return current === this . fragment && this . iframe && ( current = this . getHash ( this . iframe ) ) , current !== this . fragment && ( this . iframe && this . navigate ( current ) , void this . loadUrl ( ) ) } , loadUrl : function ( fragment ) { return fragment = this . fragment = this . getFragment ( fragment ) , _ . some ( this . handlers , function ( handler ) { if ( handler . route . test ( fragment ) ) return handler . callback ( fragment ) , ! 0 } ) } , navigate : function ( fragment , options ) { if ( ! History . started ) return ! 1 ; options && options !== ! 0 || ( options = { trigger : ! ! options } ) , fragment = this . getFragment ( fragment || "" ) ; var root = this . root ; "" !== fragment && "?" !== fragment . charAt ( 0 ) || ( root = root . slice ( 0 , - 1 ) || "/" ) ; var url = root + fragment ; if ( fragment = decodeURI ( fragment . replace ( pathStripper , "" ) ) , this . fragment !== fragment ) { if ( this . fragment = fragment , this . _hasPushState ) this . history [ options . replace ? "replaceState" : "pushState" ] ( { } , document . title , url ) ; else { if ( ! this . _wantsHashChange ) return this . location . assign ( url ) ; this . _updateHash ( this . location , fragment , options . replace ) , this . iframe && fragment !== this . getHash ( this . iframe ) && ( options . replace || this . iframe . document . open ( ) . close ( ) , this . _updateHash ( this . iframe . location , fragment , options . replace ) ) } return options . trigger ? this . loadUrl ( fragment ) : void 0 } } , _updateHash : function ( location , fragment , replace ) { if ( replace ) { var href = location . href . replace ( /(javascript:|#).*$/ , "" ) ; location . replace ( href + "#" + fragment ) } else location . hash = "#" + fragment } } ) , BI . history = new History } ( ) , function ( ) { function initWatch ( vm , watch ) { vm . _watchers || ( vm . _watchers = [ ] ) ; for ( var key in watch ) { var handler = watch [ key ] ; if ( BI . isArray ( handler ) ) for ( var i = 0 ; i < handler . length ; i ++ ) vm . _watchers . push ( createWatcher ( vm , key , handler [ i ] ) ) ; else vm . _watchers . push ( createWatcher ( vm , key , handler ) ) } } function createWatcher ( vm , keyOrFn , cb , options ) { return BI . isPlainObject ( cb ) && ( options = cb , cb = cb . handler ) , options = options || { } , Fix . watch ( vm . model , keyOrFn , _ . bind ( cb , vm ) , BI . extend ( options , { store : vm . store } ) ) } function pushTarget ( _target ) { target && targetStack . push ( target ) , Fix . Model . target = target = _target } function popTarget ( ) { Fix . Model . target = target = targetStack . pop ( ) } function pushContext ( _context ) { context && contextStack . push ( context ) , Fix . Model . context = context = _context } function popContext ( ) { Fix . Model . context = context = contextStack . pop ( ) } function findStore ( widget ) { if ( null != target ) return target ; widget = widget || context ; for ( var p = widget ; p && ! ( p instanceof Fix . Model || p . store || p . _ _cacheStore ) ; ) p = p . _parent || p . options && p . options . element ; return p ? p instanceof Fix . Model ? widget . _ _cacheStore = p : ( widget . _ _cacheStore = p . store || p . _ _cacheStore , p . _ _cacheStore || p . store ) : void 0 } function createStore ( ) { var needPop = ! 1 ; if ( _global . Fix && this . _store ) { var store = findStore ( this . options . context || this . options . element ) ; store && ( pushTarget ( store ) , needPop = ! 0 ) , this . store = this . _store ( ) , this . store && ( this . store . _widget = this ) , needPop && popTarget ( ) , needPop = ! 1 , pushTarget ( this . store ) , this . store instanceof Fix . Model ? this . model = this . store . model : this . model = this . store , needPop = ! 0 } return needPop } var target = null , targetStack = [ ] , context = null , contextStack = [ ] , oldWatch = Fix . watch ; Fix . watch = function ( model , expOrFn , cb , optio
! function ( n ) { var r = { } ; function o ( e ) { if ( r [ e ] ) return r [ e ] . exports ; var t = r [ e ] = { i : e , l : ! 1 , exports : { } } ; return n [ e ] . call ( t . exports , t , t . exports , o ) , t . l = ! 0 , t . exports } o . m = n , o . c = r , o . d = function ( e , t , n ) { o . o ( e , t ) || Object . defineProperty ( e , t , { enumerable : ! 0 , get : n } ) } , o . r = function ( e ) { "undefined" != typeof Symbol && Symbol . toStringTag && Object . defineProperty ( e , Symbol . toStringTag , { value : "Module" } ) , Object . defineProperty ( e , "__esModule" , { value : ! 0 } ) } , o . t = function ( t , e ) { if ( 1 & e && ( t = o ( t ) ) , 8 & e ) return t ; if ( 4 & e && "object" == typeof t && t && t . _ _esModule ) return t ; var n = Object . create ( null ) ; if ( o . r ( n ) , Object . defineProperty ( n , "default" , { enumerable : ! 0 , value : t } ) , 2 & e && "string" != typeof t ) for ( var r in t ) o . d ( n , r , function ( e ) { return t [ e ] } . bind ( null , r ) ) ; return n } , o . n = function ( e ) { var t = e && e . _ _esModule ? function ( ) { return e [ "default" ] } : function ( ) { return e } ; return o . d ( t , "a" , t ) , t } , o . o = function ( e , t ) { return Object . prototype . hasOwnProperty . call ( e , t ) } , o . p = "" , o ( o . s = 313 ) } ( { 313 : function ( e , t , n ) { e . exports = n ( 314 ) } , 314 : function ( e , t , n ) { "use strict" ; n . r ( t ) ; var r = { } ; function u ( e ) { if ( void 0 === e ) throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; return e } function i ( e , t , n ) { return t in e ? Object . defineProperty ( e , t , { value : n , enumerable : ! 0 , configurable : ! 0 , writable : ! 0 } ) : e [ t ] = n , e } function c ( e , t ) { e . prototype = Object . create ( t . prototype ) , function i ( e , t ) { for ( var n = Object . getOwnPropertyNames ( t ) , r = 0 ; r < n . length ; r ++ ) { var o = n [ r ] , u = Object . getOwnPropertyDescriptor ( t , o ) ; u && u . configurable && e [ o ] === undefined && Object . defineProperty ( e , o , u ) } return e } ( e . prototype . constructor = e , t ) } function o ( ) { return function ( e ) { BI . shortcut ( e . xtype , e ) } } function f ( ) { return function ( e ) { BI . model ( e . xtype , e ) } } function d ( n ) { var r = 1 < arguments . length && arguments [ 1 ] !== undefined ? arguments [ 1 ] : { } ; return function ( e ) { return function ( e ) { function t ( ) { return e . apply ( this , arguments ) || this } return c ( t , e ) , t . prototype . _store = function ( ) { var e = r . props ? r . props . apply ( this ) : undefined ; return BI . Models . getModel ( n . xtype , e ) } , t } ( e ) } } n . r ( r ) , n . d ( r , "shortcut" , function ( ) { return o } ) , n . d ( r , "model" , function ( ) { return f } ) , n . d ( r , "store" , function ( ) { return d } ) , n . d ( r , "Model" , function ( ) { return l } ) ; var l = function ( o ) { function e ( ) { for ( var e , t = arguments . length , n = new Array ( t ) , r = 0 ; r < t ; r ++ ) n [ r ] = arguments [ r ] ; return i ( u ( e = o . call . apply ( o , [ this ] . concat ( n ) ) || this ) , "model" , void 0 ) , i ( u ( e ) , "store" , void 0 ) , i ( u ( e ) , "context" , void 0 ) , i ( u ( e ) , "actions" , void 0 ) , i ( u ( e ) , "childContext" , void 0 ) , i ( u ( e ) , "TYPE" , void 0 ) , i ( u ( e ) , "computed" , void 0 ) , e } return c ( e , o ) , e . prototype . state = function ( ) { return { } } , e } ( Fix . Model ) , p = { Decorators : r } ; BI . extend ( BI , p ) } } ) ;