/*! fineui 2019-10-19 16:29:03 */
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 ) && ( ti ( a ) || "string" == typeof a || "function" == typeof a . splice || ui ( a ) || zi ( a ) || si ( 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 || ! ti ( 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
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 ( a ) { this . _constructor ( a ) } , _ . extend ( BI . OB . prototype , { props : { } , init : null , destroyed : null , _constructor : function ( a ) { this . _initProps ( a ) , this . _init ( ) , this . _initRef ( ) } , _defaultConfig : function ( a ) { return { } } , _initProps : function ( b ) { var c = this . props ; BI . isFunction ( this . props ) && ( c = this . props ( b ) ) , this . options = a ( this . _defaultConfig ( b ) , c , b ) } , _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 : "" , css : null } ) } , _constructor : function ( ) { } , 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 . _ _asking = ! 1 , this . beforeCreate && this . beforeCreate ( ) , this . _initElement ( ) , this . _initEffects ( ) , this . created && this . created ( ) } , _initRoot : function ( ) { var a = this . options ; this . widgetName = a . widgetName || BI . uniqueId ( "widget" ) , this . _isRoot = a . root , BI . isWidget ( a . element ) ? ( a . element instanceof BI . Widget ? ( this . _parent = a . element , this . _parent . addWidget ( this . widgetName , this ) ) : this . _isRoot = ! 0 , this . element = this . options . element . element ) : a . element ? ( this . element = BI . Widget . _renderEngine . createElement ( this ) , this . _isRoot = ! 0 ) : this . element = BI . Widget . _renderEngine . createElement ( this ) , this . element . _isWidget = ! 0 , ( a . _baseCls || a . baseCls || a . extraCls || a . cls ) && this . element . addClass ( ( a . _baseCls || "" ) + " " + ( a . baseCls || "" ) + " " + ( a . extraCls || "" ) + " " + ( a . cls || "" ) ) , a . attributes && this . element . attr ( a . attributes ) , a . data && this . element . data ( a . data ) , a . css && this . element . css ( a . css ) , this . _children = { } } , _initElementWidth : function ( ) { var a = this . options ; BI . isWidthOrHeight ( a . width ) && this . element . css ( "width" , a . width ) } , _initElementHeight : function ( ) { var a = this . options ; BI . isWidthOrHeight ( a . height ) && this . element . css ( "height" , a . height ) } , _initVisual : function ( ) { var a = this . options ; a . invisible && this . element . css ( "display" , "none" ) } , _initEffects : function ( ) { var a = this . options ; ( a . disabled || a . invalid ) && ( this . options . disabled && this . setEnable ( ! 1 ) , this . options . invalid && this . setValid ( ! 1 ) ) } , _initState : function ( ) { this . _isMounted = ! 1 } , _initElement : function ( ) { var
return Math . round ( e * ( d - a ) ) } , _safeOffsetToOffset : function ( a , b ) { var c = this . _cellSizeAndPositionManager . getTotalSize ( ) , d = this . getTotalSize ( ) ; if ( c === d ) return b ; var e = this . _getOffsetPercentage ( a , b , d ) ; return Math . round ( e * ( c - a ) ) } } , ! function ( ) { var a = " YDYQSXMWZSSXJBYMGCCZQPSSQBYCDSCDQLDYLYBSSJGYZZJJFKCCLZDHWDWZJLJPFYYNWJJTMYHZWZHFLZPPQHGSCYYYNJQYXXGJHHSDSJNKKTMOMLCRXYPSNQSECCQZGGLLYJLMYZZSECYKYYHQWJSSGGYXYZYJWWKDJHYCHMYXJTLXJYQBYXZLDWRDJRWYSRLDZJPCBZJJBRCFTLECZSTZFXXZHTRQHYBDLYCZSSYMMRFMYQZPWWJJYFCRWFDFZQPYDDWYXKYJAWJFFXYPSFTZYHHYZYSWCJYXSCLCXXWZZXNBGNNXBXLZSZSBSGPYSYZDHMDZBQBZCWDZZYYTZHBTSYYBZGNTNXQYWQSKBPHHLXGYBFMJEBJHHGQTJCYSXSTKZHLYCKGLYSMZXYALMELDCCXGZYRJXSDLTYZCQKCNNJWHJTZZCQLJSTSTBNXBTYXCEQXGKWJYFLZQLYHYXSPSFXLMPBYSXXXYDJCZYLLLSJXFHJXPJBTFFYABYXBHZZBJYZLWLCZGGBTSSMDTJZXPTHYQTGLJSCQFZKJZJQNLZWLSLHDZBWJNCJZYZSQQYCQYRZCJJWYBRTWPYFTWEXCSKDZCTBZHYZZYYJXZCFFZZMJYXXSDZZOTTBZLQWFCKSZSXFYRLNYJMBDTHJXSQQCCSBXYYTSYFBXDZTGBCNSLCYZZPSAZYZZSCJCSHZQYDXLBPJLLMQXTYDZXSQJTZPXLCGLQTZWJBHCTSYJSFXYEJJTLBGXSXJMYJQQPFZASYJNTYDJXKJCDJSZCBARTDCLYJQMWNQNCLLLKBYBZZSYHQQLTWLCCXTXLLZNTYLNEWYZYXCZXXGRKRMTCNDNJTSYYSSDQDGHSDBJGHRWRQLYBGLXHLGTGXBQJDZPYJSJYJCTMRNYMGRZJCZGJMZMGXMPRYXKJNYMSGMZJYMKMFXMLDTGFBHCJHKYLPFMDXLQJJSMTQGZSJLQDLDGJYCALCMZCSDJLLNXDJFFFFJCZFMZFFPFKHKGDPSXKTACJDHHZDDCRRCFQYJKQCCWJDXHWJLYLLZGCFCQDSMLZPBJJPLSBCJGGDCKKDEZSQCCKJGCGKDJTJDLZYCXKLQSCGJCLTFPCQCZGWPJDQYZJJBYJHSJDZWGFSJGZKQCCZLLPSPKJGQJHZZLJPLGJGJJTHJJYJZCZMLZLYQBGJWMLJKXZDZNJQSYZMLJLLJKYWXMKJLHSKJGBMCLYYMKXJQLBMLLKMDXXKWYXYSLMLPSJQQJQXYXFJTJDXMXXLLCXQBSYJBGWYMBGGBCYXPJYGPEPFGDJGBHBNSQJYZJKJKHXQFGQZKFHYGKHDKLLSDJQXPQYKYBNQSXQNSZSWHBSXWHXWBZZXDMNSJBSBKBBZKLYLXGWXDRWYQZMYWSJQLCJXXJXKJEQXSCYETLZHLYYYSDZPAQYZCMTLSHTZCFYZYXYLJSDCJQAGYSLCQLYYYSHMRQQKLDXZSCSSSYDYCJYSFSJBFRSSZQSBXXPXJYSDRCKGJLGDKZJZBDKTCSYQPYHSTCLDJDHMXMCGXYZHJDDTMHLTXZXYLYMOHYJCLTYFBQQXPFBDFHHTKSQHZYYWCNXXCRWHOWGYJLEGWDQCWGFJYCSNTMYTOLBYGWQWESJPWNMLRYDZSZTXYQPZGCWXHNGPYXSHMYQJXZTDPPBFYHZHTJYFDZWKGKZBLDNTSXHQEEGZZYLZMMZYJZGXZXKHKSTXNXXWYLYAPSTHXDWHZYMPXAGKYDXBHNHXKDPJNMYHYLPMGOCSLNZHKXXLPZZLBMLSFBHHGYGYYGGBHSCYAQTYWLXTZQCEZYDQDQMMHTKLLSZHLSJZWFYHQSWSCWLQAZYNYTLSXTHAZNKZZSZZLAXXZWWCTGQQTDDYZTCCHYQZFLXPSLZYGPZSZNGLNDQTBDLXGTCTAJDKYWNSYZLJHHZZCWNYYZYWMHYCHHYXHJKZWSXHZYXLYSKQYSPSLYZWMYPPKBYGLKZHTYXAXQSYSHXASMCHKDSCRSWJPWXSGZJLWWSCHSJHSQNHCSEGNDAQTBAALZZMSSTDQJCJKTSCJAXPLGGXHHGXXZCXPDMMHLDGTYBYSJMXHMRCPXXJZCKZXSHMLQXXTTHXWZFKHCCZDYTCJYXQHLXDHYPJQXYLSYYDZOZJNYXQEZYSQYAYXWYPDGXDDXSPPYZNDLTWRHXYDXZZJHTCXMCZLHPYYYYMHZLLHNXMYLLLMDCPPXHMXDKYCYRDLTXJCHHZZXZLCCLYLNZSHZJZZLNNRLWHYQSNJHXYNTTTKYJPYCHHYEGKCTTWLGQRLGGTGTYGYHPYHYLQYQGCWYQKPYYYTTTTLHYHLLTYTTSPLKYZXGZWGPYDSSZZDQXSKCQNMJJZZBXYQMJRTFFBTKHZKBXLJJKDXJTLBWFZPPTKQTZTGPDGNTPJYFALQMKGXBDCLZFHZCLLLLADPMXDJHLCCLGYHDZFGYDDGCYYFGYDXKSSEBDHYKDKDKHNAXXYBPBYYHXZQGAFFQYJXDMLJCSQZLLPCHBSXGJYNDYBYQSPZWJLZKSDDTACTBXZDYZYPJZQSJNKKTKNJDJGYYPGTLFYQKASDNTCYHBLWDZHBBYDWJRYGKZYHEYYFJMSDTYFZJJHGCXPLXHLDWXXJKYTCYKSSSMTWCTTQZLPBSZDZWZXGZAGYKTYWXLHLSPBCLLOQMMZSSLCMBJCSZZKYDCZJGQQDSMCYTZQQLWZQZXSSFPTTFQMDDZDSHDTDWFHTDYZJYQJQKYPBDJYYXTLJHDRQXXXHAYDHRJLKLYTWHLLRLLRCXYLBWSRSZZSYMKZZHHKYHXKSMDSYDYCJPBZBSQLFCXXXNXKXWYWSDZYQOGGQMMYHCDZTTFJYYBGSTTTYBYKJDHKYXBELHTYPJQNFXFDYKZHQKZBYJTZBXHFDXKDASWTAWAJLDYJSFHBLDNNTNQJTJNCHXFJSRFWHZFMDRYJYJWZPDJKZYJYMPCYZNYNXFBYTFYFWYGDBNZZZDNYTXZEMMQBSQEHXFZMBMFLZZSRXYMJGSXWZJSPRYDJSJGXHJJGLJJYNZZJXHGXKYMLPYYYCXYTWQZSWHWLYRJLPXSLSXMFSWWKLCTNXNYNPSJSZHDZEPTXMYYWXYYSYWLXJQZQXZDCLEEELMCPJPCLWBXSQHFWWTFFJTNQJHJQDXHWLBYZNFJLALKYYJLDXHHYCSTYYWNRJYXYWTRMDRQHWQCMFJDYZMHMYYXJWMYZQZXTLMRSPWWCHAQBXYGZYPXYYRRCLMPYMGKSJSZYSRMYJSNXTPLNBAPPYPYLXYYZKYNLDZYJZCZNNLMZHHARQMPGWQTZMXXMLLHGDZXYHXKYXYCJMFFYYHJFSBSSQLXXNDYCANNMTCJCYPRRNYTYQNYYMBMSXNDLYLYSLJRLXYSXQMLLYZLZJJJKYZZCSFBZXXMSTBJGNXYZHLXNMCWSCYZYFZLXBRNNNYLBNRTGZQYSATSWRYHYJZMZDHZGZDWYBSSCSKXSYHYTXXGCQGXZZSHYXJSCRHMKKBXCZJYJYMKQHZJFNBHMQHYSNJNZYBKNQMCLGQHWLZNZSWXKHLJHYYBQLBFCDSXDLDSPFZPSKJYZWZXZDDXJSMMEGJSCSSMGCLXXKYYYLNYPWWWGYDKZJGGGZGGSYCKNJWNJPCXBJJTQTJWDSSPJXZXNZXUMELPXFSXTLLXCLJXJJLJZXCTPSWXLYDHLYQRWHSYCSQYYBYAYWJJJQFWQCQQCJQGXALDBZZYJGKGXPLTZYFXJLTPADKYQHPMATLCPDCKBMTXYBHKLENXDLEEGQDYMSAWHZMLJTWYGXLYQZLJEEYYBQQFFNLYXRDSCTGJGXYYNKLLYQKCCTLH
a } , a . get = function ( a , b ) { var c = this . _keymap [ a ] ; if ( void 0 !== c ) return c === this . tail ? b ? c : c . value : ( c . newer && ( c === this . head && ( this . head = c . newer ) , c . newer . older = c . older ) , c . older && ( c . older . newer = c . newer ) , c . newer = void 0 , c . older = this . tail , this . tail && ( this . tail . newer = c ) , this . tail = c , b ? c : c . value ) } , a . has = function ( a ) { return null != this . _keymap [ a ] } } ( ) , function ( ) { var a = function ( a ) { return Math . floor ( a / 2 ) } , b = _global . Int32Array || function ( a ) { for ( var b = [ ] , c = a - 1 ; c >= 0 ; -- c ) b [ c ] = 0 ; return b } , c = function ( a ) { for ( var b = 1 ; b < a ; ) b *= 2 ; return b } ; BI . PrefixIntervalTree = function ( a ) { this . _size = a . length , this . _half = c ( this . _size ) , this . _heap = new b ( 2 * this . _half ) ; var d ; for ( d = 0 ; d < this . _size ; ++ d ) this . _heap [ this . _half + d ] = a [ d ] ; for ( d = this . _half - 1 ; d > 0 ; -- d ) this . _heap [ d ] = this . _heap [ 2 * d ] + this . _heap [ 2 * d + 1 ] } , BI . PrefixIntervalTree . prototype = { constructor : BI . PrefixIntervalTree , set : function ( b , c ) { var d = this . _half + b ; for ( this . _heap [ d ] = c , d = a ( d ) ; 0 !== d ; d = a ( d ) ) this . _heap [ d ] = this . _heap [ 2 * d ] + this . _heap [ 2 * d + 1 ] } , get : function ( a ) { var b = this . _half + a ; return this . _heap [ b ] } , getSize : function ( ) { return this . _size } , sumUntil : function ( b ) { if ( 0 === b ) return 0 ; for ( var c = this . _half + b - 1 , d = this . _heap [ c ] ; 1 !== c ; c = a ( c ) ) c % 2 === 1 && ( d += this . _heap [ c - 1 ] ) ; return d } , sumTo : function ( a ) { return this . sumUntil ( a + 1 ) } , sum : function ( a , b ) { return this . sumUntil ( b ) - this . sumUntil ( a ) } , greatestLowerBound : function ( a ) { if ( a < 0 ) return - 1 ; var b = 1 ; if ( this . _heap [ b ] <= a ) return this . _size ; for ( ; b < this . _half ; ) { var c = this . _heap [ 2 * b ] ; a < c ? b = 2 * b : ( b = 2 * b + 1 , a -= c ) } return b - this . _half } , greatestStrictLowerBound : function ( a ) { if ( a <= 0 ) return - 1 ; var b = 1 ; if ( this . _heap [ b ] < a ) return this . _size ; for ( ; b < this . _half ; ) { var c = this . _heap [ 2 * b ] ; a <= c ? b = 2 * b : ( b = 2 * b + 1 , a -= c ) } return b - this . _half } , leastUpperBound : function ( a ) { return this . greatestStrictLowerBound ( a ) + 1 } , leastStrictUpperBound : function ( a ) { return this . greatestLowerBound ( a ) + 1 } } , BI . PrefixIntervalTree . uniform = function ( a , b ) { for ( var c = [ ] , d = a - 1 ; d >= 0 ; -- d ) c [ d ] = b ; return new BI . PrefixIntervalTree ( c ) } , BI . PrefixIntervalTree . empty = function ( a ) { return BI . PrefixIntervalTree . uniform ( a , 0 ) } } ( ) , ! function ( ) { BI . Queue = function ( a ) { this . capacity = a , this . array = [ ] } , BI . Queue . prototype = { constructor : BI . Queue , contains : function ( a ) { return BI . contains ( this . array , a ) } , indexOf : function ( a ) { return BI . contains ( this . array , a ) } , getElementByIndex : function ( a ) { return this . array [ a ] } , push : function ( a ) { this . array . push ( a ) , this . capacity && this . array . length > this . capacity && this . array . shift ( ) } , pop : function ( ) { this . array . pop ( ) } , shift : function ( ) { this . array . shift ( ) } , unshift : function ( a ) { this . array . unshift ( a ) , this . capacity && this . array . length > this . capacity && this . array . pop ( ) } , remove : function ( a ) { BI . remove ( this . array , a ) } , splice : function ( ) { this . array . splice . apply ( this . array , arguments ) } , slice : function ( ) { this . array . slice . apply ( this . array , arguments ) } , size : function ( ) { return this . array . length } , each : function ( a , b ) { var b = b || window , a = a || null ; if ( null != a && "function" == typeof a ) for ( var c = 0 ; c < this . array . length ; c ++ ) { var d = a . call ( b , c , this . array [ c ] , this . array ) ; if ( 0 == d ) break } } , toArray : function ( ) { return this . array } , fromArray : function ( a ) { var b = this ; BI . each ( a , function ( a , c ) { b . push ( c ) } ) } , clear : function ( ) { this . array . length = 0 } } } ( ) , ! function ( ) { var a = function ( a , b , c , d ) { this . height = a , this . width = b , this . x = c , this . y = d , this . _indexMap = { } , this . _indices = [ ] } ; a . prototype = { constructor : a , addCellIndex : function ( a ) { this . _indexMap [ a ] || ( this . _indexMap [ a ] = ! 0 , this . _indices . push ( a ) ) } , getCellIndices : function ( ) { return this . _indices } } ; var b = 100 ; BI . SectionManager = function ( a ) { this . _sectionSize = a || b , this . _cellMetadata = [ ] , this . _sections = { } } , BI . SectionManager . prototype = { constructor : BI . SectionManager , getCellIndices : function ( a , b , c , d ) { var e = { } ; return BI . each ( this . getSections ( a , b , c , d ) , function ( a , b ) { BI . each ( b . getCellIndices ( ) , function ( a , b ) { e [ b ] = b } ) } ) , BI . map ( BI . keys ( e ) , function ( a , b ) { return e [ b ] } ) } , getCellMetadata : function ( a ) { return this . _cellMetadata [ a ] } , getSections : function ( b , c , d , e ) { for ( var f = Math . floor ( d / this . _sectionSize ) , g = Math . floor ( ( d + c - 1 ) / this . _sectionSize ) , h = Math . floor ( e / this . _sectionSize ) , i = Math . floor ( ( e + b - 1 ) / this . _sectionSize ) , j = [ ] , k = f ; k <= g ; k ++ ) for ( var l = h ; l <= i ; l ++ ) { var m = k + "." + l ; this . _sections [ m ] || ( this . _sections [ m ] = new a ( this . _sectionSize , this . _s
_defaultConfig : function ( ) { return BI . extend ( BI . RedMarkBehavior . superclass . _defaultConfig . apply ( this , arguments ) , { } ) } , _init : function ( ) { BI . RedMarkBehavior . superclass . _init . apply ( this , arguments ) } , doBehavior : function ( a ) { var b = Array . prototype . slice . call ( arguments , 1 ) , c = this . options ; BI . each ( a , function ( a , d ) { d instanceof BI . Single ? c . rule ( d . getValue ( ) , d ) ? d . doRedMark && d . doRedMark . apply ( d , b ) : d . doRedMark && d . unRedMark . apply ( d , b ) : d . doBehavior && d . doBehavior . apply ( d , b ) } ) } } ) , BI . Controller = BI . inherit ( BI . OB , { _defaultConfig : function ( ) { return BI . extend ( BI . Controller . superclass . _defaultConfig . apply ( this , arguments ) , { } ) } , _init : function ( ) { BI . Controller . superclass . _init . apply ( this , arguments ) } , destroy : function ( ) { } } ) , BI . Controller . EVENT _CHANGE = "__EVENT_CHANGE__" , BI . BroadcastController = BI . inherit ( BI . Controller , { _defaultConfig : function ( ) { return BI . extend ( BI . BroadcastController . superclass . _defaultConfig . apply ( this , arguments ) , { } ) } , _init : function ( ) { BI . BroadcastController . superclass . _init . apply ( this , arguments ) , this . _broadcasts = { } } , on : function ( a , b ) { var c = this ; return this . _broadcasts [ a ] || ( this . _broadcasts [ a ] = [ ] ) , this . _broadcasts [ a ] . push ( b ) , function ( ) { c . remove ( a , b ) } } , send : function ( a ) { var b = [ ] . slice . call ( arguments , 1 ) ; BI . each ( this . _broadcasts [ a ] , function ( a , c ) { c . apply ( null , b ) } ) } , remove : function ( a , b ) { var c = this ; return b ? ( BI . remove ( this . _broadcasts [ a ] , function ( d ) { return c . _broadcasts [ a ] . indexOf ( b ) === d } ) , this . _broadcasts [ a ] . remove ( b ) , 0 === this . _broadcasts [ a ] . length && delete this . _broadcasts [ a ] ) : delete this . _broadcasts [ a ] , this } } ) , BI . BubblesController = BI . inherit ( BI . Controller , { _defaultConfig : function ( ) { return BI . extend ( BI . BubblesController . superclass . _defaultConfig . apply ( this , arguments ) , { } ) } , _const : { bubbleHeight : 18 } , _init : function ( ) { BI . BubblesController . superclass . _init . apply ( this , arguments ) ; var a = this ; this . bubblesManager = { } , this . storeBubbles = { } , BI . Resizers . add ( "bubbleController" + BI . uniqueId ( ) , function ( ) { BI . each ( a . bubblesManager , function ( b ) { a . remove ( b ) } ) , a . bubblesManager = { } , a . storeBubbles = { } } ) } , _createBubble : function ( a , b , c , d ) { return BI . createWidget ( { type : "bi.bubble" , text : b , level : c , height : d || 18 , direction : a } ) } , _getOffsetLeft : function ( a , b , c ) { var d = 0 ; return "center" === c ? ( d = b . element . offset ( ) . left + ( b . element . bounds ( ) . width - this . get ( a ) . element . bounds ( ) . width ) / 2 , d < 0 && ( d = 0 ) , d ) : "right" === c ? ( d = b . element . offset ( ) . left + b . element . bounds ( ) . width - this . get ( a ) . element . bounds ( ) . width , d < 0 && ( d = 0 ) , d ) : b . element . offset ( ) . left } , _getOffsetTop : function ( a , b , c ) { var d = 0 ; return "center" === c ? ( d = b . element . offset ( ) . top + ( b . element . bounds ( ) . height - this . get ( a ) . element . bounds ( ) . height ) / 2 , d < 0 && ( d = 0 ) , d ) : "right" === c ? ( d = b . element . offset ( ) . top + b . element . bounds ( ) . height - this . get ( a ) . element . bounds ( ) . height , d < 0 && ( d = 0 ) , d ) : b . element . offset ( ) . top } , _getLeftPosition : function ( a , b , c ) { var d = BI . DOM . getLeftPosition ( b , this . get ( a ) ) ; return d . top = this . _getOffsetTop ( a , b , c ) , d } , _getBottomPosition : function ( a , b , c ) { var d = BI . DOM . getBottomPosition ( b , this . get ( a ) ) ; return d . left = this . _getOffsetLeft ( a , b , c ) , d } , _getTopPosition : function ( a , b , c ) { var d = BI . DOM . getTopPosition ( b , this . get ( a ) ) ; return d . left = this . _getOffsetLeft ( a , b , c ) , d } , _getRightPosition : function ( a , b , c ) { var d = BI . DOM . getRightPosition ( b , this . get ( a ) ) ; return d . top = this . _getOffsetTop ( a , b , c ) , d } , show : function ( a , b , c , d ) { d || ( d = { } ) ; var e = d . container || c , f = d . offsetStyle || { } , g = d . level || "error" , h = d . adjustYOffset || 0 , i = d . adjustXOffset || 0 ; this . storeBubbles [ a ] || ( this . storeBubbles [ a ] = { } ) , this . storeBubbles [ a ] . top || ( this . storeBubbles [ a ] . top = this . _createBubble ( "top" , b , g ) ) , BI . createWidget ( { type : "bi.absolute" , element : e , items : [ { el : this . storeBubbles [ a ] . top } ] } ) , this . set ( a , this . storeBubbles [ a ] . top ) ; var j = this . _getTopPosition ( a , c , f ) ; if ( this . get ( a ) . element . css ( { left : j . left + i , top : j . top - h } ) , this . get ( a ) . invisible ( ) , ! BI . DOM . isTopSpaceEnough ( c , this . get ( a ) , h ) ) { this . storeBubbles [ a ] . left || ( this . storeBubbles [ a ] . left = this . _createBubble ( "left" , b , g , 30 ) ) , BI . createWidget ( { type : "bi.absolute" , element : e , items : [ { el : this . storeBubbles [ a ] . left } ] } ) , this . set ( a , this . storeBubbles [ a ] . left ) ; var j = this . _getLeftPosition ( a , c , f ) ; if ( this . get ( a ) . element . css ( { left : j . left - i , top : j . top - h } ) , this . get ( a ) . invisible ( ) , ! BI . DOM . isLeftSpaceEnough ( c , this . get ( a
} } ) , BI . TableLayoutLogic = BI . inherit ( BI . Logic , { _defaultConfig : function ( ) { return BI . extend ( BI . TableLayoutLogic . superclass . _defaultConfig . apply ( this , arguments ) , { dynamic : ! 1 , scrollable : null , scrolly : ! 1 , scrollx : ! 1 , columns : 0 , rows : 0 , columnSize : [ ] , rowSize : [ ] , hgap : 0 , vgap : 0 , items : [ ] } ) } , createLogic : function ( ) { var a , b = this . options ; return a = b . dynamic ? "bi.table" : "bi.window" , { type : a , scrollable : b . scrollable , scrolly : b . scrolly , scrollx : b . scrollx , columns : b . columns , rows : b . rows , columnSize : b . columnSize , rowSize : b . rowSize , hgap : b . hgap , vgap : b . vgap , items : b . items } } , _init : function ( ) { BI . TableLayoutLogic . superclass . _init . apply ( this , arguments ) } } ) , BI . HorizontalFillLayoutLogic = BI . inherit ( BI . Logic , { _defaultConfig : function ( ) { return BI . extend ( BI . HorizontalFillLayoutLogic . superclass . _defaultConfig . apply ( this , arguments ) , { dynamic : ! 1 , scrollable : null , scrolly : ! 1 , scrollx : ! 1 , items : [ ] , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , createLogic : function ( ) { var a , b = this . options , c = [ ] ; return BI . each ( b . items , function ( a , b ) { c . push ( b . width || 0 ) } ) , a = b . dynamic ? "bi.horizontal_adapt" : "bi.htape" , { type : a , columnSize : c , scrollable : b . scrollable , scrolly : b . scrolly , scrollx : b . scrollx , hgap : b . hgap , vgap : b . vgap , lgap : b . lgap , rgap : b . rgap , tgap : b . tgap , bgap : b . bgap , items : b . items } } , _init : function ( ) { BI . HorizontalFillLayoutLogic . superclass . _init . apply ( this , arguments ) } } ) , BI . prepares . push ( function ( ) { var a , b = function ( ) { return null == a && ( a = ! ( ! BI . isSupportCss3 || ! BI . isSupportCss3 ( "flex" ) ) ) , a } ; BI . Plugin . registerWidget ( "bi.horizontal" , function ( a ) { var c = BI . isIE ( ) , d = b ( ) , e = c && BI . getIEVersion ( ) < 8 ; return a . verticalAlign === BI . VerticalAlign . Middle && a . horizontalAlign === BI . HorizontalAlign . Center ? e ? a : BI . extend ( a , { type : "bi.table_adapt" } ) : a . verticalAlign === BI . VerticalAlign . Middle && a . horizontalAlign === BI . HorizontalAlign . Left ? e ? a : BI . extend ( a , { type : "bi.table_adapt" } ) : a . verticalAlign === BI . VerticalAlign . Top && a . horizontalAlign === BI . HorizontalAlign . Center ? e ? a : BI . extend ( a , { type : "bi.table_adapt" } ) : c ? a : d ? BI . extend ( a , { type : "bi.flex_horizontal" } ) : BI . extend ( a , { type : "bi.table_adapt" } ) } ) , BI . Plugin . registerWidget ( "bi.center_adapt" , function ( a ) { var c = BI . isIE ( ) , d = b ( ) , e = a . items && a . items . length <= 1 ; return ! c && d && e ? a . scrollable === ! 0 || a . scrollx === ! 0 || a . scrolly === ! 0 ? BI . extend ( a , { type : "bi.flex_scrollable_center_adapt" } ) : BI . extend ( a , { type : "bi.flex_center_adapt" } ) : e ? BI . extend ( a , { type : "bi.inline_center_adapt" } ) : a } ) , BI . Plugin . registerWidget ( "bi.vertical_adapt" , function ( a ) { var c = BI . isIE ( ) , d = b ( ) ; return ! c && d ? a . scrollable === ! 0 || a . scrollx === ! 0 || a . scrolly === ! 0 ? BI . extend ( { } , a , { type : "bi.flex_scrollable_vertical_center_adapt" } ) : BI . extend ( a , { type : "bi.flex_vertical_center_adapt" } ) : BI . extend ( a , { type : "bi.inline_vertical_adapt" } ) } ) , BI . Plugin . registerWidget ( "bi.horizontal_adapt" , function ( a ) { return a . items && a . items . length <= 1 ? BI . extend ( a , { type : "bi.horizontal_auto" } ) : a } ) , BI . Plugin . registerWidget ( "bi.float_center_adapt" , function ( a ) { return ! BI . isIE ( ) && b ( ) ? a . scrollable === ! 0 || a . scrollx === ! 0 || a . scrolly === ! 0 ? BI . extend ( { } , a , { type : "bi.flex_scrollable_center_adapt" } ) : BI . extend ( a , { type : "bi.flex_center_adapt" } ) : BI . extend ( a , { type : "bi.inline_center_adapt" } ) } ) , BI . Plugin . registerWidget ( "bi.flex_horizontal" , function ( a ) { if ( a . scrollable === ! 0 || a . scrolly === ! 0 ) return BI . extend ( { } , a , { type : "bi.flex_scrollable_horizontal" } ) } ) , BI . Plugin . registerWidget ( "bi.flex_vertical" , function ( a ) { if ( a . scrollable === ! 0 || a . scrollx === ! 0 ) return BI . extend ( { } , a , { type : "bi.flex_scrollable_vertical" } ) } ) , BI . Plugin . registerWidget ( "bi.flex_horizontal_adapt" , function ( a ) { if ( a . scrollable === ! 0 || a . scrollx === ! 0 ) return BI . extend ( { } , a , { type : "bi.flex_scrollable_horizontal_adapt" } ) } ) , BI . Plugin . registerWidget ( "bi.flex_vertical_adapt" , function ( a ) { if ( a . scrollable === ! 0 || a . scrolly === ! 0 ) return BI . extend ( { } , a , { type : "bi.flex_scrollable_vertical_adapt" } ) } ) , BI . Plugin . registerWidget ( "bi.flex_horizontal_center_adapt" , function ( a ) { if ( a . scrollable === ! 0 || a . scrollx === ! 0 ) return BI . extend ( { } , a , { type : "bi.flex_scrollable_horizontal_adapt" } ) } ) , BI . Plugin . registerWidget ( "bi.flex_vertical_center_adapt" , function ( a ) { if ( a . scrollable === ! 0 || a . scrolly === ! 0 ) return BI . extend ( { } , a , { type : "bi.flex_scrollable_vertical_adapt" } ) } ) , BI . Plugin . registerWidget ( "bi.flex_center_adapt" ,
c . overflow && ( n . overflow = "hidden" , ia . support . shrinkWrapBlocks || m . always ( function ( ) { n . overflow = c . overflow [ 0 ] , n . overflowX = c . overflow [ 1 ] , n . overflowY = c . overflow [ 2 ] } ) ) ; for ( e in b ) if ( g = b [ e ] , ac . exec ( g ) ) { if ( delete b [ e ] , i = i || "toggle" === g , g === ( q ? "hide" : "show" ) ) continue ; p . push ( e ) } if ( f = p . length ) { h = ia . _data ( a , "fxshow" ) || ia . _data ( a , "fxshow" , { } ) , "hidden" in h && ( q = h . hidden ) , i && ( h . hidden = ! q ) , q ? ia ( a ) . show ( ) : m . done ( function ( ) { ia ( a ) . hide ( ) } ) , m . done ( function ( ) { var b ; ia . _removeData ( a , "fxshow" ) ; for ( b in o ) ia . style ( a , b , o [ b ] ) } ) ; for ( e = 0 ; e < f ; e ++ ) d = p [ e ] , j = m . createTween ( d , q ? h [ d ] : 0 ) , o [ d ] = h [ d ] || ia . style ( a , d ) , d in h || ( h [ d ] = j . start , q && ( j . end = j . start , j . start = "width" === d || "height" === d ? 1 : 0 ) ) } } function Q ( a , b , c , d , e ) { return new Q . prototype . init ( a , b , c , d , e ) } function R ( a , b ) { var c , d = { height : a } , e = 0 ; for ( b = b ? 1 : 0 ; e < 4 ; e += 2 - b ) c = xb [ e ] , d [ "margin" + c ] = d [ "padding" + c ] = a ; return b && ( d . opacity = d . width = a ) , d } function S ( a ) { return ia . isWindow ( a ) ? a : 9 === a . nodeType && ( a . defaultView || a . parentWindow ) } var T , U , V = typeof b , W = a . document , X = a . location , Y = a . jQuery , Z = a . $ , $ = { } , _ = [ ] , aa = "1.12.4" , ba = _ . concat , ca = _ . push , da = _ . slice , ea = _ . indexOf , fa = $ . toString , ga = $ . hasOwnProperty , ha = aa . trim , ia = function ( a , b ) { return new ia . fn . init ( a , b , U ) } , ja = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ . source , ka = /\S+/g , la = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g , ma = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/ , na = /^<(\w+)\s*\/?>(?:<\/\1>|)$/ , oa = /^[\],:{}\s]*$/ , pa = /(?:^|:|,)(?:\s*\[)+/g , qa = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g , ra = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g , sa = /^-ms-/ , ta = /-([\da-z])/gi , ua = function ( a , b ) { return b . toUpperCase ( ) } , va = function ( a ) { ( W . addEventListener || "load" === a . type || "complete" === W . readyState ) && ( wa ( ) , ia . ready ( ) ) } , wa = function ( ) { W . addEventListener ? ( W . removeEventListener ( "DOMContentLoaded" , va , ! 1 ) , a . removeEventListener ( "load" , va , ! 1 ) ) : ( W . detachEvent ( "onreadystatechange" , va ) , a . detachEvent ( "onload" , va ) ) } ; ia . fn = ia . prototype = { jquery : aa , constructor : ia , init : function ( a , c , d ) { var e , f ; if ( ! a ) return this ; if ( "string" == typeof a ) { if ( e = "<" === a . charAt ( 0 ) && ">" === a . charAt ( a . length - 1 ) && a . length >= 3 ? [ null , a , null ] : ma . exec ( a ) , ! e || ! e [ 1 ] && c ) return ! c || c . jquery ? ( c || d ) . find ( a ) : this . constructor ( c ) . find ( a ) ; if ( e [ 1 ] ) { if ( c = c instanceof ia ? c [ 0 ] : c , ia . merge ( this , ia . parseHTML ( e [ 1 ] , c && c . nodeType ? c . ownerDocument || c : W , ! 0 ) ) , na . test ( e [ 1 ] ) && ia . isPlainObject ( c ) ) for ( e in c ) ia . isFunction ( this [ e ] ) ? this [ e ] ( c [ e ] ) : this . attr ( e , c [ e ] ) ; return this } if ( f = W . getElementById ( e [ 2 ] ) , f && f . parentNode ) { if ( f . id !== e [ 2 ] ) return d . find ( a ) ; this . length = 1 , this [ 0 ] = f } return this . context = W , this . selector = a , this } return a . nodeType ? ( this . context = this [ 0 ] = a , this . length = 1 , this ) : ia . isFunction ( a ) ? d . ready ( a ) : ( a . selector !== b && ( this . selector = a . selector , this . context = a . context ) , ia . makeArray ( a , this ) ) } , selector : "" , length : 0 , size : function ( ) { return this . length } , toArray : function ( ) { return da . call ( this ) } , get : function ( a ) { return null == a ? this . toArray ( ) : a < 0 ? this [ this . length + a ] : this [ a ] } , pushStack : function ( a ) { var b = ia . merge ( this . constructor ( ) , a ) ; return b . prevObject = this , b . context = this . context , b } , each : function ( a , b ) { return ia . each ( this , a , b ) } , ready : function ( a ) { return ia . ready . promise ( ) . done ( a ) , this } , slice : function ( ) { return this . pushStack ( da . apply ( this , arguments ) ) } , first : function ( ) { return this . eq ( 0 ) } , last : function ( ) { return this . eq ( - 1 ) } , eq : function ( a ) { var b = this . length , c = + a + ( a < 0 ? b : 0 ) ; return this . pushStack ( c >= 0 && c < b ? [ this [ c ] ] : [ ] ) } , map : function ( a ) { return this . pushStack ( ia . map ( this , function ( b , c ) { return a . call ( b , c , b ) } ) ) } , end : function ( ) { return this . prevObject || this . constructor ( null ) } , push : ca , sort : [ ] . sort , splice : [ ] . splice } , ia . fn . init . prototype = ia . fn , ia . extend = ia . fn . extend = function ( ) { var a , c , d , e , f , g , h = arguments [ 0 ] || { } , i = 1 , j = arguments . length , k = ! 1 ; for ( "boolean" == typeof h && ( k = h , h = arguments [ 1 ] || { } , i = 2 ) , "object" == typeof h || ia . isFunction ( h ) || ( h = { } ) , j === i && ( h = this , -- i ) ; i < j ; i ++ ) if ( null != ( f = arguments [ i ] ) ) for ( e in f ) a = h [ e ] , d = f [ e ] , h !== d && ( k && d && ( ia . isPlainObject ( d ) || ( c = ia . isArray ( d ) ) ) ? ( c ? ( c = ! 1 , g = a && ia . isArray ( a ) ? a : [ ] ) : g = a && ia . isPlainObject ( a ) ? a : { } , h [ e ] = ia . extend ( k , g , d ) ) : d !== b && ( h [ e ] = d ) ) ; return h } , ia . extend ( { noConflict : function ( b ) { return a . $ === ia && ( a . $ = Z ) , b && a . jQuery === ia && ( a . jQuery = Y ) , ia } , isReady : ! 1 , readyWait : 1 , holdReady : function ( a
setup : function ( ) { return ! ia . nodeName ( this , "form" ) && void ia . event . add ( this , "click._submit keypress._submit" , function ( a ) { var c = a . target , d = ia . nodeName ( c , "input" ) || ia . nodeName ( c , "button" ) ? c . form : b ; d && ! ia . _data ( d , "submitBubbles" ) && ( ia . event . add ( d , "submit._submit" , function ( a ) { a . _submit _bubble = ! 0 } ) , ia . _data ( d , "submitBubbles" , ! 0 ) ) } ) } , postDispatch : function ( a ) { a . _submit _bubble && ( delete a . _submit _bubble , this . parentNode && ! a . isTrigger && ia . event . simulate ( "submit" , this . parentNode , a , ! 0 ) ) } , teardown : function ( ) { return ! ia . nodeName ( this , "form" ) && void ia . event . remove ( this , "._submit" ) } } ) , ia . support . changeBubbles || ( ia . event . special . change = { setup : function ( ) { return Ka . test ( this . nodeName ) ? ( "checkbox" !== this . type && "radio" !== this . type || ( ia . event . add ( this , "propertychange._change" , function ( a ) { "checked" === a . originalEvent . propertyName && ( this . _just _changed = ! 0 ) } ) , ia . event . add ( this , "click._change" , function ( a ) { this . _just _changed && ! a . isTrigger && ( this . _just _changed = ! 1 ) , ia . event . simulate ( "change" , this , a , ! 0 ) } ) ) , ! 1 ) : void ia . event . add ( this , "beforeactivate._change" , function ( a ) { var b = a . target ; Ka . test ( b . nodeName ) && ! ia . _data ( b , "changeBubbles" ) && ( ia . event . add ( b , "change._change" , function ( a ) { ! this . parentNode || a . isSimulated || a . isTrigger || ia . event . simulate ( "change" , this . parentNode , a , ! 0 ) } ) , ia . _data ( b , "changeBubbles" , ! 0 ) ) } ) } , handle : function ( a ) { var b = a . target ; if ( this !== b || a . isSimulated || a . isTrigger || "radio" !== b . type && "checkbox" !== b . type ) return a . handleObj . handler . apply ( this , arguments ) } , teardown : function ( ) { return ia . event . remove ( this , "._change" ) , ! Ka . test ( this . nodeName ) } } ) , ia . support . focusinBubbles || ia . each ( { focus : "focusin" , blur : "focusout" } , function ( a , b ) { var c = 0 , d = function ( a ) { ia . event . simulate ( b , a . target , ia . event . fix ( a ) , ! 0 ) } ; ia . event . special [ b ] = { setup : function ( ) { 0 === c ++ && W . addEventListener ( a , d , ! 0 ) } , teardown : function ( ) { 0 === -- c && W . removeEventListener ( a , d , ! 0 ) } } } ) , ia . fn . extend ( { on : function ( a , c , d , e , f ) { var g , h ; if ( "object" == typeof a ) { "string" != typeof c && ( d = d || c , c = b ) ; for ( g in a ) this . on ( g , c , d , a [ g ] , f ) ; return this } if ( null == d && null == e ? ( e = c , d = c = b ) : null == e && ( "string" == typeof c ? ( e = d , d = b ) : ( e = d , d = c , c = b ) ) , e === ! 1 ) e = j ; else if ( ! e ) return this ; return 1 === f && ( h = e , e = function ( a ) { return ia ( ) . off ( a ) , h . apply ( this , arguments ) } , e . guid = h . guid || ( h . guid = ia . guid ++ ) ) , this . each ( function ( ) { ia . event . add ( this , a , e , d , c ) } ) } , one : function ( a , b , c , d ) { return this . on ( a , b , c , d , 1 ) } , off : function ( a , c , d ) { var e , f ; if ( a && a . preventDefault && a . handleObj ) return e = a . handleObj , ia ( a . delegateTarget ) . off ( e . namespace ? e . origType + "." + e . namespace : e . origType , e . selector , e . handler ) , this ; if ( "object" == typeof a ) { for ( f in a ) this . off ( f , c , a [ f ] ) ; return this } return c !== ! 1 && "function" != typeof c || ( d = c , c = b ) , d === ! 1 && ( d = j ) , this . each ( function ( ) { ia . event . remove ( this , a , d , c ) } ) } , bind : function ( a , b , c ) { return this . on ( a , null , b , c ) } , unbind : function ( a , b ) { return this . off ( a , null , b ) } , delegate : function ( a , b , c , d ) { return this . on ( b , a , c , d ) } , undelegate : function ( a , b , c ) { return 1 === arguments . length ? this . off ( a , "**" ) : this . off ( b , a || "**" , c ) } , trigger : function ( a , b ) { return this . each ( function ( ) { ia . event . trigger ( a , b , this ) } ) } , triggerHandler : function ( a , b ) { var c = this [ 0 ] ; if ( c ) return ia . event . trigger ( a , b , c , ! 0 ) } } ) , function ( a , b ) { function c ( a ) { return oa . test ( a + "" ) } function d ( ) { var a , b = [ ] ; return a = function ( c , d ) { return b . push ( c += " " ) > y . cacheLength && delete a [ b . shift ( ) ] , a [ c ] = d } } function e ( a ) { return a [ N ] = ! 0 , a } function f ( a ) { var b = F . createElement ( "div" ) ; try { return a ( b ) } catch ( c ) { return ! 1 } finally { b = null } } function g ( a , b , c , d ) { var e , f , g , h , i , j , k , n , o , p ; if ( ( b ? b . ownerDocument || b : O ) !== F && E ( b ) , b = b || F , c = c || [ ] , ! a || "string" != typeof a ) return c ; if ( 1 !== ( h = b . nodeType ) && 9 !== h ) return [ ] ; if ( ! H && ! d ) { if ( e = pa . exec ( a ) ) if ( g = e [ 1 ] ) { if ( 9 === h ) { if ( f = b . getElementById ( g ) , ! f || ! f . parentNode ) return c ; if ( f . id === g ) return c . push ( f ) , c } else if ( b . ownerDocument && ( f = b . ownerDocument . getElementById ( g ) ) && L ( b , f ) && f . id === g ) return c . push ( f ) , c } else { if ( e [ 2 ] ) return Z . apply ( c , $ . call ( b . getElementsByTagName ( a ) , 0 ) ) , c ; if ( ( g = e [ 3 ] ) && P . getByClassName && b . getElementsByClassName ) return Z . apply ( c , $ . call ( b . getElementsByClassName ( g ) , 0 ) ) , c } if ( P . qsa && ! I . test ( a ) ) { if ( k = ! 0 , n = N , o = b , p = 9 === h && a , 1 === h && "object" !== b . nodeName . toLowerCase ( ) ) { for ( j = l ( a ) , ( k = b . getAttribute ( "id" ) ) ? n = k . replace ( s
g = "number" ) , ! ( null == d || "number" === g && isNaN ( d ) || ( "number" !== g || ia . cssNumber [ i ] || ( d += "px" ) , ia . support . clearCloneStyle || "" !== d || 0 !== c . indexOf ( "background" ) || ( j [ c ] = "inherit" ) , h && "set" in h && ( d = h . set ( a , d , e ) ) === b ) ) ) try { j [ c ] = d } catch ( k ) { } } } , css : function ( a , c , d , e ) { var f , g , h , i = ia . camelCase ( c ) ; return c = ia . cssProps [ i ] || ( ia . cssProps [ i ] = v ( a . style , i ) ) , h = ia . cssHooks [ c ] || ia . cssHooks [ i ] , h && "get" in h && ( g = h . get ( a , ! 0 , d ) ) , g === b && ( g = lb ( a , c , e ) ) , "normal" === g && c in wb && ( g = wb [ c ] ) , "" === d || d ? ( f = parseFloat ( g ) , d === ! 0 || ia . isNumeric ( f ) ? f || 0 : g ) : g } , swap : function ( a , b , c , d ) { var e , f , g = { } ; for ( f in b ) g [ f ] = a . style [ f ] , a . style [ f ] = b [ f ] ; e = c . apply ( a , d || [ ] ) ; for ( f in b ) a . style [ f ] = g [ f ] ; return e } } ) , a . getComputedStyle ? ( kb = function ( b ) { return a . getComputedStyle ( b , null ) } , lb = function ( a , c , d ) { var e , f , g , h = d || kb ( a ) , i = h ? h . getPropertyValue ( c ) || h [ c ] : b , j = a . style ; return h && ( "" !== i || ia . contains ( a . ownerDocument , a ) || ( i = ia . style ( a , c ) ) , sb . test ( i ) && qb . test ( c ) && ( e = j . width , f = j . minWidth , g = j . maxWidth , j . minWidth = j . maxWidth = j . width = i , i = h . width , j . width = e , j . minWidth = f , j . maxWidth = g ) ) , i } ) : W . documentElement . currentStyle && ( kb = function ( a ) { return a . currentStyle } , lb = function ( a , c , d ) { var e , f , g , h = d || kb ( a ) , i = h ? h [ c ] : b , j = a . style ; return null == i && j && j [ c ] && ( i = j [ c ] ) , sb . test ( i ) && ! ob . test ( c ) && ( e = j . left , f = a . runtimeStyle , g = f && f . left , g && ( f . left = a . currentStyle . left ) , j . left = "fontSize" === c ? "1em" : i , i = j . pixelLeft + "px" , j . left = e , g && ( f . left = g ) ) , "" === i ? "auto" : i } ) , ia . each ( [ "height" , "width" ] , function ( a , b ) { ia . cssHooks [ b ] = { get : function ( a , c , d ) { if ( c ) return 0 === a . offsetWidth && pb . test ( ia . css ( a , "display" ) ) ? ia . swap ( a , vb , function ( ) { return A ( a , b , d ) } ) : A ( a , b , d ) } , set : function ( a , c , d ) { var e = d && kb ( a ) ; return y ( a , c , d ? z ( a , b , d , ia . support . boxSizing && "border-box" === ia . css ( a , "boxSizing" , ! 1 , e ) , e ) : 0 ) } } } ) , ia . support . opacity || ( ia . cssHooks . opacity = { get : function ( a , b ) { return nb . test ( ( b && a . currentStyle ? a . currentStyle . filter : a . style . filter ) || "" ) ? . 01 * parseFloat ( RegExp . $1 ) + "" : b ? "1" : "" } , set : function ( a , b ) { var c = a . style , d = a . currentStyle , e = ia . isNumeric ( b ) ? "alpha(opacity=" + 100 * b + ")" : "" , f = d && d . filter || c . filter || "" ; c . zoom = 1 , ( b >= 1 || "" === b ) && "" === ia . trim ( f . replace ( mb , "" ) ) && c . removeAttribute && ( c . removeAttribute ( "filter" ) , "" === b || d && ! d . filter ) || ( c . filter = mb . test ( f ) ? f . replace ( mb , e ) : f + " " + e ) } } ) , ia ( function ( ) { ia . support . reliableMarginRight || ( ia . cssHooks . marginRight = { get : function ( a , b ) { if ( b ) return ia . swap ( a , { display : "inline-block" } , lb , [ a , "marginRight" ] ) } } ) , ! ia . support . pixelPosition && ia . fn . position && ia . each ( [ "top" , "left" ] , function ( a , b ) { ia . cssHooks [ b ] = { get : function ( a , c ) { if ( c ) return c = lb ( a , b ) , sb . test ( c ) ? ia ( a ) . position ( ) [ b ] + "px" : c } } } ) } ) , ia . expr && ia . expr . filters && ( ia . expr . filters . hidden = function ( a ) { return a . offsetWidth <= 0 && a . offsetHeight <= 0 || ! ia . support . reliableHiddenOffsets && "none" === ( a . style && a . style . display || ia . css ( a , "display" ) ) } , ia . expr . filters . visible = function ( a ) { return ! ia . expr . filters . hidden ( a ) } ) , ia . each ( { margin : "" , padding : "" , border : "Width" } , function ( a , b ) { ia . cssHooks [ a + b ] = { expand : function ( c ) { for ( var d = 0 , e = { } , f = "string" == typeof c ? c . split ( " " ) : [ c ] ; d < 4 ; d ++ ) e [ a + xb [ d ] + b ] = f [ d ] || f [ d - 2 ] || f [ 0 ] ; return e } } , qb . test ( a ) || ( ia . cssHooks [ a + b ] . set = y ) } ) ; var zb = /%20/g , Ab = /\[\]$/ , Bb = /\r?\n/g , Cb = /^(?:submit|button|image|reset|file)$/i , Db = /^(?:input|select|textarea|keygen)/i ; ia . fn . extend ( { serialize : function ( ) { return ia . param ( this . serializeArray ( ) ) } , serializeArray : function ( ) { return this . map ( function ( ) { var a = ia . prop ( this , "elements" ) ; return a ? ia . makeArray ( a ) : this } ) . filter ( function ( ) { var a = this . type ; return this . name && ! ia ( this ) . is ( ":disabled" ) && Db . test ( this . nodeName ) && ! Cb . test ( a ) && ( this . checked || ! bb . test ( a ) ) } ) . map ( function ( a , b ) { var c = ia ( this ) . val ( ) ; return null == c ? null : ia . isArray ( c ) ? ia . map ( c , function ( a ) { return { name : b . name , value : a . replace ( Bb , "\r\n" ) } } ) : { name : b . name , value : c . replace ( Bb , "\r\n" ) } } ) . get ( ) } } ) , ia . param = function ( a , c ) { var d , e = [ ] , f = function ( a , b ) { b = ia . isFunction ( b ) ? b ( ) : null == b ? "" : b , e [ e . length ] = encodeURIComponent ( a ) + "=" + encodeURIComponent ( b ) } ; if ( c === b && ( c = ia . ajaxSettings && ia . ajaxSettings . traditional ) , ia . isArray ( a ) || a . jquery && ! ia . isPlainObject ( a ) ) ia . each ( a , function ( ) { f ( this . name , this . value ) } ) ; else for ( d in a ) D ( d , a [ d ] , c , f ) ; return e . join ( "&" ) . replace ( zb , "+" ) } , ia . each ( " blur focus focusin focusout load resize
items : [ ] , lgap : 0 , rgap : 0 , hgap : 0 } ) } , render : function ( ) { var a = this . options , b = this ; return BI . LeftVerticalAdaptLayout . superclass . render . apply ( this , arguments ) , { type : "bi.left" , ref : function ( a ) { b . layout = a } , items : [ { el : { type : "bi.vertical_adapt" , height : "100%" , items : a . items , lgap : a . lgap , hgap : a . hgap , rgap : a . rgap } } ] } } , resize : function ( ) { } , addItem : function ( ) { throw new Error ( "cannot be added" ) } , populate : function ( a ) { this . layout . populate . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.left_vertical_adapt" , BI . LeftVerticalAdaptLayout ) , BI . RightVerticalAdaptLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . RightVerticalAdaptLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-right-vertical-adapt-layout" , items : [ ] , lgap : 0 , rgap : 0 , hgap : 0 } ) } , render : function ( ) { var a = this . options , b = this ; return BI . RightVerticalAdaptLayout . superclass . render . apply ( this , arguments ) , { type : "bi.right" , ref : function ( a ) { b . layout = a } , items : [ { el : { type : "bi.vertical_adapt" , height : "100%" , textAlign : "right" , items : a . items , lgap : a . lgap , hgap : a . hgap , rgap : a . rgap } } ] } } , resize : function ( ) { } , addItem : function ( ) { throw new Error ( "cannot be added" ) } , populate : function ( a ) { this . layout . populate . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.right_vertical_adapt" , BI . RightVerticalAdaptLayout ) , BI . TableAdaptLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . TableAdaptLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-table-center-adapt-layout" , columnSize : [ ] , verticalAlign : BI . VerticalAlign . Top , horizontalAlign : BI . HorizontalAlign . Left , scrollx : ! 0 , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { var a = this . options ; BI . TableAdaptLayout . superclass . render . apply ( this , arguments ) , this . $table = BI . Widget . _renderEngine . createElement ( "<div>" ) . css ( { position : "relative" , display : "table" , height : a . verticalAlign === BI . VerticalAlign . Middle ? "100%" : "auto" , width : a . horizontalAlign === BI . HorizontalAlign . Center ? "100%" : "auto" , "white-space" : "nowrap" } ) , this . populate ( this . options . items ) } , _addElement : function ( a , b ) { var c , d = this . options , e = d . columnSize [ a ] <= 1 ? 100 * d . columnSize [ a ] + "%" : d . columnSize [ a ] ; if ( this . hasWidget ( this . _getChildName ( a ) ) ) c = this . getWidgetByName ( this . _getChildName ( a ) ) , c . element . width ( e ) ; else { var f = BI . createWidget ( b ) ; f . element . css ( { position : "relative" , top : "0" , left : "0" , margin : "0px auto" } ) , c = BI . createWidget ( { type : "bi.default" , width : e , items : [ f ] } ) , this . addWidget ( this . _getChildName ( a ) , c ) } return c . element . css ( { "max-width" : d . columnSize [ a ] <= 1 ? e : e + "px" } ) , 0 === a && c . element . addClass ( "first-element" ) , c . element . css ( { position : "relative" , display : "table-cell" , "vertical-align" : d . verticalAlign , margin : "0" , padding : "0" , height : "100%" } ) , d . vgap + d . tgap + ( b . tgap || 0 ) + ( b . vgap || 0 ) !== 0 && f . element . css ( { "margin-top" : d . vgap + d . tgap + ( b . tgap || 0 ) + ( b . vgap || 0 ) + "px" } ) , d . hgap + d . lgap + ( b . lgap || 0 ) + ( b . hgap || 0 ) !== 0 && f . element . css ( { "margin-left" : ( 0 === a ? d . hgap : 0 ) + d . lgap + ( b . lgap || 0 ) + ( b . hgap || 0 ) + "px" } ) , d . hgap + d . rgap + ( b . rgap || 0 ) + ( b . hgap || 0 ) !== 0 && f . element . css ( { "margin-right" : d . hgap + d . rgap + ( b . rgap || 0 ) + ( b . hgap || 0 ) + "px" } ) , d . vgap + d . bgap + ( b . bgap || 0 ) + ( b . vgap || 0 ) !== 0 && f . element . css ( { "margin-bottom" : d . vgap + d . bgap + ( b . bgap || 0 ) + ( b . vgap || 0 ) + "px" } ) , c } , appendFragment : function ( a ) { this . $table . append ( a ) , this . element . append ( this . $table ) } , resize : function ( ) { } , populate : function ( a ) { BI . TableAdaptLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.table_adapt" , BI . TableAdaptLayout ) , BI . VerticalAdaptLayout = BI . inherit ( BI . Layout , { props : { baseCls : "bi-vertical-adapt-layout" , horizontalAlign : BI . HorizontalAlign . Left , columnSize : [ ] , scrollx : ! 1 , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } , render : function ( ) { var a = this , b = this . options ; return BI . VerticalAdaptLayout . superclass . render . apply ( this , arguments ) , { type : "bi.horizontal" , verticalAlign : BI . VerticalAlign . Middle , horizontalAlign : b . horizontalAlign , columnSize : b . columnSize , items : b . items , scrollx : b . scrollx , ref : function ( b ) { a . layout = b } , hgap : b . hgap , vgap : b . vgap , lgap : b . lgap , rgap : b . rgap , tgap : b . tgap , bgap : b . bgap } } , resize : function ( ) { } , populate : function ( a ) { this . layout . populate . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.vertical_adapt" , BI . VerticalAdaptLayout ) , BI . HorizontalAutoLayout = BI . inherit ( BI . Layout , { props : function ( ) { return
} ) , BI . each ( a , function ( a , b ) { return BI . isArray ( b ) ? void BI . each ( b , function ( c , d ) { i [ a ] = ( i [ a ] || 0 ) + b . width , j [ c ] = ( j [ c ] || 0 ) + b . height , h [ a ] [ c ] = d } ) : ( i [ b . row ] = ( i [ b . row ] || 0 ) + b . width , j [ b . column ] = ( j [ b . column ] || 0 ) + b . height , void ( h [ b . row ] [ b . column ] = b ) ) } ) ; for ( var k = 0 ; k < f ; k ++ ) for ( var l = 0 , m = 0 ; m < g ; m ++ ) { if ( ! h [ k ] [ m ] ) throw new Error ( "item be required" ) ; if ( this . hasWidget ( this . getName ( ) + k + "_" + m ) ) n = this . getWidgetByName ( this . getName ( ) + k + "_" + m ) ; else { var n = BI . createWidget ( h [ k ] [ m ] ) ; this . addWidget ( this . getName ( ) + k + "_" + m , n ) } var o = 100 * l / i [ k ] ; if ( n . element . css ( { position : "absolute" , left : o + "%" } ) , m > 0 ) { var p = this . getWidgetByName ( this . getName ( ) + k + "_" + ( m - 1 ) ) ; p . element . css ( { right : 100 - o + "%" } ) } m == e . columns - 1 && n . element . css ( { right : "0%" } ) , d ( n , k , m ) , l += h [ k ] [ m ] . width } for ( var m = 0 ; m < e . columns ; m ++ ) for ( var q = 0 , k = 0 ; k < e . rows ; k ++ ) { var n = this . getWidgetByName ( this . getName ( ) + k + "_" + m ) , r = 100 * q / j [ m ] ; if ( n . element . css ( { top : r + "%" } ) , k > 0 ) { var p = this . getWidgetByName ( this . getName ( ) + ( k - 1 ) + "_" + m ) ; p . element . css ( { bottom : 100 - r + "%" } ) } k == e . rows - 1 && n . element . css ( { bottom : "0%" } ) , q += h [ k ] [ m ] . height } } , update : function ( ) { } , populate : function ( a ) { BI . DivisionLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.division" , BI . DivisionLayout ) , BI . FloatLeftLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . FloatLeftLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-float-left-layout clearfix" , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . FloatLeftLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , _addElement : function ( a , b ) { var c = this . options , d = BI . FloatLeftLayout . superclass . _addElement . apply ( this , arguments ) ; return d . element . css ( { position : "relative" , "float" : "left" } ) , BI . isNotNull ( b . left ) && d . element . css ( { left : b . left } ) , BI . isNotNull ( b . right ) && d . element . css ( { right : b . right } ) , BI . isNotNull ( b . top ) && d . element . css ( { top : b . top } ) , BI . isNotNull ( b . bottom ) && d . element . css ( { bottom : b . bottom } ) , c . vgap + c . tgap + ( b . tgap || 0 ) + ( b . vgap || 0 ) !== 0 && d . element . css ( { "margin-top" : c . vgap + c . tgap + ( b . tgap || 0 ) + ( b . vgap || 0 ) + "px" } ) , c . hgap + c . lgap + ( b . lgap || 0 ) + ( b . hgap || 0 ) !== 0 && d . element . css ( { "margin-left" : ( 0 === a ? c . hgap : 0 ) + c . lgap + ( b . lgap || 0 ) + ( b . hgap || 0 ) + "px" } ) , c . hgap + c . rgap + ( b . rgap || 0 ) + ( b . hgap || 0 ) !== 0 && d . element . css ( { "margin-right" : c . hgap + c . rgap + ( b . rgap || 0 ) + ( b . hgap || 0 ) + "px" } ) , c . vgap + c . bgap + ( b . bgap || 0 ) + ( b . vgap || 0 ) !== 0 && d . element . css ( { "margin-bottom" : c . vgap + c . bgap + ( b . bgap || 0 ) + ( b . vgap || 0 ) + "px" } ) , d } , resize : function ( ) { this . stroke ( this . options . items ) } , populate : function ( a ) { BI . FloatLeftLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.left" , BI . FloatLeftLayout ) , BI . FloatRightLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . FloatRightLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-float-right-layout clearfix" , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . FloatRightLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , _addElement : function ( a , b ) { var c = this . options , d = BI . FloatRightLayout . superclass . _addElement . apply ( this , arguments ) ; return d . element . css ( { position : "relative" , "float" : "right" } ) , BI . isNotNull ( b . left ) && d . element . css ( { left : b . left } ) , BI . isNotNull ( b . right ) && d . element . css ( { right : b . right } ) , BI . isNotNull ( b . top ) && d . element . css ( { top : b . top } ) , BI . isNotNull ( b . bottom ) && d . element . css ( { bottom : b . bottom } ) , c . vgap + c . tgap + ( b . tgap || 0 ) + ( b . vgap || 0 ) !== 0 && d . element . css ( { "margin-top" : c . vgap + c . tgap + ( b . tgap || 0 ) + ( b . vgap || 0 ) + "px" } ) , c . hgap + c . lgap + ( b . lgap || 0 ) + ( b . hgap || 0 ) !== 0 && d . element . css ( { "margin-left" : c . hgap + c . lgap + ( b . lgap || 0 ) + ( b . hgap || 0 ) + "px" } ) , c . hgap + c . rgap + ( b . rgap || 0 ) + ( b . hgap || 0 ) !== 0 && d . element . css ( { "margin-right" : ( 0 === a ? c . hgap : 0 ) + c . rgap + ( b . rgap || 0 ) + ( b . hgap || 0 ) + "px" } ) , c . vgap + c . bgap + ( b . bgap || 0 ) + ( b . vgap || 0 ) !== 0 && d . element . css ( { "margin-bottom" : c . vgap + c . bgap + ( b . bgap || 0 ) + ( b . vgap || 0 ) + "px" } ) , d } , resize : function ( ) { this . stroke ( this . options . items ) } , populate : function ( a ) { BI . FloatRightLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.right" , BI . FloatRightLayout ) , BI . GridLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . GridLayout . superclass . props . apply ( this , argum
var a = void 0 , b = void 0 , c = void 0 ; for ( qa . sort ( function ( a , b ) { return a . id - b . id } ) , va = 0 ; va < qa . length ; va ++ ) a = qa [ va ] . watcher , c = qa [ va ] . options , b = a . id , sa [ b ] = null , a . run ( c ) ; u ( ) } function w ( a , b ) { var c = a . id ; if ( null == sa [ c ] ) { if ( sa [ c ] = ! 0 , ua ) { for ( var d = qa . length - 1 ; d > va && qa [ d ] . watcher . id > a . id ; ) d -- ; qa . splice ( d + 1 , 0 , { watcher : a , options : b } ) } else qa . push ( { watcher : a , options : b } ) ; ta || ( ta = ! 0 , Y ( v ) ) } } function x ( a ) { ya . clear ( ) , y ( a , ya ) } function y ( a , b ) { var c = void 0 , d = void 0 , e = _ . isArray ( a ) ; if ( e || _ . isObject ( a ) ) { if ( a . _ _ob _ _ ) { var f = a . _ _ob _ _ . dep . id ; if ( b . has ( f ) ) return ; b . add ( f ) } if ( e ) for ( c = a . length ; c -- ; ) y ( a [ c ] , b ) ; else for ( d = _ . keys ( a ) , c = d . length ; c -- ; ) y ( a [ d [ c ] ] , b ) } } function z ( a ) { for ( var b = "" , c = 0 , d = a . length ; c < d ; c ++ ) b += _ . isBoolean ( a [ c ] ) || _ . has ( za , a [ c ] ) ? a [ c ] : "false" ; return new Function ( "return " + b ) ( ) } function A ( a ) { return a = a . replace ( /\*./g , "[a-zA-Z0-9_]+." ) , "^" + a + "$" } function B ( a , b , c , d ) { e ( c ) && ( d = c , c = c . handler ) , "string" == typeof c && ( c = a [ c ] ) , d = d || { } , d . user = ! 0 ; var f = void 0 ; if ( _ . isFunction ( b ) || ! ( f = b . match ( /[a-zA-Z0-9_.*]+|[|][|]|[&][&]|[(]|[)]/g ) ) || 1 === f . length && ! /\*/ . test ( b ) ) { var g = new xa ( a , b , c , d ) ; return d . immediate && c ( g . value ) , function ( ) { g . teardown ( ) } } var j = [ ] , k = f . slice ( ) , l = ! 1 , m = ! 1 , n = function ( a , b , e , g ) { l !== ! 0 && ( k [ a ] = ! 0 , z ( k ) && ( l = ! 0 , c ( b , e , g ) ) , d && d . sync ? ( l = ! 1 , m = ! 1 , k = f . slice ( ) ) : m || ( m = ! 0 , Y ( function ( ) { l = ! 1 , m = ! 1 , k = f . slice ( ) } ) ) ) } ; return _ . each ( f , function ( b , c ) { if ( ! _ . has ( za , b ) ) { if ( /^[1-9a-zA-Z.]+(\*\*$|\*$)/ . test ( b ) || "**" === b ) { var e = /\*\*$/ . test ( b ) ; b = e ? b . replace ( ".**" , "" ) : b . replace ( ".*" , "" ) ; var f = "**" === b ? function ( a ) { return a } : i ( b ) , g = f . call ( a , a ) , k = new aa ; e ? ( g . _ _ob _ _ . _scopeDeps || ( g . _ _ob _ _ . _scopeDeps = [ ] ) ) . push ( k ) : ( g . _ _ob _ _ . _deps || ( g . _ _ob _ _ . _deps = [ ] ) ) . push ( k ) ; var l = new xa ( a , function ( ) { return k . depend ( ) , NaN } , function ( a , b , d ) { n ( c , a , b , _ . extend ( { index : c } , d ) ) } , d ) ; return void j . push ( function ( ) { l . teardown ( ) , g . _ _ob _ _ . _scopeDeps && h ( g . _ _ob _ _ . _scopeDeps , k ) , g . _ _ob _ _ . _deps && h ( g . _ _ob _ _ . _deps , k ) } ) } if ( /\*\*$|\*$/ . test ( b ) ) throw new Error ( "not support" ) ; if ( /\*/ . test ( b ) ) { for ( var m = a , o = b . split ( "." ) , p = 0 , q = o . length ; p < q && "*" !== o [ p ] ; p ++ ) m = a [ o [ p ] ] ; b = b . substr ( b . indexOf ( "*" ) ) ; for ( var r = m . _ _ob _ _ . parent , s = m . _ _ob _ _ ; r ; ) b = "*." + b , s = r , r = r . parent ; var t = A ( b ) , u = new aa ; s . _globalDeps || ( s . _globalDeps = { } ) , s . _globalDeps [ t ] = u ; var v = new xa ( m , function ( ) { return u . depend ( ) , NaN } , function ( a , b , d ) { n ( c , a , b , _ . extend ( { index : c } , d ) ) } , d ) ; return void j . push ( function ( ) { v . teardown ( ) , s . _globalDeps && delete s . _globalDeps [ t ] } ) } var w = new xa ( a , b , function ( a , b , d ) { n ( c , a , b , _ . extend ( { index : c } , d ) ) } , d ) ; j . push ( function ( ) { w . teardown ( ) } ) } } ) , j } function C ( a ) { return Aa [ a ] } function D ( a , b ) { Aa [ a ] = _ . cloneDeep ( b ) } function E ( a , b ) { b && ( a . $$state = o ( b ) . model ) } function F ( a , c ) { var d = a . _computedWatchers = { } ; G ( a , c ) ; for ( var e in c ) { var f = c [ e ] , g = a . $$model ? a . model : a , h = "function" == typeof f ? _ . bind ( f , g ) : _ . bind ( f . get , g ) ; d [ e ] = new xa ( a . $$computed , h || b , b , Ba ) } } function G ( a , c ) { var d = { } , e = ! 0 ; for ( var f in c ) if ( ! ( f in a ) ) { var g = { enumerable : ! 0 , configurable : ! 0 , get : b , set : b } , h = c [ f ] ; "function" == typeof h ? ( g . get = H ( a , f ) , g . set = b ) : ( g . get = h . get ? e && h . cache !== ! 1 ? H ( f ) : h . get : b , g . set = h . set ? h . set : b ) , d [ f ] = g } a . $$computed = ma ( { } , d ) } function H ( a , b ) { return function ( ) { var c = a . _computedWatchers && a . _computedWatchers [ b ] ; if ( c ) return c . dirty && c . evaluate ( ) , aa . target && c . depend ( ) , c . value } } function I ( a , b ) { a . _watchers || ( a . _watchers = [ ] ) ; for ( var c in b ) { var d = b [ c ] ; if ( _ . isArray ( d ) ) for ( var e = 0 ; e < d . length ; e ++ ) a . _watchers . push ( J ( a , c , d [ e ] ) ) ; else a . _watchers . push ( J ( a , c , d ) ) } } function J ( a , b , c , d ) { return e ( c ) && ( d = c , c = c . handler ) , "string" == typeof c && ( c = a [ c ] ) , B ( a . model , b , _ . bind ( c , a . $$model ? a . model : a ) , d ) } function K ( a , c ) { for ( var d in c ) a [ d ] = null == c [ d ] ? b : _ . bind ( c [ d ] , a . $$model ? a . model : a ) } function L ( a , b ) { b = b || [ ] , _ . each ( b . reverse ( ) , function ( b ) { var c = C ( b ) ; for ( var d in c ) "function" == typeof c [ d ] && ( _ . has ( a , d ) || ( a [ d ] = _ . bind ( c [ d ] , a . $$model ? a . model : a ) ) ) } ) } function M ( a , b ) { for ( var c = { } , d = ( function ( d , e ) { var f = b [ d ] ; f in Z || ( c [ f ] = { enumerable : ! 0 , configurable : ! 0 , get : function ( ) { if ( a . $$computed && f in a . $$computed ) return a . $$computed [ f ] ; if ( a . $$state && f in a . $$state ) return a . $$state [ f ] ; if ( a . $$model && f in a . $$model ) return a . $$model [ f ] ; for ( var b = a . _parent ; b ; ) { if ( b . $$context && f in b . $$context ) return b . $$context [ f ] ; b = b . _parent } } , set : function ( b ) { if ( a . $$state && f in a . $$s
BI . removeAt ( this . buttons , a ) , this . layouts . removeItemAt ( a ) } , removeItems : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] ; var b = [ ] ; BI . each ( this . buttons , function ( c , d ) { BI . deepContains ( a , d . getValue ( ) ) && b . push ( c ) } ) , BI . removeAt ( this . buttons , b ) , this . layouts . removeItemAt ( b ) } , populate : function ( a ) { a = a || [ ] , this . empty ( ) , this . options . items = a , this . buttons = this . _btnsCreator . apply ( this , arguments ) , a = this . _isSimpleLayout ( ) ? this . _packageSimpleItems ( this . buttons ) : this . _packageItems ( a , this . _packageBtns ( this . buttons ) ) , this . layouts = BI . createWidget ( BI . extend ( { element : this } , this . _packageLayout ( a ) ) ) } , setNotSelectedValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , BI . each ( this . buttons , function ( b , c ) { BI . deepContains ( a , c . getValue ( ) ) ? c . setSelected && c . setSelected ( ! 1 ) : c . setSelected && c . setSelected ( ! 0 ) } ) } , setEnabledValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , BI . each ( this . buttons , function ( b , c ) { BI . deepContains ( a , c . getValue ( ) ) ? c . setEnable ( ! 0 ) : c . setEnable ( ! 1 ) } ) } , setValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , BI . each ( this . buttons , function ( b , c ) { BI . deepContains ( a , c . getValue ( ) ) ? c . setSelected && c . setSelected ( ! 0 ) : c . setSelected && c . setSelected ( ! 1 ) } ) } , getNotSelectedValue : function ( ) { var a = [ ] ; return BI . each ( this . buttons , function ( b , c ) { ! c . isEnabled ( ) || c . isSelected && c . isSelected ( ) || a . push ( c . getValue ( ) ) } ) , a } , getValue : function ( ) { var a = [ ] ; return BI . each ( this . buttons , function ( b , c ) { c . isEnabled ( ) && c . isSelected && c . isSelected ( ) && a . push ( c . getValue ( ) ) } ) , a } , getAllButtons : function ( ) { return this . buttons } , getAllLeaves : function ( ) { return this . buttons } , getSelectedButtons : function ( ) { var a = [ ] ; return BI . each ( this . buttons , function ( b , c ) { c . isSelected && c . isSelected ( ) && a . push ( c ) } ) , a } , getNotSelectedButtons : function ( ) { var a = [ ] ; return BI . each ( this . buttons , function ( b , c ) { c . isSelected && ! c . isSelected ( ) && a . push ( c ) } ) , a } , getIndexByValue : function ( a ) { var b = - 1 ; return BI . any ( this . buttons , function ( c , d ) { if ( d . isEnabled ( ) && d . getValue ( ) === a ) return b = c , ! 0 } ) , b } , getNodeById : function ( a ) { var b ; return BI . any ( this . buttons , function ( c , d ) { if ( d . isEnabled ( ) && d . options . id === a ) return b = d , ! 0 } ) , b } , getNodeByValue : function ( a ) { var b ; return BI . any ( this . buttons , function ( c , d ) { if ( d . isEnabled ( ) && d . getValue ( ) === a ) return b = d , ! 0 } ) , b } , empty : function ( ) { BI . ButtonGroup . superclass . empty . apply ( this , arguments ) , this . options . items = [ ] } , destroy : function ( ) { BI . ButtonGroup . superclass . destroy . apply ( this , arguments ) , this . options . items = [ ] } } ) , BI . extend ( BI . ButtonGroup , { CHOOSE _TYPE _SINGLE : BI . Selection . Single , CHOOSE _TYPE _MULTI : BI . Selection . Multi , CHOOSE _TYPE _ALL : BI . Selection . All , CHOOSE _TYPE _NONE : BI . Selection . None , CHOOSE _TYPE _DEFAULT : BI . Selection . Default } ) , BI . ButtonGroup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.button_group" , BI . ButtonGroup ) , BI . ButtonTree = BI . inherit ( BI . ButtonGroup , { _defaultConfig : function ( ) { return BI . extend ( BI . ButtonTree . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-button-tree" } ) } , _init : function ( ) { BI . ButtonTree . superclass . _init . apply ( this , arguments ) } , setNotSelectedValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , BI . each ( this . buttons , function ( b , c ) { return BI . isFunction ( c . setSelected ) ? void ( BI . deepContains ( a , c . getValue ( ) ) ? c . setSelected ( ! 1 ) : c . setSelected ( ! 0 ) ) : void c . setNotSelectedValue ( a ) } ) } , setEnabledValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , BI . each ( this . buttons , function ( b , c ) { return BI . isFunction ( c . setEnabledValue ) ? void c . setEnabledValue ( a ) : void ( BI . deepContains ( a , c . getValue ( ) ) ? c . setEnable ( ! 0 ) : c . setEnable ( ! 1 ) ) } ) } , setValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , BI . each ( this . buttons , function ( b , c ) { return BI . isFunction ( c . setSelected ) ? void ( BI . deepContains ( a , c . getValue ( ) ) ? c . setSelected ( ! 0 ) : c . setSelected ( ! 1 ) ) : void c . setValue ( a ) } ) } , getNotSelectedValue : function ( ) { var a = [ ] ; return BI . each ( this . buttons , function ( b , c ) { return c . isEnabled ( ) && ! BI . isFunction ( c . setSelected ) ? void ( a = BI . concat ( a , c . getNotSelectedValue ( ) ) ) : void ( c . isEnabled ( ) && c . isSelected && ! c . isSelected ( ) && a . push ( c . getValue ( ) ) ) } ) , a } , getValue : function ( ) { var a = [ ] ; return BI . each ( this . buttons , function ( b , c ) { return c . isEnabled ( ) && ! BI . isFunction ( c . setSelected ) ? void ( a = BI . concat ( a , c . getValue ( ) ) ) : void ( c . isEnabled ( ) && c . isSelected && c . isSelected ( ) && a . push ( c . getValue ( ) ) ) } ) , a } , getSelectedButtons : function ( ) { var a = [ ] ; return BI . each ( this . buttons , function ( b , c ) { r
b . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . EXPAND , "" , b . combo ) , b . fireEvent ( BI . Combo . EVENT _EXPAND ) ) } ) , b . element . on ( "mouseleave." + b . getName ( ) , function ( c ) { b . popupView && ( b . popupView . element . on ( "mouseenter." + b . getName ( ) , function ( c ) { f = ! 0 , b . popupView . element . on ( "mouseleave." + b . getName ( ) , function ( b ) { a ( ) } ) , b . popupView . element . off ( "mouseenter." + b . getName ( ) ) } ) , BI . defer ( function ( ) { f || a ( ) } , 50 ) ) } ) ; break ; case "click" : var h = BI . debounce ( function ( a ) { b . combo . element . _ _isMouseInBounds _ _ ( a ) && b . isEnabled ( ) && b . isValid ( ) && b . combo . isEnabled ( ) && b . combo . isValid ( ) && ( c . toggle ? b . _toggle ( ) : b . _popupView ( ) , b . isViewVisible ( ) ? ( b . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . EXPAND , "" , b . combo ) , b . fireEvent ( BI . Combo . EVENT _EXPAND ) ) : ( b . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . COLLAPSE , "" , b . combo ) , b . fireEvent ( BI . Combo . EVENT _COLLAPSE ) ) ) } , BI . EVENT _RESPONSE _TIME , { leading : ! 0 , trailing : ! 1 } ) ; b . element . off ( g + "." + b . getName ( ) ) . on ( g + "." + b . getName ( ) , function ( a ) { h ( a ) , e ( a ) } ) ; break ; case "click-hover" : var h = BI . debounce ( function ( a ) { b . combo . element . _ _isMouseInBounds _ _ ( a ) && b . isEnabled ( ) && b . isValid ( ) && b . combo . isEnabled ( ) && b . combo . isValid ( ) && ( b . _popupView ( ) , b . isViewVisible ( ) && ( b . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . EXPAND , "" , b . combo ) , b . fireEvent ( BI . Combo . EVENT _EXPAND ) ) ) } , BI . EVENT _RESPONSE _TIME , { leading : ! 0 , trailing : ! 1 } ) ; b . element . off ( "click." + b . getName ( ) ) . on ( "click." + b . getName ( ) , function ( a ) { h ( a ) , e ( a ) } ) , b . element . on ( "mouseleave." + b . getName ( ) , function ( c ) { b . popupView && ( b . popupView . element . on ( "mouseenter." + b . getName ( ) , function ( c ) { f = ! 0 , b . popupView . element . on ( "mouseleave." + b . getName ( ) , function ( b ) { a ( ) } ) , b . popupView . element . off ( "mouseenter." + b . getName ( ) ) } ) , BI . defer ( function ( ) { f || a ( ) } , 50 ) ) } ) } } ) } , _initCombo : function ( ) { this . combo = BI . createWidget ( this . options . el , { value : this . options . value } ) } , _assertPopupView : function ( ) { var a = this , b = this . options ; null == this . popupView && ( this . popupView = BI . createWidget ( this . options . popup , { type : "bi.popup_view" , value : b . value } , this ) , this . popupView . on ( BI . Controller . EVENT _CHANGE , function ( b , c , d ) { b === BI . Events . CLICK && ( a . combo . setValue ( a . getValue ( ) ) , a . fireEvent ( BI . Combo . EVENT _CHANGE , c , d ) ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . popupView . setVisible ( ! 1 ) , BI . nextTick ( function ( ) { a . fireEvent ( BI . Combo . EVENT _AFTER _INIT ) } ) ) } , _assertPopupViewRender : function ( ) { this . _assertPopupView ( ) , this . _rendered || ( BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , element : this . options . container || this , items : [ { el : this . popupView } ] } ) , this . _rendered = ! 0 ) } , _hideIf : function ( a ) { if ( this . element . find ( a . target ) . length > 0 || this . popupView && this . popupView . element . find ( a . target ) . length > 0 || "CodeMirror-cursor" === a . target . className || BI . Widget . _renderEngine . createElement ( a . target ) . closest ( ".CodeMirror-hints" ) . length > 0 ) { var b = this . options . direction . split ( "," ) ; return void ( ( BI . contains ( b , "innerLeft" ) || BI . contains ( b , "innerRight" ) ) && ( this . adjustWidth ( ) , this . adjustHeight ( ) ) ) } var c = this . options . hideChecker . apply ( this , [ a ] ) ; c !== ! 1 && this . _hideView ( ) } , _hideView : function ( ) { this . fireEvent ( BI . Combo . EVENT _BEFORE _HIDEVIEW ) , this . options . destroyWhenHide === ! 0 ? ( this . popupView && this . popupView . destroy ( ) , this . popupView = null , this . _rendered = ! 1 ) : this . popupView && this . popupView . invisible ( ) , this . element . removeClass ( this . options . comboClass ) , BI . Widget . _renderEngine . createElement ( document ) . unbind ( "mousedown." + this . getName ( ) ) . unbind ( "mousewheel." + this . getName ( ) ) , this . fireEvent ( BI . Combo . EVENT _AFTER _HIDEVIEW ) } , _popupView : function ( a ) { this . _assertPopupViewRender ( ) , this . fireEvent ( BI . Combo . EVENT _BEFORE _POPUPVIEW ) , this . popupView . visible ( ) , this . adjustWidth ( a ) , this . adjustHeight ( a ) , this . element . addClass ( this . options . comboClass ) , BI . Widget . _renderEngine . createElement ( document ) . unbind ( "mousedown." + this . getName ( ) ) . unbind ( "mousewheel." + this . getName ( ) ) , BI . Widget . _renderEngine . createElement ( document ) . bind ( "mousedown." + this . getName ( ) , BI . bind ( this . _hideIf , this ) ) . bind ( "mousewheel." + this . getName ( ) , BI . bind ( this . _hideIf , this ) ) , this . fireEvent ( BI . Combo . EVENT _AFTER _POPUPVIEW ) } , adjustWidth : function ( a ) { var b = this . options ; if ( this . popupView && b . isNeedAdjustWidth === ! 0 ) { this . resetListWidth ( "" ) ; var c = this . popupView . element . outerWidth ( ) , d = this . element .
var a = this , b = this . options ; this . _initSwitcher ( ) , this . _initPullDownAction ( ) , this . switcher . on ( BI . Controller . EVENT _CHANGE , function ( b , c , d ) { a . isEnabled ( ) && a . isValid ( ) && ( b === BI . Events . EXPAND && a . _popupView ( ) , b === BI . Events . COLLAPSE && a . _hideView ( ) , b === BI . Events . EXPAND && ( a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , a . fireEvent ( BI . Switcher . EVENT _EXPAND ) ) , b === BI . Events . COLLAPSE && ( a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , a . isViewVisible ( ) && a . fireEvent ( BI . Switcher . EVENT _COLLAPSE ) ) , b === BI . Events . CLICK && a . fireEvent ( BI . Switcher . EVENT _TRIGGER _CHANGE , c , d ) ) } ) , this . element . hover ( function ( ) { a . isEnabled ( ) && a . switcher . isEnabled ( ) && a . element . addClass ( b . hoverClass ) } , function ( ) { a . isEnabled ( ) && a . switcher . isEnabled ( ) && a . element . removeClass ( b . hoverClass ) } ) , BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , element : this , items : [ { el : this . switcher } ] } ) , b . isDefaultInit && this . _assertPopupView ( ) } , _toggle : function ( ) { this . _assertPopupView ( ) , this . isExpanded ( ) ? this . _hideView ( ) : this . isEnabled ( ) && this . _popupView ( ) } , _initPullDownAction : function ( ) { var a = this , b = this . options , c = this . options . trigger . split ( "," ) ; BI . each ( c , function ( c , d ) { switch ( d ) { case "hover" : a . element [ d ] ( function ( b ) { a . isEnabled ( ) && a . switcher . isEnabled ( ) && ( a . _popupView ( ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . EXPAND , "" , a . switcher ) , a . fireEvent ( BI . Switcher . EVENT _EXPAND ) ) } , function ( ) { a . isEnabled ( ) && a . switcher . isEnabled ( ) && b . toggle && ( a . _hideView ( ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . COLLAPSE , "" , a . switcher ) , a . fireEvent ( BI . Switcher . EVENT _COLLAPSE ) ) } ) ; break ; default : d && a . element . off ( d + "." + a . getName ( ) ) . on ( d + "." + a . getName ( ) , BI . debounce ( function ( c ) { a . switcher . element . _ _isMouseInBounds _ _ ( c ) && a . isEnabled ( ) && a . switcher . isEnabled ( ) && ( b . toggle ? a . _toggle ( ) : a . _popupView ( ) , a . isExpanded ( ) ? ( a . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . EXPAND , "" , a . switcher ) , a . fireEvent ( BI . Switcher . EVENT _EXPAND ) ) : ( a . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . COLLAPSE , "" , a . switcher ) , a . fireEvent ( BI . Switcher . EVENT _COLLAPSE ) ) ) } , BI . EVENT _RESPONSE _TIME , { leading : ! 0 , trailing : ! 1 } ) ) } } ) } , _initSwitcher : function ( ) { this . switcher = BI . createWidget ( this . options . el , { value : this . options . value } ) } , _assertPopupView : function ( ) { var a = this , b = this . options ; this . _created || ( this . popupView = BI . createWidget ( b . popup , { type : "bi.button_group" , element : b . adapter && BI . Maskers . create ( this . getName ( ) , b . adapter , BI . extend ( { container : this } , b . masker ) ) , cls : "switcher-popup" , layouts : [ { type : "bi.vertical" , hgap : 0 , vgap : 0 } ] , value : b . value } , this ) , this . popupView . on ( BI . Controller . EVENT _CHANGE , function ( b , c , d ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , b === BI . Events . CLICK && a . fireEvent ( BI . Switcher . EVENT _CHANGE , c , d ) } ) , b . direction === BI . Direction . Custom || b . adapter || BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , element : this , items : [ { el : this . popupView } ] } ) , this . _created = ! 0 , BI . nextTick ( function ( ) { a . fireEvent ( BI . Switcher . EVENT _AFTER _INIT ) } ) ) } , _hideView : function ( ) { this . fireEvent ( BI . Switcher . EVENT _BEFORE _HIDEVIEW ) ; var a = this , b = this . options ; b . adapter ? BI . Maskers . hide ( a . getName ( ) ) : a . popupView && a . popupView . setVisible ( ! 1 ) , BI . nextTick ( function ( ) { b . adapter ? BI . Maskers . hide ( a . getName ( ) ) : a . popupView && a . popupView . setVisible ( ! 1 ) , a . element . removeClass ( b . switcherClass ) , a . fireEvent ( BI . Switcher . EVENT _AFTER _HIDEVIEW ) } ) } , _popupView : function ( ) { var a = this , b = this . options ; this . _assertPopupView ( ) , this . fireEvent ( BI . Switcher . EVENT _BEFORE _POPUPVIEW ) , b . adapter ? BI . Maskers . show ( this . getName ( ) ) : a . popupView . setVisible ( ! 0 ) , BI . nextTick ( function ( c ) { b . adapter ? BI . Maskers . show ( c ) : a . popupView . setVisible ( ! 0 ) , a . element . addClass ( b . switcherClass ) , a . fireEvent ( BI . Switcher . EVENT _AFTER _POPUPVIEW ) } , this . getName ( ) ) } , populate : function ( a ) { this . _assertPopupView ( ) , this . popupView . populate . apply ( this . popupView , arguments ) , this . switcher . populate . apply ( this . switcher , arguments ) } , _setEnable : function ( a ) { BI . Switcher . superclass . _setEnable . apply ( this , arguments ) , ! a && this . isViewVisible ( ) && this . _hideView ( ) } , setValue : function ( a ) { this . switcher . setValue ( a ) , BI . isNull ( this . popupView ) ? this . options . popup . value = a : this . popupView . setValue ( a ) } , getValue : function ( ) { return BI . isNull ( this . popupView ) ? this . options . popup . value : this . popupView . getValue ( ) } ,
} this . cache [ h ] . destroyed = ! 1 } } this . container . element . prepend ( k ) , this . container . element . append ( l ) , this . topBlank . setHeight ( this . cache [ e < 0 ? 0 : e ] . scrollTop ) ; var o = this . cache [ Math . min ( f , this . renderedIndex ) ] ; this . bottomBlank . setHeight ( this . tree . sumTo ( this . renderedIndex ) - o . scrollTop - o . height ) , BI . each ( g , function ( a , b ) { b && b . _destroy ( ) } ) } , _populate : function ( a ) { var b = this . options ; a && this . options . items !== a && ( this . options . items = a ) , this . tree = BI . PrefixIntervalTree . empty ( Math . ceil ( b . items . length / b . blockSize ) ) , this . _calculateBlocksToRender ( ) , this . element . scrollTop ( b . scrollTop ) } , _clearChildren : function ( ) { BI . each ( this . container . _children , function ( a , b ) { b && b . _destroy ( ) } ) , this . container . _children = { } , this . container . attr ( "items" , [ ] ) } , restore : function ( ) { this . renderedIndex = - 1 , this . _clearChildren ( ) , this . cache = { } , this . options . scrollTop = 0 , this . topBlank . setHeight ( 0 ) , this . bottomBlank . setHeight ( 0 ) } , populate : function ( a ) { a && this . options . items !== a && this . restore ( ) , this . _populate ( ) } , destroyed : function ( ) { this . restore ( ) } } ) , BI . shortcut ( "bi.virtual_list" , BI . VirtualList ) , BI . Pager = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . Pager . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-pager" , behaviors : { } , layouts : [ { type : "bi.horizontal" , hgap : 10 , vgap : 0 } ] , dynamicShow : ! 0 , dynamicShowFirstLast : ! 1 , dynamicShowPrevNext : ! 1 , pages : ! 1 , curr : function ( ) { return 1 } , groups : 0 , jump : BI . emptyFn , first : ! 1 , last : ! 1 , prev : "上一页" , next : "下一页" , firstPage : 1 , lastPage : function ( ) { return 1 } , hasPrev : BI . emptyFn , hasNext : BI . emptyFn } ) } , _init : function ( ) { BI . Pager . superclass . _init . apply ( this , arguments ) ; this . currPage = BI . result ( this . options , "curr" ) , this . _populate ( ) } , _populate : function ( ) { var a = this , b = this . options , c = [ ] , d = { } ; this . empty ( ) ; var e = BI . result ( b , "pages" ) , f = BI . result ( this , "currPage" ) , g = BI . result ( b , "groups" ) , h = BI . result ( b , "first" ) , i = BI . result ( b , "last" ) , j = BI . result ( b , "prev" ) , k = BI . result ( b , "next" ) ; e === ! 1 ? ( g = 0 , h = ! 1 , i = ! 1 ) : g > e && ( g = e ) , d . index = Math . ceil ( ( f + ( g > 1 && g !== e ? 1 : 0 ) ) / ( 0 === g ? 1 : g ) ) , ( ! b . dynamicShow && ! b . dynamicShowPrevNext || f > 1 ) && j !== ! 1 && ( BI . isKey ( j ) ? c . push ( { text : j , value : "prev" , disabled : e === ! 1 ? b . hasPrev ( f ) === ! 1 : ! ( f > 1 && j !== ! 1 ) } ) : c . push ( BI . extend ( { disabled : e === ! 1 ? b . hasPrev ( f ) === ! 1 : ! ( f > 1 && j !== ! 1 ) } , j ) ) ) , ( ! b . dynamicShow && ! b . dynamicShowFirstLast || d . index > 1 && 0 !== g ) && h && ( c . push ( { text : h , value : "first" , disabled : ! ( d . index > 1 && 0 !== g ) } ) , d . index > 1 && 0 !== g && c . push ( { type : "bi.label" , cls : "page-ellipsis" , text : "…" } ) ) , d . poor = Math . floor ( ( g - 1 ) / 2 ) , d . start = d . index > 1 ? f - d . poor : 1 , d . end = d . index > 1 ? function ( ) { var a = f + ( g - d . poor - 1 ) ; return a > e ? e : a } ( ) : g , d . end - d . start < g - 1 && ( d . start = d . end - g + 1 ) ; var l = d . start , m = d . end ; for ( h && i && d . index > 1 && 0 !== g && e > g && d . end < e && 0 !== g && ( l ++ , m -- ) ; l <= m ; l ++ ) l === f ? c . push ( { text : l , value : l , selected : ! 0 } ) : c . push ( { text : l , value : l } ) ; ( ! b . dynamicShow && ! b . dynamicShowFirstLast || e > g && d . end < e && 0 !== g ) && i && ( e > g && d . end < e && 0 !== g && c . push ( { type : "bi.label" , cls : "page-ellipsis" , text : "…" } ) , c . push ( { text : i , value : "last" , disabled : ! ( e > g && d . end < e && 0 !== g ) } ) ) , d . flow = ! j && 0 === g , ( ! b . dynamicShow && ! b . dynamicShowPrevNext && k || f !== e && k || d . flow ) && c . push ( function ( ) { return BI . isKey ( k ) ? e === ! 1 ? { text : k , value : "next" , disabled : b . hasNext ( f ) === ! 1 } : d . flow && f === e ? { text : k , value : "next" , disabled : ! 0 } : { text : k , value : "next" , disabled : ! ( f !== e && k || d . flow ) } : BI . extend ( { disabled : e === ! 1 ? b . hasNext ( f ) === ! 1 : ! ( f !== e && k || d . flow ) } , k ) } ( ) ) , this . button _group = BI . createWidget ( { type : "bi.button_group" , element : this , items : BI . createItems ( c , { cls : "bi-list-item-select bi-border-radius" , height : 23 , hgap : 10 } ) , behaviors : b . behaviors , layouts : b . layouts } ) , this . button _group . on ( BI . Controller . EVENT _CHANGE , function ( c , d , f ) { if ( c === BI . Events . CLICK ) { var g = a . button _group . getValue ( ) [ 0 ] ; switch ( g ) { case "first" : a . currPage = 1 ; break ; case "last" : a . currPage = e ; break ; case "prev" : a . currPage -- ; break ; case "next" : a . currPage ++ ; break ; default : a . currPage = g } b . jump . apply ( a , [ { pages : e , curr : a . currPage } ] ) , a . _populate ( ) , a . fireEvent ( BI . Pager . EVENT _CHANGE , f ) } a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . fireEvent ( BI . Pager . EVENT _AFTER _POPULATE ) } , getCurrentPage : function ( ) { return this . currPage } , setAllPages : function ( a ) { this . options . pages = a } , hasPrev : function ( a ) { a || ( a = 1 ) ; var b = this . options , c = this . options . pages ; ret
this . isValid ( ) && this . fireEvent ( BI . TextNode . 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 . TextNode . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.text_node" , BI . TextNode ) , BI . Editor = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var a = BI . Editor . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : "bi-editor bi-focus-shadow" , hgap : 4 , vgap : 2 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , tipType : "warning" , inputType : "text" , validationChecker : BI . emptyFn , quitChecker : BI . emptyFn , allowBlank : ! 1 , watermark : "" , errorText : "" } ) } , _init : function ( ) { BI . Editor . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . editor = this . addWidget ( BI . createWidget ( { type : "bi.input" , element : "<input type='" + b . inputType + "'/>" , root : ! 0 , value : b . value , watermark : b . watermark , validationChecker : b . validationChecker , quitChecker : b . quitChecker , allowBlank : b . allowBlank } ) ) , this . editor . element . css ( { width : "100%" , height : "100%" , border : "none" , outline : "none" , padding : "0" , margin : "0" } ) , BI . isKey ( this . options . watermark ) && this . _assertWaterMark ( ) ; var c = [ ] ; this . watermark && c . push ( { el : this . watermark , left : 3 , right : 3 , top : 0 , bottom : 0 } ) , c . push ( { el : this . editor , left : 0 , right : 0 , top : 0 , bottom : 0 } ) ; var d = [ { el : { type : "bi.absolute" , ref : function ( b ) { a . contentWrapper = b } , items : c } , left : b . hgap + b . lgap , right : b . hgap + b . rgap , top : b . vgap + b . tgap , bottom : b . vgap + b . bgap } ] ; BI . createWidget ( { type : "bi.absolute" , element : this , items : d } ) , this . editor . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Input . EVENT _FOCUS , function ( ) { a . _checkError ( ) , a . element . addClass ( "bi-editor-focus" ) , a . fireEvent ( BI . Editor . EVENT _FOCUS , arguments ) } ) , this . editor . on ( BI . Input . EVENT _BLUR , function ( ) { a . _setErrorVisible ( ! 1 ) , a . element . removeClass ( "bi-editor-focus" ) , a . fireEvent ( BI . Editor . EVENT _BLUR , arguments ) } ) , this . editor . on ( BI . Input . EVENT _CLICK , function ( ) { a . fireEvent ( BI . Editor . EVENT _CLICK , arguments ) } ) , this . editor . on ( BI . Input . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Editor . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Input . EVENT _KEY _DOWN , function ( b ) { a . fireEvent ( BI . Editor . EVENT _KEY _DOWN , arguments ) } ) , this . editor . on ( BI . Input . EVENT _QUICK _DOWN , function ( b ) { b . keyCode !== BI . KeyCode . TAB && a . watermark && a . watermark . invisible ( ) } ) , this . editor . on ( BI . Input . EVENT _VALID , function ( ) { a . _checkWaterMark ( ) , a . _setErrorVisible ( ! 1 ) , a . fireEvent ( BI . Editor . EVENT _VALID , arguments ) } ) , this . editor . on ( BI . Input . EVENT _ERROR , function ( ) { a . _checkWaterMark ( ) , a . fireEvent ( BI . Editor . EVENT _ERROR , arguments ) , a . _setErrorVisible ( a . isEditing ( ) ) } ) , this . editor . on ( BI . Input . EVENT _RESTRICT , function ( ) { a . _checkWaterMark ( ) ; var b = a . _setErrorVisible ( ! 0 ) ; b && b . element . fadeOut ( 100 , function ( ) { b . element . fadeIn ( 100 ) } ) , a . fireEvent ( BI . Editor . EVENT _RESTRICT , arguments ) } ) , this . editor . on ( BI . Input . EVENT _EMPTY , function ( ) { a . _checkWaterMark ( ) , a . fireEvent ( BI . Editor . EVENT _EMPTY , arguments ) } ) , this . editor . on ( BI . Input . EVENT _ENTER , function ( ) { a . fireEvent ( BI . Editor . EVENT _ENTER , arguments ) } ) , this . editor . on ( BI . Input . EVENT _SPACE , function ( ) { a . fireEvent ( BI . Editor . EVENT _SPACE , arguments ) } ) , this . editor . on ( BI . Input . EVENT _BACKSPACE , function ( ) { a . fireEvent ( BI . Editor . EVENT _BACKSPACE , arguments ) } ) , this . editor . on ( BI . Input . EVENT _REMOVE , function ( ) { a . fireEvent ( BI . Editor . EVENT _REMOVE , arguments ) } ) , this . editor . on ( BI . Input . EVENT _START , function ( ) { a . fireEvent ( BI . Editor . EVENT _START , arguments ) } ) , this . editor . on ( BI . Input . EVENT _PAUSE , function ( ) { a . fireEvent ( BI . Editor . EVENT _PAUSE , arguments ) } ) , this . editor . on ( BI . Input . EVENT _STOP , function ( ) { a . fireEvent ( BI . Editor . EVENT _STOP , arguments ) } ) , this . editor . on ( BI . Input . EVENT _CONFIRM , function ( ) { a . fireEvent ( BI . Editor . EVENT _CONFIRM , arguments ) } ) , this . editor . on ( BI . Input . EVENT _CHANGE _CONFIRM , function ( ) { a . fireEvent ( BI . Editor . EVENT _CHANGE _CONFIRM , arguments ) } ) , this . element . click ( function ( a ) { return a . stopPropa
this . setValid ( a . allowBlank === ! 0 && "" == BI . trim ( b ) || BI . isNotEmptyString ( BI . trim ( b ) ) && a . validationChecker . apply ( this , [ BI . trim ( b ) ] ) !== ! 1 ) } , focus : function ( ) { if ( ! this . element . is ( ":visible" ) ) throw new Error ( "input输入框在不可见下不能focus" ) ; ! this . _isEditing == ! 0 && ( this . element . focus ( ) , this . selectAll ( ) ) } , blur : function ( ) { if ( ! this . element . is ( ":visible" ) ) throw new Error ( "input输入框在不可见下不能blur" ) ; this . _isEditing === ! 0 && ( this . element . blur ( ) , this . _blurDebounce ( ) ) } , selectAll : function ( ) { if ( ! this . element . is ( ":visible" ) ) throw new Error ( "input输入框在不可见下不能select" ) ; this . element . select ( ) , this . _isEditing = ! 0 } , setValue : function ( a ) { this . element . val ( a ) , BI . nextTick ( BI . bind ( function ( ) { this . _checkValidationOnValueChange ( ) , this . _defaultState ( ) , this . isValid ( ) && ( this . _lastValidValue = this . _lastSubmitValue = this . getValue ( ) ) } , this ) ) } , getValue : function ( ) { return this . element . val ( ) || "" } , isEditing : function ( ) { return this . _isEditing } , getLastValidValue : function ( ) { return this . _lastValidValue } , getLastChangedValue : function ( ) { return this . _lastChangedValue } , _setValid : function ( ) { BI . Input . superclass . _setValid . apply ( this , arguments ) , this . isValid ( ) ? ( this . _lastChangedValue = this . getValue ( ) , this . element . removeClass ( "bi-input-error" ) , this . fireEvent ( BI . Input . EVENT _VALID , BI . trim ( this . getValue ( ) ) , this ) ) : ( this . _lastChangedValue === this . getValue ( ) && ( this . _lastChangedValue = null ) , this . element . addClass ( "bi-input-error" ) , this . fireEvent ( BI . Input . EVENT _ERROR , BI . trim ( this . getValue ( ) ) , this ) ) } , _setEnable : function ( a ) { BI . Input . superclass . _setEnable . apply ( this , [ a ] ) , this . element [ 0 ] . disabled = ! a } } ) , BI . Input . EVENT _CHANGE = "EVENT_CHANGE" , BI . Input . EVENT _FOCUS = "EVENT_FOCUS" , BI . Input . EVENT _CLICK = "EVENT_CLICK" , BI . Input . EVENT _BLUR = "EVENT_BLUR" , BI . Input . EVENT _KEY _DOWN = "EVENT_KEY_DOWN" , BI . Input . EVENT _QUICK _DOWN = "EVENT_QUICK_DOWN" , BI . Input . EVENT _SPACE = "EVENT_SPACE" , BI . Input . EVENT _BACKSPACE = "EVENT_BACKSPACE" , BI . Input . EVENT _START = "EVENT_START" , BI . Input . EVENT _PAUSE = "EVENT_PAUSE" , BI . Input . EVENT _STOP = "EVENT_STOP" , BI . Input . EVENT _CHANGE _CONFIRM = "EVENT_CHANGE_CONFIRM" , BI . Input . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . Input . EVENT _REMOVE = "EVENT_REMOVE" , BI . Input . EVENT _EMPTY = "EVENT_EMPTY" , BI . Input . EVENT _VALID = "EVENT_VALID" , BI . Input . EVENT _ERROR = "EVENT_ERROR" , BI . Input . EVENT _ENTER = "EVENT_ENTER" , BI . Input . EVENT _RESTRICT = "EVENT_RESTRICT" , BI . shortcut ( "bi.input" , BI . Input ) , BI . ImageRadio = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { var a = BI . ImageRadio . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-radio radio-icon" , selected : ! 1 , handler : BI . emptyFn , width : 16 , height : 16 , iconWidth : 16 , iconHeight : 16 } ) } , _init : function ( ) { BI . ImageRadio . superclass . _init . apply ( this , arguments ) } , doClick : function ( ) { BI . ImageRadio . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . ImageRadio . EVENT _CHANGE ) } } ) , BI . ImageRadio . EVENT _CHANGE = BI . IconButton . EVENT _CHANGE , BI . shortcut ( "bi.image_radio" , BI . ImageRadio ) , BI . Radio = BI . inherit ( BI . BasicButton , { props : { baseCls : "bi-radio" , selected : ! 1 , handler : BI . emptyFn , width : 16 , height : 16 , iconWidth : 14 , iconHeight : 14 } , render : function ( ) { var a = this , b = this . options ; return { type : "bi.center_adapt" , element : this . element , items : [ { type : "bi.layout" , cls : "radio-content" , ref : function ( b ) { a . radio = b } , width : b . iconWidth , height : b . iconHeight } ] } } , _setEnable : function ( a ) { BI . Radio . superclass . _setEnable . apply ( this , arguments ) , a === ! 0 ? this . radio . element . removeClass ( "base-disabled disabled" ) : this . radio . element . addClass ( "base-disabled disabled" ) } , doClick : function ( ) { BI . Radio . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . Radio . EVENT _CHANGE ) } , setSelected : function ( a ) { BI . Radio . superclass . setSelected . apply ( this , arguments ) , a ? this . radio . element . addClass ( "bi-high-light-background" ) : this . radio . element . removeClass ( "bi-high-light-background" ) } } ) , BI . Radio . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.radio" , BI . Radio ) , BI . AbstractLabel = BI . inherit ( BI . Single , { _defaultConfig : function ( a ) { var b = BI . AbstractLabel . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( b , { textAlign : "center" , whiteSpace : "nowrap" , textWidth : null , textHeight : null , hgap : 0 ,
for ( var d = 0 , e = c . length ; b . tagName && d < e ; d ++ ) if ( tools . eqs ( b . tagName , c [ d ] . tagName ) && null !== b . getAttribute ( c [ d ] . attrName ) ) return b ; b = b . parentNode } return null } , getNodeMainDom : function ( a ) { return $ ( a ) . parent ( "li" ) . get ( 0 ) || $ ( a ) . parentsUntil ( "li" ) . parent ( ) . get ( 0 ) } , isChildOrSelf : function ( a , b ) { return $ ( a ) . closest ( "#" + b ) . length > 0 } , uCanDo : function ( a , b ) { return ! 0 } } , view = { addNodes : function ( a , b , c , d ) { if ( ! a . data . keep . leaf || ! b || b . isParent ) if ( tools . isArray ( c ) || ( c = [ c ] ) , a . data . simpleData . enable && ( c = data . transformTozTreeFormat ( a , c ) ) , b ) { var e = $$ ( b , consts . id . SWITCH , a ) , f = $$ ( b , consts . id . ICON , a ) , g = $$ ( b , consts . id . UL , a ) ; b . open || ( view . replaceSwitchClass ( b , e , consts . folder . CLOSE ) , view . replaceIcoClass ( b , f , consts . folder . CLOSE ) , b . open = ! 1 , g . css ( { display : "none" } ) ) , data . addNodesData ( a , b , c ) , view . createNodes ( a , b . level + 1 , c , b ) , d || view . expandCollapseParentNode ( a , b , ! 0 ) } else data . addNodesData ( a , data . getRoot ( a ) , c ) , view . createNodes ( a , 0 , c , null ) } , appendNodes : function ( a , b , c , d , e , f ) { if ( ! c ) return [ ] ; for ( var g = [ ] , h = a . data . key . children , i = 0 , j = c . length ; i < j ; i ++ ) { var k = c [ i ] ; if ( e ) { var l = d ? d : data . getRoot ( a ) , m = l [ h ] , n = m . length == c . length && 0 == i , o = i == c . length - 1 ; data . initNode ( a , b , k , d , n , o , f ) , data . addNodeCache ( a , k ) } var p = [ ] ; k [ h ] && k [ h ] . length > 0 && ( p = view . appendNodes ( a , b + 1 , k [ h ] , k , e , f && k . open ) ) , f && ( view . makeDOMNodeMainBefore ( g , a , k ) , view . makeDOMNodeLine ( g , a , k ) , data . getBeforeA ( a , k , g ) , view . makeDOMNodeNameBefore ( g , a , k ) , data . getInnerBeforeA ( a , k , g ) , view . makeDOMNodeIcon ( g , a , k ) , data . getInnerAfterA ( a , k , g ) , view . makeDOMNodeNameAfter ( g , a , k ) , data . getAfterA ( a , k , g ) , k . isParent && k . open && view . makeUlHtml ( a , k , g , p . join ( "" ) ) , view . makeDOMNodeMainAfter ( g , a , k ) , data . addCreatedNode ( a , k ) ) } return g } , appendParentULDom : function ( a , b ) { var c = [ ] , d = $$ ( b , a ) ; ! d . get ( 0 ) && b . parentTId && ( view . appendParentULDom ( a , b . getParentNode ( ) ) , d = $$ ( b , a ) ) ; var e = $$ ( b , consts . id . UL , a ) ; e . get ( 0 ) && e . remove ( ) ; var f = a . data . key . children , g = view . appendNodes ( a , b . level + 1 , b [ f ] , b , ! 1 , ! 0 ) ; view . makeUlHtml ( a , b , c , g . join ( "" ) ) , d . append ( c . join ( "" ) ) } , asyncNode : function ( setting , node , isSilent , callback ) { var i , l ; if ( node && ! node . isParent ) return tools . apply ( callback ) , ! 1 ; if ( node && node . isAjaxing ) return ! 1 ; if ( 0 == tools . apply ( setting . callback . beforeAsync , [ setting . treeId , node ] , ! 0 ) ) return tools . apply ( callback ) , ! 1 ; if ( node ) { node . isAjaxing = ! 0 ; var icoObj = $$ ( node , consts . id . ICON , setting ) ; icoObj . attr ( { style : "" , "class" : consts . className . BUTTON + " " + consts . className . ICO _LOADING } ) } var tmpParam = { } ; for ( i = 0 , l = setting . async . autoParam . length ; node && i < l ; i ++ ) { var pKey = setting . async . autoParam [ i ] . split ( "=" ) , spKey = pKey ; pKey . length > 1 && ( spKey = pKey [ 1 ] , pKey = pKey [ 0 ] ) , tmpParam [ spKey ] = node [ pKey ] } if ( tools . isArray ( setting . async . otherParam ) ) for ( i = 0 , l = setting . async . otherParam . length ; i < l ; i += 2 ) tmpParam [ setting . async . otherParam [ i ] ] = setting . async . otherParam [ i + 1 ] ; else for ( var p in setting . async . otherParam ) tmpParam [ p ] = setting . async . otherParam [ p ] ; var _tmpV = data . getRoot ( setting ) . _ver ; return $ . ajax ( { contentType : setting . async . contentType , cache : ! 1 , type : setting . async . type , url : tools . apply ( setting . async . url , [ setting . treeId , node ] , setting . async . url ) , data : tmpParam , dataType : setting . async . dataType , success : function ( msg ) { if ( _tmpV == data . getRoot ( setting ) . _ver ) { var newNodes = [ ] ; try { newNodes = msg && 0 != msg . length ? "string" == typeof msg ? eval ( "(" + msg + ")" ) : msg : [ ] } catch ( err ) { newNodes = msg } node && ( node . isAjaxing = null , node . zAsync = ! 0 ) , view . setNodeLineIcos ( setting , node ) , newNodes && "" !== newNodes ? ( newNodes = tools . apply ( setting . async . dataFilter , [ setting . treeId , node , newNodes ] , newNodes ) , view . addNodes ( setting , node , newNodes ? tools . clone ( newNodes ) : [ ] , ! ! isSilent ) ) : view . addNodes ( setting , node , [ ] , ! ! isSilent ) , setting . treeObj . trigger ( consts . event . ASYNC _SUCCESS , [ setting . treeId , node , msg ] ) , tools . apply ( callback ) } } , error : function ( a , b , c ) { _tmpV == data . getRoot ( setting ) . _ver && ( node && ( node . isAjaxing = null ) , view . setNodeLineIcos ( setting , node ) , setting . treeObj . trigger ( consts . event . ASYNC _ERROR , [ setting . treeId , node , a , b , c ] ) ) } } ) , ! 0 } , cancelPreSelectedNode : function ( a , b , c ) { var d , e , f = data . getRoot ( a ) . curSelectedList ; for ( d = f . length - 1 ; d >= 0 ; d -- ) if ( e = f [ d ] , b === e || ! b && ( ! c || c !== e ) ) { if ( $$ ( e , consts . id . A , a ) . removeClass ( consts . node . CURSELECTED ) , b ) { data . removeSelectedNode ( a , b ) , a . treeObj . trigger ( consts . event . UNSELECT
BI . HalfButton . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . HalfButton . EVENT _CHANGE ) } } ) , BI . HalfButton . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.half_button" , BI . HalfButton ) , BI . MultiSelectItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectItem . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-multi-select-item" , height : 24 , logic : { dynamic : ! 1 } , iconWrapperWidth : 26 } ) } , _init : function ( ) { BI . MultiSelectItem . 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" , cls : "list-item-text" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : b . height , height : b . height , hgap : b . hgap , rgap : b . rgap , text : b . text , keyword : b . keyword , value : b . value , py : b . py } ) , this . checkbox . on ( BI . Controller . EVENT _CHANGE , function ( b ) { b === BI . Events . CLICK && a . setSelected ( a . isSelected ( ) ) } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "horizontal" , BI . extend ( b . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "left" , { type : "bi.center_adapt" , items : [ this . checkbox ] , width : b . iconWrapperWidth } , this . text ) } ) ) ) ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . MultiSelectItem . superclass . doClick . apply ( this , arguments ) , this . checkbox . setSelected ( this . isSelected ( ) ) , this . isValid ( ) && this . fireEvent ( BI . MultiSelectItem . EVENT _CHANGE , this . getValue ( ) , this ) } , setSelected : function ( a ) { BI . MultiSelectItem . superclass . setSelected . apply ( this , arguments ) , this . checkbox . setSelected ( a ) } } ) , BI . MultiSelectItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multi_select_item" , BI . MultiSelectItem ) , BI . SingleSelectIconTextItem = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectIconTextItem . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-single-select-icon-text-item bi-list-item-active" , iconCls : "" , height : 24 } ) } , _init : function ( ) { BI . SingleSelectIconTextItem . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . text = BI . createWidget ( { type : "bi.icon_text_item" , element : this , cls : b . iconCls , once : b . once , iconWrapperWidth : b . iconWrapperWidth , selected : b . selected , height : b . height , iconHeight : b . iconHeight , iconWidth : b . iconWidth , text : b . text , keyword : b . keyword , value : b . value , py : b . py } ) , this . text . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) } , isSelected : function ( ) { return this . text . isSelected ( ) } , setSelected : function ( a ) { this . text . setSelected ( a ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . SingleSelectIconTextItem . superclass . doClick . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.single_select_icon_text_item" , BI . SingleSelectIconTextItem ) , BI . SingleSelectItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectItem . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-single-select-item bi-list-item-active" , hgap : 10 , height : 24 , textAlign : "left" } ) } , _init : function ( ) { BI . SingleSelectItem . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . text = BI . createWidget ( { type : "bi.label" , element : this , textAlign : a . textAlign , whiteSpace : "nowrap" , textHeight : a . height , height : a . height , hgap : a . hgap , text : a . text , keyword : a . keyword , value : a . value , title : a . title || a . text , warningTitle : a . warningTitle , py : a . py } ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . SingleSelectItem . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . SingleSelectItem . EVENT _CHANGE , this . isSelected ( ) , this ) } , setSelected : function ( a ) { BI . SingleSelectItem . superclass . setSelected . apply ( this , arguments ) } } ) , BI . SingleSelectItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.single_select_item" , BI . SingleSelectItem ) , BI . SingleSelectRadioItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectRadioI
this . currentYear = BI . getDate ( ) . getFullYear ( ) ; var c = this . _yearCreator ( b . year || this . currentYear ) , d = c . length , e = BI . makeArray ( d , "" ) , f = [ 0 , 6 , 1 , 7 , 2 , 8 , 3 , 9 , 4 , 10 , 5 , 11 ] ; BI . each ( c , function ( a , b ) { e [ a ] = c [ f [ a ] ] } ) ; var g = [ ] ; g . push ( e . slice ( 0 , 2 ) ) , g . push ( e . slice ( 2 , 4 ) ) , g . push ( e . slice ( 4 , 6 ) ) , g . push ( e . slice ( 6 , 8 ) ) , g . push ( e . slice ( 8 , 10 ) ) , g . push ( e . slice ( 10 , 12 ) ) , g = BI . map ( g , function ( a , b ) { return BI . map ( b , function ( a , b ) { return BI . extend ( b , { type : "bi.text_item" , cls : "bi-list-item-select" , textAlign : "center" , whiteSpace : "normal" , once : ! 1 , forceSelected : ! 0 , height : 24 , width : 45 , value : b . text , disabled : b . disabled } ) } ) } ) , this . years = BI . createWidget ( { type : "bi.button_group" , behaviors : b . behaviors , items : BI . createItems ( g , { } ) , layouts : [ BI . LogicFactory . createLogic ( "table" , BI . extend ( { } , b . logic , { columns : 2 , rows : 6 , columnSize : [ . 5 , . 5 ] , rowSize : 24 } ) ) , { type : "bi.center_adapt" , vgap : 1 } ] } ) , this . years . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "vertical" , BI . extend ( { } , b . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "top" , this . years ) } ) ) ) ) } , isFrontYear : function ( ) { var a = this . options , b = a . year ; return b = 0 | b , ! ! BI . checkDateVoid ( BI . YearCalendar . getStartYear ( b ) - 1 , 1 , 1 , a . min , a . max ) [ 0 ] } , isFinalYear : function ( ) { var a = this . options , b = ( this . _const , a . year ) ; return b = 0 | b , ! ! BI . checkDateVoid ( BI . YearCalendar . getEndYear ( b ) + 1 , 1 , 1 , a . min , a . max ) [ 0 ] } , setValue : function ( a ) { this . years . setValue ( [ a ] ) } , getValue : function ( ) { return this . years . getValue ( ) [ 0 ] } } ) , BI . extend ( BI . YearCalendar , { INTERVAL : 12 , getStartYear : function ( a ) { var b = BI . getDate ( ) . getFullYear ( ) ; return a - ( ( a - b + 3 ) % BI . YearCalendar . INTERVAL + 12 ) % BI . YearCalendar . INTERVAL } , getEndYear : function ( a ) { return BI . YearCalendar . getStartYear ( a ) + BI . YearCalendar . INTERVAL - 1 } , getPageByYear : function ( a ) { var b = BI . getDate ( ) . getFullYear ( ) ; return a = BI . YearCalendar . getStartYear ( a ) , ( a - b + 3 ) / BI . YearCalendar . INTERVAL } } ) , BI . shortcut ( "bi.year_calendar" , BI . YearCalendar ) , BI . ArrowTreeGroupNodeCheckbox = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { return BI . extend ( BI . ArrowTreeGroupNodeCheckbox . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-arrow-group-node-checkbox" } ) } , setSelected : function ( a ) { BI . ArrowTreeGroupNodeCheckbox . superclass . setSelected . apply ( this , arguments ) , a ? this . element . removeClass ( "expander-right-font" ) . addClass ( "expander-down-font" ) : this . element . removeClass ( "expander-down-font" ) . addClass ( "expander-right-font" ) } } ) , BI . shortcut ( "bi.arrow_group_node_checkbox" , BI . ArrowTreeGroupNodeCheckbox ) , BI . CheckingMarkNode = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { return BI . extend ( BI . CheckingMarkNode . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "check-mark-font" } ) } , _init : function ( ) { BI . CheckingMarkNode . superclass . _init . apply ( this , arguments ) , this . setSelected ( this . options . selected ) } , setSelected : function ( a ) { BI . CheckingMarkNode . superclass . setSelected . apply ( this , arguments ) , a === ! 0 ? this . element . addClass ( "check-mark-font" ) : this . element . removeClass ( "check-mark-font" ) } } ) , BI . shortcut ( "bi.checking_mark_node" , BI . CheckingMarkNode ) , BI . FirstTreeNodeCheckbox = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { return BI . extend ( BI . FirstTreeNodeCheckbox . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "tree-collapse-icon-type2" , iconWidth : 24 , iconHeight : 24 } ) } , setSelected : function ( a ) { BI . FirstTreeNodeCheckbox . superclass . setSelected . apply ( this , arguments ) , a === ! 0 ? this . element . addClass ( "tree-expand-icon-type2" ) : this . element . removeClass ( "tree-expand-icon-type2" ) } } ) , BI . shortcut ( "bi.first_tree_node_checkbox" , BI . FirstTreeNodeCheckbox ) , BI . LastTreeNodeCheckbox = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { return BI . extend ( BI . LastTreeNodeCheckbox . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "tree-collapse-icon-type4" , iconWidth : 24 , iconHeight : 24 } ) } , setSelected : function ( a ) { BI . LastTreeNodeCheckbox . superclass . setSelected . apply ( this , arguments ) , a === ! 0 ? this . element . addClass ( "tree-expand-icon-type4" ) : this . element . removeClass ( "tree-expand-icon-type4" ) } } ) , BI . shortcut ( "bi.last_tree_node_checkbox" , BI . LastTreeNodeCheckbox ) , BI . MidTreeNodeCheckbox = BI . inherit ( BI . IconButt
a . fireEvent ( BI . BubbleCombo . EVENT _COLLAPSE , arguments ) } ) , this . combo . on ( BI . Combo . EVENT _AFTER _INIT , function ( ) { a . fireEvent ( BI . BubbleCombo . EVENT _AFTER _INIT , arguments ) } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { a . fireEvent ( BI . BubbleCombo . EVENT _BEFORE _POPUPVIEW , arguments ) } ) , this . combo . on ( BI . Combo . EVENT _AFTER _POPUPVIEW , function ( ) { a . _showTriangle ( ) , a . fireEvent ( BI . BubbleCombo . EVENT _AFTER _POPUPVIEW , arguments ) } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _HIDEVIEW , function ( ) { a . _hideTriangle ( ) , a . fireEvent ( BI . BubbleCombo . EVENT _BEFORE _HIDEVIEW , arguments ) } ) , this . combo . on ( BI . Combo . EVENT _AFTER _HIDEVIEW , function ( ) { a . fireEvent ( BI . BubbleCombo . EVENT _AFTER _HIDEVIEW , arguments ) } ) } , _getAdjustLength : function ( ) { return this . _const . TRIANGLE _LENGTH + this . options . adjustLength } , _createTriangle : function ( a ) { var b = { } , c = { } , d = this . options . adjustLength , e = this . element . offset ( ) , f = e . left , g = e . left + this . element . outerWidth ( ) , h = e . top , i = e . top + this . element . outerHeight ( ) ; switch ( a ) { case "left" : b = { top : h , height : this . element . outerHeight ( ) , left : f - d - this . _const . TRIANGLE _LENGTH } , c = { width : this . _const . TRIANGLE _LENGTH } ; break ; case "right" : b = { top : h , height : this . element . outerHeight ( ) , left : g + d } , c = { width : this . _const . TRIANGLE _LENGTH } ; break ; case "top" : b = { left : f , width : this . element . outerWidth ( ) , top : h - d - this . _const . TRIANGLE _LENGTH } , c = { height : this . _const . TRIANGLE _LENGTH } ; break ; case "bottom" : b = { left : f , width : this . element . outerWidth ( ) , top : i + d } , c = { height : this . _const . TRIANGLE _LENGTH } } this . triangle && this . triangle . destroy ( ) , this . triangle = BI . createWidget ( c , { type : "bi.center_adapt" , cls : "button-combo-triangle-wrapper" , items : [ { type : "bi.layout" , cls : "bubble-combo-triangle-" + a } ] } ) , b . el = this . triangle , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ b ] } ) } , _createLeftTriangle : function ( ) { this . _createTriangle ( "left" ) } , _createRightTriangle : function ( ) { this . _createTriangle ( "right" ) } , _createTopTriangle : function ( ) { this . _createTriangle ( "top" ) } , _createBottomTriangle : function ( ) { this . _createTriangle ( "bottom" ) } , _showTriangle : function ( ) { var a = this . combo . getPopupPosition ( ) ; switch ( a . dir ) { case "left,top" : case "left,bottom" : this . _createLeftTriangle ( ) ; break ; case "right,top" : case "right,bottom" : this . _createRightTriangle ( ) ; break ; case "top,left" : case "top,right" : this . _createTopTriangle ( ) ; break ; case "bottom,left" : case "bottom,right" : this . _createBottomTriangle ( ) } } , _hideTriangle : function ( ) { this . triangle && this . triangle . destroy ( ) , this . triangle = null } , hideView : function ( ) { this . _hideTriangle ( ) , this . combo && this . combo . hideView ( ) } , showView : function ( ) { this . combo && this . combo . showView ( ) } , isViewVisible : function ( ) { return this . combo . isViewVisible ( ) } } ) , BI . BubbleCombo . EVENT _TRIGGER _CHANGE = "EVENT_TRIGGER_CHANGE" , BI . BubbleCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . BubbleCombo . EVENT _EXPAND = "EVENT_EXPAND" , BI . BubbleCombo . EVENT _COLLAPSE = "EVENT_COLLAPSE" , BI . BubbleCombo . EVENT _AFTER _INIT = "EVENT_AFTER_INIT" , BI . BubbleCombo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . BubbleCombo . EVENT _AFTER _POPUPVIEW = "EVENT_AFTER_POPUPVIEW" , BI . BubbleCombo . EVENT _BEFORE _HIDEVIEW = "EVENT_BEFORE_HIDEVIEW" , BI . BubbleCombo . EVENT _AFTER _HIDEVIEW = "EVENT_AFTER_HIDEVIEW" , BI . shortcut ( "bi.bubble_combo" , BI . BubbleCombo ) , BI . BubblePopupView = BI . inherit ( BI . PopupView , { _defaultConfig : function ( ) { var a = BI . BubblePopupView . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : a . baseCls + " bi-bubble-popup-view" , minWidth : 220 , maxWidth : 300 , minHeight : 90 } ) } , _init : function ( ) { BI . BubblePopupView . superclass . _init . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.bubble_popup_view" , BI . BubblePopupView ) , BI . BubblePopupBarView = BI . inherit ( BI . BubblePopupView , { _defaultConfig : function ( ) { return BI . extend ( BI . BubblePopupBarView . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-bubble-bar-popup-view" , buttons : [ { value : ! 1 , text : BI . i18nText ( "BI-Basic_Cancel" ) , ghost : ! 0 } , { text : BI . i18nText ( BI . i18nText ( "BI-Basic_Sure" ) ) , value : ! 0 } ] } ) } , _init : function ( ) { BI . BubblePopupBarView . superclass . _init . apply ( this , arguments ) } , _createToolBar : function ( ) { var a = this . options , b = this , c = [ ] ; return BI . each ( a . buttons , function ( a , d ) { BI . isWidget ( d ) ? c . push ( d ) : c . push ( BI . extend ( { type : "bi.button" , height : 24 , handler : function ( a ) { b . fireEvent ( BI
BI . ClearEditor . EVENT _ERROR = "EVENT_ERROR" , BI . ClearEditor . EVENT _ENTER = "EVENT_ENTER" , BI . ClearEditor . EVENT _RESTRICT = "EVENT_RESTRICT" , BI . ClearEditor . EVENT _REMOVE = "EVENT_REMOVE" , BI . ClearEditor . EVENT _EMPTY = "EVENT_EMPTY" , BI . shortcut ( "bi.clear_editor" , BI . ClearEditor ) , BI . ShelterEditor = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var a = BI . ShelterEditor . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-shelter-editor" , hgap : 4 , vgap : 2 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , validationChecker : BI . emptyFn , quitChecker : BI . emptyFn , allowBlank : ! 0 , watermark : "" , errorText : "" , height : 24 , textAlign : "left" } ) } , _init : function ( ) { BI . ShelterEditor . 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 : "shelter-editor-text" , title : b . title , warningTitle : b . warningTitle , tipType : b . tipType , textAlign : b . textAlign , height : b . height , hgap : b . hgap } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . text , left : 0 , right : 0 , top : 0 , bottom : 0 } ] } ) , this . text . on ( BI . Controller . EVENT _CHANGE , function ( ) { arguments [ 2 ] = a , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . text . on ( BI . TextButton . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _CLICK _LABEL ) } ) , 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 . ShelterEditor . EVENT _FOCUS , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _BLUR , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _BLUR , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CLICK , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _CLICK , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _KEY _DOWN , function ( b ) { a . fireEvent ( BI . ShelterEditor . EVENT _KEY _DOWN , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _VALID , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _VALID , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CONFIRM , function ( ) { a . _showHint ( ) , a . _checkText ( ) , a . fireEvent ( BI . ShelterEditor . EVENT _CONFIRM , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CHANGE _CONFIRM , function ( ) { a . _showHint ( ) , a . _checkText ( ) , a . fireEvent ( BI . ShelterEditor . EVENT _CHANGE _CONFIRM , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _START , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _START , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _PAUSE , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _PAUSE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _STOP , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _STOP , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _SPACE , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _SPACE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _ERROR , function ( ) { a . _checkText ( ) , a . fireEvent ( BI . ShelterEditor . EVENT _ERROR , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _ENTER , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _ENTER , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _RESTRICT , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _RESTRICT , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _EMPTY , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _EMPTY , arguments ) } ) , BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , element : this , items : [ this . editor ] } ) , this . _showHint ( ) , a . _checkText ( ) , BI . isKey ( b . keyword ) && this . text . doRedMark ( b . keyword ) } , _checkText : function ( ) { var a = this . options ; "" === this . editor . getValue ( ) ? ( this . text . setValue ( a . watermark || "" ) , this . text . element . addClass ( "bi-water-mark" ) ) : ( this . text . setValue ( this . editor . getValue ( ) ) , this . text . element . removeClass ( "bi-water-mark" ) ) } , _showInput : function ( ) { this . editor . visible ( ) , this . text . invisible ( ) } , _showHint : function ( ) { this . editor . invisible ( ) , this . text . visible ( ) } , setWaterMark : function ( a ) { this . options . watermark = a , this . editor . setWaterMark ( a ) } , setTitle : function ( a ) { this . text . setTitle ( a ) } , setWarningTitle : function ( a ) { this . text . setWarningTitle ( a ) } , focus : functi
baseCls : "bi-linear-segment bi-split-bottom" , items : [ ] , height : 29 } , render : function ( ) { var a = this , b = this . options ; return { type : "bi.button_group" , items : BI . createItems ( b . items , { type : "bi.linear_segment_button" , height : b . height - 1 } ) , layout : [ { type : "bi.center" } ] , listeners : [ { eventName : "__EVENT_CHANGE__" , action : function ( ) { a . fireEvent ( "__EVENT_CHANGE__" , arguments ) } } , { eventName : "EVENT_CHANGE" , action : function ( ) { a . fireEvent ( "EVENT_CHANGE" ) } } ] , ref : function ( ) { a . buttonGroup = this } } } , setValue : function ( a ) { this . buttonGroup . setValue ( a ) } , setEnabledValue : function ( a ) { this . buttonGroup . setEnabledValue ( a ) } , getValue : function ( ) { return this . buttonGroup . getValue ( ) } } ) , BI . shortcut ( "bi.linear_segment" , BI . LinearSegment ) , BI . SelectList = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SelectList . 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 , toolbar : { type : "bi.multi_select_bar" , iconWrapperWidth : 36 } , el : { type : "bi.list_pane" } } ) } , _init : function ( ) { BI . SelectList . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . toolbar = BI . createWidget ( b . toolbar ) , this . allSelected = ! 1 , this . toolbar . on ( BI . Controller . EVENT _CHANGE , function ( b , c , d ) { a . allSelected = this . isSelected ( ) , b === BI . Events . CLICK && ( a . setAllSelected ( a . allSelected ) , a . fireEvent ( BI . SelectList . EVENT _CHANGE , c , d ) ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . list = BI . createWidget ( b . el , { type : "bi.list_pane" , items : b . items , itemsCreator : function ( c , d ) { 1 === c . times && a . toolbar . setVisible ( ! 1 ) , b . itemsCreator ( c , function ( b ) { d . apply ( a , arguments ) , 1 === c . times && ( a . toolbar . setVisible ( b && b . length > 0 ) , a . toolbar . setEnable ( a . isEnabled ( ) && b && b . length > 0 ) ) , a . _checkAllSelected ( ) } ) } , onLoaded : b . onLoaded , hasNext : b . hasNext } ) , this . list . on ( BI . Controller . EVENT _CHANGE , function ( b , c , d ) { b === BI . Events . CLICK && ( a . _checkAllSelected ( ) , a . fireEvent ( BI . SelectList . EVENT _CHANGE , c , d ) ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( BI . LogicFactory . createLogicTypeByDirection ( b . direction ) , BI . extend ( { scrolly : ! 0 } , b . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( b . direction , this . toolbar , this . list ) } ) ) ) ) , b . items . length <= 0 && ( this . toolbar . setVisible ( ! 1 ) , this . toolbar . setEnable ( ! 1 ) ) , BI . isNotNull ( b . value ) && this . setValue ( b . value ) } , _checkAllSelected : function ( ) { var a = this . list . getValue ( ) . length , b = this . getAllLeaves ( ) . length - a , c = this . list . hasNext ( ) , d = this . toolbar . isSelected ( ) , e = a > 0 && ( b > 0 || ! d && c ) ; e = e || b > 0 && c && d , this . toolbar . setHalfSelected ( e ) , ! e && this . toolbar . setSelected ( a > 0 && b <= 0 && ( ! c || d ) ) } , setAllSelected : function ( a ) { BI . each ( this . getAllButtons ( ) , function ( b , c ) { ( c . setSelected || c . setAllSelected ) . apply ( c , [ a ] ) } ) , this . allSelected = ! ! a , this . toolbar . setSelected ( a ) , this . toolbar . setHalfSelected ( ! 1 ) } , setToolBarVisible : function ( a ) { this . toolbar . setVisible ( a ) } , isAllSelected : function ( ) { return this . allSelected } , hasPrev : function ( ) { return this . list . hasPrev ( ) } , hasNext : function ( ) { return this . list . hasNext ( ) } , prependItems : function ( a ) { this . list . prependItems . apply ( this . list , arguments ) } , addItems : function ( a ) { this . list . addItems . apply ( this . list , arguments ) } , setValue : function ( a ) { var b = a . type === BI . ButtonGroup . CHOOSE _TYPE _ALL ; this . setAllSelected ( b ) , this . list [ b ? "setNotSelectedValue" : "setValue" ] ( a . value ) , this . _checkAllSelected ( ) } , getValue : function ( ) { return this . isAllSelected ( ) === ! 1 ? { type : BI . ButtonGroup . CHOOSE _TYPE _MULTI , value : this . list . getValue ( ) , assist : this . list . getNotSelectedValue ( ) } : { type : BI . ButtonGroup . CHOOSE _TYPE _ALL , value : this . list . getNotSelectedValue ( ) , assist : this . list . getValue ( ) } } , empty : function ( ) { this . list . empty ( ) } , populate : function ( a ) { this . toolbar . setVisible ( ! BI . isEmptyArray ( a ) ) , this . toolbar . setEnable ( this . isEnabled ( ) && ! BI . isEmptyArray ( a ) ) , this . list . populate . apply ( this . list , arguments ) , this . _checkAllSelected ( ) } , _setEnable : function ( a ) { BI . SelectList . superclass . _setEnable . apply ( this , arguments ) , this . toolbar . setEnable ( a ) } , resetHeight : function ( a ) { var b = ( this . toolbar . element . outerHeight ( ) || 25 ) * ( this . toolbar . isVisible ( ) ? 1 : 0 ) ; this . list . resetHeight ? this . list . res
} ) } , _init : function ( ) { BI . DisplayTree . superclass . _init . apply ( this , arguments ) } , _configSetting : function ( ) { function a ( a , b ) { return ! 1 } var b = { view : { selectedMulti : ! 1 , dblClickExpand : ! 1 , showIcon : ! 1 , nameIsHTML : ! 0 , showTitle : ! 1 } , data : { key : { title : "title" , name : "text" } , simpleData : { enable : ! 0 } } , callback : { beforeCollapse : a } } ; return b } , _dealWidthNodes : function ( a ) { a = BI . DisplayTree . superclass . _dealWidthNodes . apply ( this , arguments ) ; this . options ; return BI . each ( a , function ( a , b ) { b . isParent = b . isParent || b . parent , null == b . text && b . count > 0 && ( b . text = b . value + "(" + BI . i18nText ( "BI-Basic_Altogether" ) + b . count + BI . i18nText ( "BI-Basic_Count" ) + ")" ) } ) , a } , initTree : function ( a , b ) { var b = b || this . _configSetting ( ) ; this . nodes = BI . $ . fn . zTree . init ( this . tree . element , b , a ) } , destroy : function ( ) { BI . DisplayTree . superclass . destroy . apply ( this , arguments ) } } ) , BI . DisplayTree . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.display_tree" , BI . DisplayTree ) , BI . ListDisplayTree = BI . inherit ( BI . ListTreeView , { _defaultConfig : function ( ) { return BI . extend ( BI . ListDisplayTree . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-list-display-tree" } ) } , _init : function ( ) { BI . ListDisplayTree . superclass . _init . apply ( this , arguments ) } , _configSetting : function ( ) { function a ( a , b ) { return ! 1 } function b ( a , b ) { return b . isLeaf ? { } : { color : "#999999" } } var c = { view : { selectedMulti : ! 1 , dblClickExpand : ! 1 , showIcon : ! 1 , nameIsHTML : ! 0 , showTitle : ! 1 , fontCss : b } , data : { key : { title : "title" , name : "text" } , simpleData : { enable : ! 0 } } , callback : { beforeCollapse : a } } ; return c } , _dealWidthNodes : function ( a ) { a = BI . ListDisplayTree . superclass . _dealWidthNodes . apply ( this , arguments ) ; this . options ; return BI . each ( a , function ( a , b ) { b . isParent = b . isParent || b . parent , null == b . text && b . count > 0 && ( b . text = b . value + "(" + BI . i18nText ( "BI-Basic_Altogether" ) + b . count + BI . i18nText ( "BI-Basic_Count" ) + ")" ) } ) , a } , initTree : function ( a , b ) { var b = b || this . _configSetting ( ) ; this . nodes = BI . $ . fn . zTree . init ( this . tree . element , b , a ) } , destroy : function ( ) { BI . ListDisplayTree . superclass . destroy . apply ( this , arguments ) } } ) , BI . ListDisplayTree . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.list_display_tree" , BI . ListDisplayTree ) , BI . SimpleTreeView = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SimpleTreeView . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-simple-tree" , itemsCreator : BI . emptyFn , items : null } ) } , _init : function ( ) { BI . SimpleTreeView . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . structure = new BI . Tree , this . tree = BI . createWidget ( { type : "bi.tree_view" , element : this , itemsCreator : function ( c , d ) { var e = function ( b ) { d ( { items : b } ) , a . structure . initTree ( BI . Tree . transformToTreeFormat ( b ) ) } ; BI . isNotNull ( b . items ) ? e ( b . items ) : b . itemsCreator ( c , e ) } } ) , this . tree . on ( BI . TreeView . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . SimpleTreeView . EVENT _CHANGE , arguments ) } ) , BI . isNotEmptyArray ( b . items ) && this . populate ( ) , BI . isNotNull ( b . value ) && this . setValue ( b . value ) } , populate : function ( a , b ) { a && ( this . options . items = a ) , this . tree . stroke ( { keyword : b } ) } , _digest : function ( a ) { a || ( a = [ ] ) ; var b = this , c = { } , d = [ ] ; return BI . each ( a , function ( a , e ) { var f = b . structure . search ( e , "value" ) ; if ( f ) { var g = f ; for ( g = g . getParent ( ) , g && ( c [ g . value ] || ( c [ g . value ] = 0 ) , c [ g . value ] ++ ) ; g && g . getChildrenLength ( ) <= c [ g . value ] ; ) d . push ( g . value ) , g = g . getParent ( ) , g && ( c [ g . value ] || ( c [ g . value ] = 0 ) , c [ g . value ] ++ ) } } ) , BI . makeObject ( a . concat ( d ) ) } , setValue : function ( a ) { this . tree . setValue ( this . _digest ( a ) ) } , _getValue : function ( ) { var a = [ ] , b = this . tree . getValue ( ) , c = function ( b ) { BI . each ( b , function ( b , d ) { BI . isEmpty ( d ) ? a . push ( b ) : c ( d ) } ) } ; return c ( b ) , a } , empty : function ( ) { this . tree . empty ( ) } , getValue : function ( ) { var a = this , b = [ ] , c = this . _getValue ( ) ; return BI . each ( c , function ( c , d ) { var e = a . structure . search ( d , "value" ) ; e && a . structure . _traverse ( e , function ( a ) { a . isLeaf ( ) && b . push ( a . value ) } ) } ) , b } } ) , BI . SimpleTreeView . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.simple_tree" , BI . SimpleTreeView ) , BI . EditorTrigger = BI . inherit ( BI . Trigger , { _const : { hgap : 4 } , _defaultConfig : function ( ) { var a = BI . EditorTrigger . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-editor-trigger bi-border" , height : 24 , validationChecker : BI . emptyFn , quitChecker : BI . emptyFn , allowBlank : ! 1 , watermark : "" , errorText
container : b . container , toggle : ! 1 , isNeedAdjustHeight : ! 1 , isNeedAdjustWidth : ! 1 , el : this . trigger , adjustLength : this . constants . comboAdjustHeight , popup : { el : this . popup , width : this . constants . popupWidth , stopPropagation : ! 1 } , hideChecker : function ( a ) { return 0 === d . element . find ( a . target ) . length } } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { a . popup . setValue ( a . storeValue ) , a . fireEvent ( BI . DateTimeCombo . EVENT _BEFORE _POPUPVIEW ) } ) ; var d = BI . createWidget ( { type : "bi.icon_button" , cls : "bi-trigger-icon-button date-font" , width : 24 , height : 24 } ) ; d . on ( BI . IconButton . EVENT _CHANGE , function ( ) { a . combo . isViewVisible ( ) || a . combo . showView ( ) } ) , BI . createWidget ( { type : "bi.htape" , element : this , items : [ { type : "bi.absolute" , items : [ { el : this . combo , top : 0 , left : 0 , right : 0 , bottom : 0 } , { el : d , top : 0 , right : 0 } ] } ] } ) } , setValue : function ( a ) { this . storeValue = a , this . popup . setValue ( a ) , this . trigger . setValue ( a ) } , getValue : function ( ) { return this . storeValue } , hidePopupView : function ( ) { this . combo . hideView ( ) } } ) , BI . DateTimeCombo . EVENT _CANCEL = "EVENT_CANCEL" , BI . DateTimeCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . DateTimeCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . DateTimeCombo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . shortcut ( "bi.date_time_combo" , BI . DateTimeCombo ) , BI . DateTimePopup = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . DateTimePopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-date-time-popup" , width : 268 , height : 374 } ) } , _init : function ( ) { BI . DateTimePopup . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . cancelButton = BI . createWidget ( { type : "bi.text_button" , cls : "multidate-popup-button bi-border-top bi-border-right" , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_Cancel" ) } ) , this . cancelButton . on ( BI . TextButton . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . DateTimePopup . BUTTON _CANCEL _EVENT _CHANGE ) } ) , this . okButton = BI . createWidget ( { type : "bi.text_button" , cls : "multidate-popup-button bi-border-top" , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_OK" ) } ) , this . okButton . on ( BI . TextButton . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . DateTimePopup . BUTTON _OK _EVENT _CHANGE ) } ) , this . dateCombo = BI . createWidget ( { type : "bi.date_calendar_popup" , behaviors : b . behaviors , min : a . options . min , max : a . options . max } ) , a . dateCombo . on ( BI . DateCalendarPopup . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . DateTimePopup . CALENDAR _EVENT _CHANGE ) } ) , this . dateButton = BI . createWidget ( { type : "bi.grid" , items : [ [ this . cancelButton , this . okButton ] ] } ) , BI . createWidget ( { element : this , type : "bi.vtape" , items : [ { el : this . dateCombo } , { el : { type : "bi.center_adapt" , cls : "bi-split-top" , items : [ { type : "bi.dynamic_date_time_select" , ref : function ( b ) { a . timeSelect = b } } ] } , height : 50 } , { el : this . dateButton , height : 30 } ] } ) , this . setValue ( b . value ) } , setValue : function ( a ) { var b , c = a ; BI . isNull ( c ) ? ( b = BI . getDate ( ) , this . dateCombo . setValue ( { year : b . getFullYear ( ) , month : b . getMonth ( ) + 1 , day : b . getDate ( ) } ) , this . timeSelect . setValue ( { hour : b . getHours ( ) , minute : b . getMinutes ( ) , second : b . getSeconds ( ) } ) ) : ( this . dateCombo . setValue ( { year : c . year , month : c . month , day : c . day } ) , this . timeSelect . setValue ( { hour : c . hour , minute : c . minute , second : c . second } ) ) } , getValue : function ( ) { return BI . extend ( { year : this . dateCombo . getValue ( ) . year , month : this . dateCombo . getValue ( ) . month , day : this . dateCombo . getValue ( ) . day } , this . timeSelect . getValue ( ) ) } } ) , BI . DateTimePopup . BUTTON _OK _EVENT _CHANGE = "BUTTON_OK_EVENT_CHANGE" , BI . DateTimePopup . BUTTON _CANCEL _EVENT _CHANGE = "BUTTON_CANCEL_EVENT_CHANGE" , BI . DateTimePopup . CALENDAR _EVENT _CHANGE = "CALENDAR_EVENT_CHANGE" , BI . shortcut ( "bi.date_time_popup" , BI . DateTimePopup ) , BI . DateTimeTrigger = BI . inherit ( BI . Trigger , { _const : { hgap : 4 } , _defaultConfig : function ( ) { return BI . extend ( BI . DateTimeTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-date-time-trigger" , min : "1900-01-01" , max : "2099-12-31" , height : 24 , width : 200 } ) } , _init : function ( ) { BI . DateTimeTrigger . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this . _const ; this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , height : a . height , width : a . width , hgap : b . hgap } ) , BI . createWidget ( { type : "bi.htape" , element : this , items : [ { el : this . text } , { el : BI . createWidget ( ) , width : a . height } ] } ) , this . setValue ( a . value ) } , _printTime : function ( a ) { return a < 10 ? "0" + a : a } , setValue : fun
} } , { eventName : BI . DynamicDatePopup . EVENT _CHANGE , action : function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . combo . hideView ( ) , a . fireEvent ( BI . DynamicDateCombo . EVENT _CONFIRM ) } } ] } , stopPropagation : ! 1 } , hideChecker : function ( b ) { return 0 === a . triggerBtn . element . find ( b . target ) . length } , listeners : [ { eventName : BI . Combo . EVENT _BEFORE _POPUPVIEW , action : function ( ) { a . popup . setValue ( a . storeValue ) , a . fireEvent ( BI . DynamicDateCombo . EVENT _BEFORE _POPUPVIEW ) } } ] } , 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 . DynamicDateCombo . 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 } } , _defaultState : function ( ) { } , 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 ( ) } } ) , BI . DynamicDateCombo . EVENT _KEY _DOWN = "EVENT_KEY_DOWN" , BI . DynamicDateCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . DynamicDateCombo . EVENT _FOCUS = "EVENT_FOCUS" , BI . DynamicDateCombo . EVENT _BLUR = "EVENT_BLUR" , BI . DynamicDateCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . DynamicDateCombo . EVENT _VALID = "EVENT_VALID" , BI . DynamicDateCombo . EVENT _ERROR = "EVENT_ERROR" , BI . DynamicDateCombo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . shortcut ( "bi.dynamic_date_combo" , BI . DynamicDateCombo ) , BI . extend ( BI . DynamicDateCombo , { Static : 1 , Dynamic : 2 } ) , BI . DynamicDateParamItem = BI . inherit ( BI . Widget , { props : { baseCls : "bi-dynamic-date-param-item" , dateType : BI . DynamicDateCard . TYPE . YEAR , value : 0 , offset : 0 , height : 24 } , render : function ( ) { var a = this , b = this . options ; return { type : "bi.htape" , items : [ { el : { type : "bi.sign_editor" , cls : "bi-border" , height : 22 , validationChecker : function ( a ) { return BI . isNaturalNumber ( a ) } , value : b . value , ref : function ( ) { a . editor = this } , errorText : function ( a ) { return BI . isEmptyString ( a ) ? BI . i18nText ( "BI-Basic_Please_Input_Content" ) : BI . i18nText ( "BI-Please_Input_Natural_Number" ) } , allowBlank : ! 1 , listeners : [ { eventName : BI . SignEditor . EVENT _CONFIRM , action : function ( ) { a . fireEvent ( BI . DynamicDateParamItem . EVENT _CHANGE ) } } ] } , width : 60 } , { el : { type : "bi.label" , height : 24 , text : this . _getText ( ) } , width : b . dateType === BI . DynamicDateCard . TYPE . WORK _DAY ? 60 : 20 } , { type : "bi.text_value_combo" , height : 24 , items : [ { text : BI . i18nText ( "BI-Basic_Front" ) , value : 0 } , { text : BI . i18nText ( "BI-Basic_Behind" ) , value : 1 } ] , ref : function ( ) { a . offsetCombo = this } , container : null , value : b . offset , listeners : [ { eventName : BI . TextValueCombo . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicDateParamItem . EVENT _CHANGE ) } } ] } ] } } , _getText : function ( ) { var a = "" ; switch ( this . options . dateType ) { case BI . DynamicDateCard . TYPE . YEAR : a = BI . i18nText ( "BI-Basic_Year" ) ; break ; case BI . DynamicDateCard . TYPE . QUARTER : a = BI . i18nText ( "BI-Basic_Single_Quarter" ) ; break ; case BI . DynamicDateCard . TYPE . MONTH : a = BI . i18nText ( "BI-Basic_Month" ) ; break ; case BI . DynamicDateCard . TYPE . WEEK : a = BI . i18nText ( "BI-Basic_Week" ) ; break ; case BI . DynamicDateCard . TYPE . DAY : a = BI . i18nText ( "BI-Basic_Day" ) ; break ; case BI . DynamicDateCard . TYPE . WORK _DAY : default : a = BI . i18nText ( "BI-Basic_Work_Day" ) } return a } , setValue : function ( a ) { a = a || { } , a . value = a . value || 0 , a . offset = a . offset || 0 , this . editor . setValue ( a . value ) , this . offsetCombo . setValue ( a . offset ) } , getValue : function ( ) { return { dateType : this . options . dateType , value : this . editor . getValue ( ) , offset : this . offsetCombo . getValue ( ) [ 0 ] } } } ) , BI . DynamicDateParamItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.dynamic_date_param_item" , B
second : 0 | d [ 5 ] } } } a . fireEvent ( BI . DynamicDateTimeTrigger . EVENT _CONFIRM ) } ) , this . editor . on ( BI . SignEditor . EVENT _START , function ( ) { a . fireEvent ( BI . DynamicDateTimeTrigger . EVENT _START ) } ) , this . editor . on ( BI . SignEditor . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . DynamicDateTimeTrigger . EVENT _CHANGE ) } ) , BI . createWidget ( { type : "bi.htape" , element : this , items : [ { el : this . editor } , { el : BI . createWidget ( ) , width : 24 } ] } ) , ! b . allowEdit && BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.text" , title : BI . bind ( this . _getTitle , this ) } , left : 0 , right : 24 , top : 0 , bottom : 0 } ] } ) , this . setValue ( b . value ) } , _getTitle : function ( ) { var a = this . storeValue || { } , b = a . type || BI . DynamicDateCombo . Static , c = a . value ; switch ( b ) { case BI . DynamicDateCombo . Dynamic : var d = this . _getText ( c ) , e = BI . DynamicDateHelper . getCalculation ( c ) , f = BI . print ( e , this . _getFormatString ( ) ) ; return BI . isEmptyString ( d ) ? f : d + ":" + f ; case BI . DynamicDateCombo . Static : default : return BI . isNull ( c ) || BI . isNull ( c . day ) ? "" : BI . print ( BI . getDate ( c . year , c . month - 1 , c . day , c . hour || 0 , c . minute || 0 , c . second || 0 ) , this . _getFormatString ( ) ) } } , _getStandardDateStr : function ( a ) { var b = this . _const , c = [ ] , d = ! 1 , e = this . _getFormatString ( ) . match ( /%./g ) ; BI . each ( e , function ( a , b ) { switch ( b ) { case "%Y" : case "%y" : c [ 0 ] = a ; break ; case "%X" : case "%x" : c [ 1 ] = a ; break ; case "%d" : case "%e" : c [ 2 ] = a ; break ; case "%S" : d = ! 0 } } ) ; var f = BI . parseDateTime ( a , this . _getFormatString ( ) ) ; BI . print ( f , this . _getFormatString ( ) ) === a && ( a = BI . print ( f , b . compareFormat ) , c = [ 0 , 1 , 2 ] ) ; var g = a . match ( /\d+/g ) || [ ] , h = [ ] ; BI . each ( g . slice ( 0 , 3 ) , function ( a ) { h [ a ] = g [ c [ a ] ] } ) ; var i = g . slice ( 3 ) ; BI . each ( i , function ( a , b ) { BI . isNumeric ( b ) && 1 === b . length && ( i [ a ] = "0" + b ) } ) , 2 !== i . length || d || i . push ( "00" ) ; var j = i . join ( ":" ) , k = h . slice ( 0 , 3 ) . join ( "-" ) ; return BI . isNotEmptyString ( j ) && ( k += " " + j ) , k } , _getFormatString : function ( ) { return this . options . format || this . _const . compareFormat } , _dateCheck : function ( a ) { return BI . print ( BI . parseDateTime ( a , "%Y-%x-%d %H:%M:%S" ) , "%Y-%x-%d %H:%M:%S" ) === a || BI . print ( BI . parseDateTime ( a , "%Y-%X-%d %H:%M:%S" ) , "%Y-%X-%d %H:%M:%S" ) === a || BI . print ( BI . parseDateTime ( a , "%Y-%x-%e %H:%M:%S" ) , "%Y-%x-%e %H:%M:%S" ) === a || BI . print ( BI . parseDateTime ( a , "%Y-%X-%e %H:%M:%S" ) , "%Y-%X-%e %H:%M:%S" ) === a || BI . print ( BI . parseDateTime ( a , "%Y-%x-%d" ) , "%Y-%x-%d" ) === a || BI . print ( BI . parseDateTime ( a , "%Y-%X-%d" ) , "%Y-%X-%d" ) === a || BI . print ( BI . parseDateTime ( a , "%Y-%x-%e" ) , "%Y-%x-%e" ) === a || BI . print ( BI . parseDateTime ( a , "%Y-%X-%e" ) , "%Y-%X-%e" ) === a } , _checkVoid : function ( a ) { return ! BI . checkDateVoid ( a . year , a . month , a . day , this . options . min , this . options . max ) [ 0 ] } , _autoAppend : function ( a , b ) { if ( BI . isNotNull ( b ) && BI . checkDateLegal ( a ) ) switch ( a . length ) { case this . _const . yearLength : this . _yearCheck ( a ) && this . editor . setValue ( a + "-" ) ; break ; case this . _const . yearMonthLength : case this . _const . yearFullMonthLength : var c = a . split ( "-" ) [ 1 ] ; ( BI . isNotNull ( c ) && 2 === c . length || this . _monthCheck ( a ) ) && this . editor . setValue ( a + "-" ) } } , _yearCheck : function ( a ) { var b = BI . print ( BI . parseDateTime ( a , "%Y-%X-%d" ) , "%Y-%X-%d" ) ; return BI . print ( BI . parseDateTime ( a , "%Y" ) , "%Y" ) === a && b >= this . options . min && b <= this . options . max } , _monthCheck : function ( a ) { var b = BI . parseDateTime ( a , "%Y-%X-%d" ) , c = BI . print ( b , "%Y-%X-%d" ) ; return b . getMonth ( ) > 0 && ( BI . print ( BI . parseDateTime ( a , "%Y-%X" ) , "%Y-%X" ) === a || BI . print ( BI . parseDateTime ( a , "%Y-%x" ) , "%Y-%x" ) === a ) && c >= this . options . min && c <= this . options . max } , _setInnerValue : function ( a ) { var b = BI . print ( a , this . _getFormatString ( ) ) ; this . editor . setState ( b ) , this . editor . setValue ( b ) } , _getText : function ( a ) { function b ( a , b ) { switch ( b ) { case BI . DynamicDateCard . OFFSET . BEGIN : return a + BI . i18nText ( "BI-Basic_Begin_Start" ) ; case BI . DynamicDateCard . OFFSET . END : return a + BI . i18nText ( "BI-Basic_End_Stop" ) ; case BI . DynamicDateCard . OFFSET . CURRENT : default : return BI . i18nText ( "BI-Basic_Current_Day" ) } } var c = "" , d = "" ; return BI . isNotNull ( a . year ) && ( 0 !== BI . parseInt ( a . year ) && ( c += Math . abs ( a . year ) + BI . i18nText ( "BI-Basic_Year" ) + ( a . year < 0 ? BI . i18nText ( "BI-Basic_Front" ) : BI . i18nText ( "BI-Basic_Behind" ) ) ) , d = b ( BI . i18nText ( "BI-Basic_Year" ) , a . position ) ) , BI . isNotNull ( a . quarter ) && ( 0 !== BI . parseInt ( a . quarter ) && ( c += Math . abs ( a . quarter ) + BI . i18nText ( "BI-Basic_Single_Quarter" ) + ( a . quarter < 0 ? BI . i18nText ( "BI-Basic_Front" ) : BI . i18nText ( "BI-Basic_Behind" ) ) ) , d = b ( BI . i18nText ( " BI - Basic _Single _Q
c . el . type = "bi.down_list_group_item" , c . el . logic = { dynamic : ! 0 } , c . el . height = b . constants . height , c . el . iconCls2 = b . constants . nextIcon , c . popup = { lgap : 1 , el : { type : "bi.button_tree" , chooseType : 0 , layouts : [ { type : "bi.vertical" } ] } , innerVGap : 5 } , c . el . childValues = [ ] , BI . each ( c . children , function ( a , d ) { d = d . el ? BI . extend ( d . el , { children : d . children } ) : d ; var e = BI . deepClone ( c . el . value ) , f = BI . deepClone ( d . value ) ; b . singleValues . push ( d . value ) , d . type = "bi.down_list_item" , d . extraCls = " child-down-list-item" , d . title = d . title || d . text , d . textRgap = 10 , d . isNeedAdjustWidth = ! 1 , d . logic = { dynamic : ! 0 } , d . father = e , b . fatherValueMap [ b . _createChildValue ( e , f ) ] = e , b . childValueMap [ b . _createChildValue ( e , f ) ] = f , d . value = b . _createChildValue ( e , f ) , c . el . childValues . push ( d . value ) , BI . isNotEmptyArray ( d . children ) && ( d . type = "bi.down_list_group_item" , b . _createChildren ( d ) , d . height = b . constants . height , d . iconCls2 = b . constants . nextIcon , c . el . childValues = BI . concat ( c . el . childValues , d . childValues ) ) } ) ) : ( c . type = "bi.down_list_item" , c . title = c . title || c . text , c . textRgap = 10 , c . isNeedAdjustWidth = ! 1 , c . logic = { dynamic : ! 0 } ) ; var d = { } ; d . el = c , f . items . push ( d ) } ) , b . _isGroup ( f . items ) && BI . each ( f . items , function ( a , c ) { b . singleValues . push ( c . el . value ) } ) , c . push ( f ) , b . _needSpliter ( d , a . length ) ) { var g = BI . createWidget ( { type : "bi.vertical" , items : [ { el : { type : "bi.layout" , cls : "bi-down-list-spliter bi-border-top cursor-pointer" , height : 0 } } ] , cls : "bi-down-list-spliter-container cursor-pointer" , vgap : 5 , lgap : 10 } ) ; c . push ( g ) } } ) , c } , _createChildren : function ( a ) { var b = this ; a . childValues = [ ] , BI . each ( a . children , function ( c , d ) { var e = BI . deepClone ( a . value ) , f = BI . deepClone ( d . value ) ; d . type = "bi.down_list_item" , d . title = d . title || d . text , d . textRgap = 10 , d . isNeedAdjustWidth = ! 1 , d . logic = { dynamic : ! 0 } , d . father = e , b . fatherValueMap [ b . _createChildValue ( e , f ) ] = e , b . childValueMap [ b . _createChildValue ( e , f ) ] = f , d . value = b . _createChildValue ( e , f ) , a . childValues . push ( d . value ) } ) } , _isGroup : function ( a ) { return a . length > 1 } , _needSpliter : function ( a , b ) { return a < b - 1 } , _createChildValue : function ( a , b ) { var c = a ; return BI . isArray ( a ) && ( c = a . join ( "_" ) ) , c + "_" + 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 } function c ( a ) { var b = [ ] ; return BI . isNotNull ( a . children ) ? BI . each ( a . children , function ( a , d ) { b = BI . concat ( b , c ( d ) ) } ) : b . push ( a . value ) , b } var d = this . options , e = [ ] ; return BI . each ( d . items , function ( d , f ) { BI . each ( f , function ( f , g ) { if ( BI . isNotNull ( g . children ) ) { var h = c ( g ) , i = b ( h , a [ d ] ) ; BI . isNotEmptyString ( i ) && e . push ( i ) } else g . value === a [ d ] [ 0 ] && e . push ( a [ d ] [ 0 ] ) } ) } ) , e } , populate : function ( a ) { BI . MultiLayerDownListPopup . superclass . populate . apply ( this , arguments ) ; var b = this ; b . childValueMap = { } , b . fatherValueMap = { } , b . singleValues = [ ] ; var c = b . _createPopupItems ( a ) , d = BI . createItems ( c , { } , { adjustLength : - 2 } ) ; b . popup . populate ( d ) } , 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 ] ; var g = ( f + "" ) . split ( "_" ) ; e . value = g . length > 1 ? g : f } else e . value = d ; b . push ( e ) } ) , b } } ) , BI . MultiLayerDownListPopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . MultiLayerDownListPopup . EVENT _SON _VALUE _CHANGE = "EVENT_SON_VALUE_CHANGE" , BI . shortcut ( "bi.multi_layer_down_list_popup" , BI . MultiLayerDownListPopup ) , BI . MultiLayerSelectTreeCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiLayerSelectTreeCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multilayer-select-tree-combo" , isDefaultInit : ! 1 , height : 24 , text : "" , itemsCreator : BI . emptyFn , items : [ ] , value : "" , attributes : { tabIndex : 0 } , allowEdit : ! 1 , allowSearchValue : ! 1 , allowInsertValue : ! 1 } ) } , render : function ( ) { var a = this , b = this . options , c = b . itemsCreator === BI . emptyFn ? this . _getSyncConfig ( ) : this . _getAsyncConfig ( ) ; return b . allowEdit || b . itemsCr
value : c . value , itemsCreator : function ( a , e ) { 1 === a . times && ! a . node && BI . nextTick ( function ( ) { b . loading ( ) } ) , c . itemsCreator ( a , function ( c ) { d = c . hasNext , 1 === a . times && ! a . node && b . _populate ( c . items ) , e ( b . _formatItems ( BI . Tree . transformToTreeFormat ( c . items ) , a . node ? a . node . layer + 1 : 0 , a . node ) ) , b . setValue ( b . storeValue ) , 1 === a . times && ! a . node && BI . nextTick ( function ( ) { b . loaded ( ) } ) } ) } , el : { type : "bi.loader" , isDefaultInit : c . itemsCreator !== BI . emptyFn , el : { type : "bi.button_tree" , chooseType : c . chooseType , behaviors : c . behaviors , layouts : [ { type : "bi.vertical" } ] } , hasNext : function ( ) { return d } } } ) , this . tree . on ( BI . Controller . EVENT _CHANGE , function ( a , c ) { b . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , a === BI . Events . CLICK && ( b . setValue ( c ) , b . fireEvent ( BI . MultiLayerSingleLevelTree . EVENT _CHANGE , c ) ) } ) , BI . createWidget ( { type : "bi.adaptive" , element : this , scrollable : c . scrollable , items : [ this . tree ] } ) } , _populate : function ( ) { BI . MultiLayerSelectLevelTree . superclass . populate . apply ( this , arguments ) } , populate : function ( a ) { this . _populate ( a ) , BI . isNull ( a ) ? this . tree . populate ( ) : this . tree . populate ( this . _formatItems ( BI . Tree . transformToTreeFormat ( a ) , 0 ) ) } , setValue : function ( a ) { this . options . chooseType === BI . Selection . None || ( this . storeValue = a , this . tree . setValue ( a ) ) } , getValue : function ( ) { return BI . isArray ( this . storeValue ) ? this . storeValue : BI . isNull ( this . storeValue ) ? [ ] : [ this . storeValue ] } , getAllLeaves : function ( ) { return this . tree . getAllLeaves ( ) } , getNodeById : function ( a ) { return this . tree . getNodeById ( a ) } , getNodeByValue : function ( a ) { return this . tree . getNodeByValue ( a ) } } ) , BI . MultiLayerSingleLevelTree . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multilayer_single_level_tree" , BI . MultiLayerSingleLevelTree ) , BI . MultiLayerSingleTreePopup = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiLayerSingleTreePopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multilayer-singletree-popup" , tipText : BI . i18nText ( "BI-No_Selected_Item" ) , isDefaultInit : ! 1 , itemsCreator : BI . emptyFn , items : [ ] } ) } , _init : function ( ) { BI . MultiLayerSingleTreePopup . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . tree = BI . createWidget ( { type : "bi.multilayer_single_level_tree" , isDefaultInit : b . isDefaultInit , items : b . items , itemsCreator : b . itemsCreator , keywordGetter : b . keywordGetter , value : b . value , scrollable : null } ) , BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , scrollable : ! 0 , element : this , vgap : 5 , items : [ this . tree ] } ) , this . tree . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . tree . on ( BI . MultiLayerSingleLevelTree . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . MultiLayerSingleTreePopup . EVENT _CHANGE ) } ) } , getValue : function ( ) { return this . tree . getValue ( ) } , setValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , this . tree . setValue ( a ) } , populate : function ( a ) { this . tree . populate ( a ) } } ) , BI . MultiLayerSingleTreePopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multilayer_single_tree_popup" , BI . MultiLayerSingleTreePopup ) , BI . MultiLayerSingleTreeTrigger = BI . inherit ( BI . Trigger , { props : function ( ) { return { extraCls : "bi-multi-layer-single-tree-trigger bi-border bi-focus-shadow" , height : 24 , valueFormatter : function ( a ) { return a } , itemsCreator : BI . emptyFn , watermark : BI . i18nText ( "BI-Basic_Search" ) , allowSearchValue : ! 1 } } , render : function ( ) { var a = this , b = this . options ; b . itemsCreator === BI . emptyFn && this . _initData ( ) ; var c = { type : "bi.htape" , items : [ { el : { type : "bi.searcher" , ref : function ( ) { a . searcher = this } , isAutoSearch : ! 1 , el : { type : "bi.state_editor" , ref : function ( ) { a . editor = this } , defaultText : b . text , text : this . _digest ( b . value ) , value : b . value , height : b . height , tipText : "" , watermark : b . watermark , listeners : [ { eventName : BI . StateEditor . EVENT _FOCUS , action : function ( ) { a . fireEvent ( BI . MultiLayerSingleTreeTrigger . EVENT _FOCUS ) } } , { eventName : BI . StateEditor . EVENT _BLUR , action : function ( ) { a . fireEvent ( BI . MultiLayerSingleTreeTrigger . EVENT _BLUR ) } } , { eventName : BI . StateEditor . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . MultiLayerSingleTreeTrigger . EVENT _SEARCHING ) } } ] } , popup : { type : b . allowInsertValue ? "bi.multilayer_single_tree_insert_search_pane" : "bi.multilayer_single_tree_popup" , itemsCreator : b . itemsCreator === BI . emptyFn ? BI . emptyFn : function ( c , d ) { c . keyword = a . editor . getValue ( ) , b . itemsCrea
var d = BI . last ( b ) ; b = BI . initial ( b || [ ] ) , b . length > 0 && a . _joinKeywords ( b , function ( ) { BI . isEndWithBlank ( d ) ? ( a . combo . setValue ( a . storeValue ) , c ( ) , a . combo . populate ( ) , a . _setStartValue ( "" ) ) : ( a . combo . setValue ( a . storeValue ) , c ( ) ) } ) , a . fireEvent ( BI . MultiSelectInsertCombo . EVENT _SEARCHING ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _CHANGE , function ( b , d ) { d instanceof BI . MultiSelectBar ? a . _joinAll ( this . getValue ( ) , function ( ) { c ( ) } ) : a . _join ( this . getValue ( ) , function ( ) { c ( ) } ) , a . fireEvent ( BI . MultiSelectInsertCombo . EVENT _CLICK _ITEM ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _BEFORE _COUNTER _POPUPVIEW , function ( ) { a . numberCounter . updateSelectedValue ( a . storeValue ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _COUNTER _CLICK , function ( ) { a . combo . isViewVisible ( ) || a . combo . showView ( ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , toggle : ! 1 , el : this . trigger , adjustLength : 1 , container : b . container , popup : { type : "bi.multi_select_popup_view" , ref : function ( ) { a . popup = this , a . trigger . setAdapter ( this ) , a . numberCounter . setAdapter ( this ) } , listeners : [ { eventName : BI . MultiSelectPopupView . EVENT _CHANGE , action : function ( ) { a . storeValue = this . getValue ( ) , a . _adjust ( function ( ) { c ( ) } ) , a . fireEvent ( BI . MultiSelectInsertCombo . EVENT _CLICK _ITEM ) } } , { eventName : BI . MultiSelectPopupView . EVENT _CLICK _CONFIRM , action : function ( ) { a . _defaultState ( ) } } , { eventName : BI . MultiSelectPopupView . EVENT _CLICK _CLEAR , action : function ( ) { a . setValue ( ) , a . _defaultState ( ) } } ] , itemsCreator : b . itemsCreator , valueFormatter : b . valueFormatter , onLoaded : function ( ) { BI . nextTick ( function ( ) { a . combo . adjustWidth ( ) , a . combo . adjustHeight ( ) , a . numberCounter . adjustView ( ) , a . trigger . getSearcher ( ) . adjustView ( ) } ) } } , value : b . value , hideChecker : function ( b ) { return 0 === d . element . find ( b . target ) . length && 0 === a . numberCounter . element . find ( b . target ) . length } } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { this . setValue ( a . storeValue ) , BI . nextTick ( function ( ) { a . populate ( ) } ) } ) , this . wants2Quit = ! 1 , this . combo . on ( BI . Combo . EVENT _AFTER _HIDEVIEW , function ( ) { a . _stopEditing ( ) , a . requesting === ! 0 ? a . wants2Quit = ! 0 : a . fireEvent ( BI . MultiSelectInsertCombo . EVENT _CONFIRM ) } ) ; var d = BI . createWidget ( { type : "bi.trigger_icon_button" , width : b . height , height : b . height , cls : "multi-select-trigger-icon-button" } ) ; d . on ( BI . TriggerIconButton . EVENT _CHANGE , function ( ) { a . numberCounter . hideView ( ) , a . combo . isViewVisible ( ) ? a . combo . hideView ( ) : a . combo . showView ( ) } ) , this . numberCounter = BI . createWidget ( { type : "bi.multi_select_check_selected_switcher" , masker : { offset : { left : 0 , top : 0 , right : 0 , bottom : 25 } } , valueFormatter : b . valueFormatter , itemsCreator : BI . bind ( this . _itemsCreator4Trigger , this ) , value : b . value } ) , this . numberCounter . on ( BI . MultiSelectCheckSelectedSwitcher . EVENT _TRIGGER _CHANGE , function ( ) { a . combo . isViewVisible ( ) || a . combo . showView ( ) } ) , this . numberCounter . on ( BI . MultiSelectCheckSelectedSwitcher . EVENT _BEFORE _POPUPVIEW , function ( ) { this . updateSelectedValue ( a . storeValue ) } ) , this . numberCounter . on ( BI . Events . VIEW , function ( b ) { BI . nextTick ( function ( ) { a . trigger . refreshPlaceHolderWidth ( b === ! 0 ? a . numberCounter . element . outerWidth ( ) + 8 : 0 ) } ) } ) , this . trigger . element . click ( function ( b ) { a . trigger . element . find ( b . target ) . length > 0 && a . numberCounter . hideView ( ) } ) , 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 } , { el : { type : "bi.vertical_adapt" , items : [ this . numberCounter ] } , right : b . height , top : 0 , height : b . height } ] } ) } , _itemsCreator4Trigger : function ( a , b ) { var c = this , d = this . options ; d . itemsCreator ( a , function ( d ) { 1 === a . times && BI . isNotNull ( a . keywords ) && c . trigger . setValue ( BI . deepClone ( c . getValue ( ) ) ) , b . apply ( c , arguments ) } ) } , _addItem : function ( a ) { var b = this , c = this . trigger . getSearcher ( ) . getKeyword ( ) ; this . _join ( { type : BI . Selection . Multi , value : [ c ] } , function ( ) { b . storeValue . type === BI . Selection . Multi && BI . pushDistinct ( b . storeValue . value , c ) , b . combo . setValue ( b . storeValue ) , b . _setStartValue ( c ) , a ( ) , b . populate ( ) , b . _setStartValue ( "" ) } ) } , _stopEditing : function ( ) { this . trigger . stopEditing ( ) , this . numberCounter . hideView ( ) } , _defaultState : function ( ) { this . _stopEditing ( ) , this . combo . hideView ( ) } , _assertValue : function ( a ) { a || ( a = { } ) , a . type || ( a . type = BI . Selection . Multi ) , a . value || ( a . value = [ ] ) } , _makeMap : function
type : "bi.text_button" , invisible : ! 0 , text : BI . i18nText ( "BI-Basic_Click_To_Add_Text" , "" ) , height : this . constants . height , cls : "bi-high-light" , hgap : 5 , handler : function ( ) { a . fireEvent ( BI . MultiSelectSearchInsertPane . EVENT _ADD _ITEM , b . keywordGetter ( ) ) } } ) , 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 : [ { type : "bi.vertical" , items : [ this . tooltipClick , this . addNotMatchTip ] , height : this . constants . height } , { el : this . loader } ] } ) } , setKeyword : function ( a ) { var b , c = this . loader . getAllButtons ( ) . length > 0 && ( b = this . loader . getAllButtons ( ) [ 0 ] ) && a === b . getValue ( ) ; this . tooltipClick . setVisible ( c ) , this . addNotMatchTip . setVisible ( ! c ) , ! c && this . addNotMatchTip . setText ( BI . i18nText ( "BI-Basic_Click_To_Add_Text" , a ) ) } , 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 . MultiSelectSearchInsertPane . EVENT _CHANGE = "EVENT_CHANGE" , BI . MultiSelectSearchInsertPane . EVENT _ADD _ITEM = "EVENT_ADD_ITEM" , BI . shortcut ( "bi.multi_select_search_insert_pane" , BI . MultiSelectSearchInsertPane ) , BI . MultiSelectSearchLoader = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectSearchLoader . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-search-loader" , itemsCreator : BI . emptyFn , keywordGetter : BI . emptyFn , valueFormatter : BI . emptyFn } ) } , _init : function ( ) { BI . MultiSelectSearchLoader . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = ! 1 ; this . storeValue = BI . deepClone ( b . value ) , this . button _group = BI . createWidget ( { type : "bi.select_list" , toolbar : { type : "bi.multi_select_bar" , cls : "bi-list-item-active" , iconWrapperWidth : 36 } , element : this , logic : { dynamic : ! 1 } , value : b . value , el : { tipText : BI . i18nText ( "BI-No_Select" ) , el : { type : "bi.loader" , isDefaultInit : ! 1 , logic : { dynamic : ! 0 , scrolly : ! 0 } , el : { chooseType : BI . ButtonGroup . CHOOSE _TYPE _MULTI , behaviors : { redmark : function ( ) { return ! 0 } } , layouts : [ { type : "bi.vertical" } ] } } } , itemsCreator : function ( d , e ) { a . storeValue && ( d = BI . extend ( d || { } , { selectedValues : a . storeValue . value } ) ) , b . itemsCreator ( d , function ( f ) { var g = f . keyword = b . keywordGetter ( ) ; c = f . hasNext ; var h = [ ] ; if ( 1 === d . times && a . storeValue ) { var i = a . _filterValues ( a . storeValue ) ; h = a . _createItems ( i ) } e ( h . concat ( a . _createItems ( f . items ) ) , g ) , 1 === d . times && a . storeValue && a . setValue ( a . storeValue ) } ) } , hasNext : function ( ) { return c } } ) , 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 . MultiSelectSearchLoader . EVENT _CHANGE , arguments ) } ) } , _createItems : function ( a ) { return BI . createItems ( a , { type : "bi.multi_select_item" , logic : { dynamic : ! 1 } , height : 24 , selected : this . isAllSelected ( ) , cls : "bi-list-item-active" , iconWrapperWidth : 36 } ) } , isAllSelected : function ( ) { return this . button _group . isAllSelected ( ) } , _filterValues : function ( a ) { var b = this . options , c = b . keywordGetter ( ) , d = BI . deepClone ( a . value ) || [ ] , e = BI . map ( d , function ( a , c ) { return { text : b . valueFormatter ( c ) || c , value : c } } ) ; if ( BI . isKey ( c ) ) { var f = BI . Func . getSearchResult ( e , c ) ; d = f . match . concat ( f . find ) } return BI . map ( d , function ( b , c ) { return { text : c . text , title : c . text , value : c . value , selected : a . type === BI . Selection . All } } ) } , setValue : function ( a ) { this . storeValue = BI . deepClone ( a ) , this . button _group . setValue ( a ) } , getValue : function ( ) { return this . button _group . getValue ( ) } , getAllButtons : function ( ) { return this . button _group . getAllButtons ( ) } , empty : function ( ) { this . button _group . empty ( ) } , populate : function ( a ) { this . button _group . populate . apply ( this . button _group , arguments ) } , resetHeight : function ( a ) { this . button _group . resetHeight ( a ) } , resetWidth : function ( a ) { this . but
a . storeValue = this . getValue ( ) , a . _adjust ( function ( ) { c ( ) , a . fireEvent ( BI . MultiSelectList . EVENT _CHANGE ) } ) } ) , this . searcherPane = BI . createWidget ( { type : "bi.multi_select_search_pane" , cls : "bi-border-left bi-border-right bi-border-bottom" , valueFormatter : b . valueFormatter , keywordGetter : function ( ) { return a . trigger . getKeyword ( ) } , itemsCreator : function ( c , d ) { c . keywords = [ a . trigger . getKeyword ( ) ] , this . setKeyword ( c . keywords [ 0 ] ) , b . itemsCreator ( c , d ) } } ) , this . searcherPane . setVisible ( ! 1 ) , this . trigger = BI . createWidget ( { type : "bi.searcher" , isAutoSearch : ! 1 , isAutoSync : ! 1 , onSearch : function ( a , b ) { b ( ) } , adapter : this . adapter , popup : this . searcherPane , height : 200 , masker : ! 1 , listeners : [ { eventName : BI . Searcher . EVENT _START , action : function ( ) { a . _showSearcherPane ( ) , a . _setStartValue ( "" ) , this . setValue ( BI . deepClone ( a . storeValue ) ) } } , { eventName : BI . Searcher . EVENT _STOP , action : function ( ) { a . _showAdapter ( ) , a . _setStartValue ( "" ) , a . adapter . setValue ( a . storeValue ) , a . adapter . populate ( ) } } , { eventName : BI . Searcher . EVENT _PAUSE , action : function ( ) { var b = this . getKeyword ( ) ; this . hasMatched ( ) && a . _join ( { type : BI . Selection . Multi , value : [ b ] } , function ( ) { a . _showAdapter ( ) , a . adapter . setValue ( a . storeValue ) , a . _setStartValue ( b ) , c ( ) , a . adapter . populate ( ) , a . _setStartValue ( "" ) , a . fireEvent ( BI . MultiSelectList . EVENT _CHANGE ) } ) } } , { eventName : BI . Searcher . EVENT _SEARCHING , action : function ( ) { var b = this . getKeyword ( ) , d = BI . last ( b ) ; b = BI . initial ( b || [ ] ) , b . length > 0 && a . _joinKeywords ( b , function ( ) { BI . isEndWithBlank ( d ) ? ( a . adapter . setValue ( a . storeValue ) , c ( ) , a . adapter . populate ( ) , a . _setStartValue ( "" ) ) : ( a . adapter . setValue ( a . storeValue ) , c ( ) ) , a . fireEvent ( BI . MultiSelectList . EVENT _CHANGE ) } ) } } , { eventName : BI . Searcher . EVENT _CHANGE , action : function ( b , d ) { d instanceof BI . MultiSelectBar ? a . _joinAll ( this . getValue ( ) , function ( ) { c ( ) , a . fireEvent ( BI . MultiSelectList . EVENT _CHANGE ) } ) : a . _join ( this . getValue ( ) , function ( ) { c ( ) , a . fireEvent ( BI . MultiSelectList . EVENT _CHANGE ) } ) } } ] } ) , BI . createWidget ( { type : "bi.vtape" , element : this , items : [ { el : this . trigger , 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 ) } , _defaultState : function ( ) { this . trigger . stopEditing ( ) } , _assertValue : function ( a ) { a || ( a = { } ) , a . type || ( a . type = BI . Selection . Multi ) , a . value || ( a . value = [ ] ) } , _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 ] ) && ( 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 ) , e . itemsCreator ( { type : BI . MultiSelectList . 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 ) , d . itemsCreator ( { type : BI . MultiSelectList . REQ _GET _ALL _DATA , keywords : [ this . trigger . getKey ( ) ] } , function ( d ) { var e = BI . map ( d . items , "value" ) ; if ( c . storeValue . type === a . type ) { var f = ! 1 , g = c . _makeMap ( c . storeValue . value ) ; return BI . each ( e , function ( a , b ) { BI . isNotNull ( g [ b ] ) && ( f = ! 0 , delete g [ b ] ) } ) , f && ( c . storeValue . value = BI . values ( g ) ) , void c . _adjust ( b ) } var h = c . _makeMap ( c . storeValue . value ) , i = c . _makeMap ( a . value ) , j = [ ] ; BI . each ( e , function ( a , b ) { BI . isNotNull ( h [ e [ a ] ] ) && delete h [ e [ a ] ] , BI . isNull ( i [ e [ a ] ] ) && j . push ( b ) } ) , c . storeValue . value = j . concat ( BI . values ( h ) ) , c . _adjust ( b ) } ) } , _adjust : function ( a ) { function b ( ) { c . storeValue . type === BI . Selection . All && c . storeValue . value . length >= c . _count ? c . storeValue = { type : BI . Selection . Multi , value : [ ] } : c . storeValue . type === BI . Selection . Multi && c . storeValue . value . length >= c . _count && ( c . storeValue = { type : BI . Selection . All , value : [ ] } ) } var c = this , d = this . options ; this . _count ? ( b ( ) , a ( ) ) : d . itemsCreator ( { type : BI . MultiSelectList . REQ _GET _DATA _LENGTH } , function ( d ) { c . _count = d . count , b ( ) , a ( ) } ) } , _join : function ( a , b ) { var c = this ; this . options ; if ( this . _assertValue ( a ) , this . _assertValue ( this . storeValue ) , this . storeVa
} ) } , _init : function ( ) { BI . MultiTreeCheckSelectedButton . superclass . _init . apply ( this , arguments ) ; var a = this ; this . indicator = BI . createWidget ( { type : "bi.icon_button" , cls : "check-font trigger-check-selected icon-size-12" , width : 15 , height : 15 , stopPropagation : ! 0 } ) , this . checkSelected = BI . createWidget ( { type : "bi.text_button" , cls : "trigger-check-selected" , invisible : ! 0 , hgap : 4 , text : BI . i18nText ( "BI-Check_Selected" ) , textAlign : "center" , textHeight : 15 } ) , this . checkSelected . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . checkSelected . on ( BI . TextButton . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . MultiSelectCheckSelectedButton . EVENT _CHANGE , arguments ) } ) , BI . createWidget ( { type : "bi.horizontal" , element : this , items : [ this . indicator , this . checkSelected ] } ) , this . element . hover ( function ( ) { a . indicator . setVisible ( ! 1 ) , a . checkSelected . setVisible ( ! 0 ) } , function ( ) { a . indicator . setVisible ( ! 0 ) , a . checkSelected . setVisible ( ! 1 ) } ) , this . setVisible ( ! 1 ) } , setValue : function ( a ) { a || ( a = { } ) ; var b = BI . size ( a . value ) > 0 ; this . setVisible ( b ) , b && ( this . indicator . setVisible ( ! 0 ) , this . checkSelected . setVisible ( ! 1 ) ) } } ) , BI . MultiTreeCheckSelectedButton . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multi_tree_check_selected_button" , BI . MultiTreeCheckSelectedButton ) , BI . MultiTreeSearchInsertPane = BI . inherit ( BI . Widget , { constants : { height : 24 } , props : { baseCls : "bi-multi-tree-search-insert-pane bi-card" , itemsCreator : BI . emptyFn , keywordGetter : BI . emptyFn , el : { type : "bi.part_tree" } } , render : function ( ) { var a = this , b = this . options ; return { type : "bi.absolute" , items : [ { el : { type : "bi.text_button" , invisible : ! 0 , ref : function ( b ) { a . addTip = b } , text : BI . i18nText ( "BI-Basic_Click_To_Add_Text" , "" ) , height : this . constants . height , cls : "bi-high-light" , handler : function ( ) { a . fireEvent ( BI . MultiTreeSearchInsertPane . EVENT _ADD _ITEM , b . keywordGetter ( ) ) } } , top : 5 , left : 0 , right : 0 } , { el : BI . extend ( { type : "bi.part_tree" , tipText : BI . i18nText ( "BI-No_Select" ) , itemsCreator : function ( c , d ) { c . keyword = b . keywordGetter ( ) , b . itemsCreator ( c , function ( c ) { d ( c ) , a . setKeyword ( b . keywordGetter ( ) , c . items ) } ) } , ref : function ( b ) { a . partTree = b } , value : b . value , listeners : [ { eventName : BI . Controller . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } } , { eventName : BI . TreeView . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . MultiTreeSearchInsertPane . EVENT _CHANGE ) } } ] } , b . el ) , left : 0 , top : 0 , bottom : 0 , right : 0 } ] } } , setKeyword : function ( a , b ) { var c = BI . isEmptyArray ( b ) ; this . addTip . setVisible ( c ) , this . partTree . setVisible ( ! c ) , c && this . addTip . setText ( BI . i18nText ( "BI-Basic_Click_To_Add_Text" , a ) ) } , hasChecked : function ( ) { return this . partTree . hasChecked ( ) } , setValue : function ( a ) { this . setSelectedValue ( a . value ) } , setSelectedValue : function ( a ) { a || ( a = { } ) , this . partTree . setSelectedValue ( a ) } , getValue : function ( ) { return this . partTree . getValue ( ) } , empty : function ( ) { this . partTree . empty ( ) } , populate : function ( a ) { this . partTree . stroke . apply ( this . partTree , arguments ) } } ) , BI . MultiTreeSearchInsertPane . EVENT _CHANGE = "EVENT_CHANGE" , BI . MultiTreeSearchInsertPane . EVENT _CLICK _CONFIRM = "EVENT_CLICK_CONFIRM" , BI . MultiTreeSearchInsertPane . EVENT _CLICK _CLEAR = "EVENT_CLICK_CLEAR" , BI . MultiTreeSearchInsertPane . EVENT _ADD _ITEM = "EVENT_ADD_ITEM" , BI . shortcut ( "bi.multi_tree_search_insert_pane" , BI . MultiTreeSearchInsertPane ) , BI . MultiTreeSearchPane = BI . inherit ( BI . Pane , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiTreeSearchPane . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-tree-search-pane bi-card" , itemsCreator : BI . emptyFn , keywordGetter : BI . emptyFn } ) } , _init : function ( ) { BI . MultiTreeSearchPane . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . partTree = BI . createWidget ( { type : "bi.part_tree" , element : this , tipText : BI . i18nText ( "BI-No_Select" ) , itemsCreator : function ( a , c ) { a . keyword = b . keywordGetter ( ) , b . itemsCreator ( a , c ) } , value : b . value } ) , this . partTree . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . partTree . on ( BI . TreeView . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . MultiTreeSearchPane . EVENT _CHANGE ) } ) } , hasChecked : function ( ) { return this . partTree . hasChecked ( ) } , setValue : function ( a ) { this . setSelectedValue ( a . value ) } , setSelectedValue : function ( a ) { a || ( a =
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 ) } , _getItemsByTimes : function ( a , b ) { for ( var c = [ ] , d = 100 * ( b - 1 ) ; a [ d ] && d < 100 * b ; d ++ ) c . push ( a [ d ] ) ; return c } , _hasNextByTimes : function ( a , b ) { return 100 * b < a . length } , _itemsCreator : function ( a , b ) { var c = this , d = this . options , e = d . items , f = ( a . keywords || [ ] ) . slice ( ) ; if ( a . keyword && f . push ( a . keyword ) , BI . each ( f , function ( a , b ) { var c = BI . Func . getSearchResult ( e , b ) ; e = c . match . concat ( c . find ) } ) , a . selectedValues ) { var g = BI . makeObject ( a . selectedValues , ! 0 ) ; e = BI . filter ( e , function ( a , b ) { return ! g [ b . value ] } ) } return a . type == BI . MultiSelectCombo . REQ _GET _ALL _DATA ? void b ( { items : e } ) : a . type == BI . MultiSelectCombo . REQ _GET _DATA _LENGTH ? void b ( { count : e . length } ) : void b ( { items : c . _getItemsByTimes ( e , a . times ) , hasNext : c . _hasNextByTimes ( e , a . times ) } ) } , _checkError : function ( ) { var a = this . storeValue . value || [ ] ; if ( BI . isNotEmptyArray ( a ) ) { a = BI . isArray ( a ) ? a : [ a ] ; var b = BI . find ( this . allValue , function ( b , c ) { return ! BI . contains ( a , c ) } ) ; BI . isNull ( b ) ? ( BI . isNotNull ( this . trigger ) && this . trigger . setTipType ( "success" ) , this . element . removeClass ( "combo-error" ) ) : ( BI . isNotNull ( this . trigger ) && this . trigger . setTipType ( "warning" ) , this . element . addClass ( "combo-error" ) ) } else a . length === this . allValue . length ? ( BI . isNotNull ( this . trigger ) && this . trigger . setTipType ( "success" ) , this . element . removeClass ( "combo-error" ) ) : ( BI . isNotNull ( this . trigger ) && this . trigger . setTipType ( "warning" ) , this . element . addClass ( "combo-error" ) ) } , _updateAllValue : function ( ) { this . storeValue = this . storeValue || { } , this . allValue = BI . deepClone ( this . storeValue . value || [ ] ) } , setValue : function ( a ) { this . storeValue = BI . deepClone ( a || { } ) , this . _updateAllValue ( ) , this . _assertValue ( this . storeValue ) , this . combo . setValue ( this . storeValue ) , this . _checkError ( ) } , getValue : function ( ) { return BI . deepClone ( this . storeValue ) } , _populate : function ( ) { this . _count = null , this . combo . populate ( ) } , populate : function ( a ) { this . options . items = a , this . _populate ( ) } } ) , BI . extend ( BI . SearchMultiTextValueCombo , { REQ _GET _DATA _LENGTH : 1 , REQ _GET _ALL _DATA : - 1 } ) , BI . SearchMultiTextValueCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . shortcut ( "bi.search_multi_text_value_combo" , BI . SearchMultiTextValueCombo ) , BI . SearchMultiSelectTrigger = BI . inherit ( BI . Trigger , { constants : { height : 14 , rgap : 4 , lgap : 4 } , _defaultConfig : function ( ) { return BI . extend ( BI . SearchMultiSelectTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-trigger bi-border" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , searcher : { } , switcher : { } , adapter : null , masker : { } } ) } , _init : function ( ) { BI . SearchMultiSelectTrigger . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; b . height && this . setHeight ( b . height - 2 ) , this . searcher = BI . createWidget ( b . searcher , { type : "bi.search_multi_select_searcher" , height : b . height , itemsCreator : b . itemsCreator , valueFormatter : b . valueFormatter , allValueGetter : b . allValueGetter , popup : { } , adapter : b . adapter , masker : b . masker , value : b . value , text : b . text , tipType : b . tipType , warningTitle : b . warningTitle } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _START , function ( ) { a . fireEvent ( BI . SearchMultiSelectTrigger . EVENT _START ) } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _PAUSE , function ( ) { a . fireEvent ( BI . SearchMultiSelectTrigger . EVENT _PAUSE ) } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _SEARCHING , function ( ) { a . fireEvent ( BI . SearchMultiSelectTrigger . EVENT _SEARCHING , arguments ) } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _STOP , function ( ) { a . fireEvent ( BI . SearchMultiSelectTrigger . EVENT _STOP ) } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . SearchMultiSelectTrigger . EVENT _CHANGE , arguments ) } ) , this . numberCounter = BI . createWidget ( b . switcher , { type : "bi.multi_select_check_selected_switcher" , valueFormatter : b . valueFormatter , itemsCreator : b . itemsCreator , adapter : b . adapter , masker : b . masker , value : b . value } ) , this . numberCounter . on ( BI . MultiSelectCheckSelectedSwitcher . EVENT _TRIGGER _CHANGE , function ( ) { a . fireEvent ( BI . SearchMultiSelectTrigger . EVENT _COUNTER _CLICK ) } ) , this . numberCounter . on ( BI . MultiSelectCheckSelectedS
var a = this , b = this . options , c = function ( ) { BI . isKey ( a . _startValue ) && ( a . storeValue = a . _startValue ) , a . trigger . getSearcher ( ) . setState ( a . storeValue ) } ; this . storeValue = b . value , this . requesting = ! 1 , this . trigger = BI . createWidget ( { type : "bi.single_select_trigger" , height : b . height , allowNoSelect : b . allowNoSelect , allowEdit : b . allowEdit , valueFormatter : b . valueFormatter , itemsCreator : function ( c , d ) { b . itemsCreator ( c , function ( b ) { 1 === c . times && BI . isNotNull ( c . keywords ) && a . trigger . setValue ( a . getValue ( ) ) , d . apply ( a , arguments ) } ) } , text : b . text , value : this . storeValue } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _FOCUS , function ( ) { a . fireEvent ( BI . SingleSelectCombo . EVENT _FOCUS ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _BLUR , function ( ) { a . fireEvent ( BI . SingleSelectCombo . EVENT _BLUR ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _START , function ( ) { a . _setStartValue ( ) , this . getSearcher ( ) . setValue ( a . storeValue ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _STOP , function ( ) { a . _setStartValue ( ) , a . fireEvent ( BI . SingleSelectCombo . EVENT _STOP ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _PAUSE , function ( ) { if ( this . getSearcher ( ) . hasMatched ( ) ) { var b = this . getSearcher ( ) . getKeyword ( ) ; a . combo . setValue ( a . storeValue ) , a . _setStartValue ( b ) , c ( ) , a . populate ( ) , a . _setStartValue ( ) } } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _SEARCHING , function ( b ) { var d = BI . last ( b ) ; b = BI . initial ( b || [ ] ) , b . length > 0 && a . _joinKeywords ( b , function ( ) { BI . isEndWithBlank ( d ) ? ( a . combo . setValue ( a . storeValue ) , c ( ) , a . combo . populate ( ) , a . _setStartValue ( ) ) : ( a . combo . setValue ( a . storeValue ) , c ( ) ) } ) , a . fireEvent ( BI . SingleSelectCombo . EVENT _SEARCHING ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _CHANGE , function ( b , d ) { a . storeValue = this . getValue ( ) , c ( ) , a . _defaultState ( ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _COUNTER _CLICK , function ( ) { a . combo . isViewVisible ( ) || a . combo . showView ( ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , container : b . container , toggle : ! 1 , el : this . trigger , adjustLength : 1 , popup : { type : "bi.single_select_popup_view" , allowNoSelect : b . allowNoSelect , ref : function ( ) { a . popup = this , a . trigger . setAdapter ( this ) } , listeners : [ { eventName : BI . SingleSelectPopupView . EVENT _CHANGE , action : function ( ) { a . storeValue = this . getValue ( ) , a . _adjust ( function ( ) { c ( ) , a . _defaultState ( ) } ) , a . fireEvent ( BI . SingleSelectCombo . EVENT _CLICK _ITEM ) } } ] , itemsCreator : b . itemsCreator , valueFormatter : b . valueFormatter , onLoaded : function ( ) { BI . nextTick ( function ( ) { a . combo . adjustWidth ( ) , a . combo . adjustHeight ( ) , a . trigger . getSearcher ( ) . adjustView ( ) } ) } } , hideChecker : function ( a ) { return 0 === d . element . find ( a . target ) . length } , value : b . value } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { this . setValue ( a . storeValue ) , BI . nextTick ( function ( ) { a . populate ( ) } ) } ) , this . wants2Quit = ! 1 , this . combo . on ( BI . Combo . EVENT _AFTER _HIDEVIEW , function ( ) { a . trigger . stopEditing ( ) , a . requesting === ! 0 ? a . wants2Quit = ! 0 : a . fireEvent ( BI . SingleSelectCombo . 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 . SingleSelectCombo . 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 . SingleSelectCombo . EVENT _CONFIRM ) , c . wants2Quit = ! 1 ) , c . requesting = ! 1 } var c = this , d = this . options ; this . _count ? ( b ( ) , a ( ) ) : d . itemsCreator ( { type : BI . SingleSelectCombo . REQ _GET _DATA _LENGTH } , function ( d ) { c . _count = d . count , b ( ) , a ( ) } ) } , _setStartValue : function ( a ) { this . _startValue = a , this . popup . setStartValue ( a ) } , setValue : function ( a ) { this . storeValu
} } , this ) ) } , _showInput : function ( ) { this . editor . visible ( ) , this . text . invisible ( ) } , _showHint : function ( ) { this . editor . invisible ( ) , this . text . visible ( ) } , setTitle : function ( a ) { this . text . setTitle ( a ) } , setWarningTitle : function ( a ) { this . text . setWarningTitle ( a ) } , focus : function ( ) { this . _showInput ( ) , this . editor . focus ( ) } , blur : function ( ) { this . editor . blur ( ) , this . _showHint ( ) , this . _checkText ( ) } , doRedMark : function ( ) { "" === this . editor . getValue ( ) && BI . isKey ( this . options . watermark ) || this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doHighLight : function ( ) { "" === this . editor . getValue ( ) && BI . isKey ( this . options . watermark ) || this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } , isValid : function ( ) { return this . editor . isValid ( ) } , setErrorText : function ( a ) { this . editor . setErrorText ( a ) } , getErrorText : function ( ) { return this . editor . getErrorText ( ) } , isEditing : function ( ) { return this . editor . isEditing ( ) } , getLastValidValue : function ( ) { return this . editor . getLastValidValue ( ) } , getLastChangedValue : function ( ) { return this . editor . getLastChangedValue ( ) } , setValue : function ( a ) { this . editor . setValue ( a ) , this . _checkText ( ) } , getValue : function ( ) { return this . editor . getValue ( ) } , getState : function ( ) { return this . text . getValue ( ) } , setState : function ( a ) { var b = this . options ; this . _showHint ( ) , a = BI . isEmpty ( a ) || a == b . text ? b . text : a + b . text , this . text . setValue ( a ) } } ) , BI . SignTextEditor . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . SignTextEditor . EVENT _CHANGE _CONFIRM = "EVENT_CHANGE_CONFIRM" , BI . SignTextEditor . EVENT _CLICK _LABEL = "EVENT_CLICK_LABEL" , BI . shortcut ( "bi.sign_text_editor" , BI . SignTextEditor ) , BI . SliderIconButton = BI . inherit ( BI . Widget , { props : { baseCls : "bi-single-slider-button" } , constants : { LARGE _SIZE : 16 , NORMAL _SIZE : 12 , LARGE _OFFSET : 4 , NORMAL _OFFSET : 6 } , render : function ( ) { var a = this ; return { type : "bi.absolute" , ref : function ( ) { a . wrapper = this } , items : [ { el : { type : "bi.text_button" , cls : "slider-button bi-high-light-border" , ref : function ( ) { a . slider = this } } } ] } } } ) , BI . shortcut ( "bi.single_slider_button" , BI . SliderIconButton ) , BI . SingleSlider = BI . inherit ( BI . Single , { _constant : { EDITOR _WIDTH : 90 , EDITOR _HEIGHT : 30 , SLIDER _WIDTH _HALF : 15 , SLIDER _WIDTH : 30 , SLIDER _HEIGHT : 30 , TRACK _HEIGHT : 24 } , props : { baseCls : "bi-single-slider bi-slider-track" , digit : ! 1 , unit : "" } , render : function ( ) { var a = this , b = this . options , c = this . _constant ; this . enable = ! 1 , this . value = "" , this . grayTrack = BI . createWidget ( { type : "bi.layout" , cls : "gray-track" , height : 6 } ) , this . blueTrack = BI . createWidget ( { type : "bi.layout" , cls : "blue-track bi-high-light-background" , height : 6 } ) , this . track = this . _createTrackWrapper ( ) , this . slider = BI . createWidget ( { type : "bi.single_slider_button" } ) , this . _draggable ( this . slider ) ; var d = BI . createWidget ( { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ this . slider ] } ] , hgap : c . SLIDER _WIDTH _HALF , height : c . SLIDER _HEIGHT } ) ; return d . element . click ( function ( d ) { if ( a . enable && a . isEnabled ( ) ) { var e = d . clientX - a . element . offset ( ) . left - c . SLIDER _WIDTH _HALF , f = a . track . element [ 0 ] . scrollWidth , g = 0 ; e < 0 && ( g = 0 ) , e > 0 && e < f - c . SLIDER _WIDTH && ( g = 100 * e / a . _getGrayTrackLength ( ) ) , e > f - c . SLIDER _WIDTH && ( g = 100 ) ; var h = BI . parseFloat ( g . toFixed ( 1 ) ) ; a . _setAllPosition ( h ) ; var i = a . _getValueByPercent ( h ) ; i = b . digit === ! 1 ? i : i . toFixed ( b . digit ) , a . label . setValue ( i ) , a . value = i , a . fireEvent ( BI . SingleSlider . EVENT _CHANGE ) } } ) , this . label = BI . createWidget ( { type : "bi.sign_text_editor" , cls : "slider-editor-button" , text : b . unit , width : c . EDITOR _WIDTH - 2 , allowBlank : ! 1 , textAlign : "center" , validationChecker : function ( b ) { return a . _checkValidation ( b ) } } ) , this . label . element . hover ( function ( ) { a . label . element . removeClass ( "bi-border" ) . addClass ( "bi-border" ) } , function ( ) { a . label . element . removeClass ( "bi-border" ) } ) , this . label . on ( BI . SignEditor . EVENT _CONFIRM , function ( ) { var b = BI . parseFloat ( this . getValue ( ) ) , c = a . _getPercentByValue ( b ) , d = BI . parseFloat ( c . toFixed ( 1 ) ) ; a . _setAllPosition ( d ) , this . setValue ( b ) , a . value = b , a . fireEvent ( BI . SingleSlider . EVENT _CHANGE ) } ) , this . _setVisible ( ! 1 ) , { type : "bi.absolute" , items : [ { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : this . track , width : "100%" , height : c . TRACK _HEIGHT } ] } ] , hgap : 7 , height : c . TRACK _HEIGHT } , top : 23 , left : 0 , width : "100%"
BI . Bubbles . hide ( "error" ) , b . element . removeClass ( b . constants . timeErrorCls ) , b . fireEvent ( BI . DateInterval . EVENT _ERROR ) } ) , d . on ( BI . DynamicDateCombo . EVENT _VALID , function ( ) { BI . Bubbles . hide ( "error" ) ; var a = b . left . getKey ( ) , c = b . right . getKey ( ) ; b . _check ( a , c ) && b . _compare ( a , c ) ? ( b . _setTitle ( BI . i18nText ( "BI-Time_Interval_Error_Text" ) ) , b . element . addClass ( b . constants . timeErrorCls ) , BI . Bubbles . show ( "error" , BI . i18nText ( "BI-Time_Interval_Error_Text" ) , b , { offsetStyle : "center" } ) , b . fireEvent ( BI . DateInterval . EVENT _ERROR ) ) : ( b . _clearTitle ( ) , b . element . removeClass ( b . constants . timeErrorCls ) ) } ) , d . on ( BI . DynamicDateCombo . EVENT _FOCUS , function ( ) { BI . Bubbles . hide ( "error" ) ; var a = b . left . getKey ( ) , c = b . right . getKey ( ) ; b . _check ( a , c ) && b . _compare ( a , c ) ? ( b . _setTitle ( BI . i18nText ( "BI-Time_Interval_Error_Text" ) ) , b . element . addClass ( b . constants . timeErrorCls ) , BI . Bubbles . show ( "error" , BI . i18nText ( "BI-Time_Interval_Error_Text" ) , b , { offsetStyle : "center" } ) , b . fireEvent ( BI . DateInterval . EVENT _ERROR ) ) : ( b . _clearTitle ( ) , b . element . removeClass ( b . constants . timeErrorCls ) ) } ) , d . on ( BI . DynamicDateCombo . EVENT _BEFORE _POPUPVIEW , function ( ) { b . left . hidePopupView ( ) , b . right . hidePopupView ( ) } ) , d . on ( BI . DynamicDateCombo . EVENT _CONFIRM , function ( ) { BI . Bubbles . hide ( "error" ) ; var a = b . left . getKey ( ) , c = b . right . getKey ( ) ; b . _check ( a , c ) && b . _compare ( a , c ) ? ( b . _setTitle ( BI . i18nText ( "BI-Time_Interval_Error_Text" ) ) , b . element . addClass ( b . constants . timeErrorCls ) , b . fireEvent ( BI . DateInterval . EVENT _ERROR ) ) : ( b . _clearTitle ( ) , b . element . removeClass ( b . constants . timeErrorCls ) , b . fireEvent ( BI . DateInterval . EVENT _CHANGE ) ) } ) , d } , _dateCheck : function ( a ) { return BI . print ( BI . parseDateTime ( a , "%Y-%x-%d" ) , "%Y-%x-%d" ) === a || BI . print ( BI . parseDateTime ( a , "%Y-%X-%d" ) , "%Y-%X-%d" ) === a || BI . print ( BI . parseDateTime ( a , "%Y-%x-%e" ) , "%Y-%x-%e" ) === a || BI . print ( BI . parseDateTime ( a , "%Y-%X-%e" ) , "%Y-%X-%e" ) === a } , _checkVoid : function ( a ) { var b = this . options ; return ! BI . checkDateVoid ( a . year , a . month , a . day , b . minDate , b . maxDate ) [ 0 ] } , _check : function ( a , b ) { var c = a . match ( /\d+/g ) , d = b . match ( /\d+/g ) ; return this . _dateCheck ( a ) && BI . checkDateLegal ( a ) && this . _checkVoid ( { year : c [ 0 ] , month : c [ 1 ] , day : c [ 2 ] } ) && this . _dateCheck ( b ) && BI . checkDateLegal ( b ) && this . _checkVoid ( { year : d [ 0 ] , month : d [ 1 ] , day : d [ 2 ] } ) } , _compare : function ( a , b ) { return a = BI . print ( BI . parseDateTime ( a , "%Y-%X-%d" ) , "%Y-%X-%d" ) , b = BI . print ( BI . parseDateTime ( b , "%Y-%X-%d" ) , "%Y-%X-%d" ) , BI . isNotNull ( a ) && BI . isNotNull ( b ) && a > b } , _setTitle : function ( a ) { this . left . setTitle ( a ) , this . right . setTitle ( a ) , this . label . setTitle ( a ) } , _clearTitle : function ( ) { this . left . setTitle ( "" ) , this . right . setTitle ( "" ) , this . label . setTitle ( "" ) } , setValue : function ( a ) { a = a || { } , this . left . setValue ( a . start ) , this . right . setValue ( a . end ) } , getValue : function ( ) { return { start : this . left . getValue ( ) , end : this . right . getValue ( ) } } } ) , BI . DateInterval . EVENT _VALID = "EVENT_VALID" , BI . DateInterval . EVENT _ERROR = "EVENT_ERROR" , BI . DateInterval . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.date_interval" , BI . DateInterval ) , BI . TimeInterval = BI . inherit ( BI . Single , { constants : { height : 24 , width : 24 , lgap : 15 , offset : 0 , timeErrorCls : "time-error" } , _defaultConfig : function ( ) { var a = BI . TimeInterval . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { extraCls : "bi-time-interval" , minDate : "1900-01-01" , maxDate : "2099-12-31" } ) } , _init : function ( ) { var a = this , b = this . options ; BI . TimeInterval . superclass . _init . apply ( this , arguments ) , b . value = b . value || { } , this . left = this . _createCombo ( b . value . start ) , this . right = this . _createCombo ( b . value . end ) , this . label = BI . createWidget ( { type : "bi.label" , height : this . constants . height , width : this . constants . width , text : "-" } ) , BI . createWidget ( { element : a , type : "bi.center" , height : this . constants . height , items : [ { type : "bi.absolute" , items : [ { el : a . left , left : this . constants . offset , right : this . constants . width / 2 , top : 0 , bottom : 0 } ] } , { type : "bi.absolute" , items : [ { el : a . right , left : this . constants . width / 2 , right : this . constants . offset , top : 0 , bottom : 0 } ] } ] } ) , BI . createWidget ( { type : "bi.horizontal_auto" , element : this , items : [ a . label ] } ) } , _createCombo : function ( a ) { var b = this , c = this . options , d = BI . createWidget ( { type : "bi.dynamic_date_time_combo" , behaviors : c . behaviors , value : a } ) ; return d . on ( BI . DynamicDateTimeCombo . EVENT _ERROR , function ( ) { b . _clearTitle ( ) , BI . Bubbles . hide ( "error" ) , b . e
text : BI . i18nText ( "BI-Basic_Year_Month" ) , value : BI . DynamicYearCombo . Static } , { text : BI . i18nText ( "BI-Basic_Dynamic_Title" ) , value : BI . DynamicYearCombo . Dynamic } ] , { textAlign : "center" } ) } , cardCreator : function ( c ) { switch ( c ) { case BI . DynamicYearCombo . Dynamic : return { type : "bi.dynamic_year_month_card" , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { a . _setInnerValue ( a . year , c ) } } ] , ref : function ( ) { a . dynamicPane = this } } ; case BI . DynamicYearCombo . Static : default : return { type : "bi.static_year_month_card" , behaviors : b . behaviors , min : a . options . min , max : a . options . max , listeners : [ { eventName : BI . StaticYearMonthCard . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicYearMonthPopup . EVENT _CHANGE ) } } ] , ref : function ( ) { a . year = this } } } } , listeners : [ { eventName : BI . Tab . EVENT _CHANGE , action : function ( ) { var b = a . dateTab . getSelect ( ) ; switch ( b ) { case BI . DynamicYearCombo . Static : var c = BI . DynamicDateHelper . getCalculation ( a . dynamicPane . getValue ( ) ) ; a . year . setValue ( { year : c . getFullYear ( ) , month : c . getMonth ( ) + 1 } ) , a . _setInnerValue ( ) ; break ; case BI . DynamicYearCombo . Dynamic : default : a . storeValue && a . storeValue . type === BI . DynamicYearCombo . Dynamic ? a . dynamicPane . setValue ( a . storeValue . value ) : a . dynamicPane . setValue ( { year : 0 } ) , a . _setInnerValue ( ) } } } ] } } , setValue : function ( a ) { this . storeValue = a ; var b , c , d = this ; switch ( a = a || { } , b = a . type || BI . DynamicDateCombo . Static , c = a . value || a , this . dateTab . setSelect ( b ) , b ) { case BI . DynamicDateCombo . Dynamic : this . dynamicPane . setValue ( c ) , d . _setInnerValue ( ) ; break ; case BI . DynamicDateCombo . Static : default : this . year . setValue ( c ) , this . textButton . setValue ( BI . i18nText ( "BI-Basic_Current_Month" ) ) , this . textButton . setEnable ( ! 0 ) } } , getValue : function ( ) { return { type : this . dateTab . getSelect ( ) , value : this . dateTab . getValue ( ) } } } ) , BI . DynamicYearMonthPopup . BUTTON _CLEAR _EVENT _CHANGE = "BUTTON_CLEAR_EVENT_CHANGE" , BI . DynamicYearMonthPopup . BUTTON _lABEL _EVENT _CHANGE = "BUTTON_lABEL_EVENT_CHANGE" , BI . DynamicYearMonthPopup . BUTTON _OK _EVENT _CHANGE = "BUTTON_OK_EVENT_CHANGE" , BI . DynamicYearMonthPopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.dynamic_year_month_popup" , BI . DynamicYearMonthPopup ) , BI . DynamicYearMonthTrigger = BI . inherit ( BI . Trigger , { _const : { hgap : 4 , vgap : 2 } , props : { extraCls : "bi-year-month-trigger" , min : "1900-01-01" , max : "2099-12-31" , height : 22 } , beforeInit : function ( a ) { var b = this . options ; b . title = BI . bind ( this . _titleCreator , this ) , a ( ) } , _init : function ( ) { BI . DynamicYearMonthTrigger . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . yearEditor = this . _createEditor ( ! 0 ) , this . monthEditor = this . _createEditor ( ! 1 ) , BI . createWidget ( { element : this , type : "bi.htape" , items : [ { type : "bi.center" , items : [ { type : "bi.htape" , items : [ this . yearEditor , { el : { type : "bi.text_button" , text : BI . i18nText ( "BI-Multi_Date_Year" ) , width : a . height } , width : a . height } ] } , { type : "bi.htape" , items : [ this . monthEditor , { el : { type : "bi.text_button" , text : BI . i18nText ( "BI-Multi_Date_Month" ) , width : a . height } , width : a . height } ] } ] } , { el : { type : "bi.trigger_icon_button" , width : a . height } , width : a . height } ] } ) , this . setValue ( a . value ) } , _createEditor : function ( a ) { var b = this , c = this . options , d = this . _const , e = BI . parseDateTime ( c . min , "%Y-%X-%d" ) , f = BI . createWidget ( { type : "bi.sign_editor" , height : c . height , validationChecker : function ( b ) { return a ? "" === b || BI . isPositiveInteger ( b ) && ! BI . checkDateVoid ( b , b === e . getFullYear ( ) ? e . getMonth ( ) + 1 : 1 , 1 , c . min , c . max ) [ 0 ] : "" === b || BI . isPositiveInteger ( b ) && b >= 1 && b <= 12 && ! BI . checkDateVoid ( BI . getDate ( ) . getFullYear ( ) , b , 1 , c . min , c . max ) [ 0 ] } , quitChecker : function ( ) { return ! 1 } , watermark : BI . i18nText ( "BI-Basic_Unrestricted" ) , errorText : function ( a ) { return BI . i18nText ( "BI-Year_Trigger_Invalid_Text" ) } , hgap : d . hgap , vgap : d . vgap , allowBlank : ! 0 } ) ; return f . on ( BI . SignEditor . EVENT _KEY _DOWN , function ( ) { b . fireEvent ( BI . DynamicYearMonthTrigger . EVENT _KEY _DOWN ) } ) , f . on ( BI . SignEditor . EVENT _FOCUS , function ( ) { b . fireEvent ( BI . DynamicYearMonthTrigger . EVENT _FOCUS ) } ) , f . on ( BI . SignEditor . EVENT _STOP , function ( ) { b . fireEvent ( BI . DynamicYearMonthTrigger . EVENT _STOP ) } ) , f . on ( BI . SignEditor . EVENT _CONFIRM , function ( ) { b . _doEditorConfirm ( f ) , b . fireEvent ( BI . DynamicYearMonthTrigger . EVENT _CONFIRM ) } ) , f . on ( BI . SignEditor . EVENT _SPACE , function ( ) { f . isValid ( ) && f . blur ( ) } ) , f . on ( BI . SignEditor . EVENT _START , function ( ) { b . fireEvent ( BI . DynamicYearMonthTrigger . EV
this . items ? c ( ) : e . itemsCreator ( { } , function ( a ) { d . _initData ( a ) , c ( ) } ) } , _reqDisplayTreeNode : function ( a , b ) { function c ( a , b , g ) { return null == g || BI . isEmpty ( g ) ? void BI . each ( b . getChildren ( ) , function ( d , g ) { var h = BI . clone ( a ) ; h . push ( g . value ) ; var i = f . _getChildCount ( h ) ; e ( g , b . id , i ) , c ( h , g , { } ) } ) : void BI . each ( g , function ( b ) { var h = f . _getTreeNode ( a , b ) ; if ( BI . isNull ( h ) ) e ( { id : BI . UUID ( ) , text : b , value : b } , BI . UUID ( ) , 0 ) ; else { var i = BI . clone ( a ) ; i . push ( h . value ) , e ( h , h . parent && h . parent . id , d ( g [ b ] , i ) ) , c ( i , h , g [ b ] ) } } ) } function d ( a , b ) { return null == a ? 0 : BI . isEmpty ( a ) ? f . _getChildCount ( b ) : BI . size ( a ) } function e ( a , b , c ) { g . push ( { id : a . id , pId : b , text : a . text + ( c > 0 ? "(" + BI . i18nText ( "BI-Basic_Altogether" ) + c + BI . i18nText ( "BI-Basic_Count" ) + ")" : "" ) , value : a . value , open : ! 0 } ) } var f = this , g = [ ] , h = a . selectedValues ; return null == h || BI . isEmpty ( h ) ? void b ( { } ) : ( c ( [ ] , this . tree . getRoot ( ) , h ) , void b ( { items : g } ) ) } , _reqSelectedTreeNode : function ( a , b ) { function c ( a ) { var b = m . concat ( k ) ; if ( g ( a , b ) ) if ( f ( b ) ) i . _deleteNode ( a , b ) ; else { var c = [ ] , j = e ( m , k , [ ] , c ) ; j && BI . isNotEmptyArray ( c ) && BI . each ( c , function ( b , c ) { var e = i . _getNode ( a , c ) ; e ? i . _deleteNode ( a , c ) : d ( a , c , BI . last ( c ) ) } ) } if ( h ( a , b ) ) { var l = [ ] , j = ! 1 ; f ( b ) ? j = ! 0 : ( j = e ( m , k , l ) , b = m ) , j === ! 0 && ( d ( a , b , k ) , l . length > 0 && BI . each ( l , function ( b , c ) { i . _buildTree ( a , c ) } ) ) } } function d ( a , b , c ) { var d = a , e = [ ] , f = [ ] ; BI . some ( b , function ( g , h ) { var j = d [ h ] ; if ( null == j ) { if ( 0 === g ) return ! 0 ; if ( ! BI . isEmpty ( d ) ) return ! 0 ; var k = b . slice ( 0 , g ) , l = i . _getChildren ( k ) ; if ( f . push ( k ) , e . push ( l . length ) , g === b . length - 1 && 1 === l . length && l [ 0 ] . value === c ) for ( var m = e . length - 1 ; m >= 0 && 1 === e [ m ] ; m -- ) i . _deleteNode ( a , f [ m ] ) ; else BI . each ( l , function ( a , e ) { return g === b . length - 1 && e . value === c || void ( d [ e . value ] = { } ) } ) ; d = d [ h ] } else d = j } ) } function e ( a , b , c , d ) { var f = BI . clone ( a ) ; if ( f . push ( b ) , i . _isMatch ( a , b , l ) ) return d && d . push ( f ) , ! 0 ; var g = i . _getChildren ( f ) , h = [ ] , j = ! 1 ; return BI . each ( g , function ( a , b ) { e ( f , b . value , c , d ) ? j = ! 0 : h . push ( b . value ) } ) , j === ! 0 && BI . each ( h , function ( a , b ) { var d = BI . clone ( f ) ; d . push ( b ) , c . push ( d ) } ) , j } function f ( a ) { for ( var b = 0 , c = a . length ; b < c ; b ++ ) if ( i . _isMatch ( a . slice ( 0 , b ) , a [ b ] , l ) ) return ! 0 ; return ! 1 } function g ( a , b ) { for ( var c = a , d = 0 ; d < b . length ; d ++ ) { var e = b [ d ] ; if ( c = c [ e ] , null == c ) return ! 1 } return ! 0 } function h ( a , b ) { for ( var c = a , d = 0 ; d < b . length ; d ++ ) { var e = b [ d ] ; if ( ! BI . has ( c , e ) ) return ! 1 ; if ( c = c [ e ] , BI . isEmpty ( c ) ) return ! 0 } return ! 1 } var i = this , j = BI . deepClone ( a . selectedValues ) , k = a . notSelectedValue || { } , l = a . keyword || "" , m = a . parentValues || [ ] ; return null == j || BI . isEmpty ( j ) ? void b ( { } ) : ( c ( j ) , void b ( j ) ) } , _reqAdjustTreeNode : function ( a , b ) { function c ( a , b ) { if ( null == a || BI . isEmpty ( a ) ) return ! 0 ; var e = ! 0 ; return BI . each ( a , function ( d , g ) { var h = BI . clone ( b ) ; h . push ( d ) , c ( a [ d ] , h ) || ( BI . each ( a [ d ] , function ( a , b ) { var c = BI . clone ( h ) ; c . push ( a ) , f . push ( c ) } ) , e = ! 1 ) } ) , e && d ( a , b ) } function d ( a , b ) { return BI . isEmpty ( a ) || e . _getChildCount ( b ) === BI . size ( a ) } var e = this , f = [ ] , g = a . selectedValues ; if ( null == g || BI . isEmpty ( g ) ) return void b ( { } ) ; BI . each ( g , function ( a , b ) { f . push ( [ a ] ) } ) , c ( g , [ ] ) ; var h = { } ; BI . each ( f , function ( a , b ) { e . _buildTree ( h , b ) } ) , b ( h ) } , _reqInitTreeNode : function ( a , b ) { function c ( ) { var b = j . _getChildren ( [ ] ) , c = b . length ; if ( "" !== n ) { for ( var e = 0 , f = c ; e < f ; e ++ ) if ( b [ e ] . value === n ) { c = e + 1 ; break } } else c = 0 ; for ( var g = [ ] , h = c , f = b . length ; h < f ; h ++ ) { if ( g . length < j . _const . perPage ) var i = d ( 1 , [ ] , b [ h ] . value , ! 1 , k ) ; else if ( g . length === j . _const . perPage ) var i = d ( 1 , [ ] , b [ h ] . value , ! 1 , [ ] ) ; if ( i [ 0 ] === ! 0 && g . push ( b [ h ] . value ) , g . length > j . _const . perPage ) break } if ( 1 === a . times ) { var o = j . _getAddedValueNode ( [ ] , m ) ; k = BI . concat ( BI . filter ( o , function ( a , b ) { var c = BI . Func . getSearchResult ( [ b . text || b . value ] , l ) ; return c . find . length > 0 || c . match . length > 0 } ) , k ) } return g } function d ( a , b , c , i , k ) { if ( j . _isMatch ( b , c , l ) ) { var m = i || h ( b , c ) ; return e ( b , c , ! 1 , m , ! i && f ( b , c ) , ! 0 , k ) , [ ! 0 , m ] } var n = BI . clone ( b ) ; n . push ( c ) ; var o = j . _getChildren ( n ) , p = ! 1 , m = ! 1 , q = i || g ( b , c ) ; return BI . each ( o , function ( b , c ) { var e = d ( a + 1 , n , c . value , q , k ) ; e [ 1 ] === ! 0 && ( m = ! 0 ) , e [ 0 ] === ! 0 && ( p = ! 0 ) } ) , p === ! 0 && ( m = q || h ( b , c ) && m , e ( b , c , ! 0 , m , ! 1 , ! 1 , k ) ) , [ p , m ] } function e ( a , b , c , d , e , f , g ) { var h = j . _getTreeNode ( a , b ) ; g . push ( { id : h . id , pId : h . pId , text : h . text , value : h . value , title : h . title , isParent : h . getChildrenLength ( ) > 0 , open : c , checked : d , halfCheck : e , flag : f } ) } function f ( a , b ) { var c = i ( a ) ; return null == c ? null : BI . any ( c , function ( a , c ) { if ( a === b && null != c && ! BI . isEmpty ( c ) ) return ! 0 } ) } functi
c = c . handler ) , d = d || { } , Fix . watch ( a . model , b , _ . bind ( c , a ) , BI . extend ( d , { store : a . store } ) ) } function c ( a ) { i && j . push ( i ) , Fix . Model . target = i = a } function d ( ) { Fix . Model . target = i = j . pop ( ) } function e ( a ) { k && l . push ( k ) , Fix . Model . context = k = a } function f ( ) { Fix . Model . context = k = l . pop ( ) } function g ( a ) { if ( null != i ) return i ; a = a || k ; for ( var b = a ; b && ! ( b instanceof Fix . Model || b . store || b . _ _cacheStore ) ; ) b = b . _parent || b . options && b . options . element ; return b ? b instanceof Fix . Model ? a . _ _cacheStore = b : ( a . _ _cacheStore = b . store || b . _ _cacheStore , b . _ _cacheStore || b . store ) : void 0 } function h ( ) { var a = ! 1 ; if ( _global . Fix && this . _store ) { var b = g ( this . options . context || this . options . element ) ; b && ( c ( b ) , a = ! 0 ) , this . store = this . _store ( ) , this . store && ( this . store . _widget = this ) , a && d ( ) , a = ! 1 , c ( this . store ) , this . store instanceof Fix . Model ? this . model = this . store . model : this . model = this . store , a = ! 0 } return a } var i = null , j = [ ] , k = null , l = [ ] , m = Fix . watch ; Fix . watch = function ( a , b , e , f ) { return BI . isPlainObject ( e ) && ( f = e , e = e . handler ) , "string" == typeof e && ( e = a [ e ] ) , m . call ( this , a , b , function ( ) { f && f . store && c ( f . store ) ; try { var a = e . apply ( this , arguments ) } catch ( b ) { console . error ( b ) } return f && f . store && d ( ) , a } , f ) } ; var n = BI . createWidget ; BI . createWidget = function ( a , b , c ) { var d = ! 1 ; BI . isWidget ( b ) ? ( e ( b ) , d = ! 0 ) : null != c && ( e ( c ) , d = ! 0 ) ; try { var g = n . apply ( this , arguments ) } catch ( h ) { console . error ( h ) } return d && f ( ) , g } , _ . each ( [ "populate" , "addItems" , "prependItems" ] , function ( a ) { var b = BI . Loader . prototype [ a ] ; BI . Loader . prototype [ a ] = function ( ) { e ( this ) ; try { var a = b . apply ( this , arguments ) } catch ( c ) { console . error ( c ) } return f ( ) , a } } ) ; var o = BI . Widget . prototype . _init ; BI . Widget . prototype . _init = function ( ) { var a = h . call ( this ) ; try { o . apply ( this , arguments ) } catch ( b ) { console . error ( b ) } a && d ( ) } ; var p = BI . Widget . prototype . _render ; BI . Widget . prototype . _render = function ( ) { var b = ! 1 ; _global . Fix && this . _store && ( b = ! 0 , c ( this . store ) , a ( this , this . watch ) ) ; try { p . apply ( this , arguments ) } catch ( e ) { console . error ( e ) } b && d ( ) } ; var q = BI . Widget . prototype . _ _d ; BI . Widget . prototype . _ _d = function ( ) { try { q . apply ( this , arguments ) } catch ( a ) { console . error ( a ) } this . store && BI . isFunction ( this . store . destroy ) && this . store . destroy ( ) , BI . each ( this . _watchers , function ( a , b ) { b = BI . isArray ( b ) ? b : [ b ] , BI . each ( b , function ( a , b ) { b ( ) } ) } ) , this . _watchers && ( this . _watchers = [ ] ) , this . store && ( this . store . _parent && ( this . store . _parent = null ) , this . store . _widget && ( this . store . _widget = null ) , this . store = null ) , delete this . _ _cacheStore } , _ . each ( [ "_mount" ] , function ( a ) { var b = BI . Widget . prototype [ a ] ; b && ( BI . Widget . prototype [ a ] = function ( ) { this . store && c ( this . store ) ; try { var a = b . apply ( this , arguments ) } catch ( e ) { console . error ( e ) } return this . store && d ( ) , a } ) } ) , BI . isIE9Below && BI . isIE9Below ( ) && ( _ . each ( [ "each" , "map" , "reduce" , "reduceRight" , "find" , "filter" , "reject" , "every" , "all" , "some" , "any" , "max" , "min" , "sortBy" , "groupBy" , "indexBy" , "countBy" , "partition" , "keys" , "allKeys" , "values" , "pairs" , "invert" , "mapObject" , "findKey" , "pick" , "omit" , "tap" ] , function ( a ) { var b = BI [ a ] ; BI [ a ] = function ( a , c , d ) { return "function" == typeof c ? b ( a , function ( a , b ) { if ( ! ( a in Fix . $$skipArray ) ) return c . apply ( this , arguments ) } , d ) : b . apply ( this , arguments ) } } ) , BI . isEmpty = function ( a ) { return BI . isPlainObject ( a ) && a . _ _ob _ _ ? 0 === BI . keys ( a ) . length : _ . isEmpty ( a ) } , BI . keys = function ( a ) { for ( var b = _ . keys ( a ) , c = [ ] , d = 0 ; d < b . length ; d ++ ) b [ d ] in Fix . $$skipArray || c . push ( b [ d ] ) ; return c } , BI . values = function ( a ) { for ( var b = BI . keys ( obj ) , c = b . length , d = [ ] , e = 0 ; e < c ; e ++ ) d [ e ] = obj [ b [ e ] ] ; return d } , BI . extend = function ( ) { var a = Array . prototype . slice . call ( arguments ) ; if ( a . length < 1 ) return { } ; for ( var b = a [ 0 ] , c = 1 ; c < a . length ; ) BI . each ( a [ c ] , function ( a , c ) { b [ a ] = c } ) , c ++ ; return b } , BI . size = function ( a ) { return BI . isPlainObject ( a ) && a . _ _ob _ _ ? BI . keys ( a ) . length : _ . size ( a ) } , BI . isEmptyObject = function ( a ) { return 0 === BI . size ( a ) } , BI . deepClone = function ( a ) { return Fix . toJSON ( a ) } ) , BI . watch = Fix . watch } ( ) ;