/*! fineui 2019-05-30 14:13:16 */
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/ ; if ( c . test ( b ) ) { var d = Array . prototype . sort ; Array . prototype . sort = function ( a ) { if ( a && "function" == typeof a ) { if ( this . length < 2 ) return this ; for ( var b , c = 0 , e = c + 1 , f = this . length , g = ! 1 , h = 0 ; c < f ; c ++ ) for ( e = c + 1 ; e < f ; e ++ ) h = a . call ( this , this [ c ] , this [ e ] ) , g = ( "number" == typeof h ? h : h ? 1 : 0 ) > 0 , g === ! 0 && ( b = this [ c ] , this [ c ] = this [ e ] , this [ e ] = b ) ; return this } return d . call ( this ) } } } ( window ) ; var _global ; _global = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this , null == _global . BI && ( _global . BI = { prepares : [ ] } ) , null == _global . BI . prepares && ( _global . BI . prepares = [ ] ) , function ( ) { function a ( a , b , c ) { switch ( c . length ) { case 0 : return a . call ( b ) ; case 1 : return a . call ( b , c [ 0 ] ) ; case 2 : return a . call ( b , c [ 0 ] , c [ 1 ] ) ; case 3 : return a . call ( b , c [ 0 ] , c [ 1 ] , c [ 2 ] ) } return a . apply ( b , c ) } function b ( a , b , c , d ) { for ( var e = - 1 , f = null == a ? 0 : a . length ; ++ e < f ; ) { var g = a [ e ] ; b ( d , g , c ( g ) , a ) } return d } function c ( a , b ) { for ( var c = - 1 , d = null == a ? 0 : a . length ; ++ c < d && b ( a [ c ] , c , a ) !== ! 1 ; ) ; return a } function d ( a , b ) { for ( var c = - 1 , d = null == a ? 0 : a . length ; ++ c < d ; ) if ( ! b ( a [ c ] , c , a ) ) return ! 1 ; return ! 0 } function e ( a , b ) { for ( var c = - 1 , d = null == a ? 0 : a . length , e = 0 , f = [ ] ; ++ c < d ; ) { var g = a [ c ] ; b ( g , c , a ) && ( f [ e ++ ] = g ) } return f } function f ( a , b ) { var c = null == a ? 0 : a . length ; return ! ! c && o ( a , b , 0 ) > - 1 } function g ( a , b , c ) { for ( var d = - 1 , e = null == a ? 0 : a . length ; ++ d < e ; ) if ( c ( b , a [ d ] ) ) return ! 0 ; return ! 1 } function h ( a , b ) { for ( var c = - 1 , d = null == a ? 0 : a . length , e = Array ( d ) ; ++ c < d ; ) e [ c ] = b ( a [ c ] , c , a ) ; return e } function i ( a , b ) { for ( var c = - 1 , d = b . length , e = a . length ; ++ c < d ; ) a [ e + c ] = b [ c ] ; return a } function j ( a , b , c , d ) { var e = - 1 , f = null == a ? 0 : a . length ; for ( d && f && ( c = a [ ++ e ] ) ; ++ e < f ; ) c = b ( c , a [ e ] , e , a ) ; return c } function k ( a , b ) { for ( var c = - 1 , d = null == a ? 0 : a . length ; ++ c < d ; ) if ( b ( a [ c ] , c , a ) ) return ! 0 ; return ! 1 } function l ( a ) { return a . split ( "" ) } function m ( a , b , c ) { var d ; return c ( a , func
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 de ( a ) { return Rb ( a , me ( a ) ) } function ee ( a ) { return null == a ? "" : yb ( a ) } function fe ( a , b ) { var c = Th ( a ) ; return null == b ? c : za ( c , b ) } function ge ( a , b ) { return m ( a , fb ( b , 3 ) , La ) } function he ( a , b ) { return m ( a , fb ( b , 3 ) , Ma ) } function ie ( a , b , c ) { var d = null == a ? Ie : Oa ( a , b ) ; return d === Ie ? c : d } function je ( a , b ) { return null != a && wc ( a , b , Sa ) } function ke ( a , b ) { return null != a && wc ( a , b , Ta ) } function le ( a ) { return Kd ( a ) ? ua ( a ) : gb ( a ) } function me ( a ) { return Kd ( a ) ? ua ( a , ! 0 ) : hb ( a ) } function ne ( a , b ) { return oe ( a , Dd ( fb ( b ) ) ) } function oe ( a , b ) { if ( null == a ) return { } ; var c = h ( nc ( a ) , function ( a ) { return [ a ] } ) ; return b = fb ( b ) , qb ( a , c , function ( a , c ) { return b ( a , c [ 0 ] ) } ) } function pe ( a , b , c ) { b = Eb ( b , a ) ; var d = - 1 , e = b . length ; for ( e || ( e = 1 , a = Ie ) ; ++ d < e ; ) { var f = null == a ? Ie : a [ Uc ( b [ d ] ) ] ; f === Ie && ( d = e , f = c ) , a = Qd ( f ) ? f . call ( a ) : f } return a } function qe ( a ) { return null == a ? [ ] : w ( a , le ( a ) ) } function re ( a , b , c ) { return c === Ie && ( c = b , b = Ie ) , c !== Ie && ( c = ce ( c ) , c = c === c ? c : 0 ) , b !== Ie && ( b = ce ( b ) , b = b === b ? b : 0 ) , Da ( ce ( a ) , b , c ) } function se ( a , b , c ) { if ( c && "boolean" != typeof c && Dc ( a , b , c ) && ( b = c = Ie ) , c === Ie && ( "boolean" == typeof b ? ( c = b , b = Ie ) : "boolean" == typeof a && ( c = a , a = Ie ) ) , a === Ie && b === Ie ? ( a = 0 , b = 1 ) : ( a = ae ( a ) , b === Ie ? ( b = a , a = 0 ) : b = ae ( b ) ) , a > b ) { var d = a ; a = b , b = d } if ( c || a % 1 || b % 1 ) { var e = Ch ( ) ; return Ah ( a + e * ( b - a + Gg ( "1e-" + ( ( e + "" ) . length - 1 ) ) ) , b ) } return sb ( a , b ) } function te ( a ) { return a = ee ( a ) , a && Uf . test ( a ) ? a . replace ( Tf , Wg ) : a } function ue ( a , b , c ) { if ( a = ee ( a ) , a && ( c || b === Ie ) ) return a . replace ( Zf , "" ) ; if ( ! a || ! ( b = yb ( b ) ) ) return a ; var d = L ( a ) , e = L ( b ) , f = y ( d , e ) , g = z ( d , e ) + 1 ; return Fb ( d , f , g ) . join ( "" ) } function ve ( a ) { return function ( ) { return a } } function we ( a ) { return a } function xe ( a ) { return fb ( "function" == typeof a ? a : Ea ( a , Pe ) ) } function ye ( a ) { return kb ( Ea ( a , Pe ) ) } function ze ( a , b , d ) { var e = le ( b ) , f = Na ( b , e ) ; null != d || Sd ( b ) && ( f . length || ! e . length ) || ( d = b , b = a , a = this , f = N
var p = - 1 ; for ( l = 0 ; l < 12 ; ++ l ) if ( BI . 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 * ( new Date ) . 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 * ( new Date ) . getTimezoneOffset ( ) : a . getTime ( ) } } ) } ( ) , ! function ( ) { function a ( ) { for ( var a , b , c , d , e = arguments [ 0 ] || { } , f = arguments . length , g = 1 ; g < f ; g ++ ) if ( null != ( a = arguments [ g ] ) ) for ( b in a ) c = e [ b ] , d = a [ b ] , e !== d && void 0 !== d && ( e [ b ] = d ) ; return e } BI . OB = function ( b ) { var c = this . props ; BI . isFunction ( this . props ) && ( c = this . props ( b ) ) , this . options = a ( this . _defaultConfig ( b ) , c , b ) , 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 . un ( a , c ) } ; this . on ( a , c ) } , un : function ( a , b ) { if ( a = a . toLowerCase ( ) , null == b ) delete this . _getEvents ( ) [ a ] ; else { var c = this . _getEvents ( ) [ a ] ; if ( _ . isArray ( c ) ) { var d = [ ] ; _ . each ( c , function ( a ) { a != b && d . push ( a ) } ) , this . _getEvents ( ) [ a ] = d } } } , purgeListeners : function ( ) { this . events = [ ] } , fireEvent : function ( ) { var a = arguments [ 0 ] . toLowerCase ( ) , b = this . _getEvents ( ) [ a ] ; if ( BI . isArray ( b ) ) if ( BI . isArguments ( arguments [ 1 ] ) ) { for ( var c = 0 ; c < b . length ; c ++ ) if ( b [ c ] . apply ( this , arguments [ 1 ] ) === ! 1 ) return ! 1 } else for ( var d = Array . prototype . slice . call ( arguments , 1 ) , c = 0 ; c < b . length ; c ++ ) if ( b [ c ] . apply ( this , d ) === ! 1 ) return ! 1 ; return ! 0 } , destroy : function ( ) { this . destroyed && this . destroyed ( ) , this . _purgeRef ( ) , this . purgeListeners ( ) } } ) } ( ) , ! function ( ) { BI . Widget = BI . inherit ( BI . OB , { _defaultConfig : function ( ) { return BI . extend ( BI . Widget . superclass . _defaultConfig . apply ( this ) , { root : ! 1 , tagName : "div" , attributes : null , data : null , tag : null , disabled : ! 1 , invisible : ! 1 , invalid : ! 1 , baseCls : "" , extraCls : "" , cls : "" } ) } , beforeInit : null , beforeCreate : null , created : null , render : null , beforeMount : null , mounted : null , shouldUpdate : null , update : function ( ) { } , beforeDestroy : null , destroyed : null , _init : function ( ) { BI . Widget . superclass . _init . apply ( this , arguments ) , this . _initRoot ( ) , this . _initElementWidth ( ) , this . _initElementHeight ( ) , this . _initVisual ( ) , this . _initState ( ) , this . _initRender ( ) } , _initRender : function ( ) { this . beforeInit ? ( this . _ _asking = ! 0 , this . beforeInit ( BI . bind ( this . _render , this ) ) , this . _ _asking === ! 0 && ( this . _ _async = ! 0 ) ) : this . _render ( ) } , _render : function ( ) { this . _ _a
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 (
d [ a ] || ( d [ a ] = [ ] ) , d [ a ] . length > 0 && console . log ( "对象已经注册过了!" ) , d [ a ] . push ( b ) } , relieveObject : function ( a ) { delete d [ a ] } } ) } ( ) , BI . Action = BI . inherit ( BI . OB , { _defaultConfig : function ( ) { return BI . extend ( BI . Action . superclass . _defaultConfig . apply ( this , arguments ) , { src : null , tar : null } ) } , _init : function ( ) { BI . Action . superclass . _init . apply ( this , arguments ) } , actionPerformed : function ( a , b , c ) { } , actionBack : function ( a , b , c ) { } } ) , BI . ActionFactory = { createAction : function ( a , b ) { 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 = functio
return BI . each ( a , function ( a , j ) { if ( j = BI . deepClone ( j ) , e = BI . stripEL ( j ) , f = BI . find ( [ e [ c ] , e . text , e . value , e . name , e ] , function ( a , b ) { return BI . isNotNull ( b ) } ) , ! BI . isNull ( f ) && ! BI . isObject ( f ) ) { g = BI . makeFirstPY ( f ) , f = BI . toUpperCase ( f ) , g = BI . toUpperCase ( g ) ; var k ; f . indexOf ( b ) > - 1 ? f === b ? d ? h . push ( j ) : h [ a ] = j : d ? i . push ( j ) : i [ a ] = j : ( k = g . indexOf ( b ) , k > - 1 && Math . floor ( k / f . length ) === Math . floor ( ( k + b . length - 1 ) / f . length ) && ( f === b || b . length === f . length ? d ? h . push ( j ) : h [ a ] = j : d ? i . push ( j ) : i [ a ] = j ) ) } } ) , { match : h , find : i } } } ) , _ . extend ( BI , { beforeFunc : function ( a , b ) { var c = a ; return function ( ) { return b . apply ( a , arguments ) !== ! 1 && c . apply ( a , arguments ) } } , afterFunc : function ( a ) { var b = sFunc ; return function ( ) { var c = b . apply ( sFunc , arguments ) ; return c !== ! 1 && ( a . apply ( sFunc , arguments ) , c ) } } } ) , _ . extend ( BI , { add : function ( a , b ) { function c ( 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 } return c ( b , a ) } , sub : function ( a , b ) { function c ( 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 ) } return c ( a , b ) } , mul : function ( a , b ) { function c ( 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 ) } return c ( b , a ) } , div : function ( a , b ) { function c ( a ) { var b = a . toString ( ) . split ( /[eE]/ ) , c = ( b [ 0 ] . split ( "." ) [ 1 ] || "" ) . length - + ( b [ 1 ] || 0 ) ; return c > 0 ? c : 0 } function d ( a ) { if ( a . toString ( ) . indexOf ( "e" ) === - 1 ) return Number ( a . toString ( ) . replace ( "." , "" ) ) ; var b = c ( a ) ; return b > 0 ? a * Math . pow ( 10 , b ) : a } function e ( a , b ) { for ( var f = [ ] , g = 2 ; g < arguments . length ; g ++ ) f [ g - 2 ] = arguments [ g ] ; if ( f . length > 0 ) return e . apply ( void 0 , [ e ( a , b ) , f [ 0 ] ] . concat ( f . slice ( 1 ) ) ) ; var h = d ( a ) , i = d ( b ) , j = c ( a ) + c ( b ) , k = h * i ; return k / Math . pow ( 10 , j ) } function f ( a , b ) { for ( var g = [ ] , h = 2 ; h < arguments . length ; h ++ ) g [ h - 2 ] = arguments [ h ] ; if ( g . length > 0 ) return f . apply ( void 0 , [ f ( a , b ) , g [ 0 ] ] . concat ( g . slice ( 1 ) ) ) ; var i = d ( a ) , j = d ( b ) ; return e ( i / j , Math . pow ( 10 , c ( b ) - c ( a ) ) ) } return f ( a , b ) } } ) , _ . extend ( BI , { startWith : function ( a , b ) { return a = a || "" , ! ( null == b || "" == b || 0 === a . length || b . length > a . length ) && a . substr ( 0 , b . length ) == b } , endWith : function ( a , b ) { return ! ( null == b || "" == b || 0 === a . length || b . length > a . length ) && a . substring ( a . length - b . length ) == b } , getQuery : function ( a , b ) { var c = new RegExp ( "(^|&)" + b + "=([^&]*)(&|$)" ) , d = a . substr ( a . indexOf ( "?" ) + 1 ) . match ( c ) ; return d ? unescape ( d [ 2 ] ) : null } , appendQuery : function ( a , b ) { if ( ! b ) return a ; var c = a ; return c . indexOf ( "?" ) === - 1 && ( c += "?" ) , c . endWith ( "?" ) !== ! 1 || ( c += "&" ) , _ . each ( b , function ( a , b ) { "string" == typeof b && ( c += b + "=" + a + "&" ) } ) , c = c . substr ( 0 , c . length - 1 ) } , replaceAll : function ( a , b , c ) { return a . replace ( new RegExp ( b , "gm" ) , c ) } , perfectStart : function ( a , b ) { return a . startWith ( b ) ? a : b + a } , allIndexOf : function ( a , b ) { if ( "string" != typeof b ) return [ ] ; for ( var c = [ ] , d = 0 ; a . length > 0 ; ) { var e = a . indexOf ( b ) ; if ( e === - 1 ) break ; c . push ( d + e ) , a = a . substring ( e + b . length , a . length ) , d += e + b . length } return c } } ) , ! function ( ) { var a = { } ; _ . extend ( BI , { addI18n : function ( b ) { BI . extend ( a , b ) } , i18nText : function ( b ) { var c = a [ b ] || BI . i18n && BI . i18n [ b ] || "" ; c || ( c = b ) ; var d = arguments . length ; if ( d > 1 ) { if ( ! ( c . indexOf ( "{R1}" ) > - 1 ) ) { var e = Array . prototype . slice . call ( arguments ) , f = 1 ; return BI . replaceAll ( c , "\\{\\s*\\}" , function ( ) { return e [ f ++ ] + "" } ) } for ( var g = 1 ; g < d ; g ++ ) { var b = "{R" + g + "}" ; c = BI . replaceAll ( c , b , arguments [ g ] + "" ) } } return c } } ) } ( ) , function ( ) { var a = { } ; BI . module = function ( b , c ) { null != a [ b ] && _global . console && console . error ( "module:[" + b + "] has been registed" ) , a [ b ] = c } ; var b = { } ; BI . constant = function ( a , c ) { null != b [ a ] && _global . console && console . error ( "constant:[" + a + "] has been registed" ) , b [ a ] = c } ; var c = { } ; BI . model = function ( a , b ) { null != c [ a ] && _global . console && console . error ( "model:[" + a + "] has been registed" ) , c [ a ] = b } ; var d = { }
j || ( k [ l ] . toJSON = ia . noop ) ) , "object" != typeof c && "function" != typeof c || ( e ? k [ l ] = ia . extend ( k [ l ] , c ) : k [ l ] . data = ia . extend ( k [ l ] . data , c ) ) , f = k [ l ] , e || ( f . data || ( f . data = { } ) , f = f . data ) , d !== b && ( f [ ia . camelCase ( c ) ] = d ) , i ? ( g = f [ c ] , null == g && ( g = f [ ia . camelCase ( c ) ] ) ) : g = f , g } } function f ( a , b , c ) { if ( ia . acceptData ( a ) ) { var d , e , f , g = a . nodeType , i = g ? ia . cache : a , j = g ? a [ ia . expando ] : ia . expando ; if ( i [ j ] ) { if ( b && ( f = c ? i [ j ] : i [ j ] . data ) ) { ia . isArray ( b ) ? b = b . concat ( ia . map ( b , ia . camelCase ) ) : b in f ? b = [ b ] : ( b = ia . camelCase ( b ) , b = b in f ? [ b ] : b . split ( " " ) ) ; for ( d = 0 , e = b . length ; d < e ; d ++ ) delete f [ b [ d ] ] ; if ( ! ( c ? h : ia . isEmptyObject ) ( f ) ) return } ( c || ( delete i [ j ] . data , h ( i [ j ] ) ) ) && ( g ? ia . cleanData ( [ a ] , ! 0 ) : ia . support . deleteExpando || i != i . window ? delete i [ j ] : i [ j ] = null ) } } } function g ( a , c , d ) { if ( d === b && 1 === a . nodeType ) { var e = "data-" + c . replace ( za , "-$1" ) . toLowerCase ( ) ; if ( d = a . getAttribute ( e ) , "string" == typeof d ) { try { d = "true" === d || "false" !== d && ( "null" === d ? null : + d + "" === d ? + d : ya . test ( d ) ? ia . parseJSON ( d ) : d ) } catch ( f ) { } ia . data ( a , c , d ) } else d = b } return d } function h ( a ) { var b ; for ( b in a ) if ( ( "data" !== b || ! ia . isEmptyObject ( a [ b ] ) ) && "toJSON" !== b ) return ! 1 ; return ! 0 } function i ( ) { return ! 0 } function j ( ) { return ! 1 } function k ( a , b ) { do a = a [ b ] ; while ( a && 1 !== a . nodeType ) ; return a } function l ( a , b , c ) { if ( b = b || 0 , ia . isFunction ( b ) ) return ia . grep ( a , function ( a , d ) { var e = ! ! b . call ( a , d , a ) ; return e === c } ) ; if ( b . nodeType ) return ia . grep ( a , function ( a ) { return a === b === c } ) ; if ( "string" == typeof b ) { var d = ia . grep ( a , function ( a ) { return 1 === a . nodeType } ) ; if ( Ra . test ( b ) ) return ia . filter ( b , d , ! c ) ; b = ia . filter ( b , d ) } return ia . grep ( a , function ( a ) { return ia . inArray ( a , b ) >= 0 === c } ) } function m ( a ) { var b = Ua . split ( "|" ) , c = a . createDocumentFragment ( ) ; if ( c . createElement ) for ( ; b . length ; ) c . createElement ( b . pop ( ) ) ; return c } function n ( a , b ) { return a . getElementsByTagName ( b ) [ 0 ] || a . appendChild ( a . ownerDocument . createElement ( b ) ) } function o ( a ) { var b = a . getAttributeNode ( "type" ) ; return a . type = ( b && b . specified ) + "/" + a . type , a } function p ( a ) { var b = eb . exec ( a . type ) ; return b ? a . type = b [ 1 ] : a . removeAttribute ( "type" ) , a } function q ( a , b ) { for ( var c , d = 0 ; null != ( c = a [ d ] ) ; d ++ ) ia . _data ( c , "globalEval" , ! b || ia . _data ( b [ d ] , "globalEval" ) ) } function r ( a , b ) { if ( 1 === b . nodeType && ia . hasData ( a ) ) { var c , d , e , f = ia . _data ( a ) , g = ia . _data ( b , f ) , h = f . events ; if ( h ) { delete g . handle , g . events = { } ; for ( c in h ) for ( d = 0 , e = h [ c ] . length ; d < e ; d ++ ) ia . event . add ( b , c , h [ c ] [ d ] ) } g . data && ( g . data = ia . extend ( { } , g . data ) ) } } function s ( a , b ) { var c , d , e ; if ( 1 === b . nodeType ) { if ( c = b . nodeName . toLowerCase ( ) , ! ia . support . noCloneEvent && b [ ia . expando ] ) { e = ia . _data ( b ) ; for ( d in e . events ) ia . removeEvent ( b , d , e . handle ) ; b . removeAttribute ( ia . expando ) } "script" === c && b . text !== a . text ? ( o ( b ) . text = a . text , p ( b ) ) : "object" === c ? ( b . parentNode && ( b . outerHTML = a . outerHTML ) , ia . support . html5Clone && a . innerHTML && ! ia . trim ( b . innerHTML ) && ( b . innerHTML = a . innerHTML ) ) : "input" === c && bb . test ( a . type ) ? ( b . defaultChecked = b . checked = a . checked , b . value !== a . value && ( b . value = a . value ) ) : "option" === c ? b . defaultSelected = b . selected = a . defaultSelected : "input" !== c && "textarea" !== c || ( b . defaultValue = a . defaultValue ) } } function t ( a , c ) { var d , e , f = 0 , g = typeof a . getElementsByTagName !== V ? a . getElementsByTagName ( c || "*" ) : typeof a . querySelectorAll !== V ? a . querySelectorAll ( c || "*" ) : b ; if ( ! g ) for ( g = [ ] , d = a . childNodes || a ; null != ( e = d [ f ] ) ; f ++ ) ! c || ia . nodeName ( e , c ) ? g . push ( e ) : ia . merge ( g , t ( e , c ) ) ; return c === b || c && ia . nodeName ( a , c ) ? ia . merge ( [ a ] , g ) : g } function u ( a ) { bb . test ( a . type ) && ( a . defaultChecked = a . checked ) } function v ( a , b ) { if ( b in a ) return b ; for ( var c = b . charAt ( 0 ) . toUpperCase ( ) + b . slice ( 1 ) , d = b , e = yb . length ; e -- ; ) if ( b = yb [ e ] + c , b in a ) return b ; return d } function w ( a , b ) { return a = b || a , "none" === ia . css ( a , "display" ) || ! ia . contains ( a . ownerDocument , a ) } function x ( a , b ) { for ( var c , d , e , f = [ ] , g = 0 , h = a . length ; g < h ; g ++ ) d = a [ g ] , d . style && ( f [ g ] = ia . _data ( d , "olddisplay" ) , c = d . style . display , b ? ( f [ g ] || "none" !== c || ( d . style . display = "" ) , "" === d . style . display && w ( d ) && ( f [ g ] = ia . _data ( d , "olddisplay" , B ( d . nodeName ) ) ) ) : f [ g ] || ( e = w ( d ) , ( c && "none" !== c || ! e ) && ia . _data ( d , "olddisplay" , e ? c : ia . css ( d , "display" ) ) ) ) ; for ( g = 0 ; g < h ; g ++ ) d = a [ g ] , d . style && ( b && "none" !== d . style . display && "" !== d . style . display || ( d . style . display = b ? f [ g ] || "" : "none" ) ) ; return a } function y ( a , b , c ) { var d = rb . exec ( b ) ; return d ? Math . max ( 0 , d [ 1 ] - ( c || 0 ) ) + ( d [ 2 ] || "px" ) : b } function z ( a , b , c , d , e ) { for ( var
return d && ( "id" === c || "name" === c || "coords" === c ? "" !== d . value : d . specified ) ? d . value : b } , set : function ( a , c , d ) { var e = a . getAttributeNode ( d ) ; return e || a . setAttributeNode ( e = a . ownerDocument . createAttribute ( d ) ) , e . value = c += "" , "value" === d || c === a . getAttribute ( d ) ? c : b } } , ia . attrHooks . contenteditable = { get : Aa . get , set : function ( a , b , c ) { Aa . set ( a , "" !== b && b , c ) } } , ia . each ( [ "width" , "height" ] , function ( a , b ) { ia . attrHooks [ b ] = ia . extend ( ia . attrHooks [ b ] , { set : function ( a , c ) { if ( "" === c ) return a . setAttribute ( b , "auto" ) , c } } ) } ) ) , ia . support . hrefNormalized || ( ia . each ( [ "href" , "src" , "width" , "height" ] , function ( a , c ) { ia . attrHooks [ c ] = ia . extend ( ia . attrHooks [ c ] , { get : function ( a ) { var d = a . getAttribute ( c , 2 ) ; return null == d ? b : d } } ) } ) , ia . each ( [ "href" , "src" ] , function ( a , b ) { ia . propHooks [ b ] = { get : function ( a ) { return a . getAttribute ( b , 4 ) } } } ) ) , ia . support . style || ( ia . attrHooks . style = { get : function ( a ) { return a . style . cssText || b } , set : function ( a , b ) { return a . style . cssText = b + "" } } ) , ia . support . optSelected || ( ia . propHooks . selected = ia . extend ( ia . propHooks . selected , { get : function ( a ) { var b = a . parentNode ; return b && ( b . selectedIndex , b . parentNode && b . parentNode . selectedIndex ) , null } } ) ) , ia . support . enctype || ( ia . propFix . enctype = "encoding" ) , ia . support . checkOn || ia . each ( [ "radio" , "checkbox" ] , function ( ) { ia . valHooks [ this ] = { get : function ( a ) { return null === a . getAttribute ( "value" ) ? "on" : a . value } } } ) , ia . each ( [ "radio" , "checkbox" ] , function ( ) { ia . valHooks [ this ] = ia . extend ( ia . valHooks [ this ] , { set : function ( a , b ) { if ( ia . isArray ( b ) ) return a . checked = ia . inArray ( ia ( a ) . val ( ) , b ) >= 0 } } ) } ) ; var Ka = /^(?:input|select|textarea)$/i , La = /^key/ , Ma = /^(?:mouse|contextmenu)|click/ , Na = /^(?:focusinfocus|focusoutblur)$/ , Oa = /^([^.]*)(?:\.(.+)|)$/ ; ia . event = { global : { } , add : function ( a , c , d , e , f ) { var g , h , i , j , k , l , m , n , o , p , q , r = ia . _data ( a ) ; if ( r ) { for ( d . handler && ( j = d , d = j . handler , f = j . selector ) , d . guid || ( d . guid = ia . guid ++ ) , ( h = r . events ) || ( h = r . events = { } ) , ( l = r . handle ) || ( l = r . handle = function ( a ) { return typeof ia === V || a && ia . event . triggered === a . type ? b : ia . event . dispatch . apply ( l . elem , arguments ) } , l . elem = a ) , c = ( c || "" ) . match ( ka ) || [ "" ] , i = c . length ; i -- ; ) g = Oa . exec ( c [ i ] ) || [ ] , o = q = g [ 1 ] , p = ( g [ 2 ] || "" ) . split ( "." ) . sort ( ) , k = ia . event . special [ o ] || { } , o = ( f ? k . delegateType : k . bindType ) || o , k = ia . event . special [ o ] || { } , m = ia . extend ( { type : o , origType : q , data : e , handler : d , guid : d . guid , selector : f , needsContext : f && ia . expr . match . needsContext . test ( f ) , namespace : p . join ( "." ) } , j ) , ( n = h [ o ] ) || ( n = h [ o ] = [ ] , n . delegateCount = 0 , k . setup && k . setup . call ( a , e , p , l ) !== ! 1 || ( a . addEventListener ? a . addEventListener ( o , l , ! 1 ) : a . attachEvent && a . attachEvent ( "on" + o , l ) ) ) , k . add && ( k . add . call ( a , m ) , m . handler . guid || ( m . handler . guid = d . guid ) ) , f ? n . splice ( n . delegateCount ++ , 0 , m ) : n . push ( m ) , ia . event . global [ o ] = ! 0 ; a = null } } , remove : function ( a , b , c , d , e ) { var f , g , h , i , j , k , l , m , n , o , p , q = ia . hasData ( a ) && ia . _data ( a ) ; if ( q && ( k = q . events ) ) { for ( b = ( b || "" ) . match ( ka ) || [ "" ] , j = b . length ; j -- ; ) if ( h = Oa . exec ( b [ j ] ) || [ ] , n = p = h [ 1 ] , o = ( h [ 2 ] || "" ) . split ( "." ) . sort ( ) , n ) { for ( l = ia . event . special [ n ] || { } , n = ( d ? l . delegateType : l . bindType ) || n , m = k [ n ] || [ ] , h = h [ 2 ] && new RegExp ( "(^|\\.)" + o . join ( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) , i = f = m . length ; f -- ; ) g = m [ f ] , ! e && p !== g . origType || c && c . guid !== g . guid || h && ! h . test ( g . namespace ) || d && d !== g . selector && ( "**" !== d || ! g . selector ) || ( m . splice ( f , 1 ) , g . selector && m . delegateCount -- , l . remove && l . remove . call ( a , g ) ) ; i && ! m . length && ( l . teardown && l . teardown . call ( a , o , q . handle ) !== ! 1 || ia . removeEvent ( a , n , q . handle ) , delete k [ n ] ) } else for ( n in k ) ia . event . remove ( a , n + b [ j ] , c , d , ! 0 ) ; ia . isEmptyObject ( k ) && ( delete q . handle , ia . _removeData ( a , "events" ) ) } } , trigger : function ( c , d , e , f ) { var g , h , i , j , k , l , m , n = [ e || W ] , o = ga . call ( c , "type" ) ? c . type : c , p = ga . call ( c , "namespace" ) ? c . namespace . split ( "." ) : [ ] ; if ( i = l = e = e || W , 3 !== e . nodeType && 8 !== e . nodeType && ! Na . test ( o + ia . event . triggered ) && ( o . indexOf ( "." ) >= 0 && ( p = o . split ( "." ) , o = p . shift ( ) , p . sort ( ) ) , h = o . indexOf ( ":" ) < 0 && "on" + o , c = c [ ia . expando ] ? c : new ia . Event ( o , "object" == typeof c && c ) , c . isTrigger = ! 0 , c . namespace = p . join ( "." ) , c . namespace _re = c . namespace ? new RegExp ( "(^|\\.)" + p . join ( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : null , c . result = b , c . target || ( c . target = e ) , d = null == d ? [ c ] : ia . makeArray ( d , [ c ] ) , k = ia . event . special [ o ] || { } , f || ! k . trigger || k . trigger . apply ( e , d ) !== ! 1 ) ) { if ( ! f && ! k . noBubble && ! ia . isWindow ( e ) ) { for ( j = k . delegateType || o , Na . test ( j + o ) || ( i = i . parentN
} } , function ( a , b ) { ia . fn [ a ] = function ( c , d ) { var e = ia . map ( this , b , c ) ; return Pa . test ( a ) || ( d = c ) , d && "string" == typeof d && ( e = ia . filter ( d , e ) ) , e = this . length > 1 && ! Ta [ a ] ? ia . unique ( e ) : e , this . length > 1 && Qa . test ( a ) && ( e = e . reverse ( ) ) , this . pushStack ( e ) } } ) , ia . extend ( { filter : function ( a , b , c ) { return c && ( a = ":not(" + a + ")" ) , 1 === b . length ? ia . find . matchesSelector ( b [ 0 ] , a ) ? [ b [ 0 ] ] : [ ] : ia . find . matches ( a , b ) } , dir : function ( a , c , d ) { for ( var e = [ ] , f = a [ c ] ; f && 9 !== f . nodeType && ( d === b || 1 !== f . nodeType || ! ia ( f ) . is ( d ) ) ; ) 1 === f . nodeType && e . push ( f ) , f = f [ c ] ; return e } , sibling : function ( a , b ) { for ( var c = [ ] ; a ; a = a . nextSibling ) 1 === a . nodeType && a !== b && c . push ( a ) ; return c } } ) ; var Ua = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video" , Va = / jQuery\d+="(?:null|\d+)"/g , Wa = new RegExp ( "<(?:" + Ua + ")[\\s/>]" , "i" ) , Xa = /^\s+/ , Ya = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi , Za = /<([\w:]+)/ , $a = /<tbody/i , _a = /<|&#?\w+;/ , ab = /<(?:script|style|link)/i , bb = /^(?:checkbox|radio)$/i , cb = /checked\s*(?:[^=]|=\s*.checked.)/i , db = /^$|\/(?:java|ecma)script/i , eb = /^true\/(.*)/ , fb = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g , gb = { option : [ 1 , "<select multiple='multiple'>" , "</select>" ] , legend : [ 1 , "<fieldset>" , "</fieldset>" ] , area : [ 1 , "<map>" , "</map>" ] , param : [ 1 , "<object>" , "</object>" ] , thead : [ 1 , "<table>" , "</table>" ] , tr : [ 2 , "<table><tbody>" , "</tbody></table>" ] , col : [ 2 , "<table><tbody></tbody><colgroup>" , "</colgroup></table>" ] , td : [ 3 , "<table><tbody><tr>" , "</tr></tbody></table>" ] , _default : ia . support . htmlSerialize ? [ 0 , "" , "" ] : [ 1 , "X<div>" , "</div>" ] } , hb = m ( W ) , ib = hb . appendChild ( W . createElement ( "div" ) ) ; gb . optgroup = gb . option , gb . tbody = gb . tfoot = gb . colgroup = gb . caption = gb . thead , gb . th = gb . td , ia . fn . extend ( { text : function ( a ) { return ia . access ( this , function ( a ) { return a === b ? ia . text ( this ) : this . empty ( ) . append ( ( this [ 0 ] && this [ 0 ] . ownerDocument || W ) . createTextNode ( a ) ) } , null , a , arguments . length ) } , wrapAll : function ( a ) { if ( ia . isFunction ( a ) ) return this . each ( function ( b ) { ia ( this ) . wrapAll ( a . call ( this , b ) ) } ) ; if ( this [ 0 ] ) { var b = ia ( a , this [ 0 ] . ownerDocument ) . eq ( 0 ) . clone ( ! 0 ) ; this [ 0 ] . parentNode && b . insertBefore ( this [ 0 ] ) , b . map ( function ( ) { for ( var a = this ; a . firstChild && 1 === a . firstChild . nodeType ; ) a = a . firstChild ; return a } ) . append ( this ) } return this } , wrapInner : function ( a ) { return ia . isFunction ( a ) ? this . each ( function ( b ) { ia ( this ) . wrapInner ( a . call ( this , b ) ) } ) : this . each ( function ( ) { var b = ia ( this ) , c = b . contents ( ) ; c . length ? c . wrapAll ( a ) : b . append ( a ) } ) } , wrap : function ( a ) { var b = ia . isFunction ( a ) ; return this . each ( function ( c ) { ia ( this ) . wrapAll ( b ? a . call ( this , c ) : a ) } ) } , unwrap : function ( ) { return this . parent ( ) . each ( function ( ) { ia . nodeName ( this , "body" ) || ia ( this ) . replaceWith ( this . childNodes ) } ) . end ( ) } , append : function ( ) { return this . domManip ( arguments , ! 0 , function ( a ) { 1 !== this . nodeType && 11 !== this . nodeType && 9 !== this . nodeType || this . appendChild ( a ) } ) } , prepend : function ( ) { return this . domManip ( arguments , ! 0 , function ( a ) { 1 !== this . nodeType && 11 !== this . nodeType && 9 !== this . nodeType || this . insertBefore ( a , this . firstChild ) } ) } , before : function ( ) { return this . domManip ( arguments , ! 1 , function ( a ) { this . parentNode && this . parentNode . insertBefore ( a , this ) } ) } , after : function ( ) { return this . domManip ( arguments , ! 1 , function ( a ) { this . parentNode && this . parentNode . insertBefore ( a , this . nextSibling ) } ) } , remove : function ( a , b ) { for ( var c , d = 0 ; null != ( c = this [ d ] ) ; d ++ ) ( ! a || ia . filter ( a , [ c ] ) . length > 0 ) && ( b || 1 !== c . nodeType || ia . cleanData ( t ( c ) ) , c . parentNode && ( b && ia . contains ( c . ownerDocument , c ) && q ( t ( c , "script" ) ) , c . parentNode . removeChild ( c ) ) ) ; return this } , empty : function ( ) { for ( var a , b = 0 ; null != ( a = this [ b ] ) ; b ++ ) { for ( 1 === a . nodeType && ia . cleanData ( t ( a , ! 1 ) ) ; a . firstChild ; ) a . removeChild ( a . firstChild ) ; a . options && ia . nodeName ( a , "select" ) && ( a . options . length = 0 ) } return this } , clone : function ( a , b ) { return a = null != a && a , b = null == b ? a : b , this . map ( function ( ) { return ia . clone ( this , a , b ) } ) } , html : function ( a ) { return ia . access ( this , function ( a ) { var c = this [ 0 ] || { } , d = 0 , e = this . length ; if ( a === b ) return 1 === c . nodeType ? c . innerHTML . replace ( Va , "" ) : b ; if ( "string" == typeof a && ! ab . test ( a ) && ( ia . support . htmlSerialize || ! Wa . test ( a ) ) && ( ia . support . leadingWhitespace || ! Xa . test ( a ) ) && ! gb [ ( Za . exec ( a ) || [ "" , "" ] ) [ 1 ] . toLowerCase ( ) ]
void this . zIndexMask [ a ] . destroy ( ) ; this . indexMask = this . indexMask || [ ] ; var b = this . indexMask . pop ( ) ; b && b . destroy ( ) } } ) ) , _ . extend ( BI , { $import : function ( ) { function a ( a , c ) { var d = $ ( "head script, body script" ) ; $ . each ( d , function ( c , d ) { d . src . indexOf ( a ) != - 1 && ( b [ a ] = ! 0 ) } ) ; var e = $ ( "head link" ) ; $ . each ( e , function ( d , e ) { e . href . indexOf ( a ) != - 1 && c && ( b [ a ] = ! 1 , $ ( e ) . remove ( ) ) } ) } var b = { } ; return function ( c , d , e ) { if ( a ( c , e ) , b [ c ] !== ! 0 ) if ( "css" === d ) { var f = document . createElement ( "link" ) ; f . rel = "stylesheet" , f . type = "text/css" , f . href = c ; var g = document . getElementsByTagName ( "head" ) [ 0 ] ; g . appendChild ( f ) , b [ c ] = ! 0 } else $ . ajax ( { url : c , dataType : "script" , async : ! 1 , cache : ! 0 , complete : function ( a , d ) { "success" == d && ( b [ c ] = ! 0 ) } } ) } } ( ) } ) , Number . prototype . toFixed && "0.000" === 8e-5 . toFixed ( 3 ) && "0" !== . 9. toFixed ( 0 ) && "1.25" === 1.255 . toFixed ( 2 ) && "1000000000000000128" === ( 0xde0b6b3a7640080 ) . toFixed ( 0 ) || ! function ( ) { function a ( a , b ) { for ( var c = - 1 ; ++ c < g ; ) b += a * h [ c ] , h [ c ] = b % f , b = Math . floor ( b / f ) } function b ( a ) { for ( var b = g , c = 0 ; -- b >= 0 ; ) c += h [ b ] , h [ b ] = Math . floor ( c / a ) , c = c % a * f } function c ( ) { for ( var a = g , b = "" ; -- a >= 0 ; ) if ( "" !== b || 0 === a || 0 !== h [ a ] ) { var c = String ( h [ a ] ) ; "" === b ? b = c : b += "0000000" . slice ( 0 , 7 - c . length ) + c } return b } function d ( a , b , c ) { return 0 === b ? c : b % 2 === 1 ? d ( a , b - 1 , c * a ) : d ( a * a , b / 2 , c ) } function e ( a ) { for ( var b = 0 ; a >= 4096 ; ) b += 12 , a /= 4096 ; for ( ; a >= 2 ; ) b += 1 , a /= 2 ; return b } var f , g , h ; f = 1e7 , g = 6 , h = [ 0 , 0 , 0 , 0 , 0 , 0 ] , Number . prototype . toFixed = function ( f ) { var g , h , i , j , k , l , m , n ; if ( g = Number ( f ) , g = g !== g ? 0 : Math . floor ( g ) , g < 0 || g > 20 ) throw new RangeError ( "Number.toFixed called with invalid number of decimals" ) ; if ( h = Number ( this ) , h !== h ) return "NaN" ; if ( h <= - 1e21 || h > 1e21 ) return String ( h ) ; if ( i = "" , h < 0 && ( i = "-" , h = - h ) , j = "0" , h > 1e-21 ) if ( k = e ( h * d ( 2 , 69 , 1 ) ) - 69 , l = k < 0 ? h * d ( 2 , - k , 1 ) : h / d ( 2 , k , 1 ) , l *= 4503599627370496 , k = 52 - k , k > 0 ) { for ( a ( 0 , l ) , m = g ; m >= 7 ; ) a ( 1e7 , 0 ) , m -= 7 ; for ( a ( d ( 10 , m , 1 ) , 0 ) , m = k - 1 ; m >= 23 ; ) b ( 1 << 23 ) , m -= 23 ; b ( 1 << m ) , a ( 1 , 1 ) , b ( 2 ) , j = c ( ) } else a ( 0 , l ) , a ( 1 << - k , 0 ) , j = c ( ) + "0.00000000000000000000" . slice ( 2 , 2 + g ) ; return g > 0 ? ( n = j . length , j = n <= g ? i + "0.0000000000000000000" . slice ( 0 , g - n + 2 ) + j : i + j . slice ( 0 , n - g ) + "." + j . slice ( n - g ) ) : j = i + j , j } } ( ) , _ . extend ( BI , { MAX : 0x1000000000000000 , MIN : - 0x1000000000000000 , EVENT _RESPONSE _TIME : 200 , zIndex _layer : 1e5 , zIndex _popover : 1e6 , zIndex _popup : 1e7 , zIndex _masker : 1e8 , zIndex _tip : 1e9 , emptyStr : "" , emptyFn : function ( ) { } , empty : null , Key : { 48 : "0" , 49 : "1" , 50 : "2" , 51 : "3" , 52 : "4" , 53 : "5" , 54 : "6" , 55 : "7" , 56 : "8" , 57 : "9" , 65 : "a" , 66 : "b" , 67 : "c" , 68 : "d" , 69 : "e" , 70 : "f" , 71 : "g" , 72 : "h" , 73 : "i" , 74 : "j" , 75 : "k" , 76 : "l" , 77 : "m" , 78 : "n" , 79 : "o" , 80 : "p" , 81 : "q" , 82 : "r" , 83 : "s" , 84 : "t" , 85 : "u" , 86 : "v" , 87 : "w" , 88 : "x" , 89 : "y" , 90 : "z" , 96 : "0" , 97 : "1" , 98 : "2" , 99 : "3" , 100 : "4" , 101 : "5" , 102 : "6" , 103 : "7" , 104 : "8" , 105 : "9" , 106 : "*" , 107 : "+" , 109 : "-" , 110 : "." , 111 : "/" } , KeyCode : { BACKSPACE : 8 , COMMA : 188 , DELETE : 46 , DOWN : 40 , END : 35 , ENTER : 13 , ESCAPE : 27 , HOME : 36 , LEFT : 37 , NUMPAD _ADD : 107 , NUMPAD _DECIMAL : 110 , NUMPAD _DIVIDE : 111 , NUMPAD _ENTER : 108 , NUMPAD _MULTIPLY : 106 , NUMPAD _SUBTRACT : 109 , PAGE _DOWN : 34 , PAGE _UP : 33 , PERIOD : 190 , RIGHT : 39 , SPACE : 32 , TAB : 9 , UP : 38 } , Status : { SUCCESS : 1 , WRONG : 2 , START : 3 , END : 4 , WAITING : 5 , READY : 6 , RUNNING : 7 , OUTOFBOUNDS : 8 , NULL : - 1 } , Direction : { Top : "top" , Bottom : "bottom" , Left : "left" , Right : "right" , Custom : "custom" } , Axis : { Vertical : "vertical" , Horizontal : "horizontal" } , Selection : { Default : - 2 , None : - 1 , Single : 0 , Multi : 1 , All : 2 } , HorizontalAlign : { Left : "left" , Right : "right" , Center : "center" , Stretch : "stretch" } , VerticalAlign : { Middle : "middle" , Top : "top" , Bottom : "bottom" , Stretch : "stretch" } , StartOfWeek : 1 } ) , BI . version = "2.0" , BI . AbsoluteCenterLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . AbsoluteCenterLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-absolute-center-layout" , hgap : 0 , lgap : 0 , rgap : 0 , vgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . AbsoluteCenterLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , _addElement : function ( a , b ) { var c = this . options , d = BI . AbsoluteCenterLayout . superclass . _addElement . apply ( this , arguments ) ; return d . element . css ( { position : "absolute" , left : c . hgap + c . lgap + ( b . lgap || 0 ) + ( b . hgap || 0 ) , right : c . hgap + c . rgap + ( b . rgap || 0 ) + ( b . hgap || 0 ) , top : c . vgap + c . tgap + ( b . tgap || 0 ) + ( b . vgap || 0 ) , bottom : c . vgap + c . bgap + ( b . bgap || 0 ) + ( b . vgap || 0 ) , margin : "auto" } ) , d } , resize : function ( ) { } , populate : function ( a ) { BI . AbsoluteCenterLayout . superclass . populate . ap
this . populate ( this . options . items ) } , _addElement : function ( a , b ) { var c = this . options , d = BI . AdaptiveLayout . superclass . _addElement . apply ( this , arguments ) ; d . element . css ( { position : "relative" } ) ; var e = 0 , f = 0 , g = 0 , h = 0 ; return BI . isNotNull ( b . left ) && d . element . css ( { "margin-left" : b . left } ) , BI . isNotNull ( b . right ) && d . element . css ( { "margin-right" : b . right } ) , BI . isNotNull ( b . top ) && d . element . css ( { "margin-top" : b . top } ) , BI . isNotNull ( b . bottom ) && d . element . css ( { "margin-bottom" : b . bottom } ) , BI . isNotNull ( c . hgap ) && ( e += c . hgap , d . element . css ( { left : e } ) , f += c . hgap , d . element . css ( { right : f } ) ) , BI . isNotNull ( c . vgap ) && ( g += c . vgap , d . element . css ( { top : g } ) , h += c . vgap , d . element . css ( { bottom : h } ) ) , BI . isNotNull ( c . lgap ) && ( e += c . lgap , d . element . css ( { left : e } ) ) , BI . isNotNull ( c . rgap ) && ( f += c . rgap , d . element . css ( { right : f } ) ) , BI . isNotNull ( c . tgap ) && ( g += c . tgap , d . element . css ( { top : g } ) ) , BI . isNotNull ( c . bgap ) && ( h += c . bgap , d . element . css ( { bottom : h } ) ) , BI . isNotNull ( b . width ) && d . element . css ( { width : b . width } ) , BI . isNotNull ( b . height ) && d . element . css ( { height : b . height } ) , d } , resize : function ( ) { this . stroke ( this . options . items ) } , populate : function ( a ) { BI . AbsoluteLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.adaptive" , BI . AdaptiveLayout ) , BI . BorderLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . BorderLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-border-layout" , items : { } } ) } , render : function ( ) { BI . BorderLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , resize : function ( ) { this . stroke ( this . options . items ) } , addItem : function ( a ) { throw new Error ( "cannot be added" ) } , stroke : function ( a ) { var b , c = 0 , d = 0 , e = 0 , f = 0 ; if ( "north" in a && ( b = a . north , null != b ) ) { if ( b . el ) { if ( ! this . hasWidget ( this . getName ( ) + "north" ) ) { var g = BI . createWidget ( b ) ; this . addWidget ( this . getName ( ) + "north" , g ) } this . getWidgetByName ( this . getName ( ) + "north" ) . element . height ( b . height ) . css ( { position : "absolute" , top : b . top || 0 , left : b . left || 0 , right : b . right || 0 , bottom : "initial" } ) } c = ( b . height || 0 ) + ( b . top || 0 ) + ( b . bottom || 0 ) } if ( "south" in a && ( b = a . south , null != b ) ) { if ( b . el ) { if ( ! this . hasWidget ( this . getName ( ) + "south" ) ) { var g = BI . createWidget ( b ) ; this . addWidget ( this . getName ( ) + "south" , g ) } this . getWidgetByName ( this . getName ( ) + "south" ) . element . height ( b . height ) . css ( { position : "absolute" , bottom : b . bottom || 0 , left : b . left || 0 , right : b . right || 0 , top : "initial" } ) } d = ( b . height || 0 ) + ( b . top || 0 ) + ( b . bottom || 0 ) } if ( "west" in a && ( b = a . west , null != b ) ) { if ( b . el ) { if ( ! this . hasWidget ( this . getName ( ) + "west" ) ) { var g = BI . createWidget ( b ) ; this . addWidget ( this . getName ( ) + "west" , g ) } this . getWidgetByName ( this . getName ( ) + "west" ) . element . width ( b . width ) . css ( { position : "absolute" , left : b . left || 0 , top : c , bottom : d , right : "initial" } ) } e = ( b . width || 0 ) + ( b . left || 0 ) + ( b . right || 0 ) } if ( "east" in a && ( b = a . east , null != b ) ) { if ( b . el ) { if ( ! this . hasWidget ( this . getName ( ) + "east" ) ) { var g = BI . createWidget ( b ) ; this . addWidget ( this . getName ( ) + "east" , g ) } this . getWidgetByName ( this . getName ( ) + "east" ) . element . width ( b . width ) . css ( { position : "absolute" , right : b . right || 0 , top : c , bottom : d , left : "initial" } ) } f = ( b . width || 0 ) + ( b . left || 0 ) + ( b . right || 0 ) } if ( "center" in a && ( b = a . center , null != b ) ) { if ( ! this . hasWidget ( this . getName ( ) + "center" ) ) { var g = BI . createWidget ( b ) ; this . addWidget ( this . getName ( ) + "center" , g ) } this . getWidgetByName ( this . getName ( ) + "center" ) . element . css ( { position : "absolute" , top : c , bottom : d , left : e , right : f } ) } } , update : function ( a ) { } , populate : function ( a ) { BI . BorderLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.border" , BI . BorderLayout ) , BI . CardLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . CardLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-card-layout" , items : [ ] } ) } , render : function ( ) { BI . CardLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , resize : function ( ) { } , stroke : function ( a ) { var b = this , c = this . options ; this . showIndex = void 0 , BI . each ( a , function ( a , d ) { if ( d ) { if ( b . hasWidget ( d . cardName ) ) var e = b . getWidgetByName ( d . cardName ) ; else { var e = BI . createWidget ( d ) ; e . on ( BI . Events . DESTROY , function ( ) { var a = BI . findIndex ( c . items , function ( a , b ) { return b . cardName == d . cardName } ) ; a > - 1 && c . items . splice ( a , 1 ) } ) , b . addWidget ( d . cardName , e ) } e . element . css ( { position : "absolute" , top : "0" , righ
BI . isNumber ( e . rowSize [ f ] ) && ( o = e . rowSize [ f ] <= 1 ? 100 * e . rowSize [ f ] + "%" : e . rowSize [ f ] + "px" ) , m . element . css ( { bottom : p , height : o } ) , d ( m , f , g ) } if ( ! BI . isNumber ( e . rowSize [ f ] ) ) break } for ( var g = 0 ; g < e . columns ; g ++ ) { for ( var f = 0 ; f < e . rows ; f ++ ) { var m = this . getWidgetByName ( this . getName ( ) + f + "_" + g ) ; BI . isNull ( i [ g ] ) && ( i [ g ] = i [ g - 1 ] + ( e . columnSize [ g - 1 ] < 1 ? e . columnSize [ g - 1 ] : e . columnSize [ g - 1 ] + e . hgap + e . rgap ) ) ; var q = i [ g ] <= 1 ? 100 * i [ g ] + "%" : i [ g ] + e . hgap + e . lgap + "px" , h = "" ; BI . isNumber ( e . columnSize [ g ] ) && ( h = e . columnSize [ g ] <= 1 ? 100 * e . columnSize [ g ] + "%" : e . columnSize [ g ] + "px" ) , m . element . css ( { left : q , width : h } ) , d ( m , f , g ) } if ( ! BI . isNumber ( e . columnSize [ g ] ) ) break } for ( var g = e . columns - 1 ; g >= 0 ; g -- ) { for ( var f = 0 ; f < e . rows ; f ++ ) { var m = this . getWidgetByName ( this . getName ( ) + f + "_" + g ) ; BI . isNull ( j [ g ] ) && ( j [ g ] = j [ g + 1 ] + ( e . columnSize [ g + 1 ] < 1 ? e . columnSize [ g + 1 ] : e . columnSize [ g + 1 ] + e . hgap + e . lgap ) ) ; var r = j [ g ] <= 1 ? 100 * j [ g ] + "%" : j [ g ] + e . hgap + e . rgap + "px" , h = "" ; BI . isNumber ( e . columnSize [ g ] ) && ( h = e . columnSize [ g ] <= 1 ? 100 * e . columnSize [ g ] + "%" : e . columnSize [ g ] + "px" ) , m . element . css ( { right : r , width : h } ) , d ( m , f , g ) } if ( ! BI . isNumber ( e . columnSize [ g ] ) ) break } } , update : function ( ) { } , populate : function ( a ) { BI . WindowLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.window" , BI . WindowLayout ) , BI . CenterLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . CenterLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-center-layout" , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . CenterLayout . superclass . render . apply ( this , arguments ) ; var a = this , b = this . options , c = [ ] , d = b . items ; return BI . each ( d , function ( a ) { c . push ( { column : a , row : 0 , el : BI . createWidget ( { type : "bi.default" , cls : "center-element " + ( 0 === a ? "first-element " : "" ) + ( a === d . length - 1 ? "last-element" : "" ) } ) } ) } ) , BI . each ( d , function ( a , d ) { if ( d ) { var e = BI . createWidget ( d ) ; e . element . css ( { position : "absolute" , left : b . hgap + b . lgap , right : b . hgap + b . rgap , top : b . vgap + b . tgap , bottom : b . vgap + b . bgap , width : "auto" , height : "auto" } ) , c [ a ] . el . addItem ( e ) } } ) , { type : "bi.grid" , ref : function ( b ) { a . wrapper = b } , columns : c . length , rows : 1 , items : c } } , resize : function ( ) { } , addItem : function ( a ) { throw new Error ( "cannot be added" ) } , update : function ( a ) { return this . wrapper . update ( a ) } , populate : function ( a ) { this . wrapper . populate . apply ( this . wrapper , arguments ) } } ) , BI . shortcut ( "bi.center" , BI . CenterLayout ) , BI . FloatCenterLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . FloatCenterLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-float-center-layout" , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . FloatCenterLayout . superclass . render . apply ( this , arguments ) ; var a = this , b = this . options , c = b . items , d = [ ] , e = 100 / c . length ; return BI . each ( c , function ( a ) { var b = BI . createWidget ( { type : "bi.default" } ) ; b . element . addClass ( "center-element " + ( 0 === a ? "first-element " : "" ) + ( a === c . length - 1 ? "last-element" : "" ) ) . css ( { width : e + "%" , height : "100%" } ) , d . push ( { el : b } ) } ) , BI . each ( c , function ( a , c ) { if ( c ) { var e = BI . createWidget ( c ) ; e . element . css ( { position : "absolute" , left : b . hgap + b . lgap , right : b . hgap + b . rgap , top : b . vgap + b . tgap , bottom : b . vgap + b . bgap , width : "auto" , height : "auto" } ) , d [ a ] . el . addItem ( e ) } } ) , { type : "bi.left" , ref : function ( b ) { a . wrapper = b } , items : d } } , resize : function ( ) { } , addItem : function ( a ) { throw new Error ( "cannot be added" ) } , update : function ( a ) { return this . wrapper . update ( a ) } , populate : function ( a ) { this . wrapper . populate . apply ( this . wrapper , arguments ) } } ) , BI . shortcut ( "bi.float_center" , BI . FloatCenterLayout ) , BI . HorizontalCenterLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . HorizontalCenterLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-horizontal-center-layout" , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . HorizontalCenterLayout . superclass . render . apply ( this , arguments ) ; var a = this , b = this . options , c = b . items , d = [ ] ; return BI . each ( c , function ( a ) { d . push ( { column : a , row : 0 , el : BI . createWidget ( { type : "bi.default" , cls : "center-element " + ( 0 === a ? "first-element " : "" ) + ( a === c . length - 1 ? "last-element" : "" ) } ) } ) } ) , BI . each ( c , function ( a , c ) { if ( c ) { var e = BI . createWidget ( c ) ; e . element . css ( { position : "absolute" , left : b . hgap + b . lgap , right : b . hgap + b . rgap , top : b . vgap + b . tgap , bottom : b . vgap + b . bgap , width : "auto" } ) , d [ a ] . el . addItem ( e ) } } )
a . $mask . visible ( ) ) ) } ) , this . element . on ( "mousemove." + this . getName ( ) , function ( b ) { a . element . _ _isMouseInBounds _ _ ( b ) || a . isEnabled ( ) && ! a . _hover && ( c ( ) , a . $mask . invisible ( ) ) } ) , this . element . on ( "mouseleave." + this . getName ( ) , function ( ) { a . isEnabled ( ) && ! a . _hover && ( c ( ) , a . $mask . invisible ( ) ) } ) } , bindEvent : function ( ) { function a ( a ) { e . stopEvent && a . stopEvent ( ) , e . stopPropagation && a . stopPropagation ( ) } function b ( b ) { if ( a ( b ) , ! ( ! d . isEnabled ( ) || d . isOnce ( ) && d . isSelected ( ) ) ) { if ( BI . isKey ( e . bubble ) || BI . isFunction ( e . bubble ) ) { if ( BI . isNull ( d . combo ) ) { var f ; BI . createWidget ( { type : "bi.absolute" , element : d , items : [ { el : { type : "bi.bubble_combo" , trigger : "" , ref : function ( ) { d . combo = this } , el : { type : "bi.layout" , height : "100%" } , popup : { type : "bi.text_bubble_bar_popup_view" , text : c ( ) , ref : function ( ) { f = this } , listeners : [ { eventName : BI . BubblePopupBarView . EVENT _CLICK _TOOLBAR _BUTTON , action : function ( a ) { d . combo . hideView ( ) , a && h . apply ( d , arguments ) } } ] } , listeners : [ { eventName : BI . BubbleCombo . EVENT _BEFORE _POPUPVIEW , action : function ( ) { f . populate ( c ( ) ) } } ] } , left : 0 , right : 0 , bottom : 0 , top : 0 } ] } ) } return void ( d . combo . isViewVisible ( ) ? d . combo . hideView ( ) : d . combo . showView ( ) ) } h . apply ( d , arguments ) } } function c ( ) { var a = d . options . bubble ; return BI . isFunction ( a ) ? a ( ) : a } var d = this , e = this . options , f = this . handle ( ) ; if ( f ) { f = f . element ; var g = ( e . trigger || "" ) . split ( "," ) ; BI . each ( g , function ( c , g ) { switch ( g ) { case "mouseup" : var h = ! 1 ; f . mousedown ( function ( ) { h = ! 0 } ) , f . mouseup ( function ( c ) { h === ! 0 && b ( c ) , h = ! 1 , a ( c ) } ) ; break ; case "mousedown" : var h = ! 1 , i = ! 1 ; f . mousedown ( function ( c ) { BI . Widget . _renderEngine . createElement ( document ) . bind ( "mouseup." + d . getName ( ) , function ( a ) { ! BI . DOM . isExist ( d ) || f . _ _isMouseInBounds _ _ ( a ) || h !== ! 0 || i || d . _trigger ( ) , h = ! 1 , BI . Widget . _renderEngine . createElement ( document ) . unbind ( "mouseup." + d . getName ( ) ) } ) , h !== ! 0 && ( d . isSelected ( ) ? i = ! 0 : b ( c ) , h = ! 0 , a ( c ) ) } ) , f . mouseup ( function ( a ) { BI . DOM . isExist ( d ) && h === ! 0 && i === ! 0 && b ( a ) , h = ! 1 , i = ! 1 , BI . Widget . _renderEngine . createElement ( document ) . unbind ( "mouseup." + d . getName ( ) ) } ) ; break ; case "dblclick" : f . dblclick ( b ) ; break ; case "lclick" : var j , h = ! 1 ; f . mousedown ( function ( b ) { BI . Widget . _renderEngine . createElement ( document ) . bind ( "mouseup." + d . getName ( ) , function ( a ) { j && clearInterval ( j ) , j = null , h = ! 1 , BI . Widget . _renderEngine . createElement ( document ) . unbind ( "mouseup." + d . getName ( ) ) } ) , h !== ! 0 && ( ! d . isEnabled ( ) || d . isOnce ( ) && d . isSelected ( ) || ( j = setInterval ( function ( ) { d . isEnabled ( ) && d . doClick ( ) } , 180 ) , h = ! 0 , a ( b ) ) ) } ) ; break ; default : ( e . stopEvent || e . stopPropagation ) && f . mousedown ( function ( b ) { a ( b ) } ) , f . click ( b ) } } ) ; var h = BI . debounce ( this . _doClick , BI . EVENT _RESPONSE _TIME , { leading : ! 0 , trailing : ! 1 } ) } } , _trigger : function ( a ) { var b = this . options ; if ( this . isEnabled ( ) && ( this . isDisableSelected ( ) || ( this . isForceSelected ( ) ? this . setSelected ( ! 0 ) : this . isForceNotSelected ( ) ? this . setSelected ( ! 1 ) : this . setSelected ( ! this . isSelected ( ) ) ) , this . isValid ( ) ) ) { b . handler . call ( this , this . getValue ( ) , this , a ) ; var c = this . getValue ( ) ; this . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . CLICK , c , this , a ) , this . fireEvent ( BI . BasicButton . EVENT _CHANGE , c , this ) , b . action && BI . Actions . runAction ( b . action , "click" , b , this ) , BI . Actions . runGlobalAction ( "click" , b , this ) } } , _doClick : function ( a ) { this . isValid ( ) && this . beforeClick ( a ) , this . _trigger ( a ) , this . isValid ( ) && this . doClick ( a ) } , beforeClick : function ( ) { } , doClick : function ( ) { } , handle : function ( ) { return this } , hover : function ( ) { this . _hover = ! 0 , this . handle ( ) . element . addClass ( "hover" ) , this . options . shadow && this . $mask && this . $mask . setVisible ( ! 0 ) } , dishover : function ( ) { this . _hover = ! 1 , this . handle ( ) . element . removeClass ( "hover" ) , this . options . shadow && this . $mask && this . $mask . setVisible ( ! 1 ) } , setSelected : function ( a ) { var b = this . options ; b . selected = a , a ? this . handle ( ) . element . addClass ( "active" ) : this . handle ( ) . element . removeClass ( "active" ) , b . shadow && ! b . isShadowShowingOnSelected && this . $mask && this . $mask . setVisible ( ! 1 ) } , isSelected : function ( ) { return this . options . selected } , isOnce : function ( ) { return this . options . once } , isForceSelected : function ( ) { return this . options . forceSelected } , isForceNotSelected : function ( ) { return this . options . forceNotSelected } , isDisableSelected : function ( ) { return this . options . disableSelected } , setText : function ( a ) { this . options . text = a } , getText : function ( ) { return this . options . text } , _setEnab
b . scrollTop = a . element . scrollTop ( ) , a . _calculateChildrenToRender ( ) , a . fireEvent ( BI . CollectionView . EVENT _SCROLL , { scrollLeft : b . scrollLeft , scrollTop : b . scrollTop } ) ) } ) , BI . createWidget ( { type : "bi.vertical" , element : this , scrollable : b . overflowX === ! 0 && b . overflowY === ! 0 , scrolly : b . overflowX === ! 1 && b . overflowY === ! 0 , scrollx : b . overflowX === ! 0 && b . overflowY === ! 1 , items : [ this . container ] } ) , b . items . length > 0 && ( this . _calculateSizeAndPositionData ( ) , this . _populate ( ) ) } , mounted : function ( ) { var a = this . options ; 0 === a . scrollLeft && 0 === a . scrollTop || ( this . element . scrollTop ( a . scrollTop ) , this . element . scrollLeft ( a . scrollLeft ) ) } , _calculateSizeAndPositionData : function ( ) { for ( var a = this . options , b = [ ] , c = new BI . SectionManager , d = 0 , e = 0 , f = 0 , g = a . items . length ; f < g ; f ++ ) { var h = a . cellSizeAndPositionGetter ( f ) ; if ( null == h . height || isNaN ( h . height ) || null == h . width || isNaN ( h . width ) || null == h . x || isNaN ( h . x ) || null == h . y || isNaN ( h . y ) ) throw Error ( ) ; d = Math . max ( d , h . y + h . height ) , e = Math . max ( e , h . x + h . width ) , h . index = f , b [ f ] = h , c . registerCell ( h , f ) } this . _cellMetadata = b , this . _sectionManager = c , this . _height = d , this . _width = e } , _cellRenderers : function ( a , b , c , d ) { return this . _lastRenderedCellIndices = this . _sectionManager . getCellIndices ( a , b , c , d ) , this . _cellGroupRenderer ( ) } , _cellGroupRenderer : function ( ) { var a = this , b = ( this . options , [ ] ) ; return BI . each ( this . _lastRenderedCellIndices , function ( c , d ) { var e = a . _sectionManager . getCellMetadata ( d ) ; b . push ( e ) } ) , b } , _calculateChildrenToRender : function ( ) { var a = this , b = this . options , c = BI . clamp ( b . scrollLeft , 0 , this . _getMaxScrollLeft ( ) ) , d = BI . clamp ( b . scrollTop , 0 , this . _getMaxScrollTop ( ) ) , e = Math . max ( 0 , c - b . horizontalOverscanSize ) , f = Math . max ( 0 , d - b . verticalOverscanSize ) , g = Math . min ( this . _width , c + b . width + b . horizontalOverscanSize ) , h = Math . min ( this . _height , d + b . height + b . verticalOverscanSize ) ; if ( g > 0 && h > 0 ) { if ( f >= this . renderRange . minY && h <= this . renderRange . maxY && e >= this . renderRange . minX && g <= this . renderRange . maxX ) return ; for ( var i = this . _cellRenderers ( h - f , g - e , e , f ) , j = [ ] , k = { } , l = { } , m = { } , n = { } , o = 0 , p = i . length ; o < p ; o ++ ) { var q = i [ o ] ; m [ q . x ] = q . x , m [ q . x + q . width ] = q . x + q . width , n [ q . y ] = q . y , n [ q . y + q . height ] = q . y + q . height } m = BI . toArray ( m ) , n = BI . toArray ( n ) ; for ( var r = BI . invert ( m ) , s = BI . invert ( n ) , t = { } , u = { } , v = { } , w = { } , x = function ( a , b ) { null == a [ b ] && ( a [ b ] = Number . MAX _VALUE ) } , y = function ( a , b ) { null == a [ b ] && ( a [ b ] = 0 ) } , o = 0 , p = i . length ; o < p ; o ++ ) { var z , q = i [ o ] , A = this . renderedKeys [ q . index ] && this . renderedKeys [ q . index ] [ 1 ] ; A >= 0 ? ( q . width !== this . renderedCells [ A ] . _width && ( this . renderedCells [ A ] . _width = q . width , this . renderedCells [ A ] . el . setWidth ( q . width ) ) , q . height !== this . renderedCells [ A ] . _height && ( this . renderedCells [ A ] . _height = q . height , this . renderedCells [ A ] . el . setHeight ( q . height ) ) , this . renderedCells [ A ] . _left !== q . x && this . renderedCells [ A ] . el . element . css ( "left" , q . x + "px" ) , this . renderedCells [ A ] . _top !== q . y && this . renderedCells [ A ] . el . element . css ( "top" , q . y + "px" ) , j . push ( z = this . renderedCells [ A ] ) ) : ( z = BI . createWidget ( BI . extend ( { type : "bi.label" , width : q . width , height : q . height } , b . items [ q . index ] , { cls : ( b . items [ q . index ] . cls || "" ) + " container-cell" + ( 0 === q . y ? " first-row" : "" ) + ( 0 === q . x ? " first-col" : "" ) , _left : q . x , _top : q . y } ) ) , j . push ( { el : z , left : q . x , top : q . y , _left : q . x , _top : q . y , _width : q . width , _height : q . height } ) ) ; for ( var B = 0 | s [ q . y ] , C = 0 | s [ q . y + q . height ] , D = B ; D <= C ; D ++ ) { var E = n [ D ] ; x ( t , E ) , y ( u , E ) , t [ E ] = Math . min ( t [ E ] , q . x ) , u [ E ] = Math . max ( u [ E ] , q . x + q . width ) } for ( var F = 0 | r [ q . x ] , G = 0 | r [ q . x + q . width ] , D = F ; D <= G ; D ++ ) { var H = m [ D ] ; x ( v , H ) , y ( w , H ) , v [ H ] = Math . min ( v [ H ] , q . y ) , w [ H ] = Math . max ( w [ H ] , q . y + q . height ) } k [ q . index ] = [ q . index , o ] , l [ o ] = z } var I = { } , J = { } , K = [ ] ; BI . each ( k , function ( b , c ) { a . renderedKeys [ b ] ? I [ b ] = c : J [ b ] = c } ) , BI . each ( this . renderedKeys , function ( a , b ) { I [ a ] || J [ a ] || K . push ( b [ 1 ] ) } ) , BI . each ( K , function ( b , c ) { a . renderedCells [ c ] . el . _destroy ( ) } ) ; var L = [ ] ; BI . each ( J , function ( a , b ) { L . push ( j [ b [ 1 ] ] ) } ) , this . container . addItems ( L ) , this . container . _children = l , this . container . attr ( "items" , j ) , this . renderedCells = j , this . renderedKeys = k ; var M = BI . min ( t ) , N = BI . max ( u ) , O = BI . max ( v ) , P = BI . min ( w ) ; this . renderRange = { minX : M , minY : O , maxX : N , maxY : P } } } , _getMaxScrollLeft : function ( ) { return Math . max ( 0 , this . _width - this . options . width + ( this . options . overflowX ? BI . DOM . getScrollWidth ( ) : 0 ) ) } , _getMaxScrollTop : function ( ) { return Math . max ( 0 , this . _height - this . options . height + ( this . options . overflo
var a = this . options ; a . showIndex !== ! 1 && this . setSelect ( a . showIndex ) } , _deleteOtherCards : function ( a ) { var b = this , c = this . options ; c . single === ! 0 && BI . each ( this . cardMap , function ( c , d ) { c !== a + "" && ( b . layout . deleteCardByName ( c ) , delete b . cardMap [ c ] ) } ) } , afterCardCreated : function ( a ) { var b = this ; this . cardMap [ a ] . on ( BI . Controller . EVENT _CHANGE , function ( a , c , d ) { b . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , a === BI . Events . CLICK && b . fireEvent ( BI . Navigation . EVENT _CHANGE , d ) } ) , this . options . afterCardCreated . apply ( this , arguments ) } , afterCardShow : function ( a ) { this . showIndex = a , this . _deleteOtherCards ( a ) , this . options . afterCardShow . apply ( this , arguments ) } , populate : function ( ) { var a = this . layout . getShowingCard ( ) ; if ( a ) return a . populate . apply ( a , arguments ) } , _assertCard : function ( a ) { if ( ! this . layout . isCardExisted ( a ) ) { var b = this . options . cardCreator ( a ) ; this . cardMap [ a ] = b , this . layout . addCardByName ( a , b ) , this . afterCardCreated ( a ) } } , setSelect : function ( a ) { this . _assertCard ( a ) , this . layout . showCardByName ( a ) , this . _deleteOtherCards ( a ) , this . showIndex !== a && ( this . showIndex = a , BI . nextTick ( BI . bind ( this . afterCardShow , this , a ) ) ) } , getSelect : function ( ) { return this . showIndex } , getSelectedCard : function ( ) { if ( BI . isKey ( this . showIndex ) ) return this . cardMap [ this . showIndex ] } , setValue : function ( a ) { var b = this . layout . getShowingCard ( ) ; b && b . setValue ( a ) } , getValue : function ( ) { var a = this . layout . getShowingCard ( ) ; if ( a ) return a . getValue ( ) } , empty : function ( ) { this . layout . deleteAllCard ( ) , this . cardMap = { } } , destroy : function ( ) { BI . Navigation . superclass . destroy . apply ( this , arguments ) } } ) , BI . Navigation . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.navigation" , BI . Navigation ) , BI . Searcher = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . Searcher . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-searcher" , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , vgap : 0 , hgap : 0 , isDefaultInit : ! 1 , isAutoSearch : ! 0 , isAutoSync : ! 0 , chooseType : BI . ButtonGroup . CHOOSE _TYPE _SINGLE , onSearch : function ( a , b ) { b ( [ ] ) } , el : { type : "bi.search_editor" } , popup : { type : "bi.searcher_view" } , adapter : null , masker : { offset : { } } } ) } , _init : function ( ) { BI . Searcher . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . editor = BI . createWidget ( b . el , { type : "bi.search_editor" } ) , BI . createWidget ( { type : "bi.vertical" , element : this , lgap : b . lgap , rgap : b . rgap , tgap : b . tgap , bgap : b . bgap , vgap : b . vgap , hgap : b . hgap , items : [ this . editor ] } ) , b . isDefaultInit && this . _assertPopupView ( ) ; var c = BI . debounce ( BI . bind ( this . _search , this ) , BI . EVENT _RESPONSE _TIME , { leading : ! 0 , trailing : ! 1 } ) ; this . editor . on ( BI . Controller . EVENT _CHANGE , function ( b ) { switch ( b ) { case BI . Events . STARTEDIT : a . _startSearch ( ) ; break ; case BI . Events . EMPTY : a . _stopSearch ( ) ; break ; case BI . Events . CHANGE : c ( ) ; break ; case BI . Events . PAUSE : a . _pauseSearch ( ) } } ) } , _assertPopupView : function ( ) { var a = this , b = this . options ; ( b . masker && ! BI . Maskers . has ( this . getName ( ) ) || b . masker === ! 1 && ! this . popupView ) && ( this . popupView = BI . createWidget ( b . popup , { type : "bi.searcher_view" , chooseType : b . chooseType } ) , this . popupView . on ( BI . Controller . EVENT _CHANGE , function ( c , d , e ) { if ( a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , c === BI . Events . CLICK ) { if ( b . isAutoSync ) { var f = b . adapter && b . adapter . getValue ( ) ; if ( e . isSelected ( ) ) switch ( b . chooseType ) { case BI . ButtonGroup . CHOOSE _TYPE _SINGLE : b . adapter && b . adapter . setValue ( [ e . getValue ( ) ] ) ; break ; case BI . ButtonGroup . CHOOSE _TYPE _MULTI : f . push ( e . getValue ( ) ) , b . adapter && b . adapter . setValue ( f ) } else b . adapter && b . adapter . setValue ( BI . deepWithout ( f , e . getValue ( ) ) ) } a . fireEvent ( BI . Searcher . EVENT _CHANGE , d , e ) } } ) , BI . nextTick ( function ( ) { a . fireEvent ( BI . Searcher . EVENT _AFTER _INIT ) } ) ) , b . masker && ! BI . Maskers . has ( this . getName ( ) ) && BI . Maskers . create ( this . getName ( ) , b . adapter , BI . extend ( { container : this , render : this . popupView } , b . masker ) , this ) } , _startSearch : function ( ) { this . _assertPopupView ( ) , this . _stop = ! 1 , this . _isSearching = ! 0 , this . fireEvent ( BI . Searcher . EVENT _START ) , this . popupView . startSearch && this . popupView . startSearch ( ) , BI . nextTick ( function ( a ) { BI . Maskers . show ( a ) } , this . getName ( ) ) } , _pauseSearch : function ( ) { this . options , this . getName ( ) ; this . _stop = ! 0 , BI . nextTick ( function ( a ) { BI . Maskers . hide ( a ) } , this . getName ( ) ) , this . _isSearching === ! 0 && ( this . popupView && this . popupView . pauseSearch && this . popupView . pause
value : a . value } ) , this . button _group . element . css ( { "min-height" : a . minHeight + "px" , "padding-top" : a . innerVGap + "px" , "padding-bottom" : a . innerVGap + "px" } ) , this . button _group } , _createTool : function ( ) { var a = this . options ; if ( ! 1 !== a . tool ) return BI . createWidget ( a . tool ) } , _createTab : function ( ) { var a = this . options ; if ( 0 !== a . tabs . length ) return BI . createWidget ( { type : "bi.center" , cls : "list-view-tab" , height : 25 , items : a . tabs , value : a . value } ) } , _createToolBar : function ( ) { var a = this . options ; if ( 0 !== a . buttons . length ) return BI . createWidget ( { type : "bi.center" , cls : "list-view-toolbar bi-high-light bi-split-top" , height : 24 , items : BI . createItems ( a . buttons , { once : ! 1 , shadow : ! 0 , isShadowShowingOnSelected : ! 0 } ) } ) } , getView : function ( ) { return this . view } , populate : function ( a ) { this . view . populate . apply ( this . view , arguments ) } , resetWidth : function ( a ) { this . options . width = a , this . element . width ( a ) } , resetHeight : function ( a ) { var b = this . toolbar ? this . toolbar . attr ( "height" ) || 24 : 0 , c = this . tab ? this . tab . attr ( "height" ) || 24 : 0 , d = ( this . tool && this . tool . attr ( "height" ) || 24 ) * ( this . tool && this . tool . isVisible ( ) ? 1 : 0 ) , e = a - b - c - d - 2 * this . options . innerVGap ; this . view . resetHeight ? this . view . resetHeight ( e ) : this . view . element . css ( { "max-height" : e + "px" } ) } , setValue : function ( a ) { this . tab && this . tab . setValue ( a ) , this . view . setValue ( a ) } , getValue : function ( ) { return this . view . getValue ( ) } } ) , BI . PopupView . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.popup_view" , BI . PopupView ) , BI . SearcherView = BI . inherit ( BI . Pane , { _defaultConfig : function ( ) { var a = BI . SearcherView . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-searcher-view bi-card" , tipText : BI . i18nText ( "BI-No_Select" ) , chooseType : BI . Selection . Single , matcher : { type : "bi.button_group" , behaviors : { redmark : function ( ) { return ! 0 } } , items : [ ] , layouts : [ { type : "bi.vertical" } ] } , searcher : { type : "bi.button_group" , behaviors : { redmark : function ( ) { return ! 0 } } , items : [ ] , layouts : [ { type : "bi.vertical" } ] } } ) } , _init : function ( ) { BI . SearcherView . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . matcher = BI . createWidget ( b . matcher , { type : "bi.button_group" , chooseType : b . chooseType , behaviors : { redmark : function ( ) { return ! 0 } } , layouts : [ { type : "bi.vertical" } ] , value : b . value } ) , this . matcher . on ( BI . Controller . EVENT _CHANGE , function ( b , c , d ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , b === BI . Events . CLICK && a . fireEvent ( BI . SearcherView . EVENT _CHANGE , c , d ) } ) , this . spliter = BI . createWidget ( { type : "bi.vertical" , height : 1 , hgap : 10 , items : [ { type : "bi.layout" , height : 1 , cls : "searcher-view-spliter bi-background" } ] } ) , this . searcher = BI . createWidget ( b . searcher , { type : "bi.button_group" , chooseType : b . chooseType , behaviors : { redmark : function ( ) { return ! 0 } } , layouts : [ { type : "bi.vertical" } ] , value : b . value } ) , this . searcher . on ( BI . Controller . EVENT _CHANGE , function ( b , c , d ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , b === BI . Events . CLICK && a . fireEvent ( BI . SearcherView . EVENT _CHANGE , c , d ) } ) , BI . createWidget ( { type : "bi.vertical" , element : this , items : [ this . matcher , this . spliter , this . searcher ] } ) } , startSearch : function ( ) { } , stopSearch : function ( ) { } , setValue : function ( a ) { this . matcher . setValue ( a ) , this . searcher . setValue ( a ) } , getValue : function ( ) { return this . matcher . getValue ( ) . concat ( this . searcher . getValue ( ) ) } , populate : function ( a , b , c ) { a || ( a = [ ] ) , b || ( b = [ ] ) , this . setTipVisible ( a . length + b . length === 0 ) , this . spliter . setVisible ( BI . isNotEmptyArray ( b ) && BI . isNotEmptyArray ( a ) ) , this . matcher . populate ( b , c ) , this . searcher . populate ( a , c ) } , empty : function ( ) { this . searcher . empty ( ) , this . matcher . empty ( ) } , hasMatched : function ( ) { return this . matcher . getAllButtons ( ) . length > 0 } } ) , BI . SearcherView . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.searcher_view" , BI . SearcherView ) , BI . ListView = BI . inherit ( BI . Widget , { props : function ( ) { return { baseCls : "bi-list-view" , overscanHeight : 100 , blockSize : 10 , scrollTop : 0 , el : { } , items : [ ] } } , init : function ( ) { this . renderedIndex = - 1 , this . cache = { } } , render : function ( ) { var a = this , b = this . options ; return { type : "bi.vertical" , items : [ BI . extend ( { type : "bi.vertical" , scrolly : ! 1 , ref : function ( ) { a . container = this } } , b . el ) ] , element : this } } , mounted : function ( ) { var a = this , b = this . options ; this . _populate ( ) , this . element . scroll ( function ( c ) { b . scrollTop = a . element . scrollTop ( ) , a . _calculateBlocksT
} , doHighLight : function ( ) { this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } } ) , BI . TextIconItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.text_icon_item" , BI . TextIconItem ) , BI . TextItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { var a = BI . TextItem . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-text-item" , textAlign : "left" , whiteSpace : "nowrap" , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . TextItem . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . text = BI . createWidget ( { type : "bi.label" , element : this , textAlign : a . textAlign , whiteSpace : a . whiteSpace , textHeight : "nowrap" == a . whiteSpace ? a . height : a . textHeight , height : a . height , hgap : a . textHgap , vgap : a . textVgap , lgap : a . textLgap , rgap : a . textRgap , text : a . text , value : a . value , keyword : a . keyword , py : a . py } ) } , doClick : function ( ) { BI . TextItem . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . TextItem . EVENT _CHANGE , this . getValue ( ) , this ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doHighLight : function ( ) { this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } , setValue : function ( ) { this . isReadOnly ( ) || this . text . setValue . apply ( this . text , arguments ) } , getValue : function ( ) { return this . text . getValue ( ) } , setText : function ( ) { this . text . setText . apply ( this . text , arguments ) } , getText : function ( ) { return this . text . getText ( ) } } ) , BI . TextItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.text_item" , BI . TextItem ) , BI . IconTextIconNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . IconTextIconNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-icon-text-icon-node" , logic : { dynamic : ! 1 } , iconCls1 : "close-ha-font" , iconCls2 : "close-ha-font" , iconHeight : null , iconWidth : null , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . IconTextIconNode . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . _const ; this . text = BI . createWidget ( { type : "bi.label" , 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 } ) ; var b = BI . createWidget ( { type : "bi.icon_label" , cls : a . iconCls1 , width : a . height , height : a . height , iconWidth : a . iconWidth , iconHeight : a . iconHeight } ) , c = BI . createWidget ( { type : "bi.layout" , width : a . height , height : a . height } ) ; BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.icon_label" , cls : a . iconCls2 , width : a . height , iconWidth : a . iconWidth , iconHeight : a . iconHeight } , 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" , b , this . text , c ) } ) ) ) ) } , doClick : function ( ) { BI . IconTextIconNode . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . IconTextIconNode . EVENT _CHANGE , this . getValue ( ) , this ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , setValue : function ( ) { this . isReadOnly ( ) || this . text . setValue . apply ( this . text , arguments ) } , getValue : function ( ) { return this . text . getValue ( ) } , setText : function ( ) { this . text . setText . apply ( this . text , arguments ) } , getText : function ( ) { return this . text . getText ( ) } } ) , BI . IconTextIconNode . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.icon_text_icon_node" , BI . IconTextIconNode ) , BI . IconTextNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . IconTextNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-icon-text-node" , logic : { dynamic : ! 1 } , cls : "close-ha-font" , iconHeight : null , iconWidth : null , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . IconTextNode . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . _const ; this . text = BI . createWidget ( { type : "bi.label" , cls : "list-item-text" , textAlign : "left" , hgap : a . textHgap , vgap : a . textVgap , lgap : a . te
} ) } , c . onerror = function ( ) { a . fireEvent ( BI . File . EVENT _ERROR ) } , c . onload = function ( b , c ) { var d = this ; setTimeout ( function ( ) { return d . clean ( ) , d . hide ( ) , 200 > c . status || c . status > 399 ? ( BI . Msg . toast ( BI . i18nText ( "BI-Upload_File_Error" ) , { level : "error" } ) , void a . fireEvent ( BI . File . EVENT _ERROR ) ) : void a . fireEvent ( BI . File . EVENT _UPLOADED ) } , 1e3 ) } , c . url = b . url , c . fileType = b . accept , c . attach _array = [ ] , c . attach _names = [ ] , c . attachNum = 0 } , _events : function ( a ) { var b = this ; return event . add ( a . dom . input , "change" , function ( ) { event . del ( a . dom . input , "change" , arguments . callee ) ; for ( var c = a . dom . input . cloneNode ( ! 0 ) , d = 0 , e = F ( a . dom . input ) ; d < e . length ; d ++ ) { var f = e . item ( d ) , g = f . value || f . name , h = f . fileName || ( f . fileName = g . split ( "\\" ) . pop ( ) ) , i = - 1 !== h . indexOf ( "." ) ? h . split ( "." ) . pop ( ) . toLowerCase ( ) : "unknown" , j = f . fileSize || f . size ; a . fileType && - 1 === a . fileType . indexOf ( "*." + i ) ? ( BI . Msg . toast ( BI . i18nText ( "BI-Upload_File_Type_Error" ) , { level : "error" } ) , b . fireEvent ( BI . File . EVENT _ERROR , { errorType : 0 , file : f } ) ) : a . maxSize !== - 1 && j && a . maxSize < j ? ( BI . Msg . toast ( BI . i18nText ( "BI-Upload_File_Size_Error" ) , { level : "error" } ) , b . fireEvent ( BI . File . EVENT _ERROR , { errorType : 1 , file : f } ) ) : a . files . unshift ( f ) } a . files . length > 0 && b . fireEvent ( BI . File . EVENT _CHANGE , { files : a . files } ) , c . value = "" , a . dom . input . parentNode . replaceChild ( c , a . dom . input ) , a . dom . input = c , event . add ( a . dom . input , "change" , arguments . callee ) } ) , a } , _wrap : function ( ) { var a = this . options , b = this . element [ 0 ] ; return a . multiple === ! 0 && this . element . attr ( "multiple" , "multiple" ) , b . value = "" , this . _events ( { dom : { input : b , disabled : ! 1 } , name : b . name , maxSize : a . maxSize ? a . maxSize >> 0 : - 1 , files : [ ] , clean : function ( ) { this . files = [ ] } , upload : function ( a ) { if ( a ) for ( var b in a ) this [ b ] = a [ b ] ; return sendFiles ( this , this . maxSize ) , this } , hide : function ( ) { this . dom . disabled && ( this . dom . disabled = ! 1 , this . dom . input . removeAttribute ( "disabled" ) ) } , show : function ( a , b , c , d ) { this . dom . disabled || ( this . dom . disabled = ! 0 , this . dom . input . setAttribute ( "disabled" , "disabled" ) ) } } ) } , select : function ( ) { this . wrap && BI . Widget . _renderEngine . createElement ( this . wrap . dom . input ) . click ( ) } , upload : function ( a ) { this . wrap && this . wrap . upload ( a ) } , getValue : function ( ) { return this . wrap ? this . wrap . attach _array : [ ] } , reset : function ( ) { this . wrap && ( this . wrap . attach _array = [ ] , this . wrap . attach _names = [ ] , this . wrap . attachNum = 0 ) } , _setEnable : function ( a ) { BI . File . superclass . _setEnable . apply ( this , arguments ) , a === ! 0 ? this . element . attr ( "disabled" , "disabled" ) : this . element . removeAttr ( "disabled" ) } } ) , BI . File . EVENT _CHANGE = "BI.File.EVENT_CHANGE" , BI . File . EVENT _UPLOADSTART = "EVENT_UPLOADSTART" , BI . File . EVENT _ERROR = "EVENT_ERROR" , BI . File . EVENT _PROGRESS = "EVENT_PROGRESS" , BI . File . EVENT _UPLOADED = "EVENT_UPLOADED" , BI . shortcut ( "bi.file" , BI . File ) } ( _global . document || { } ) , BI . Input = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var a = BI . Input . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-input display-block overflow-dot" , tagName : "input" , validationChecker : BI . emptyFn , quitChecker : BI . emptyFn , allowBlank : ! 1 } ) } , _init : function ( ) { BI . Input . superclass . _init . apply ( this , arguments ) ; var a = this , b = ! 1 , c = null , d = ! 1 , e = BI . debounce ( function ( c ) { a . onKeyDown ( c , b ) , a . _keydown _ = ! 1 } , 300 ) , f = BI . debounce ( BI . bind ( this . _click , this ) , BI . EVENT _RESPONSE _TIME , { leading : ! 0 , trailing : ! 1 } ) ; this . _focusDebounce = BI . debounce ( BI . bind ( this . _focus , this ) , BI . EVENT _RESPONSE _TIME , { leading : ! 0 , trailing : ! 1 } ) , this . _blurDebounce = BI . debounce ( BI . bind ( this . _blur , this ) , BI . EVENT _RESPONSE _TIME , { leading : ! 0 , trailing : ! 1 } ) , this . element . keydown ( function ( e ) { d = ! 1 , b = e . ctrlKey , c = e . keyCode , a . fireEvent ( BI . Input . EVENT _QUICK _DOWN , arguments ) } ) . keyup ( function ( b ) { c = null , d && b . keyCode === BI . KeyCode . ENTER || ( a . _keydown _ = ! 0 , e ( b . keyCode ) ) } ) . on ( "input propertychange" , function ( b ) { var f = b . originalEvent ; ( BI . isNull ( f . propertyName ) || "value" === f . propertyName ) && ( c = null , d = ! 0 , a . _keydown _ = ! 0 , e ( c ) ) } ) . click ( function ( a ) { a . stopPropagation ( ) , f ( ) } ) . mousedown ( function ( b ) { a . element . val ( a . element . val ( ) ) } ) . focus ( function ( b ) { a . _focusDebounce ( ) } ) . focusout ( function ( b ) { a . _blurDebounce ( ) } ) , ( BI . isKey ( this . options . value ) || BI . isEmptyString ( this . options . value ) ) && this . setValue ( this . options . value ) } , _focus : function ( ) { this . element . addClass ( "bi-input-focus" ) , this . _checkValidationOn
tools . apply ( a . callback . onAsyncError , [ b , c , d , e , f , g ] ) } ) , b . bind ( c . REMOVE , function ( b , c , d ) { tools . apply ( a . callback . onRemove , [ b , c , d ] ) } ) , b . bind ( c . SELECTED , function ( b , c , d , e ) { tools . apply ( a . callback . onSelected , [ c , d , e ] ) } ) , b . bind ( c . UNSELECTED , function ( b , c , d , e ) { tools . apply ( a . callback . onUnSelected , [ c , d , e ] ) } ) } , _unbindEvent = function ( a ) { var b = a . treeObj , c = consts . event ; b . unbind ( c . NODECREATED ) . unbind ( c . CLICK ) . unbind ( c . EXPAND ) . unbind ( c . COLLAPSE ) . unbind ( c . ASYNC _SUCCESS ) . unbind ( c . ASYNC _ERROR ) . unbind ( c . REMOVE ) . unbind ( c . SELECTED ) . unbind ( c . UNSELECTED ) } , _eventProxy = function ( a ) { var b = a . target , c = data . getSetting ( a . data . treeId ) , d = "" , e = null , f = "" , g = "" , h = null , i = null , j = null ; if ( tools . eqs ( a . type , "mousedown" ) ? g = "mousedown" : tools . eqs ( a . type , "mouseup" ) ? g = "mouseup" : tools . eqs ( a . type , "contextmenu" ) ? g = "contextmenu" : tools . eqs ( a . type , "click" ) ? tools . eqs ( b . tagName , "span" ) && null !== b . getAttribute ( "treeNode" + consts . id . SWITCH ) ? ( d = tools . getNodeMainDom ( b ) . id , f = "switchNode" ) : ( j = tools . getMDom ( c , b , [ { tagName : "a" , attrName : "treeNode" + consts . id . A } ] ) , j && ( d = tools . getNodeMainDom ( j ) . id , f = "clickNode" ) ) : tools . eqs ( a . type , "dblclick" ) && ( g = "dblclick" , j = tools . getMDom ( c , b , [ { tagName : "a" , attrName : "treeNode" + consts . id . A } ] ) , j && ( d = tools . getNodeMainDom ( j ) . id , f = "switchNode" ) ) , g . length > 0 && 0 == d . length && ( j = tools . getMDom ( c , b , [ { tagName : "a" , attrName : "treeNode" + consts . id . A } ] ) , j && ( d = tools . getNodeMainDom ( j ) . id ) ) , d . length > 0 ) switch ( e = data . getNodeCache ( c , d ) , f ) { case "switchNode" : e . isParent && ( tools . eqs ( a . type , "click" ) || tools . eqs ( a . type , "dblclick" ) && tools . apply ( c . view . dblClickExpand , [ c . treeId , e ] , c . view . dblClickExpand ) ) ? h = handler . onSwitchNode : f = "" ; break ; case "clickNode" : h = handler . onClickNode } switch ( g ) { case "mousedown" : i = handler . onZTreeMousedown ; break ; case "mouseup" : i = handler . onZTreeMouseup ; break ; case "dblclick" : i = handler . onZTreeDblclick ; break ; case "contextmenu" : i = handler . onZTreeContextmenu } var k = { stop : ! 1 , node : e , nodeEventType : f , nodeEventCallback : h , treeEventType : g , treeEventCallback : i } ; return k } , _initNode = function ( a , b , c , d , e , f , g ) { if ( c ) { var h = data . getRoot ( a ) , i = a . data . key . children ; c . level = b , c . tId = a . treeId + "_" + ++ h . zId , c . parentTId = d ? d . tId : null , c . open = "string" == typeof c . open ? tools . eqs ( c . open , "true" ) : ! ! c . open , c [ i ] && c [ i ] . length > 0 ? ( c . isParent = ! 0 , c . zAsync = ! 0 ) : ( c . isParent = "string" == typeof c . isParent ? tools . eqs ( c . isParent , "true" ) : ! ! c . isParent , c . open = ! ( ! c . isParent || a . async . enable ) && c . open , c . zAsync = ! c . isParent ) , c . isFirstNode = e , c . isLastNode = f , c . getParentNode = function ( ) { return data . getNodeCache ( a , c . parentTId ) } , c . getPreNode = function ( ) { return data . getPreNode ( a , c ) } , c . getNextNode = function ( ) { return data . getNextNode ( a , c ) } , c . isAjaxing = ! 1 , data . fixPIdKeyValue ( a , c ) } } , _init = { bind : [ _bindEvent ] , unbind : [ _unbindEvent ] , caches : [ _initCache ] , nodes : [ _initNode ] , proxys : [ _eventProxy ] , roots : [ _initRoot ] , beforeA : [ ] , afterA : [ ] , innerBeforeA : [ ] , innerAfterA : [ ] , zTreeTools : [ ] } , data = { addNodeCache : function ( a , b ) { data . getCache ( a ) . nodes [ data . getNodeCacheId ( b . tId ) ] = b } , getNodeCacheId : function ( a ) { return a . substring ( a . lastIndexOf ( "_" ) + 1 ) } , addAfterA : function ( a ) { _init . afterA . push ( a ) } , addBeforeA : function ( a ) { _init . beforeA . push ( a ) } , addInnerAfterA : function ( a ) { _init . innerAfterA . push ( a ) } , addInnerBeforeA : function ( a ) { _init . innerBeforeA . push ( a ) } , addInitBind : function ( a ) { _init . bind . push ( a ) } , addInitUnBind : function ( a ) { _init . unbind . push ( a ) } , addInitCache : function ( a ) { _init . caches . push ( a ) } , addInitNode : function ( a ) { _init . nodes . push ( a ) } , addInitProxy : function ( a , b ) { b ? _init . proxys . splice ( 0 , 0 , a ) : _init . proxys . push ( a ) } , addInitRoot : function ( a ) { _init . roots . push ( a ) } , addNodesData : function ( a , b , c ) { var d = a . data . key . children ; b [ d ] || ( b [ d ] = [ ] ) , b [ d ] . length > 0 && ( b [ d ] [ b [ d ] . length - 1 ] . isLastNode = ! 1 , view . setNodeLineIcos ( a , b [ d ] [ b [ d ] . length - 1 ] ) ) , b . isParent = ! 0 , b [ d ] = b [ d ] . concat ( c ) } , addSelectedNode : function ( a , b ) { var c = data . getRoot ( a ) ; data . isSelectedNode ( a , b ) || c . curSelectedList . push ( b ) } , addCreatedNode : function ( a , b ) { if ( a . callback . onNodeCreated || a . view . addDiyDom ) { var c = data . getRoot ( a ) ; c . createdNodes . push ( b ) } } , addZTreeTools : function ( a ) { _init . zTreeTools . push ( a ) } , exSetting : function ( a ) { $ . extend ( ! 0 , _setting , a ) } , fixPIdKeyValue : function ( a , b ) { a . data . simpleData . enable && ( b [ a . data . simpleData . pIdKey ] = b . parentTId ? b . getParentNode ( ) [ a . data . simpleDat
c . nocheck = ! ! c . nocheck || a . check . nocheckInherit && d && ! ! d . nocheck , "string" == typeof c . chkDisabled && ( c . chkDisabled = s . eqs ( c . chkDisabled , "true" ) ) , c . chkDisabled = ! ! c . chkDisabled || a . check . chkDisabledInherit && d && ! ! d . chkDisabled , "string" == typeof c . halfCheck && ( c . halfCheck = s . eqs ( c . halfCheck , "true" ) ) , c . halfCheck = ! ! c . halfCheck , c . check _Child _State = - 1 , c . check _Focus = ! 1 , c . getCheckStatus = function ( ) { return v . getCheckStatus ( a , c ) } , a . check . chkStyle == t . radio . STYLE && a . check . radioType == t . radio . TYPE _ALL && c [ h ] ) { var i = v . getRoot ( a ) ; i . radioCheckedList . push ( c ) } } } , j = function ( a , b , c ) { a . data . key . checked ; a . check . enable && ( v . makeChkFlag ( a , b ) , c . push ( "<span ID='" , b . tId , t . id . CHECK , "' class='" , u . makeChkClass ( a , b ) , "' treeNode" , t . id . CHECK , b . nocheck === ! 0 ? " style='display:none;'" : "" , "></span>" ) ) } , k = function ( a , b ) { b . checkNode = function ( a , b , c , d ) { var e = this . setting . data . key . checked ; if ( a . chkDisabled !== ! 0 && ( b !== ! 0 && b !== ! 1 && ( b = ! a [ e ] ) , d = ! ! d , ( a [ e ] !== b || c ) && ( ! d || 0 != s . apply ( this . setting . callback . beforeCheck , [ this . setting . treeId , a ] , ! 0 ) ) && s . uCanDo ( this . setting ) && this . setting . check . enable && a . nocheck !== ! 0 ) ) { a [ e ] = b ; var f = w ( a , t . id . CHECK , this . setting ) ; ( c || this . setting . check . chkStyle === t . radio . STYLE ) && u . checkNodeRelation ( this . setting , a ) , u . setChkClass ( this . setting , f , a ) , u . repairParentChkClassWithSelf ( this . setting , a ) , d && this . setting . treeObj . trigger ( t . event . CHECK , [ null , this . setting . treeId , a ] ) } } , b . checkAllNodes = function ( a ) { u . repairAllChk ( this . setting , ! ! a ) } , b . getCheckedNodes = function ( a ) { var b = this . setting . data . key . children ; return a = a !== ! 1 , v . getTreeCheckedNodes ( this . setting , v . getRoot ( this . setting ) [ b ] , a ) } , b . getChangeCheckedNodes = function ( ) { var a = this . setting . data . key . children ; return v . getTreeChangeCheckedNodes ( this . setting , v . getRoot ( this . setting ) [ a ] ) } , b . setChkDisabled = function ( a , b , c , d ) { b = ! ! b , c = ! ! c , d = ! ! d , u . repairSonChkDisabled ( this . setting , a , b , d ) , u . repairParentChkDisabled ( this . setting , a . getParentNode ( ) , b , c ) } ; var c = b . updateNode ; b . updateNode = function ( a , d ) { if ( c && c . apply ( b , arguments ) , a && this . setting . check . enable ) { var e = w ( a , this . setting ) ; if ( e . get ( 0 ) && s . uCanDo ( this . setting ) ) { var f = w ( a , t . id . CHECK , this . setting ) ; 1 != d && this . setting . check . chkStyle !== t . radio . STYLE || u . checkNodeRelation ( this . setting , a ) , u . setChkClass ( this . setting , f , a ) , u . repairParentChkClassWithSelf ( this . setting , a ) } } } } , l = { getRadioCheckedList : function ( a ) { for ( var b = v . getRoot ( a ) . radioCheckedList , c = 0 , d = b . length ; c < d ; c ++ ) v . getNodeCache ( a , b [ c ] . tId ) || ( b . splice ( c , 1 ) , c -- , d -- ) ; return b } , getCheckStatus : function ( a , b ) { if ( ! a . check . enable || b . nocheck || b . chkDisabled ) return null ; var c = a . data . key . checked , d = { checked : b [ c ] , half : b . halfCheck ? b . halfCheck : a . check . chkStyle == t . radio . STYLE ? 2 === b . check _Child _State : b [ c ] ? b . check _Child _State > - 1 && b . check _Child _State < 2 : b . check _Child _State > 0 } ; return d } , getTreeCheckedNodes : function ( a , b , c , d ) { if ( ! b ) return [ ] ; var e = a . data . key . children , f = a . data . key . checked , g = c && a . check . chkStyle == t . radio . STYLE && a . check . radioType == t . radio . TYPE _ALL ; d = d ? d : [ ] ; for ( var h = 0 , i = b . length ; h < i && ( b [ h ] . nocheck === ! 0 || b [ h ] . chkDisabled === ! 0 || b [ h ] [ f ] != c || ( d . push ( b [ h ] ) , ! g ) ) && ( v . getTreeCheckedNodes ( a , b [ h ] [ e ] , c , d ) , ! ( g && d . length > 0 ) ) ; h ++ ) ; return d } , getTreeChangeCheckedNodes : function ( a , b , c ) { if ( ! b ) return [ ] ; var d = a . data . key . children , e = a . data . key . checked ; c = c ? c : [ ] ; for ( var f = 0 , g = b . length ; f < g ; f ++ ) b [ f ] . nocheck !== ! 0 && b [ f ] . chkDisabled !== ! 0 && b [ f ] [ e ] != b [ f ] . checkedOld && c . push ( b [ f ] ) , v . getTreeChangeCheckedNodes ( a , b [ f ] [ d ] , c ) ; return c } , makeChkFlag : function ( a , b ) { if ( b ) { var c = a . data . key . children , d = a . data . key . checked , e = - 1 ; if ( b [ c ] ) for ( var f = 0 , g = b [ c ] . length ; f < g ; f ++ ) { var h = b [ c ] [ f ] , i = - 1 ; if ( a . check . chkStyle == t . radio . STYLE ) { if ( i = h . nocheck === ! 0 || h . chkDisabled === ! 0 ? h . check _Child _State : h . halfCheck === ! 0 ? 2 : h [ d ] ? 2 : h . check _Child _State > 0 ? 2 : 0 , 2 == i ) { e = 2 ; break } 0 == i && ( e = 0 ) } else if ( a . check . chkStyle == t . checkbox . STYLE ) { if ( i = h . nocheck === ! 0 || h . chkDisabled === ! 0 ? h . check _Child _State : h . halfCheck === ! 0 ? 1 : h [ d ] ? h . check _Child _State === - 1 || 2 === h . check _Child _State ? 2 : 1 : h . check _Child _State > 0 ? 1 : 0 , 1 === i ) { e = 1 ; break } if ( 2 === i && e > - 1 && f > 0 && i !== e ) { e = 1 ; break } if ( 2 === e && i > - 1 && i < 2 ) { e = 1 ; break } i > - 1 && ( e = i ) } } b . check _Child _State = e } } } , m = { } , n = { onCheckNode : function ( a , b ) { if ( b . chkDisabled === ! 0 ) return ! 1 ; var c = v . getSetting ( a . data . treeId ) , d = c . data . key . checked ;
items : d } ) ) ) ) } , 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 ) } , getId : function ( ) { return this . options . id } , getPId : function ( ) { return this . options . pId } , doClick : function ( ) { BI . IconTreeLeafItem . superclass . doClick . apply ( this , arguments ) } , setSelected : function ( a ) { BI . IconTreeLeafItem . superclass . setSelected . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.icon_tree_leaf_item" , BI . IconTreeLeafItem ) , BI . LastTreeLeafItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . LastTreeLeafItem . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-last-tree-leaf-item bi-list-item-active" , logic : { dynamic : ! 1 } , id : "" , pId : "" , layer : 0 , height : 24 } ) } , _init : function ( ) { BI . LastTreeLeafItem . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . checkbox = BI . createWidget ( { type : "bi.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 , keyword : b . keyword } ) , 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 , 0 === b . layer ? "" : { width : 12 , el : { type : "bi.layout" , cls : b . pNode && b . pNode . isLastNode ? "" : "base-line-conn-background" , width : 12 , height : b . height } } , { width : 24 , el : { type : "bi.layout" , cls : "last-line-conn-background" , width : 24 , height : b . height } } , { el : 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 ) } , doHighLight : function ( ) { this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } , getId : function ( ) { return this . options . id } , getPId : function ( ) { return this . options . pId } , doClick : function ( ) { BI . LastTreeLeafItem . superclass . doClick . apply ( this , arguments ) } , setSelected : function ( a ) { BI . LastTreeLeafItem . superclass . setSelected . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.last_tree_leaf_item" , BI . LastTreeLeafItem ) , BI . MidTreeLeafItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . MidTreeLeafItem . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-mid-tree-leaf-item bi-list-item-active" , logic : { dynamic : ! 1 } , id : "" , pId : "" , layer : 0 , height : 24 } ) } , _init : function ( ) { BI . MidTreeLeafItem . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . checkbox = BI . createWidget ( { type : "bi.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 , keyword : b . keyword } ) , 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 , 0 === b . layer ? "" : { width : 12 , el : { type : "bi.layout" , cls : b . pNode && b . pNode . isLastNode ? "" : "base-line-conn-background" , width : 12 , height : b . height } } , { width : 24 , el : { type : "bi.layout" , cls : "mid-line-conn-background" , width : 24 , height : b . height } } , { el : 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 ) } , doHighLight : function ( ) { this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } , getId : function ( ) { return this . options . id } , getPId : function ( ) { return this . options . pId } , doClick : function ( ) { BI . MidTreeLeafItem . supe
once : ! 1 } ) , this . colors . populate . apply ( this . colors , b ) } , setValue : function ( a ) { this . colors . setValue ( a ) } , getValue : function ( ) { return this . colors . getValue ( ) } } ) , BI . ColorPicker . EVENT _CHANGE = "ColorPicker.EVENT_CHANGE" , BI . shortcut ( "bi.color_picker" , BI . ColorPicker ) , BI . ColorPickerEditor = BI . inherit ( BI . Widget , { constants : { REB _WIDTH : 32 } , _defaultConfig : function ( ) { return BI . extend ( BI . ColorPickerEditor . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-color-picker-editor" , height : 30 } ) } , _init : function ( ) { BI . ColorPickerEditor . superclass . _init . apply ( this , arguments ) ; var a = this , b = ( this . options , this . constants ) ; this . storeValue = { } , this . colorShow = BI . createWidget ( { type : "bi.layout" , cls : "color-picker-editor-display bi-card bi-border" , height : 16 , width : 16 } ) ; var c = BI . createWidgets ( BI . createItems ( [ { text : "R" } , { text : "G" } , { text : "B" } ] , { type : "bi.label" , cls : "color-picker-editor-label" , width : 20 , height : 20 } ) ) , d = function ( a ) { return BI . isNumeric ( a ) && ( 0 | a ) >= 0 && ( 0 | a ) <= 255 } , e = BI . createWidgets ( [ { } , { } , { } ] , { type : "bi.small_text_editor" , cls : "color-picker-editor-input" , validationChecker : d , errorText : BI . i18nText ( "BI-Color_Picker_Error_Text" ) , allowBlank : ! 0 , value : 255 , width : b . REB _WIDTH , height : 20 } ) ; BI . each ( e , function ( b , c ) { c . on ( BI . TextEditor . EVENT _CHANGE , function ( ) { a . _checkEditors ( ) , d ( a . storeValue . r ) && d ( a . storeValue . g ) && d ( a . storeValue . b ) && ( a . colorShow . element . css ( "background-color" , a . getValue ( ) ) , a . fireEvent ( BI . ColorPickerEditor . EVENT _CHANGE ) ) } ) } ) , this . R = e [ 0 ] , this . G = e [ 1 ] , this . B = e [ 2 ] , this . none = BI . createWidget ( { type : "bi.icon_button" , cls : "auto-color-icon" , width : 16 , height : 16 , iconWidth : 16 , iconHeight : 16 , title : BI . i18nText ( "BI-Basic_Auto" ) } ) , this . none . on ( BI . IconButton . EVENT _CHANGE , function ( ) { this . isSelected ( ) ? ( a . lastColor = a . getValue ( ) , a . setValue ( "" ) ) : a . setValue ( a . lastColor || "#ffffff" ) , ( a . R . isValid ( ) && a . G . isValid ( ) && a . B . isValid ( ) || a . _isEmptyRGB ( ) ) && ( a . colorShow . element . css ( "background-color" , a . getValue ( ) ) , a . fireEvent ( BI . ColorPickerEditor . EVENT _CHANGE ) ) } ) , this . transparent = BI . createWidget ( { type : "bi.icon_button" , cls : "trans-color-icon" , width : 16 , height : 16 , iconWidth : 16 , iconHeight : 16 , title : BI . i18nText ( "BI-Transparent_Color" ) } ) , this . transparent . on ( BI . IconButton . EVENT _CHANGE , function ( ) { this . isSelected ( ) ? ( a . lastColor = a . getValue ( ) , a . setValue ( "transparent" ) ) : ( "transparent" === a . lastColor && ( a . lastColor = "" ) , a . setValue ( a . lastColor || "#ffffff" ) ) , ( a . R . isValid ( ) && a . G . isValid ( ) && a . B . isValid ( ) || a . _isEmptyRGB ( ) ) && ( a . colorShow . element . css ( "background-color" , a . getValue ( ) ) , a . fireEvent ( BI . ColorPickerEditor . EVENT _CHANGE ) ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.vertical_adapt" , items : [ { el : this . colorShow , width : 16 } , { el : c [ 0 ] , width : 20 } , { el : this . R , width : b . REB _WIDTH } , { el : c [ 1 ] , width : 20 } , { el : this . G , width : b . REB _WIDTH } , { el : c [ 2 ] , width : 20 } , { el : this . B , width : b . REB _WIDTH } , { el : this . transparent , width : 16 , lgap : 5 } , { el : this . none , width : 16 , lgap : 5 } ] } , left : 10 , right : 10 , top : 0 , bottom : 0 } ] } ) } , _checkEditors : function ( ) { BI . isEmptyString ( this . R . getValue ( ) ) && this . R . setValue ( 0 ) , BI . isEmptyString ( this . G . getValue ( ) ) && this . G . setValue ( 0 ) , BI . isEmptyString ( this . B . getValue ( ) ) && this . B . setValue ( 0 ) , this . storeValue = { r : this . R . getValue ( ) || 0 , g : this . G . getValue ( ) || 0 , b : this . B . getValue ( ) || 0 } } , _isEmptyRGB : function ( ) { return BI . isEmptyString ( this . storeValue . r ) && BI . isEmptyString ( this . storeValue . g ) && BI . isEmptyString ( this . storeValue . b ) } , _showPreColor : function ( a ) { "" === a ? this . colorShow . element . css ( "background-color" , "" ) . removeClass ( "trans-color-background" ) . addClass ( "auto-color-normal-background" ) : "transparent" === a ? this . colorShow . element . css ( "background-color" , "" ) . removeClass ( "auto-color-normal-background" ) . addClass ( "trans-color-background" ) : this . colorShow . element . css ( { "background-color" : a } ) . removeClass ( "auto-color-normal-background" ) . removeClass ( "trans-color-background" ) } , _setEnable : function ( a ) { BI . ColorPickerEditor . superclass . _setEnable . apply ( this , arguments ) , a === ! 0 ? this . element . removeClass ( "base-disabled disabled" ) : a === ! 1 && this . element . addClass ( "base-disabled disabled" ) } , setValue : function ( a ) { if ( "transparent" === a ) return this . transparent . setSelected ( ! 0 ) , this . none . setSelected ( ! 1 ) , this . _showPreColor ( "transparent" ) , this . R . setValue ( "" ) , this . G . setVal
width : 24 } , width : 24 } ] } } , _setState : function ( a ) { this . editor . setState ( a ) } , _digest : function ( a , b ) { var c = this . options ; a = BI . isArray ( a ) ? a : [ a ] ; var d = [ ] , e = BI . Tree . transformToArrayFormat ( b ) ; return BI . each ( e , function ( b , c ) { BI . deepContains ( a , c . value ) && ! BI . contains ( d , c . text || c . value ) && d . push ( c . text || c . value ) } ) , d . length > 0 ? d . join ( "," ) : BI . isFunction ( c . text ) ? c . text ( ) : c . text } , stopEditing : function ( ) { this . searcher . stopSearch ( ) } , getSearcher : function ( ) { return this . searcher } , populate : function ( a ) { this . options . items = a } , setValue : function ( a ) { this . _setState ( this . _digest ( a , this . options . items ) ) } , getValue : function ( ) { return this . searcher . getValue ( ) } } ) , BI . SearchTextValueTrigger . EVENT _SEARCHING = "EVENT_SEARCHING" , BI . SearchTextValueTrigger . EVENT _STOP = "EVENT_STOP" , BI . SearchTextValueTrigger . EVENT _START = "EVENT_START" , BI . SearchTextValueTrigger . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.search_text_value_trigger" , BI . SearchTextValueTrigger ) , BI . TextValueCheckCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . TextValueCheckCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-text-value-check-combo" , width : 100 , height : 24 , chooseType : BI . ButtonGroup . CHOOSE _TYPE _SINGLE , value : "" , attributes : { tabIndex : 0 } } ) } , _init : function ( ) { BI . TextValueCheckCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . trigger = BI . createWidget ( { type : "bi.select_text_trigger" , cls : "text-value-trigger" , items : b . items , height : b . height , text : b . text , value : b . value } ) , this . popup = BI . createWidget ( { type : "bi.text_value_check_combo_popup" , chooseType : b . chooseType , items : b . items , value : b . value } ) , this . popup . on ( BI . TextValueCheckComboPopup . EVENT _CHANGE , function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . textIconCheckCombo . hideView ( ) , a . fireEvent ( BI . TextValueCheckCombo . EVENT _CHANGE ) } ) , this . popup . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . textIconCheckCombo = BI . createWidget ( { type : "bi.combo" , container : b . container , element : this , adjustLength : 2 , el : this . trigger , popup : { el : this . popup , maxHeight : 300 } } ) , BI . isKey ( b . value ) && this . setValue ( b . value ) } , setTitle : function ( a ) { this . trigger . setTitle ( a ) } , setValue : function ( a ) { this . trigger . setValue ( a ) , this . popup . setValue ( a ) } , setWarningTitle : function ( a ) { this . trigger . setWarningTitle ( 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 . textIconCheckCombo . populate ( a ) } } ) , BI . TextValueCheckCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.text_value_check_combo" , BI . TextValueCheckCombo ) , BI . SmallTextValueCheckCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SmallTextValueCheckCombo . superclass . _defaultConfig . apply ( this , arguments ) , { width : 100 , height : 24 , chooseType : BI . ButtonGroup . CHOOSE _TYPE _SINGLE , text : "" } ) } , _init : function ( ) { BI . SmallTextValueCheckCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . trigger = BI . createWidget ( { type : "bi.small_select_text_trigger" , items : b . items , height : b . height , text : b . text , value : b . value } ) , this . popup = BI . createWidget ( { type : "bi.text_value_check_combo_popup" , chooseType : b . chooseType , items : b . items , value : b . value } ) , this . popup . on ( BI . TextValueCheckComboPopup . EVENT _CHANGE , function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . SmallTextIconCheckCombo . hideView ( ) , a . fireEvent ( BI . SmallTextValueCheckCombo . EVENT _CHANGE ) } ) , this . popup . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . SmallTextIconCheckCombo = BI . createWidget ( { type : "bi.combo" , container : b . container , element : this , adjustLength : 2 , el : this . trigger , popup : { el : this . popup , maxHeight : 300 } } ) } , setValue : function ( a ) { this . SmallTextIconCheckCombo . setValue ( a ) } , getValue : function ( ) { return this . popup . getValue ( ) } , populate : function ( a ) { this . options . items = a , this . SmallTextIconCheckCombo . populate ( a ) } } ) , BI . SmallTextValueCheckCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.small_text_value_check_combo" , BI . SmallTextValueCheckCombo ) , BI . TextValueCheckComboPopup = BI . inherit ( BI . Pane , { _defaultConfig : function ( ) { return BI . extend ( BI . TextValueCheckComboPopup . superclass . _defaultConfig . apply ( this , arguments ) , { base
isEditing : function ( ) { return this . editor . isEditing ( ) } , getLastValidValue : function ( ) { return this . editor . getLastValidValue ( ) } , getLastChangedValue : function ( ) { return this . editor . getLastChangedValue ( ) } , setValue : function ( a ) { this . editor . setValue ( a ) } , getValue : function ( ) { return this . editor . getValue ( ) } , getState : function ( ) { return this . editor . getValue ( ) . match ( /[^\s]+/g ) } , setState : function ( a ) { var b = this . options ; return BI . StateEditor . superclass . setValue . apply ( this , arguments ) , this . stateValue = a , BI . isNumber ( a ) ? void ( a === BI . Selection . All ? ( this . text . setText ( BI . i18nText ( "BI-Select_All" ) ) , this . text . element . removeClass ( "state-editor-infinite-text" ) ) : a === BI . Selection . Multi ? ( this . text . setText ( BI . i18nText ( "BI-Select_Part" ) ) , this . text . element . removeClass ( "state-editor-infinite-text" ) ) : ( this . text . setText ( b . text ) , this . text . element . addClass ( "state-editor-infinite-text" ) ) ) : BI . isString ( a ) ? ( this . text . setText ( a ) , void this . text . element . removeClass ( "state-editor-infinite-text" ) ) : void ( BI . isArray ( a ) && ( BI . isEmpty ( a ) ? ( this . text . setText ( b . text ) , this . text . element . addClass ( "state-editor-infinite-text" ) ) : 1 === a . length ? ( this . text . setText ( a [ 0 ] ) , this . text . element . removeClass ( "state-editor-infinite-text" ) ) : ( this . text . setText ( BI . i18nText ( "BI-Select_Part" ) ) , this . text . element . removeClass ( "state-editor-infinite-text" ) ) ) ) } , setTipType : function ( a ) { this . text . options . tipType = a } } ) , BI . StateEditor . EVENT _CHANGE = "EVENT_CHANGE" , BI . StateEditor . EVENT _FOCUS = "EVENT_FOCUS" , BI . StateEditor . EVENT _BLUR = "EVENT_BLUR" , BI . StateEditor . EVENT _CLICK = "EVENT_CLICK" , BI . StateEditor . EVENT _KEY _DOWN = "EVENT_KEY_DOWN" , BI . StateEditor . EVENT _CLICK _LABEL = "EVENT_CLICK_LABEL" , BI . StateEditor . EVENT _START = "EVENT_START" , BI . StateEditor . EVENT _PAUSE = "EVENT_PAUSE" , BI . StateEditor . EVENT _STOP = "EVENT_STOP" , BI . StateEditor . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . StateEditor . EVENT _CHANGE _CONFIRM = "EVENT_CHANGE_CONFIRM" , BI . StateEditor . EVENT _VALID = "EVENT_VALID" , BI . StateEditor . EVENT _ERROR = "EVENT_ERROR" , BI . StateEditor . EVENT _ENTER = "EVENT_ENTER" , BI . StateEditor . EVENT _RESTRICT = "EVENT_RESTRICT" , BI . StateEditor . EVENT _SPACE = "EVENT_SPACE" , BI . StateEditor . EVENT _EMPTY = "EVENT_EMPTY" , BI . shortcut ( "bi.state_editor" , BI . StateEditor ) , BI . SimpleStateEditor = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var a = BI . SimpleStateEditor . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-simple-state-editor" , hgap : 4 , vgap : 2 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , validationChecker : BI . emptyFn , quitChecker : BI . emptyFn , mouseOut : ! 1 , allowBlank : ! 0 , watermark : "" , errorText : "" , height : 24 } ) } , _init : function ( ) { BI . SimpleStateEditor . 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" , textAlign : "left" , height : b . height , text : BI . i18nText ( "BI-Basic_Unrestricted" ) , hgap : 4 , handler : function ( ) { a . _showInput ( ) , a . editor . focus ( ) , a . editor . setValue ( "" ) } } ) , this . text . on ( BI . TextButton . EVENT _CHANGE , function ( ) { BI . nextTick ( function ( ) { a . fireEvent ( BI . SimpleStateEditor . EVENT _CLICK _LABEL ) } ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . text , left : 0 , right : 0 , top : 0 , bottom : 0 } ] } ) , this . editor . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _FOCUS , function ( ) { a . fireEvent ( BI . SimpleStateEditor . EVENT _FOCUS , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _BLUR , function ( ) { a . fireEvent ( BI . SimpleStateEditor . EVENT _BLUR , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CLICK , function ( ) { a . fireEvent ( BI . SimpleStateEditor . EVENT _CLICK , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . SimpleStateEditor . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _KEY _DOWN , function ( b ) { a . fireEvent ( BI . SimpleStateEditor . EVENT _KEY _DOWN , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _VALID , function ( ) { a . fireEvent ( BI . SimpleStateEditor . EVENT _VALI
lastPage : BI . emptyFn } , vertical : { pages : ! 1 , curr : 1 , hasPrev : BI . emptyFn , hasNext : BI . emptyFn , firstPage : 1 , lastPage : BI . emptyFn } } ) } , _init : function ( ) { BI . DirectionPager . superclass . _init . apply ( this , arguments ) ; var a = this . options ; a . vertical , a . horizontal ; this . _createVPager ( ) , this . _createHPager ( ) , this . layout = BI . createWidget ( { type : "bi.absolute" , scrollable : ! 1 , element : this , items : [ { el : this . vpager , top : 0 , right : 74 } , { el : this . vlabel , top : 0 , right : 111 } , { el : this . hpager , top : 0 , right : - 9 } , { el : this . hlabel , top : 0 , right : 28 } ] } ) } , _createVPager : function ( ) { var a = this , b = this . options , c = b . vertical ; this . vlabel = BI . createWidget ( { type : "bi.label" , width : 24 , height : 20 , value : c . curr , title : c . curr , invisible : ! 0 } ) , this . vpager = BI . createWidget ( { type : "bi.pager" , width : 76 , layouts : [ { type : "bi.horizontal" , scrollx : ! 1 , rgap : 24 , vgap : 1 } ] , invisible : ! 0 , dynamicShow : ! 1 , pages : c . pages , curr : c . curr , groups : 0 , first : ! 1 , last : ! 1 , prev : { type : "bi.icon_button" , value : "prev" , title : BI . i18nText ( "BI-Up_Page" ) , warningTitle : BI . i18nText ( "BI-Current_Is_First_Page" ) , height : 20 , iconWidth : 16 , iconHeight : 16 , cls : "direction-pager-prev column-pre-page-h-font" } , next : { type : "bi.icon_button" , value : "next" , title : BI . i18nText ( "BI-Down_Page" ) , warningTitle : BI . i18nText ( "BI-Current_Is_Last_Page" ) , height : 20 , iconWidth : 16 , iconHeight : 16 , cls : "direction-pager-next column-next-page-h-font" } , hasPrev : c . hasPrev , hasNext : c . hasNext , firstPage : c . firstPage , lastPage : c . lastPage } ) , this . vpager . on ( BI . Pager . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . DirectionPager . EVENT _CHANGE ) } ) , this . vpager . on ( BI . Pager . EVENT _AFTER _POPULATE , function ( ) { a . vlabel . setValue ( this . getCurrentPage ( ) ) , a . vlabel . setTitle ( this . getCurrentPage ( ) ) } ) } , _createHPager : function ( ) { var a = this , b = this . options , c = b . horizontal ; this . hlabel = BI . createWidget ( { type : "bi.label" , width : 24 , height : 20 , value : c . curr , title : c . curr , invisible : ! 0 } ) , this . hpager = BI . createWidget ( { type : "bi.pager" , width : 76 , layouts : [ { type : "bi.horizontal" , scrollx : ! 1 , rgap : 24 , vgap : 1 } ] , invisible : ! 0 , dynamicShow : ! 1 , pages : c . pages , curr : c . curr , groups : 0 , first : ! 1 , last : ! 1 , prev : { type : "bi.icon_button" , value : "prev" , title : BI . i18nText ( "BI-Left_Page" ) , warningTitle : BI . i18nText ( "BI-Current_Is_First_Page" ) , height : 20 , iconWidth : 16 , iconHeight : 16 , cls : "direction-pager-prev row-pre-page-h-font" } , next : { type : "bi.icon_button" , value : "next" , title : BI . i18nText ( "BI-Right_Page" ) , warningTitle : BI . i18nText ( "BI-Current_Is_Last_Page" ) , height : 20 , iconWidth : 16 , iconHeight : 16 , cls : "direction-pager-next row-next-page-h-font" } , hasPrev : c . hasPrev , hasNext : c . hasNext , firstPage : c . firstPage , lastPage : c . lastPage } ) , this . hpager . on ( BI . Pager . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . DirectionPager . EVENT _CHANGE ) } ) , this . hpager . on ( BI . Pager . EVENT _AFTER _POPULATE , function ( ) { a . hlabel . setValue ( this . getCurrentPage ( ) ) , a . hlabel . setTitle ( this . getCurrentPage ( ) ) } ) } , getVPage : function ( ) { return this . vpager . getCurrentPage ( ) } , getHPage : function ( ) { return this . hpager . getCurrentPage ( ) } , setVPage : function ( a ) { this . vpager . setValue ( a ) , this . vlabel . setValue ( a ) , this . vlabel . setTitle ( a ) } , setHPage : function ( a ) { this . hpager . setValue ( a ) , this . hlabel . setValue ( a ) , this . hlabel . setTitle ( a ) } , hasVNext : function ( ) { return this . vpager . hasNext ( ) } , hasHNext : function ( ) { return this . hpager . hasNext ( ) } , hasVPrev : function ( ) { return this . vpager . hasPrev ( ) } , hasHPrev : function ( ) { return this . hpager . hasPrev ( ) } , setHPagerVisible : function ( a ) { this . hpager . setVisible ( a ) , this . hlabel . setVisible ( a ) } , setVPagerVisible : function ( a ) { this . vpager . setVisible ( a ) , this . vlabel . setVisible ( a ) } , populate : function ( ) { this . vpager . populate ( ) , this . hpager . populate ( ) ; var a = ! 1 , b = ! 1 ; this . hasHNext ( ) || this . hasHPrev ( ) ? ( this . setHPagerVisible ( ! 0 ) , b = ! 0 ) : this . setHPagerVisible ( ! 1 ) , this . hasVNext ( ) || this . hasVPrev ( ) ? ( this . setVPagerVisible ( ! 0 ) , a = ! 0 ) : this . setVPagerVisible ( ! 1 ) , this . setVisible ( b || a ) ; var c = [ 74 , 111 , - 9 , 28 ] , d = this . layout . attr ( "items" ) ; a === ! 0 && b === ! 0 ? ( d [ 0 ] . right = c [ 0 ] , d [ 1 ] . right = c [ 1 ] , d [ 2 ] . right = c [ 2 ] , d [ 3 ] . right = c [ 3 ] ) : a === ! 0 ? ( d [ 0 ] . right = c [ 2 ] , d [ 1 ] . right = c [ 3 ] ) : b === ! 0 && ( d [ 2 ] . right = c [ 2 ] , d [ 3 ] . right = c [ 3 ] ) , this . layout . attr ( "items" , d ) , this . layout . resize ( ) } , clear : function ( ) { this . vpager . attr ( "curr" , 1 ) , this . hpager . attr ( "curr" , 1 ) } } ) , BI . DirectionPager . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.direction_pager" , BI . DirectionPager ) ,
this . _checkRightValid ( ) } , getValue : function ( ) { return { year : this . year . getValue ( ) , month : this . month . getValue ( ) } } } ) , BI . DatePicker . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.date_picker" , BI . DatePicker ) , BI . YearPicker = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var a = BI . YearPicker . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : "bi-year-picker" , behaviors : { } , height : 40 , min : "1900-01-01" , max : "2099-12-31" } ) } , _init : function ( ) { BI . YearPicker . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . _year = BI . getDate ( ) . getFullYear ( ) , this . left = BI . createWidget ( { type : "bi.icon_button" , cls : "pre-page-h-font" , width : 25 , height : 25 } ) , this . left . on ( BI . IconButton . EVENT _CHANGE , function ( ) { a . setValue ( a . year . getValue ( ) - 1 ) , a . fireEvent ( BI . YearPicker . EVENT _CHANGE ) , a . _checkLeftValid ( ) , a . _checkRightValid ( ) } ) , this . right = BI . createWidget ( { type : "bi.icon_button" , cls : "next-page-h-font" , width : 25 , height : 25 } ) , this . right . on ( BI . IconButton . EVENT _CHANGE , function ( ) { a . setValue ( a . year . getValue ( ) + 1 ) , a . fireEvent ( BI . YearPicker . EVENT _CHANGE ) , a . _checkLeftValid ( ) , a . _checkRightValid ( ) } ) , this . year = BI . createWidget ( { type : "bi.year_date_combo" , min : b . min , behaviors : b . behaviors , max : b . max } ) , this . year . on ( BI . YearDateCombo . EVENT _CHANGE , function ( ) { a . setValue ( a . year . getValue ( ) ) , a . fireEvent ( BI . YearPicker . EVENT _CHANGE ) } ) , BI . createWidget ( { type : "bi.htape" , element : this , items : [ { el : { type : "bi.center_adapt" , items : [ this . left ] } , width : 25 } , { type : "bi.center_adapt" , items : [ { el : { type : "bi.horizontal_float" , width : 50 , items : [ { el : this . year } ] } } ] } , { el : { type : "bi.center_adapt" , items : [ this . right ] } , width : 25 } ] } ) , this . setValue ( { year : this . _year } ) } , _checkLeftValid : function ( ) { var a = this . options , b = ! ( this . _year === BI . parseDateTime ( a . min , "%Y-%X-%d" ) . getFullYear ( ) ) ; return this . left . setEnable ( b ) , b } , _checkRightValid : function ( ) { var a = this . options , b = ! ( this . _year === BI . parseDateTime ( a . max , "%Y-%X-%d" ) . getFullYear ( ) ) ; return this . right . setEnable ( b ) , b } , setValue : function ( a ) { this . _year = a , this . year . setValue ( a ) , this . _checkLeftValid ( ) , this . _checkRightValid ( ) } , getValue : function ( ) { return this . year . getValue ( ) } } ) , BI . YearPicker . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.year_picker" , BI . YearPicker ) , BI . DateCalendarPopup = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var a = BI . DateCalendarPopup . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : "bi-date-calendar-popup" , min : "1900-01-01" , max : "2099-12-31" , selectedTime : null } ) } , _createNav : function ( a ) { var b = BI . Calendar . getDateJSONByPage ( a ) , c = BI . createWidget ( { type : "bi.calendar" , logic : { dynamic : ! 0 } , min : this . options . min , max : this . options . max , year : b . year , month : b . month , day : this . selectedTime . day } ) ; return c } , _init : function ( ) { BI . DateCalendarPopup . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . today = BI . getDate ( ) , this . _year = this . today . getFullYear ( ) , this . _month = this . today . getMonth ( ) + 1 , this . _day = this . today . getDate ( ) , this . selectedTime = b . selectedTime || { year : this . _year , month : this . _month , day : this . _day } , this . datePicker = BI . createWidget ( { type : "bi.date_picker" , behaviors : b . behaviors , min : b . min , max : b . max } ) , this . calendar = BI . createWidget ( { direction : "top" , logic : { dynamic : ! 0 } , type : "bi.navigation" , tab : this . datePicker , cardCreator : BI . bind ( this . _createNav , this ) , afterCardCreated : function ( ) { } , afterCardShow : function ( ) { this . setValue ( a . selectedTime ) } } ) , this . datePicker . on ( BI . DatePicker . EVENT _CHANGE , function ( ) { a . selectedTime = a . datePicker . getValue ( ) , a . selectedTime . day = 1 , a . calendar . setSelect ( BI . Calendar . getPageByDateJSON ( a . selectedTime ) ) } ) , this . calendar . on ( BI . Navigation . EVENT _CHANGE , function ( ) { a . selectedTime = a . calendar . getValue ( ) , a . setValue ( a . selectedTime ) , a . fireEvent ( BI . DateCalendarPopup . EVENT _CHANGE ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . calendar , left : 5 , right : 5 } , { el : { type : "bi.layout" , cls : "bi-split-top" } , height : 1 , top : 40 , left : 0 , right : 0 } ] } ) } , setValue : function ( a ) { this . datePicker . setValue ( a ) , this . calendar . setSelect ( BI . Calendar . getPageByDateJSON ( a ) ) , this . calendar . setValue ( a ) , this . selectedTime = a } , getValue : function ( ) { return this . selectedTime } } ) , BI . DateCalendarPopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.date_calendar_popup" , BI . DateCale
height : 0 } } ] , cls : "bi-down-list-spliter-container cursor-pointer" , vgap : 5 , lgap : 10 , rgap : 0 } ) ; c . push ( g ) } } ) , c } , _isGroup : function ( a ) { return a . length > 1 } , _needSpliter : function ( a , b ) { return a < b - 1 } , _createChildValue : function ( a , b ) { return a + "_" + b } , _digest : function ( a ) { var b = this , c = [ ] ; return BI . each ( a , function ( a , d ) { var e ; e = BI . isNotNull ( d . childValue ) ? b . _createChildValue ( d . value , d . childValue ) : d . value , c . push ( e ) } ) , c } , _checkValues : function ( a ) { function b ( a , b ) { var c = "" ; return BI . some ( a , function ( a , d ) { return BI . some ( b , function ( a , b ) { if ( d === b ) return c = d , ! 0 } ) } ) , c } var c = [ ] ; return BI . each ( this . items , function ( d , e ) { BI . each ( e , function ( e , f ) { if ( BI . isNotNull ( f . children ) ) { var g = BI . map ( f . children , "value" ) , h = b ( g , a [ d ] ) ; BI . isNotEmptyString ( h ) && c . push ( h ) } else f . value === a [ d ] [ 0 ] && c . push ( a [ d ] [ 0 ] ) } ) } ) , c } , populate : function ( a ) { BI . DownListPopup . superclass . populate . apply ( this , arguments ) , this . items = BI . deepClone ( a ) , this . childValueMap = { } , this . fatherValueMap = { } , this . singleValues = [ ] ; var b = this . _createChildren ( this . items ) , c = BI . createItems ( b , { } , { adjustLength : - 2 } ) ; this . popup . populate ( c ) } , setValue : function ( a ) { this . popup . setValue ( this . _digest ( a ) ) } , _getValue : function ( ) { var a = [ ] ; return BI . each ( this . popup . getAllButtons ( ) , function ( b , c ) { b % 2 === 0 && a . push ( c . getValue ( ) ) } ) , a } , getValue : function ( ) { var a = this , b = [ ] , c = this . _checkValues ( this . _getValue ( ) ) ; return BI . each ( c , function ( c , d ) { var e = { } ; if ( BI . isNotNull ( a . childValueMap [ d ] ) ) { var f = a . fatherValueMap [ d ] ; e . childValue = a . childValueMap [ d ] , e . value = f } else e . value = d ; b . push ( e ) } ) , b } } ) , BI . DownListPopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . DownListPopup . EVENT _SON _VALUE _CHANGE = "EVENT_SON_VALUE_CHANGE" , BI . shortcut ( "bi.down_list_popup" , BI . DownListPopup ) , ! function ( ) { BI . DynamicDateHelper = { } , BI . extend ( BI . DynamicDateHelper , { getCalculation : function ( a ) { var b = BI . getDate ( ) ; return this . getCalculationByDate ( b , a ) } , getCalculationByDate : function ( a , b ) { if ( BI . isNotNull ( b . year ) && ( a = BI . getDate ( a . getFullYear ( ) + BI . parseInt ( b . year ) , a . getMonth ( ) , a . getDate ( ) ) ) , BI . isNotNull ( b . quarter ) && ( a = BI . getOffsetQuarter ( a , BI . parseInt ( b . quarter ) ) ) , BI . isNotNull ( b . month ) && ( a = BI . getOffsetMonth ( a , BI . parseInt ( b . month ) ) ) , BI . isNotNull ( b . week ) && ( a = BI . getOffsetDate ( a , 7 * BI . parseInt ( b . week ) ) ) , BI . isNotNull ( b . day ) && ( a = BI . getOffsetDate ( a , BI . parseInt ( b . day ) ) ) , BI . isNotNull ( b . workDay ) ) if ( BI . isNotNull ( BI . holidays ) ) for ( var c = Math . abs ( b . workDay ) , d = 0 ; d < c ; d ++ ) a = BI . getOffsetDate ( a , b . workDay < 0 ? - 1 : 1 ) , BI . isNotNull ( BI . holidays [ BI . print ( a , "%Y-%X-%d" ) ] ) && d -- ; else a = BI . getOffsetDate ( a , BI . parseInt ( b . workDay ) ) ; return BI . isNotNull ( b . position ) && b . position !== BI . DynamicDateCard . OFFSET . CURRENT && ( a = this . getBeginDate ( a , b ) ) , BI . getDate ( a . getFullYear ( ) , a . getMonth ( ) , a . getDate ( ) ) } , getBeginDate : function ( a , b ) { return BI . isNotNull ( b . day ) ? b . position === BI . DynamicDateCard . OFFSET . BEGIN ? BI . getDate ( a . getFullYear ( ) , a . getMonth ( ) , 1 ) : BI . getDate ( a . getFullYear ( ) , a . getMonth ( ) , BI . getLastDateOfMonth ( a ) . getDate ( ) ) : BI . isNotNull ( b . week ) ? b . position === BI . DynamicDateCard . OFFSET . BEGIN ? BI . getWeekStartDate ( a ) : BI . getWeekEndDate ( a ) : BI . isNotNull ( b . month ) ? b . position === BI . DynamicDateCard . OFFSET . BEGIN ? BI . getDate ( a . getFullYear ( ) , a . getMonth ( ) , 1 ) : BI . getDate ( a . getFullYear ( ) , a . getMonth ( ) , BI . getLastDateOfMonth ( a ) . getDate ( ) ) : BI . isNotNull ( b . quarter ) ? b . position === BI . DynamicDateCard . OFFSET . BEGIN ? BI . getQuarterStartDate ( a ) : BI . getQuarterEndDate ( a ) : BI . isNotNull ( b . year ) ? b . position === BI . DynamicDateCard . OFFSET . BEGIN ? BI . getDate ( a . getFullYear ( ) , 0 , 1 ) : BI . getDate ( a . getFullYear ( ) , 11 , 31 ) : a } } ) } ( ) , BI . DynamicDateCard = BI . inherit ( BI . Widget , { props : { baseCls : "bi-dynamic-date-card" } , render : function ( ) { var a = this ; return this . position = BI . DynamicDateCard . OFFSET . CURRENT , { type : "bi.vertical" , items : [ { el : { type : "bi.label" , text : BI . i18nText ( "BI-Multi_Date_Relative_Current_Time" ) , textAlign : "left" , height : 12 , lgap : 10 } , tgap : 10 , bgap : 5 } , { type : "bi.button_group" , ref : function ( ) { a . checkgroup = this } , chooseType : BI . ButtonGroup . CHOOSE _TYPE _MULTI , lgap : 4 , value : [ BI . DynamicDateCard . TYPE . YEAR ] , items : BI . createItems ( [ { text : BI . i18nText ( "BI-Basic_Year" ) , value : BI . DynamicDateCard . TYPE . YEAR } , { text : BI . i18nText ( "BI-Basic_Single_Quarter" ) , value : BI . DynamicDateCard . TYPE . QUARTER } , { text : BI . i18nText ( "BI-Basic_Month" ) , value : BI . DynamicDateCard . TYPE . MONTH } , {
} , listeners : [ { eventName : BI . Combo . EVENT _BEFORE _POPUPVIEW , action : function ( ) { a . popup . setValue ( a . storeValue ) , a . fireEvent ( BI . DynamicDateTimeCombo . EVENT _BEFORE _POPUPVIEW ) } } ] , hideChecker : function ( b ) { return 0 === a . triggerBtn . element . find ( b . target ) . length } } , top : 0 , left : 0 , right : 0 , bottom : 0 } , { el : { type : "bi.icon_button" , cls : "bi-trigger-icon-button date-font" , width : b . height , height : b . height , listeners : [ { eventName : BI . IconButton . EVENT _CHANGE , action : function ( ) { a . combo . isViewVisible ( ) || a . combo . showView ( ) } } ] , ref : function ( ) { a . triggerBtn = this } } , top : 0 , right : 0 } ] } ] , ref : function ( b ) { a . comboWrapper = b } } } , mounted : function ( ) { this . _checkDynamicValue ( this . storeValue ) } , _checkDynamicValue : function ( a ) { var b = this . options , c = null ; switch ( BI . isNotNull ( a ) && ( c = a . type ) , c ) { case BI . DynamicDateTimeCombo . Dynamic : this . changeIcon . setVisible ( ! 0 ) , this . comboWrapper . attr ( "items" ) [ 0 ] . width = b . height , this . comboWrapper . resize ( ) ; break ; default : this . comboWrapper . attr ( "items" ) [ 0 ] . width = 0 , this . comboWrapper . resize ( ) , this . changeIcon . setVisible ( ! 1 ) } } , _checkValue : function ( a ) { switch ( a . type ) { case BI . DynamicDateCombo . Dynamic : return BI . isNotEmptyObject ( a . value ) ; case BI . DynamicDateCombo . Static : default : return ! 0 } } , setValue : function ( a ) { this . storeValue = a , this . trigger . setValue ( a ) , this . _checkDynamicValue ( a ) } , getValue : function ( ) { return this . storeValue } , getKey : function ( ) { return this . trigger . getKey ( ) } , hidePopupView : function ( ) { this . combo . hideView ( ) } , isValid : function ( ) { return this . trigger . isValid ( ) } } ) , BI . DynamicDateTimeCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . DynamicDateTimeCombo . EVENT _FOCUS = "EVENT_FOCUS" , BI . DynamicDateTimeCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . DynamicDateTimeCombo . EVENT _VALID = "EVENT_VALID" , BI . DynamicDateTimeCombo . EVENT _ERROR = "EVENT_ERROR" , BI . DynamicDateTimeCombo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . shortcut ( "bi.dynamic_date_time_combo" , BI . DynamicDateTimeCombo ) , BI . extend ( BI . DynamicDateTimeCombo , { Static : 1 , Dynamic : 2 } ) , BI . DynamicDateTimePopup = BI . inherit ( BI . Widget , { constants : { tabHeight : 30 , buttonHeight : 24 } , props : { baseCls : "bi-dynamic-date-time-popup" , width : 248 , height : 385 } , _init : function ( ) { BI . DynamicDateTimePopup . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = this . constants ; this . storeValue = { type : BI . DynamicDateCombo . Static } , BI . createWidget ( { element : this , type : "bi.vtape" , items : [ { el : this . _getTabJson ( ) } , { el : { type : "bi.grid" , items : [ [ { type : "bi.text_button" , cls : "bi-high-light bi-split-top" , textHeight : c . buttonHeight - 1 , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_Clear" ) , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicDateTimePopup . BUTTON _CLEAR _EVENT _CHANGE ) } } ] } , { type : "bi.text_button" , cls : "bi-split-left bi-split-right bi-high-light bi-split-top" , textHeight : c . buttonHeight - 1 , shadow : ! 0 , text : BI . i18nText ( "BI-Multi_Date_Today" ) , ref : function ( ) { a . textButton = this } , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicDateTimePopup . BUTTON _lABEL _EVENT _CHANGE ) } } ] } , { type : "bi.text_button" , cls : "bi-high-light bi-split-top" , textHeight : c . buttonHeight - 1 , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_OK" ) , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicDateTimePopup . BUTTON _OK _EVENT _CHANGE ) } } ] } ] ] } , height : 24 } ] } ) , this . setValue ( b . value ) } , _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-Multi_Date_YMD" ) , value : BI . DynamicDateCombo . Static } , { text : BI . i18nText ( "BI-Basic_Dynamic_Title" ) , value : BI . DynamicDateCombo . Dynamic } ] , { textAlign : "center" } ) } , cardCreator : function ( c ) { switch ( c ) { case BI . DynamicDateCombo . Dynamic : return { type : "bi.dynamic_date_card" , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { a . _setInnerValue ( a . year , c ) } } ] , ref : function ( ) { a . dynamicPane = this } } ; case BI . DynamicDateCombo . Static : default : return { type : "bi.vtape" , items : [ { type : "bi.date_calendar_popup" , behaviors : b . behaviors , min : a . options . min , max : a . options . max , ref : function ( ) { a . ymd = this } } , { el : { type : "bi.dynamic_date_time_select" , cls : "bi-split-top" , ref : function ( ) { a . timeSelect = th
c = d . length === b . digit ) ) , c } , _checkOverlap : function ( ) { var a = this . labelOne . element [ 0 ] . offsetLeft , b = this . labelTwo . element [ 0 ] . offsetLeft ; a <= b ? b - a < 90 ? this . labelTwo . element . css ( { top : 40 } ) : this . labelTwo . element . css ( { top : 0 } ) : a - b < 90 ? this . labelTwo . element . css ( { top : 40 } ) : this . labelTwo . element . css ( { top : 0 } ) } , _checkLabelPosition : function ( a , b , c , d , e ) { if ( a = BI . parseFloat ( a ) , b = BI . parseFloat ( b ) , c = BI . parseFloat ( c ) , d = BI . parseFloat ( d ) , a <= b && c > d || a >= b && c < d ) { var f = BI . parseFloat ( this . sliderOne . element [ 0 ] . style . left ) < BI . parseFloat ( this . sliderTwo . element [ 0 ] . style . left ) ; this . labelOne . element . css ( { left : f ? "0%" : "100%" } ) , this . labelTwo . element . css ( { left : f ? "100%" : "0%" } ) } } , _setSliderOnePosition : function ( a ) { this . sliderOne . element . css ( { left : a + "%" } ) } , _setSliderTwoPosition : function ( a ) { this . sliderTwo . element . css ( { left : a + "%" } ) } , _setBlueTrackLeft : function ( a ) { this . blueTrack . element . css ( { left : a + "%" } ) } , _setBlueTrackWidth : function ( a ) { this . blueTrack . element . css ( { width : a + "%" } ) } , _setBlueTrack : function ( ) { var a = this . _getPercentByValue ( this . labelOne . getValue ( ) ) , b = this . _getPercentByValue ( this . labelTwo . getValue ( ) ) ; a <= b ? ( this . _setBlueTrackLeft ( a ) , this . _setBlueTrackWidth ( b - a ) ) : ( this . _setBlueTrackLeft ( b ) , this . _setBlueTrackWidth ( a - b ) ) } , _setAllPosition : function ( a , b ) { this . _setSliderOnePosition ( a ) , this . _setSliderTwoPosition ( b ) , this . _setBlueTrack ( ) } , _setVisible : function ( a ) { this . sliderOne . setVisible ( a ) , this . sliderTwo . setVisible ( a ) , this . labelOne . setVisible ( a ) , this . labelTwo . setVisible ( a ) } , _setErrorText : function ( ) { var a = BI . i18nText ( "BI-Basic_Please_Enter_Number_Between" , this . min , this . max ) ; this . labelOne . setErrorText ( a ) , this . labelTwo . setErrorText ( a ) } , _getGrayTrackLength : function ( ) { return this . grayTrack . element [ 0 ] . scrollWidth } , _getValueByPercent : function ( a ) { var b = this . calculation . accurateSubtraction ( this . max , this . min ) , c = this . calculation . accurateMultiplication ( b , a ) , d = this . calculation . accurateDivisionTenExponent ( c , 2 ) ; if ( this . precision < 0 ) { var e = BI . parseFloat ( this . calculation . accurateAddition ( d , this . min ) ) , f = Math . round ( this . calculation . accurateDivisionTenExponent ( e , - this . precision ) ) ; return this . calculation . accurateMultiplication ( f , Math . pow ( 10 , - this . precision ) ) } return BI . parseFloat ( this . calculation . accurateAddition ( d , this . min ) . toFixed ( this . precision ) ) } , _getPercentByValue : function ( a ) { return 100 * ( a - this . min ) / ( this . max - this . min ) } , _setDraggableEnable : function ( a ) { this . sliderOne . setEnable ( a ) , this . sliderTwo . setEnable ( a ) } , _getPrecision : function ( ) { var a = this . calculation . accurateSubtraction ( this . max , this . min ) , b = a . toPrecision ( 4 ) , c = b . indexOf ( "e" ) , d = [ ] ; if ( c > - 1 ) { d = b . split ( "e" ) ; var e = BI . size ( d [ 0 ] . split ( "." ) [ 1 ] ) , f = BI . parseInt ( d [ 1 ] . substring ( 1 ) ) ; return e - f } return d = b . split ( "." ) , d . length > 1 ? d [ 1 ] . length : 0 } , _assertValue : function ( a ) { return a <= this . min ? this . min : a >= this . max ? this . max : a } , _setEnable : function ( a ) { BI . IntervalSlider . superclass . _setEnable . apply ( this , [ a ] ) , a ? this . blueTrack . element . removeClass ( "disabled-blue-track" ) . addClass ( "blue-track" ) : this . blueTrack . element . removeClass ( "blue-track" ) . addClass ( "disabled-blue-track" ) } , getValue : function ( ) { return this . valueOne <= this . valueTwo ? { min : this . valueOne , max : this . valueTwo } : { min : this . valueTwo , max : this . valueOne } } , setMinAndMax : function ( a ) { var b = BI . parseFloat ( a . min ) , c = BI . parseFloat ( a . max ) ; ! isNaN ( b ) && ! isNaN ( c ) && c >= b && ( this . min = b , this . max = c , this . valueOne = b , this . valueTwo = c , this . precision = this . _getPrecision ( ) , this . _setDraggableEnable ( ! 0 ) ) , c === b && this . _setDraggableEnable ( ! 1 ) } , setValue : function ( a ) { var b = this . options , c = BI . parseFloat ( a . min ) , d = BI . parseFloat ( a . max ) ; c = b . digit === ! 1 ? c : c . toFixed ( b . digit ) , d = b . digit === ! 1 ? d : d . toFixed ( b . digit ) , isNaN ( c ) || isNaN ( d ) || ( this . _checkValidation ( c ) && ( this . valueOne = this . valueOne <= this . valueTwo ? c : d ) , this . _checkValidation ( d ) && ( this . valueTwo = this . valueOne <= this . valueTwo ? d : c ) , c < this . min && ( this . valueOne = this . min ) , d > this . max && ( this . valueTwo = this . max ) ) } , reset : function ( ) { this . _setVisible ( ! 1 ) , this . enable = ! 1 , this . valueOne = "" , this . valueTwo = "" , this . min = NaN , this . max = NaN , this . _setBlueTrackWidth ( 0 ) } , populate : function ( ) { isNaN ( this . min ) || isNaN ( this . max ) || ( this . enable = ! 0 , this . _setVisible ( ! 0 ) , this . _setErrorText ( ) , ( BI . isNumeric ( this . valueOne ) || BI . isNotEmptyString ( this . valueOne ) ) &
cls : BI . contains ( c , a ) ? "" : "base-line-conn-background" , width : 12 , height : b . height } ) } ) , e . push ( this . node ) , BI . createWidget ( { type : "bi.td" , element : this , columnSize : BI . makeArray ( b . layer , 12 ) , items : [ e ] } ) } , 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 . MultiLayerSelectTreePlusGroupNode . 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 . MultiLayerSelectTreePlusGroupNode . superclass . setOpened . apply ( this , arguments ) , this . node . setOpened ( a ) } } ) , BI . shortcut ( "bi.multilayer_select_tree_plus_group_node" , BI . MultiLayerSelectTreePlusGroupNode ) , 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 . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . popup . on ( BI . MultiLayerSingleTreePopup . EVENT _CHANGE , function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . combo . hideView ( ) , a . fireEvent ( BI . MultiLayerSingleTreeCombo . EVENT _CHANGE ) } ) } , setValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , this . trigger . setValue ( a ) , this . popup . setValue ( a ) } , getValue : function ( ) { return this . popup . getValue ( ) } , populate : function ( a ) { this . combo . populate ( a ) } } ) , BI . MultiLayerSingleTreeCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multilayer_single_tree_combo" , BI . MultiLayerSingleTreeCombo ) , BI . MultiLayerSingleLevelTree = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiLayerSingleLevelTree . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multilayer-single-level-tree" , isDefaultInit : ! 1 , items : [ ] , itemsCreator : BI . emptyFn , chooseType : BI . Selection . Single , scrollable : ! 0 } ) } , _init : function ( ) { BI . MultiLayerSingleLevelTree . superclass . _init . apply ( this , arguments ) , this . initTree ( this . options . items ) } , _formatItems : function ( a , b , c ) { var d = this ; return BI . each ( a , function ( e , f ) { var g = { } ; f . layer = b , BI . isKey ( f . id ) || ( f . id = BI . UUID ( ) ) , g . pNode = c , f . isParent === ! 0 || f . parent === ! 0 || BI . isNotEmptyArray ( f . children ) ? ( g . type = "bi.multilayer_single_tree_mid_plus_group_node" , e === a . length - 1 && ( g . type = "bi.multilayer_single_tree_last_plus_group_node" , g . isLastNode = ! 0 ) , 0 !== e || c || ( g . type = "bi.multilayer_single_tree_first_plus_group_node" ) , 0 !== e || e !== a . length - 1 || c || ( g . type = "bi.multilayer_single_tree_plus_group_node" ) , BI . defaults ( f , g ) , d . _formatItems ( f . children , b + 1 , f ) ) : ( g . type = "bi.multilayer_single_tree_mid_tree_leaf_item" , 0 !== e || c || ( g . type = "bi.multilayer_single_tree_first_tree_leaf_item" ) , e === a . length - 1 && ( g . type = "bi.multilayer_single_tree_last_tree_leaf_item" ) , BI . defaults ( f , g ) ) } ) , a } , _assertId : function ( a ) { BI . each ( a , function ( a , b ) { b . id = b . id || BI . UUID ( ) } ) } , initTree : function ( a ) { var b = this , c = this . options ; this . empty ( ) , this . _assertId ( a ) , this . tree = BI . createWidget ( { type : "bi.custom_tree" , cls : "tree-view display-table" , expander : { isDefaultInit : c . isDefaultInit , el : { } , popup : { type : "bi.custom_tree" } } , items : this . _formatItems ( BI . Tree . transformToTreeFormat ( a ) , 0 ) , value : c . value , itemsCreator : function ( a , b ) { c . itemsCreator ( a , function ( a ) { b ( BI . Tree . transformToTreeFormat ( a ) , 0 ) } ) } , el : { type : "bi.button_tree" , chooseType : c . chooseType , layouts : [ { type : "bi.vertical" } ] } } ) , this . tree . on ( BI . Controller . E
} , _joinKeywords : function ( a , b ) { function c ( c ) { var e = d . _makeMap ( c ) ; BI . each ( a , function ( a , b ) { BI . isNotNull ( e [ b ] ) && ( d . storeValue . type === BI . Selection . Multi ? BI . pushDistinct ( d . storeValue . value , b ) : BI . remove ( d . storeValue . value , b ) ) } ) , d . _adjust ( b ) } var d = this , e = this . options ; this . _assertValue ( this . storeValue ) , this . requesting = ! 0 , e . itemsCreator ( { type : BI . MultiSelectInsertCombo . REQ _GET _ALL _DATA , 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 , c . storeValue . assist && c . storeValue . assist . push ( g [ b ] ) , 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 ] ] ) && ( c . storeValue . assist && c . storeValue . assist . push ( h [ e [ a ] ] ) , delete h [ e [ a ] ] ) , BI . isNull ( i [ e [ a ] ] ) && ( BI . remove ( c . storeValue . assist , b ) , 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 ) , BI . remove ( c . storeValue . assist , b ) , d [ b ] = b ) } ) ; var e = ! 1 ; return BI . each ( a . assist , function ( a , b ) { BI . isNotNull ( d [ b ] ) && ( e = ! 0 , c . storeValue . assist && c . storeValue . assist . push ( d [ b ] ) , 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 . type === BI . Selection . All ? BI . remove ( a . storeValue . value , a . _startValue ) : BI . pushDistinct ( a . storeValue . value , 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 : 25 } } , 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 . tr
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.multi_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 ( ) ) } , isAllSelected : function ( ) { return this . loader . isAllSelected ( ) } , 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 . 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 , tipType : b . tipType , warningTitle : b . warningTitle } ) , 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 ) } , setTipType : function ( a ) { this . editor . setTipType ( a ) } , getValue : function ( ) { var a = this . editor . getState ( ) ; return BI . is
type : "bi.multi_select_tree_popup" , itemsCreator : b . itemsCreator } ) , this . adapter . on ( BI . MultiSelectTreePopup . EVENT _CHANGE , function ( ) { a . searcher . isSearching ( ) ? a . storeValue = { value : a . searcherPane . getValue ( ) } : a . storeValue = { value : a . adapter . getValue ( ) } , a . setSelectedValue ( a . storeValue . value ) , a . fireEvent ( BI . MultiSelectTree . EVENT _CHANGE ) } ) , this . searcherPane = BI . createWidget ( { type : "bi.multi_tree_search_pane" , cls : "bi-border-left bi-border-right bi-border-bottom" , keywordGetter : function ( ) { return a . searcher . getKeyword ( ) } , itemsCreator : function ( c , d ) { c . keyword = a . searcher . getKeyword ( ) , b . itemsCreator ( c , d ) } } ) , this . searcherPane . setVisible ( ! 1 ) , this . searcher = BI . createWidget ( { type : "bi.searcher" , isAutoSearch : ! 1 , isAutoSync : ! 1 , onSearch : function ( b , c ) { c ( { keyword : a . searcher . getKeyword ( ) } ) } , adapter : this . adapter , popup : this . searcherPane , masker : ! 1 , listeners : [ { eventName : BI . Searcher . EVENT _START , action : function ( ) { a . _showSearcherPane ( ) } } , { eventName : BI . Searcher . EVENT _STOP , action : function ( ) { a . _showAdapter ( ) , BI . nextTick ( function ( ) { a . adapter . populate ( ) } ) } } , { eventName : BI . Searcher . EVENT _CHANGE , action : function ( ) { a . searcher . isSearching ( ) ? a . storeValue = { value : a . searcherPane . getValue ( ) } : a . storeValue = { value : a . adapter . getValue ( ) } , a . setSelectedValue ( a . storeValue . value ) , a . fireEvent ( BI . MultiSelectTree . EVENT _CHANGE ) } } , { eventName : BI . Searcher . EVENT _PAUSE , action : function ( ) { a . _showAdapter ( ) } } ] } ) , BI . createWidget ( { type : "bi.vtape" , element : this , items : [ { el : this . searcher , height : this . _constant . EDITOR _HEIGHT } , { el : this . adapter , height : "fill" } ] } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . searcherPane , top : this . _constant . EDITOR _HEIGHT , bottom : 0 , left : 0 , right : 0 } ] } ) } , _showAdapter : function ( ) { this . adapter . setVisible ( ! 0 ) , this . searcherPane . setVisible ( ! 1 ) } , _showSearcherPane : function ( ) { this . searcherPane . setVisible ( ! 0 ) , this . adapter . setVisible ( ! 1 ) } , 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 , el : { type : "bi.display_tree" } } ) } , _init : function ( ) { BI . MultiTreeCheckPane . superclass . _init . apply ( this , arguments ) ; var
errorText : b . errorText } ) , this . editor . on ( BI . TextEditor . EVENT _CHANGE , function ( ) { b . value = BI . parseFloat ( this . getValue ( ) ) , a . fireEvent ( BI . NumberEditor . EVENT _CHANGE ) } ) , this . editor . on ( BI . TextEditor . EVENT _CONFIRM , function ( ) { this . setValue ( BI . parseFloat ( this . getValue ( ) ) ) , a . fireEvent ( BI . NumberEditor . EVENT _CONFIRM ) } ) , this . topBtn = BI . createWidget ( { type : "bi.icon_button" , forceNotSelected : ! 0 , trigger : "lclick," , cls : "add-up-font top-button bi-border-left bi-list-item-active2 icon-size-12" } ) , this . topBtn . on ( BI . IconButton . EVENT _CHANGE , function ( ) { a . _finetuning ( b . step ) , a . fireEvent ( BI . NumberEditor . EVENT _CHANGE ) , a . fireEvent ( BI . NumberEditor . EVENT _CONFIRM ) } ) , this . bottomBtn = BI . createWidget ( { type : "bi.icon_button" , trigger : "lclick," , forceNotSelected : ! 0 , cls : "minus-down-font bottom-button bi-border-left bi-list-item-active2 icon-size-12" } ) , this . bottomBtn . on ( BI . IconButton . EVENT _CHANGE , function ( ) { a . _finetuning ( - b . step ) , a . fireEvent ( BI . NumberEditor . EVENT _CHANGE ) , a . fireEvent ( BI . NumberEditor . EVENT _CONFIRM ) } ) , BI . createWidget ( { type : "bi.htape" , height : b . height - 2 , element : this , items : [ this . editor , { el : { type : "bi.grid" , columns : 1 , rows : 2 , items : [ { column : 0 , row : 0 , el : this . topBtn } , { column : 0 , row : 1 , el : this . bottomBtn } ] } , width : 23 } ] } ) } , focus : function ( ) { this . editor . focus ( ) } , isEditing : function ( ) { return this . editor . isEditing ( ) } , _finetuning : function ( a ) { var b = BI . parseFloat ( this . getValue ( ) ) ; this . setValue ( BI . add ( b , a ) ) } , setUpEnable : function ( a ) { this . topBtn . setEnable ( ! ! a ) } , setDownEnable : function ( a ) { this . bottomBtn . setEnable ( ! ! a ) } , getValue : function ( ) { return this . options . value } , setValue : function ( a ) { var b = this . options ; b . value = a , this . editor . setValue ( b . valueFormatter ( a ) ) } } ) , BI . NumberEditor . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . NumberEditor . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.number_editor" , BI . NumberEditor ) , BI . NumberInterval = BI . inherit ( BI . Single , { constants : { typeError : "typeBubble" , numberError : "numberBubble" , signalError : "signalBubble" , editorWidth : 114 , columns : 5 , width : 24 , rows : 1 , numberErrorCls : "number-error" , border : 1 , less : 0 , less _equal : 1 , numTip : "" , adjustYOffset : 2 } , _defaultConfig : function ( ) { var a = BI . NumberInterval . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { extraCls : "bi-number-interval" , height : 24 , validation : "valid" , closeMin : ! 0 } ) } , _init : function ( ) { var a = this , b = this . constants , c = this . options ; BI . NumberInterval . superclass . _init . apply ( this , arguments ) , this . smallEditor = BI . createWidget ( { type : "bi.number_interval_single_editor" , height : c . height - 2 , watermark : BI . i18nText ( "BI-Basic_Unrestricted" ) , allowBlank : ! 0 , value : c . min , level : "warning" , tipType : "success" , title : function ( ) { return a . smallEditor && a . smallEditor . getValue ( ) } , quitChecker : function ( ) { return ! 1 } , validationChecker : function ( c ) { return ! ! BI . isNumeric ( c ) || ( a . smallEditorBubbleType = b . typeError , ! 1 ) } , cls : "number-interval-small-editor bi-border" } ) , this . smallTip = BI . createWidget ( { type : "bi.label" , text : c . numTip , height : c . height - 2 , invisible : ! 0 } ) , BI . createWidget ( { type : "bi.absolute" , element : this . smallEditor . element , items : [ { el : this . smallTip , top : 0 , right : 5 } ] } ) , this . bigEditor = BI . createWidget ( { type : "bi.number_interval_single_editor" , height : c . height - 2 , watermark : BI . i18nText ( "BI-Basic_Unrestricted" ) , allowBlank : ! 0 , value : c . max , level : "warning" , tipType : "success" , title : function ( ) { return a . bigEditor && a . bigEditor . getValue ( ) } , quitChecker : function ( ) { return ! 1 } , validationChecker : function ( c ) { return ! ! BI . isNumeric ( c ) || ( a . bigEditorBubbleType = b . typeError , ! 1 ) } , cls : "number-interval-big-editor bi-border" } ) , this . bigTip = BI . createWidget ( { type : "bi.label" , text : c . numTip , height : c . height - 2 , invisible : ! 0 } ) , BI . createWidget ( { type : "bi.absolute" , element : this . bigEditor . element , items : [ { el : this . bigTip , top : 0 , right : 5 } ] } ) , this . smallCombo = BI . createWidget ( { type : "bi.icon_combo" , cls : "number-interval-small-combo bi-border-top bi-border-bottom bi-border-right" , height : c . height - 2 , items : [ { text : "(" + BI . i18nText ( "BI-Less_Than" ) + ")" , iconCls : "less-font" , value : 0 } , { text : "(" + BI . i18nText ( "BI-Less_And_Equal" ) + ")" , value : 1 , iconCls : "less-equal-font" } ] } ) , c . closeMin === ! 0 ? this . smallCombo . setValue ( 1 ) : this . smallCombo . setValue ( 0 ) , this . bigCombo = BI . createWidget ( { type : "bi.icon_combo" , cls : " number - interval - big - combo bi - border - top bi - bord
} ) ) , b . itemsCreator ( d , function ( g ) { c = g . hasNext ; var h = [ ] ; if ( 1 === d . times && a . storeValue ) { var i = BI . map ( a . storeValue . value , function ( c , d ) { var e = b . valueFormatter ( d ) || d ; return { text : e , value : d , title : e , selected : a . storeValue . type === BI . Selection . Multi } } ) ; if ( BI . isKey ( a . _startValue ) && ! BI . contains ( a . storeValue . value , a . _startValue ) ) { var j = b . valueFormatter ( f ) || f ; i . unshift ( { text : j , value : f , title : j , selected : ! 0 } ) } h = a . _createItems ( i ) } e ( h . concat ( a . _createItems ( g . items ) ) , g . keyword || "" ) , 1 === d . times && a . storeValue && ( BI . isKey ( f ) && ( a . storeValue . type === BI . Selection . All ? BI . remove ( a . storeValue . value , f ) : BI . pushDistinct ( a . storeValue . value , f ) ) , a . setValue ( a . storeValue ) ) , 1 === d . times && a . _scrollToTop ( ) } ) } , hasNext : function ( ) { return c } , value : this . storeValue } ) , this . button _group . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . button _group . on ( BI . SelectList . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . SearchMultiSelectLoader . EVENT _CHANGE , arguments ) } ) } , _createItems : function ( a ) { return BI . createItems ( a , { type : "bi.multi_select_item" , logic : this . options . logic , cls : "bi-list-item-active" , height : 24 , selected : this . isAllSelected ( ) , iconWrapperWidth : 36 } ) } , _scrollToTop : function ( ) { var a = this ; BI . delay ( function ( ) { a . button _group . element . scrollTop ( 0 ) } , 30 ) } , isAllSelected : function ( ) { return this . button _group . isAllSelected ( ) } , _assertValue : function ( a ) { a || ( a = { } ) , a . type || ( a . type = BI . Selection . Multi ) , a . value || ( a . value = [ ] ) } , setStartValue : function ( a ) { this . _startValue = a } , setValue : function ( a ) { this . storeValue = a || { } , this . _assertValue ( this . storeValue ) , this . button _group . setValue ( this . storeValue ) } , getValue : function ( ) { return this . button _group . getValue ( ) } , getAllButtons : function ( ) { return this . button _group . getAllButtons ( ) } , empty : function ( ) { this . button _group . empty ( ) } , populate : function ( a ) { arguments [ 0 ] = this . _createItems ( a ) , this . button _group . populate . apply ( this . button _group , arguments ) } , resetHeight : function ( a ) { this . button _group . resetHeight ( a ) } , resetWidth : function ( a ) { this . button _group . resetWidth ( a ) } } ) , BI . SearchMultiSelectLoader . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.search_multi_select_loader" , BI . SearchMultiSelectLoader ) , BI . SearchMultiSelectPopupView = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SearchMultiSelectPopupView . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-popup-view" , maxWidth : "auto" , minWidth : 135 , maxHeight : 400 , valueFormatter : BI . emptyFn , itemsCreator : BI . emptyFn , onLoaded : BI . emptyFn } ) } , _init : function ( ) { BI . SearchMultiSelectPopupView . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . loader = BI . createWidget ( { type : "bi.search_multi_select_loader" , itemsCreator : b . itemsCreator , valueFormatter : b . valueFormatter , onLoaded : b . onLoaded , value : b . value } ) , this . popupView = BI . createWidget ( { type : "bi.multi_popup_view" , stopPropagation : ! 1 , maxWidth : b . maxWidth , minWidth : b . minWidth , maxHeight : b . maxHeight , element : this , buttons : [ BI . i18nText ( "BI-Basic_Clears" ) , BI . i18nText ( "BI-Basic_Sure" ) ] , el : this . loader , value : b . value } ) , this . popupView . on ( BI . MultiPopupView . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . SearchMultiSelectPopupView . EVENT _CHANGE ) } ) , this . popupView . on ( BI . MultiPopupView . EVENT _CLICK _TOOLBAR _BUTTON , function ( b ) { switch ( b ) { case 0 : a . fireEvent ( BI . SearchMultiSelectPopupView . EVENT _CLICK _CLEAR ) ; break ; case 1 : a . fireEvent ( BI . SearchMultiSelectPopupView . EVENT _CLICK _CONFIRM ) } } ) } , isAllSelected : function ( ) { return this . loader . isAllSelected ( ) } , setStartValue : function ( a ) { this . loader . setStartValue ( a ) } , setValue : function ( a ) { this . popupView . setValue ( a ) } , getValue : function ( ) { return this . popupView . getValue ( ) } , populate : function ( a ) { this . popupView . populate . apply ( this . popupView , arguments ) } , resetHeight : function ( a ) { this . popupView . resetHeight ( a ) } , resetWidth : function ( a ) { this . popupView . resetWidth ( a ) } } ) , BI . SearchMultiSelectPopupView . EVENT _CHANGE = "EVENT_CHANGE" , BI . SearchMultiSelectPopupView . EVENT _CLICK _CONFIRM = "EVENT_CLICK_CONFIRM" , BI . SearchMultiSelectPopupView . EVENT _CLICK _CLEAR = "EVENT_CLICK_CLEAR" , BI . shortcut ( "bi.search_multi_select_popup_view" , BI . SearchMultiSelectPopupView ) , BI . SearchMultiSelectSearcher = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend (
} , 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 _HIDEVIEW , function ( ) { a . trigger . stopEditing ( ) , a . requesting === ! 0 ? a . wants2Quit = ! 0 : a . fireEvent ( BI . SingleSelectInsertCombo . EVENT _CONFIRM ) } ) ; var d = BI . createWidget ( { type : "bi.trigger_icon_button" , width : b . height , height : b . height , cls : "single-select-trigger-icon-button" } ) ; d . on ( BI . TriggerIconButton . EVENT _CHANGE , function ( ) { a . combo . isViewVisible ( ) ? a . combo . hideView ( ) : a . combo . showView ( ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . combo , left : 0 , right : 0 , top : 0 , bottom : 0 } , { el : d , right : 0 , top : 0 , bottom : 0 } ] } ) } , _defaultState : function ( ) { this . trigger . stopEditing ( ) , this . combo . hideView ( ) } , _assertValue : function ( a ) { } , _makeMap : function ( a ) { return BI . makeObject ( a || [ ] ) } , _joinKeywords : function ( a , b ) { function c ( c ) { var e = d . _makeMap ( c ) ; BI . each ( a , function ( a , b ) { BI . isNotNull ( e [ b ] ) && BI . remove ( d . storeValue . value , b ) } ) , d . _adjust ( b ) } var d = this , e = this . options ; this . _assertValue ( this . storeValue ) , this . requesting = ! 0 , e . itemsCreator ( { type : BI . SingleSelectInsertCombo . REQ _GET _ALL _DATA , keywords : a } , function ( a ) { var b = BI . map ( a . items , "value" ) ; c ( b ) } ) } , _adjust : function ( a ) { function b ( ) { c . wants2Quit === ! 0 && ( c . fireEvent ( BI . SingleSelectInsertCombo . EVENT _CONFIRM ) , c . wants2Quit = ! 1 ) , c . requesting = ! 1 } var c = this ; this . options ; b ( ) , a ( ) } , _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 this . storeValue } , populate : function ( ) { this . combo . populate . apply ( this . combo , arguments ) } } ) , BI . extend ( BI . SingleSelectInsertCombo , { REQ _GET _DATA _LENGTH : 0 , REQ _GET _ALL _DATA : - 1 } ) , BI . SingleSelectInsertCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . shortcut ( "bi.single_select_insert_combo" , BI . SingleSelectInsertCombo ) , BI . SingleSelectComboItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectComboItem . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-single-select-radio-item" , logic : { dynamic : ! 1 } , height : 24 } ) } , _init : function ( ) { BI . SingleSelectComboItem . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . radio = BI . createWidget ( { type : "bi.radio" } ) , this . text = BI . createWidget ( { type : "bi.label" , cls : "list-item-text" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : a . height , height : a . height , hgap : a . hgap , text : a . text , keyword : a . keyword , value : a . value , py : a . py } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "horizontal" , BI . extend ( a . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "left" , { type : "bi.center_adapt" , items : [ this . radio ] , width : 26 } , this . text ) } ) ) ) ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . SingleSelectComboItem . superclass . doClick . apply ( this , arguments ) , this . radio . setSelected ( this . isSelected ( ) ) } , setSelected : function ( a ) { BI . SingleSelectComboItem . superclass . setSelected . apply ( this , arguments ) , this . radio . setSelected ( a ) } } ) , BI . shortcut ( "bi.single_select_combo_item" , BI . SingleSelectComboItem ) , BI . SingleSelectList = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectList . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-select-list" , direction : BI . Direction . Top , logic : { dynamic : ! 0 } , items : [ ] , itemsCreator : BI . emptyFn , hasNext : BI . emptyFn , onLoaded : BI . emptyFn , el : { type : "bi.list_pane" } , allowNoSelect : ! 1 } ) } , _init : function ( ) { BI . SingleSelectList . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . list = BI . createWidget ( b . el , { type : "bi.list_pane" , items : b . items , itemsCreator : function ( c , d ) { 1 === c . times && a . toolbar && a . toolbar . setVisible ( ! 1 ) , b . itemsCreator ( c , function ( b ) { d . apply ( a , arguments ) , 1 === c . times && ( a . toolbar && a . toolbar . setVisible ( b && b . length > 0 ) , a . toolbar && a . toolbar . setEnable ( b && b . length > 0 ) ) } ) } , onLoaded : b . onLoaded , hasNext : b . hasNext , value : b . value } ) , this . list . on ( BI . Controller . EVENT _CHANGE , function ( b , c , d ) { b === BI . Events . CLICK && a . fireEvent ( BI . SingleSelectList . EVENT _
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 + d . unit ) , c . value = m , c . fireEvent ( BI . SingleSliderLabel . 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 . SingleSliderLabel . 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 ) { return BI . isNumeric ( a ) && ! ( BI . isNull ( a ) || a < this . min || a > this . max ) } , _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 ) } , _setEnable : function ( a ) { BI . SingleSliderLabel . superclass . _setEnable . apply ( this , [ a ] ) , a ? this . blueTrack . element . removeClass ( "disabled-blue-track" ) . addClass ( "blue-track" ) : this . blueTrack . element . removeClass ( "blue-track" ) . addClass ( "disabled-blue-track" ) } , getValue : function ( ) { return this . value } , setValue : function ( 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 ) ) } , setMinAndMax : function ( a ) { var b = BI . parseFloat ( a . min ) , c = BI . parseFloat ( a . max ) ; ! isNaN ( b ) && ! isNaN ( c ) && c > b && ( this . min = b , this . max = c ) } , reset : function ( ) { this . _setVisible ( ! 1 ) , this . enable = ! 1 , this . value = "" , this . min = 0 , this . max = 0 , this . _setBlueTrack ( 0 ) } , populate : function ( ) { var a = this . options ; isNaN ( this . min ) || isNaN ( this . max ) || ( this . _setVisible ( ! 0 ) , this . enable = ! 0 , BI . isNumeric ( this . value ) || BI . isNotEmptyString ( this . value ) ? ( this . label . setValue ( this . value + a . unit ) , this . _setAllPosition ( this . _getPercentByValue ( this . value ) ) ) : ( this . label . setValue ( this . max + a . unit ) , this . _setAllPosition ( 100 ) ) ) } } ) , BI . SingleSliderLabel . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.single_slider_label" , BI . SingleSliderLabel ) , BI . SingleSliderNormal = BI . inherit ( BI . Widget , { _constant : { HEIGHT : 28 , SLIDER _WIDTH _HALF : 15 , SLIDER _WIDTH : 30 , SLIDER _HEIGHT : 30 , TRACK _HEIGHT : 24 } , props : { baseCls : "bi-single-slider-normal bi-slider-track" , minMax : { min : 0 , max : 100 } } , render : function ( ) { var a = this , b = this . _constant , c = this . _createTrack ( ) ; 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 : b . SLIDER _WIDTH _HALF , height : b . SLIDER _HEIGHT } ) ; return d . element . click ( function ( c ) { if ( a . enable && a . isEnabled ( ) ) { var d = c . clientX - a . element . offset ( ) . left - b . SLIDER _WIDTH _HALF , e = a . track . element [ 0 ] . scrollWidth , f = 0 ; d < 0 && ( f = 0 ) , d > 0 && d < e - b . SLIDER _WIDTH && ( f = 100 * d / a . _getGrayTrackLength ( ) ) , d > e - b . SLIDER _WIDTH && ( f = 100 ) ; var g = BI . parseFloat ( f . toFixed ( 1 ) ) ; a . _setAllPosition ( g ) ; var h = a . _getValueByPercent ( g ) ; a . value = h , a . fireEvent ( BI . SingleSlider . EVENT _CHANGE ) } } ) , { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : c , width : "100%" , height : b . TRACK _HEIGHT } ] } ] , hgap : 7 , height : b . TRACK _HEIGHT } , top : 3 , left : 0 , wid
this . storeValue = b . value , this . trigger = BI . createWidget ( { type : "bi.dynamic_year_trigger" , min : b . min , max : b . max , height : b . height , value : b . value || "" } ) , this . trigger . on ( BI . DynamicYearTrigger . EVENT _FOCUS , function ( ) { a . storeTriggerValue = this . getKey ( ) } ) , this . trigger . on ( BI . DynamicYearTrigger . EVENT _START , function ( ) { a . combo . isViewVisible ( ) && a . combo . hideView ( ) } ) , this . trigger . on ( BI . DynamicYearTrigger . EVENT _STOP , function ( ) { a . combo . showView ( ) } ) , this . trigger . on ( BI . DynamicYearTrigger . EVENT _ERROR , function ( ) { a . combo . isViewVisible ( ) && a . combo . hideView ( ) } ) , this . trigger . on ( BI . DynamicYearTrigger . EVENT _CONFIRM , function ( ) { a . combo . isViewVisible ( ) || ( this . getKey ( ) && this . getKey ( ) !== a . storeTriggerValue ? ( a . storeValue = a . trigger . getValue ( ) , a . setValue ( a . storeValue ) ) : this . getKey ( ) || ( a . storeValue = null , a . setValue ( ) ) , a . _checkDynamicValue ( a . storeValue ) , a . fireEvent ( BI . DynamicYearCombo . EVENT _CONFIRM ) ) } ) , 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_popup" , ref : function ( ) { a . popup = this } , listeners : [ { eventName : BI . DynamicYearPopup . EVENT _CHANGE , action : function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . combo . hideView ( ) , a . fireEvent ( BI . DynamicYearCombo . EVENT _CONFIRM ) } } , { eventName : BI . DynamicYearPopup . BUTTON _CLEAR _EVENT _CHANGE , action : function ( ) { a . setValue ( ) , a . combo . hideView ( ) , a . fireEvent ( BI . DynamicYearCombo . EVENT _CONFIRM ) } } , { eventName : BI . DynamicYearPopup . BUTTON _lABEL _EVENT _CHANGE , action : function ( ) { var b = BI . getDate ( ) ; a . setValue ( { type : BI . DynamicYearCombo . Static , value : { year : b . getFullYear ( ) } } ) , a . combo . hideView ( ) , a . fireEvent ( BI . DynamicDateCombo . EVENT _CONFIRM ) } } , { eventName : BI . DynamicYearPopup . 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 . DynamicYearCombo . 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 . 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" , 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" , 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" , cls : "bi-split-top bi-high-light" , textHeight : b . buttonHeight - 1 , shadow : ! 0 , text : BI . i18nText ( " BI - Bas
ref : function ( ) { a . yearPicker = this } , behaviors : b . behaviors , height : 30 , listeners : [ { eventName : BI . YearPicker . EVENT _CHANGE , action : function ( ) { var b = this . getValue ( ) ; a . setValue ( { year : b , quarter : a . selectedQuarter } ) } } ] } , { type : "bi.button_group" , behaviors : b . behaviors , ref : function ( ) { a . quarter = this } , items : this . _createQuarter ( ) , layouts : [ { type : "bi.vertical" , vgap : 10 } ] , value : b . value , listeners : [ { eventName : BI . ButtonGroup . EVENT _CHANGE , action : function ( ) { a . selectedYear = a . yearPicker . getValue ( ) , a . selectedQuarter = this . getValue ( ) [ 0 ] , a . fireEvent ( BI . StaticYearQuarterCard . EVENT _CHANGE ) } } ] } ] } } , getValue : function ( ) { return { year : this . selectedYear , quarter : this . selectedQuarter } } , setValue : function ( a ) { var b = this . options , c = { } ; if ( c . year = a . year || 0 , c . quarter = a . quarter || 0 , 0 === c . quarter || 0 === c . year || BI . checkDateVoid ( c . year , c . quarter , 1 , b . min , b . max ) [ 0 ] ) { var d = c . year || BI . getDate ( ) . getFullYear ( ) ; this . selectedYear = d , this . selectedQuarter = "" , this . yearPicker . setValue ( d ) , this . quarter . setValue ( ) } else this . selectedYear = BI . parseInt ( c . year ) , this . selectedQuarter = BI . parseInt ( c . quarter ) , this . yearPicker . setValue ( this . selectedYear ) , this . quarter . setValue ( this . selectedQuarter ) } } ) , BI . StaticYearQuarterCard . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.static_year_quarter_card" , BI . StaticYearQuarterCard ) , BI . DynamicYearQuarterCombo = BI . inherit ( BI . Widget , { props : { baseCls : "bi-year-quarter-combo bi-border bi-focus-shadow" , behaviors : { } , min : "1900-01-01" , max : "2099-12-31" , height : 22 } , _init : function ( ) { BI . DynamicYearQuarterCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . storeValue = b . value , a . storeTriggerValue = "" , this . trigger = BI . createWidget ( { type : "bi.dynamic_year_quarter_trigger" , min : b . min , max : b . max , height : b . height , value : b . value || "" } ) , this . trigger . on ( BI . DynamicYearQuarterTrigger . EVENT _KEY _DOWN , function ( ) { a . combo . isViewVisible ( ) && a . combo . hideView ( ) } ) , this . trigger . on ( BI . DynamicYearQuarterTrigger . EVENT _START , function ( ) { a . combo . isViewVisible ( ) && a . combo . hideView ( ) } ) , this . trigger . on ( BI . DynamicYearQuarterTrigger . EVENT _STOP , function ( ) { a . combo . showView ( ) } ) , this . trigger . on ( BI . DynamicYearQuarterTrigger . EVENT _ERROR , function ( ) { a . combo . isViewVisible ( ) && a . combo . hideView ( ) } ) , this . trigger . on ( BI . DynamicYearQuarterTrigger . EVENT _CONFIRM , function ( ) { 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 : BI . getQuarter ( b ) } } ) , 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 . val
_defaultConfig : function ( ) { return BI . extend ( BI . TreeValueChooserPane . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-tree-value-chooser-pane" , items : null , itemsCreator : BI . emptyFn } ) } , _init : function ( ) { BI . TreeValueChooserPane . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . pane = BI . createWidget ( { type : "bi.multi_select_tree" , element : this , itemsCreator : BI . bind ( this . _itemsCreator , this ) } ) , this . pane . on ( BI . MultiSelectTree . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . TreeValueChooserPane . EVENT _CHANGE ) } ) , BI . isNotNull ( b . items ) && ( this . _initData ( b . items ) , this . populate ( ) ) } , setSelectedValue : function ( a ) { this . pane . setSelectedValue ( a ) } , setValue : function ( a ) { this . pane . setValue ( a ) } , getValue : function ( ) { return this . pane . getValue ( ) } , populate : function ( ) { this . pane . populate . apply ( this . pane , arguments ) } } ) , BI . TreeValueChooserPane . EVENT _CHANGE = "TreeValueChooserPane.EVENT_CHANGE" , BI . shortcut ( "bi.tree_value_chooser_pane" , BI . TreeValueChooserPane ) , BI . AbstractValueChooser = BI . inherit ( BI . Widget , { _const : { perPage : 100 } , _defaultConfig : function ( ) { return BI . extend ( BI . AbstractValueChooser . superclass . _defaultConfig . apply ( this , arguments ) , { items : null , itemsCreator : BI . emptyFn , cache : ! 0 } ) } , _valueFormatter : function ( a ) { var b = a ; return BI . isNotNull ( this . items ) && BI . some ( this . items , function ( c , d ) { if ( d . value + "" === a ) return b = d . text , ! 0 } ) , b } , _getItemsByTimes : function ( a , b ) { for ( var c = [ ] , d = ( b - 1 ) * this . _const . perPage ; a [ d ] && d < b * this . _const . perPage ; d ++ ) c . push ( a [ d ] ) ; return c } , _hasNextByTimes : function ( a , b ) { return b * this . _const . perPage < a . length } , _itemsCreator : function ( a , b ) { function c ( c ) { var e = ( a . keywords || [ ] ) . slice ( ) ; if ( BI . each ( e , function ( a , b ) { var d = BI . Func . getSearchResult ( c , b ) ; c = d . match . concat ( d . find ) } ) , a . selectedValues ) { var f = BI . makeObject ( a . selectedValues , ! 0 ) ; c = BI . filter ( c , function ( a , b ) { return ! f [ b . value ] } ) } return a . type === BI . MultiSelectCombo . REQ _GET _ALL _DATA ? void b ( { items : c } ) : a . type === BI . MultiSelectCombo . REQ _GET _DATA _LENGTH ? void b ( { count : c . length } ) : void b ( { items : d . _getItemsByTimes ( c , a . times ) , hasNext : d . _hasNextByTimes ( c , a . times ) } ) } var d = this , e = this . options ; e . cache && this . items ? c ( this . items ) : e . itemsCreator ( { } , function ( a ) { d . items = a , c ( a ) } ) } } ) , BI . ValueChooserCombo = BI . inherit ( BI . AbstractValueChooser , { _defaultConfig : function ( ) { return BI . extend ( BI . ValueChooserCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-value-chooser-combo" , width : 200 , height : 24 , items : null , itemsCreator : BI . emptyFn , cache : ! 0 } ) } , _init : function ( ) { BI . ValueChooserCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; BI . isNotNull ( b . items ) && ( this . items = b . items ) , this . combo = BI . createWidget ( { type : "bi.multi_select_combo" , element : this , text : b . text , itemsCreator : BI . bind ( this . _itemsCreator , this ) , valueFormatter : BI . bind ( this . _valueFormatter , this ) , width : b . width , height : b . height } ) , this . combo . on ( BI . MultiSelectCombo . EVENT _CONFIRM , function ( ) { a . fireEvent ( BI . ValueChooserCombo . EVENT _CONFIRM ) } ) } , setValue : function ( a ) { this . combo . setValue ( a ) } , getValue : function ( ) { var a = this . combo . getValue ( ) || { } ; return { type : a . type , value : a . value } } , populate : function ( a ) { this . items = a , this . combo . populate . apply ( this , arguments ) } } ) , BI . ValueChooserCombo . EVENT _CONFIRM = "ValueChooserCombo.EVENT_CONFIRM" , BI . shortcut ( "bi.value_chooser_combo" , BI . ValueChooserCombo ) , BI . ValueChooserPane = BI . inherit ( BI . AbstractValueChooser , { _defaultConfig : function ( ) { return BI . extend ( BI . ValueChooserPane . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-value-chooser-pane" , items : null , itemsCreator : BI . emptyFn , cache : ! 0 } ) } , _init : function ( ) { BI . ValueChooserPane . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . list = BI . createWidget ( { type : "bi.multi_select_list" , element : this , itemsCreator : BI . bind ( this . _itemsCreator , this ) , valueFormatter : BI . bind ( this . _valueFormatter , this ) } ) , this . list . on ( BI . MultiSelectList . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . ValueChooserPane . EVENT _CHANGE ) } ) , BI . isNotNull ( b . items ) && ( this . items = b . items , this . list . populate ( ) ) } , setValue : function ( a ) { this . list . setValue ( a ) } , getValue : function ( ) { var a = this . list . getValue ( ) || { } ; return { type : a . type , value : a . value } } , populate : function ( a ) { a && ( this . items = a ) , this . list . populate . apply ( this . list , arg