/*! fineui 2018-08-28 13:38:41 */
function accAdd ( a , b ) { var c , d , e , f ; try { c = a . toString ( ) . split ( "." ) [ 1 ] . length } catch ( g ) { c = 0 } try { d = b . toString ( ) . split ( "." ) [ 1 ] . length } catch ( g ) { d = 0 } if ( f = Math . abs ( c - d ) , e = Math . pow ( 10 , Math . max ( c , d ) ) , f > 0 ) { var h = Math . pow ( 10 , f ) ; c > d ? ( a = Number ( a . toString ( ) . replace ( "." , "" ) ) , b = Number ( b . toString ( ) . replace ( "." , "" ) ) * h ) : ( a = Number ( a . toString ( ) . replace ( "." , "" ) ) * h , b = Number ( b . toString ( ) . replace ( "." , "" ) ) ) } else a = Number ( a . toString ( ) . replace ( "." , "" ) ) , b = Number ( b . toString ( ) . replace ( "." , "" ) ) ; return ( a + b ) / e } function accSub ( a , b ) { var c , d , e , f ; try { c = a . toString ( ) . split ( "." ) [ 1 ] . length } catch ( g ) { c = 0 } try { d = b . toString ( ) . split ( "." ) [ 1 ] . length } catch ( g ) { d = 0 } return e = Math . pow ( 10 , Math . max ( c , d ) ) , f = c >= d ? c : d , ( ( a * e - b * e ) / e ) . toFixed ( f ) } function accMul ( a , b ) { var c = 0 , d = a . toString ( ) , e = b . toString ( ) ; try { c += d . split ( "." ) [ 1 ] . length } catch ( f ) { } try { c += e . split ( "." ) [ 1 ] . length } catch ( f ) { } return Number ( d . replace ( "." , "" ) ) * Number ( e . replace ( "." , "" ) ) / Math . pow ( 10 , c ) } function digitLength ( a ) { var b = a . toString ( ) . split ( /[eE]/ ) , c = ( b [ 0 ] . split ( "." ) [ 1 ] || "" ) . length - + ( b [ 1 ] || 0 ) ; return c > 0 ? c : 0 } function float2Fixed ( a ) { if ( a . toString ( ) . indexOf ( "e" ) === - 1 ) return Number ( a . toString ( ) . replace ( "." , "" ) ) ; var b = digitLength ( a ) ; return b > 0 ? a * Math . pow ( 10 , b ) : a } function times ( a , b ) { for ( var c = [ ] , d = 2 ; d < arguments . length ; d ++ ) c [ d - 2 ] = arguments [ d ] ; if ( c . length > 0 ) return times . apply ( void 0 , [ times ( a , b ) , c [ 0 ] ] . concat ( c . slice ( 1 ) ) ) ; var e = float2Fixed ( a ) , f = float2Fixed ( b ) , g = digitLength ( a ) + digitLength ( b ) , h = e * f ; return h / Math . pow ( 10 , g ) } function accDivide ( a , b ) { for ( var c = [ ] , d = 2 ; d < arguments . length ; d ++ ) c [ d - 2 ] = arguments [ d ] ; if ( c . length > 0 ) return accDivide . apply ( void 0 , [ accDivide ( a , b ) , c [ 0 ] ] . concat ( c . slice ( 1 ) ) ) ; var e = float2Fixed ( a ) , f = float2Fixed ( b ) ; return times ( e / f , Math . pow ( 10 , digitLength ( b ) - digitLength ( a ) ) ) } function _classCallCheck ( a , b ) { if ( ! ( a instanceof b ) ) throw new TypeError ( "Cannot call a class as a function" ) } 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 ( a , b ) { var c ; if ( null == this ) throw new TypeError ( '"this" is null or not defined' ) ; var d = Object ( this ) , e = d . length >>> 0 ; if ( 0 === e ) return - 1 ; var f = 0 | b ; if ( f >= e ) return - 1 ; for ( c = Math . max ( f >= 0 ? f : e - Math . abs ( f ) , 0 ) ; c < e ; ) { if ( c in d && d [ c ] === a ) return c ; c ++ } return - 1 } ) , Array . prototype . lastIndexOf || ( Array . prototype . lastIndexOf = function ( a ) { "use strict" ; if ( void 0 === this || null === this ) throw new TypeError ; var b , c , d = Object ( this ) , e = d . length >>> 0 ; if ( 0 === e ) return - 1 ; for ( b = e - 1 , arguments . length > 1 && ( b = Number ( arguments [ 1 ] ) , b != b ? b = 0 : 0 != b && b != 1 / 0 && b != - ( 1 / 0 ) && ( b = ( b > 0 || - 1 ) * Math . floor ( Math . abs ( b ) ) ) ) , c = b >= 0 ? Math . min ( b , e - 1 ) : e - Math . abs ( b ) ; c >= 0 ; c -- ) if ( c in d && d [ c ] === a ) return c ; return - 1 } ) , _global . console = _global . console || function ( ) { var a = { } ; return a . log = a . warn = a . debug = a . info = a . error = a . time = a . dir = a . profile = a . clear = a . exception = a . trace = a . assert = function ( ) { } , a } ( ) , _global . localStorage || ( _global . localStorage = { items : { } , setItem : function ( a , b ) { BI . Cache . addCookie ( a , b ) } , getItem : function ( a ) { return BI . Cache . getCookie ( a ) } , removeItem : function ( a ) { BI . Cache . deleteCookie ( a ) } , key : function ( ) { } , clear : function ( ) { this . items = { } } } ) , Object . keys || ( Object . keys = function ( a ) { if ( a !== Object ( a ) ) throw new TypeError ( "Object.keys called on a non-object" ) ; var b , c , d = { _ _ob _ _ : b , $accessors : b , $vbthis : b , $vbsetter : b } , e = [ ] ; for ( c in a ) c in d || Object . prototype . hasOwnProperty . call ( a , c ) && e . push ( c ) ; return e } ) , Array . isArray || ( Array . isArray = function ( a ) { return "[object Array]" === Object . prototype . toString . call ( a ) } ) , "function" != typeof Object . getPrototypeOf && ( Object . getPrototypeOf = "" . _ _proto _ _ === String . prototype ? function ( a ) { return a . _ _proto _ _ } : function ( a ) { return a . constructor . prototype } ) , 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 ( a ) { return void 0 !== this . set [ a ] } , Set . prototype . add = function ( a ) { this . set [ a ] = 1 } , Set . prototype . clear = function ( ) { this . set = { } } ) , ! function ( a ) { var b = a . navigator . userAgent . toLowerCase ( ) , c = /msie|applewebkit.+safari/ ; if ( c . test ( b ) ) { var
var d = si ( a ) ? j : s , e = arguments . length < 3 ; return d ( a , fb ( b , 4 ) , c , e , Uh ) } function xd ( a , b ) { var c = si ( a ) ? e : Ja ; return c ( a , Dd ( fb ( b , 3 ) ) ) } function yd ( a ) { if ( null == a ) return 0 ; if ( Kd ( a ) ) return Yd ( a ) ? K ( a ) : a . length ; var b = bi ( a ) ; return b == wf || b == Df ? a . size : gb ( a ) . length } function zd ( a , b , c ) { var d = si ( a ) ? k : xb ; return c && Dc ( a , b , c ) && ( b = Ie ) , d ( a , fb ( b , 3 ) ) } function Ad ( a , b ) { var c ; if ( "function" != typeof b ) throw new TypeError ( Le ) ; return a = be ( a ) , function ( ) { return -- a > 0 && ( c = b . apply ( this , arguments ) ) , a <= 1 && ( b = Ie ) , c } } function Bd ( a , b , c ) { function d ( b ) { var c = m , d = n ; return m = n = Ie , s = b , p = a . apply ( d , c ) } function e ( a ) { return s = a , q = setTimeout ( h , b ) , t ? d ( a ) : p } function f ( a ) { var c = a - r , d = a - s , e = b - c ; return u ? Ah ( e , o - d ) : e } function g ( a ) { var c = a - r , d = a - s ; return r === Ie || c >= b || c < 0 || u && d >= o } function h ( ) { var a = ni ( ) ; return g ( a ) ? i ( a ) : void ( q = setTimeout ( h , f ( a ) ) ) } function i ( a ) { return q = Ie , v && m ? d ( a ) : ( m = n = Ie , p ) } function j ( ) { q !== Ie && clearTimeout ( q ) , s = 0 , m = r = n = q = Ie } function k ( ) { return q === Ie ? p : i ( ni ( ) ) } function l ( ) { var a = ni ( ) , c = g ( a ) ; if ( m = arguments , n = this , r = a , c ) { if ( q === Ie ) return e ( r ) ; if ( u ) return q = setTimeout ( h , b ) , d ( r ) } return q === Ie && ( q = setTimeout ( h , b ) ) , p } var m , n , o , p , q , r , s = 0 , t = ! 1 , u = ! 1 , v = ! 0 ; if ( "function" != typeof a ) throw new TypeError ( Le ) ; return b = ce ( b ) || 0 , Sd ( c ) && ( t = ! ! c . leading , u = "maxWait" in c , o = u ? zh ( ce ( c . maxWait ) || 0 , b ) : o , v = "trailing" in c ? ! ! c . trailing : v ) , l . cancel = j , l . flush = k , l } function Cd ( a , b ) { if ( "function" != typeof a || null != b && "function" != typeof b ) throw new TypeError ( Le ) ; var c = function ( ) { var d = arguments , e = b ? b . apply ( this , d ) : d [ 0 ] , f = c . cache ; if ( f . has ( e ) ) return f . get ( e ) ; var g = a . apply ( this , d ) ; return c . cache = f . set ( e , g ) || f , g } ; return c . cache = new ( Cd . Cache || fa ) , c } function Dd ( a ) { if ( "function" != typeof a ) throw new TypeError ( Le ) ; return function ( ) { var b = arguments ; switch ( b . length ) { case 0 : return ! a . call ( this ) ; case 1 : return ! a . call ( this , b [ 0 ] ) ; case 2 : return ! a . call ( this , b [ 0 ] , b [ 1 ] ) ; case 3 : return ! a . call ( this , b [ 0 ] , b [ 1 ] , b [ 2 ] ) } return ! a . apply ( this , b ) } } function Ed ( a ) { return Ad ( 2 , a ) } function Fd ( a , b ) { if ( "function" != typeof a ) throw new TypeError ( Le ) ; return b = b === Ie ? b : be ( b ) , ub ( a , b ) } function Gd ( a , b , c ) { var d = ! 0 , e = ! 0 ; if ( "function" != typeof a ) throw new TypeError ( Le ) ; return Sd ( c ) && ( d = "leading" in c ? ! ! c . leading : d , e = "trailing" in c ? ! ! c . trailing : e ) , Bd ( a , b , { leading : d , maxWait : b , trailing : e } ) } function Hd ( a ) { return Ea ( a , Re ) } function Id ( a ) { return Ea ( a , Pe | Re ) } function Jd ( a , b ) { return a === b || a !== a && b !== b } function Kd ( a ) { return null != a && Rd ( a . length ) && ! Qd ( a ) } function Ld ( a ) { return Td ( a ) && Kd ( a ) } function Md ( a ) { return a === ! 0 || a === ! 1 || Td ( a ) && Qa ( a ) == rf } function Nd ( a ) { if ( null == a ) return ! 0 ; if ( Kd ( a ) && ( si ( a ) || "string" == typeof a || "function" == typeof a . splice || ti ( a ) || yi ( a ) || ri ( a ) ) ) return ! a . length ; var b = bi ( a ) ; if ( b == wf || b == Df ) return ! a . size ; if ( Ic ( a ) ) return ! gb ( a ) . length ; for ( var c in a ) if ( ah . call ( a , c ) ) return ! 1 ; return ! 0 } function Od ( a , b ) { return Za ( a , b ) } function Pd ( a ) { return "number" == typeof a && xh ( a ) } function Qd ( a ) { if ( ! Sd ( a ) ) return ! 1 ; var b = Qa ( a ) ; return b == uf || b == vf || b == qf || b == Bf } function Rd ( a ) { return "number" == typeof a && a > - 1 && a % 1 == 0 && a <= jf } function Sd ( a ) { var b = typeof a ; return null != a && ( "object" == b || "function" == b ) } function Td ( a ) { return null != a && "object" == typeof a } function Ud ( a ) { return Wd ( a ) && a != + a } function Vd ( a ) { return null === a } function Wd ( a ) { return "number" == typeof a || Td ( a ) && Qa ( a ) == xf } function Xd ( a ) { if ( ! Td ( a ) || Qa ( a ) != zf ) return ! 1 ; var b = lh ( a ) ; if ( null === b ) return ! 0 ; var c = ah . call ( b , "constructor" ) && b . constructor ; return "function" == typeof c && c instanceof c && _g . call ( c ) == eh } function Yd ( a ) { return "string" == typeof a || ! si ( a ) && Td ( a ) && Qa ( a ) == Ef } function Zd ( a ) { return "symbol" == typeof a || Td ( a ) && Qa ( a ) == Ff } function $d ( a ) { return a === Ie } function _d ( a ) { if ( ! a ) return [ ] ; if ( Kd ( a ) ) return Yd ( a ) ? L ( a ) : Qb ( a ) ; if ( qh && a [ qh ] ) return D ( a [ qh ] ( ) ) ; var b = bi ( a ) , c = b == wf ? E : b == Df ? I : qe ; return c ( a ) } function ae ( a ) { if ( ! a ) return 0 === a ? a : 0 ; if ( a = ce ( a ) , a === hf || a === - hf ) { var b = a < 0 ? - 1 : 1 ; return b * kf } return a === a ? a : 0 } function be ( a ) { var b = ae ( a ) , c = b % 1 ; return b === b ? c ? b - c : b : 0 } function ce ( a ) { if ( "number" == typeof a ) return a ; if ( Zd ( a ) ) return lf ; if ( Sd ( a ) ) { var b = "function" == typeof a . valueOf ? a . valueOf ( ) : a ; a = Sd ( b ) ? b + "" : b } if ( "string" != typeof a ) return 0 === a ? a : + a ; a = a . replace ( Zf , "" ) ; var c = eg . test ( a ) ; return c || gg . test ( a ) ? Hg ( a . slice ( 2 ) , c ? 2 : 8 ) : dg . test ( a ) ? lf : + a } function
return a % 4 === 0 && a % 100 !== 0 || a % 400 === 0 } , checkDateVoid : function ( a , b , c , d , e ) { var f = [ ] ; return a = 0 | a , b = 0 | b , c = 0 | c , d = BI . isString ( d ) ? d . match ( /\d+/g ) : d , e = BI . isString ( e ) ? e . match ( /\d+/g ) : e , a < d [ 0 ] ? f = [ "y" ] : a > e [ 0 ] ? f = [ "y" , 1 ] : a >= d [ 0 ] && a <= e [ 0 ] && ( a == d [ 0 ] && ( b < d [ 1 ] ? f = [ "m" ] : b == d [ 1 ] && c < d [ 2 ] && ( f = [ "d" ] ) ) , a == e [ 0 ] && ( b > e [ 1 ] ? f = [ "m" , 1 ] : b == e [ 1 ] && c > e [ 2 ] && ( f = [ "d" , 1 ] ) ) ) , f } , checkDateLegal : function ( a ) { var b = a . match ( /\d+/g ) , c = 0 | b [ 0 ] , d = 0 | b [ 1 ] , e = 0 | b [ 2 ] ; if ( b . length <= 1 ) return ! 0 ; if ( b . length <= 2 ) return d >= 1 && d <= 12 ; var f = Date . _MD . slice ( 0 ) ; return f [ 1 ] = BI . isLeapYear ( c ) ? 29 : 28 , d >= 1 && d <= 12 && e <= f [ d - 1 ] } , parseDateTime : function ( a , b ) { var c = BI . getDate ( ) , d = 0 , e = 0 , f = 1 , g = a . split ( /\W+/ ) ; if ( "%y%x" == b . toLowerCase ( ) || "%y%x%d" == b . toLowerCase ( ) ) { var h = 4 , i = 2 ; g [ 0 ] = a . substring ( 0 , h ) , g [ 1 ] = a . substring ( h , h + i ) , g [ 2 ] = a . substring ( h + i , h + 2 * i ) } var j = b . match ( /%./g ) , k = 0 , l = 0 , m = 0 , n = 0 , o = 0 ; for ( k = 0 ; k < g . length ; ++ k ) switch ( j [ k ] ) { case "%d" : case "%e" : f = parseInt ( g [ k ] , 10 ) ; break ; case "%X" : e = parseInt ( g [ k ] , 10 ) - 1 ; break ; case "%x" : e = parseInt ( g [ k ] , 10 ) - 1 ; break ; case "%Y" : case "%y" : d = parseInt ( g [ k ] , 10 ) , d < 100 && ( d += d > 29 ? 1900 : 2e3 ) ; break ; case "%b" : case "%B" : for ( l = 0 ; l < 12 ; ++ l ) if ( Date . _MN [ l ] . substr ( 0 , g [ k ] . length ) . toLowerCase ( ) == g [ k ] . toLowerCase ( ) ) { e = l ; break } break ; case "%H" : case "%I" : case "%k" : case "%l" : m = parseInt ( g [ k ] , 10 ) ; break ; case "%P" : case "%p" : /pm/i . test ( g [ k ] ) && m < 12 ? m += 12 : /am/i . test ( g [ k ] ) && m >= 12 && ( m -= 12 ) ; break ; case "%M" : n = parseInt ( g [ k ] , 10 ) ; case "%S" : o = parseInt ( g [ k ] , 10 ) } if ( isNaN ( d ) && ( d = c . getFullYear ( ) ) , isNaN ( e ) && ( e = c . getMonth ( ) ) , isNaN ( f ) && ( f = c . getDate ( ) ) , isNaN ( m ) && ( m = c . getHours ( ) ) , isNaN ( n ) && ( n = c . getMinutes ( ) ) , isNaN ( o ) && ( o = c . getSeconds ( ) ) , 0 != d ) return BI . getDate ( d , e , f , m , n , o ) ; for ( d = 0 , e = - 1 , f = 0 , k = 0 ; k < g . length ; ++ k ) if ( g [ k ] . search ( /[a-zA-Z]+/ ) != - 1 ) { var p = - 1 ; for ( l = 0 ; l < 12 ; ++ l ) if ( Date . _MN [ l ] . substr ( 0 , g [ k ] . length ) . toLowerCase ( ) == g [ k ] . toLowerCase ( ) ) { p = l ; break } p != - 1 && ( e != - 1 && ( f = e + 1 ) , e = p ) } else parseInt ( g [ k ] , 10 ) <= 12 && e == - 1 ? e = g [ k ] - 1 : parseInt ( g [ k ] , 10 ) > 31 && 0 == d ? ( d = parseInt ( g [ k ] , 10 ) , d < 100 && ( d += d > 29 ? 1900 : 2e3 ) ) : 0 == f && ( f = g [ k ] ) ; return 0 == d && ( d = c . getFullYear ( ) ) , e != - 1 && 0 != f ? BI . getDate ( d , e , f , m , n , o ) : c } , getDate : function ( ) { var a , b = arguments . length , c = arguments ; switch ( b ) { case 0 : a = new Date ; break ; case 1 : a = new Date ( c [ 0 ] ) ; break ; case 2 : a = new Date ( c [ 0 ] , c [ 1 ] ) ; break ; case 3 : a = new Date ( c [ 0 ] , c [ 1 ] , c [ 2 ] ) ; break ; case 4 : a = new Date ( c [ 0 ] , c [ 1 ] , c [ 2 ] , c [ 3 ] ) ; break ; case 5 : a = new Date ( c [ 0 ] , c [ 1 ] , c [ 2 ] , c [ 3 ] , c [ 4 ] ) ; break ; case 6 : a = new Date ( c [ 0 ] , c [ 1 ] , c [ 2 ] , c [ 3 ] , c [ 4 ] , c [ 5 ] ) ; break ; case 7 : a = new Date ( c [ 0 ] , c [ 1 ] , c [ 2 ] , c [ 3 ] , c [ 4 ] , c [ 5 ] , c [ 6 ] ) ; break ; default : a = new Date } if ( BI . isNotNull ( BI . timeZone ) && ( 0 === arguments . length || 1 === arguments . length && BI . isNumber ( arguments [ 0 ] ) ) ) { var d = a . getTime ( ) , e = 6e4 * a . getTimezoneOffset ( ) , f = d + e ; return new Date ( f + BI . timeZone ) } return a } , getTime : function ( ) { var a , b = arguments . length , c = arguments ; switch ( b ) { case 0 : a = new Date ; break ; case 1 : a = new Date ( c [ 0 ] ) ; break ; case 2 : a = new Date ( c [ 0 ] , c [ 1 ] ) ; break ; case 3 : a = new Date ( c [ 0 ] , c [ 1 ] , c [ 2 ] ) ; break ; case 4 : a = new Date ( c [ 0 ] , c [ 1 ] , c [ 2 ] , c [ 3 ] ) ; break ; case 5 : a = new Date ( c [ 0 ] , c [ 1 ] , c [ 2 ] , c [ 3 ] , c [ 4 ] ) ; break ; case 6 : a = new Date ( c [ 0 ] , c [ 1 ] , c [ 2 ] , c [ 3 ] , c [ 4 ] , c [ 5 ] ) ; break ; case 7 : a = new Date ( c [ 0 ] , c [ 1 ] , c [ 2 ] , c [ 3 ] , c [ 4 ] , c [ 5 ] , c [ 6 ] ) ; break ; default : a = new Date } return BI . isNotNull ( BI . timeZone ) ? a . getTime ( ) - BI . timeZone - 6e4 * a . getTimezoneOffset ( ) : a . getTime ( ) } } ) } ( ) , BI . OB = function ( a ) { var b = this . props ; BI . isFunction ( this . props ) && ( b = this . props ( a ) ) , this . options = ( _global . $ || _global . _ ) . extend ( this . _defaultConfig ( a ) , b , a ) , this . _init ( ) , this . _initRef ( ) } , _ . extend ( BI . OB . prototype , { props : { } , init : null , destroyed : null , _defaultConfig : function ( a ) { return { } } , _init : function ( ) { this . _initListeners ( ) , this . init && this . init ( ) } , _initListeners : function ( ) { var a = this ; null != this . options . listeners && ( _ . each ( this . options . listeners , function ( b ) { ( b . target ? b . target : a ) [ b . once ? "once" : "on" ] ( b . eventName , _ . bind ( b . action , a ) ) } ) , delete this . options . listeners ) } , _initRef : function ( ) { this . options . ref && this . options . ref . call ( this , this ) } , _purgeRef : function ( ) { this . options . ref && this . options . ref . call ( null ) } , _getEvents : function ( ) { return _ . isArray ( this . events ) || ( this . events = [ ] ) , this . events } , on : function ( a , b ) { a = a . toLowerCase ( ) ; var c = this . _getEvents ( ) [ a ] ; _ . isArray ( c ) || ( c = [ ] , this . _getEvents ( ) [ a ] = c ) , c . push ( b ) } , once : function ( a , b ) { var c = function ( ) { b . apply ( this , arguments ) , this .
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" } , c = function (
var c ; switch ( a ) { case "show" : c = BI . ShowAction } return new c ( b ) } } , BI . ShowAction = BI . inherit ( BI . Action , { _defaultConfig : function ( ) { return BI . extend ( BI . ShowAction . superclass . _defaultConfig . apply ( this , arguments ) , { } ) } , _init : function ( ) { BI . ShowAction . superclass . _init . apply ( this , arguments ) } , actionPerformed : function ( a , b , c ) { b = b || this . options . tar , b . setVisible ( ! 0 ) , c && c ( ) } , actionBack : function ( a , b , c ) { a = a || this . options . tar , a . setVisible ( ! 1 ) , c && c ( ) } } ) , function ( ) { function isEmpty ( a ) { var b = "" === a || null === a || void 0 === a ; return b } function isInvalidDate ( a ) { return "Invalid Date" == a || "NaN" == a } function _eFormat ( a , b ) { function c ( a , b ) { var c = a < 0 ? ( a *= - 1 , "-" ) : "" , h = "" , i = a > 0 && a < 1 ? "floor" : "ceil" , j = Math [ i ] ( Math . log ( a ) / Math . log ( 10 ) ) ; if ( ! isFinite ( j ) ) return b . replace ( /#/gi , "" ) . replace ( /\.e/gi , "E" ) ; a /= Math . pow ( 10 , j ) , a > 0 && a < 1 && ( a *= 10 , j -= 1 ) ; var k = f ( j , b ) ; k > 1 && ( j -= k - 1 , a *= Math . pow ( 10 , k - 1 ) ) , j < 0 && ( h = "-" , j *= - 1 ) ; var l = e ( b ) , m = g ( a ) ; return a *= Math . pow ( 10 , l ) , a = Math . round ( a ) , m && ( a /= 10 , j += "-" === h ? - 1 : 1 ) , a /= Math . pow ( 10 , l ) , a = a . toFixed ( l ) , j = d ( b , j , h ) , c + a + "E" + j } function d ( a , b , c ) { if ( b += "" , ! /e/gi . test ( a ) ) return b ; for ( a = a . split ( /e/gi ) [ 1 ] ; b . length < a . length ; ) b = "0" + b ; for ( var d = ! 0 , e = 0 , f = b . length ; e < f ; e ++ ) d && ( d = "0" === b . charAt ( e ) ) ; return c = d ? "" : c , c + b } function e ( a ) { if ( ! /e/gi . test ( a ) ) return 0 ; var b = a . split ( /e/gi ) [ 0 ] . split ( "." ) ; return b . length > 1 ? b [ 1 ] . length : 0 } function f ( a , b ) { if ( ! /e/gi . test ( b ) ) return 0 ; var c , d , e = b . split ( /e/gi ) [ 0 ] . split ( "." ) [ 0 ] , f = e . length , g = 0 ; for ( c = 0 ; c < f ; c ++ ) d = e . charAt ( c ) , ( 0 == d || "#" == d && f - c <= a + 1 ) && g ++ ; return g } function g ( a ) { var b = Math . round ( a ) ; return a = ( a + "" ) . split ( "." ) [ 0 ] , b = ( b + "" ) . split ( "." ) [ 0 ] , a . length !== b . length } return a = + a , c ( a , b ) } function _dealNumberPrecision ( a , b ) { if ( /[eE]/ . test ( a ) ) { var c , d = 0 , e = 0 ; /[%‰]$/ . test ( b ) && ( d = /[%]$/ . test ( b ) ? 2 : 3 ) ; for ( var f = b . length ; e < f ; e ++ ) "0" != ( c = b . charAt ( e ) ) && "#" != c || d ++ ; return Number ( a ) . toFixed ( d ) } return a } function _numberFormat ( a , b ) { var a = a + "" ; if ( ! /[0-9]/ . test ( a ) || ! b ) return a ; var c = b . indexOf ( ";" ) ; if ( c > - 1 ) return a >= 0 ? _numberFormat ( a + "" , b . substring ( 0 , c ) ) : _numberFormat ( - a + "" , b . substr ( c + 1 ) ) ; if ( + a < 0 && "-" !== b . charAt ( 0 ) ) return _numberFormat ( - a + "" , "-" + b ) ; var d = b . split ( "." ) , e = d [ 0 ] || "" , f = d [ 1 ] || "" ; a = _dealNumberPrecision ( a , f ) ; var g = a . split ( "." ) , h = g [ 0 ] || "" , i = g [ 1 ] || "" ; if ( /[%‰]$/ . test ( b ) ) { var j = /[%]$/ . test ( b ) ? "00" : "000" ; i += j , h += i . substr ( 0 , j . length ) , h = h . replace ( /^0+/gi , "" ) , i = i . substr ( j . length ) . replace ( /0+$/gi , "" ) } var k = _dealWithRight ( i , f ) ; k . leftPlus && ( h = parseInt ( h ) + 1 + "" , h = isNaN ( h ) ? "1" : h ) , k = k . num ; var l = _dealWithLeft ( h , e ) ; return /[0-9]/ . test ( l ) || ( l += "0" ) , /[0-9]/ . test ( k ) ? l + "." + k : l + k } function _dealWithRight ( a , b ) { for ( var c = "" , d = 0 , e = 0 , f = b . length ; e < f ; e ++ ) { var g = b . charAt ( e ) , h = a . charAt ( d ) ; switch ( g ) { case "0" : isEmpty ( h ) && ( h = "0" ) , c += h , d ++ ; break ; case "#" : c += h , d ++ ; break ; default : c += g } } var i = a . substr ( d ) , j = { } ; if ( ! isEmpty ( i ) && i . charAt ( 0 ) > 4 ) { j . leftPlus = ! 0 ; var k = c . match ( /^[0-9]+/ ) ; if ( k ) { var l = k [ 0 ] , m = l . length , n = parseInt ( l ) + 1 + "" ; n . length > m ? n = n . substr ( 1 ) : ( n = BI . leftPad ( n , m , "0" ) , j . leftPlus = ! 1 ) , c = c . replace ( /^[0-9]+/ , n ) } } return j . num = c , j } function _dealWithLeft ( a , b ) { for ( var c = "" , d = a . length - 1 , e = - 1 , f = - 1 , g = b . length - 1 ; g >= 0 ; g -- ) { var h = b . charAt ( g ) , i = a . charAt ( d ) ; switch ( h ) { case "0" : isEmpty ( i ) && ( i = "0" ) , f = - 1 , c = i + c , d -- ; break ; case "#" : f = g , c = i + c , d -- ; break ; case "," : if ( ! isEmpty ( i ) ) { var j = b . match ( /,[#0]+/ ) ; j && ( e = j [ 0 ] . length - 1 ) , c = "," + c } break ; default : c = h + c } } if ( f > - 1 ) { var k = a . substr ( 0 , d + 1 ) ; c = c . substr ( 0 , f ) + k + c . substr ( f ) } if ( e > 0 ) { var l = c . match ( /[0-9]+,/ ) ; if ( l ) { l = l [ 0 ] ; for ( var m = "" , n = l . length - 1 - e ; n >= 0 ; n -= e ) m = l . substr ( n , e ) + "," + m ; var o = l . substr ( 0 , n + e ) ; isEmpty ( o ) || ( m = o + "," + m ) } c = c . replace ( /[0-9]+,/ , m ) } return c } var _global ; _global = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this , _global . BI || ( _global . BI = { } ) , BI . cjkEncode = function ( a ) { if ( "string" != typeof a ) return a ; for ( var b = "" , c = 0 ; c < a . length ; c ++ ) { var d = a . charCodeAt ( c ) ; b += d >= 128 || 91 === d || 93 === d ? "[" + d . toString ( 16 ) + "]" : a . charAt ( c ) } return b } , BI . cjkDecode = function ( text ) { if ( null == text ) return "" ; if ( ! isNaN ( text ) || text . indexOf ( "[" ) == - 1 ) return text ; for ( var newText = "" , i = 0 ; i < text . length ; i ++ ) { var ch = text . charAt ( i ) ; if ( "[" == ch ) { var rightIdx = text . indexOf ( "]" , i + 1 ) ; if ( rightIdx > i + 1 ) { var subText = text . substring ( i + 1 , rightIdx ) ; subText . length > 0 && ( ch = Str
} } ) , BI . HorizontalLayoutLogic = BI . inherit ( BI . Logic , { _defaultConfig : function ( ) { return BI . extend ( BI . HorizontalLayoutLogic . superclass . _defaultConfig . apply ( this , arguments ) , { dynamic : ! 1 , scrollable : null , scrolly : ! 1 , scrollx : ! 1 , items : [ ] , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , createLogic : function ( ) { var a , b = this . options ; return a = b . dynamic ? "bi.vertical_adapt" : "bi.htape" , { type : a , scrollable : b . scrollable , scrolly : b . scrolly , scrollx : b . scrollx , hgap : b . hgap , vgap : b . vgap , lgap : b . lgap , rgap : b . rgap , tgap : b . tgap , bgap : b . bgap , items : b . items } } , _init : function ( ) { BI . HorizontalLayoutLogic . superclass . _init . apply ( this , arguments ) } } ) , BI . TableLayoutLogic = BI . inherit ( BI . Logic , { _defaultConfig : function ( ) { return BI . extend ( BI . TableLayoutLogic . superclass . _defaultConfig . apply ( this , arguments ) , { dynamic : ! 1 , scrollable : null , scrolly : ! 1 , scrollx : ! 1 , columns : 0 , rows : 0 , columnSize : [ ] , rowSize : [ ] , hgap : 0 , vgap : 0 , items : [ ] } ) } , createLogic : function ( ) { var a , b = this . options ; return a = b . dynamic ? "bi.table" : "bi.window" , { type : a , scrollable : b . scrollable , scrolly : b . scrolly , scrollx : b . scrollx , columns : b . columns , rows : b . rows , columnSize : b . columnSize , rowSize : b . rowSize , hgap : b . hgap , vgap : b . vgap , items : b . items } } , _init : function ( ) { BI . TableLayoutLogic . superclass . _init . apply ( this , arguments ) } } ) , BI . HorizontalFillLayoutLogic = BI . inherit ( BI . Logic , { _defaultConfig : function ( ) { return BI . extend ( BI . HorizontalFillLayoutLogic . superclass . _defaultConfig . apply ( this , arguments ) , { dynamic : ! 1 , scrollable : null , scrolly : ! 1 , scrollx : ! 1 , items : [ ] , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , createLogic : function ( ) { var a , b = this . options , c = [ ] ; return BI . each ( b . items , function ( a , b ) { c . push ( b . width || 0 ) } ) , a = b . dynamic ? "bi.horizontal_adapt" : "bi.htape" , { type : a , columnSize : c , scrollable : b . scrollable , scrolly : b . scrolly , scrollx : b . scrollx , hgap : b . hgap , vgap : b . vgap , lgap : b . lgap , rgap : b . rgap , tgap : b . tgap , bgap : b . bgap , items : b . items } } , _init : function ( ) { BI . HorizontalFillLayoutLogic . superclass . _init . apply ( this , arguments ) } } ) , _ . extend ( BI , { ajax : function ( a ) { a || ( a = { } ) ; var b = a . async ; a . data = BI . cjkEncodeDO ( a . data || { } ) , $ . ajax ( { url : a . url , type : "POST" , data : a . data , async : b , error : a . error , complete : function ( b , c ) { BI . isFunction ( a . complete ) && a . complete ( BI . jsonDecode ( b . responseText ) , c ) } } ) } } ) , BI . prepares . push ( function ( ) { var a , b = function ( ) { return null == a && ( a = ! ( ! BI . isSupportCss3 || ! BI . isSupportCss3 ( "flex" ) ) ) , a } ; BI . Plugin . registerWidget ( "bi.horizontal" , function ( a ) { return ! BI . isIE ( ) && b ( ) ? BI . extend ( a , { type : "bi.flex_horizontal" } ) : a } ) , BI . Plugin . registerWidget ( "bi.center_adapt" , function ( a ) { return ! BI . isIE ( ) && b ( ) && a . items && a . items . length <= 1 ? a . scrollable === ! 0 || a . scrollx === ! 0 || a . scrolly === ! 0 ? BI . extend ( a , { type : "bi.flex_wrapper_center" } ) : BI . extend ( a , { type : "bi.flex_center" } ) : a } ) , BI . Plugin . registerWidget ( "bi.vertical_adapt" , function ( a ) { return ! BI . isIE ( ) && b ( ) ? a . scrollable === ! 0 || a . scrollx === ! 0 || a . scrolly === ! 0 ? BI . extend ( { } , a , { type : "bi.flex_wrapper_vertical_center" } ) : BI . extend ( a , { type : "bi.flex_vertical_center" } ) : a } ) , BI . Plugin . registerWidget ( "bi.float_center_adapt" , function ( a ) { return ! BI . isIE ( ) && b ( ) ? a . scrollable === ! 0 || a . scrollx === ! 0 || a . scrolly === ! 0 ? BI . extend ( { } , a , { type : "bi.flex_wrapper_center" } ) : BI . extend ( a , { type : "bi.flex_center" } ) : a } ) } ) , ! function ( ) { var a = _global . document && _global . document . attachEvent , b = ! 1 ; if ( _global . document && ! a ) { var c = function ( ) { var a = _global . requestAnimationFrame || _global . mozRequestAnimationFrame || _global . webkitRequestAnimationFrame || function ( a ) { return _global . setTimeout ( a , 20 ) } ; return function ( b ) { return a ( b ) } } ( ) , d = function ( ) { var a = _global . cancelAnimationFrame || _global . mozCancelAnimationFrame || _global . webkitCancelAnimationFrame || _global . clearTimeout ; return function ( b ) { return a ( b ) } } ( ) , e = function ( a ) { var b = a . _ _resizeTriggers _ _ , c = b . firstElementChild , d = b . lastElementChild , e = c . firstElementChild ; d . scrollLeft = d . scrollWidth , d . scrollTop = d . scrollHeight , e . style . width = c . offsetWidth + 1 + "px" , e . style . height = c . offsetHeight + 1 + "px" , c . scrollLeft = c . scrollWidth , c . scrollTop = c . scrollHeight } , f = function ( a ) { return a . offsetWidth !== a . _ _resizeLast _ _ . width || a . offsetHeight !== a . _ _resizeLast _ _ . height } , g = function ( a ) { var b = this ; e ( this ) , this . _ _resizeRAF _ _ && d ( this . _ _resizeRAF _ _ ) , this . _ _resizeRAF _ _ = c ( function ( ) { f ( b ) && ( b . _ _resizeLast _ _ . width = b
} } , e = { } ; return d . pipe = d . then , ia . each ( b , function ( a , f ) { var g = f [ 2 ] , h = f [ 3 ] ; d [ f [ 1 ] ] = g . add , h && g . add ( function ( ) { c = h } , b [ 1 ^ a ] [ 2 ] . disable , b [ 2 ] [ 2 ] . lock ) , e [ f [ 0 ] ] = function ( ) { return e [ f [ 0 ] + "With" ] ( this === e ? d : this , arguments ) , this } , e [ f [ 0 ] + "With" ] = g . fireWith } ) , d . promise ( e ) , a && a . call ( e , e ) , e } , when : function ( a ) { var b , c , d , e = 0 , f = da . call ( arguments ) , g = f . length , h = 1 !== g || a && ia . isFunction ( a . promise ) ? g : 0 , i = 1 === h ? a : ia . Deferred ( ) , j = function ( a , c , d ) { return function ( e ) { c [ a ] = this , d [ a ] = arguments . length > 1 ? da . call ( arguments ) : e , d === b ? i . notifyWith ( c , d ) : -- h || i . resolveWith ( c , d ) } } ; if ( g > 1 ) for ( b = new Array ( g ) , c = new Array ( g ) , d = new Array ( g ) ; e < g ; e ++ ) f [ e ] && ia . isFunction ( f [ e ] . promise ) ? f [ e ] . promise ( ) . done ( j ( e , d , f ) ) . fail ( i . reject ) . progress ( j ( e , c , b ) ) : -- h ; return h || i . resolveWith ( d , f ) , i . promise ( ) } } ) , ia . support = function ( ) { var b , c , d , e , f , g , h , i , j , k , l = W . createElement ( "div" ) ; if ( l . setAttribute ( "className" , "t" ) , l . innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>" , c = l . getElementsByTagName ( "*" ) , d = l . getElementsByTagName ( "a" ) [ 0 ] , ! c || ! d || ! c . length ) return { } ; f = W . createElement ( "select" ) , h = f . appendChild ( W . createElement ( "option" ) ) , e = l . getElementsByTagName ( "input" ) [ 0 ] , d . style . cssText = "top:1px;float:left;opacity:.5" , b = { getSetAttribute : "t" !== l . className , leadingWhitespace : 3 === l . firstChild . nodeType , tbody : ! l . getElementsByTagName ( "tbody" ) . length , htmlSerialize : ! ! l . getElementsByTagName ( "link" ) . length , style : /top/ . test ( d . getAttribute ( "style" ) ) , hrefNormalized : "/a" === d . getAttribute ( "href" ) , opacity : /^0.5/ . test ( d . style . opacity ) , cssFloat : ! ! d . style . cssFloat , checkOn : ! ! e . value , optSelected : h . selected , enctype : ! ! W . createElement ( "form" ) . enctype , html5Clone : "<:nav></:nav>" !== W . createElement ( "nav" ) . cloneNode ( ! 0 ) . outerHTML , boxModel : "CSS1Compat" === W . compatMode , deleteExpando : ! 0 , noCloneEvent : ! 0 , inlineBlockNeedsLayout : ! 1 , shrinkWrapBlocks : ! 1 , reliableMarginRight : ! 0 , boxSizingReliable : ! 0 , pixelPosition : ! 1 } , e . checked = ! 0 , b . noCloneChecked = e . cloneNode ( ! 0 ) . checked , f . disabled = ! 0 , b . optDisabled = ! h . disabled ; try { delete l . test } catch ( m ) { b . deleteExpando = ! 1 } e = W . createElement ( "input" ) , e . setAttribute ( "value" , "" ) , b . input = "" === e . getAttribute ( "value" ) , e . value = "t" , e . setAttribute ( "type" , "radio" ) , b . radioValue = "t" === e . value , e . setAttribute ( "checked" , "t" ) , e . setAttribute ( "name" , "t" ) , g = W . createDocumentFragment ( ) , g . appendChild ( e ) , b . appendChecked = e . checked , b . checkClone = g . cloneNode ( ! 0 ) . cloneNode ( ! 0 ) . lastChild . checked , l . attachEvent && ( l . attachEvent ( "onclick" , function ( ) { b . noCloneEvent = ! 1 } ) , l . cloneNode ( ! 0 ) . click ( ) ) ; for ( k in { submit : ! 0 , change : ! 0 , focusin : ! 0 } ) l . setAttribute ( i = "on" + k , "t" ) , b [ k + "Bubbles" ] = i in a || l . attributes [ i ] . expando === ! 1 ; return l . style . backgroundClip = "content-box" , l . cloneNode ( ! 0 ) . style . backgroundClip = "" , b . clearCloneStyle = "content-box" === l . style . backgroundClip , ia ( function ( ) { var c , d , e , f = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;" , g = W . getElementsByTagName ( "body" ) [ 0 ] ; g && ( c = W . createElement ( "div" ) , c . style . cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px" , g . appendChild ( c ) . appendChild ( l ) , l . innerHTML = "<table><tr><td></td><td>t</td></tr></table>" , e = l . getElementsByTagName ( "td" ) , e [ 0 ] . style . cssText = "padding:0;margin:0;border:0;display:none" , j = 0 === e [ 0 ] . offsetHeight , e [ 0 ] . style . display = "" , e [ 1 ] . style . display = "none" , b . reliableHiddenOffsets = j && 0 === e [ 0 ] . offsetHeight , l . innerHTML = "" , l . style . cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;" , b . boxSizing = 4 === l . offsetWidth , b . doesNotIncludeMarginInBodyOffset = 1 !== g . offsetTop , a . getComputedStyle && ( b . pixelPosition = "1%" !== ( a . getComputedStyle ( l , null ) || { } ) . top , b . boxSizingReliable = "4px" === ( a . getComputedStyle ( l , null ) || { width : "4px" } ) . width , d = l . appendChild ( W . createElement ( "div" ) ) , d . style . cssText = l . style . cssText = f , d . style . marginRight = d . style . width = "0" , l . style . width = "1px" , b . reliableMarginRight = ! parseFloat ( ( a . getComputedStyle ( d , null ) || { } ) . marginRight ) ) , typeof l . style . zoom !== V && ( l . innerHTML = "" , l . style . cssText = f + "width:1px;padding:1px;display:inline;zoom:1" , b . inlineBloc
H = A ( d ) , P . tagNameNoComments = f ( function ( a ) { return a . appendChild ( d . createComment ( "" ) ) , ! a . getElementsByTagName ( "*" ) . length } ) , P . attributes = f ( function ( a ) { a . innerHTML = "<select></select>" ; var b = typeof a . lastChild . getAttribute ( "multiple" ) ; return "boolean" !== b && "string" !== b } ) , P . getByClassName = f ( function ( a ) { return a . innerHTML = "<div class='hidden e'></div><div class='hidden'></div>" , ! ( ! a . getElementsByClassName || ! a . getElementsByClassName ( "e" ) . length ) && ( a . lastChild . className = "e" , 2 === a . getElementsByClassName ( "e" ) . length ) } ) , P . getByName = f ( function ( a ) { a . id = N + 0 , a . innerHTML = "<a name='" + N + "'></a><div name='" + N + "'></div>" , G . insertBefore ( a , G . firstChild ) ; var b = d . getElementsByName && d . getElementsByName ( N ) . length === 2 + d . getElementsByName ( N + 0 ) . length ; return P . getIdNotName = ! d . getElementById ( N ) , G . removeChild ( a ) , b } ) , y . attrHandle = f ( function ( a ) { return a . innerHTML = "<a href='#'></a>" , a . firstChild && typeof a . firstChild . getAttribute !== V && "#" === a . firstChild . getAttribute ( "href" ) } ) ? { } : { href : function ( a ) { return a . getAttribute ( "href" , 2 ) } , type : function ( a ) { return a . getAttribute ( "type" ) } } , P . getIdNotName ? ( y . find . ID = function ( a , b ) { if ( typeof b . getElementById !== V && ! H ) { var c = b . getElementById ( a ) ; return c && c . parentNode ? [ c ] : [ ] } } , y . filter . ID = function ( a ) { var b = a . replace ( ua , va ) ; return function ( a ) { return a . getAttribute ( "id" ) === b } } ) : ( y . find . ID = function ( a , c ) { if ( typeof c . getElementById !== V && ! H ) { var d = c . getElementById ( a ) ; return d ? d . id === a || typeof d . getAttributeNode !== V && d . getAttributeNode ( "id" ) . value === a ? [ d ] : b : [ ] } } , y . filter . ID = function ( a ) { var b = a . replace ( ua , va ) ; return function ( a ) { var c = typeof a . getAttributeNode !== V && a . getAttributeNode ( "id" ) ; return c && c . value === b } } ) , y . find . TAG = P . tagNameNoComments ? function ( a , b ) { if ( typeof b . getElementsByTagName !== V ) return b . getElementsByTagName ( a ) } : function ( a , b ) { var c , d = [ ] , e = 0 , f = b . getElementsByTagName ( a ) ; if ( "*" === a ) { for ( ; c = f [ e ++ ] ; ) 1 === c . nodeType && d . push ( c ) ; return d } return f } , y . find . NAME = P . getByName && function ( a , b ) { if ( typeof b . getElementsByName !== V ) return b . getElementsByName ( name ) } , y . find . CLASS = P . getByClassName && function ( a , b ) { if ( typeof b . getElementsByClassName !== V && ! H ) return b . getElementsByClassName ( a ) } , J = [ ] , I = [ ":focus" ] , ( P . qsa = c ( d . querySelectorAll ) ) && ( f ( function ( a ) { a . innerHTML = "<select><option selected=''></option></select>" , a . querySelectorAll ( "[selected]" ) . length || I . push ( "\\[" + aa + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" ) , a . querySelectorAll ( ":checked" ) . length || I . push ( ":checked" ) } ) , f ( function ( a ) { a . innerHTML = "<input type='hidden' i=''/>" , a . querySelectorAll ( "[i^='']" ) . length && I . push ( "[*^$]=" + aa + "*(?:\"\"|'')" ) , a . querySelectorAll ( ":enabled" ) . length || I . push ( ":enabled" , ":disabled" ) , a . querySelectorAll ( "*,:x" ) , I . push ( ",.*:" ) } ) ) , ( P . matchesSelector = c ( K = G . matchesSelector || G . mozMatchesSelector || G . webkitMatchesSelector || G . oMatchesSelector || G . msMatchesSelector ) ) && f ( function ( a ) { P . disconnectedMatch = K . call ( a , "div" ) , K . call ( a , "[s!='']:x" ) , J . push ( "!=" , fa ) } ) , I = new RegExp ( I . join ( "|" ) ) , J = new RegExp ( J . join ( "|" ) ) , L = c ( G . contains ) || G . compareDocumentPosition ? function ( a , b ) { var c = 9 === a . nodeType ? a . documentElement : a , d = b && b . parentNode ; return a === d || ! ( ! d || 1 !== d . nodeType || ! ( c . contains ? c . contains ( d ) : a . compareDocumentPosition && 16 & a . compareDocumentPosition ( d ) ) ) } : function ( a , b ) { if ( b ) for ( ; b = b . parentNode ; ) if ( b === a ) return ! 0 ; return ! 1 } , M = G . compareDocumentPosition ? function ( a , b ) { var c ; return a === b ? ( C = ! 0 , 0 ) : ( c = b . compareDocumentPosition && a . compareDocumentPosition && a . compareDocumentPosition ( b ) ) ? 1 & c || a . parentNode && 11 === a . parentNode . nodeType ? a === d || L ( O , a ) ? - 1 : b === d || L ( O , b ) ? 1 : 0 : 4 & c ? - 1 : 1 : a . compareDocumentPosition ? - 1 : 1 } : function ( a , b ) { var c , e = 0 , f = a . parentNode , g = b . parentNode , i = [ a ] , j = [ b ] ; if ( a === b ) return C = ! 0 , 0 ; if ( ! f || ! g ) return a === d ? - 1 : b === d ? 1 : f ? - 1 : g ? 1 : 0 ; if ( f === g ) return h ( a , b ) ; for ( c = a ; c = c . parentNode ; ) i . unshift ( c ) ; for ( c = b ; c = c . parentNode ; ) j . unshift ( c ) ; for ( ; i [ e ] === j [ e ] ; ) e ++ ; return e ? h ( i [ e ] , j [ e ] ) : i [ e ] === O ? - 1 : j [ e ] === O ? 1 : 0 } , C = ! 1 , [ 0 , 0 ] . sort ( M ) , P . detectDuplicates = C , F ) : F } , g . matches = function ( a , b ) { return g ( a , null , null , b ) } , g . matchesSelector = function ( a , b ) { if ( ( a . ownerDocument || a ) !== F && E ( a ) , b = b . replace ( ta , "='$1']" ) , P . matchesSelector && ! H && ( ! J || ! J . test ( b ) ) && ! I . test ( b ) ) try { var c = K . call ( a , b ) ; if ( c || P . disconnect
} , abort : function ( ) { c && c . onload ( b , ! 0 ) } } } } ) ; var Ub = [ ] , Vb = /(=)\?(?=&|$)|\?\?/ ; ia . ajaxSetup ( { jsonp : "callback" , jsonpCallback : function ( ) { var a = Ub . pop ( ) || ia . expando + "_" + Gb ++ ; return this [ a ] = ! 0 , a } } ) , ia . ajaxPrefilter ( "json jsonp" , function ( c , d , e ) { var f , g , h , i = c . jsonp !== ! 1 && ( Vb . test ( c . url ) ? "url" : "string" == typeof c . data && ! ( c . contentType || "" ) . indexOf ( "application/x-www-form-urlencoded" ) && Vb . test ( c . data ) && "data" ) ; if ( i || "jsonp" === c . dataTypes [ 0 ] ) return f = c . jsonpCallback = ia . isFunction ( c . jsonpCallback ) ? c . jsonpCallback ( ) : c . jsonpCallback , i ? c [ i ] = c [ i ] . replace ( Vb , "$1" + f ) : c . jsonp !== ! 1 && ( c . url += ( Hb . test ( c . url ) ? "&" : "?" ) + c . jsonp + "=" + f ) , c . converters [ "script json" ] = function ( ) { return h || ia . error ( f + " was not called" ) , h [ 0 ] } , c . dataTypes [ 0 ] = "json" , g = a [ f ] , a [ f ] = function ( ) { h = arguments } , e . always ( function ( ) { a [ f ] = g , c [ f ] && ( c . jsonpCallback = d . jsonpCallback , Ub . push ( f ) ) , h && ia . isFunction ( g ) && g ( h [ 0 ] ) , h = g = b } ) , "script" } ) ; var Wb , Xb , Yb = 0 , Zb = a . ActiveXObject && function ( ) { var a ; for ( a in Wb ) Wb [ a ] ( b , ! 0 ) } ; ia . ajaxSettings . xhr = a . ActiveXObject ? function ( ) { return ! this . isLocal && J ( ) || K ( ) } : J , Xb = ia . ajaxSettings . xhr ( ) , ia . support . cors = ! ! Xb && "withCredentials" in Xb , Xb = ia . support . ajax = ! ! Xb , Xb && ia . ajaxTransport ( function ( c ) { if ( ! c . crossDomain || ia . support . cors ) { var d ; return { send : function ( e , f ) { var g , h , i = c . xhr ( ) ; if ( c . username ? i . open ( c . type , c . url , c . async , c . username , c . password ) : i . open ( c . type , c . url , c . async ) , c . xhrFields ) for ( h in c . xhrFields ) i [ h ] = c . xhrFields [ h ] ; c . mimeType && i . overrideMimeType && i . overrideMimeType ( c . mimeType ) , c . crossDomain || e [ "X-Requested-With" ] || ( e [ "X-Requested-With" ] = "XMLHttpRequest" ) ; try { for ( h in e ) i . setRequestHeader ( h , e [ h ] ) } catch ( j ) { } i . send ( c . hasContent && c . data || null ) , d = function ( a , e ) { var h , j , k , l ; try { if ( d && ( e || 4 === i . readyState ) ) if ( d = b , g && ( i . onreadystatechange = ia . noop , Zb && delete Wb [ g ] ) , e ) 4 !== i . readyState && i . abort ( ) ; else { l = { } , h = i . status , j = i . getAllResponseHeaders ( ) , "string" == typeof i . responseText && ( l . text = i . responseText ) ; try { k = i . statusText } catch ( m ) { k = "" } h || ! c . isLocal || c . crossDomain ? 1223 === h && ( h = 204 ) : h = l . text ? 200 : 404 } } catch ( n ) { e || f ( - 1 , n ) } l && f ( h , k , l , j ) } , c . async ? 4 === i . readyState ? setTimeout ( d ) : ( g = ++ Yb , Zb && ( Wb || ( Wb = { } , ia ( a ) . unload ( Zb ) ) , Wb [ g ] = d ) , i . onreadystatechange = d ) : d ( ) } , abort : function ( ) { d && d ( b , ! 0 ) } } } } ) ; var $b , _b , ac = /^(?:toggle|show|hide)$/ , bc = new RegExp ( "^(?:([+-])=|)(" + ja + ")([a-z%]*)$" , "i" ) , cc = /queueHooks$/ , dc = [ P ] , ec = { "*" : [ function ( a , b ) { var c , d , e = this . createTween ( a , b ) , f = bc . exec ( b ) , g = e . cur ( ) , h = + g || 0 , i = 1 , j = 20 ; if ( f ) { if ( c = + f [ 2 ] , d = f [ 3 ] || ( ia . cssNumber [ a ] ? "" : "px" ) , "px" !== d && h ) { h = ia . css ( e . elem , a , ! 0 ) || c || 1 ; do i = i || ".5" , h /= i , ia . style ( e . elem , a , h + d ) ; while ( i !== ( i = e . cur ( ) / g ) && 1 !== i && -- j ) } e . unit = d , e . start = h , e . end = f [ 1 ] ? h + ( f [ 1 ] + 1 ) * c : c } return e } ] } ; ia . Animation = ia . extend ( N , { tweener : function ( a , b ) { ia . isFunction ( a ) ? ( b = a , a = [ "*" ] ) : a = a . split ( " " ) ; for ( var c , d = 0 , e = a . length ; d < e ; d ++ ) c = a [ d ] , ec [ c ] = ec [ c ] || [ ] , ec [ c ] . unshift ( b ) } , prefilter : function ( a , b ) { b ? dc . unshift ( a ) : dc . push ( a ) } } ) , ia . Tween = Q , Q . prototype = { constructor : Q , init : function ( a , b , c , d , e , f ) { this . elem = a , this . prop = c , this . easing = e || "swing" , this . options = b , this . start = this . now = this . cur ( ) , this . end = d , this . unit = f || ( ia . cssNumber [ c ] ? "" : "px" ) } , cur : function ( ) { var a = Q . propHooks [ this . prop ] ; return a && a . get ? a . get ( this ) : Q . propHooks . _default . get ( this ) } , run : function ( a ) { var b , c = Q . propHooks [ this . prop ] ; return this . options . duration ? this . pos = b = ia . easing [ this . easing ] ( a , this . options . duration * a , 0 , 1 , this . options . duration ) : this . pos = b = a , this . now = ( this . end - this . start ) * b + this . start , this . options . step && this . options . step . call ( this . elem , this . now , this ) , c && c . set ? c . set ( this ) : Q . propHooks . _default . set ( this ) , this } } , Q . prototype . init . prototype = Q . prototype , Q . propHooks = { _default : { get : function ( a ) { var b ; return null == a . elem [ a . prop ] || a . elem . style && null != a . elem . style [ a . prop ] ? ( b = ia . css ( a . elem , a . prop , "" ) , b && "auto" !== b ? b : 0 ) : a . elem [ a . prop ] } , set : function ( a ) { ia . fx . step [ a . prop ] ? ia . fx . step [ a . prop ] ( a ) : a . elem . style && ( null != a . elem . style [ ia . cssProps [ a . prop ] ] || ia . cssHooks [ a . prop ] ) ? ia . style ( a . elem , a . prop , a . now + a . unit ) : a . elem [ a . prop ] = a . now } } } , Q . propHooks . scrollTop = Q . propHooks . scrollLeft = { set : function ( a ) { a . elem . nodeType && a . elem . parentNode && ( a . elem [ a . prop ] = a . now ) } } , ia . each ( [ "toggle" , "show" , "hide" ] , function ( a , b ) { var c = ia . fn [ b ] ; ia . fn [ b ] = fu
border : "none" , "border-collapse" : "separate" } ) , this . $tr = BI . Widget . _renderEngine . createElement ( "<tr>" ) , this . $tr . appendTo ( this . $table ) , this . populate ( this . options . items ) } , _addElement : function ( a , b ) { var c , d = this . options , e = d . columnSize [ a ] <= 1 ? 100 * d . columnSize [ a ] + "%" : d . columnSize [ a ] ; if ( this . hasWidget ( this . _getChildName ( a ) ) ) c = this . getWidgetByName ( this . _getChildName ( a ) ) , c . element . attr ( "width" , e ) ; else { var f = BI . createWidget ( b ) ; f . element . css ( { position : "relative" , top : "0" , left : "0" , margin : "0px auto" } ) , c = BI . createWidget ( { type : "bi.default" , tagName : "td" , attributes : { width : e } , items : [ f ] } ) , this . addWidget ( this . _getChildName ( a ) , c ) } return c . element . css ( { "max-width" : d . columnSize [ a ] } ) , 0 === a && c . element . addClass ( "first-element" ) , c . element . css ( { position : "relative" , height : "100%" , "vertical-align" : "middle" , margin : "0" , padding : "0" , border : "none" } ) , d . vgap + d . tgap + ( b . tgap || 0 ) + ( b . vgap || 0 ) !== 0 && f . element . css ( { "margin-top" : d . vgap + d . tgap + ( b . tgap || 0 ) + ( b . vgap || 0 ) + "px" } ) , d . hgap + d . lgap + ( b . lgap || 0 ) + ( b . hgap || 0 ) !== 0 && f . element . css ( { "margin-left" : ( 0 === a ? d . hgap : 0 ) + d . lgap + ( b . lgap || 0 ) + ( b . hgap || 0 ) + "px" } ) , d . hgap + d . rgap + ( b . rgap || 0 ) + ( b . hgap || 0 ) !== 0 && f . element . css ( { "margin-right" : d . hgap + d . rgap + ( b . rgap || 0 ) + ( b . hgap || 0 ) + "px" } ) , d . vgap + d . bgap + ( b . bgap || 0 ) + ( b . vgap || 0 ) !== 0 && f . element . css ( { "margin-bottom" : d . vgap + d . bgap + ( b . bgap || 0 ) + ( b . vgap || 0 ) + "px" } ) , c } , appendFragment : function ( a ) { this . $tr . append ( a ) , this . element . append ( this . $table ) } , resize : function ( ) { } , _getWrapper : function ( ) { return this . $tr } , populate : function ( a ) { BI . CenterAdaptLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.center_adapt" , BI . CenterAdaptLayout ) , BI . HorizontalAdaptLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . HorizontalAdaptLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-horizontal-adapt-layout" , verticalAlign : BI . VerticalAlign . Top , columnSize : [ ] , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . HorizontalAdaptLayout . superclass . render . apply ( this , arguments ) , this . $table = BI . Widget . _renderEngine . createElement ( "<table>" ) . attr ( { cellspacing : 0 , cellpadding : 0 } ) . css ( { position : "relative" , width : "100%" , "white-space" : "nowrap" , "border-spacing" : "0px" , border : "none" , "border-collapse" : "separate" } ) , this . $tr = BI . Widget . _renderEngine . createElement ( "<tr>" ) , this . $tr . appendTo ( this . $table ) , this . populate ( this . options . items ) } , _addElement : function ( a , b ) { var c , d = this . options , e = d . columnSize [ a ] <= 1 ? 100 * d . columnSize [ a ] + "%" : d . columnSize [ a ] ; if ( this . hasWidget ( this . _getChildName ( a ) ) ) c = this . getWidgetByName ( this . _getChildName ( a ) ) , c . element . attr ( "width" , e ) ; else { var f = BI . createWidget ( b ) ; f . element . css ( { position : "relative" , top : "0" , left : "0" , margin : "0px auto" } ) , c = BI . createWidget ( { type : "bi.default" , tagName : "td" , attributes : { width : e } , items : [ f ] } ) , this . addWidget ( this . _getChildName ( a ) , c ) } return c . element . css ( { "max-width" : d . columnSize [ a ] + "px" } ) , 0 === a && c . element . addClass ( "first-element" ) , c . element . css ( { position : "relative" , "vertical-align" : d . verticalAlign , margin : "0" , padding : "0" , border : "none" } ) , d . vgap + d . tgap + ( b . tgap || 0 ) + ( b . vgap || 0 ) !== 0 && f . element . css ( { "margin-top" : d . vgap + d . tgap + ( b . tgap || 0 ) + ( b . vgap || 0 ) + "px" } ) , d . hgap + d . lgap + ( b . lgap || 0 ) + ( b . hgap || 0 ) !== 0 && f . element . css ( { "margin-left" : ( 0 === a ? d . hgap : 0 ) + d . lgap + ( b . lgap || 0 ) + ( b . hgap || 0 ) + "px" } ) , d . hgap + d . rgap + ( b . rgap || 0 ) + ( b . hgap || 0 ) !== 0 && f . element . css ( { "margin-right" : d . hgap + d . rgap + ( b . rgap || 0 ) + ( b . hgap || 0 ) + "px" } ) , d . vgap + d . bgap + ( b . bgap || 0 ) + ( b . vgap || 0 ) !== 0 && f . element . css ( { "margin-bottom" : d . vgap + d . bgap + ( b . bgap || 0 ) + ( b . vgap || 0 ) + "px" } ) , c } , appendFragment : function ( a ) { this . $tr . append ( a ) , this . element . append ( this . $table ) } , resize : function ( ) { } , _getWrapper : function ( ) { return this . $tr } , populate : function ( a ) { BI . HorizontalAdaptLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.horizontal_adapt" , BI . HorizontalAdaptLayout ) , BI . LeftRightVerticalAdaptLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . LeftRightVerticalAdaptLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-left-right-vertical-adapt-layout" , items : { } , llgap : 0 , lrgap : 0 , lhgap : 0 , rlgap : 0 , rrgap : 0 , rhgap : 0 } ) } , render : function ( ) { BI . LeftRightVerticalAdaptLayout . superclass . render . apply ( this , argum
items : [ ] } ) } , render : function ( ) { BI . DivisionLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , resize : function ( ) { this . stroke ( this . opitons . items ) } , addItem : function ( a ) { throw new Error ( "cannot be added" ) } , stroke : function ( a ) { function b ( a , b , c ) { 0 === b && a . addClass ( "first-row" ) , 0 === c && a . addClass ( "first-col" ) , a . addClass ( BI . isOdd ( b + 1 ) ? "odd-row" : "even-row" ) , a . addClass ( BI . isOdd ( c + 1 ) ? "odd-col" : "even-col" ) , a . addClass ( "center-element" ) } function c ( a , b , c ) { var d = "" ; 0 === b && ( d += " first-row" ) , 0 === c && ( d += " first-col" ) , d += BI . isOdd ( b + 1 ) ? " odd-row" : " even-row" , d += BI . isOdd ( c + 1 ) ? " odd-col" : " even-col" , a . cls = ( a . cls || "" ) + d + " center-element" } function d ( a , d , e ) { a instanceof BI . Widget ? b ( a . element , d , e ) : a . el instanceof BI . Widget ? b ( a . el . element , d , e ) : a . el ? c ( a . el , d , e ) : c ( a , d , e ) } var e = this . options , f = e . rows || e . items . length , g = e . columns || 0 | ( e . items [ 0 ] && e . items [ 0 ] . length ) , h = BI . makeArray ( f ) , i = { } , j = { } ; BI . each ( h , function ( a ) { h [ a ] = BI . makeArray ( g ) } ) , BI . each ( a , function ( a , b ) { return BI . isArray ( b ) ? void BI . each ( b , function ( c , d ) { i [ a ] = ( i [ a ] || 0 ) + b . width , j [ c ] = ( j [ c ] || 0 ) + b . height , h [ a ] [ c ] = d } ) : ( i [ b . row ] = ( i [ b . row ] || 0 ) + b . width , j [ b . column ] = ( j [ b . column ] || 0 ) + b . height , void ( h [ b . row ] [ b . column ] = b ) ) } ) ; for ( var k = 0 ; k < f ; k ++ ) for ( var l = 0 , m = 0 ; m < g ; m ++ ) { if ( ! h [ k ] [ m ] ) throw new Error ( "item be required" ) ; if ( this . hasWidget ( this . getName ( ) + k + "_" + m ) ) n = this . getWidgetByName ( this . getName ( ) + k + "_" + m ) ; else { var n = BI . createWidget ( h [ k ] [ m ] ) ; this . addWidget ( this . getName ( ) + k + "_" + m , n ) } var o = 100 * l / i [ k ] ; if ( n . element . css ( { position : "absolute" , left : o + "%" } ) , m > 0 ) { var p = this . getWidgetByName ( this . getName ( ) + k + "_" + ( m - 1 ) ) ; p . element . css ( { right : 100 - o + "%" } ) } m == e . columns - 1 && n . element . css ( { right : "0%" } ) , d ( n , k , m ) , l += h [ k ] [ m ] . width } for ( var m = 0 ; m < e . columns ; m ++ ) for ( var q = 0 , k = 0 ; k < e . rows ; k ++ ) { var n = this . getWidgetByName ( this . getName ( ) + k + "_" + m ) , r = 100 * q / j [ m ] ; if ( n . element . css ( { top : r + "%" } ) , k > 0 ) { var p = this . getWidgetByName ( this . getName ( ) + ( k - 1 ) + "_" + m ) ; p . element . css ( { bottom : 100 - r + "%" } ) } k == e . rows - 1 && n . element . css ( { bottom : "0%" } ) , q += h [ k ] [ m ] . height } } , populate : function ( a ) { BI . DivisionLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.division" , BI . DivisionLayout ) , BI . FloatLeftLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . FloatLeftLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-float-left-layout clearfix" , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . FloatLeftLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , _addElement : function ( a , b ) { var c = this . options , d = BI . FloatLeftLayout . superclass . _addElement . apply ( this , arguments ) ; return d . element . css ( { position : "relative" , "float" : "left" } ) , BI . isNotNull ( b . left ) && d . element . css ( { left : b . left } ) , BI . isNotNull ( b . right ) && d . element . css ( { right : b . right } ) , BI . isNotNull ( b . top ) && d . element . css ( { top : b . top } ) , BI . isNotNull ( b . bottom ) && d . element . css ( { bottom : b . bottom } ) , c . vgap + c . tgap + ( b . tgap || 0 ) + ( b . vgap || 0 ) !== 0 && d . element . css ( { "margin-top" : c . vgap + c . tgap + ( b . tgap || 0 ) + ( b . vgap || 0 ) + "px" } ) , c . hgap + c . lgap + ( b . lgap || 0 ) + ( b . hgap || 0 ) !== 0 && d . element . css ( { "margin-left" : ( 0 === a ? c . hgap : 0 ) + c . lgap + ( b . lgap || 0 ) + ( b . hgap || 0 ) + "px" } ) , c . hgap + c . rgap + ( b . rgap || 0 ) + ( b . hgap || 0 ) !== 0 && d . element . css ( { "margin-right" : c . hgap + c . rgap + ( b . rgap || 0 ) + ( b . hgap || 0 ) + "px" } ) , c . vgap + c . bgap + ( b . bgap || 0 ) + ( b . vgap || 0 ) !== 0 && d . element . css ( { "margin-bottom" : c . vgap + c . bgap + ( b . bgap || 0 ) + ( b . vgap || 0 ) + "px" } ) , d } , resize : function ( ) { this . stroke ( this . options . items ) } , populate : function ( a ) { BI . FloatLeftLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.left" , BI . FloatLeftLayout ) , BI . FloatRightLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . FloatRightLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-float-right-layout clearfix" , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . FloatRightLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , _addElement : function ( a , b ) { var c = this . options , d = BI . FloatRightLayout . superclass . _addElement . apply ( this , arguments ) ; return d . element . css ( { position : "relative" , "float" : "right" } ) , BI . isNotNull ( b . left ) && d . element . css ( { left : b . left } ) , BI . isNotNull ( b . right ) && d . element . css
b && b . _ _ob _ _ && b . _ _ob _ _ . dep . depend ( ) , _ . isArray ( b ) && r ( b ) } function s ( ) { ta = oa . length = pa . length = 0 , qa = { } , ra = sa = ! 1 } function t ( ) { sa = ! 0 ; var a = void 0 , b = void 0 , c = void 0 ; for ( oa . sort ( function ( a , b ) { return a . id - b . id } ) , ta = 0 ; ta < oa . length ; ta ++ ) a = oa [ ta ] . watcher , c = oa [ ta ] . options , b = a . id , qa [ b ] = null , a . run ( c ) ; s ( ) } function u ( a , b ) { var c = a . id ; if ( null == qa [ c ] ) { if ( qa [ c ] = ! 0 , sa ) { for ( var d = oa . length - 1 ; d > ta && oa [ d ] . watcher . id > a . id ; ) d -- ; oa . splice ( d + 1 , 0 , { watcher : a , options : b } ) } else oa . push ( { watcher : a , options : b } ) ; ra || ( ra = ! 0 , W ( t ) ) } } function v ( a ) { wa . clear ( ) , w ( a , wa ) } function w ( a , b ) { var c = void 0 , d = void 0 , e = _ . isArray ( a ) ; if ( e || _ . isObject ( a ) ) { if ( a . _ _ob _ _ ) { var f = a . _ _ob _ _ . dep . id ; if ( b . has ( f ) ) return ; b . add ( f ) } if ( e ) for ( c = a . length ; c -- ; ) w ( a [ c ] , b ) ; else for ( d = _ . keys ( a ) , c = d . length ; c -- ; ) w ( a [ d [ c ] ] , b ) } } function x ( a ) { for ( var b = "" , c = 0 , d = a . length ; c < d ; c ++ ) b += _ . isBoolean ( a [ c ] ) || _ . has ( xa , a [ c ] ) ? a [ c ] : "false" ; return new Function ( "return " + b ) ( ) } function y ( a ) { return a = a . replace ( /\*./g , "[a-zA-Z0-9_]+." ) , "^" + a + "$" } function z ( a , b , c , d ) { e ( c ) && ( d = c , c = c . handler ) , "string" == typeof c && ( c = a [ c ] ) , d = d || { } , d . user = ! 0 ; var h = void 0 ; if ( _ . isFunction ( b ) || ! ( h = b . match ( /[a-zA-Z0-9_.*]+|[|][|]|[&][&]|[(]|[)]/g ) ) || 1 === h . length && ! /\*/ . test ( b ) ) { var i = new va ( a , b , c , d ) ; return d . immediate && c ( i . value ) , function ( ) { i . teardown ( ) } } var j = [ ] , k = h . slice ( ) , l = ! 1 , m = ! 1 , n = function ( a , b , e , f ) { l !== ! 0 && ( k [ a ] = ! 0 , x ( k ) && ( l = ! 0 , c ( b , e , f ) ) , d && d . sync ? ( l = ! 1 , m = ! 1 , k = h . slice ( ) ) : m || ( m = ! 0 , W ( function ( ) { l = ! 1 , m = ! 1 , k = h . slice ( ) } ) ) ) } ; return _ . each ( h , function ( b , c ) { if ( ! _ . has ( xa , b ) ) { if ( /^[1-9a-zA-Z.]+(\*\*$|\*$)/ . test ( b ) || "**" === b ) { var e = /\*\*$/ . test ( b ) ; b = e ? b . replace ( ".**" , "" ) : b . replace ( ".*" , "" ) ; var h = "**" === b ? function ( a ) { return a } : g ( b ) , i = h . call ( a , a ) , k = new Z ; e ? ( i . _ _ob _ _ . _scopeDeps || ( i . _ _ob _ _ . _scopeDeps = [ ] ) ) . push ( k ) : ( i . _ _ob _ _ . _deps || ( i . _ _ob _ _ . _deps = [ ] ) ) . push ( k ) ; var l = new va ( a , function ( ) { return k . depend ( ) , NaN } , function ( a , b , d ) { n ( c , a , b , _ . extend ( { index : c } , d ) ) } , d ) ; return void j . push ( function ( ) { l . teardown ( ) , i . _ _ob _ _ . _scopeDeps && f ( i . _ _ob _ _ . _scopeDeps , k ) , i . _ _ob _ _ . _deps && f ( i . _ _ob _ _ . _deps , k ) } ) } if ( /\*\*$|\*$/ . test ( b ) ) throw new Error ( "not support" ) ; if ( /\*/ . test ( b ) ) { for ( var m = a , o = b . split ( "." ) , p = 0 , q = o . length ; p < q && "*" !== o [ p ] ; p ++ ) m = a [ o [ p ] ] ; b = b . substr ( b . indexOf ( "*" ) ) ; for ( var r = m . _ _ob _ _ . parent , s = m . _ _ob _ _ ; r ; ) b = "*." + b , s = r , r = r . parent ; var t = y ( b ) , u = new Z ; s . _globalDeps || ( s . _globalDeps = { } ) , s . _globalDeps [ t ] = u ; var v = new va ( m , function ( ) { return u . depend ( ) , NaN } , function ( a , b , d ) { n ( c , a , b , _ . extend ( { index : c } , d ) ) } , d ) ; return void j . push ( function ( ) { v . teardown ( ) , s . _globalDeps && delete s . _globalDeps [ t ] } ) } var w = new va ( a , b , function ( a , b , d ) { n ( c , a , b , _ . extend ( { index : c } , d ) ) } , d ) ; j . push ( function ( ) { w . teardown ( ) } ) } } ) , j } function A ( a ) { return ya [ a ] } function B ( a , b ) { ya [ a ] = _ . cloneDeep ( b ) } function C ( a , b ) { b && ( a . $$state = m ( b ) . model ) } function D ( a , c ) { var d = a . _computedWatchers = { } ; E ( a , c ) ; for ( var e in c ) { var f = c [ e ] , g = a . $$model ? a . model : a , h = "function" == typeof f ? _ . bind ( f , g ) : _ . bind ( f . get , g ) ; d [ e ] = new va ( a . $$computed , h || b , b , za ) } } function E ( a , c ) { var d = { } , e = ! 0 ; for ( var f in c ) if ( ! ( f in a ) ) { var g = { enumerable : ! 0 , configurable : ! 0 , get : b , set : b } , h = c [ f ] ; "function" == typeof h ? ( g . get = F ( a , f ) , g . set = b ) : ( g . get = h . get ? e && h . cache !== ! 1 ? F ( f ) : h . get : b , g . set = h . set ? h . set : b ) , d [ f ] = g } a . $$computed = ka ( { } , d ) } function F ( a , b ) { return function ( ) { var c = a . _computedWatchers && a . _computedWatchers [ b ] ; if ( c ) return c . dirty && c . evaluate ( ) , Z . target && c . depend ( ) , c . value } } function G ( a , b ) { a . _watchers || ( a . _watchers = [ ] ) ; for ( var c in b ) { var d = b [ c ] ; if ( _ . isArray ( d ) ) for ( var e = 0 ; e < d . length ; e ++ ) a . _watchers . push ( H ( a , c , d [ e ] ) ) ; else a . _watchers . push ( H ( a , c , d ) ) } } function H ( a , b , c , d ) { return e ( c ) && ( d = c , c = c . handler ) , "string" == typeof c && ( c = a [ c ] ) , z ( a . model , b , _ . bind ( c , a . $$model ? a . model : a ) , d ) } function I ( a , c ) { for ( var d in c ) a [ d ] = null == c [ d ] ? b : _ . bind ( c [ d ] , a . $$model ? a . model : a ) } function J ( a , b ) { b = b || [ ] , _ . each ( b . reverse ( ) , function ( b ) { var c = A ( b ) ; for ( var d in c ) "function" == typeof c [ d ] && ( _ . has ( a , d ) || ( a [ d ] = _ . bind ( c [ d ] , a . $$model ? a . model : a ) ) ) } ) } function K ( a , b ) { for ( var c = { } , d = ( function ( d , e ) { var f = b [ d ] ; f in X || ( c [ f ] = { enumerable : ! 0 , configurable : ! 0 , get : function ( ) { if ( a . $$computed && f in a . $$computed ) return a . $$computed [ f ] ; if ( a . $$state && f in a . $$state ) return a . $$state [ f ] ; if ( a . $$model && f in a . $$model ) return a . $$model [ f ] ; for ( var b =
! c . isEnabled ( ) || c . isSelected && c . isSelected ( ) || a . push ( c . getValue ( ) ) } ) , a } , getValue : function ( ) { var a = [ ] ; return BI . each ( this . buttons , function ( b , c ) { c . isEnabled ( ) && c . isSelected && c . isSelected ( ) && a . push ( c . getValue ( ) ) } ) , a } , getAllButtons : function ( ) { return this . buttons } , getAllLeaves : function ( ) { return this . buttons } , getSelectedButtons : function ( ) { var a = [ ] ; return BI . each ( this . buttons , function ( b , c ) { c . isSelected && c . isSelected ( ) && a . push ( c ) } ) , a } , getNotSelectedButtons : function ( ) { var a = [ ] ; return BI . each ( this . buttons , function ( b , c ) { c . isSelected && ! c . isSelected ( ) && a . push ( c ) } ) , a } , getIndexByValue : function ( a ) { var b = - 1 ; return BI . any ( this . buttons , function ( c , d ) { if ( d . isEnabled ( ) && d . getValue ( ) === a ) return b = c , ! 0 } ) , b } , getNodeById : function ( a ) { var b ; return BI . any ( this . buttons , function ( c , d ) { if ( d . isEnabled ( ) && d . options . id === a ) return b = d , ! 0 } ) , b } , getNodeByValue : function ( a ) { var b ; return BI . any ( this . buttons , function ( c , d ) { if ( d . isEnabled ( ) && d . getValue ( ) === a ) return b = d , ! 0 } ) , b } , empty : function ( ) { BI . ButtonGroup . superclass . empty . apply ( this , arguments ) , this . options . items = [ ] } , destroy : function ( ) { BI . ButtonGroup . superclass . destroy . apply ( this , arguments ) , this . options . items = [ ] } } ) , BI . extend ( BI . ButtonGroup , { CHOOSE _TYPE _SINGLE : BI . Selection . Single , CHOOSE _TYPE _MULTI : BI . Selection . Multi , CHOOSE _TYPE _ALL : BI . Selection . All , CHOOSE _TYPE _NONE : BI . Selection . None , CHOOSE _TYPE _DEFAULT : BI . Selection . Default } ) , BI . ButtonGroup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.button_group" , BI . ButtonGroup ) , BI . ButtonTree = BI . inherit ( BI . ButtonGroup , { _defaultConfig : function ( ) { return BI . extend ( BI . ButtonTree . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-button-tree" } ) } , _init : function ( ) { BI . ButtonTree . superclass . _init . apply ( this , arguments ) } , setNotSelectedValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , BI . each ( this . buttons , function ( b , c ) { return BI . isFunction ( c . setSelected ) ? void ( BI . deepContains ( a , c . getValue ( ) ) ? c . setSelected ( ! 1 ) : c . setSelected ( ! 0 ) ) : void c . setNotSelectedValue ( a ) } ) } , setEnabledValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , BI . each ( this . buttons , function ( b , c ) { return BI . isFunction ( c . setEnabledValue ) ? void c . setEnabledValue ( a ) : void ( BI . deepContains ( a , c . getValue ( ) ) ? c . setEnable ( ! 0 ) : c . setEnable ( ! 1 ) ) } ) } , setValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , BI . each ( this . buttons , function ( b , c ) { return BI . isFunction ( c . setSelected ) ? void ( BI . deepContains ( a , c . getValue ( ) ) ? c . setSelected ( ! 0 ) : c . setSelected ( ! 1 ) ) : void c . setValue ( a ) } ) } , getNotSelectedValue : function ( ) { var a = [ ] ; return BI . each ( this . buttons , function ( b , c ) { return c . isEnabled ( ) && ! BI . isFunction ( c . setSelected ) ? void ( a = BI . concat ( a , c . getNotSelectedValue ( ) ) ) : void ( c . isEnabled ( ) && c . isSelected && ! c . isSelected ( ) && a . push ( c . getValue ( ) ) ) } ) , a } , getValue : function ( ) { var a = [ ] ; return BI . each ( this . buttons , function ( b , c ) { return c . isEnabled ( ) && ! BI . isFunction ( c . setSelected ) ? void ( a = BI . concat ( a , c . getValue ( ) ) ) : void ( c . isEnabled ( ) && c . isSelected && c . isSelected ( ) && a . push ( c . getValue ( ) ) ) } ) , a } , getSelectedButtons : function ( ) { var a = [ ] ; return BI . each ( this . buttons , function ( b , c ) { return c . isEnabled ( ) && ! BI . isFunction ( c . setSelected ) ? void ( a = a . concat ( c . getSelectedButtons ( ) ) ) : void ( c . isSelected && c . isSelected ( ) && a . push ( c ) ) } ) , a } , getNotSelectedButtons : function ( ) { var a = [ ] ; return BI . each ( this . buttons , function ( b , c ) { return c . isEnabled ( ) && ! BI . isFunction ( c . setSelected ) ? void ( a = a . concat ( c . getNotSelectedButtons ( ) ) ) : void ( c . isSelected && ! c . isSelected ( ) && a . push ( c ) ) } ) , a } , getAllLeaves : function ( ) { var a = [ ] ; return BI . each ( this . buttons , function ( b , c ) { return c . isEnabled ( ) && ! BI . isFunction ( c . setSelected ) ? void ( a = a . concat ( c . getAllLeaves ( ) ) ) : void ( c . isEnabled ( ) && a . push ( c ) ) } ) , a } , getIndexByValue : function ( a ) { var b = - 1 ; return BI . any ( this . buttons , function ( c , d ) { var e = d . getValue ( ) ; if ( d . isEnabled ( ) && ( e === a || BI . contains ( e , a ) ) ) return b = c , ! 0 } ) , b } , getNodeById : function ( a ) { var b ; return BI . any ( this . buttons , function ( c , d ) { if ( d . isEnabled ( ) ) { if ( d . attr ( "id" ) === a ) return b = d , ! 0 ; if ( BI . isFunction ( d . getNodeById ) && ( b = d . getNodeById ( a ) ) ) return ! 0 } } ) , b } , getNodeByValue : function ( a ) { var b ; return BI . any ( this . buttons , function ( c , d ) { if ( d . isEnabled ( ) ) if ( BI . isFunction ( d . getNodeByValue ) ) { if ( b = d . getNodeByValue ( a ) ) return ! 0 } else if ( d . attr ( "value" ) === a ) return b = d , ! 0 } ) , b } } ) , BI . ButtonTree . EVENT _CHANGE = " EVENT
delete b . top , delete b . adaptHeight ; break ; case "custom,right" : case "right,custom" : b = $ . getRightAdaptPosition ( this . combo , this . popupView , a . adjustXOffset || a . adjustLength ) , delete b . top , delete b . adaptHeight } "adaptHeight" in b && this . resetListHeight ( b . adaptHeight ) , "left" in b && this . popupView . element . css ( { left : b . left } ) , "top" in b && this . popupView . element . css ( { top : b . top } ) , this . position = b , this . popupView . setVisible ( c ) } } , resetListHeight : function ( a ) { this . _assertPopupView ( ) , this . popupView . resetHeight && this . popupView . resetHeight ( a ) } , resetListWidth : function ( a ) { this . _assertPopupView ( ) , this . popupView . resetWidth && this . popupView . resetWidth ( a ) } , populate : function ( a ) { this . _assertPopupView ( ) , this . popupView . populate . apply ( this . popupView , arguments ) , this . combo . populate . apply ( this . combo , arguments ) } , _setEnable : function ( a ) { BI . Combo . superclass . _setEnable . apply ( this , arguments ) , a === ! 0 ? this . element . removeClass ( "base-disabled disabled" ) : a === ! 1 && this . element . addClass ( "base-disabled disabled" ) , ! a && this . element . removeClass ( this . options . hoverClass ) , ! a && this . isViewVisible ( ) && this . _hideView ( ) } , setValue : function ( a ) { this . combo . setValue ( a ) , BI . isNull ( this . popupView ) ? this . options . popup . value = a : this . popupView . setValue ( a ) } , getValue : function ( ) { return BI . isNull ( this . popupView ) ? this . options . popup . value : this . popupView . getValue ( ) } , isViewVisible : function ( ) { return this . isEnabled ( ) && this . combo . isEnabled ( ) && ! ! this . popupView && this . popupView . isVisible ( ) } , showView : function ( ) { this . isEnabled ( ) && this . combo . isEnabled ( ) && this . _popupView ( ) } , hideView : function ( ) { this . _hideView ( ) } , getView : function ( ) { return this . popupView } , getPopupPosition : function ( ) { return this . position } , toggle : function ( ) { this . _toggle ( ) } , destroy : function ( ) { BI . Widget . _renderEngine . createElement ( document ) . unbind ( "mousedown." + this . getName ( ) ) . unbind ( "mousewheel." + this . getName ( ) ) . unbind ( "mouseenter." + this . getName ( ) ) . unbind ( "mousemove." + this . getName ( ) ) . unbind ( "mouseleave." + this . getName ( ) ) , BI . Resizers . remove ( this . getName ( ) ) , BI . Combo . superclass . destroy . apply ( this , arguments ) } } ) , BI . Combo . EVENT _TRIGGER _CHANGE = "EVENT_TRIGGER_CHANGE" , BI . Combo . EVENT _CHANGE = "EVENT_CHANGE" , BI . Combo . EVENT _EXPAND = "EVENT_EXPAND" , BI . Combo . EVENT _COLLAPSE = "EVENT_COLLAPSE" , BI . Combo . EVENT _AFTER _INIT = "EVENT_AFTER_INIT" , BI . Combo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . Combo . EVENT _AFTER _POPUPVIEW = "EVENT_AFTER_POPUPVIEW" , BI . Combo . EVENT _BEFORE _HIDEVIEW = "EVENT_BEFORE_HIDEVIEW" , BI . Combo . EVENT _AFTER _HIDEVIEW = "EVENT_AFTER_HIDEVIEW" , BI . shortcut ( "bi.combo" , BI . Combo ) , BI . Expander = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . Expander . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-expander" , trigger : "click" , toggle : ! 0 , isDefaultInit : ! 1 , el : { } , popup : { } , expanderClass : "bi-expander-popup" , hoverClass : "bi-expander-hover" } ) } , _init : function ( ) { BI . Expander . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . _expanded = ! ! b . el . open , this . _initExpander ( ) , this . _initPullDownAction ( ) , this . expander . on ( BI . Controller . EVENT _CHANGE , function ( b , c , d ) { a . isEnabled ( ) && a . isValid ( ) && ( b === BI . Events . EXPAND && a . _popupView ( ) , b === BI . Events . COLLAPSE && a . _hideView ( ) , b === BI . Events . EXPAND && ( a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , a . fireEvent ( BI . Expander . EVENT _EXPAND ) ) , b === BI . Events . COLLAPSE && ( a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , a . isViewVisible ( ) && a . fireEvent ( BI . Expander . EVENT _COLLAPSE ) ) , b === BI . Events . CLICK && a . fireEvent ( BI . Expander . EVENT _TRIGGER _CHANGE , c , d ) ) } ) , this . element . hover ( function ( ) { a . isEnabled ( ) && a . isValid ( ) && a . expander . isEnabled ( ) && a . expander . isValid ( ) && a . element . addClass ( b . hoverClass ) } , function ( ) { a . isEnabled ( ) && a . isValid ( ) && a . expander . isEnabled ( ) && a . expander . isValid ( ) && a . element . removeClass ( b . hoverClass ) } ) , BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , element : this , items : [ { el : this . expander } ] } ) , b . isDefaultInit && this . _assertPopupView ( ) , this . expander . isOpened ( ) === ! 0 && this . _popupView ( ) } , _toggle : function ( ) { this . _assertPopupViewRender ( ) , this . popupView . isVisible ( ) ? this . _hideView ( ) : this . isEnabled ( ) && this . _popupView ( ) } , _initPullDownAction : function ( ) { var a = this , b = this . options , c = this . options . trigger . split ( "," ) ; BI . each ( c , function ( c , d ) { switch ( d )
var b = this ; this . options ; BI . any ( this . cardMap , function ( c , d ) { if ( BI . isEqual ( c , a + "" ) ) return b . layout . deleteCardByName ( c ) , delete b . cardMap [ c ] , ! 0 } ) } , getSelect : function ( ) { return this . curr } , getSelectedTab : function ( ) { return this . layout . getShowingCard ( ) } , getTab : function ( a ) { return this . _assertCard ( a ) , this . layout . getCardByName ( a ) } , setValue : function ( a ) { var b = this . layout . getShowingCard ( ) ; b && b . setValue ( a ) } , getValue : function ( ) { var a = this . layout . getShowingCard ( ) ; if ( a ) return a . getValue ( ) } , populate : function ( ) { var a = this . layout . getShowingCard ( ) ; if ( a ) return a . populate && a . populate . apply ( a , arguments ) } , empty : function ( ) { this . layout . deleteAllCard ( ) , this . cardMap = { } } , destroy : function ( ) { this . cardMap = { } , BI . Tab . superclass . destroy . apply ( this , arguments ) } } ) , BI . Tab . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.tab" , BI . Tab ) , BI . EL = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . EL . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-el" , el : { } , layout : { } } ) } , _init : function ( ) { BI . EL . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . ele = BI . createWidget ( b . el ) , BI . createWidget ( b . layout , { type : "bi.adaptive" , element : this , items : [ this . ele ] } ) , this . ele . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) } , setValue : function ( a ) { this . ele . setValue ( a ) } , getValue : function ( ) { return this . ele . getValue ( ) } , populate : function ( ) { this . ele . populate . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.el" , BI . EL ) , BI . Msg = function ( ) { var a , b , c ; return { alert : function ( a , b , c ) { this . _show ( ! 1 , a , b , c ) } , confirm : function ( a , b , c ) { this . _show ( ! 0 , a , b , c ) } , prompt : function ( a , b , c , d , e ) { } , toast : function ( a , b , c ) { b = b || { } , c = c || BI . Widget . _renderEngine . createElement ( "body" ) ; var d = b . level || "normal" , e = ! ! BI . isNull ( b . autoClose ) || b . autoClose , f = BI . createWidget ( { type : "bi.toast" , cls : "bi-message-animate bi-message-leave" , level : d , autoClose : e , text : a } ) ; BI . createWidget ( { type : "bi.absolute" , element : c , items : [ { el : f , left : "50%" , top : 10 } ] } ) , f . element . css ( { "margin-left" : - 1 * f . element . outerWidth ( ) / 2 } ) , f . element . removeClass ( "bi-message-leave" ) . addClass ( "bi-message-enter" ) , e && BI . delay ( function ( ) { f . element . removeClass ( "bi-message-enter" ) . addClass ( "bi-message-leave" ) , BI . delay ( function ( ) { f . destroy ( ) } , 1e3 ) } , 5e3 ) } , _show : function ( d , e , f , g ) { b = BI . Widget . _renderEngine . createElement ( '<div class="bi-z-index-mask">' ) . css ( { position : "absolute" , zIndex : BI . zIndex _tip - 2 , top : 0 , left : 0 , right : 0 , bottom : 0 , opacity : . 5 } ) . appendTo ( "body" ) , c = BI . Widget . _renderEngine . createElement ( '<div class="bi-message-depend">' ) . css ( { position : "absolute" , zIndex : BI . zIndex _tip - 1 , top : 0 , left : 0 , right : 0 , bottom : 0 } ) . appendTo ( "body" ) ; var h = function ( ) { a . destroy ( ) , b . remove ( ) } , i = [ ] ; d === ! 0 && i . push ( { el : { type : "bi.button" , text : BI . i18nText ( "BI-Basic_Cancel" ) , level : "ignore" , handler : function ( ) { h ( ) , BI . isFunction ( g ) && g . apply ( null , [ ! 1 ] ) } } } ) , i . push ( { el : { type : "bi.button" , text : BI . i18nText ( "BI-Basic_OK" ) , handler : function ( ) { h ( ) , BI . isFunction ( g ) && g . apply ( null , [ ! 0 ] ) } } } ) ; var j = { element : c , type : "bi.center_adapt" , items : [ { type : "bi.border" , cls : "bi-message-content bi-card" , items : { north : { el : { type : "bi.border" , cls : "bi-message-title bi-background" , items : { center : { el : { type : "bi.label" , text : e || BI . i18nText ( "BI-Basic_Prompt" ) , textAlign : "left" , hgap : 20 , height : 50 } } , east : { el : { type : "bi.icon_button" , cls : "bi-message-close close-font" , handler : function ( ) { h ( ) , BI . isFunction ( g ) && g . apply ( null , [ ! 1 ] ) } } , width : 60 } } } , height : 50 } , center : { el : { type : "bi.text" , cls : "bi-message-text" , tgap : 60 , hgap : 20 , lineHeight : 30 , whiteSpace : "normal" , text : f } } , south : { el : { type : "bi.absolute" , items : [ { el : { type : "bi.right_vertical_adapt" , hgap : 5 , items : i } , top : 0 , left : 20 , right : 20 , bottom : 0 } ] } , height : 60 } } , width : 400 , height : 300 } ] } ; a = BI . createWidget ( j ) } } } ( ) , BI . GridView = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . GridView . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-grid-view" , overflowX : ! 0 , overflowY : ! 0 , overscanColumnCount : 0 , overscanRowCount : 0 , rowHeightGetter : BI . emptyFn , columnWidthGetter : BI . emptyFn , scrollLeft : 0 , scrollTop : 0 , items : [ ] } ) } , _init : function ( ) { BI . GridView . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . renderedCells = [ ] , this . renderedKeys = [ ] , this . renderRange = {
type : "bi.center_adapt" , element : this , items : [ this . image ] } ) : BI . createWidget ( { type : "bi.adaptive" , element : this , items : [ this . image ] , scrollable : ! 1 } ) } , setWidth : function ( a ) { BI . ImageButton . superclass . setWidth . apply ( this , arguments ) , this . options . width = a } , setHeight : function ( a ) { BI . ImageButton . superclass . setHeight . apply ( this , arguments ) , this . options . height = a } , setImageWidth : function ( a ) { this . image . setWidth ( a ) } , setImageHeight : function ( a ) { this . image . setHeight ( a ) } , getImageWidth : function ( ) { return this . image . element . width ( ) } , getImageHeight : function ( ) { return this . image . element . height ( ) } , setSrc : function ( a ) { this . options . src = a , this . image . setSrc ( a ) } , getSrc : function ( ) { return this . image . getSrc ( ) } , doClick : function ( ) { BI . ImageButton . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . ImageButton . EVENT _CHANGE , this ) } } ) , BI . ImageButton . EVENT _CHANGE = "ImageButton.EVENT_CHANGE" , BI . shortcut ( "bi.image_button" , BI . ImageButton ) , BI . Button = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( a ) { var b = BI . Button . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( b , { baseCls : ( b . baseCls || "" ) + " bi-button" , minWidth : a . block === ! 0 || a . clear === ! 0 ? 0 : 80 , height : 24 , shadow : a . clear !== ! 0 , isShadowShowingOnSelected : ! 0 , readonly : ! 0 , iconCls : "" , level : "common" , block : ! 1 , clear : ! 1 , ghost : ! 1 , textAlign : "center" , whiteSpace : "nowrap" , forceCenter : ! 1 , textWidth : null , textHeight : null , hgap : a . clear ? 0 : 10 , vgap : 0 , tgap : 0 , bgap : 0 , lgap : 0 , rgap : 0 } ) } , _init : function ( ) { BI . Button . superclass . _init . apply ( this , arguments ) ; var a = this . options ; ! BI . isNumber ( a . height ) || a . clear || a . block ? a . clear || a . block ? this . element . css ( { lineHeight : a . height + "px" } ) : this . element . css ( { lineHeight : a . height - 2 + "px" } ) : this . element . css ( { height : a . height + "px" , lineHeight : a . height - 2 + "px" } ) , BI . isKey ( a . iconCls ) ? ( this . icon = BI . createWidget ( { type : "bi.icon" , width : 18 , height : a . height - 2 } ) , this . text = BI . createWidget ( { type : "bi.label" , text : a . text , value : a . value , height : a . height - 2 } ) , BI . createWidget ( { type : "bi.horizontal_auto" , cls : a . iconCls , element : this , hgap : a . hgap , vgap : a . vgap , tgap : a . tgap , bgap : a . bgap , lgap : a . lgap , rgap : a . rgap , items : [ { type : "bi.horizontal" , items : [ this . icon , this . text ] } ] } ) ) : this . text = BI . createWidget ( { type : "bi.label" , textAlign : a . textAlign , whiteSpace : a . whiteSpace , forceCenter : a . forceCenter , textWidth : a . textWidth , textHeight : a . textHeight , hgap : a . hgap , vgap : a . vgap , tgap : a . tgap , bgap : a . bgap , lgap : a . lgap , rgap : a . rgap , element : this , text : a . text , value : a . value } ) , a . block === ! 0 && this . element . addClass ( "block" ) , a . clear === ! 0 && this . element . addClass ( "clear" ) , a . ghost === ! 0 && this . element . addClass ( "ghost" ) , a . minWidth > 0 && this . element . css ( { "min-width" : a . minWidth + "px" } ) } , doClick : function ( ) { BI . Button . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . Button . EVENT _CHANGE , this ) } , setText : function ( a ) { BI . Button . superclass . setText . apply ( this , arguments ) , this . text . setText ( a ) } , setValue : function ( a ) { BI . Button . superclass . setValue . apply ( this , arguments ) , this . isReadOnly ( ) || this . text . setValue ( a ) } , 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 ) } , destroy : function ( ) { BI . Button . superclass . destroy . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.button" , BI . Button ) , BI . Button . EVENT _CHANGE = "EVENT_CHANGE" , BI . TextButton = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { var a = BI . TextButton . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-text-button" , textAlign : "center" , whiteSpace : "nowrap" , forceCenter : ! 1 , textWidth : null , textHeight : null , hgap : 0 , lgap : 0 , rgap : 0 , text : "" , py : "" } ) } , _init : function ( ) { BI . TextButton . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . text = BI . createWidget ( { type : "bi.label" , element : this , textAlign : a . textAlign , whiteSpace : a . whiteSpace , textWidth : a . textWidth , textHeight : a . textHeight , forceCenter : a . forceCenter , width : a . width , height : a . height , hgap : a . hgap , lgap : a . lgap , rgap : a . rgap , text : a . text , value : a . value , py : a . py , keyword : a . keyword } ) } , doClick : function ( ) { BI . TextButton . superclass . doClick .
a . fireEvent ( BI . MultifileEditor . EVENT _PROGRESS , arguments ) } ) , this . file . on ( BI . File . EVENT _UPLOADED , function ( ) { a . fireEvent ( BI . MultifileEditor . EVENT _UPLOADED , arguments ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.adaptive" , scrollable : ! 1 , items : [ this . file ] } , top : 0 , right : 0 , left : 0 , bottom : 0 } ] } ) } , select : function ( ) { this . file . select ( ) } , getValue : function ( ) { return this . file . getValue ( ) } , upload : function ( ) { this . file . upload ( ) } , reset : function ( ) { this . file . reset ( ) } } ) , BI . MultifileEditor . EVENT _CHANGE = "MultifileEditor.EVENT_CHANGE" , BI . MultifileEditor . EVENT _UPLOADSTART = "MultifileEditor.EVENT_UPLOADSTART" , BI . MultifileEditor . EVENT _ERROR = "MultifileEditor.EVENT_ERROR" , BI . MultifileEditor . EVENT _PROGRESS = "MultifileEditor.EVENT_PROGRESS" , BI . MultifileEditor . EVENT _UPLOADED = "MultifileEditor.EVENT_UPLOADED" , BI . shortcut ( "bi.multifile_editor" , BI . MultifileEditor ) , BI . TextAreaEditor = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return $ . extend ( BI . TextAreaEditor . superclass . _defaultConfig . apply ( ) , { baseCls : "bi-textarea-editor" , value : "" } ) } , _init : function ( ) { BI . TextAreaEditor . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this ; this . content = BI . createWidget ( { type : "bi.layout" , tagName : "textarea" , width : "100%" , height : "100%" , cls : "bi-textarea textarea-editor-content display-block" } ) , this . content . element . css ( { resize : "none" , whiteSpace : "normal" } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.adaptive" , items : [ this . content ] } , left : 0 , right : 3 , top : 6 , bottom : 5 } ] } ) , this . content . element . on ( "input propertychange" , function ( a ) { b . _checkWaterMark ( ) , b . fireEvent ( BI . TextAreaEditor . EVENT _CHANGE ) } ) , this . content . element . focus ( function ( ) { b . isValid ( ) && ( b . _focus ( ) , b . fireEvent ( BI . TextAreaEditor . EVENT _FOCUS ) ) , BI . Widget . _renderEngine . createElement ( document ) . bind ( "mousedown." + b . getName ( ) , function ( a ) { BI . DOM . isExist ( b ) && ! b . element . _ _isMouseInBounds _ _ ( a ) && ( BI . Widget . _renderEngine . createElement ( document ) . unbind ( "mousedown." + b . getName ( ) ) , b . content . element . blur ( ) ) } ) } ) , this . content . element . blur ( function ( ) { b . isValid ( ) && ( b . _blur ( ) , b . fireEvent ( BI . TextAreaEditor . EVENT _BLUR ) ) , BI . Widget . _renderEngine . createElement ( document ) . unbind ( "mousedown." + b . getName ( ) ) } ) , BI . isKey ( a . value ) && b . setValue ( a . value ) , BI . isNotNull ( a . style ) && b . setStyle ( a . style ) , this . _checkWaterMark ( ) } , _checkWaterMark : function ( ) { var a = this , b = this . options , c = this . getValue ( ) ; BI . isNotEmptyString ( c ) ? ( this . watermark && this . watermark . destroy ( ) , this . watermark = null ) : BI . isNotEmptyString ( b . watermark ) && ( this . watermark ? ( this . watermark . setText ( b . watermark ) , this . watermark . setValid ( ! b . invalid ) , this . watermark . setEnable ( ! b . disabled ) ) : ( this . watermark = BI . createWidget ( { type : "bi.text_button" , cls : "bi-water-mark" , textAlign : "left" , height : 30 , text : b . watermark , invalid : b . invalid , disabled : b . disabled } ) , this . watermark . on ( BI . TextButton . EVENT _CHANGE , function ( ) { a . focus ( ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . watermark , left : 0 , top : 0 , right : 0 } ] } ) ) ) } , _focus : function ( ) { this . content . element . addClass ( "textarea-editor-focus" ) , this . _checkWaterMark ( ) } , _blur : function ( ) { this . content . element . removeClass ( "textarea-editor-focus" ) , this . _checkWaterMark ( ) } , focus : function ( ) { this . _focus ( ) , this . content . element . focus ( ) } , blur : function ( ) { this . _blur ( ) , this . content . element . blur ( ) } , getValue : function ( ) { return this . content . element . val ( ) } , setValue : function ( a ) { this . content . element . val ( a ) , this . _checkWaterMark ( ) } , setStyle : function ( a ) { this . style = a , this . element . css ( a ) , this . content . element . css ( BI . extend ( { } , a , { color : a . color || BI . DOM . getContrastColor ( BI . DOM . isRGBColor ( a . backgroundColor ) ? BI . DOM . rgb2hex ( a . backgroundColor ) : a . backgroundColor ) } ) ) } , getStyle : function ( ) { return this . style } , _setValid : function ( a ) { BI . TextAreaEditor . superclass . _setValid . apply ( this , arguments ) } } ) , BI . TextAreaEditor . EVENT _CHANGE = "EVENT_CHANGE" , BI . TextAreaEditor . EVENT _BLUR = "EVENT_BLUR" , BI . TextAreaEditor . EVENT _FOCUS = "EVENT_FOCUS" , BI . shortcut ( "bi.textarea_editor" , BI . TextAreaEditor ) , BI . Icon = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var a = BI . Icon . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { tagName : "i" , baseCls : ( a . baseCls || "" ) + " x - icon b - font horizon - c
type : "bi.label" , cls : "bubble-text bubble-" + a . level , text : a . text , hgap : 5 , height : 18 } ) } , _top : function ( ) { return BI . createWidget ( { type : "bi.vertical" , items : [ { el : this . _createBubbleText ( ) , height : 18 } , { el : { type : "bi.layout" } , height : 3 } ] } ) } , _bottom : function ( ) { return BI . createWidget ( { type : "bi.vertical" , items : [ { el : { type : "bi.layout" } , height : 3 } , { el : this . _createBubbleText ( ) , height : 18 } ] } ) } , _left : function ( ) { return BI . createWidget ( { type : "bi.right" , items : [ { el : { type : "bi.layout" , width : 3 , height : 18 } } , { el : this . _createBubbleText ( ) } ] } ) } , _right : function ( ) { return BI . createWidget ( { type : "bi.left" , items : [ { el : { type : "bi.layout" , width : 3 , height : 18 } } , { el : this . _createBubbleText ( ) } ] } ) } , setText : function ( a ) { this . text . setText ( a ) } } ) , BI . shortcut ( "bi.bubble" , BI . Bubble ) , BI . Toast = BI . inherit ( BI . Tip , { _const : { minWidth : 200 , hgap : 10 } , _defaultConfig : function ( ) { return BI . extend ( BI . Toast . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-toast" , text : "" , level : "success" } ) } , _init : function ( ) { BI . Toast . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . element . css ( { minWidth : this . _const . minWidth + "px" } ) , this . element . addClass ( "toast-" + b . level ) ; var c = function ( a ) { return a . stopPropagation ( ) , a . stopEvent ( ) , ! 1 } ; this . element . bind ( { click : c , mousedown : c , mouseup : c , mouseover : c , mouseenter : c , mouseleave : c , mousemove : c } ) ; var d = "close-font" ; switch ( b . level ) { case "success" : d = "toast-success-font" ; break ; case "error" : d = "toast-error-font" ; break ; case "warning" : d = "toast-warning-font" ; break ; case "normal" : default : d = "toast-message-font" } var e = [ { type : "bi.icon_button" , disableSelected : ! 0 , cls : d + " toast-icon" , width : 36 } , { el : { type : "bi.label" , whiteSpace : "normal" , text : b . text , textHeight : 16 , textAlign : "left" } , rgap : b . autoClose ? this . _const . hgap : 0 } ] , f = [ 36 , "" ] ; b . autoClose === ! 1 && ( e . push ( { type : "bi.icon_button" , cls : "close-font toast-icon" , handler : function ( ) { a . destroy ( ) } , width : 36 } ) , f . push ( 36 ) ) , this . text = BI . createWidget ( { type : "bi.horizontal_adapt" , element : this , items : e , vgap : 7 , columnSize : f } ) } , setText : function ( a ) { this . text . setText ( a ) } } ) , 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 , height : 20 } ) } , _init : function ( ) { BI . Tooltip . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . element . addClass ( "tooltip-" + a . level ) ; var b = function ( b ) { a . stopPropagation && b . stopPropagation ( ) , a . stopEvent && b . stopEvent ( ) } ; this . element . bind ( { click : b , mousedown : b , mouseup : b , mouseover : b , mouseenter : b , mouseleave : b , mousemove : b } ) ; var c = ( a . text + "" ) . split ( "\n" ) ; c . length > 1 ? BI . createWidget ( { type : "bi.vertical" , element : this , hgap : this . _const . hgap , items : BI . map ( c , function ( a , b ) { return { type : "bi.label" , textAlign : "left" , whiteSpace : "normal" , text : b , textHeight : 16 } } ) } ) : this . text = BI . createWidget ( { type : "bi.label" , element : this , textAlign : "left" , whiteSpace : "normal" , text : a . text , textHeight : 16 , hgap : this . _const . hgap , vgap : this . _const . vgap } ) } , setWidth : function ( a ) { this . element . width ( a - 2 * this . _const . hgap ) } , setText : function ( a ) { this . text && this . text . setText ( a ) } , setLevel : function ( a ) { this . element . removeClass ( "tooltip-success" ) . removeClass ( "tooltip-warning" ) , this . element . addClass ( "tooltip-" + a ) } } ) , BI . shortcut ( "bi.tooltip" , BI . Tooltip ) , BI . Trigger = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var a = BI . Trigger . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . 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 ( a ) { var b = this , c = this . options ; a = BI . Tree . transformToTreeFormat ( a ) ; var d = [ ] ; ret
case consts . folder . CLOSE : case consts . folder . DOCU : e [ e . length - 1 ] = c } b . attr ( "class" , e . join ( "_" ) ) } } } , replaceSwitchClass : function ( a , b , c ) { if ( b ) { var d = b . attr ( "class" ) ; if ( void 0 != d ) { var e = d . split ( "_" ) ; switch ( c ) { case consts . line . ROOT : case consts . line . ROOTS : case consts . line . CENTER : case consts . line . BOTTOM : case consts . line . NOLINE : e [ 0 ] = view . makeNodeLineClassEx ( a ) + c ; break ; case consts . folder . OPEN : case consts . folder . CLOSE : case consts . folder . DOCU : e [ 1 ] = c } b . attr ( "class" , e . join ( "_" ) ) , c !== consts . folder . DOCU ? b . removeAttr ( "disabled" ) : b . attr ( "disabled" , "disabled" ) } } } , selectNode : function ( a , b , c ) { c || view . cancelPreSelectedNode ( a , null , b ) , $$ ( b , consts . id . A , a ) . addClass ( consts . node . CURSELECTED ) , data . addSelectedNode ( a , b ) , a . treeObj . trigger ( consts . event . SELECTED , [ event , a . treeId , b ] ) } , setNodeFontCss : function ( a , b ) { var c = $$ ( b , consts . id . A , a ) , d = view . makeNodeFontCss ( a , b ) ; d && c . css ( d ) } , setNodeLineIcos : function ( a , b ) { if ( b ) { var c = $$ ( b , consts . id . SWITCH , a ) , d = $$ ( b , consts . id . UL , a ) , e = $$ ( b , consts . id . ICON , a ) , f = view . makeUlLineClass ( a , b ) ; 0 == f . length ? d . removeClass ( consts . line . LINE ) : d . addClass ( f ) , c . attr ( "class" , view . makeNodeLineClass ( a , b ) ) , b . isParent ? c . removeAttr ( "disabled" ) : c . attr ( "disabled" , "disabled" ) , e . removeAttr ( "style" ) , e . attr ( "style" , view . makeNodeIcoStyle ( a , b ) ) , e . attr ( "class" , view . makeNodeIcoClass ( a , b ) ) } } , setNodeName : function ( a , b ) { var c = data . getNodeTitle ( a , b ) , d = $$ ( b , consts . id . SPAN , a ) ; if ( d . empty ( ) , a . view . nameIsHTML ? d . html ( data . getNodeName ( a , b ) ) : d . text ( data . getNodeName ( a , b ) ) , tools . apply ( a . view . showTitle , [ a . treeId , b ] , a . view . showTitle ) ) { var e = $$ ( b , consts . id . A , a ) ; e . attr ( "title" , c ? c : "" ) } } , setNodeTarget : function ( a , b ) { var c = $$ ( b , consts . id . A , a ) ; c . attr ( "target" , view . makeNodeTarget ( b ) ) } , setNodeUrl : function ( a , b ) { var c = $$ ( b , consts . id . A , a ) , d = view . makeNodeUrl ( a , b ) ; null == d || 0 == d . length ? c . removeAttr ( "href" ) : c . attr ( "href" , d ) } , switchNode : function ( a , b ) { if ( b . open || ! tools . canAsync ( a , b ) ) view . expandCollapseNode ( a , b , ! b . open ) ; else if ( a . async . enable ) { if ( ! view . asyncNode ( a , b ) ) return void view . expandCollapseNode ( a , b , ! b . open ) } else b && view . expandCollapseNode ( a , b , ! b . open ) } } ; $ . fn . zTree = { consts : _consts , _z : { tools : tools , view : view , event : event , data : data } , getZTreeObj : function ( a ) { var b = data . getZTreeTools ( a ) ; return b ? b : null } , destroy : function ( a ) { if ( a && a . length > 0 ) view . destroy ( data . getSetting ( a ) ) ; else for ( var b in settings ) view . destroy ( settings [ b ] ) } , init : function ( a , b , c ) { var d = tools . clone ( _setting ) ; $ . extend ( ! 0 , d , b ) , d . treeId = a . attr ( "id" ) , d . treeObj = a , d . treeObj . empty ( ) , settings [ d . treeId ] = d , "undefined" == typeof document . body . style . maxHeight && ( d . view . expandSpeed = "" ) , data . initRoot ( d ) ; var e = data . getRoot ( d ) , f = d . data . key . children ; c = c ? tools . clone ( tools . isArray ( c ) ? c : [ c ] ) : [ ] , d . data . simpleData . enable ? e [ f ] = data . transformTozTreeFormat ( d , c ) : e [ f ] = c , data . initCache ( d ) , event . unbindTree ( d ) , event . bindTree ( d ) , event . unbindEvent ( d ) , event . bindEvent ( d ) ; var g = { setting : d , addNodes : function ( a , b , c ) { function e ( ) { view . addNodes ( d , a , f , 1 == c ) } if ( ! b ) return null ; if ( a || ( a = null ) , a && ! a . isParent && d . data . keep . leaf ) return null ; var f = tools . clone ( tools . isArray ( b ) ? b : [ b ] ) ; return tools . canAsync ( d , a ) ? view . asyncNode ( d , a , c , e ) : e ( ) , f } , cancelSelectedNode : function ( a ) { view . cancelPreSelectedNode ( d , a ) } , destroy : function ( ) { view . destroy ( d ) } , expandAll : function ( a ) { return a = ! ! a , view . expandCollapseSonNode ( d , null , a , ! 0 ) , a } , expandNode : function ( a , b , c , e , f ) { if ( ! a || ! a . isParent ) return null ; if ( b !== ! 0 && b !== ! 1 && ( b = ! a . open ) , f = ! ! f , f && b && 0 == tools . apply ( d . callback . beforeExpand , [ d . treeId , a ] , ! 0 ) ) return null ; if ( f && ! b && 0 == tools . apply ( d . callback . beforeCollapse , [ d . treeId , a ] , ! 0 ) ) return null ; if ( b && a . parentTId && view . expandCollapseParentNode ( d , a . getParentNode ( ) , b , ! 1 ) , b === a . open && ! c ) return null ; if ( data . getRoot ( d ) . expandTriggerFlag = f , ! tools . canAsync ( d , a ) && c ) view . expandCollapseSonNode ( d , a , b , ! 0 , function ( ) { if ( e !== ! 1 ) try { $$ ( a , d ) . focus ( ) . blur ( ) } catch ( b ) { } } ) ; else if ( a . open = ! b , view . switchNode ( this . setting , a ) , e !== ! 1 ) try { $$ ( a , d ) . focus ( ) . blur ( ) } catch ( g ) { } return b } , getNodes : function ( ) { return data . getNodes ( d ) } , getNodeByParam : function ( a , b , c ) { return a ? data . getNodeByParam ( d , c ? c [ d . data . key . children ] : data . getNodes ( d ) , a , b ) : null } , getNodeByTId : function ( a ) { return data . getNodeCache ( d , a ) } , getNodesByParam : function ( a , b , c ) { return a ? data
value : b . value , py : b . py , keyword : b . keyword } ) , this . checkbox . on ( BI . Controller . EVENT _CHANGE , function ( b ) { b === BI . Events . CLICK && ( this . isSelected ( ) ? a . triggerExpand ( ) : a . triggerCollapse ( ) ) } ) ; var c = BI . LogicFactory . createLogicTypeByDirection ( BI . Direction . Left ) , d = BI . LogicFactory . createLogicItemsByDirection ( BI . Direction . Left , { width : 24 , el : this . checkbox } , this . text ) ; BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( c , BI . extend ( b . logic , { items : d } ) ) ) ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . MidPlusGroupNode . superclass . doClick . apply ( this , arguments ) , this . checkbox . setSelected ( this . isSelected ( ) ) } , setOpened : function ( a ) { BI . MidPlusGroupNode . superclass . setOpened . apply ( this , arguments ) , BI . isNotNull ( this . checkbox ) && this . checkbox . setSelected ( a ) } } ) , BI . shortcut ( "bi.mid_plus_group_node" , BI . MidPlusGroupNode ) , BI . MultiLayerIconArrowNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . MultiLayerIconArrowNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { extraCls : "bi-multilayer-icon-arrow-node bi-list-item" , layer : 0 , id : "" , pId : "" , open : ! 1 , height : 24 , iconHeight : 16 , iconWidth : 16 , iconCls : "" } ) } , _init : function ( ) { BI . MultiLayerIconArrowNode . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . node = BI . createWidget ( { type : "bi.icon_arrow_node" , iconCls : b . iconCls , id : b . id , pId : b . pId , open : b . open , height : b . height , iconHeight : b . iconHeight , iconWidth : b . iconWidth , hgap : b . hgap , text : b . text , value : b . value , py : b . py } ) , this . node . on ( BI . Controller . EVENT _CHANGE , function ( b ) { a . setSelected ( a . isSelected ( ) ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) ; var c = [ ] ; BI . count ( 0 , b . layer , function ( ) { c . push ( { type : "bi.layout" , width : 24 , height : b . height } ) } ) , c . push ( this . node ) , BI . createWidget ( { type : "bi.td" , element : this , columnSize : BI . makeArray ( b . layer , 24 ) , items : [ c ] } ) } , isOnce : function ( ) { return ! 0 } , doRedMark : function ( ) { this . node . doRedMark . apply ( this . node , arguments ) } , unRedMark : function ( ) { this . node . unRedMark . apply ( this . node , arguments ) } , isSelected : function ( ) { return this . node . isSelected ( ) } , setSelected : function ( a ) { BI . MultiLayerIconArrowNode . superclass . setSelected . apply ( this , arguments ) , this . node . setSelected ( a ) } , doClick : function ( ) { BI . NodeButton . superclass . doClick . apply ( this , arguments ) , this . node . setSelected ( this . isSelected ( ) ) } , setOpened : function ( a ) { BI . MultiLayerIconArrowNode . superclass . setOpened . apply ( this , arguments ) , this . node . setOpened ( a ) } } ) , BI . shortcut ( "bi.multilayer_icon_arrow_node" , BI . MultiLayerIconArrowNode ) , BI . PlusGroupNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . PlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-plus-group-node bi-list-item" , logic : { dynamic : ! 1 } , id : "" , pId : "" , open : ! 1 , height : 24 } ) } , _init : function ( ) { BI . PlusGroupNode . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . checkbox = BI . createWidget ( { type : "bi.tree_node_checkbox" } ) , this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : b . height , height : b . height , hgap : b . hgap , text : b . text , value : b . value , py : b . py } ) , this . checkbox . on ( BI . Controller . EVENT _CHANGE , function ( b ) { b === BI . Events . CLICK && a . setSelected ( a . isSelected ( ) ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) ; var c = BI . LogicFactory . createLogicTypeByDirection ( BI . Direction . Left ) , d = BI . LogicFactory . createLogicItemsByDirection ( BI . Direction . Left , { width : 24 , el : this . checkbox } , this . text ) ; BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( c , BI . extend ( b . logic , { items : d } ) ) ) ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . PlusGroupNode . superclass . doClick . apply ( this , arguments ) , this . checkbox . setSelected ( this . isSelected ( ) ) } , setOpened : function ( a ) { BI . PlusGroupNode . superclass . setOpened . apply ( this , arguments ) , this . checkbox && this . checkbox . setSelected ( a ) } } ) , BI . shortcut ( "bi.plus_group_node" , BI . PlusGroupNode ) , BI . Switch = BI . inherit ( BI . BasicButton , { props : { extraCls : "bi-switch" , height : 22 , width : 44
BI . SimpleColorChooser = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SimpleColorChooser . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-simple-color-chooser" , value : "#ffffff" } ) } , _init : function ( ) { BI . SimpleColorChooser . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . combo = BI . createWidget ( { type : "bi.color_chooser" , element : this , container : b . container , value : b . value , popup : { type : "bi.simple_color_chooser_popup" } } ) , this . combo . on ( BI . ColorChooser . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . SimpleColorChooser . EVENT _CHANGE , arguments ) } ) } , isViewVisible : function ( ) { return this . combo . isViewVisible ( ) } , hideView : function ( ) { this . combo . hideView ( ) } , showView : function ( ) { this . combo . showView ( ) } , setValue : function ( a ) { this . combo . setValue ( a ) } , getValue : function ( ) { return this . combo . getValue ( ) } } ) , BI . SimpleColorChooser . EVENT _CHANGE = "ColorChooser.EVENT_CHANGE" , BI . shortcut ( "bi.simple_color_chooser" , BI . SimpleColorChooser ) , BI . ColorChooserTrigger = BI . inherit ( BI . Trigger , { _defaultConfig : function ( ) { var a = BI . ColorChooserTrigger . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-color-chooser-trigger bi-border" , height : 24 } ) } , _init : function ( ) { BI . ColorChooserTrigger . superclass . _init . apply ( this , arguments ) , this . colorContainer = BI . createWidget ( { type : "bi.layout" , cls : "color-chooser-trigger-content" + ( BI . isIE9Below && BI . isIE9Below ( ) ? " hack" : "" ) } ) ; var a = BI . createWidget ( { type : "bi.icon_button" , disableSelected : ! 0 , cls : "icon-combo-down-icon trigger-triangle-font" , width : 12 , height : 8 } ) ; BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . colorContainer , left : 3 , right : 3 , top : 3 , bottom : 3 } , { el : a , right : - 1 , bottom : 1 } ] } ) , BI . isNotNull ( this . options . value ) && this . setValue ( this . options . value ) } , setValue : function ( a ) { BI . ColorChooserTrigger . superclass . setValue . apply ( this , arguments ) , "" === a ? this . colorContainer . element . css ( "background-color" , "" ) . removeClass ( "trans-color-background" ) . addClass ( "auto-color-background" ) : "transparent" === a ? this . colorContainer . element . css ( "background-color" , "" ) . removeClass ( "auto-color-background" ) . addClass ( "trans-color-background" ) : this . colorContainer . element . css ( { "background-color" : a } ) . removeClass ( "auto-color-background" ) . removeClass ( "trans-color-background" ) } } ) , BI . ColorChooserTrigger . EVENT _CHANGE = "ColorChooserTrigger.EVENT_CHANGE" , BI . shortcut ( "bi.color_chooser_trigger" , BI . ColorChooserTrigger ) , BI . LongColorChooserTrigger = BI . inherit ( BI . Trigger , { _defaultConfig : function ( ) { var a = BI . LongColorChooserTrigger . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-color-chooser-trigger bi-border" , height : 24 } ) } , _init : function ( ) { BI . LongColorChooserTrigger . superclass . _init . apply ( this , arguments ) ; var a = this ; this . options ; this . colorContainer = BI . createWidget ( { type : "bi.htape" , cls : "color-chooser-trigger-content" , items : [ { type : "bi.icon_change_button" , ref : function ( b ) { a . changeIcon = b } , iconCls : "auto-color-icon" , width : 24 , iconWidth : 16 , iconHeight : 16 } , { el : { type : "bi.label" , ref : function ( b ) { a . label = b } , textAlign : "left" , hgap : 5 , height : 18 , text : BI . i18nText ( "BI-Basic_Auto" ) } } ] } ) ; var b = BI . createWidget ( { type : "bi.icon_button" , disableSelected : ! 0 , cls : "icon-combo-down-icon trigger-triangle-font" , width : 12 , height : 8 } ) ; BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . colorContainer , left : 3 , right : 3 , top : 3 , bottom : 3 } , { el : b , right : 3 , bottom : 3 } ] } ) , this . options . value && this . setValue ( this . options . value ) } , setValue : function ( a ) { BI . LongColorChooserTrigger . superclass . setValue . apply ( this , arguments ) , "" === a ? ( this . colorContainer . element . css ( "background-color" , "" ) , this . changeIcon . setVisible ( ! 0 ) , this . label . setVisible ( ! 0 ) , this . changeIcon . setIcon ( "auto-color-icon" ) , this . label . setText ( BI . i18nText ( "BI-Basic_Auto" ) ) ) : "transparent" === a ? ( this . colorContainer . element . css ( "background-color" , "" ) , this . changeIcon . setVisible ( ! 0 ) , this . label . setVisible ( ! 0 ) , this . changeIcon . setIcon ( "trans-color-icon" ) , this . label . setText ( BI . i18nText ( "BI-Transparent_Color" ) ) ) : ( this . colorContainer . element . css ( { "background-color" : a } ) , this . changeIcon . setVisible ( ! 1 ) , this . label . setVisible ( ! 1 ) ) } } ) , BI . LongColorChooserTrigger . EVENT _CHAN
var b = this . options , c = this . _digest ( a , this . options . items ) ; a = BI . isArray ( a ) ? a [ 0 ] : a , BI . isNotEmptyString ( c ) ? ( this . button . setIcon ( c ) , this . button . setSelected ( ! 0 ) , this . down . setSelected ( ! 0 ) ) : ( this . button . setIcon ( b . iconCls ) , this . button . setSelected ( ! 1 ) , this . down . setSelected ( ! 1 ) ) } } ) , BI . IconComboTrigger . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.icon_combo_trigger" , BI . IconComboTrigger ) , BI . IconTextValueCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . IconTextValueCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-icon-text-value-combo" , height : 24 , iconHeight : null , iconWidth : null , value : "" , attributes : { tabIndex : 0 } } ) } , _init : function ( ) { BI . IconTextValueCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . trigger = BI . createWidget ( { type : "bi.select_icon_text_trigger" , cls : "icon-text-value-trigger" , items : b . items , height : b . height , text : b . text , iconCls : b . iconCls , value : b . value , iconHeight : b . iconHeight , iconWidth : b . iconWidth , iconWrapperWidth : b . iconWrapperWidth } ) , this . popup = BI . createWidget ( { type : "bi.icon_text_value_combo_popup" , items : b . items , value : b . value , iconHeight : b . iconHeight , iconWidth : b . iconWidth , iconWrapperWidth : b . iconWrapperWidth } ) , this . popup . on ( BI . IconTextValueComboPopup . EVENT _CHANGE , function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . textIconCombo . hideView ( ) , a . fireEvent ( BI . IconTextValueCombo . EVENT _CHANGE , arguments ) } ) , this . popup . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . textIconCombo = BI . createWidget ( { type : "bi.combo" , element : this , container : b . container , adjustLength : 2 , el : this . trigger , popup : { el : this . popup , maxHeight : 240 } } ) , BI . isKey ( b . value ) && this . setValue ( b . value ) } , _checkError : function ( a ) { if ( BI . isNotNull ( a ) ) { a = BI . isArray ( a ) ? a : [ a ] ; var b = BI . find ( this . options . items , function ( b , c ) { return BI . contains ( a , c . value ) } ) ; BI . isNull ( b ) ? this . element . removeClass ( "combo-error" ) . addClass ( "combo-error" ) : this . element . removeClass ( "combo-error" ) } } , setValue : function ( a ) { this . trigger . setValue ( a ) , this . popup . setValue ( a ) , this . _checkError ( a ) } , getValue : function ( ) { var a = this . popup . getValue ( ) ; return BI . isNull ( a ) ? [ ] : BI . isArray ( a ) ? a : [ a ] } , populate : function ( a ) { this . options . items = a , this . textIconCombo . populate ( a ) } } ) , BI . IconTextValueCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.icon_text_value_combo" , BI . IconTextValueCombo ) , BI . IconTextValueComboPopup = BI . inherit ( BI . Pane , { _defaultConfig : function ( ) { return BI . extend ( BI . IconTextValueComboPopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-icon-text-icon-popup" } ) } , _init : function ( ) { BI . IconTextValueComboPopup . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this ; this . popup = BI . createWidget ( { type : "bi.button_group" , items : BI . createItems ( a . items , { type : "bi.single_select_icon_text_item" , height : 24 , iconHeight : a . iconHeight , iconWidth : a . iconWidth , iconWrapperWidth : a . iconWrapperWidth } ) , chooseType : BI . ButtonGroup . CHOOSE _TYPE _SINGLE , layouts : [ { type : "bi.vertical" } ] , value : a . value } ) , this . popup . on ( BI . Controller . EVENT _CHANGE , function ( a , c , d ) { b . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , a === BI . Events . CLICK && b . fireEvent ( BI . IconTextValueComboPopup . EVENT _CHANGE , c , d ) } ) , BI . createWidget ( { type : "bi.vertical" , element : this , vgap : 5 , items : [ this . popup ] } ) } , populate : function ( a ) { BI . IconTextValueComboPopup . superclass . populate . apply ( this , arguments ) ; var b = this . options ; a = BI . createItems ( a , { type : "bi.single_select_icon_text_item" , height : 24 , iconWrapperWidth : b . iconWrapperWidth , iconHeight : b . iconHeight , iconWidth : b . iconWidth } ) , this . popup . populate ( a ) } , getValue : function ( ) { return this . popup . getValue ( ) } , setValue : function ( a ) { this . popup . setValue ( a ) } } ) , BI . IconTextValueComboPopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.icon_text_value_combo_popup" , BI . IconTextValueComboPopup ) , BI . SearchTextValueCombo = BI . inherit ( BI . Widget , { props : { baseCls : "bi-search-text-value-combo" , height : 24 , text : "" , items : [ ] , tipType : "" , warningTitle : "" , attributes : { tabIndex : 0 } } , render : function ( ) { var a = this , b = this . options ; return { type : "bi.absolute" , items : [ { el : { type : "bi.combo" , container : b . container , adjustLength : 2 , toggle : ! 1 , ref : function ( ) { a . combo = this } , el : { type : "bi.search_text_value_trigger" , cls : " search - text -
a . fireEvent ( BI . SignEditor . EVENT _SPACE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _ERROR , function ( ) { a . _checkText ( ) , a . fireEvent ( BI . SignEditor . EVENT _ERROR , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _ENTER , function ( ) { a . fireEvent ( BI . SignEditor . EVENT _ENTER , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _RESTRICT , function ( ) { a . fireEvent ( BI . SignEditor . EVENT _RESTRICT , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _EMPTY , function ( ) { a . fireEvent ( BI . SignEditor . EVENT _EMPTY , arguments ) } ) , BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , element : this , items : [ this . editor ] } ) , this . _showHint ( ) , a . _checkText ( ) } , _checkText : function ( ) { var a = this . options ; BI . nextTick ( BI . bind ( function ( ) { "" === this . editor . getValue ( ) ? ( this . text . setValue ( a . watermark || "" ) , this . text . element . addClass ( "bi-water-mark" ) ) : ( this . text . setValue ( this . editor . getValue ( ) ) , this . text . element . removeClass ( "bi-water-mark" ) ) } , this ) ) } , _showInput : function ( ) { this . editor . visible ( ) , this . text . invisible ( ) } , _showHint : function ( ) { this . editor . invisible ( ) , this . text . visible ( ) } , setTitle : function ( a ) { this . text . setTitle ( a ) } , setWarningTitle : function ( a ) { this . text . setWarningTitle ( a ) } , focus : function ( ) { this . _showInput ( ) , this . editor . focus ( ) } , blur : function ( ) { this . editor . blur ( ) , this . _showHint ( ) , this . _checkText ( ) } , doRedMark : function ( ) { "" === this . editor . getValue ( ) && BI . isKey ( this . options . watermark ) || this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doHighLight : function ( ) { "" === this . editor . getValue ( ) && BI . isKey ( this . options . watermark ) || this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } , isValid : function ( ) { return this . editor . isValid ( ) } , setErrorText : function ( a ) { this . editor . setErrorText ( a ) } , getErrorText : function ( ) { return this . editor . getErrorText ( ) } , isEditing : function ( ) { return this . editor . isEditing ( ) } , getLastValidValue : function ( ) { return this . editor . getLastValidValue ( ) } , setValue : function ( a ) { this . editor . setValue ( a ) , this . _checkText ( ) } , getValue : function ( ) { return this . editor . getValue ( ) } , getState : function ( ) { return this . text . getValue ( ) } , setState : function ( a ) { this . _showHint ( ) , this . text . setValue ( a ) } } ) , BI . SignEditor . EVENT _CHANGE = "EVENT_CHANGE" , BI . SignEditor . EVENT _FOCUS = "EVENT_FOCUS" , BI . SignEditor . EVENT _BLUR = "EVENT_BLUR" , BI . SignEditor . EVENT _CLICK = "EVENT_CLICK" , BI . SignEditor . EVENT _KEY _DOWN = "EVENT_KEY_DOWN" , BI . SignEditor . EVENT _CLICK _LABEL = "EVENT_CLICK_LABEL" , BI . SignEditor . EVENT _START = "EVENT_START" , BI . SignEditor . EVENT _PAUSE = "EVENT_PAUSE" , BI . SignEditor . EVENT _STOP = "EVENT_STOP" , BI . SignEditor . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . SignEditor . EVENT _VALID = "EVENT_VALID" , BI . SignEditor . EVENT _ERROR = "EVENT_ERROR" , BI . SignEditor . EVENT _ENTER = "EVENT_ENTER" , BI . SignEditor . EVENT _RESTRICT = "EVENT_RESTRICT" , BI . SignEditor . EVENT _SPACE = "EVENT_SPACE" , BI . SignEditor . EVENT _EMPTY = "EVENT_EMPTY" , BI . shortcut ( "bi.sign_editor" , BI . SignEditor ) , BI . StateEditor = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var a = BI . StateEditor . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-state-editor" , hgap : 4 , vgap : 2 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , validationChecker : BI . emptyFn , quitChecker : BI . emptyFn , allowBlank : ! 0 , watermark : "" , errorText : "" , height : 24 , text : BI . i18nText ( "BI-Basic_Unrestricted" ) } ) } , _init : function ( ) { BI . StateEditor . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . editor = BI . createWidget ( { type : "bi.editor" , height : b . height , hgap : b . hgap , vgap : b . vgap , lgap : b . lgap , rgap : b . rgap , tgap : b . tgap , bgap : b . bgap , value : b . value , validationChecker : b . validationChecker , quitChecker : b . quitChecker , allowBlank : b . allowBlank , watermark : b . watermark , errorText : b . errorText } ) , this . text = BI . createWidget ( { type : "bi.text_button" , cls : "state-editor-infinite-text tip-text-style" , textAlign : "left" , height : b . height , text : b . text , hgap : 4 , handler : function ( ) { a . _showInput ( ) , a . editor . focus ( ) , a . editor . setValue ( "" ) } , title : BI . isNotNull ( b . tipText ) ? b . tipText : function ( ) { var b = "" ; return BI . isString ( a . stateValue ) && ( b = a . stateValue ) , BI . isArray ( a . stateValue ) && 1 === a . stateValue . length && ( b = a . stateValue [ 0 ] ) , b } } ) , this . text . on ( BI . TextButton . EVENT _CHANGE , function ( ) { BI . nextTick (
} } ) , BI . ListLoader . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.list_loader" , BI . ListLoader ) , BI . SortList = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SortList . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-sort-list" , isDefaultInit : ! 0 , el : { type : "bi.button_group" } , items : [ ] , itemsCreator : BI . emptyFn , onLoaded : BI . emptyFn , count : ! 1 , next : { } , hasNext : BI . emptyFn } ) } , _init : function ( ) { BI . SortList . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . loader = BI . createWidget ( { type : "bi.list_loader" , element : this , isDefaultInit : b . isDefaultInit , el : b . el , items : this . _formatItems ( b . items ) , itemsCreator : function ( c , d ) { b . itemsCreator ( c , function ( b ) { d ( a . _formatItems ( b ) ) } ) } , onLoaded : b . onLoaded , count : b . count , next : b . next , hasNext : b . hasNext } ) , this . loader . on ( BI . Controller . EVENT _CHANGE , function ( b , c , d ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , b === BI . Events . CLICK && a . fireEvent ( BI . SortList . EVENT _CHANGE , c , d ) } ) , this . loader . element . sortable ( { containment : b . containment || this . element , connectWith : b . connectWith || ".bi-sort-list" , items : ".sort-item" , cursor : b . cursor || "drag" , tolerance : b . tolerance || "intersect" , placeholder : { element : function ( a ) { var b = BI . createWidget ( { type : "bi.layout" , cls : "bi-sortable-holder" , height : a . outerHeight ( ) } ) ; return b . element . css ( { "margin-left" : a . css ( "margin-left" ) , "margin-right" : a . css ( "margin-right" ) , "margin-top" : a . css ( "margin-top" ) , "margin-bottom" : a . css ( "margin-bottom" ) , margin : a . css ( "margin" ) } ) , b . element } , update : function ( ) { } } , start : function ( a , b ) { } , stop : function ( b , c ) { a . fireEvent ( BI . SortList . EVENT _CHANGE ) } , over : function ( a , b ) { } } ) } , _formatItems : function ( a ) { return BI . each ( a , function ( a , b ) { b = BI . stripEL ( b ) , b . cls = b . cls ? b . cls + " sort-item" : "sort-item" , b . attributes = { sorted : b . value } } ) , a } , hasNext : function ( ) { return this . loader . hasNext ( ) } , addItems : function ( a ) { this . loader . addItems ( a ) } , populate : function ( a ) { a && ( arguments [ 0 ] = this . _formatItems ( a ) ) , this . loader . populate . apply ( this . loader , arguments ) } , empty : function ( ) { this . loader . empty ( ) } , setNotSelectedValue : function ( ) { this . loader . setNotSelectedValue . apply ( this . loader , arguments ) } , getNotSelectedValue : function ( ) { return this . loader . getNotSelectedValue ( ) } , setValue : function ( ) { this . loader . setValue . apply ( this . loader , arguments ) } , getValue : function ( ) { return this . loader . getValue ( ) } , getAllButtons : function ( ) { return this . loader . getAllButtons ( ) } , getAllLeaves : function ( ) { return this . loader . getAllLeaves ( ) } , getSelectedButtons : function ( ) { return this . loader . getSelectedButtons ( ) } , getNotSelectedButtons : function ( ) { return this . loader . getNotSelectedButtons ( ) } , getIndexByValue : function ( a ) { return this . loader . getIndexByValue ( a ) } , getNodeById : function ( a ) { return this . loader . getNodeById ( a ) } , getNodeByValue : function ( a ) { return this . loader . getNodeByValue ( a ) } , getSortedValues : function ( ) { return this . loader . element . sortable ( "toArray" , { attribute : "sorted" } ) } } ) , BI . SortList . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.sort_list" , BI . SortList ) , BI . AllCountPager = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . AllCountPager . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-all-count-pager" , height : 30 , pages : 1 , curr : 1 , count : 1 } ) } , _init : function ( ) { BI . AllCountPager . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . editor = BI . createWidget ( { type : "bi.small_text_editor" , cls : "pager-editor" , validationChecker : function ( b ) { return 0 === a . rowCount . getValue ( ) && "0" === b || BI . isPositiveInteger ( b ) } , hgap : 4 , vgap : 0 , value : b . curr , errorText : BI . i18nText ( "BI-Please_Input_Positive_Integer" ) , width : 35 , height : 20 } ) , this . pager = BI . createWidget ( { type : "bi.pager" , width : 36 , layouts : [ { type : "bi.horizontal" , hgap : 1 , vgap : 1 } ] , dynamicShow : ! 1 , pages : b . pages , curr : b . curr , groups : 0 , first : ! 1 , last : ! 1 , prev : { type : "bi.icon_button" , value : "prev" , title : BI . i18nText ( "BI-Previous_Page" ) , warningTitle : BI . i18nText ( "BI-Current_Is_First_Page" ) , height : 20 , cls : "all-pager-prev column-pre-page-h-font" } , next : { type : "bi.icon_button" , value : "next" , title : BI . i18nText ( "BI-Next_Page" ) , warningTitle : BI . i18nText ( "BI-Current_Is_Last_Page" ) , height : 20 , cls : "all-pager-next column-next-page-h-font" } , hasPrev : b . hasPrev , hasNext : b . hasNext , firstPage : b . firstPage , lastPage : b .
} ) , this . popup = BI . createWidget ( { type : "bi.month_popup" , behaviors : b . behaviors } ) , this . popup . on ( BI . YearPopup . EVENT _CHANGE , function ( ) { a . setValue ( a . popup . getValue ( ) ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , offsetStyle : "center" , container : b . container , element : this , isNeedAdjustHeight : ! 1 , isNeedAdjustWidth : ! 1 , el : this . trigger , popup : { minWidth : 85 , stopPropagation : ! 1 , el : this . popup } } ) , this . combo . on ( BI . Combo . EVENT _CHANGE , function ( ) { a . combo . hideView ( ) , a . fireEvent ( BI . MonthDateCombo . EVENT _CHANGE ) } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { a . doBehavior ( ) } ) } , setValue : function ( a ) { this . trigger . setValue ( a ) , this . popup . setValue ( a ) } , getValue : function ( ) { return this . popup . getValue ( ) } } ) , BI . MonthDateCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.month_date_combo" , BI . MonthDateCombo ) , BI . YearDateCombo = BI . inherit ( BI . Trigger , { _defaultConfig : function ( ) { return BI . extend ( BI . YearDateCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-year-combo" , min : "1900-01-01" , max : "2099-12-31" , behaviors : { } , height : 24 , container : null } ) } , _init : function ( ) { BI . YearDateCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . trigger = BI . createWidget ( { type : "bi.date_triangle_trigger" } ) , this . popup = BI . createWidget ( { type : "bi.year_popup" , behaviors : b . behaviors , min : b . min , max : b . max } ) , this . popup . on ( BI . YearPopup . EVENT _CHANGE , function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . combo . hideView ( ) , a . fireEvent ( BI . YearDateCombo . EVENT _CHANGE ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , offsetStyle : "center" , element : this , container : b . container , isNeedAdjustHeight : ! 1 , isNeedAdjustWidth : ! 1 , el : this . trigger , popup : { minWidth : 100 , stopPropagation : ! 1 , el : this . popup } } ) , this . combo . on ( BI . Combo . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . YearDateCombo . EVENT _CHANGE ) } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { a . doBehavior ( ) } ) } , setValue : function ( a ) { this . trigger . setValue ( a ) , this . popup . setValue ( a ) } , getValue : function ( ) { return this . popup . getValue ( ) } } ) , BI . YearDateCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.year_date_combo" , BI . YearDateCombo ) , BI . DatePicker = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var a = BI . DatePicker . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : "bi-date-picker" , height : 40 , min : "1900-01-01" , max : "2099-12-31" } ) } , _init : function ( ) { BI . DatePicker . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . _year = BI . getDate ( ) . getFullYear ( ) , this . _month = BI . getDate ( ) . getMonth ( ) + 1 , this . left = BI . createWidget ( { type : "bi.icon_button" , cls : "pre-page-h-font" , width : 24 , height : 24 } ) , this . left . on ( BI . IconButton . EVENT _CHANGE , function ( ) { 1 === a . _month ? a . setValue ( { year : a . year . getValue ( ) - 1 , month : 12 } ) : a . setValue ( { year : a . year . getValue ( ) , month : a . month . getValue ( ) - 1 } ) , a . fireEvent ( BI . DatePicker . EVENT _CHANGE ) , a . _checkLeftValid ( ) , a . _checkRightValid ( ) } ) , this . right = BI . createWidget ( { type : "bi.icon_button" , cls : "next-page-h-font" , width : 24 , height : 24 } ) , this . right . on ( BI . IconButton . EVENT _CHANGE , function ( ) { 12 === a . _month ? a . setValue ( { year : a . year . getValue ( ) + 1 , month : 1 } ) : a . setValue ( { year : a . year . getValue ( ) , month : a . month . getValue ( ) + 1 } ) , a . fireEvent ( BI . DatePicker . EVENT _CHANGE ) , a . _checkLeftValid ( ) , a . _checkRightValid ( ) } ) , this . year = BI . createWidget ( { type : "bi.year_date_combo" , behaviors : b . behaviors , min : b . min , max : b . max } ) , this . year . on ( BI . YearDateCombo . EVENT _CHANGE , function ( ) { a . setValue ( { year : a . year . getValue ( ) , month : a . month . getValue ( ) } ) , a . fireEvent ( BI . DatePicker . EVENT _CHANGE ) } ) , this . month = BI . createWidget ( { type : "bi.month_date_combo" , behaviors : b . behaviors } ) , this . month . on ( BI . MonthDateCombo . EVENT _CHANGE , function ( ) { a . setValue ( { year : a . year . getValue ( ) , month : a . month . getValue ( ) } ) , a . fireEvent ( BI . DatePicker . EVENT _CHANGE ) } ) , BI . createWidget ( { type : "bi.htape" , element : this , items : [ { el : { type : "bi.center_adapt" , items : [ this . left ] } , width : 24 } , { type : "bi.center_adapt" , items : [ { el : { type : "bi.horizontal" , width : 110 , rgap : 10 , items : [ { el : this . year , lgap : 10 } , this . month ] } } ] } , { el : { type : "bi.center_adapt" , items : [ this . right ] } , width : 24 } ] } ) , this . setValue ( { year : this . _year , month : this . _month } ) } , _checkLeftValid : function ( ) { var a = this . options , b = ! ( 1 === this . _month && this . _year === BI . parseDateTime ( a . min , "%Y-%X-%d" ) . getFullYea
BI . DownListGroup = BI . inherit ( BI . Widget , { constants : { iconCls : "check-mark-ha-font" } , _defaultConfig : function ( ) { return BI . extend ( BI . DownListGroup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-down-list-group" , items : [ { el : { } } ] } ) } , _init : function ( ) { BI . DownListGroup . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this ; this . downlistgroup = BI . createWidget ( { element : this , type : "bi.button_tree" , items : a . items , chooseType : 0 , layouts : [ { type : "bi.vertical" , hgap : 0 , vgap : 0 } ] , value : a . value } ) , this . downlistgroup . on ( BI . Controller . EVENT _CHANGE , function ( a ) { b . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , a === BI . Events . CLICK && b . fireEvent ( BI . DownListGroup . EVENT _CHANGE , arguments ) } ) } , getValue : function ( ) { return this . downlistgroup . getValue ( ) } , setValue : function ( a ) { this . downlistgroup . setValue ( a ) } } ) , BI . DownListGroup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.down_list_group" , BI . DownListGroup ) , BI . DownListItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { var a = BI . DownListItem . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : "bi-down-list-item bi-list-item-active" , cls : "" , height : 24 , logic : { dynamic : ! 0 } , selected : ! 1 , iconHeight : null , iconWidth : null , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . DownListItem . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . text = BI . createWidget ( { type : "bi.label" , cls : "list-item-text" , textAlign : "left" , hgap : a . textHgap , vgap : a . textVgap , lgap : a . textLgap , rgap : a . textRgap , text : a . text , value : a . value , keyword : a . keyword , height : a . height } ) , this . icon = BI . createWidget ( { type : "bi.center_adapt" , width : 36 , height : a . height , items : [ { el : { type : "bi.icon" , width : a . iconWidth , height : a . iconHeight } } ] } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( BI . LogicFactory . createLogicTypeByDirection ( BI . Direction . Left ) , BI . extend ( a . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( BI . Direction . Left , this . icon , this . text ) } ) ) ) ) } , 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 ( ) } , doClick : function ( ) { BI . DownListItem . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . DownListItem . 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 ) } } ) , BI . DownListItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.down_list_item" , BI . DownListItem ) , BI . DownListGroupItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { var a = BI . DownListGroupItem . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-down-list-group-item" , logic : { dynamic : ! 1 } , iconCls1 : "dot-e-font" , iconCls2 : "pull-right-e-font" } ) } , _init : function ( ) { BI . DownListGroupItem . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this ; this . text = BI . createWidget ( { type : "bi.label" , cls : "list-group-item-text" , textAlign : "left" , text : a . text , value : a . value , height : a . height } ) , this . icon1 = BI . createWidget ( { type : "bi.icon_button" , cls : a . iconCls1 , width : 36 , forceNotSelected : ! 0 , selected : this . _digest ( a . value ) } ) , this . icon2 = BI . createWidget ( { type : "bi.icon_button" , cls : a . iconCls2 , width : 24 , forceNotSelected : ! 0 } ) ; var c = BI . createWidget ( { type : "bi.layout" , width : 24 } ) ; BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . icon2 , top : 0 , bottom : 0 , right : 0 } ] } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "horizontal" , BI . extend ( a . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "left" , this . icon1 , this . text , c ) } ) ) ) ) , this . element . hover ( function ( ) { b . isEnabled ( ) && b . hover ( ) } , function ( ) { b . isEnabled ( ) && b . dishover ( ) } ) } , _digest : function ( a ) { var b = this . options ; return a = BI . isArray ( a ) ? a : [ a ] , BI . any ( a , function ( a , c ) { return BI . contains ( b . childValues , c ) } ) } , hover : function ( ) { BI . DownListGroupItem . superclass . hover . apply ( this , arguments ) , this . i
} , _setInnerValue : function ( a ) { var b = a . print ( "%Y-%x-%e" ) ; this . editor . setState ( b ) , this . editor . setValue ( b ) } , _getText : function ( a ) { function b ( a , b ) { switch ( b ) { case BI . DynamicDateCard . OFFSET . BEGIN : return a + BI . i18nText ( "BI-Basic_Begin_Start" ) ; case BI . DynamicDateCard . OFFSET . END : return a + BI . i18nText ( "BI-Basic_End_Stop" ) ; case BI . DynamicDateCard . OFFSET . CURRENT : default : return BI . i18nText ( "BI-Basic_Current_Day" ) } } var c = "" , d = "" ; return BI . isNotNull ( a . year ) && ( 0 !== BI . parseInt ( a . year ) && ( c += Math . abs ( a . year ) + BI . i18nText ( "BI-Basic_Year" ) + ( a . year < 0 ? BI . i18nText ( "BI-Basic_Front" ) : BI . i18nText ( "BI-Basic_Behind" ) ) ) , d = b ( BI . i18nText ( "BI-Basic_Year" ) , a . position ) ) , BI . isNotNull ( a . quarter ) && ( 0 !== BI . parseInt ( a . quarter ) && ( c += Math . abs ( a . quarter ) + BI . i18nText ( "BI-Basic_Single_Quarter" ) + ( a . quarter < 0 ? BI . i18nText ( "BI-Basic_Front" ) : BI . i18nText ( "BI-Basic_Behind" ) ) ) , d = b ( BI . i18nText ( "BI-Basic_Single_Quarter" ) , a . position ) ) , BI . isNotNull ( a . month ) && ( 0 !== BI . parseInt ( a . month ) && ( c += Math . abs ( a . month ) + BI . i18nText ( "BI-Basic_Month" ) + ( a . month < 0 ? BI . i18nText ( "BI-Basic_Front" ) : BI . i18nText ( "BI-Basic_Behind" ) ) ) , d = b ( BI . i18nText ( "BI-Basic_Month" ) , a . position ) ) , BI . isNotNull ( a . week ) && ( 0 !== BI . parseInt ( a . week ) && ( c += Math . abs ( a . week ) + BI . i18nText ( "BI-Basic_Week" ) + ( a . week < 0 ? BI . i18nText ( "BI-Basic_Front" ) : BI . i18nText ( "BI-Basic_Behind" ) ) ) , d = b ( BI . i18nText ( "BI-Basic_Week" ) , a . position ) ) , BI . isNotNull ( a . day ) && ( 0 !== BI . parseInt ( a . day ) && ( c += Math . abs ( a . day ) + BI . i18nText ( "BI-Basic_Day" ) + ( a . day < 0 ? BI . i18nText ( "BI-Basic_Front" ) : BI . i18nText ( "BI-Basic_Behind" ) ) ) , d = 1 === BI . size ( a ) ? b ( BI . i18nText ( "BI-Basic_Month" ) , a . position ) : "" ) , BI . isNotNull ( a . workDay ) && 0 !== BI . parseInt ( a . workDay ) && ( c += Math . abs ( a . workDay ) + BI . i18nText ( "BI-Basic_Work_Day" ) + ( a . workDay < 0 ? BI . i18nText ( "BI-Basic_Front" ) : BI . i18nText ( "BI-Basic_Behind" ) ) ) , c + d } , setValue : function ( a ) { var b , c , d = BI . getDate ( ) ; switch ( this . storeValue = a , BI . isNotNull ( a ) && ( b = a . type || BI . DynamicDateCombo . Static , c = a . value || a ) , b ) { case BI . DynamicDateCombo . Dynamic : var e = this . _getText ( c ) ; d = BI . DynamicDateHelper . getCalculation ( c ) , this . _setInnerValue ( d , e ) ; break ; case BI . DynamicDateCombo . Static : default : if ( BI . isNull ( c ) || BI . isNull ( c . day ) ) this . editor . setState ( "" ) , this . editor . setValue ( "" ) ; else { var f = BI . getDate ( c . year , c . month - 1 , c . day ) . print ( "%Y-%X-%d" ) ; this . editor . setState ( f ) , this . editor . setValue ( f ) } } } , getKey : function ( ) { return this . editor . getValue ( ) } , getValue : function ( ) { return this . storeValue } } ) , 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 . DynamicDateTrigger . EVENT _ERROR = "EVENT_ERROR" , BI . DynamicDateTrigger . EVENT _TRIGGER _CLICK = "EVENT_TRIGGER_CLICK" , BI . DynamicDateTrigger . EVENT _KEY _DOWN = "EVENT_KEY_DOWN" , BI . shortcut ( "bi.dynamic_date_trigger" , BI . DynamicDateTrigger ) , BI . DynamicDateTimeCombo = BI . inherit ( BI . Single , { constants : { popupHeight : 259 , popupWidth : 270 , comboAdjustHeight : 1 , border : 1 , DATE _MIN _VALUE : "1900-01-01" , DATE _MAX _VALUE : "2099-12-31" } , props : { baseCls : "bi-dynamic-date-combo bi-border bi-focus-shadow" , height : 22 } , render : function ( ) { var a = this , b = this . options ; this . storeTriggerValue = "" ; var c = BI . getDate ( ) ; return this . storeValue = b . value , { type : "bi.htape" , items : [ { el : { type : "bi.icon_button" , cls : "bi-trigger-icon-button date-change-h-font" , width : b . height , height : b . height , ref : function ( ) { a . changeIcon = this } } , width : b . height } , { type : "bi.absolute" , items : [ { el : { type : "bi.combo" , container : b . container , ref : function ( ) { a . combo = this } , toggle : ! 1 , isNeedAdjustHeight : ! 1 , isNeedAdjustWidth : ! 1 , el : { type : "bi.dynamic_date_time_trigger" , min : this . constants . DATE _MIN _VALUE , max : this . constants . DATE _MAX _VALUE , height : b . height , value : b . value , ref : function ( ) { a . trigger = this } , listeners : [ { eventName : BI . DynamicDateTimeTrigger . EVENT _KEY _DOWN , action : function ( ) { a . combo . isViewVisible ( ) && a . combo . hideView ( ) } } , { eventName : BI . DynamicDateTimeTrigger . EVENT _STOP , action : function ( ) { a . combo . isViewVisible ( ) || a . combo . showView ( ) } } , { eventName : BI . DynamicDateTimeTrigger . EVENT _TRIGGER _CLICK , action : function ( ) { a . combo . toggle ( ) } } , { eventName : BI . Dyna
EDITOR _HEIGHT : 30 , SLIDER _WIDTH _HALF : 15 , SLIDER _WIDTH : 30 , SLIDER _HEIGHT : 30 , TRACK _HEIGHT : 24 } , props : { baseCls : "bi-interval-slider bi-slider-track" , digit : ! 1 , unit : "" } , render : function ( ) { var a = this , b = this . _constant ; return this . enable = ! 1 , this . valueOne = "" , this . valueTwo = "" , this . calculation = new BI . AccurateCalculationModel , 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 . track = this . _createTrackWrapper ( ) , this . labelOne = BI . createWidget ( { type : "bi.sign_text_editor" , cls : "slider-editor-button" , text : this . options . unit , allowBlank : ! 1 , width : b . EDITOR _WIDTH , validationChecker : function ( b ) { return a . _checkValidation ( b ) } } ) , this . labelOne . element . hover ( function ( ) { a . labelOne . element . removeClass ( "bi-border" ) . addClass ( "bi-border" ) } , function ( ) { a . labelOne . element . removeClass ( "bi-border" ) } ) , this . labelOne . on ( BI . Editor . EVENT _CONFIRM , function ( ) { var b = a . valueOne , c = BI . parseFloat ( this . getValue ( ) ) ; a . valueOne = c ; var d = a . _getPercentByValue ( c ) , e = BI . parseFloat ( d . toFixed ( 1 ) ) ; a . _setSliderOnePosition ( e ) , a . _setBlueTrack ( ) , a . _checkLabelPosition ( b , a . valueTwo , a . valueOne , a . valueTwo ) , a . fireEvent ( BI . IntervalSlider . EVENT _CHANGE ) } ) , this . labelTwo = BI . createWidget ( { type : "bi.sign_text_editor" , cls : "slider-editor-button" , text : this . options . unit , allowBlank : ! 1 , width : b . EDITOR _WIDTH , validationChecker : function ( b ) { return a . _checkValidation ( b ) } } ) , this . labelTwo . element . hover ( function ( ) { a . labelTwo . element . removeClass ( "bi-border" ) . addClass ( "bi-border" ) } , function ( ) { a . labelTwo . element . removeClass ( "bi-border" ) } ) , this . labelTwo . on ( BI . Editor . EVENT _CONFIRM , function ( ) { var b = a . valueTwo , c = BI . parseFloat ( this . getValue ( ) ) ; a . valueTwo = c ; var d = a . _getPercentByValue ( c ) , e = BI . parseFloat ( d . toFixed ( 1 ) ) ; a . _setSliderTwoPosition ( e ) , a . _setBlueTrack ( ) , a . _checkLabelPosition ( a . valueOne , b , a . valueOne , a . valueTwo ) , a . fireEvent ( BI . IntervalSlider . EVENT _CHANGE ) } ) , this . sliderOne = BI . createWidget ( { type : "bi.single_slider_button" } ) , this . sliderTwo = BI . createWidget ( { type : "bi.single_slider_button" } ) , this . _draggable ( this . sliderOne , ! 0 ) , this . _draggable ( this . sliderTwo , ! 1 ) , this . _setVisible ( ! 1 ) , { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : this . track , width : "100%" , height : b . TRACK _HEIGHT } ] } ] , hgap : 7 , height : b . TRACK _HEIGHT } , top : 23 , left : 0 , width : "100%" } , this . _createLabelWrapper ( ) , this . _createSliderWrapper ( ) ] } } , _rePosBySizeAfterMove : function ( a , b ) { var c = this . options , d = 100 * a / this . _getGrayTrackLength ( ) , e = BI . parseFloat ( d . toFixed ( 1 ) ) , f = this . _getValueByPercent ( e ) ; f = this . _assertValue ( f ) , f = c . digit === ! 1 ? f : f . toFixed ( c . digit ) ; var g = this . valueOne , h = this . valueTwo ; b ? ( this . _setSliderOnePosition ( e ) , this . labelOne . setValue ( f ) , this . valueOne = f , this . _checkLabelPosition ( g , h , f , this . valueTwo ) ) : ( this . _setSliderTwoPosition ( e ) , this . labelTwo . setValue ( f ) , this . valueTwo = f , this . _checkLabelPosition ( g , h , this . valueOne , f ) ) , this . _setBlueTrack ( ) } , _rePosBySizeAfterStop : function ( a , b ) { var c = 100 * a / this . _getGrayTrackLength ( ) , d = BI . parseFloat ( c . toFixed ( 1 ) ) ; b ? this . _setSliderOnePosition ( d ) : this . _setSliderTwoPosition ( d ) } , _draggable : function ( a , b ) { function c ( a ) { return BI . clamp ( a , 0 , d . _getGrayTrackLength ( ) ) } var d = this , e = ( this . options , ! 1 ) , f = 0 , g = 0 , h = 0 , i = new BI . MouseMoveTracker ( function ( j ) { i . isDragging ( ) && ( e = ! 0 , g += j , f = c ( h + g ) , a . element . addClass ( "dragging" ) , d . _rePosBySizeAfterMove ( f , b ) ) } , function ( ) { e === ! 0 && ( f = c ( f ) , d . _rePosBySizeAfterStop ( f , b ) , f = 0 , g = 0 , h = f , e = ! 1 ) , a . element . removeClass ( "dragging" ) , i . releaseMouseMoves ( ) , d . fireEvent ( BI . IntervalSlider . EVENT _CHANGE ) } , window ) ; a . element . on ( "mousedown" , function ( b ) { a . isEnabled ( ) && ( h = this . offsetLeft , c ( h ) , i . captureMouseMoves ( b ) ) } ) } , _createLabelWrapper : function ( ) { var a = this . _constant ; return { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : this . labelOne , top : 0 , left : "0%" } ] } , { type : "bi.absolute" , items : [ { el : this . labelTwo , top : 0 , left : "100%" } ] } ] , rgap : a . EDITOR _R _GAP , height : a . SLIDER _HEIGHT } , top : 0 , left : 0 , width : "100%" } } , _createSliderWrapper : function ( ) { var a = this . _constant ; return { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : this . sliderOne , top : 0 , left : "0%" } ] } , { type : "bi.absolute" , item
layer : 0 , id : "" , pId : "" , readonly : ! 0 , open : ! 1 , height : 24 } ) } , _init : function ( ) { BI . MultiLayerSelectTreeLastPlusGroupNode . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . node = BI . createWidget ( { type : "bi.select_tree_last_plus_group_node" , cls : "bi-list-item-none" , stopPropagation : ! 0 , logic : { dynamic : ! 0 } , id : b . id , pId : b . pId , open : b . open , height : b . height , hgap : b . hgap , text : b . text , value : b . value , py : b . py } ) , this . node . on ( BI . Controller . EVENT _CHANGE , function ( b ) { a . setSelected ( a . isSelected ( ) ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) ; var c = [ ] ; BI . count ( 0 , b . layer , function ( ) { c . push ( { type : "bi.layout" , cls : "base-line-conn-background" , width : 12 , height : b . height } ) } ) , c . push ( this . node ) , BI . createWidget ( { type : "bi.td" , element : this , columnSize : BI . makeArray ( b . layer , 12 ) , items : [ c ] } ) } , doRedMark : function ( ) { this . node . doRedMark . apply ( this . node , arguments ) } , unRedMark : function ( ) { this . node . unRedMark . apply ( this . node , arguments ) } , isSelected : function ( ) { return this . node . isSelected ( ) } , setSelected : function ( a ) { BI . MultiLayerSelectTreeLastPlusGroupNode . superclass . setSelected . apply ( this , arguments ) , this . node . setSelected ( a ) } , doClick : function ( ) { BI . MultiLayerSelectTreeLastPlusGroupNode . superclass . doClick . apply ( this , arguments ) , this . node . setSelected ( this . isSelected ( ) ) } , setOpened : function ( a ) { BI . MultiLayerSelectTreeLastPlusGroupNode . superclass . setOpened . apply ( this , arguments ) , this . node . setOpened ( a ) } } ) , BI . shortcut ( "bi.multilayer_select_tree_last_plus_group_node" , BI . MultiLayerSelectTreeLastPlusGroupNode ) , BI . MultiLayerSelectTreeMidPlusGroupNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . MultiLayerSelectTreeMidPlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { extraCls : "bi-multilayer-select-tree-mid-plus-group-node bi-list-item-active" , layer : 0 , id : "" , pId : "" , readonly : ! 0 , open : ! 1 , height : 24 } ) } , _init : function ( ) { BI . MultiLayerSelectTreeMidPlusGroupNode . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . node = BI . createWidget ( { type : "bi.select_tree_mid_plus_group_node" , cls : "bi-list-item-none" , stopPropagation : ! 0 , logic : { dynamic : ! 0 } , id : b . id , pId : b . pId , open : b . open , height : b . height , hgap : b . hgap , text : b . text , value : b . value , py : b . py } ) , this . node . on ( BI . Controller . EVENT _CHANGE , function ( b ) { a . setSelected ( a . isSelected ( ) ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) ; var c = [ ] ; BI . count ( 0 , b . layer , function ( ) { c . push ( { type : "bi.layout" , cls : "base-line-conn-background" , width : 12 , height : b . height } ) } ) , c . push ( this . node ) , BI . createWidget ( { type : "bi.td" , element : this , columnSize : BI . makeArray ( b . layer , 12 ) , items : [ c ] } ) } , doRedMark : function ( ) { this . node . doRedMark . apply ( this . node , arguments ) } , unRedMark : function ( ) { this . node . unRedMark . apply ( this . node , arguments ) } , isSelected : function ( ) { return this . node . isSelected ( ) } , setSelected : function ( a ) { BI . MultiLayerSelectTreeMidPlusGroupNode . superclass . setSelected . apply ( this , arguments ) , this . node . setSelected ( a ) } , doClick : function ( ) { BI . MultiLayerSelectTreeMidPlusGroupNode . superclass . doClick . apply ( this , arguments ) , this . node . setSelected ( this . isSelected ( ) ) } , setOpened : function ( a ) { BI . MultiLayerSelectTreeMidPlusGroupNode . superclass . setOpened . apply ( this , arguments ) , this . node . setOpened ( a ) } } ) , BI . shortcut ( "bi.multilayer_select_tree_mid_plus_group_node" , BI . MultiLayerSelectTreeMidPlusGroupNode ) , BI . MultiLayerSingleTreeCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiLayerSingleTreeCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multilayer-singletree-combo" , isDefaultInit : ! 1 , height : 24 , text : "" , itemsCreator : BI . emptyFn , items : [ ] , value : "" , attributes : { tabIndex : 0 } } ) } , _init : function ( ) { BI . MultiLayerSingleTreeCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . trigger = BI . createWidget ( { type : "bi.single_tree_trigger" , text : b . text , height : b . height , items : b . items , value : b . value } ) , this . popup = BI . createWidget ( { type : "bi.multilayer_single_tree_popup" , isDefaultInit : b . isDefaultInit , itemsCreator : b . itemsCreator , items : b . items , value : b . value } ) , this . combo = BI . createWidget ( { type : "bi.combo" , container : b . container , element : this , adjustLength : 2 , el : this . trigger , popup : { el : this . popup } } ) , this . combo . on ( BI . Controller . EV
keywords : a } , function ( a ) { var b = BI . map ( a . items , "value" ) ; c ( b ) } ) } , _joinAll : function ( a , b ) { var c = this , d = this . options ; this . _assertValue ( a ) , this . requesting = ! 0 , d . itemsCreator ( { type : BI . MultiSelectInsertCombo . REQ _GET _ALL _DATA , keywords : [ this . trigger . getKey ( ) ] } , function ( d ) { var e = BI . map ( d . items , "value" ) ; if ( c . storeValue . type === a . type ) { var f = ! 1 , g = c . _makeMap ( c . storeValue . value ) ; return BI . each ( e , function ( a , b ) { BI . isNotNull ( g [ b ] ) && ( f = ! 0 , delete g [ b ] ) } ) , f && ( c . storeValue . value = BI . values ( g ) ) , void c . _adjust ( b ) } var h = c . _makeMap ( c . storeValue . value ) , i = c . _makeMap ( a . value ) , j = [ ] ; BI . each ( e , function ( a , b ) { BI . isNotNull ( h [ e [ a ] ] ) && delete h [ e [ a ] ] , BI . isNull ( i [ e [ a ] ] ) && j . push ( b ) } ) , c . storeValue . value = j . concat ( BI . values ( h ) ) , c . _adjust ( b ) } ) } , _adjust : function ( a ) { function b ( ) { c . wants2Quit === ! 0 && ( c . fireEvent ( BI . MultiSelectInsertCombo . EVENT _CONFIRM ) , c . wants2Quit = ! 1 ) , c . requesting = ! 1 } var c = this ; this . options ; b ( ) , a ( ) } , _join : function ( a , b ) { var c = this ; this . options ; if ( this . _assertValue ( a ) , this . _assertValue ( this . storeValue ) , this . storeValue . type === a . type ) { var d = this . _makeMap ( this . storeValue . value ) ; BI . each ( a . value , function ( a , b ) { d [ b ] || ( c . storeValue . value . push ( b ) , d [ b ] = b ) } ) ; var e = ! 1 ; return BI . each ( a . assist , function ( a , b ) { BI . isNotNull ( d [ b ] ) && ( e = ! 0 , delete d [ b ] ) } ) , e && ( this . storeValue . value = BI . values ( d ) ) , void c . _adjust ( b ) } this . _joinAll ( a , b ) } , _setStartValue : function ( a ) { this . _startValue = a , this . popup . setStartValue ( a ) } , setValue : function ( a ) { this . storeValue = a || { } , this . _assertValue ( this . storeValue ) , this . combo . setValue ( this . storeValue ) } , getValue : function ( ) { return BI . deepClone ( this . storeValue ) } , populate : function ( ) { this . combo . populate . apply ( this . combo , arguments ) } } ) , BI . extend ( BI . MultiSelectInsertCombo , { REQ _GET _DATA _LENGTH : 1 , REQ _GET _ALL _DATA : - 1 } ) , BI . MultiSelectInsertCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . shortcut ( "bi.multi_select_insert_combo" , BI . MultiSelectInsertCombo ) , BI . MultiSelectInsertNoBarCombo = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectInsertNoBarCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-insert-combo" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , height : 24 , attributes : { tabIndex : 0 } } ) } , _init : function ( ) { BI . MultiSelectInsertNoBarCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = function ( ) { BI . isKey ( a . _startValue ) && a . storeValue . value [ a . storeValue . type === BI . Selection . All ? "remove" : "pushDistinct" ] ( a . _startValue ) , a . trigger . getSearcher ( ) . setState ( a . storeValue ) , a . trigger . getCounter ( ) . setButtonChecked ( a . storeValue ) } ; this . storeValue = { type : BI . Selection . Multi , value : b . value || [ ] } , this . requesting = ! 1 , this . trigger = BI . createWidget ( { type : "bi.multi_select_insert_trigger" , height : b . height , text : b . text , masker : { offset : { left : 0 , top : 0 , right : 0 , bottom : 26 } } , valueFormatter : b . valueFormatter , itemsCreator : function ( c , d ) { b . itemsCreator ( c , function ( b ) { 1 === c . times && BI . isNotNull ( c . keywords ) && a . trigger . setValue ( { type : BI . Selection . Multi , value : a . getValue ( ) } ) , d . apply ( a , arguments ) } ) } , value : { type : BI . Selection . Multi , value : b . value } } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _START , function ( ) { a . _setStartValue ( "" ) , this . getSearcher ( ) . setValue ( a . storeValue ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _STOP , function ( ) { a . _setStartValue ( "" ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _PAUSE , function ( ) { this . getSearcher ( ) . hasMatched ( ) && a . _addItem ( c ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _ADD _ITEM , function ( ) { this . getSearcher ( ) . hasMatched ( ) || ( a . _addItem ( c ) , a . trigger . stopEditing ( ) ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _SEARCHING , function ( b ) { var d = BI . last ( b ) ; b = BI . initial ( b || [ ] ) , b . length > 0 && a . _joinKeywords ( b , function ( ) { BI . isEndWithBlank ( d ) ? ( a . combo . setValue ( a . storeValue ) , c ( ) , a . combo . populate ( ) , a . _setStartValue ( "" ) ) : ( a . combo . setValue ( a . storeValue ) , c ( ) ) } ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _CHANGE , function ( b , d ) { d instanceof BI . MultiSelectBar ? a . _joinAll ( this . getValue ( ) , function ( ) { c ( ) } ) : a . _join ( this . getValue ( ) , function ( ) { c ( ) } ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _BEFORE _COUNTER _POPUPVIEW , function ( ) { this . getCounter ( ) . setValue ( a . storeValue ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger .
} } ) , BI . MultiSelectSearchPane . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multi_select_search_pane" , BI . MultiSelectSearchPane ) , BI . MultiSelectCheckSelectedButton = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectCheckSelectedButton . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-check-selected-button" , itemsCreator : BI . emptyFn } ) } , _init : function ( ) { BI . MultiSelectCheckSelectedButton . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . numberCounter = BI . createWidget ( { type : "bi.text_button" , element : this , hgap : 4 , text : "0" , textAlign : "center" , textHeight : 16 , cls : "bi-high-light-background count-tip" } ) , this . numberCounter . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . numberCounter . on ( BI . TextButton . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . MultiSelectCheckSelectedButton . EVENT _CHANGE , arguments ) } ) , this . numberCounter . element . hover ( function ( ) { a . numberCounter . setTag ( a . numberCounter . getText ( ) ) , a . numberCounter . setText ( BI . i18nText ( "BI-Check_Selected" ) ) } , function ( ) { a . numberCounter . setText ( a . numberCounter . getTag ( ) ) } ) , this . setVisible ( ! 1 ) , BI . isNotNull ( b . value ) && this . setValue ( b . value ) } , setValue : function ( a ) { var b = this , c = this . options ; return a || ( a = { } ) , a . type || ( a . type = BI . Selection . Multi ) , a . value || ( a . value = [ ] ) , a . type === BI . Selection . All ? void c . itemsCreator ( { type : BI . MultiSelectCombo . REQ _GET _DATA _LENGTH } , function ( c ) { var d = c . count - a . value . length ; BI . nextTick ( function ( ) { b . numberCounter . setText ( d ) , b . setVisible ( d > 0 ) } ) } ) : void BI . nextTick ( function ( ) { b . numberCounter . setText ( a . value . length ) , b . setVisible ( a . value . length > 0 ) } ) } , getValue : function ( ) { } } ) , BI . MultiSelectCheckSelectedButton . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multi_select_check_selected_button" , BI . MultiSelectCheckSelectedButton ) , BI . MultiSelectEditor = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectEditor . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-editor" , el : { } } ) } , _init : function ( ) { BI . MultiSelectEditor . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . editor = BI . createWidget ( b . el , { type : "bi.state_editor" , element : this , height : b . height , watermark : BI . i18nText ( "BI-Basic_Search" ) , allowBlank : ! 0 , value : b . value , text : b . text } ) , this . editor . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . StateEditor . EVENT _PAUSE , function ( ) { a . fireEvent ( BI . MultiSelectEditor . EVENT _PAUSE ) } ) , this . editor . on ( BI . StateEditor . EVENT _CLICK _LABEL , function ( ) { } ) } , focus : function ( ) { this . editor . focus ( ) } , blur : function ( ) { this . editor . blur ( ) } , setState : function ( a ) { this . editor . setState ( a ) } , setValue : function ( a ) { this . editor . setValue ( a ) } , getValue : function ( ) { var a = this . editor . getState ( ) ; return BI . isArray ( a ) && a . length > 0 ? a [ a . length - 1 ] : "" } , getKeywords : function ( ) { var a = this . editor . getLastValidValue ( ) , b = a . match ( /[\S]+/g ) ; return BI . isEndWithBlank ( a ) ? b . concat ( [ " " ] ) : b } , populate : function ( a ) { } } ) , BI . MultiSelectEditor . EVENT _PAUSE = "MultiSelectEditor.EVENT_PAUSE" , BI . shortcut ( "bi.multi_select_editor" , BI . MultiSelectEditor ) , BI . MultiSelectInsertSearcher = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectInsertSearcher . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-searcher" , itemsCreator : BI . emptyFn , el : { } , popup : { } , valueFormatter : BI . emptyFn , adapter : null , masker : { } , text : BI . i18nText ( "BI-Basic_Please_Select" ) } ) } , _init : function ( ) { BI . MultiSelectInsertSearcher . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . editor = BI . createWidget ( b . el , { type : "bi.multi_select_editor" , height : b . height , text : b . text } ) , this . searcher = BI . createWidget ( { type : "bi.searcher" , element : this , height : b . height , isAutoSearch : ! 1 , isAutoSync : ! 1 , onSearch : function ( a , b ) { b ( ) } , el : this . editor , popup : BI . extend ( { type : "bi.multi_select_search_insert_pane" , valueFormatter : b . valueFormatter , keywordGetter : function ( ) { return a . editor . getValue ( ) } , itemsCreator : function ( c , d ) { var e = a . editor . getValue ( ) ; c . keywords = [ e ] , this . setKeyword ( e ) , b . itemsCreator ( c , d ) } , value : b . value , listeners : [ { eventName : BI . MultiSelectSearchInsertPane . EVENT
} , _showSearcherPane : function ( ) { this . searcherPane . setVisible ( ! 0 ) , this . adapter . setVisible ( ! 1 ) } , resize : function ( ) { } , setSelectedValue : function ( a ) { this . storeValue . value = a || { } , this . adapter . setSelectedValue ( a ) , this . searcherPane . setSelectedValue ( a ) , this . searcher . setValue ( { value : a || { } } ) } , setValue : function ( a ) { this . adapter . setValue ( a ) } , stopSearch : function ( ) { this . searcher . stopSearch ( ) } , updateValue : function ( a ) { this . adapter . updateValue ( a ) } , getValue : function ( ) { return this . storeValue . value } , populate : function ( ) { this . searcher . populate . apply ( this . searcher , arguments ) , this . adapter . populate . apply ( this . adapter , arguments ) } } ) , BI . MultiSelectTree . EVENT _CHANGE = "BI.MultiSelectTree.EVENT_CHANGE" , BI . shortcut ( "bi.multi_select_tree" , BI . MultiSelectTree ) , BI . MultiSelectTreePopup = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectTreePopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-tree-popup bi-border-left bi-border-right bi-border-bottom" , itemsCreator : BI . emptyFn } ) } , _init : function ( ) { BI . MultiSelectTreePopup . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . popup = BI . createWidget ( { type : "bi.async_tree" , element : this , itemsCreator : b . itemsCreator } ) , this . popup . on ( BI . TreeView . EVENT _AFTERINIT , function ( ) { a . fireEvent ( BI . MultiSelectTreePopup . EVENT _AFTER _INIT ) } ) , this . popup . on ( BI . TreeView . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . MultiSelectTreePopup . EVENT _CHANGE ) } ) } , hasChecked : function ( ) { return this . popup . hasChecked ( ) } , getValue : function ( ) { return this . popup . getValue ( ) } , setValue : function ( a ) { a || ( a = { } ) , this . popup . setValue ( a ) } , setSelectedValue : function ( a ) { a || ( a = { } ) , this . popup . setSelectedValue ( a ) } , updateValue : function ( a ) { this . popup . updateValue ( a ) , this . popup . refresh ( ) } , populate : function ( a ) { this . popup . stroke ( a ) } } ) , BI . MultiSelectTreePopup . EVENT _AFTER _INIT = "BI.MultiSelectTreePopup.EVENT_AFTER_INIT" , BI . MultiSelectTreePopup . EVENT _CHANGE = "BI.MultiSelectTreePopup.EVENT_CHANGE" , BI . shortcut ( "bi.multi_select_tree_popup" , BI . MultiSelectTreePopup ) , BI . MultiTreeCheckPane = BI . inherit ( BI . Pane , { constants : { height : 25 , lgap : 10 , tgap : 5 } , _defaultConfig : function ( ) { return BI . extend ( BI . MultiTreeCheckPane . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-tree-check-pane bi-background" , onClickContinueSelect : BI . emptyFn } ) } , _init : function ( ) { BI . MultiTreeCheckPane . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . selectedValues = { } ; var c = BI . createWidget ( { type : "bi.text_button" , text : BI . i18nText ( "BI-Continue_Select" ) , cls : "multi-tree-check-selected" } ) ; c . on ( BI . TextButton . EVENT _CHANGE , function ( ) { b . onClickContinueSelect ( ) , BI . nextTick ( function ( ) { a . empty ( ) } ) } ) ; var d = BI . createWidget ( { type : "bi.left" , cls : "multi-tree-continue-select" , items : [ { el : { type : "bi.label" , text : BI . i18nText ( "BI-Selected_Data" ) } , lgap : this . constants . lgap , tgap : this . constants . tgap } , { el : c , lgap : this . constants . lgap , tgap : this . constants . tgap } ] } ) ; this . display = BI . createWidget ( { type : "bi.display_tree" , cls : "bi-multi-tree-display" , itemsCreator : function ( a , c ) { a . type = BI . TreeView . REQ _TYPE _GET _SELECTED _DATA , b . itemsCreator ( a , c ) } , value : ( b . value || { } ) . value } ) , this . display . on ( BI . Events . AFTERINIT , function ( ) { a . fireEvent ( BI . Events . AFTERINIT ) } ) , this . display . on ( BI . TreeView . EVENT _INIT , function ( ) { d . setVisible ( ! 1 ) } ) , this . display . on ( BI . TreeView . EVENT _AFTERINIT , function ( ) { d . setVisible ( ! 0 ) } ) , BI . createWidget ( { type : "bi.vtape" , element : this , items : [ { height : this . constants . height , el : d } , { height : "fill" , el : this . display } ] } ) } , empty : function ( ) { this . display . empty ( ) } , populate : function ( a ) { this . display . stroke ( a ) } , setValue : function ( a ) { a || ( a = { } ) , this . display . setSelectedValue ( a . value ) } , getValue : function ( ) { } } ) , BI . MultiTreeCheckPane . EVENT _CONTINUE _CLICK = "EVENT_CONTINUE_CLICK" , BI . shortcut ( "bi.multi_tree_check_pane" , BI . MultiTreeCheckPane ) , BI . MultiTreeCombo = BI . inherit ( BI . Single , { constants : { offset : { top : 0 , left : 0 , right : 0 , bottom : 31 } } , _defaultConfig : function ( ) { return BI . extend ( BI . MultiTreeCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-tree-combo" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , height : 24 } ) } , _init : function ( ) { function a ( ) { h ( ) ? b . storeValue = { value : b . trigger . getValue ( ) } :
} } ) , BI . QuarterTrigger . EVENT _FOCUS = "EVENT_FOCUS" , BI . QuarterTrigger . EVENT _CHANGE = "EVENT_CHANGE" , BI . QuarterTrigger . EVENT _START = "EVENT_START" , BI . QuarterTrigger . EVENT _STOP = "EVENT_STOP" , BI . QuarterTrigger . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . shortcut ( "bi.quarter_trigger" , BI . QuarterTrigger ) , BI . SearchMultiTextValueCombo = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . SearchMultiTextValueCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-combo bi-search-multi-text-value-combo" , height : 24 , items : [ ] } ) } , _init : function ( ) { BI . SearchMultiTextValueCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = function ( ) { BI . isKey ( a . _startValue ) && a . storeValue . value [ a . storeValue . type === BI . Selection . All ? "remove" : "pushDistinct" ] ( a . _startValue ) , a . _updateAllValue ( ) , a . _checkError ( ) , a . trigger . getSearcher ( ) . setState ( a . storeValue ) , a . trigger . getCounter ( ) . setButtonChecked ( a . storeValue ) } ; this . storeValue = BI . deepClone ( b . value || { } ) , this . _updateAllValue ( ) , this . _assertValue ( this . storeValue ) , this . _checkError ( ) , this . requesting = ! 1 , this . trigger = BI . createWidget ( { type : "bi.search_multi_select_trigger" , text : b . text , height : b . height , masker : { offset : { left : 0 , top : 0 , right : 0 , bottom : 26 } } , allValueGetter : function ( ) { return a . allValue } , valueFormatter : b . valueFormatter , itemsCreator : function ( b , c ) { a . _itemsCreator ( b , function ( d ) { 1 === b . times && BI . isNotNull ( b . keywords ) && a . trigger . setValue ( BI . deepClone ( a . getValue ( ) ) ) , c . apply ( a , arguments ) } ) } , value : this . storeValue } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _START , function ( ) { a . _setStartValue ( "" ) , this . getSearcher ( ) . setValue ( a . storeValue ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _STOP , function ( ) { a . _setStartValue ( "" ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _PAUSE , function ( ) { if ( this . getSearcher ( ) . hasMatched ( ) ) { var b = this . getSearcher ( ) . getKeyword ( ) ; a . _join ( { type : BI . Selection . Multi , value : [ b ] } , function ( ) { a . combo . setValue ( a . storeValue ) , a . _setStartValue ( b ) , c ( ) , a . _populate ( ) , a . _setStartValue ( "" ) } ) } } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _SEARCHING , function ( b ) { var d = BI . last ( b ) ; b = BI . initial ( b || [ ] ) , b . length > 0 && a . _joinKeywords ( b , function ( ) { BI . isEndWithBlank ( d ) ? ( a . combo . setValue ( a . storeValue ) , c ( ) , a . combo . populate ( ) , a . _setStartValue ( "" ) ) : ( a . combo . setValue ( a . storeValue ) , c ( ) ) } ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _CHANGE , function ( b , d ) { d instanceof BI . MultiSelectBar ? a . _joinAll ( this . getValue ( ) , function ( ) { c ( ) } ) : a . _join ( this . getValue ( ) , function ( ) { c ( ) } ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _BEFORE _COUNTER _POPUPVIEW , function ( ) { this . getCounter ( ) . setValue ( a . storeValue ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _COUNTER _CLICK , function ( ) { a . combo . isViewVisible ( ) || a . combo . showView ( ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , toggle : ! 1 , container : b . container , el : this . trigger , adjustLength : 1 , popup : { type : "bi.search_multi_select_popup_view" , ref : function ( ) { a . popup = this , a . trigger . setAdapter ( this ) } , listeners : [ { eventName : BI . MultiSelectPopupView . EVENT _CHANGE , action : function ( ) { a . storeValue = this . getValue ( ) , a . _adjust ( function ( ) { c ( ) } ) } } , { eventName : BI . MultiSelectPopupView . EVENT _CLICK _CONFIRM , action : function ( ) { a . _defaultState ( ) } } , { eventName : BI . MultiSelectPopupView . EVENT _CLICK _CLEAR , action : function ( ) { a . setValue ( ) , a . _defaultState ( ) } } ] , itemsCreator : BI . bind ( a . _itemsCreator , this ) , valueFormatter : b . valueFormatter , onLoaded : function ( ) { BI . nextTick ( function ( ) { a . combo . adjustWidth ( ) , a . combo . adjustHeight ( ) , a . trigger . getCounter ( ) . adjustView ( ) , a . trigger . getSearcher ( ) . adjustView ( ) } ) } } , value : b . value , hideChecker : function ( a ) { return 0 === d . element . find ( a . target ) . length } } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { this . setValue ( a . storeValue ) , BI . nextTick ( function ( ) { a . _populate ( ) } ) } ) , this . wants2Quit = ! 1 , this . combo . on ( BI . Combo . EVENT _AFTER _HIDEVIEW , function ( ) { a . trigger . stopEditing ( ) , a . requesting === ! 0 ? a . wants2Quit = ! 0 : ( c ( ) , a . fireEvent ( BI . SearchMultiTextValueCombo . EVENT _CONFIRM ) ) } ) ; var d = BI . createWidget ( { type : "bi.trigger_icon_button" , width : b . height , height : b . height , cls : "multi-select-trigger-icon-button" } ) ; d . on ( BI . TriggerIconButton . EVENT _CHANGE , function ( ) { a . trigger . getCounter ( ) . hideView ( ) , a . combo . isViewVisible ( ) ? a
valueFormatter : BI . emptyFn , keywordGetter : BI . emptyFn } ) } , _init : function ( ) { BI . SingleSelectSearchPane . superclass . _init . apply ( this , arguments ) ; var a = this , b = 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 . loader = BI . createWidget ( { type : "bi.single_select_search_loader" , keywordGetter : b . keywordGetter , valueFormatter : b . valueFormatter , itemsCreator : function ( c , d ) { b . itemsCreator . apply ( a , [ c , function ( c ) { d ( c ) , a . setKeyword ( b . keywordGetter ( ) ) } ] ) } , value : b . value } ) , this . loader . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . resizer = BI . createWidget ( { type : "bi.vtape" , element : this , items : [ { el : this . tooltipClick , height : 0 } , { el : this . loader } ] } ) , this . tooltipClick . setVisible ( ! 1 ) } , setKeyword : function ( a ) { var b , c = this . loader . getAllButtons ( ) . length > 0 && ( b = this . loader . getAllButtons ( ) [ 0 ] ) && a === b . getValue ( ) ; c !== this . tooltipClick . isVisible ( ) && ( this . tooltipClick . setVisible ( c ) , this . resizer . attr ( "items" ) [ 0 ] . height = c ? this . constants . height : 0 , this . resizer . resize ( ) ) } , hasMatched : function ( ) { return this . tooltipClick . isVisible ( ) } , setValue : function ( a ) { this . loader . setValue ( a ) } , getValue : function ( ) { return this . loader . getValue ( ) } , empty : function ( ) { this . loader . empty ( ) } , populate : function ( a ) { this . loader . populate . apply ( this . loader , arguments ) } } ) , BI . SingleSelectSearchPane . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.single_select_search_pane" , BI . SingleSelectSearchPane ) , BI . SingleSelectCombo = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-select-combo" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , height : 24 , attributes : { tabIndex : 0 } } ) } , _init : function ( ) { BI . SingleSelectCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = function ( ) { BI . isKey ( a . _startValue ) && ( a . storeValue = a . _startValue ) , a . trigger . getSearcher ( ) . setState ( a . storeValue ) } ; this . storeValue = b . value , this . requesting = ! 1 , this . trigger = BI . createWidget ( { type : "bi.single_select_trigger" , height : b . height , valueFormatter : b . valueFormatter , itemsCreator : function ( c , d ) { b . itemsCreator ( c , function ( b ) { 1 === c . times && BI . isNotNull ( c . keywords ) && a . trigger . setValue ( a . getValue ( ) ) , d . apply ( a , arguments ) } ) } , value : this . storeValue } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _START , function ( ) { a . _setStartValue ( ) , this . getSearcher ( ) . setValue ( a . storeValue ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _STOP , function ( ) { a . _setStartValue ( ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _PAUSE , function ( ) { if ( this . getSearcher ( ) . hasMatched ( ) ) { var b = this . getSearcher ( ) . getKeyword ( ) ; a . combo . setValue ( a . storeValue ) , a . _setStartValue ( b ) , c ( ) , a . populate ( ) , a . _setStartValue ( ) } } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _SEARCHING , function ( b ) { var d = BI . last ( b ) ; b = BI . initial ( b || [ ] ) , b . length > 0 && a . _joinKeywords ( b , function ( ) { BI . isEndWithBlank ( d ) ? ( a . combo . setValue ( a . storeValue ) , c ( ) , a . combo . populate ( ) , a . _setStartValue ( ) ) : ( a . combo . setValue ( a . storeValue ) , c ( ) ) } ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _CHANGE , function ( b , d ) { a . storeValue = this . getValue ( ) , c ( ) , a . _defaultState ( ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _COUNTER _CLICK , function ( ) { a . combo . isViewVisible ( ) || a . combo . showView ( ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , container : b . container , toggle : ! 1 , el : this . trigger , adjustLength : 1 , popup : { type : "bi.single_select_popup_view" , ref : function ( ) { a . popup = this , a . trigger . setAdapter ( this ) } , listeners : [ { eventName : BI . SingleSelectPopupView . EVENT _CHANGE , action : function ( ) { a . storeValue = this . getValue ( ) , a . _adjust ( function ( ) { c ( ) , a . _defaultState ( ) } ) } } ] , itemsCreator : b . itemsCreator , valueFormatter : b . valueFormatter , onLoaded : function ( ) { BI . nextTick ( function ( ) { a . combo . adjustWidth ( ) , a . combo . adjustHeight ( ) , a . trigger . getSearcher ( ) . adjustView ( ) } ) } } , hideChecker : function ( a ) { return 0 === d . element . find ( a . target ) . length } , value : b . value } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { this . setValue ( a . storeValue ) , BI . nextTick ( function ( ) { a . populate ( ) } ) } ) , this . wants2Quit = ! 1 , this . combo . on ( BI . Combo . EVENT _AFTER _HID
this . value = "" , 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 . track = this . _createTrackWrapper ( ) , this . slider = BI . createWidget ( { type : "bi.single_slider_button" } ) , this . _draggable ( this . slider ) ; var d = BI . createWidget ( { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ this . slider ] } ] , hgap : c . SLIDER _WIDTH _HALF , height : c . SLIDER _HEIGHT } ) ; return d . element . click ( function ( d ) { if ( a . enable && a . isEnabled ( ) ) { var e = d . clientX - a . element . offset ( ) . left - c . SLIDER _WIDTH _HALF , f = a . track . element [ 0 ] . scrollWidth , g = 0 ; e < 0 && ( g = 0 ) , e > 0 && e < f - c . SLIDER _WIDTH && ( g = 100 * e / a . _getGrayTrackLength ( ) ) , e > f - c . SLIDER _WIDTH && ( g = 100 ) ; var h = BI . parseFloat ( g . toFixed ( 1 ) ) ; a . _setAllPosition ( h ) ; var i = a . _getValueByPercent ( h ) ; i = b . digit === ! 1 ? i : i . toFixed ( b . digit ) , a . label . setValue ( i ) , a . value = i , a . fireEvent ( BI . SingleSlider . EVENT _CHANGE ) } } ) , this . label = BI . createWidget ( { type : "bi.sign_text_editor" , cls : "slider-editor-button" , text : b . unit , width : c . EDITOR _WIDTH - 2 , allowBlank : ! 1 , textAlign : "center" , validationChecker : function ( b ) { return a . _checkValidation ( b ) } } ) , this . label . element . hover ( function ( ) { a . label . element . removeClass ( "bi-border" ) . addClass ( "bi-border" ) } , function ( ) { a . label . element . removeClass ( "bi-border" ) } ) , this . label . on ( BI . SignEditor . EVENT _CONFIRM , function ( ) { var b = BI . parseFloat ( this . getValue ( ) ) , c = a . _getPercentByValue ( b ) , d = BI . parseFloat ( c . toFixed ( 1 ) ) ; a . _setAllPosition ( d ) , this . setValue ( b ) , a . value = b , a . fireEvent ( BI . SingleSlider . EVENT _CHANGE ) } ) , this . _setVisible ( ! 1 ) , { type : "bi.absolute" , items : [ { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : this . track , width : "100%" , height : c . TRACK _HEIGHT } ] } ] , hgap : 7 , height : c . TRACK _HEIGHT } , top : 23 , left : 0 , width : "100%" } , { el : d , top : 20 , left : 0 , width : "100%" } , { el : { type : "bi.vertical" , items : [ { type : "bi.horizontal_auto" , items : [ this . label ] } ] , height : c . EDITOR _HEIGHT } , top : 0 , left : 0 , width : "100%" } ] } } , _draggable : function ( a ) { function b ( a ) { return BI . clamp ( a , 0 , c . _getGrayTrackLength ( ) ) } var c = this , d = this . options , e = ! 1 , f = 0 , g = 0 , h = 0 , i = new BI . MouseMoveTracker ( function ( j ) { if ( i . isDragging ( ) ) { e = ! 0 , g += j , f = b ( h + g ) , a . element . addClass ( "dragging" ) ; var k = 100 * f / c . _getGrayTrackLength ( ) , l = BI . parseFloat ( k . toFixed ( 1 ) ) ; c . _setBlueTrack ( l ) , c . _setLabelPosition ( l ) , c . _setSliderPosition ( l ) ; var m = c . _getValueByPercent ( l ) ; m = d . digit === ! 1 ? m : m . toFixed ( d . digit ) , c . label . setValue ( m ) , c . value = m , c . fireEvent ( BI . SingleSlider . EVENT _CHANGE ) } } , function ( ) { if ( e === ! 0 ) { f = b ( f ) ; var d = 100 * f / c . _getGrayTrackLength ( ) , j = BI . parseFloat ( d . toFixed ( 1 ) ) ; c . _setSliderPosition ( j ) , f = 0 , g = 0 , h = f , e = ! 1 } a . element . removeClass ( "dragging" ) , i . releaseMouseMoves ( ) , c . fireEvent ( BI . SingleSlider . EVENT _CHANGE ) } , window ) ; a . element . on ( "mousedown" , function ( c ) { a . isEnabled ( ) && ( h = this . offsetLeft , b ( h ) , i . captureMouseMoves ( c ) ) } ) } , _createTrackWrapper : function ( ) { return BI . createWidget ( { 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%" } ] } ) } , _checkValidation : function ( a ) { var b = this . options , c = ! 1 ; if ( BI . isNumeric ( a ) && ! ( BI . isNull ( a ) || a < this . min || a > this . max ) ) if ( b . digit === ! 1 ) c = ! 0 ; else { var d = ( a + "" ) . split ( "." ) [ 1 ] || "" ; c = d . length === b . digit } return c } , _setBlueTrack : function ( a ) { this . blueTrack . element . css ( { width : a + "%" } ) } , _setLabelPosition : function ( a ) { } , _setSliderPosition : function ( a ) { this . slider . element . css ( { left : a + "%" } ) } , _setAllPosition : function ( a ) { this . _setSliderPosition ( a ) , this . _setLabelPosition ( a ) , this . _setBlueTrack ( a ) } , _setVisible : function ( a ) { this . slider . setVisible ( a ) , this . label . setVisible ( a ) } , _getGrayTrackLength : function ( ) { return this . grayTrack . element [ 0 ] . scrollWidth } , _getValueByPercent : function ( a ) { var b = BI . parseInt ( 10 * a ) ; return ( this . max - this . min ) * b / 1e3 + this . min } , _getPercentByValue : function ( a ) { return 100 * ( a - this . min ) / ( this . max - this . min ) } , getValue : function ( ) { return this . value } , setValue : function ( a ) { var b = this . options ; a = BI . parseFloat ( a ) , a = b . digit === ! 1 ? a : a . toFixed ( b . digit ) , isNaN ( a ) || ( this . _checkValidation ( a ) && ( this . value = a ) , a > this . max && ( this . value = this . max ) , a < this . min && ( this . value = this . min ) ) } , _
a . changeIcon = this } } , width : 24 } , this . combo ] } ) , this . _checkDynamicValue ( b . value ) } , _checkDynamicValue : function ( a ) { var b = null ; switch ( BI . isNotNull ( a ) && ( b = a . type ) , b ) { 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 ( a ) { this . storeValue = a , this . trigger . setValue ( a ) , this . _checkDynamicValue ( a ) } , 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 a = this , b = ( this . options , 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" , forceCenter : ! 0 , cls : "bi-split-top bi-high-light" , textHeight : b . buttonHeight - 1 , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_Clear" ) , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicYearPopup . BUTTON _CLEAR _EVENT _CHANGE ) } } ] } , { type : "bi.text_button" , forceCenter : ! 0 , textHeight : b . buttonHeight - 1 , cls : "bi-split-left bi-split-right bi-high-light bi-split-top" , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_Current_Year" ) , ref : function ( ) { a . textButton = this } , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicYearPopup . BUTTON _lABEL _EVENT _CHANGE ) } } ] } , { type : "bi.text_button" , forceCenter : ! 0 , cls : "bi-split-top bi-high-light" , textHeight : b . buttonHeight - 1 , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_OK" ) , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicYearPopup . BUTTON _OK _EVENT _CHANGE ) } } ] } ] ] } , height : 24 } ] } } , _setInnerValue : function ( ) { if ( this . dateTab . getSelect ( ) === BI . DynamicDateCombo . Static ) this . textButton . setValue ( BI . i18nText ( "BI-Basic_Current_Year" ) ) , this . textButton . setEnable ( ! 0 ) ; else { var a = BI . DynamicDateHelper . getCalculation ( this . dynamicPane . getValue ( ) ) ; a = a . print ( "%Y" ) , this . textButton . setValue ( a ) , this . textButton . setEnable ( ! 1 ) } } , _getTabJson : function ( ) { var a = this , b = this . options ; return { type : "bi.tab" , ref : function ( ) { a . dateTab = this } , tab : { type : "bi.linear_segment" , cls : "bi-split-bottom" , height : this . constants . tabHeight , items : BI . createItems ( [ { text : BI . i18nText ( "BI-Basic_Year_Fen" ) , value : BI . DynamicYearCombo . Static } , { text : BI . i18nText ( "BI-Basic_Dynamic_Title" ) , value : BI . DynamicYearCombo . Dynamic } ] , { textAlign : "center" } ) } , cardCreator : function ( c ) { switch ( c ) { case BI . DynamicYearCombo . Dynamic : return { type : "bi.dynamic_year_card" , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { a . _setInnerValue ( a . year , c ) } } ] , ref : function ( ) { a . dynamicPane = this } } ; case BI . DynamicYearCombo . Static : default : return { type : "bi.static_year_card" , behaviors : b . behaviors , min : a . options . min , max : a . options . max , listeners : [ { eventName : BI . StaticYearCard . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicYearPopup . EVENT _CHANGE ) } } ] , ref : function ( ) { a . year = this } } } } , listeners : [ { eventName : BI . Tab . EVENT _CHANGE , action : function ( ) { var b = a . dateTab . getSelect ( ) ; switch ( b ) { case BI . DynamicYearCombo . Static : var c = BI . DynamicDateHelper . getCalculation ( a . dynamicPane . getValue ( ) ) ; a . year . setValue ( { year : c . getFullYear ( ) } ) , a . _setInnerValue ( ) ; break ; case BI . DynamicYearCombo . Dynamic : default : a . storeValue && a . storeValue . type === BI . DynamicYearCombo . Dynamic ? a . dynamicPane . setValue ( a . storeValue . value ) : a . dynamicPane . setValue ( { year : 0 } ) , a . _setInnerValue ( ) } } } ] } } , setValue : function ( a ) { this . storeValue = a ; var b , c , d = this ; switch ( a = a || { } , b = a . type || BI . DynamicDateCombo . Static , c = a . value || a , this . dateTab . setSelect ( b ) , b ) { case BI . DynamicDateCombo . Dynamic : this . dynamicPane . setValue ( c ) , d . _setInnerValue ( ) ; break ; case BI . DynamicDateCombo . Static : default : this . year . setValue ( c ) , this . textButton . setValue ( BI . i18nText ( " BI - Basic _Current _Year
var b = a . storeTriggerValue , c = a . trigger . getKey ( ) ; BI . isNotEmptyString ( c ) && ! BI . isEqual ( c , b ) && ( a . storeValue = a . trigger . getValue ( ) , a . setValue ( a . trigger . getValue ( ) ) ) , a . _checkDynamicValue ( a . storeValue ) , a . fireEvent ( BI . DynamicYearQuarterCombo . EVENT _CONFIRM ) } ) , this . trigger . on ( BI . DynamicYearQuarterTrigger . EVENT _FOCUS , function ( ) { a . storeTriggerValue = a . trigger . getKey ( ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , container : b . container , isNeedAdjustHeight : ! 1 , isNeedAdjustWidth : ! 1 , el : this . trigger , popup : { minWidth : 85 , stopPropagation : ! 1 , el : { type : "bi.dynamic_year_quarter_popup" , ref : function ( ) { a . popup = this } , listeners : [ { eventName : BI . DynamicYearQuarterPopup . EVENT _CHANGE , action : function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . combo . hideView ( ) , a . fireEvent ( BI . DynamicYearQuarterCombo . EVENT _CONFIRM ) } } , { eventName : BI . DynamicYearQuarterPopup . BUTTON _CLEAR _EVENT _CHANGE , action : function ( ) { a . setValue ( ) , a . combo . hideView ( ) , a . fireEvent ( BI . DynamicYearQuarterCombo . EVENT _CONFIRM ) } } , { eventName : BI . DynamicYearQuarterPopup . BUTTON _lABEL _EVENT _CHANGE , action : function ( ) { var b = BI . getDate ( ) ; a . setValue ( { type : BI . DynamicYearMonthCombo . Static , value : { year : b . getFullYear ( ) , quarter : b . getQuarter ( ) } } ) , a . combo . hideView ( ) , a . fireEvent ( BI . DynamicDateCombo . EVENT _CONFIRM ) } } , { eventName : BI . DynamicYearQuarterPopup . BUTTON _OK _EVENT _CHANGE , action : function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . combo . hideView ( ) , a . fireEvent ( BI . DynamicDateCombo . EVENT _CONFIRM ) } } ] , behaviors : b . behaviors , min : b . min , max : b . max } , value : b . value || "" } } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { a . popup . setValue ( a . storeValue ) , a . fireEvent ( BI . DynamicYearQuarterCombo . EVENT _BEFORE _POPUPVIEW ) } ) , BI . createWidget ( { type : "bi.htape" , element : this , ref : function ( ) { a . comboWrapper = this } , items : [ { el : { type : "bi.icon_button" , cls : "bi-trigger-icon-button date-change-h-font" , width : 24 , height : 24 , ref : function ( ) { a . changeIcon = this } } , width : 24 } , this . combo ] } ) , this . _checkDynamicValue ( b . value ) } , _checkDynamicValue : function ( a ) { var b = null ; switch ( BI . isNotNull ( a ) && ( b = a . type ) , b ) { case BI . DynamicYearQuarterCombo . 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 ( a ) { this . storeValue = a , this . trigger . setValue ( a ) , this . _checkDynamicValue ( a ) } , getValue : function ( ) { return this . storeValue } } ) , BI . DynamicYearQuarterCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . DynamicYearQuarterCombo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . shortcut ( "bi.dynamic_year_quarter_combo" , BI . DynamicYearQuarterCombo ) , BI . extend ( BI . DynamicYearQuarterCombo , { Static : 1 , Dynamic : 2 } ) , BI . DynamicYearQuarterPopup = BI . inherit ( BI . Widget , { constants : { tabHeight : 30 , buttonHeight : 24 } , props : { baseCls : "bi-year-quarter-popup" , behaviors : { } , min : "1900-01-01" , max : "2099-12-31" , width : 180 , height : 240 } , render : function ( ) { var a = this , b = ( this . options , this . constants ) ; return this . storeValue = { type : BI . DynamicYearQuarterCombo . Static } , { type : "bi.vtape" , items : [ { el : this . _getTabJson ( ) } , { el : { type : "bi.grid" , items : [ [ { type : "bi.text_button" , forceCenter : ! 0 , cls : "bi-split-top bi-high-light" , shadow : ! 0 , textHeight : b . buttonHeight - 1 , text : BI . i18nText ( "BI-Basic_Clear" ) , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicYearQuarterPopup . BUTTON _CLEAR _EVENT _CHANGE ) } } ] } , { type : "bi.text_button" , forceCenter : ! 0 , cls : "bi-split-left bi-split-right bi-high-light bi-split-top" , textHeight : b . buttonHeight - 1 , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_Current_Quarter" ) , ref : function ( ) { a . textButton = this } , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicYearQuarterPopup . BUTTON _lABEL _EVENT _CHANGE ) } } ] } , { type : "bi.text_button" , forceCenter : ! 0 , cls : "bi-split-top bi-high-light" , shadow : ! 0 , textHeight : b . buttonHeight - 1 , text : BI . i18nText ( "BI-Basic_OK" ) , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicYearQuarterPopup . BUTTON _OK _EVENT _CHANGE ) } } ] } ] ] } , height : 24 } ] } } , _setInnerValue : function ( ) { if ( this . dateTab . getSelect ( ) === BI . DynamicYearQuarterCombo . Static ) this . textButton . setValue ( BI . i18nText ( " BI - Basic _C
this . _events || ( this . _events = { } ) ; var e = this . _events [ a ] || ( this . _events [ a ] = [ ] ) ; return e . push ( { callback : b , context : d , ctx : d || this } ) , this } , once : function ( a , b , d ) { if ( ! c ( this , "once" , a , [ b , d ] ) || ! b ) return this ; var e = this , f = _ . once ( function ( ) { e . off ( a , f ) , b . apply ( this , arguments ) } ) ; return f . _callback = b , this . on ( a , f , d ) } , off : function ( a , b , d ) { if ( ! this . _events || ! c ( this , "off" , a , [ b , d ] ) ) return this ; if ( ! a && ! b && ! d ) return this . _events = void 0 , this ; for ( var e = a ? [ a ] : _ . keys ( this . _events ) , f = 0 , g = e . length ; f < g ; f ++ ) { a = e [ f ] ; var h = this . _events [ a ] ; if ( h ) if ( b || d ) { for ( var i = [ ] , j = 0 , k = h . length ; j < k ; j ++ ) { var l = h [ j ] ; ( b && b !== l . callback && b !== l . callback . _callback || d && d !== l . context ) && i . push ( l ) } i . length ? this . _events [ a ] = i : delete this . _events [ a ] } else delete this . _events [ a ] } return this } , un : function ( ) { this . off . apply ( this , arguments ) } , trigger : function ( a ) { if ( ! this . _events ) return this ; var b = slice . call ( arguments , 1 ) ; if ( ! c ( this , "trigger" , a , b ) ) return this ; var e = this . _events [ a ] , f = this . _events . all ; return e && d ( e , b ) , f && d ( f , arguments ) , this } , fireEvent : function ( ) { this . trigger . apply ( this , arguments ) } , listenTo : function ( a , b , c ) { var d = this . _listeningTo || ( this . _listeningTo = { } ) , e = a . _listenId || ( a . _listenId = _ . uniqueId ( "l" ) ) ; return d [ e ] = a , c || "object" != typeof b || ( c = this ) , a . on ( b , c , this ) , this } , listenToOnce : function ( a , c , d ) { if ( "object" == typeof c ) { for ( var e in c ) this . listenToOnce ( a , e , c [ e ] ) ; return this } if ( b . test ( c ) ) { for ( var f = c . split ( b ) , g = 0 , h = f . length ; g < h ; g ++ ) this . listenToOnce ( a , f [ g ] , d ) ; return this } if ( ! d ) return this ; var i = _ . once ( function ( ) { this . stopListening ( a , c , i ) , d . apply ( this , arguments ) } ) ; return i . _callback = d , this . listenTo ( a , c , i ) } , stopListening : function ( a , b , c ) { var d = this . _listeningTo ; if ( ! d ) return this ; var e = ! b && ! c ; c || "object" != typeof b || ( c = this ) , a && ( ( d = { } ) [ a . _listenId ] = a ) ; for ( var f in d ) a = d [ f ] , a . off ( b , c , this ) , ( e || _ . isEmpty ( a . _events ) ) && delete this . _listeningTo [ f ] ; return this } } , b = /\s+/ , c = function ( a , c , d , e ) { if ( ! d ) return ! 0 ; if ( "object" == typeof d ) { for ( var f in d ) a [ c ] . apply ( a , [ f , d [ f ] ] . concat ( e ) ) ; return ! 1 } if ( b . test ( d ) ) { for ( var g = d . split ( b ) , h = 0 , i = g . length ; h < i ; h ++ ) a [ c ] . apply ( a , [ g [ h ] ] . concat ( e ) ) ; return ! 1 } return ! 0 } , d = function ( a , b ) { var c , d = - 1 , e = a . length , f = b [ 0 ] , g = b [ 1 ] , h = b [ 2 ] ; switch ( b . length ) { case 0 : for ( ; ++ d < e ; ) ( c = a [ d ] ) . callback . call ( c . ctx ) ; return ; case 1 : for ( ; ++ d < e ; ) ( c = a [ d ] ) . callback . call ( c . ctx , f ) ; return ; case 2 : for ( ; ++ d < e ; ) ( c = a [ d ] ) . callback . call ( c . ctx , f , g ) ; return ; case 3 : for ( ; ++ d < e ; ) ( c = a [ d ] ) . callback . call ( c . ctx , f , g , h ) ; return ; default : for ( ; ++ d < e ; ) ( c = a [ d ] ) . callback . apply ( c . ctx , b ) ; return } } , e = BI . Router = function ( a ) { a || ( a = { } ) , a . routes && ( this . routes = a . routes ) , this . _bindRoutes ( ) , this . _init . apply ( this , arguments ) } , f = /\((.*?)\)/g , g = /(\(\?)?:\w+/g , h = /\*\w+/g , i = /[\-{}\[\]+?.,\\\^$|#\s]/g ; _ . extend ( e . prototype , a , { _init : function ( ) { } , route : function ( a , b , c ) { _ . isRegExp ( a ) || ( a = this . _routeToRegExp ( a ) ) , _ . isFunction ( b ) && ( c = b , b = "" ) , c || ( c = this [ b ] ) ; var d = this ; return BI . history . route ( a , function ( e ) { var f = d . _extractParameters ( a , e ) ; d . execute ( c , f , b ) !== ! 1 && ( d . trigger . apply ( d , [ "route:" + b ] . concat ( f ) ) , d . trigger ( "route" , b , f ) , BI . history . trigger ( "route" , d , b , f ) ) } ) , this } , execute : function ( a , b , c ) { a && a . apply ( this , b ) } , navigate : function ( a , b ) { return BI . history . navigate ( a , b ) , this } , _bindRoutes : function ( ) { if ( this . routes ) { this . routes = _ . result ( this , "routes" ) ; for ( var a , b = _ . keys ( this . routes ) ; null != ( a = b . pop ( ) ) ; ) this . route ( a , this . routes [ a ] ) } } , _routeToRegExp : function ( a ) { return a = a . replace ( i , "\\$&" ) . replace ( f , "(?:$1)?" ) . replace ( g , function ( a , b ) { return b ? a : "([^/?]+)" } ) . replace ( h , "([^?]*?)" ) , new RegExp ( "^" + a + "(?:\\?([\\s\\S]*))?$" ) } , _extractParameters : function ( a , b ) { var c = a . exec ( b ) . slice ( 1 ) ; return _ . map ( c , function ( a , b ) { return b === c . length - 1 ? a || null : a ? decodeURIComponent ( a ) : null } ) } } ) ; var j = function ( ) { this . handlers = [ ] , this . checkUrl = _ . bind ( this . checkUrl , this ) , "undefined" != typeof window && ( this . location = _global . location , this . history = _global . history ) } , k = /^[#\/]|\s+$/g , l = /^\/+|\/+$/g , m = /#.*$/ ; j . started = ! 1 , _ . extend ( j . prototype , a , { interval : 50 , atRoot : function ( ) { var a = this . location . pathname . replace ( /[^\/]$/ , "$&/" ) ; return a === this . root && ! this . getSearch ( ) } , getSearch : function ( ) { var a = this . location . href . replace ( /#.*/ , "" ) . match ( /\?.+/ ) ; return a ? a [ 0 ] : "" } , getHash : function ( a ) { var b = ( a || this ) . location . href . m