/*! fineui 09-08-2018 */
function accAdd ( a , b ) { var c , d , e , f ; try { c = a . toString ( ) . split ( "." ) [ 1 ] . length } catch ( g ) { c = 0 } try { d = b . toString ( ) . split ( "." ) [ 1 ] . length } catch ( g ) { d = 0 } if ( f = Math . abs ( c - d ) , e = Math . pow ( 10 , Math . max ( c , d ) ) , f > 0 ) { var h = Math . pow ( 10 , f ) ; c > d ? ( a = Number ( a . toString ( ) . replace ( "." , "" ) ) , b = Number ( b . toString ( ) . replace ( "." , "" ) ) * h ) : ( a = Number ( a . toString ( ) . replace ( "." , "" ) ) * h , b = Number ( b . toString ( ) . replace ( "." , "" ) ) ) } else a = Number ( a . toString ( ) . replace ( "." , "" ) ) , b = Number ( b . toString ( ) . replace ( "." , "" ) ) ; return ( a + b ) / e } function accSub ( a , b ) { var c , d , e , f ; try { c = a . toString ( ) . split ( "." ) [ 1 ] . length } catch ( g ) { c = 0 } try { d = b . toString ( ) . split ( "." ) [ 1 ] . length } catch ( g ) { d = 0 } return e = Math . pow ( 10 , Math . max ( c , d ) ) , f = c >= d ? c : d , ( ( a * e - b * e ) / e ) . toFixed ( f ) } function accMul ( a , b ) { var c = 0 , d = a . toString ( ) , e = b . toString ( ) ; try { c += d . split ( "." ) [ 1 ] . length } catch ( f ) { } try { c += e . split ( "." ) [ 1 ] . length } catch ( f ) { } return Number ( d . replace ( "." , "" ) ) * Number ( e . replace ( "." , "" ) ) / Math . pow ( 10 , c ) } function digitLength ( a ) { var b = a . toString ( ) . split ( /[eE]/ ) , c = ( b [ 0 ] . split ( "." ) [ 1 ] || "" ) . length - + ( b [ 1 ] || 0 ) ; return c > 0 ? c : 0 } function float2Fixed ( a ) { if ( a . toString ( ) . indexOf ( "e" ) === - 1 ) return Number ( a . toString ( ) . replace ( "." , "" ) ) ; var b = digitLength ( a ) ; return b > 0 ? a * Math . pow ( 10 , b ) : a } function times ( a , b ) { for ( var c = [ ] , d = 2 ; d < arguments . length ; d ++ ) c [ d - 2 ] = arguments [ d ] ; if ( c . length > 0 ) return times . apply ( void 0 , [ times ( a , b ) , c [ 0 ] ] . concat ( c . slice ( 1 ) ) ) ; var e = float2Fixed ( a ) , f = float2Fixed ( b ) , g = digitLength ( a ) + digitLength ( b ) , h = e * f ; return h / Math . pow ( 10 , g ) } function accDivide ( a , b ) { for ( var c = [ ] , d = 2 ; d < arguments . length ; d ++ ) c [ d - 2 ] = arguments [ d ] ; if ( c . length > 0 ) return accDivide . apply ( void 0 , [ accDivide ( a , b ) , c [ 0 ] ] . concat ( c . slice ( 1 ) ) ) ; var e = float2Fixed ( a ) , f = float2Fixed ( b ) ; return times ( e / f , Math . pow ( 10 , digitLength ( b ) - digitLength ( a ) ) ) } function _classCallCheck ( a , b ) { if ( ! ( a instanceof b ) ) throw new TypeError ( "Cannot call a class as a function" ) } 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 } ) , window . console = window . 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 } ( ) , window . localStorage || ( window . localStorage = { items : { } , setItem : function ( a , b ) { BI . Cache . addCookie ( a , b ) } , getItem : function ( a ) { return BI . Cache . getCookie ( a ) } , removeItem : function ( a ) { BI . Cache . deleteCookie ( a ) } , key : function ( ) { } , clear : function ( ) { this . items = { } } } ) , Object . keys || ( Object . keys = function ( a ) { if ( a !== Object ( a ) ) throw new TypeError ( "Object.keys called on a non-object" ) ; var b , c , d = { _ _ob _ _ : b , $accessors : b , $vbthis : b , $vbsetter : b } , e = [ ] ; for ( c in a ) c in d || Object . prototype . hasOwnProperty . call ( a , c ) && e . push ( c ) ; return e } ) , Array . isArray || ( Array . isArray = function ( a ) { return "[object Array]" === Object . prototype . toString . call ( a ) } ) , "function" != typeof Object . getPrototypeOf && ( Object . getPrototypeOf = "" . _ _proto _ _ === String . prototype ? function ( a ) { return a . _ _proto _ _ } : function ( a ) { return a . constructor . prototype } ) , Date . now || ( Date . now = function ( ) { return ( new Date ) . valueOf ( ) } ) , "undefined" != typeof Set && Set . toString ( ) . match ( /native code/ ) || ( Set = function ( ) { this . set = { } } , Set . prototype . has = function ( a ) { return void 0 !== this . set [ a ] } , Set . prototype . add = function ( a ) { this . set [ a ] = 1 } , Set . prototype . clear = function ( ) { this . set = { } } ) , ! function ( a ) { var b = a . navigator . userAgent . toLowerCase ( ) , c = /msie|applewebkit.+safari/ ; if ( c . test ( b ) ) { var 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"
d = 1 === c . nodeType && ( c . className ? ( " " + c . className + " " ) . replace ( Ca , " " ) : " " ) ) { for ( f = 0 ; e = b [ f ++ ] ; ) d . indexOf ( " " + e + " " ) < 0 && ( d += e + " " ) ; c . className = ia . trim ( d ) } return this } , removeClass : function ( a ) { var b , c , d , e , f , g = 0 , h = this . length , i = 0 === arguments . length || "string" == typeof a && a ; if ( ia . isFunction ( a ) ) return this . each ( function ( b ) { ia ( this ) . removeClass ( a . call ( this , b , this . className ) ) } ) ; if ( i ) for ( b = ( a || "" ) . match ( ka ) || [ ] ; g < h ; g ++ ) if ( c = this [ g ] , d = 1 === c . nodeType && ( c . className ? ( " " + c . className + " " ) . replace ( Ca , " " ) : "" ) ) { for ( f = 0 ; e = b [ f ++ ] ; ) for ( ; d . indexOf ( " " + e + " " ) >= 0 ; ) d = d . replace ( " " + e + " " , " " ) ; c . className = a ? ia . trim ( d ) : "" } return this } , toggleClass : function ( a , b ) { var c = typeof a , d = "boolean" == typeof b ; return ia . isFunction ( a ) ? this . each ( function ( c ) { ia ( this ) . toggleClass ( a . call ( this , c , this . className , b ) , b ) } ) : this . each ( function ( ) { if ( "string" === c ) for ( var e , f = 0 , g = ia ( this ) , h = b , i = a . match ( ka ) || [ ] ; e = i [ f ++ ] ; ) h = d ? h : ! g . hasClass ( e ) , g [ h ? "addClass" : "removeClass" ] ( e ) ; else c !== V && "boolean" !== c || ( this . className && ia . _data ( this , "__className__" , this . className ) , this . className = this . className || a === ! 1 ? "" : ia . _data ( this , "__className__" ) || "" ) } ) } , hasClass : function ( a ) { for ( var b = " " + a + " " , c = 0 , d = this . length ; c < d ; c ++ ) if ( 1 === this [ c ] . nodeType && ( " " + this [ c ] . className + " " ) . replace ( Ca , " " ) . indexOf ( b ) >= 0 ) return ! 0 ; return ! 1 } , val : function ( a ) { var c , d , e , f = this [ 0 ] ; { if ( arguments . length ) return e = ia . isFunction ( a ) , this . each ( function ( c ) { var f , g = ia ( this ) ; 1 === this . nodeType && ( f = e ? a . call ( this , c , g . val ( ) ) : a , null == f ? f = "" : "number" == typeof f ? f += "" : ia . isArray ( f ) && ( f = ia . map ( f , function ( a ) { return null == a ? "" : a + "" } ) ) , d = ia . valHooks [ this . type ] || ia . valHooks [ this . nodeName . toLowerCase ( ) ] , d && "set" in d && d . set ( this , f , "value" ) !== b || ( this . value = f ) ) } ) ; if ( f ) return d = ia . valHooks [ f . type ] || ia . valHooks [ f . nodeName . toLowerCase ( ) ] , d && "get" in d && ( c = d . get ( f , "value" ) ) !== b ? c : ( c = f . value , "string" == typeof c ? c . replace ( Da , "" ) : null == c ? "" : c ) } } } ) , ia . extend ( { valHooks : { option : { get : function ( a ) { var b = a . attributes . value ; return ! b || b . specified ? a . value : a . text } } , select : { get : function ( a ) { for ( var b , c , d = a . options , e = a . selectedIndex , f = "select-one" === a . type || e < 0 , g = f ? null : [ ] , h = f ? e + 1 : d . length , i = e < 0 ? h : f ? e : 0 ; i < h ; i ++ ) if ( c = d [ i ] , ( c . selected || i === e ) && ( ia . support . optDisabled ? ! c . disabled : null === c . getAttribute ( "disabled" ) ) && ( ! c . parentNode . disabled || ! ia . nodeName ( c . parentNode , "optgroup" ) ) ) { if ( b = ia ( c ) . val ( ) , f ) return b ; g . push ( b ) } return g } , set : function ( a , b ) { var c = ia . makeArray ( b ) ; return ia ( a ) . find ( "option" ) . each ( function ( ) { this . selected = ia . inArray ( ia ( this ) . val ( ) , c ) >= 0 } ) , c . length || ( a . selectedIndex = - 1 ) , c } } } , attr : function ( a , c , d ) { var e , f , g , h = a . nodeType ; if ( a && 3 !== h && 8 !== h && 2 !== h ) return typeof a . getAttribute === V ? ia . prop ( a , c , d ) : ( f = 1 !== h || ! ia . isXMLDoc ( a ) , f && ( c = c . toLowerCase ( ) , e = ia . attrHooks [ c ] || ( Ga . test ( c ) ? Ba : Aa ) ) , d === b ? e && f && "get" in e && null !== ( g = e . get ( a , c ) ) ? g : ( typeof a . getAttribute !== V && ( g = a . getAttribute ( c ) ) , null == g ? b : g ) : null !== d ? e && f && "set" in e && ( g = e . set ( a , d , c ) ) !== b ? g : ( a . setAttribute ( c , d + "" ) , d ) : void ia . removeAttr ( a , c ) ) } , removeAttr : function ( a , b ) { var c , d , e = 0 , f = b && b . match ( ka ) ; if ( f && 1 === a . nodeType ) for ( ; c = f [ e ++ ] ; ) d = ia . propFix [ c ] || c , Ga . test ( c ) ? ! Ia && Ha . test ( c ) ? a [ ia . camelCase ( "default-" + c ) ] = a [ d ] = ! 1 : a [ d ] = ! 1 : ia . attr ( a , c , "" ) , a . removeAttribute ( Ia ? c : d ) } , attrHooks : { type : { set : function ( a , b ) { if ( ! ia . support . radioValue && "radio" === b && ia . nodeName ( a , "input" ) ) { var c = a . value ; return a . setAttribute ( "type" , b ) , c && ( a . value = c ) , b } } } } , propFix : { tabindex : "tabIndex" , readonly : "readOnly" , "for" : "htmlFor" , "class" : "className" , maxlength : "maxLength" , cellspacing : "cellSpacing" , cellpadding : "cellPadding" , rowspan : "rowSpan" , colspan : "colSpan" , usemap : "useMap" , frameborder : "frameBorder" , contenteditable : "contentEditable" } , prop : function ( a , c , d ) { var e , f , g , h = a . nodeType ; if ( a && 3 !== h && 8 !== h && 2 !== h ) return g = 1 !== h || ! ia . isXMLDoc ( a ) , g && ( c = ia . propFix [ c ] || c , f = ia . propHooks [ c ] ) , d !== b ? f && "set" in f && ( e = f . set ( a , d , c ) ) !== b ? e : a [ c ] = d : f && "get" in f && null !== ( e = f . get ( a , c ) ) ? e : a [ c ] } , propHooks : { tabIndex : { get : function ( a ) { var c = a . getAttributeNode ( "tabindex" ) ; return c && c . specified ? parseInt ( c . value , 10 ) : Ea . test ( a . nodeName ) || Fa . test ( a . nodeName ) && a . href ? 0 : b } } } } ) , Ba = { get : function ( a , c ) { var d = ia . prop ( a , c ) , e = "boolean" == typeof d && a . getAttribute ( c ) , f = "boolean" == typeof d ? Ja && Ia ? null !=
return g ( a , b ) . length > 0 } } ) , contains : e ( function ( a ) { return function ( b ) { return ( b . textContent || b . innerText || z ( b ) ) . indexOf ( a ) > - 1 } } ) , lang : e ( function ( a ) { return la . test ( a || "" ) || g . error ( "unsupported lang: " + a ) , a = a . replace ( ua , va ) . toLowerCase ( ) , function ( b ) { var c ; do if ( c = H ? b . getAttribute ( "xml:lang" ) || b . getAttribute ( "lang" ) : b . lang ) return c = c . toLowerCase ( ) , c === a || 0 === c . indexOf ( a + "-" ) ; while ( ( b = b . parentNode ) && 1 === b . nodeType ) ; return ! 1 } } ) , target : function ( b ) { var c = a . location && a . location . hash ; return c && c . slice ( 1 ) === b . id } , root : function ( a ) { return a === G } , focus : function ( a ) { return a === F . activeElement && ( ! F . hasFocus || F . hasFocus ( ) ) && ! ! ( a . type || a . href || ~ a . tabIndex ) } , enabled : function ( a ) { return a . disabled === ! 1 } , disabled : function ( a ) { return a . disabled === ! 0 } , checked : function ( a ) { var b = a . nodeName . toLowerCase ( ) ; return "input" === b && ! ! a . checked || "option" === b && ! ! a . selected } , selected : function ( a ) { return a . parentNode && a . parentNode . selectedIndex , a . selected === ! 0 } , empty : function ( a ) { for ( a = a . firstChild ; a ; a = a . nextSibling ) if ( a . nodeName > "@" || 3 === a . nodeType || 4 === a . nodeType ) return ! 1 ; return ! 0 } , parent : function ( a ) { return ! y . pseudos . empty ( a ) } , header : function ( a ) { return ra . test ( a . nodeName ) } , input : function ( a ) { return qa . test ( a . nodeName ) } , button : function ( a ) { var b = a . nodeName . toLowerCase ( ) ; return "input" === b && "button" === a . type || "button" === b } , text : function ( a ) { var b ; return "input" === a . nodeName . toLowerCase ( ) && "text" === a . type && ( null == ( b = a . getAttribute ( "type" ) ) || b . toLowerCase ( ) === a . type ) } , first : k ( function ( ) { return [ 0 ] } ) , last : k ( function ( a , b ) { return [ b - 1 ] } ) , eq : k ( function ( a , b , c ) { return [ c < 0 ? c + b : c ] } ) , even : k ( function ( a , b ) { for ( var c = 0 ; c < b ; c += 2 ) a . push ( c ) ; return a } ) , odd : k ( function ( a , b ) { for ( var c = 1 ; c < b ; c += 2 ) a . push ( c ) ; return a } ) , lt : k ( function ( a , b , c ) { for ( var d = c < 0 ? c + b : c ; -- d >= 0 ; ) a . push ( d ) ; return a } ) , gt : k ( function ( a , b , c ) { for ( var d = c < 0 ? c + b : c ; ++ d < b ; ) a . push ( d ) ; return a } ) } } ; for ( w in { radio : ! 0 , checkbox : ! 0 , file : ! 0 , password : ! 0 , image : ! 0 } ) y . pseudos [ w ] = i ( w ) ; for ( w in { submit : ! 0 , reset : ! 0 } ) y . pseudos [ w ] = j ( w ) ; B = g . compile = function ( a , b ) { var c , d = [ ] , e = [ ] , f = U [ a + " " ] ; if ( ! f ) { for ( b || ( b = l ( a ) ) , c = b . length ; c -- ; ) f = r ( b [ c ] ) , f [ N ] ? d . push ( f ) : e . push ( f ) ; f = U ( a , s ( e , d ) ) } return f } , y . pseudos . nth = y . pseudos . eq , y . filters = v . prototype = y . pseudos , y . setFilters = new v , E ( ) , g . attr = ia . attr , ia . find = g , ia . expr = g . selectors , ia . expr [ ":" ] = ia . expr . pseudos , ia . unique = g . uniqueSort , ia . text = g . getText , ia . isXMLDoc = g . isXML , ia . contains = g . contains } ( a ) ; var Pa = /Until$/ , Qa = /^(?:parents|prev(?:Until|All))/ , Ra = /^.[^:#\[\.,]*$/ , Sa = ia . expr . match . needsContext , Ta = { children : ! 0 , contents : ! 0 , next : ! 0 , prev : ! 0 } ; ia . fn . extend ( { find : function ( a ) { var b , c , d , e = this . length ; if ( "string" != typeof a ) return d = this , this . pushStack ( ia ( a ) . filter ( function ( ) { for ( b = 0 ; b < e ; b ++ ) if ( ia . contains ( d [ b ] , this ) ) return ! 0 } ) ) ; for ( c = [ ] , b = 0 ; b < e ; b ++ ) ia . find ( a , this [ b ] , c ) ; return c = this . pushStack ( e > 1 ? ia . unique ( c ) : c ) , c . selector = ( this . selector ? this . selector + " " : "" ) + a , c } , has : function ( a ) { var b , c = ia ( a , this ) , d = c . length ; return this . filter ( function ( ) { for ( b = 0 ; b < d ; b ++ ) if ( ia . contains ( this , c [ b ] ) ) return ! 0 } ) } , not : function ( a ) { return this . pushStack ( l ( this , a , ! 1 ) ) } , filter : function ( a ) { return this . pushStack ( l ( this , a , ! 0 ) ) } , is : function ( a ) { return ! ! a && ( "string" == typeof a ? Sa . test ( a ) ? ia ( a , this . context ) . index ( this [ 0 ] ) >= 0 : ia . filter ( a , this ) . length > 0 : this . filter ( a ) . length > 0 ) } , closest : function ( a , b ) { for ( var c , d = 0 , e = this . length , f = [ ] , g = Sa . test ( a ) || "string" != typeof a ? ia ( a , b || this . context ) : 0 ; d < e ; d ++ ) for ( c = this [ d ] ; c && c . ownerDocument && c !== b && 11 !== c . nodeType ; ) { if ( g ? g . index ( c ) > - 1 : ia . find . matchesSelector ( c , a ) ) { f . push ( c ) ; break } c = c . parentNode } return this . pushStack ( f . length > 1 ? ia . unique ( f ) : f ) } , index : function ( a ) { return a ? "string" == typeof a ? ia . inArray ( this [ 0 ] , ia ( a ) ) : ia . inArray ( a . jquery ? a [ 0 ] : a , this ) : this [ 0 ] && this [ 0 ] . parentNode ? this . first ( ) . prevAll ( ) . length : - 1 } , add : function ( a , b ) { var c = "string" == typeof a ? ia ( a , b ) : ia . makeArray ( a && a . nodeType ? [ a ] : a ) , d = ia . merge ( this . get ( ) , c ) ; return this . pushStack ( ia . unique ( d ) ) } , addBack : function ( a ) { return this . add ( null == a ? this . prevObject : this . prevObject . filter ( a ) ) } } ) , ia . fn . andSelf = ia . fn . addBack , ia . each ( { parent : function ( a ) { var b = a . parentNode ; return b && 11 !== b . nodeType ? b : null } , parents : function ( a ) { return ia . dir ( a , "parentNode" ) } , parentsUntil : function ( a , b , c ) { retu
b = this . offset ( ) , ia . nodeName ( a [ 0 ] , "html" ) || ( c = a . offset ( ) ) , c . top += ia . css ( a [ 0 ] , "borderTopWidth" , ! 0 ) , c . left += ia . css ( a [ 0 ] , "borderLeftWidth" , ! 0 ) ) , { top : b . top - c . top - ia . css ( d , "marginTop" , ! 0 ) , left : b . left - c . left - ia . css ( d , "marginLeft" , ! 0 ) } } } , offsetParent : function ( ) { return this . map ( function ( ) { for ( var a = this . offsetParent || W . documentElement ; a && ! ia . nodeName ( a , "html" ) && "static" === ia . css ( a , "position" ) ; ) a = a . offsetParent ; return a || W . documentElement } ) } } ) , ia . each ( { scrollLeft : "pageXOffset" , scrollTop : "pageYOffset" } , function ( a , c ) { var d = /Y/ . test ( c ) ; ia . fn [ a ] = function ( e ) { return ia . access ( this , function ( a , e , f ) { var g = S ( a ) ; return f === b ? g ? c in g ? g [ c ] : g . document . documentElement [ e ] : a [ e ] : void ( g ? g . scrollTo ( d ? ia ( g ) . scrollLeft ( ) : f , d ? f : ia ( g ) . scrollTop ( ) ) : a [ e ] = f ) } , a , e , arguments . length , null ) } } ) , ia . each ( { Height : "height" , Width : "width" } , function ( a , c ) { ia . each ( { padding : "inner" + a , content : c , "" : "outer" + a } , function ( d , e ) { ia . fn [ e ] = function ( e , f ) { var g = arguments . length && ( d || "boolean" != typeof e ) , h = d || ( e === ! 0 || f === ! 0 ? "margin" : "border" ) ; return ia . access ( this , function ( c , d , e ) { var f ; return ia . isWindow ( c ) ? c . document . documentElement [ "client" + a ] : 9 === c . nodeType ? ( f = c . documentElement , Math . max ( c . body [ "scroll" + a ] , f [ "scroll" + a ] , c . body [ "offset" + a ] , f [ "offset" + a ] , f [ "client" + a ] ) ) : e === b ? ia . css ( c , d , h ) : ia . style ( c , d , e , h ) } , c , g ? e : b , g , null ) } } ) } ) , a . jQuery = a . $ = ia , "function" == typeof define && define . amd && define . amd . jQuery && define ( "jquery" , [ ] , function ( ) { return ia } ) } ( window ) , 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 , function ( a , c , e ) { if ( b ( a , c , e ) ) return d = c , ! 1 } ) , d } function n ( a , b , c , d ) { for ( var e = a . length , f = c + ( d ? 1 : - 1 ) ; d ? f -- : ++ f < e ; ) if ( b ( a [ f ] , f , a ) ) return f ; return - 1 } function o ( a , b , c ) { return b === b ? J ( a , b , c ) : n ( a , p , c ) } function p ( a ) { return a !== a } function q ( a ) { return function ( b ) { return null == b ? Ie : b [ a ] } } function r ( a ) { return function ( b ) { return null == a ? Ie : a [ b ] } } function s ( a , b , c , d , e ) { return e ( a , function ( a , e , f ) { c = d ? ( d = ! 1 , a ) : b ( c , a , e , f ) } ) , c } function t ( a , b ) { var c = a . length ; for ( a . sort ( b ) ; c -- ; ) a [ c ] = a [ c ] . value ; return a } function u ( a , b ) { for ( var c = - 1 , d = Array ( a ) ; ++ c < a ; ) d [ c ] = b ( c ) ; return d } function v ( a ) { return function ( b ) { return a ( b ) } } function w ( a , b ) { return h ( b , function ( b ) { return a [ b ] } ) } function x ( a , b ) { return a . has ( b ) } function y ( a , b ) { for ( var c = - 1 , d = a . length ; ++ c < d && o ( b , a [ c ] , 0 ) > - 1 ; ) ; return c } function z ( a , b ) { for ( var c = a . length ; c -- && o ( b , a [ c ] , 0 ) > - 1 ; ) ; return c } function A ( a , b ) { for ( var c = a . length , d = 0 ; c -- ; ) a [ c ] === b && ++ d ; return d } function B ( a , b ) { return null == a ? Ie : a [ b ] } function C ( a ) { return Cg . test ( a ) } function D ( a ) { for ( var b , c = [ ] ; ! ( b = a . next ( ) ) . done ; ) c . push ( b . value ) ; return c } function E ( a ) { var b = - 1 , c = Array ( a . size ) ; return a . forEach ( function ( a , d ) { c [ ++ b ] = [ d , a ] } ) , c } function F ( a , b ) { return function ( c ) { return a ( b ( c ) ) } } function G ( a , b ) { for ( var c = - 1 , d = a . length , e = 0 , f = [ ] ; ++ c < d ; ) { var g = a [ c ] ; g !== b && g !== Oe || ( a [ c ] = Oe , f [ e ++ ] = c ) } return f } function H ( a , b ) { return "__proto__" == b ? Ie : a [ b ] } function I ( a ) { var b = - 1 , c = Array ( a . size ) ; return a . forEach ( function ( a ) { c [ ++ b ] = a } ) , c } function J ( a , b , c ) { for ( var d = c - 1 , e = a . length ; ++ d < e ; ) if ( a [ d ] === b ) return d ; return - 1 } function K ( a ) { return C ( a ) ? M ( a ) : Vg (
if ( null === b ) return ! 0 ; var c = ah . call ( b , "constructor" ) && b . constructor ; return "function" == typeof c && c instanceof c && _g . call ( c ) == eh } function Yd ( a ) { return "string" == typeof a || ! si ( a ) && Td ( a ) && Qa ( a ) == Ef } function Zd ( a ) { return "symbol" == typeof a || Td ( a ) && Qa ( a ) == Ff } function $d ( a ) { return a === Ie } function _d ( a ) { if ( ! a ) return [ ] ; if ( Kd ( a ) ) return Yd ( a ) ? L ( a ) : Qb ( a ) ; if ( qh && a [ qh ] ) return D ( a [ qh ] ( ) ) ; var b = bi ( a ) , c = b == wf ? E : b == Df ? I : qe ; return c ( a ) } function ae ( a ) { if ( ! a ) return 0 === a ? a : 0 ; if ( a = ce ( a ) , a === hf || a === - hf ) { var b = a < 0 ? - 1 : 1 ; return b * kf } return a === a ? a : 0 } function be ( a ) { var b = ae ( a ) , c = b % 1 ; return b === b ? c ? b - c : b : 0 } function ce ( a ) { if ( "number" == typeof a ) return a ; if ( Zd ( a ) ) return lf ; if ( Sd ( a ) ) { var b = "function" == typeof a . valueOf ? a . valueOf ( ) : a ; a = Sd ( b ) ? b + "" : b } if ( "string" != typeof a ) return 0 === a ? a : + a ; a = a . replace ( Zf , "" ) ; var c = eg . test ( a ) ; return c || gg . test ( a ) ? Hg ( a . slice ( 2 ) , c ? 2 : 8 ) : dg . test ( a ) ? lf : + a } function de ( a ) { return Rb ( a , me ( a ) ) } function ee ( a ) { return null == a ? "" : yb ( a ) } function fe ( a , b ) { var c = Th ( a ) ; return null == b ? c : za ( c , b ) } function ge ( a , b ) { return m ( a , fb ( b , 3 ) , La ) } function he ( a , b ) { return m ( a , fb ( b , 3 ) , Ma ) } function ie ( a , b , c ) { var d = null == a ? Ie : Oa ( a , b ) ; return d === Ie ? c : d } function je ( a , b ) { return null != a && wc ( a , b , Sa ) } function ke ( a , b ) { return null != a && wc ( a , b , Ta ) } function le ( a ) { return Kd ( a ) ? ua ( a ) : gb ( a ) } function me ( a ) { return Kd ( a ) ? ua ( a , ! 0 ) : hb ( a ) } function ne ( a , b ) { return oe ( a , Dd ( fb ( b ) ) ) } function oe ( a , b ) { if ( null == a ) return { } ; var c = h ( nc ( a ) , function ( a ) { return [ a ] } ) ; return b = fb ( b ) , qb ( a , c , function ( a , c ) { return b ( a , c [ 0 ] ) } ) } function pe ( a , b , c ) { b = Eb ( b , a ) ; var d = - 1 , e = b . length ; for ( e || ( e = 1 , a = Ie ) ; ++ d < e ; ) { var f = null == a ? Ie : a [ Uc ( b [ d ] ) ] ; f === Ie && ( d = e , f = c ) , a = Qd ( f ) ? f . call ( a ) : f } return a } function qe ( a ) { return null == a ? [ ] : w ( a , le ( a ) ) } function re ( a , b , c ) { return c === Ie && ( c = b , b = Ie ) , c !== Ie && ( c = ce ( c ) , c = c === c ? c : 0 ) , b !== Ie && ( b = ce ( b ) , b = b === b ? b : 0 ) , Da ( ce ( a ) , b , c ) } function se ( a , b , c ) { if ( c && "boolean" != typeof c && Dc ( a , b , c ) && ( b = c = Ie ) , c === Ie && ( "boolean" == typeof b ? ( c = b , b = Ie ) : "boolean" == typeof a && ( c = a , a = Ie ) ) , a === Ie && b === Ie ? ( a = 0 , b = 1 ) : ( a = ae ( a ) , b === Ie ? ( b = a , a = 0 ) : b = ae ( b ) ) , a > b ) { var d = a ; a = b , b = d } if ( c || a % 1 || b % 1 ) { var e = Ch ( ) ; return Ah ( a + e * ( b - a + Gg ( "1e-" + ( ( e + "" ) . length - 1 ) ) ) , b ) } return sb ( a , b ) } function te ( a ) { return a = ee ( a ) , a && Uf . test ( a ) ? a . replace ( Tf , Wg ) : a } function ue ( a , b , c ) { if ( a = ee ( a ) , a && ( c || b === Ie ) ) return a . replace ( Zf , "" ) ; if ( ! a || ! ( b = yb ( b ) ) ) return a ; var d = L ( a ) , e = L ( b ) , f = y ( d , e ) , g = z ( d , e ) + 1 ; return Fb ( d , f , g ) . join ( "" ) } function ve ( a ) { return function ( ) { return a } } function we ( a ) { return a } function xe ( a ) { return fb ( "function" == typeof a ? a : Ea ( a , Pe ) ) } function ye ( a ) { return kb ( Ea ( a , Pe ) ) } function ze ( a , b , d ) { var e = le ( b ) , f = Na ( b , e ) ; null != d || Sd ( b ) && ( f . length || ! e . length ) || ( d = b , b = a , a = this , f = Na ( b , le ( b ) ) ) ; var g = ! ( Sd ( d ) && "chain" in d && ! d . chain ) , h = Qd ( a ) ; return c ( f , function ( c ) { var d = b [ c ] ; a [ c ] = d , h && ( a . prototype [ c ] = function ( ) { var b = this . _ _chain _ _ ; if ( g || b ) { var c = a ( this . _ _wrapped _ _ ) , e = c . _ _actions _ _ = Qb ( this . _ _actions _ _ ) ; return e . push ( { func : d , args : arguments , thisArg : a } ) , c . _ _chain _ _ = b , c } return d . apply ( a , i ( [ this . value ( ) ] , arguments ) ) } ) } ) , a } function Ae ( ) { return Kg . _ === this && ( Kg . _ = fh ) , this } function Be ( ) { } function Ce ( a ) { return Ec ( a ) ? q ( Uc ( a ) ) : rb ( a ) } function De ( ) { return [ ] } function Ee ( ) { return ! 1 } function Fe ( a ) { var b = ++ bh ; return ee ( a ) + b } function Ge ( a ) { return a && a . length ? Ia ( a , we , Ra ) : Ie } function He ( a ) { return a && a . length ? Ia ( a , we , ib ) : Ie } var Ie , Je = "4.17.5" , Ke = 200 , Le = "Expected a function" , Me = "__lodash_hash_undefined__" , Ne = 500 , Oe = "__lodash_placeholder__" , Pe = 1 , Qe = 2 , Re = 4 , Se = 1 , Te = 2 , Ue = 1 , Ve = 2 , We = 4 , Xe = 8 , Ye = 16 , Ze = 32 , $e = 64 , _e = 128 , af = 256 , bf = 512 , cf = 800 , df = 16 , ef = 1 , ff = 2 , gf = 3 , hf = 1 / 0 , jf = 9007199254740991 , kf = 1.7976931348623157 e308 , lf = NaN , mf = 4294967295 , nf = [ [ "ary" , _e ] , [ "bind" , Ue ] , [ "bindKey" , Ve ] , [ "curry" , Xe ] , [ "curryRight" , Ye ] , [ "flip" , bf ] , [ "partial" , Ze ] , [ "partialRight" , $e ] , [ "rearg" , af ] ] , of = "[object Arguments]" , pf = "[object Array]" , qf = "[object AsyncFunction]" , rf = "[object Boolean]" , sf = "[object Date]" , tf = "[object Error]" , uf = "[object Function]" , vf = "[object GeneratorFunction]" , wf = "[object Map]" , xf = "[object Number]" , yf = "[object Null]" , zf = "[object Object]" , Af = "[object Promise]" , Bf = "[object Proxy]" , Cf = "[object RegExp]" , Df = "[object Set]" , Ef = "[object String]" , Ff = "[object Symbol]" , Gf = "[object Undefined]" , Hf = "[object WeakMap]" , If = " [ object Ar
var a = 0 , b = navigator . userAgent . toLowerCase ( ) , c = b . match ( /(?:msie\s([\w.]+))/ ) , d = b . match ( /(?:trident.*rv:([\w.]+))/ ) ; return a = c && d && c [ 1 ] && d [ 1 ] ? Math . max ( 1 * c [ 1 ] , 1 * d [ 1 ] ) : c && c [ 1 ] ? 1 * c [ 1 ] : d && d [ 1 ] ? 1 * d [ 1 ] : 0 , this . _ _IEVersion = a } , isIE9Below : function ( ) { return ! ! BI . isIE ( ) && this . getIEVersion ( ) < 9 } , isEdge : function ( ) { return /edge/i . test ( navigator . userAgent . toLowerCase ( ) ) } , isChrome : function ( ) { return /chrome/i . test ( navigator . userAgent . toLowerCase ( ) ) } , isFireFox : function ( ) { return /firefox/i . test ( navigator . userAgent . toLowerCase ( ) ) } , isOpera : function ( ) { return /opera/i . test ( navigator . userAgent . toLowerCase ( ) ) } , isSafari : function ( ) { return /safari/i . test ( navigator . userAgent . toLowerCase ( ) ) } , isKhtml : function ( ) { return /Konqueror|Safari|KHTML/i . test ( navigator . userAgent ) } , isMac : function ( ) { return /macintosh|mac os x/i . test ( navigator . userAgent ) } , isWindows : function ( ) { return /windows|win32/i . test ( navigator . userAgent ) } , isSupportCss3 : function ( a ) { var b , c , d = [ "webkit" , "Moz" , "ms" , "o" ] , e = [ ] , f = document . documentElement . style , g = function ( a ) { return a . replace ( /-(\w)/g , function ( a , b ) { return b . toUpperCase ( ) } ) } ; for ( b in d ) e . push ( g ( d [ b ] + "-" + a ) ) ; for ( e . push ( g ( a ) ) , b = 0 , c = e . length ; b < c ; b ++ ) if ( e [ b ] in f ) return ! 0 ; return ! 1 } } ) , _ . extend ( BI , { ajax : function ( a ) { a || ( a = { } ) ; var b = a . async ; a . data = BI . cjkEncodeDO ( a . data || { } ) , $ . ajax ( { url : a . url , type : "POST" , data : a . data , async : b , error : a . error , complete : function ( b , c ) { BI . isFunction ( a . complete ) && a . complete ( BI . jsonDecode ( b . responseText ) , c ) } } ) } } ) } ( ) , BI . OB = function ( a ) { var b = this . props ; BI . isFunction ( this . props ) && ( b = this . props ( a ) ) , this . options = ( window . $ || window . _ ) . extend ( this . _defaultConfig ( a ) , b , a ) , this . _init ( ) , this . _initRef ( ) } , _ . extend ( BI . OB . prototype , { props : { } , init : null , destroyed : null , _defaultConfig : function ( a ) { return { } } , _init : function ( ) { this . _initListeners ( ) , this . init && this . init ( ) } , _initListeners : function ( ) { var a = this ; null != this . options . listeners && ( _ . each ( this . options . listeners , function ( b ) { ( b . target ? b . target : a ) [ b . once ? "once" : "on" ] ( b . eventName , _ . bind ( b . action , a ) ) } ) , delete this . options . listeners ) } , _initRef : function ( ) { this . options . ref && this . options . ref . call ( this , this ) } , _purgeRef : function ( ) { this . options . ref && this . options . ref . call ( null ) } , _getEvents : function ( ) { return _ . isArray ( this . events ) || ( this . events = [ ] ) , this . events } , on : function ( a , b ) { a = a . toLowerCase ( ) ; var c = this . _getEvents ( ) [ a ] ; _ . isArray ( c ) || ( c = [ ] , this . _getEvents ( ) [ a ] = c ) , c . push ( b ) } , once : function ( a , b ) { var c = function ( ) { b . apply ( this , arguments ) , this . 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 ( ) } } ) , BI . Widget = BI . inherit ( BI . OB , { _defaultConfig : function ( ) { return BI . extend ( BI . Widget . superclass . _defaultConfig . apply ( this ) , { root : ! 1 , tagName : "div" , attributes : null , data : null , tag : null , disabled : ! 1 , invisible : ! 1 , invalid : ! 1 , baseCls : "" , extraCls : "" , cls : "" } ) } , beforeInit : null , beforeCreate : null , created : null , render : null , beforeMount : null , mounted : null , shouldUpdate : null , update : function ( ) { } , beforeDestroy : null , destroyed : null , _init : function ( ) { BI . Widget . superclass . _init . apply ( this , arguments ) , this . _initRoot ( ) , this . _initElementWidth ( ) , this . _initElementHeight ( ) , this . _initVisual ( ) , this . _initState ( ) , this . 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 . _par
19969 : "DZ" , 19975 : "WM" , 19988 : "QJ" , 20048 : "YL" , 20056 : "SC" , 20060 : "NM" , 20094 : "QG" , 20127 : "QJ" , 20167 : "QC" , 20193 : "YG" , 20250 : "KH" , 20256 : "ZC" , 20282 : "SC" , 20285 : "QJG" , 20291 : "TD" , 20314 : "YD" , 20315 : "BF" , 20340 : "NE" , 20375 : "TD" , 20389 : "YJ" , 20391 : "CZ" , 20415 : "PB" , 20446 : "YS" , 20447 : "SQ" , 20504 : "TC" , 20608 : "KG" , 20854 : "QJ" , 20857 : "ZC" , 20911 : "PF" , 20985 : "AW" , 21032 : "PB" , 21048 : "XQ" , 21049 : "SC" , 21089 : "YS" , 21119 : "JC" , 21242 : "SB" , 21273 : "SC" , 21305 : "YP" , 21306 : "QO" , 21330 : "ZC" , 21333 : "SDC" , 21345 : "QK" , 21378 : "CA" , 21397 : "SC" , 21414 : "XS" , 21442 : "SC" , 21477 : "JG" , 21480 : "TD" , 21484 : "ZS" , 21494 : "YX" , 21505 : "YX" , 21512 : "HG" , 21523 : "XH" , 21537 : "PB" , 21542 : "PF" , 21549 : "KH" , 21571 : "E" , 21574 : "DA" , 21588 : "TD" , 21589 : "O" , 21618 : "ZC" , 21621 : "KHA" , 21632 : "ZJ" , 21654 : "KG" , 21679 : "LKG" , 21683 : "KH" , 21710 : "A" , 21719 : "YH" , 21734 : "WOE" , 21769 : "A" , 21780 : "WN" , 21804 : "XH" , 21834 : "A" , 21899 : "ZD" , 21903 : "RN" , 21908 : "WO" , 21939 : "ZC" , 21956 : "SA" , 21964 : "YA" , 21970 : "TD" , 22003 : "A" , 22031 : "JG" , 22040 : "XS" , 22060 : "ZC" , 22066 : "ZC" , 22079 : "MH" , 22129 : "XJ" , 22179 : "XA" , 22237 : "NJ" , 22244 : "TD" , 22280 : "JQ" , 22300 : "YH" , 22313 : "XW" , 22331 : "YQ" , 22343 : "YJ" , 22351 : "PH" , 22395 : "DC" , 22412 : "TD" , 22484 : "PB" , 22500 : "PB" , 22534 : "ZD" , 22549 : "DH" , 22561 : "PB" , 22612 : "TD" , 22771 : "KQ" , 22831 : "HB" , 22841 : "JG" , 22855 : "QJ" , 22865 : "XQ" , 23013 : "ML" , 23081 : "WM" , 23487 : "SX" , 23558 : "QJ" , 23561 : "YW" , 23586 : "YW" , 23614 : "YW" , 23615 : "SN" , 23631 : "PB" , 23646 : "ZS" , 23663 : "ZT" , 23673 : "YG" , 23762 : "TD" , 23769 : "ZS" , 23780 : "QJ" , 23884 : "QK" , 24055 : "XH" , 24113 : "DC" , 24162 : "ZC" , 24191 : "GA" , 24273 : "QJ" , 24324 : "NL" , 24377 : "TD" , 24378 : "QJ" , 24439 : "PF" , 24554 : "ZS" , 24683 : "TD" , 24694 : "WE" , 24733 : "LK" , 24925 : "TN" , 25094 : "ZG" , 25100 : "XQ" , 25103 : "XH" , 25153 : "PB" , 25170 : "PB" , 25179 : "KG" , 25203 : "PB" , 25240 : "ZS" , 25282 : "FB" , 25303 : "NA" , 25324 : "KG" , 25341 : "ZY" , 25373 : "WZ" , 25375 : "XJ" , 25384 : "A" , 25457 : "A" , 25528 : "SD" , 25530 : "SC" , 25552 : "TD" , 25774 : "ZC" , 25874 : "ZC" , 26044 : "YW" , 26080 : "WM" , 26292 : "PB" , 26333 : "PB" , 26355 : "ZY" , 26366 : "CZ" , 26397 : "ZC" , 26399 : "QJ" , 26415 : "ZS" , 26451 : "SB" , 26526 : "ZC" , 26552 : "JG" , 26561 : "TD" , 26588 : "JG" , 26597 : "CZ" , 26629 : "ZS" , 26638 : "YL" , 26646 : "XQ" , 26653 : "KG" , 26657 : "XJ" , 26727 : "HG" , 26894 : "ZC" , 26937 : "ZS" , 26946 : "ZC" , 26999 : "KJ" , 27099 : "KJ" , 27449 : "YQ" , 27481 : "XS" , 27542 : "ZS" , 27663 : "ZS" , 27748 : "TS" , 27784 : "SC" , 27788 : "ZD" , 27795 : "TD" , 27812 : "O" , 27850 : "PB" , 27852 : "MB" , 27895 : "SL" , 27898 : "PL" , 27973 : "QJ" , 27981 : "KH" , 27986 : "HX" , 27994 : "XJ" , 28044 : "YC" , 28065 : "WG" , 28177 : "SM" , 28267 : "QJ" , 28291 : "KH" , 28337 : "ZQ" , 28463 : "TL" , 28548 : "DC" , 28601 : "TD" , 28689 : "PB" , 28805 : "JG" , 28820 : "QG" , 28846 : "PB" , 28952 : "TD" , 28975 : "ZC" , 29100 : "A" , 29325 : "QJ" , 29575 : "SL" , 29602 : "FB" , 30010 : "TD" , 30044 : "CX" , 30058 : "PF" , 30091 : "YSP" , 30111 : "YN" , 30229 : "XJ" , 30427 : "SC" , 30465 : "SX" , 30631 : "YQ" , 30655 : "QJ" , 30684 : "QJG" , 30707 : "SD" , 30729 : "XH" , 30796 : "LG" , 30917 : "PB" , 31074 : "NM" , 31085 : "JZ" , 31109 : "SC" , 31181 : "ZC" , 31192 : "MLB" , 31293 : "JQ" , 31400 : "YX" , 31584 : "YJ" , 31896 : "ZN" , 31909 : "ZY" , 31995 : "XJ" , 32321 : "PF" , 32327 : "ZY" , 32418 : "HG" , 32420 : "XQ" , 32421 : "HG" , 32438 : "LG" , 32473 : "GJ" , 32488 : "TD" , 32521 : "QJ" , 32527 : "PB" , 32562 : "ZSQ" , 32564 : "JZ" , 32735 : "ZD" , 32793 : "PB" , 33071 : "PF" , 33098 : "XL" , 33100 : "YA" , 33152 : "PB" , 33261 : "CX" , 33324 : "BP" , 33333 : "TD" , 33406 : "YA" , 33426 : "WM" , 33432 : "PB" , 33445 : "JG" , 33486 : "ZN" , 33493 : "TS" , 33507 : "QJ" , 33540 : "QJ" , 33544 : "ZC" , 33564 : "XQ" , 33617 : "YT" , 33632 : "QJ" , 33636 : "XH" , 33637 : "YX" , 33694 : "WG" , 33705 : "PF" , 33728 : "YW" , 33882 : "SR" , 34067 : "WM" , 34074 : "YW" , 34121 : "QJ" , 34255 : "ZC" , 34259 : "XL" , 34425 : "JH" , 34430 : "XH" , 34485 : "KH" , 34503 : "YS" , 34532 : "HG" , 34552 : "XS" , 34558 : "YE" , 34593 : "ZL" , 34660 : "YQ" , 34892 : "XH" , 34928 : "SC" , 34999 : "QJ" , 35048 : "PB" , 35059 : "SC" , 35098 : "ZC" , 35203 : "TQ" , 35265 : "JX" , 35299 : "JX" , 35782 : "SZ" , 35828 : "YS" , 35830 : "E" , 35843 : "TD" , 35895 : "YG" , 35977 : "MH" , 36158 : "JG" , 36228 : "QJ" , 36426 : "XQ" , 36466 : "DC" , 36710 : "JC" , 36711 : "ZYG" , 36767 : "PB" , 36866 : "SK" , 36951 : "YW" , 37034 : "YX" , 37063 : "XH" , 37218 : "ZC" , 37325 : "ZC" , 38063 : "PB" , 38079 : "TD" , 38085 : "QY" , 38107 : "DC" , 38116 : "TD" , 38123 : "YD" , 38224 : "HG" , 38241 : "XTC" , 38271 : "ZC" , 38415 : "YE" , 38426 : "KH" , 38461 : "YD" , 38463 : "AE" , 38466 : "PB" , 38477 : "XJ" , 38518 : "YT" , 38551 : "WK" , 38585 : "ZC" , 38704 : "XS" , 38739 : "LJ" , 38761 : "GJ" , 38808 : "SQ" , 39048 : "JG" , 39049 : "XJ" , 39052 : "HG" , 39076 : "CZ" , 39271 : "XT" , 39534 : "TD" , 39552 : "TD" , 39584 : "PB" , 39647 : "SB" , 39730 : "LG" , 39748 : "TPB" , 40109 : "ZQ" , 40479 : "ND" , 40516 : "HG" , 40536 : "HG" , 40583 : "QJ" , 40765 : "YQ" , 40784 : "QJ" , 40840 : "YK" , 40863 : "QJG" } , c = function (
} , clear : function ( ) { this . parent = null , this . left = null , this . right = null , this . children = [ ] } } , BI . extend ( BI . Tree , { transformToArrayFormat : function ( a , b ) { if ( ! a ) return [ ] ; var c = [ ] ; if ( BI . isArray ( a ) ) for ( var d = 0 , e = a . length ; d < e ; d ++ ) { var f = BI . clone ( a [ d ] ) ; f . pId = null == f . pId ? b : f . pId , delete f . children , c . push ( f ) , a [ d ] . children && ( c = c . concat ( BI . Tree . transformToArrayFormat ( a [ d ] . children , f . id ) ) ) } else { var g = BI . clone ( a ) ; g . pId = null == g . pId ? b : g . pId , delete g . children , c . push ( g ) , a . children && ( c = c . concat ( BI . Tree . transformToArrayFormat ( a . children , g . id ) ) ) } return c } , arrayFormat : function ( a , b ) { if ( ! a ) return [ ] ; var c = [ ] ; if ( BI . isArray ( a ) ) for ( var d = 0 , e = a . length ; d < e ; d ++ ) { var f = a [ d ] ; f . pId = null == f . pId ? b : f . pId , c . push ( f ) , a [ d ] . children && ( c = c . concat ( BI . Tree . arrayFormat ( a [ d ] . children , f . id ) ) ) } else { var g = a ; g . pId = null == g . pId ? b : g . pId , c . push ( g ) , a . children && ( c = c . concat ( BI . Tree . arrayFormat ( a . children , g . id ) ) ) } return c } , transformToTreeFormat : function ( a ) { var b , c ; if ( ! a ) return [ ] ; if ( BI . isArray ( a ) ) { var d = [ ] , e = [ ] ; for ( b = 0 , c = a . length ; b < c ; b ++ ) { if ( BI . isNull ( a [ b ] . id ) ) return a ; e [ a [ b ] . id ] = BI . clone ( a [ b ] ) } for ( b = 0 , c = a . length ; b < c ; b ++ ) e [ a [ b ] . pId ] && a [ b ] . id !== a [ b ] . pId ? ( e [ a [ b ] . pId ] . children || ( e [ a [ b ] . pId ] . children = [ ] ) , e [ a [ b ] . pId ] . children . push ( e [ a [ b ] . id ] ) ) : d . push ( e [ a [ b ] . id ] ) , delete e [ a [ b ] . id ] . pId ; return d } return [ a ] } , treeFormat : function ( a ) { var b , c ; if ( ! a ) return [ ] ; if ( BI . isArray ( a ) ) { var d = [ ] , e = [ ] ; for ( b = 0 , c = a . length ; b < c ; b ++ ) { if ( BI . isNull ( a [ b ] . id ) ) return a ; e [ a [ b ] . id ] = a [ b ] } for ( b = 0 , c = a . length ; b < c ; b ++ ) e [ a [ b ] . pId ] && a [ b ] . id !== a [ b ] . pId ? ( e [ a [ b ] . pId ] . children || ( e [ a [ b ] . pId ] . children = [ ] ) , e [ a [ b ] . pId ] . children . push ( e [ a [ b ] . id ] ) ) : d . push ( e [ a [ b ] . id ] ) ; return d } return [ a ] } , traversal : function ( a , b ) { if ( ! BI . isNull ( a ) ) { var c = this ; BI . any ( a , function ( a , d ) { return b ( a , d ) === ! 1 || void c . traversal ( d . children , b ) } ) } } } ) } ( ) , BI . Vector = function ( a , b ) { this . x = a , this . y = b } , BI . Vector . prototype = { constructor : BI . Vector , cross : function ( a ) { return this . x * a . y - this . y * a . x } , length : function ( a ) { return Math . sqrt ( this . x * a . x + this . y * a . y ) } } , BI . Region = function ( a , b , c , d ) { this . x = a , this . y = b , this . w = c , this . h = d } , BI . Region . prototype = { constructor : BI . Region , isIntersects : function ( a ) { if ( this . isPointInside ( a . x , a . y ) || this . isPointInside ( a . x + a . w , a . y ) || this . isPointInside ( a . x , a . y + a . h ) || this . isPointInside ( a . x + a . w , a . y + a . h ) ) return ! 0 ; if ( a . isPointInside ( this . x , this . y ) || a . isPointInside ( this . x + this . w , this . y ) || a . isPointInside ( this . x , this . y + this . h ) || a . isPointInside ( this . x + this . w , this . y + this . h ) ) return ! 0 ; if ( null != a . x && null != a . y ) { var b = new BI . Vector ( this . w , this . h ) , c = new BI . Vector ( a . x - this . x , a . y - this . y ) , d = new BI . Vector ( c . x + a . w , c . y + a . h ) ; if ( b . cross ( c ) * b . cross ( d ) < 0 ) return ! 0 } return ! 1 } , isPointInside : function ( a , b ) { return null != this . x && null != this . y && ( a >= this . x && a <= this . x + this . w && b >= this . y && b <= this . y + this . h ) } , getPosition : function ( ) { var a = [ ] ; return a . push ( this . x + this . w / 2 ) , a . push ( this . y + this . h / 2 ) , a } } , BI . BehaviorFactory = { createBehavior : function ( a , b ) { var c ; switch ( a ) { case "highlight" : c = BI . HighlightBehavior ; break ; case "redmark" : c = BI . RedMarkBehavior } return new c ( b ) } } , BI . Behavior = BI . inherit ( BI . OB , { _defaultConfig : function ( ) { return BI . extend ( BI . Behavior . superclass . _defaultConfig . apply ( this , arguments ) , { rule : function ( ) { return ! 0 } } ) } , _init : function ( ) { BI . Behavior . superclass . _init . apply ( this , arguments ) } , doBehavior : function ( ) { } } ) , BI . Layout = BI . inherit ( BI . Widget , { props : function ( ) { return { scrollable : null , scrollx : ! 1 , scrolly : ! 1 , items : [ ] } } , render : function ( ) { this . _init4Margin ( ) , this . _init4Scroll ( ) } , _init4Margin : function ( ) { this . options . top && this . element . css ( "top" , this . options . top ) , this . options . left && this . element . css ( "left" , this . options . left ) , this . options . bottom && this . element . css ( "bottom" , this . options . bottom ) , this . options . right && this . element . css ( "right" , this . options . right ) } , _init4Scroll : function ( ) { switch ( this . options . scrollable ) { case ! 0 : this . element . css ( "overflow" , "auto" ) ; break ; case ! 1 : this . element . css ( "overflow" , "hidden" ) } this . options . scrollx && this . element . css ( { "overflow-x" : "auto" , "overflow-y" : "hidden" } ) , this . options . scrolly && this . element . css ( { "overflow-x" : "hidden" , "overflow-y" : "auto" } ) } , _mountChildren : function ( ) { var a = this , b = document . createDocumentFragment ( ) , c = ! 1 ; BI . each ( this . _children , function ( d , e ) { e . element !== a . element && ( b . appendChild ( e . el
} , create : function ( a , b , c ) { if ( this . _check ( a ) ) return this ; var d = BI . createWidget ( b || { } , { type : "bi.popover" } , c ) ; return this . add ( a , d , b , c ) , this } , add : function ( a , b , c , d ) { var e = this ; return c || ( c = { } ) , this . _check ( a ) ? this : ( this . floatContainer [ a ] = BI . createWidget ( { type : "bi.absolute" , cls : "bi-popup-view" , items : [ { el : this . floatLayer [ a ] = BI . createWidget ( { type : "bi.absolute" , items : [ b ] } , d ) , left : 0 , right : 0 , top : 0 , bottom : 0 } ] } ) , this . floatManager [ a ] = b , function ( a ) { b . on ( BI . Popover . EVENT _CLOSE , function ( ) { e . close ( a ) } ) } ( a ) , BI . createWidget ( { type : "bi.absolute" , element : c . container || this . options . render , items : [ { el : this . floatContainer [ a ] , left : 0 , right : 0 , top : 0 , bottom : 0 } ] } ) , this ) } , open : function ( a ) { if ( ! this . _check ( a ) ) return this ; if ( ! this . floatOpened [ a ] ) { this . floatOpened [ a ] = ! 0 ; var b = this . floatContainer [ a ] ; b . element . css ( "zIndex" , this . zindex ++ ) , this . modal && b . element . _ _hasZIndexMask _ _ ( this . zindexMap [ a ] ) && b . element . _ _releaseZIndexMask _ _ ( this . zindexMap [ a ] ) , this . zindexMap [ a ] = this . zindex , this . modal && b . element . _ _buildZIndexMask _ _ ( this . zindex ++ ) , this . get ( a ) . setZindex ( this . zindex ++ ) , this . floatContainer [ a ] . visible ( ) ; var c = this . get ( a ) ; c . show && c . show ( ) ; var d = $ ( this . options . render ) . width ( ) , e = $ ( this . options . render ) . height ( ) , f = c . element . width ( ) , g = c . element . height ( ) , h = ( d - f ) / 2 , i = ( e - g ) / 2 ; h < 0 && ( h = 0 ) , i < 0 && ( i = 0 ) , c . element . css ( { left : h + "px" , top : i + "px" } ) } return this } , close : function ( a ) { return this . _check ( a ) ? ( this . floatOpened [ a ] && ( delete this . floatOpened [ a ] , this . floatContainer [ a ] . invisible ( ) , this . modal && this . floatContainer [ a ] . element . _ _releaseZIndexMask _ _ ( this . zindexMap [ a ] ) ) , this ) : this } , get : function ( a ) { return this . floatManager [ a ] } , remove : function ( a ) { return this . _check ( a ) ? ( this . floatContainer [ a ] . destroy ( ) , this . modal && this . floatContainer [ a ] . element . _ _releaseZIndexMask _ _ ( this . zindexMap [ a ] ) , delete this . floatManager [ a ] , delete this . floatLayer [ a ] , delete this . zindexMap [ a ] , delete this . floatContainer [ a ] , delete this . floatOpened [ a ] , this ) : this } } ) , BI . ResizeController = BI . inherit ( BI . Controller , { _defaultConfig : function ( ) { return BI . extend ( BI . ResizeController . superclass . _defaultConfig . apply ( this , arguments ) , { } ) } , _init : function ( ) { BI . ResizeController . superclass . _init . apply ( this , arguments ) ; var a = this ; this . resizerManger = { } ; var b = BI . debounce ( function ( b ) { a . _resize ( b ) } , 30 ) ; $ ( window ) . resize ( b ) } , _resize : function ( a ) { BI . each ( this . resizerManger , function ( b , c ) { return c instanceof $ ? void ( c . is ( ":visible" ) && c . trigger ( "__resize__" ) ) : c instanceof BI . Layout ? void c . resize ( ) : BI . isFunction ( c ) ? void c ( a ) : void 0 } ) } , add : function ( a , b ) { var c = this ; return this . has ( a ) ? this : ( this . resizerManger [ a ] = b , function ( ) { c . remove ( a ) } ) } , get : function ( a ) { return this . resizerManger [ a ] } , has : function ( a ) { return null != this . resizerManger [ a ] } , remove : function ( a ) { return this . has ( a ) ? ( delete this . resizerManger [ a ] , this ) : this } } ) , BI . TooltipsController = BI . inherit ( BI . Controller , { _defaultConfig : function ( ) { return BI . extend ( BI . TooltipsController . superclass . _defaultConfig . apply ( this , arguments ) , { } ) } , _const : { height : 20 } , _init : function ( ) { BI . TooltipsController . superclass . _init . apply ( this , arguments ) , this . tooltipsManager = { } , this . showingTips = { } } , _createTooltip : function ( a , b ) { return BI . createWidget ( { type : "bi.tooltip" , text : a , level : b , stopEvent : ! 0 , height : this . _const . height } ) } , hide : function ( a , b ) { return this . has ( a ) ? ( delete this . showingTips [ a ] , this . get ( a ) . element . hide ( 0 , b ) , this . get ( a ) . invisible ( ) , this ) : this } , create : function ( a , b , c , d ) { if ( ! this . has ( a ) ) { var e = this . _createTooltip ( b , c ) ; this . add ( a , e ) , BI . createWidget ( { type : "bi.absolute" , element : d || "body" , items : [ { el : e } ] } ) , e . invisible ( ) } return this . get ( a ) } , show : function ( a , b , c , d , e , f ) { f || ( f = { } ) ; var g = this ; if ( BI . each ( this . showingTips , function ( a , b ) { g . hide ( a ) } ) , this . showingTips = { } , this . has ( b ) || this . create ( b , c , d , f . container || e ) , ! f . belowMouse ) { var h = e . element . offset ( ) , i = e . element . bounds ( ) ; if ( 0 === i . height || 0 === i . width ) return ; var j = h . top + i . height + 5 } var k = this . get ( b ) ; k . setText ( c ) , k . element . css ( { left : "0px" , top : "0px" } ) , k . visible ( ) , k . element . height ( k . element [ 0 ] . scrollHeight ) , this . showingTips [ b ] = ! 0 ; var l = e . element . offset ( ) . left / e . element . get ( 0 ) . getBoundingClientRect ( ) . left , m = ( a . pageX || a . clientX ) * l + 15 , n = ( a . pageY || a . clientY ) * l + 15 ; return m + k . element . outerWidth ( ) > $ ( "body" ) .
i [ "%S" ] = o < 10 ? "0" + o : o , i [ "%t" ] = "\t" , i [ "%U" ] = i [ "%W" ] = i [ "%V" ] = f < 10 ? "0" + f : f , i [ "%u" ] = h + 1 , i [ "%w" ] = h , i [ "%y" ] = e . substr ( 2 , 2 ) , i [ "%Y" ] = e , i [ "%%" ] = "%" , i [ "%Q" ] = g ; var p = /%./g ; if ( ! BI . isKhtml ( ) ) return a . replace ( p , function ( a ) { return i [ a ] || a } ) ; for ( var q = a . match ( p ) , r = 0 ; r < q . length ; r ++ ) { var s = i [ q [ r ] ] ; s && ( p = new RegExp ( q [ r ] , "g" ) , a = a . replace ( p , s ) ) } return a } , $ . extend ( $ . Event . prototype , { stopEvent : function ( ) { this . stopPropagation ( ) , this . preventDefault ( ) } } ) , Function . prototype . before = function ( a ) { var b = this ; return function ( ) { return a . apply ( this , arguments ) !== ! 1 && b . apply ( this , arguments ) } } , Function . prototype . after = function ( a ) { var b = this ; return function ( ) { var c = b . apply ( this , arguments ) ; return c !== ! 1 && ( a . apply ( this , arguments ) , c ) } } , jQuery && ! function ( a ) { a . fn . insets || ( a . fn . insets = function ( ) { var a = this . padding ( ) , b = this . border ( ) ; return { top : a . top , bottom : a . bottom + b . bottom + b . top , left : a . left , right : a . right + b . right + b . left } } ) , a . fn . bounds || ( a . fn . bounds = function ( a ) { var b = { hasIgnoredBounds : ! 0 } ; return a ? ( isNaN ( a . x ) || ( b . left = a . x ) , isNaN ( a . y ) || ( b . top = a . y ) , null != a . width && ( b . width = a . width - ( this . outerWidth ( ! 0 ) - this . width ( ) ) , b . width = b . width >= 0 ? b . width : a . width ) , null != a . height && ( b . height = a . height - ( this . outerHeight ( ! 0 ) - this . height ( ) ) , b . height = b . height >= 0 ? b . height : a . height ) , this . css ( b ) , this ) : ( b = this . position ( ) , { x : b . left , y : b . top , width : this . outerWidth ( ) , height : this . outerHeight ( ) } ) } ) } ( jQuery ) , Number . prototype . toFixed && "0.000" === 8e-5 . toFixed ( 3 ) && "0" !== . 9. toFixed ( 0 ) && "1.25" === 1.255 . toFixed ( 2 ) && "1000000000000000128" === ( 0xde0b6b3a7640080 ) . toFixed ( 0 ) || ! function ( ) { function a ( a , b ) { for ( var c = - 1 ; ++ c < g ; ) b += a * h [ c ] , h [ c ] = b % f , b = Math . floor ( b / f ) } function b ( a ) { for ( var b = g , c = 0 ; -- b >= 0 ; ) c += h [ b ] , h [ b ] = Math . floor ( c / a ) , c = c % a * f } function c ( ) { for ( var a = g , b = "" ; -- a >= 0 ; ) if ( "" !== b || 0 === a || 0 !== h [ a ] ) { var c = String ( h [ a ] ) ; "" === b ? b = c : b += "0000000" . slice ( 0 , 7 - c . length ) + c } return b } function d ( a , b , c ) { return 0 === b ? c : b % 2 === 1 ? d ( a , b - 1 , c * a ) : d ( a * a , b / 2 , c ) } function e ( a ) { for ( var b = 0 ; a >= 4096 ; ) b += 12 , a /= 4096 ; for ( ; a >= 2 ; ) b += 1 , a /= 2 ; return b } var f , g , h ; f = 1e7 , g = 6 , h = [ 0 , 0 , 0 , 0 , 0 , 0 ] , Number . prototype . toFixed = function ( f ) { var g , h , i , j , k , l , m , n ; if ( g = Number ( f ) , g = g !== g ? 0 : Math . floor ( g ) , g < 0 || g > 20 ) throw new RangeError ( "Number.toFixed called with invalid number of decimals" ) ; if ( h = Number ( this ) , h !== h ) return "NaN" ; if ( h <= - 1e21 || h > 1e21 ) return String ( h ) ; if ( i = "" , h < 0 && ( i = "-" , h = - h ) , j = "0" , h > 1e-21 ) if ( k = e ( h * d ( 2 , 69 , 1 ) ) - 69 , l = k < 0 ? h * d ( 2 , - k , 1 ) : h / d ( 2 , k , 1 ) , l *= 4503599627370496 , k = 52 - k , k > 0 ) { for ( a ( 0 , l ) , m = g ; m >= 7 ; ) a ( 1e7 , 0 ) , m -= 7 ; for ( a ( d ( 10 , m , 1 ) , 0 ) , m = k - 1 ; m >= 23 ; ) b ( 1 << 23 ) , m -= 23 ; b ( 1 << m ) , a ( 1 , 1 ) , b ( 2 ) , j = c ( ) } else a ( 0 , l ) , a ( 1 << - k , 0 ) , j = c ( ) + "0.00000000000000000000" . slice ( 2 , 2 + g ) ; return g > 0 ? ( n = j . length , j = n <= g ? i + "0.0000000000000000000" . slice ( 0 , g - n + 2 ) + j : i + j . slice ( 0 , n - g ) + "." + j . slice ( n - g ) ) : j = i + j , j } } ( ) , Number . prototype . add = function ( a ) { return accAdd ( a , this ) } , Number . prototype . sub = function ( a ) { return accSub ( this , a ) } , Number . prototype . mul = function ( a ) { return accMul ( a , this ) } , Number . prototype . div = function ( a ) { return accDivide ( this , a ) } , _ . extend ( String . prototype , { startWith : function ( a ) { return ! ( null == a || "" == a || 0 === this . length || a . length > this . length ) && this . substr ( 0 , a . length ) == a } , endWith : function ( a ) { return ! ( null == a || "" == a || 0 === this . length || a . length > this . length ) && this . substring ( this . length - a . length ) == a } , getQuery : function ( a ) { var b = new RegExp ( "(^|&)" + a + "=([^&]*)(&|$)" ) , c = this . substr ( this . indexOf ( "?" ) + 1 ) . match ( b ) ; return c ? unescape ( c [ 2 ] ) : null } , appendQuery : function ( a ) { if ( ! a ) return this ; var b = this ; return b . indexOf ( "?" ) === - 1 && ( b += "?" ) , b . endWith ( "?" ) !== ! 1 || ( b += "&" ) , _ . each ( a , function ( a , c ) { "string" == typeof c && ( b += c + "=" + a + "&" ) } ) , b = b . substr ( 0 , b . length - 1 ) } , replaceAll : function ( a , b ) { return this . replace ( new RegExp ( a , "gm" ) , b ) } , perfectStart : function ( a ) { return this . startWith ( a ) ? this : a + this } , allIndexOf : function ( a ) { if ( "string" != typeof a ) return [ ] ; for ( var b = this , c = [ ] , d = 0 ; b . length > 0 ; ) { var e = b . indexOf ( a ) ; if ( e === - 1 ) break ; c . push ( d + e ) , b = b . substring ( e + a . length , b . length ) , d += e + a . length } return c } } ) , BI . EventListener = { listen : function ( a , b , c ) { return a . addEventListener ? ( a . addEventListener ( b , c , ! 1 ) , { remove : function ( ) { a . removeEventListener ( b , c , ! 1 ) } } ) : a . attachEvent ? ( a . attachEvent ( "on" + b , c ) , { remove : function ( ) { a . detachEvent ( "on" + b , c ) } } ) : void 0 } , capture : function ( a , b , c )
c = ! 0 ) } ) , c === ! 0 && ( this . $wrapper . append ( b ) , this . element . append ( this . $wrapper ) ) } , _getWrapper : function ( ) { return this . $wrapper } , resize : function ( ) { } , populate : function ( a ) { BI . FlexCenterLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.flex_wrapper_center" , BI . FlexCenterLayout ) , BI . FlexHorizontalLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . FlexHorizontalLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-flex-wrapper-horizontal-layout clearfix" , verticalAlign : BI . VerticalAlign . Middle , columnSize : [ ] , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . FlexHorizontalLayout . superclass . render . apply ( this , arguments ) ; var a = this . options ; this . $wrapper = $ ( "<div>" ) . addClass ( "flex-wrapper-horizontal-layout-wrapper " + a . verticalAlign ) , this . populate ( this . options . items ) } , _addElement : function ( a , b ) { var c = this . options , d = BI . FlexHorizontalLayout . superclass . _addElement . apply ( this , arguments ) ; return d . element . css ( { position : "relative" } ) , 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 } , _mountChildren : function ( ) { var a = this , b = document . createDocumentFragment ( ) , c = ! 1 ; BI . each ( this . _children , function ( d , e ) { e . element !== a . element && ( b . appendChild ( e . element [ 0 ] ) , c = ! 0 ) } ) , c === ! 0 && ( this . $wrapper . append ( b ) , this . element . append ( this . $wrapper ) ) } , _getWrapper : function ( ) { return this . $wrapper } , resize : function ( ) { } , populate : function ( a ) { BI . FlexHorizontalLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.flex_wrapper_horizontal" , BI . FlexHorizontalLayout ) , BI . FlexVerticalCenter = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . FlexVerticalCenter . superclass . props . apply ( this , arguments ) , { baseCls : "bi-flex-wrapper-vertical-center clearfix" , horizontalAlign : BI . HorizontalAlign . Middle , columnSize : [ ] , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . FlexVerticalCenter . superclass . render . apply ( this , arguments ) ; var a = this . options ; this . $wrapper = $ ( "<div>" ) . addClass ( "flex-wrapper-vertical-center-wrapper " + a . horizontalAlign ) , this . populate ( this . options . items ) } , _addElement : function ( a , b ) { var c = this . options , d = BI . FlexVerticalCenter . superclass . _addElement . apply ( this , arguments ) ; return d . element . css ( { position : "relative" } ) , 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 } , _mountChildren : function ( ) { var a = this , b = document . createDocumentFragment ( ) , c = ! 1 ; BI . each ( this . _children , function ( d , e ) { e . element !== a . element && ( b . appendChild ( e . element [ 0 ] ) , c = ! 0 ) } ) , c === ! 0 && ( this . $wrapper . append ( b ) , this . element . append ( this . $wrapper ) ) } , _getWrapper : function ( ) { return this . $wrapper } , resize : function ( ) { } , populate : function ( a ) { BI . FlexVerticalCenter . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.flex_wrapper_vertical_center" , BI . FlexVerticalCenter ) , BI . AbsoluteLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . AbsoluteLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-absolute-layout" , hgap : null , vgap : null , lgap : null , rgap : null , tgap : null , bgap : null } ) } , render : function ( ) { BI . AbsoluteLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , _addElement : function ( a , b ) { var c = this . options , d = BI . AbsoluteLayout . superclass . _addElement . apply ( this , arguments ) , e = 0 , f = 0 , g = 0 , h = 0 ; return BI . isNotNull ( b . left ) && ( d . element . css ( { l
a . addClass ( BI . isOdd ( b + 1 ) ? "odd-row" : "even-row" ) , a . addClass ( BI . isOdd ( c + 1 ) ? "odd-col" : "even-col" ) , a . addClass ( "center-element" ) } function d ( a , b , c ) { var d = "" ; 0 === b && ( d += " first-row" ) , 0 === c && ( d += " first-col" ) , d += BI . isOdd ( b + 1 ) ? " odd-row" : " even-row" , d += BI . isOdd ( c + 1 ) ? " odd-col" : " even-col" , a . cls = ( a . cls || "" ) + d + " center-element" } function e ( a , b , e ) { a instanceof BI . Widget ? c ( a . element , b , e ) : a . el instanceof BI . Widget ? c ( a . el . element , b , e ) : a . el ? d ( a . el , b , e ) : d ( a , b , e ) } for ( var f = this . options , g = BI . createWidget ( { type : "bi.default" , tagName : "tr" } ) , h = 0 ; h < b . length ; h ++ ) { var i = BI . createWidget ( b [ h ] ) ; i . element . css ( { position : "relative" , top : "0" , left : "0" , margin : "0px auto" } ) , b [ h ] . lgap && i . element . css ( { "margin-left" : b [ h ] . lgap + "px" } ) , b [ h ] . rgap && i . element . css ( { "margin-right" : b [ h ] . rgap + "px" } ) , b [ h ] . tgap && i . element . css ( { "margin-top" : b [ h ] . tgap + "px" } ) , b [ h ] . bgap && i . element . css ( { "margin-bottom" : b [ h ] . bgap + "px" } ) , e ( i , this . rows ++ , h ) ; var j = BI . createWidget ( { type : "bi.default" , attributes : { width : f . columnSize [ h ] <= 1 ? 100 * f . columnSize [ h ] + "%" : f . columnSize [ h ] } , tagName : "td" , items : [ i ] } ) ; j . element . css ( { position : "relative" , "vertical-align" : "middle" , margin : "0" , padding : "0" , border : "none" } ) , g . addItem ( j ) } return this . addWidget ( this . getName ( ) + a , g ) , g } , _mountChildren : function ( ) { var a = this , b = document . createDocumentFragment ( ) , c = ! 1 ; BI . each ( this . _children , function ( d , e ) { e . element !== a . element && ( b . appendChild ( e . element [ 0 ] ) , c = ! 0 ) } ) , c === ! 0 && ( this . $table . append ( b ) , this . element . append ( this . $table ) ) } , resize : function ( ) { } , addItem : function ( a ) { if ( ! BI . isArray ( a ) ) throw new Error ( "item must be array" ) ; return BI . TdLayout . superclass . addItem . apply ( this , arguments ) } , populate : function ( a ) { BI . TdLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.td" , BI . TdLayout ) , BI . VerticalLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . VerticalLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-vertical-layout" , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , scrolly : ! 0 } ) } , render : function ( ) { BI . VerticalLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , _addElement : function ( a , b ) { var c = this . options , d = BI . VerticalLayout . superclass . _addElement . apply ( this , arguments ) ; return d . element . css ( { position : "relative" } ) , c . vgap + c . tgap + ( b . tgap || 0 ) + ( b . vgap || 0 ) !== 0 && d . element . css ( { "margin-top" : ( 0 === a ? c . vgap : 0 ) + 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" : 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 . VerticalLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.vertical" , BI . VerticalLayout ) , BI . WindowLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . WindowLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-window-layout" , columns : 3 , rows : 2 , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , columnSize : [ 100 , "fill" , 200 ] , rowSize : [ 100 , "fill" ] , items : [ [ { el : { type : "bi.button" , text : "button1" } } , { el : { type : "bi.button" , text : "button2" } } , { el : { type : "bi.button" , text : "button3" } } ] ] } ) } , render : function ( ) { BI . WindowLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , resize : function ( ) { this . stroke ( this . options . items ) } , addItem : function ( a ) { throw new Error ( "cannot be added" ) } , stroke : function ( a ) { function b ( a , b , c ) { 0 === b && a . addClass ( "first-row" ) , 0 === c && a . addClass ( "first-col" ) , a . addClass ( BI . isOdd ( b + 1 ) ? "odd-row" : "even-row" ) , a . addClass ( BI . isOdd ( c + 1 ) ? "odd-col" : "even-col" ) , a . addClass ( "center-element" ) } function c ( a , b , c ) { var d = "" ; 0 === b && ( d += " first-row" ) , 0 === c && ( d += " first-col" ) , d += BI . isOdd ( b + 1 ) ? " odd-row" : " even-row" , d += BI . isOdd ( c + 1 ) ? " odd-col" : " even-col" , a . cls = ( a . cls || "" ) + d + " center-element" } function d ( a , d , e ) { a instanceof BI . Widget ? b ( a . element , d , e ) : a . el instanceof BI . Widget ? b ( a . el . element , d , e ) : a . el ? c ( a . el , d , e ) : c ( a , d , e ) } var e = this . options ; BI . isNumber ( e . rowSize ) && ( e . rowSize = BI . makeAr
} , getValue : function ( ) { return this . options . value } , _unMount : function ( ) { BI . Single . superclass . _unMount . apply ( this , arguments ) , BI . Tooltips . remove ( this . getName ( ) ) } } ) , BI . Text = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var a = BI . Text . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-text" , textAlign : "left" , whiteSpace : "normal" , lineHeight : null , handler : null , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , text : "" , py : "" } ) } , _init : function ( ) { BI . Text . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; b . hgap + b . lgap > 0 && this . element . css ( { "padding-left" : b . hgap + b . lgap + "px" } ) , b . hgap + b . rgap > 0 && this . element . css ( { "padding-right" : b . hgap + b . rgap + "px" } ) , b . vgap + b . tgap > 0 && this . element . css ( { "padding-top" : b . vgap + b . tgap + "px" } ) , b . vgap + b . bgap > 0 && this . element . css ( { "padding-bottom" : b . vgap + b . bgap + "px" } ) , BI . isNumber ( b . height ) && this . element . css ( { lineHeight : b . height + "px" } ) , BI . isNumber ( b . lineHeight ) && this . element . css ( { lineHeight : b . lineHeight + "px" } ) , this . element . css ( { textAlign : b . textAlign , whiteSpace : b . whiteSpace } ) , b . handler ? ( this . text = BI . createWidget ( { type : "bi.layout" , tagName : "span" } ) , this . text . element . click ( function ( ) { b . handler ( a . getValue ( ) ) } ) , BI . createWidget ( { type : "bi.default" , element : this , items : [ this . text ] } ) ) : this . text = this , BI . isKey ( b . text ) ? this . setText ( b . text ) : BI . isKey ( b . value ) && this . setText ( b . value ) , BI . isKey ( b . keyword ) && this . text . element . _ _textKeywordMarked _ _ ( b . text , b . keyword , b . py ) } , doRedMark : function ( a ) { var b = this . options ; this . text . element . _ _textKeywordMarked _ _ ( b . text || b . value , a , b . py ) } , unRedMark : function ( ) { var a = this . options ; this . text . element . _ _textKeywordMarked _ _ ( a . text || a . value , "" , a . py ) } , doHighLight : function ( ) { this . text . element . addClass ( "bi-high-light" ) } , unHighLight : function ( ) { this . text . element . removeClass ( "bi-high-light" ) } , setValue : function ( a ) { BI . Text . superclass . setValue . apply ( this , arguments ) , this . isReadOnly ( ) || this . setText ( a ) } , setStyle : function ( a ) { this . text . element . css ( a ) } , setText : function ( a ) { BI . Text . superclass . setText . apply ( this , arguments ) , this . options . text = a , this . text . element . html ( BI . htmlEncode ( a ) ) } } ) , BI . shortcut ( "bi.text" , BI . Text ) , BI . BasicButton = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var a = BI . BasicButton . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-basic-button" + ( a . invalid ? "" : " cursor-pointer" ) , value : "" , text : "" , stopEvent : ! 1 , stopPropagation : ! 1 , selected : ! 1 , once : ! 1 , forceSelected : ! 1 , forceNotSelected : ! 1 , disableSelected : ! 1 , shadow : ! 1 , isShadowShowingOnSelected : ! 1 , trigger : null , handler : BI . emptyFn , bubble : null } ) } , _init : function ( ) { BI . BasicButton . superclass . _init . apply ( this , arguments ) ; var a = this . options ; a . selected === ! 0 && BI . nextTick ( BI . bind ( function ( ) { this . setSelected ( a . selected ) } , this ) ) , BI . nextTick ( BI . bind ( this . bindEvent , this ) ) , a . shadow && this . _createShadow ( ) , a . level && this . element . addClass ( "button-" + a . level ) } , _createShadow : function ( ) { var a = this , b = this . options , c = function ( ) { a . $mask || ( a . $mask = BI . createWidget ( BI . isObject ( b . shadow ) ? b . shadow : { } , { type : "bi.layout" , cls : "bi-button-mask" } ) , a . $mask . invisible ( ) , BI . createWidget ( { type : "bi.absolute" , element : a , items : [ { el : a . $mask , left : 0 , right : 0 , top : 0 , bottom : 0 } ] } ) ) } ; this . element . mouseup ( function ( ) { a . _hover || b . isShadowShowingOnSelected || ( c ( ) , a . $mask . invisible ( ) ) } ) , this . element . on ( "mouseenter." + this . getName ( ) , function ( d ) { a . element . _ _isMouseInBounds _ _ ( d ) && ( ! a . isEnabled ( ) || a . _hover || ! b . isShadowShowingOnSelected && a . isSelected ( ) || ( c ( ) , a . $mask . visible ( ) ) ) } ) , this . element . on ( "mousemove." + this . getName ( ) , function ( b ) { a . element . _ _isMouseInBounds _ _ ( b ) || a . isEnabled ( ) && ! a . _hover && ( c ( ) , a . $mask . invisible ( ) ) } ) , this . element . on ( "mouseleave." + this . getName ( ) , function ( ) { a . isEnabled ( ) && ! a . _hover && ( c ( ) , a . $mask . invisible ( ) ) } ) } , bindEvent : function ( ) { function a ( a ) { e . stopEvent && a . stopEvent ( ) , e . stopPropagation && a . stopPropagation ( ) } function b ( b ) { if ( a ( b ) , ! ( ! d . isEnabled ( ) || d . isOnce ( ) && d . isSelected ( ) ) ) { if ( BI . isKey ( e . bubble ) || BI . isFunction ( e . bubble ) ) { if ( BI . isNull ( d . combo ) ) { var f ; BI . createWidget ( { type : "bi.absolute" , element : d , items : [ { el : { type : "bi.bubble_combo" , trigger : "" , ref : function ( ) { d . combo = this } , el : { type : "bi.layout" , height : "100%" } , popup : { type : " bi . text _
if ( g > 0 && h > 0 ) { if ( f >= this . renderRange . minY && h <= this . renderRange . maxY && e >= this . renderRange . minX && g <= this . renderRange . maxX ) return ; for ( var i = this . _cellRenderers ( h - f , g - e , e , f ) , j = [ ] , k = { } , l = { } , m = { } , n = { } , o = 0 , p = i . length ; o < p ; o ++ ) { var q = i [ o ] ; m [ q . x ] = q . x , m [ q . x + q . width ] = q . x + q . width , n [ q . y ] = q . y , n [ q . y + q . height ] = q . y + q . height } m = BI . toArray ( m ) , n = BI . toArray ( n ) ; for ( var r = BI . invert ( m ) , s = BI . invert ( n ) , t = { } , u = { } , v = { } , w = { } , x = function ( a , b ) { null == a [ b ] && ( a [ b ] = Number . MAX _VALUE ) } , y = function ( a , b ) { null == a [ b ] && ( a [ b ] = 0 ) } , o = 0 , p = i . length ; o < p ; o ++ ) { var z , q = i [ o ] , A = this . renderedKeys [ q . index ] && this . renderedKeys [ q . index ] [ 1 ] ; A >= 0 ? ( q . width !== this . renderedCells [ A ] . _width && ( this . renderedCells [ A ] . _width = q . width , this . renderedCells [ A ] . el . setWidth ( q . width ) ) , q . height !== this . renderedCells [ A ] . _height && ( this . renderedCells [ A ] . _height = q . height , this . renderedCells [ A ] . el . setHeight ( q . height ) ) , this . renderedCells [ A ] . _left !== q . x && this . renderedCells [ A ] . el . element . css ( "left" , q . x + "px" ) , this . renderedCells [ A ] . _top !== q . y && this . renderedCells [ A ] . el . element . css ( "top" , q . y + "px" ) , j . push ( z = this . renderedCells [ A ] ) ) : ( z = BI . createWidget ( BI . extend ( { type : "bi.label" , width : q . width , height : q . height } , b . items [ q . index ] , { cls : ( b . items [ q . index ] . cls || "" ) + " container-cell" + ( 0 === q . y ? " first-row" : "" ) + ( 0 === q . x ? " first-col" : "" ) , _left : q . x , _top : q . y } ) ) , j . push ( { el : z , left : q . x , top : q . y , _left : q . x , _top : q . y , _width : q . width , _height : q . height } ) ) ; for ( var B = 0 | s [ q . y ] , C = 0 | s [ q . y + q . height ] , D = B ; D <= C ; D ++ ) { var E = n [ D ] ; x ( t , E ) , y ( u , E ) , t [ E ] = Math . min ( t [ E ] , q . x ) , u [ E ] = Math . max ( u [ E ] , q . x + q . width ) } for ( var F = 0 | r [ q . x ] , G = 0 | r [ q . x + q . width ] , D = F ; D <= G ; D ++ ) { var H = m [ D ] ; x ( v , H ) , y ( w , H ) , v [ H ] = Math . min ( v [ H ] , q . y ) , w [ H ] = Math . max ( w [ H ] , q . y + q . height ) } k [ q . index ] = [ q . index , o ] , l [ o ] = z } var I = { } , J = { } , K = [ ] ; BI . each ( k , function ( b , c ) { a . renderedKeys [ b ] ? I [ b ] = c : J [ b ] = c } ) , BI . each ( this . renderedKeys , function ( a , b ) { I [ a ] || J [ a ] || K . push ( b [ 1 ] ) } ) , BI . each ( K , function ( b , c ) { a . renderedCells [ c ] . el . _destroy ( ) } ) ; var L = [ ] ; BI . each ( J , function ( a , b ) { L . push ( j [ b [ 1 ] ] ) } ) , this . container . addItems ( L ) , this . container . _children = l , this . container . attr ( "items" , j ) , this . renderedCells = j , this . renderedKeys = k ; var M = BI . min ( t ) , N = BI . max ( u ) , O = BI . max ( v ) , P = BI . min ( w ) ; this . renderRange = { minX : M , minY : O , maxX : N , maxY : P } } } , _getMaxScrollLeft : function ( ) { return Math . max ( 0 , this . _width - this . options . width + ( this . options . overflowX ? BI . DOM . getScrollWidth ( ) : 0 ) ) } , _getMaxScrollTop : function ( ) { return Math . max ( 0 , this . _height - this . options . height + ( this . options . overflowY ? BI . DOM . getScrollWidth ( ) : 0 ) ) } , _populate : function ( a ) { var b = this . options ; if ( this . _reRange ( ) , a && a !== this . options . items && ( this . options . items = a , this . _calculateSizeAndPositionData ( ) ) , b . items . length > 0 ) { this . container . setWidth ( this . _width ) , this . container . setHeight ( this . _height ) , this . _calculateChildrenToRender ( ) ; try { this . element . scrollTop ( b . scrollTop ) , this . element . scrollLeft ( b . scrollLeft ) } catch ( c ) { } } } , setScrollLeft : function ( a ) { this . options . scrollLeft !== a && ( this . _scrollLock = ! 0 , this . options . scrollLeft = BI . clamp ( a || 0 , 0 , this . _getMaxScrollLeft ( ) ) , this . _debounceRelease ( ) , this . _calculateChildrenToRender ( ) , this . element . scrollLeft ( this . options . scrollLeft ) ) } , setScrollTop : function ( a ) { this . options . scrollTop !== a && ( this . _scrollLock = ! 0 , this . options . scrollTop = BI . clamp ( a || 0 , 0 , this . _getMaxScrollTop ( ) ) , this . _debounceRelease ( ) , this . _calculateChildrenToRender ( ) , this . element . scrollTop ( this . options . scrollTop ) ) } , setOverflowX : function ( a ) { var b = this ; this . options . overflowX !== ! ! a && ( this . options . overflowX = ! ! a , BI . nextTick ( function ( ) { b . element . css ( { overflowX : a ? "auto" : "hidden" } ) } ) ) } , setOverflowY : function ( a ) { var b = this ; this . options . overflowY !== ! ! a && ( this . options . overflowY = ! ! a , BI . nextTick ( function ( ) { b . element . css ( { overflowY : a ? "auto" : "hidden" } ) } ) ) } , getScrollLeft : function ( ) { return this . options . scrollLeft } , getScrollTop : function ( ) { return this . options . scrollTop } , getMaxScrollLeft : function ( ) { return this . _getMaxScrollLeft ( ) } , getMaxScrollTop : function ( ) { return this . _getMaxScrollTop ( ) } , _reRange : function ( ) { this . renderRange = { } } , _clearChildren : function ( ) { this . container . _children = { } , this . container . attr ( "items" , [ ] ) } , restore : function ( ) { BI . each ( this . renderedCells , function ( a , b ) { b . el . _destroy ( ) } ) , this . _clearChildren ( ) , this . renderedCells = [ ] , this . renderedKeys = [ ] , this
hgap : b . hgap , items : [ this . editor ] } ) , b . isDefaultInit && this . _assertPopupView ( ) ; var c = BI . debounce ( BI . bind ( this . _search , this ) , BI . EVENT _RESPONSE _TIME , { leading : ! 0 , trailing : ! 1 } ) ; this . editor . on ( BI . Controller . EVENT _CHANGE , function ( b ) { switch ( b ) { case BI . Events . STARTEDIT : a . _startSearch ( ) ; break ; case BI . Events . EMPTY : a . _stopSearch ( ) ; break ; case BI . Events . CHANGE : c ( ) ; break ; case BI . Events . PAUSE : a . _pauseSearch ( ) } } ) } , _assertPopupView : function ( ) { var a = this , b = this . options ; ( b . masker && ! BI . Maskers . has ( this . getName ( ) ) || b . masker === ! 1 && ! this . popupView ) && ( this . popupView = BI . createWidget ( b . popup , { type : "bi.searcher_view" , chooseType : b . chooseType } ) , this . popupView . on ( BI . Controller . EVENT _CHANGE , function ( c , d , e ) { if ( a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , c === BI . Events . CLICK ) { if ( b . isAutoSync ) { var f = b . adapter && b . adapter . getValue ( ) ; if ( e . isSelected ( ) ) switch ( b . chooseType ) { case BI . ButtonGroup . CHOOSE _TYPE _SINGLE : b . adapter && b . adapter . setValue ( [ e . getValue ( ) ] ) ; break ; case BI . ButtonGroup . CHOOSE _TYPE _MULTI : f . push ( e . getValue ( ) ) , b . adapter && b . adapter . setValue ( f ) } else b . adapter && b . adapter . setValue ( BI . deepWithout ( f , e . getValue ( ) ) ) } a . fireEvent ( BI . Searcher . EVENT _CHANGE , d , e ) } } ) , BI . nextTick ( function ( ) { a . fireEvent ( BI . Searcher . EVENT _AFTER _INIT ) } ) ) , b . masker && ! BI . Maskers . has ( this . getName ( ) ) && BI . Maskers . create ( this . getName ( ) , b . adapter , BI . extend ( { container : this , render : this . popupView } , b . masker ) , this ) } , _startSearch : function ( ) { this . _assertPopupView ( ) , this . _stop = ! 1 , this . _isSearching = ! 0 , this . fireEvent ( BI . Searcher . EVENT _START ) , this . popupView . startSearch && this . popupView . startSearch ( ) , BI . nextTick ( function ( a ) { BI . Maskers . show ( a ) } , this . getName ( ) ) } , _pauseSearch : function ( ) { this . options , this . getName ( ) ; this . _stop = ! 0 , BI . nextTick ( function ( a ) { BI . Maskers . hide ( a ) } , this . getName ( ) ) , this . _isSearching === ! 0 && ( this . popupView && this . popupView . pauseSearch && this . popupView . pauseSearch ( ) , this . fireEvent ( BI . Searcher . EVENT _PAUSE ) ) , this . _isSearching = ! 1 } , _stopSearch : function ( ) { var a = ( this . options , this . getName ( ) ) ; this . _stop = ! 0 , BI . Maskers . hide ( a ) , this . _isSearching === ! 0 && ( this . popupView && this . popupView . stopSearch && this . popupView . stopSearch ( ) , this . fireEvent ( BI . Searcher . EVENT _STOP ) ) , this . _isSearching = ! 1 } , _search : function ( ) { var a = this , b = this . options , c = this . editor . getValue ( ) ; if ( "" !== c && ! this . _stop ) { if ( b . isAutoSearch ) { var d = b . adapter && ( b . adapter . getItems && b . adapter . getItems ( ) || b . adapter . attr ( "items" ) ) || [ ] , e = BI . Func . getSearchResult ( d , c ) , f = e . match , g = e . find ; return this . popupView . populate ( g , f , c ) , b . isAutoSync && b . adapter && b . adapter . getValue && this . popupView . setValue ( b . adapter . getValue ( ) ) , void a . fireEvent ( BI . Searcher . EVENT _SEARCHING ) } this . popupView . loading && this . popupView . loading ( ) , b . onSearch ( { times : 1 , keyword : c , selectedValues : b . adapter && b . adapter . getValue ( ) } , function ( d , e ) { if ( ! a . _stop ) { var f = [ ] . slice . call ( arguments ) ; f . length > 0 && f . push ( c ) , BI . Maskers . show ( a . getName ( ) ) , a . popupView . populate . apply ( a . popupView , f ) , b . isAutoSync && b . adapter && b . adapter . getValue && a . popupView . setValue ( b . adapter . getValue ( ) ) , a . popupView . loaded && a . popupView . loaded ( ) , a . fireEvent ( BI . Searcher . EVENT _SEARCHING ) } } ) } } , setAdapter : function ( a ) { this . options . adapter = a , BI . Maskers . remove ( this . getName ( ) ) } , doSearch : function ( ) { this . isSearching ( ) && this . _search ( ) } , stopSearch : function ( ) { this . _stopSearch ( ) ; try { this . editor . blur ( ) } catch ( a ) { if ( ! this . editor . blur ) throw new Error ( "editor没有实现blur方法" ) } finally { this . editor . setValue ( "" ) } } , isSearching : function ( ) { return this . _isSearching } , isViewVisible : function ( ) { return this . editor . isEnabled ( ) && BI . Maskers . isVisible ( this . getName ( ) ) } , getView : function ( ) { return this . popupView } , hasMatched : function ( ) { return this . _assertPopupView ( ) , this . popupView . hasMatched ( ) } , adjustHeight : function ( ) { BI . Maskers . has ( this . getName ( ) ) && BI . Maskers . get ( this . getName ( ) ) . isVisible ( ) && BI . Maskers . show ( this . getName ( ) ) } , adjustView : function ( ) { this . isViewVisible ( ) && BI . Maskers . show ( this . getName ( ) ) } , setValue : function ( a ) { BI . isNull ( this . popupView ) ? this . options . popup . value = a : this . popupView . setValue ( a ) } , getKeyword : function ( ) { return this . editor . getValue ( ) } , getKeywords : function ( ) { return this . editor . getKeywords ( ) } , getValue : function ( ) { var a = this . options ; return a . isAutoSync && a . adapter
a || ( a = [ ] ) , b || ( b = [ ] ) , this . setTipVisible ( a . length + b . length === 0 ) , this . spliter . setVisible ( BI . isNotEmptyArray ( b ) && BI . isNotEmptyArray ( a ) ) , this . matcher . populate ( b , c ) , this . searcher . populate ( a , c ) } , empty : function ( ) { this . searcher . empty ( ) , this . matcher . empty ( ) } , hasMatched : function ( ) { return this . matcher . getAllButtons ( ) . length > 0 } } ) , BI . SearcherView . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.searcher_view" , BI . SearcherView ) , BI . ListView = BI . inherit ( BI . Widget , { props : function ( ) { return { baseCls : "bi-list-view" , overscanHeight : 100 , blockSize : 10 , scrollTop : 0 , el : { } , items : [ ] } } , init : function ( ) { this . renderedIndex = - 1 , this . cache = { } } , render : function ( ) { var a = this , b = this . options ; return { type : "bi.vertical" , items : [ BI . extend ( { type : "bi.vertical" , scrolly : ! 1 , ref : function ( ) { a . container = this } } , b . el ) ] , element : this } } , mounted : function ( ) { var a = this , b = this . options ; this . _populate ( ) , this . element . scroll ( function ( c ) { b . scrollTop = a . element . scrollTop ( ) , a . _calculateBlocksToRender ( ) } ) , BI . ResizeDetector . addResizeListener ( this , function ( ) { a . _calculateBlocksToRender ( ) } ) } , _renderMoreIf : function ( ) { for ( var a , b = this , c = this . options , d = this . element . height ( ) , e = c . scrollTop + d + c . overscanHeight , f = this . cache [ this . renderedIndex ] && this . cache [ this . renderedIndex ] . index + c . blockSize || 0 , g = this . renderedIndex + 1 , h = function ( ) { return b . container . element . height ( ) } ; ( a = h ( ) ) < e && f < c . items . length ; ) { var i = c . items . slice ( f , f + c . blockSize ) ; this . container . addItems ( i ) ; var j = h ( ) - a ; this . cache [ g ] = { index : f , scrollTop : a , height : j } , this . renderedIndex = g , g ++ , f += c . blockSize } } , _calculateBlocksToRender : function ( ) { this . options ; this . _renderMoreIf ( ) } , _populate : function ( a ) { var b = this . options ; a && this . options . items !== a && ( this . options . items = a ) , this . _calculateBlocksToRender ( ) , this . element . scrollTop ( b . scrollTop ) } , restore : function ( ) { this . renderedIndex = - 1 , this . container . empty ( ) , this . cache = { } } , populate : function ( a ) { a && this . options . items !== a && this . restore ( ) , this . _populate ( a ) } , destroyed : function ( ) { this . restore ( ) } } ) , BI . shortcut ( "bi.list_view" , BI . ListView ) , BI . VirtualList = BI . inherit ( BI . Widget , { props : function ( ) { return { baseCls : "bi-virtual-list" , overscanHeight : 100 , blockSize : 10 , scrollTop : 0 , items : [ ] } } , init : function ( ) { this . renderedIndex = - 1 , this . cache = { } } , render : function ( ) { var a = this ; this . options ; return { type : "bi.vertical" , items : [ { type : "bi.layout" , ref : function ( ) { a . topBlank = this } } , { type : "bi.vertical" , scrolly : ! 1 , ref : function ( ) { a . container = this } } , { type : "bi.layout" , ref : function ( ) { a . bottomBlank = this } } ] , element : this } } , mounted : function ( ) { var a = this , b = this . options ; this . _populate ( ) , this . element . scroll ( function ( c ) { b . scrollTop = a . element . scrollTop ( ) , a . _calculateBlocksToRender ( ) } ) , BI . ResizeDetector . addResizeListener ( this , function ( ) { a . _calculateBlocksToRender ( ) } ) } , _renderMoreIf : function ( ) { for ( var a , b = this , c = this . options , d = this . element . height ( ) , e = c . scrollTop + d + c . overscanHeight , f = this . cache [ this . renderedIndex ] && this . cache [ this . renderedIndex ] . index + c . blockSize || 0 , g = this . renderedIndex + 1 , h = function ( ) { return b . container . element . height ( ) + b . topBlank . element . height ( ) + b . bottomBlank . element . height ( ) } ; ( a = h ( ) ) < e && f < c . items . length ; ) { var i = c . items . slice ( f , f + c . blockSize ) ; this . container . addItems ( i ) ; var j = h ( ) - a ; this . cache [ g ] = { index : f , scrollTop : a , height : j } , this . tree . set ( g , j ) , this . renderedIndex = g , g ++ , f += c . blockSize } } , _calculateBlocksToRender : function ( ) { var a = this . options ; this . _renderMoreIf ( ) ; for ( var b = this . element . height ( ) , c = a . scrollTop - a . overscanHeight , d = a . scrollTop + b + a . overscanHeight , e = this . tree . greatestLowerBound ( c ) , f = this . tree . leastUpperBound ( d ) , g = [ ] , h = 0 ; h < e ; h ++ ) { var i = this . cache [ h ] . index ; if ( ! this . cache [ h ] . destroyed ) { for ( var j = i ; j < i + a . blockSize && j < a . items . length ; j ++ ) g . push ( this . container . _children [ j ] ) , this . container . _children [ j ] = null ; this . cache [ h ] . destroyed = ! 0 } } for ( var h = f + 1 ; h <= this . renderedIndex ; h ++ ) { var i = this . cache [ h ] . index ; if ( ! this . cache [ h ] . destroyed ) { for ( var j = i ; j < i + a . blockSize && j < a . items . length ; j ++ ) g . push ( this . container . _children [ j ] ) , this . container . _children [ j ] = null ; this . cache [ h ] . destroyed = ! 0 } } for ( var k = document . createDocumentFragment ( ) , l = document . createDocumentFragment ( ) , m = k , h = e < 0 ? 0 : e ; h <= f && h <= this . renderedIndex ; h ++ ) { var i = this . cache [ h ] . index ; if ( this . cache [ h ] . destroyed || ( m = l ) , this .
} , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , setValue : function ( ) { this . isReadOnly ( ) || this . text . setValue . apply ( this . text , arguments ) } , getValue : function ( ) { return this . text . getValue ( ) } , setText : function ( ) { this . text . setText . apply ( this . text , arguments ) } , getText : function ( ) { return this . text . getText ( ) } } ) , BI . IconTextIconNode . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.icon_text_icon_node" , BI . IconTextIconNode ) , BI . IconTextNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . IconTextNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-icon-text-node" , logic : { dynamic : ! 1 } , cls : "close-ha-font" , iconHeight : null , iconWidth : null , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . IconTextNode . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . _const ; this . text = BI . createWidget ( { type : "bi.label" , cls : "list-item-text" , textAlign : "left" , hgap : a . textHgap , vgap : a . textVgap , lgap : a . textLgap , rgap : a . textRgap , text : a . text , value : a . value , keyword : a . keyword , height : a . height } ) , this . icon = BI . createWidget ( { type : "bi.icon_label" , width : a . height , height : a . height , iconWidth : a . iconWidth , iconHeight : a . iconHeight } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "horizontal" , BI . extend ( a . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "left" , this . icon , this . text ) } ) ) ) ) } , setValue : function ( ) { this . isReadOnly ( ) || this . text . setValue . apply ( this . text , arguments ) } , getValue : function ( ) { return this . text . getValue ( ) } , setText : function ( ) { this . text . setText . apply ( this . text , arguments ) } , getText : function ( ) { return this . text . getText ( ) } , doClick : function ( ) { BI . IconTextNode . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . IconTextNode . EVENT _CHANGE , this . getValue ( ) , this ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } } ) , BI . IconTextNode . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.icon_text_node" , BI . IconTextNode ) , BI . TextIconNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . TextIconNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-text-icon-node" , logic : { dynamic : ! 1 } , cls : "close-ha-font" , iconHeight : null , iconWidth : null , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . TextIconNode . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . _const ; this . text = BI . createWidget ( { type : "bi.label" , cls : "list-item-text" , textAlign : "left" , hgap : a . textHgap , vgap : a . textVgap , lgap : a . textLgap , rgap : a . textRgap , text : a . text , value : a . value , keyword : a . keyword , height : a . height } ) , this . icon = BI . createWidget ( { type : "bi.icon_label" , width : a . height , height : a . height , iconWidth : a . iconWidth , iconHeight : a . iconHeight } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "horizontal" , BI . extend ( a . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "left" , this . text , this . icon ) } ) ) ) ) } , doClick : function ( ) { BI . TextIconNode . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . TextIconNode . EVENT _CHANGE , this . getValue ( ) , this ) } , setValue : function ( ) { this . isReadOnly ( ) || this . text . setValue . apply ( this . text , arguments ) } , getValue : function ( ) { return this . text . getValue ( ) } , setText : function ( ) { this . text . setText . apply ( this . text , arguments ) } , getText : function ( ) { return this . text . getText ( ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } } ) , BI . TextIconNode . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.text_icon_node" , BI . TextIconNode ) , BI . TextNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . TextNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-text-node" , textAlign : "left" , whiteSpace : "nowrap" , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . TextNode . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . text = BI . createWidget ( { type : "bi.label" , element : this , textAlign : a . textAlign , whiteSpace : a . whiteSpace , textHeight : "nowrap" == a . whiteSpace ? a . height : a
this . fireEvent ( BI . Input . EVENT _CHANGE ) , this . _lastSubmitValue = BI . trim ( this . getValue ( ) ) ) , "" == this . getValue ( ) && ( this . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . EMPTY , this . getValue ( ) , this ) , this . fireEvent ( BI . Input . EVENT _EMPTY ) ) , this . _lastValue = this . getValue ( ) } , _checkValidationOnValueChange : function ( ) { var a = this . options , b = this . getValue ( ) ; this . setValid ( a . allowBlank === ! 0 && "" == BI . trim ( b ) || BI . isNotEmptyString ( BI . trim ( b ) ) && ( b === this . _lastValidValue || 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 . _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 } , _setValid : function ( ) { BI . Input . superclass . _setValid . apply ( this , arguments ) , this . isValid ( ) ? ( this . element . removeClass ( "bi-input-error" ) , this . fireEvent ( BI . Input . EVENT _VALID , BI . trim ( this . getValue ( ) ) , this ) ) : ( this . _lastValidValue === this . getValue ( ) && ( this . _lastValidValue = 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 _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 . Radio = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { var a = BI . Radio . 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 . Radio . superclass . _init . apply ( this , arguments ) } , doClick : function ( ) { BI . Radio . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . Radio . EVENT _CHANGE ) } } ) , BI . Radio . EVENT _CHANGE = "Radio.EVENT_CHANGE" , BI . shortcut ( "bi.radio" , BI . Radio ) , BI . IconLabel = BI . inherit ( BI . Single , { props : { baseCls : "bi-icon-label horizon-center" , iconWidth : null , iconHeight : null } , _init : function ( ) { BI . IconLabel . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . element . css ( { textAlign : "center" } ) , this . icon = BI . createWidget ( { type : "bi.icon" , width : a . iconWidth , height : a . iconHeight } ) , BI . isNumber ( a . height ) && a . height > 0 && BI . isNull ( a . iconWidth ) && BI . isNull ( a . iconHeight ) ? ( this . element . css ( "lineHeight" , a . height + "px" ) , BI . createWidget ( { type : "bi.default" , element : this , items : [ this . icon ] } ) ) : ( this . element . css ( "lineHeight" , "1" ) , BI . createWidget ( { element : this , type : "bi.center_adapt" , items : [ this . icon ] } ) ) } } ) , BI . shortcut ( "bi.icon_label" , BI . IconLabel ) , BI . Label = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var a = BI . Label . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-label" , textAlign : "center" , whiteSpace : "nowrap" , forceCenter : ! 1 , textWidth : null , textHeight : null , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , text : "" , py : "" , keyw
this . topLeftCollection . element . mousewheel ( function ( b ) { a . _topLeftWheelHandler . onWheel ( b . originalEvent ) } ) , this . topRightCollection . element . mousewheel ( function ( b ) { a . _topRightWheelHandler . onWheel ( b . originalEvent ) } ) , this . bottomLeftCollection . element . mousewheel ( function ( b ) { a . _bottomLeftWheelHandler . onWheel ( b . originalEvent ) } ) , this . bottomRightCollection . element . mousewheel ( function ( b ) { a . _bottomRightWheelHandler . onWheel ( b . originalEvent ) } ) } , _shouldHandleLeftX : function ( a ) { return a > 0 ? this . bottomLeftCollection . getScrollLeft ( ) < this . bottomLeftCollection . getMaxScrollLeft ( ) : this . bottomLeftCollection . getScrollLeft ( ) > 0 } , _shouldHandleRightX : function ( a ) { return a > 0 ? this . bottomRightCollection . getScrollLeft ( ) < this . bottomRightCollection . getMaxScrollLeft ( ) : this . bottomRightCollection . getScrollLeft ( ) > 0 } , _shouldHandleY : function ( a ) { return a > 0 ? this . bottomRightCollection . getScrollTop ( ) < this . bottomRightCollection . getMaxScrollTop ( ) : this . bottomRightCollection . getScrollTop ( ) > 0 } , _onWheelLeft : function ( a , b ) { var c = this , d = this . bottomLeftCollection . getScrollTop ( ) , e = this . bottomLeftCollection . getScrollLeft ( ) ; d += b , e += a , this . bottomLeftCollection . setScrollTop ( d ) , this . bottomRightCollection . setScrollTop ( d ) , this . topLeftCollection . setScrollLeft ( e ) , this . bottomLeftCollection . setScrollLeft ( e ) , c . _populateScrollbar ( ) , this . fireEvent ( BI . Table . EVENT _TABLE _SCROLL , arguments ) } , _onWheelRight : function ( a , b ) { var c = this , d = this . bottomRightCollection . getScrollTop ( ) , e = this . bottomRightCollection . getScrollLeft ( ) ; d += b , e += a , this . bottomLeftCollection . setScrollTop ( d ) , this . bottomRightCollection . setScrollTop ( d ) , this . topRightCollection . setScrollLeft ( e ) , this . bottomRightCollection . setScrollLeft ( e ) , c . _populateScrollbar ( ) , this . fireEvent ( BI . Table . EVENT _TABLE _SCROLL , arguments ) } , _populateTable : function ( ) { var a = this . options , b = this . getRegionSize ( ) , c = 0 , d = 0 , e = 0 , f = [ ] ; BI . each ( a . columnSize , function ( b , g ) { a . isNeedFreeze === ! 0 && a . freezeCols . contains ( b ) ? c += g : d += g , e += g , 0 === b ? f [ b ] = g : f [ b ] = f [ b - 1 ] + g } ) ; var g = b , h = this . _getFreezeHeaderHeight ( ) , i = this . _width - b , j = this . _getFreezeHeaderHeight ( ) , k = b , l = this . _height - h , m = this . _width - b , n = this . _height - j ; this . topLeft . setWidth ( g ) , this . topLeft . setHeight ( h ) , this . topRight . setWidth ( i ) , this . topRight . setHeight ( j ) , this . bottomLeft . setWidth ( k ) , this . bottomLeft . setHeight ( l ) , this . bottomRight . setWidth ( m ) , this . bottomRight . setHeight ( n ) , this . topLeftCollection . setWidth ( g ) , this . topLeftCollection . setHeight ( h ) , this . topRightCollection . setWidth ( i ) , this . topRightCollection . setHeight ( j ) , this . bottomLeftCollection . setWidth ( k ) , this . bottomLeftCollection . setHeight ( l ) , this . bottomRightCollection . setWidth ( m ) , this . bottomRightCollection . setHeight ( n ) ; var o = this . contextLayout . attr ( "items" ) ; o [ 1 ] . left = b , o [ 2 ] . top = this . _getFreezeHeaderHeight ( ) , o [ 3 ] . left = b , o [ 3 ] . top = this . _getFreezeHeaderHeight ( ) , this . contextLayout . attr ( "items" , o ) , this . contextLayout . resize ( ) ; var p = [ ] , q = [ ] , r = [ ] , s = [ ] , t = function ( a , b , c ) { BI . each ( a , function ( a , d ) { var e = { type : "bi.collection_table_cell" , cell : b [ d . row ] [ d . col ] } ; c . push ( e ) } ) } ; t ( this . topLeftItems , a . header , p ) , t ( this . topRightItems , a . header , q ) , t ( this . bottomLeftItems , this . _getActualItems ( ) , r ) , t ( this . bottomRightItems , this . _getActualItems ( ) , s ) , this . topLeftCollection . populate ( p ) , this . topRightCollection . populate ( q ) , this . bottomLeftCollection . populate ( r ) , this . bottomRightCollection . populate ( s ) } } ) , BI . shortcut ( "bi.quick_collection_table" , BI . QuickCollectionTable ) , BI . GridTableCell = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . GridTableCell . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-grid-table-cell bi-border-right bi-border-bottom" , width : 0 , height : 0 , _rowIndex : 0 , _columnIndex : 0 , _left : 0 , _top : 0 , cell : { } } ) } , _init : function ( ) { BI . GridTableCell . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . cell = BI . createWidget ( BI . extend ( { type : "bi.label" } , a . cell , { cls : ( a . cell . cls || "" ) + "grid-table-cell-wrapper" , width : a . width - ( 0 === a . _columnIndex ? 1 : 0 ) - 1 , height : a . height - ( 0 === a . _rowIndex ? 1 : 0 ) - 1 } ) ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . cell , left : 0 , right : 0 , top : 0 , bottom : 0 } ] } ) } , setWidth : function ( a ) { BI . GridTableCell . superclass . setWidth . apply ( this , arguments ) ; var b = this . options ; this . ce
width : "100%" , height : "100%" , scrollable : ! c || null , scrollx : c , items : [ h ] } ) , this . topLeft = BI . createWidget ( { type : "bi.adaptive" , cls : "top-left" , scrollable : ! 1 , items : [ this . scrollTopLeft ] } ) , this . topRight = BI . createWidget ( { type : "bi.adaptive" , cls : "top-right" , scrollable : ! 1 , items : [ this . scrollTopRight ] } ) , this . bottomLeft = BI . createWidget ( { type : "bi.adaptive" , cls : "bottom-left" , items : [ this . scrollBottomLeft ] } ) , this . bottomRight = BI . createWidget ( { type : "bi.adaptive" , cls : "bottom-right" , scrollable : ! 1 , items : [ this . scrollBottomRight ] } ) ; var i = b . header . length * ( ( b . headerRowSize || b . rowSize ) + 1 ) + 1 , j = BI . sum ( b . freezeCols , function ( a , c ) { return b . columnSize [ c ] > 1 ? b . columnSize [ c ] + 1 : b . columnSize [ c ] } ) ; this . _resize = function ( ) { a . scrollBottomLeft . element . is ( ":visible" ) && ( a . scrollBottomLeft . element . css ( { "overflow-x" : "auto" } ) , a . scrollBottomRight . element . css ( { "overflow-x" : "auto" } ) , a . setColumnSize ( b . columnSize ) , c ? a . scrollBottomLeft . element . css ( { "overflow-y" : "auto" } ) : a . scrollBottomRight . element . css ( { "overflow-y" : "auto" } ) , ( a . scrollBottomLeft . element . hasHorizonScroll ( ) || a . scrollBottomRight . element . hasHorizonScroll ( ) ) && ( a . scrollBottomLeft . element . css ( "overflow-x" , "scroll" ) , a . scrollBottomRight . element . css ( "overflow-x" , "scroll" ) ) , a . scrollBottomRight . element . hasVerticalScroll ( ) ? a . scrollTopRight . element . css ( "overflow-y" , "scroll" ) : a . scrollTopRight . element . css ( "overflow-y" , "hidden" ) , a . scrollBottomLeft . element . hasVerticalScroll ( ) ? a . scrollTopLeft . element . css ( "overflow-y" , "scroll" ) : a . scrollTopLeft . element . css ( "overflow-y" , "hidden" ) , a . scrollTopLeft . element [ 0 ] . scrollLeft = a . scrollBottomLeft . element [ 0 ] . scrollLeft , a . scrollTopRight . element [ 0 ] . scrollLeft = a . scrollBottomRight . element [ 0 ] . scrollLeft , a . scrollBottomLeft . element [ 0 ] . scrollTop = a . scrollBottomRight . element [ 0 ] . scrollTop ) } ; var k = b . regionColumnSize ; 0 === b . freezeCols . length ? k = c ? [ "fill" , 0 ] : [ 0 , "fill" ] : b . freezeCols . length >= b . columnSize . length && ( k = c ? [ 0 , "fill" ] : [ "fill" , 0 ] ) , this . partitions = BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "table" , BI . extend ( { } , b . logic , { rows : 2 , columns : 2 , columnSize : k || ( c ? [ "fill" , j ] : [ j , "fill" ] ) , rowSize : [ i , "fill" ] , items : [ [ { el : this . topLeft } , { el : this . topRight } ] , [ { el : this . bottomLeft } , { el : this . bottomRight } ] ] } ) ) ) ) , this . _initFreezeScroll ( ) , BI . ResizeDetector . addResizeListener ( this , function ( ) { a . _resize ( ) , a . fireEvent ( BI . Table . EVENT _TABLE _RESIZE ) } ) } , mounted : function ( ) { this . _resize && this . _resize ( ) , this . fireEvent ( BI . Table . EVENT _TABLE _AFTER _INIT ) } , _initFreezeScroll : function ( ) { function a ( a , c , d ) { a . scroll ( function ( e ) { d . scrollTop ( a . scrollTop ( ) ) , c . scrollLeft ( a . scrollLeft ( ) ) , b . fireEvent ( BI . Table . EVENT _TABLE _SCROLL ) } ) } var b = this ; this . options ; a ( this . scrollBottomRight . element , this . scrollTopRight . element , this . scrollBottomLeft . element ) } , resize : function ( ) { this . _resize && this . _resize ( ) } , _createCells : function ( a , b , c , d , e , f , g ) { var h = this , i = this . options , j = { } , k = { } , l = { } , m = { } , n = { } ; b = b || i . columnSize , c = c || i . mergeCols , d = d || { } , e = e || { } , f = f || 0 , g || ( g = i . rowSize ) ; var o = document . createDocumentFragment ( ) ; return BI . each ( a , function ( a , p ) { function q ( a , b ) { var c = ( 0 | j [ b ] . attr ( "height" ) ) + g + 1 ; j [ b ] . attr ( "height" , c ) . css ( "height" , c ) ; var f = ( 0 | ( j [ b ] . attr ( "rowspan" ) || 1 ) ) + 1 ; j [ b ] . attr ( "rowspan" , f ) , j [ b ] . _ _mergeRows . pushDistinct ( a ) , d [ a ] [ b ] = j [ b ] , e [ a ] [ b ] = m [ b ] } function r ( a , c ) { if ( b [ c ] ) { var f = 0 | k [ a ] . attr ( "width" ) ; f > 1.05 && b [ c ] ? ( f = f + b [ c ] + 1 , c === b . length - 1 && f -- ) : f += b [ c ] , f = h . _calculateWidth ( f ) , k [ a ] . attr ( "width" , f ) . css ( "width" , f ) , l [ a ] . element . width ( f ) } var g = ( 0 | ( k [ a ] . attr ( "colspan" ) || 1 ) ) + 1 ; k [ a ] . attr ( "colspan" , g ) , k [ a ] . _ _mergeCols . pushDistinct ( c ) , d [ a ] [ c ] = k [ a ] , e [ a ] [ c ] = l [ a ] } function s ( a , c ) { var i = h . _calculateWidth ( b [ c ] ) ; i > 1.05 && c === b . length - 1 && i -- ; var o = h . _calculateHeight ( g ) , q = $ ( "<td>" ) . attr ( "height" , o ) . attr ( "width" , i ) . css ( { width : i , height : o , position : "relative" } ) . addClass ( 0 === ( 1 & c ) ? "odd-col" : "even-col" ) . addClass ( 0 === a ? "first-row" : "" ) . addClass ( 0 === c ? "first-col" : "" ) . addClass ( c === p . length - 1 ? "last-col" : "" ) , r = BI . createWidget ( n [ a ] [ c ] , { type : "bi.table_cell" , textAlign : "left" , width : BI . isNumeric ( i ) ? i : "" , height : BI . isNumeric ( o ) ? o : "" , _row : a , _col : c + f } ) ; h . addWidget ( r . getName ( ) , r ) , r . _mount ( ) , r . element . css ( "position" , "relative" ) , q . append ( r . element ) , t . append ( q ) , j [ c ] = q , j [ c ] . _ _mergeRows = [ a ] , m [ c ] = r , k [ a ] = q ,
b && ( this . options . header = b , this . options . isNeedResize && ( b = this . _formatHeader ( b ) ) ) , this . table . populate ( a , b ) , this . _populate ( ) } } ) , BI . shortcut ( "bi.resizable_table" , BI . ResizableTable ) , BI . CustomTree = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . CustomTree . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-custom-tree" , expander : { el : { } , popup : { type : "bi.custom_tree" } } , items : [ ] , itemsCreator : BI . emptyFn , el : { type : "bi.button_tree" , chooseType : 0 , layouts : [ { type : "bi.vertical" } ] } } ) } , _init : function ( ) { BI . CustomTree . superclass . _init . apply ( this , arguments ) , this . initTree ( this . options . items ) } , _formatItems : function ( a ) { var b = this , c = this . options ; a = BI . Tree . transformToTreeFormat ( a ) ; var d = [ ] ; return BI . each ( a , function ( a , e ) { if ( BI . isNotEmptyArray ( e . children ) || e . isParent === ! 0 ) { var f = BI . extend ( { type : "bi.expander" , el : { value : e . value } , popup : { type : "bi.custom_tree" } } , BI . deepClone ( c . expander ) , { id : e . id , pId : e . pId } ) , g = BI . stripEL ( e ) ; BI . isWidget ( g ) ? f . el = g : ( g = BI . clone ( g ) , delete g . children , BI . extend ( f . el , g ) ) , f . popup . expander = BI . deepClone ( c . expander ) , f . items = f . popup . items = e . children , f . itemsCreator = f . popup . itemsCreator = function ( a ) { if ( BI . isNotNull ( a . node ) ) return c . itemsCreator . apply ( b , arguments ) ; var d = Array . prototype . slice . call ( arguments , 0 ) ; return d [ 0 ] . node = e , c . itemsCreator . apply ( b , d ) } , BI . isNull ( f . popup . el ) && ( f . popup . el = BI . deepClone ( c . el ) ) , d . push ( f ) } else d . push ( e ) } ) , d } , initTree : function ( a ) { var b = this , c = this . options ; this . tree = BI . createWidget ( c . el , { element : this , items : this . _formatItems ( a ) , itemsCreator : function ( a , d ) { c . itemsCreator . apply ( this , [ a , function ( a ) { var c = Array . prototype . slice . call ( arguments , 0 ) ; c [ 0 ] = b . _formatItems ( a ) , d . apply ( null , c ) } ] ) } , value : c . value } ) , this . tree . on ( BI . Controller . EVENT _CHANGE , function ( a , c , d ) { b . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , a === BI . Events . CLICK && b . fireEvent ( BI . CustomTree . EVENT _CHANGE , c , d ) } ) } , stroke : function ( a ) { this . populate . apply ( this , arguments ) } , populate : function ( a ) { var b = Array . prototype . slice . call ( arguments , 0 ) ; arguments . length > 0 && ( b [ 0 ] = this . _formatItems ( a ) ) , this . tree . populate . apply ( this . tree , b ) } , setValue : function ( a ) { this . tree && this . tree . setValue ( a ) } , getValue : function ( ) { return this . tree ? this . tree . getValue ( ) : [ ] } , getAllButtons : function ( ) { return this . tree ? this . tree . getAllButtons ( ) : [ ] } , getAllLeaves : function ( ) { return this . tree ? this . tree . getAllLeaves ( ) : [ ] } , getNodeById : function ( a ) { return this . tree && this . tree . getNodeById ( a ) } , getNodeByValue : function ( a ) { return this . tree && this . tree . getNodeByValue ( a ) } , empty : function ( ) { this . tree . empty ( ) } } ) , BI . CustomTree . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.custom_tree" , BI . CustomTree ) , function ( $ ) { var settings = { } , roots = { } , caches = { } , _consts = { className : { BUTTON : "button" , LEVEL : "level" , ICO _LOADING : "ico_loading" , SWITCH : "switch" } , event : { NODECREATED : "ztree_nodeCreated" , CLICK : "ztree_click" , EXPAND : "ztree_expand" , COLLAPSE : "ztree_collapse" , ASYNC _SUCCESS : "ztree_async_success" , ASYNC _ERROR : "ztree_async_error" , REMOVE : "ztree_remove" , SELECTED : "ztree_selected" , UNSELECTED : "ztree_unselected" } , id : { A : "_a" , ICON : "_ico" , SPAN : "_span" , SWITCH : "_switch" , UL : "_ul" } , line : { ROOT : "root" , ROOTS : "roots" , CENTER : "center" , BOTTOM : "bottom" , NOLINE : "noline" , LINE : "line" } , folder : { OPEN : "open" , CLOSE : "close" , DOCU : "docu" } , node : { CURSELECTED : "curSelectedNode" } } , _setting = { treeId : "" , treeObj : null , view : { addDiyDom : null , autoCancelSelected : ! 0 , dblClickExpand : ! 0 , expandSpeed : "fast" , fontCss : { } , nameIsHTML : ! 1 , selectedMulti : ! 0 , showIcon : ! 0 , showLine : ! 0 , showTitle : ! 0 , txtSelectedEnable : ! 1 } , data : { key : { children : "children" , name : "name" , title : "" , url : "url" } , simpleData : { enable : ! 1 , idKey : "id" , pIdKey : "pId" , rootPId : null } , keep : { parent : ! 1 , leaf : ! 1 } } , async : { enable : ! 1 , contentType : "application/x-www-form-urlencoded" , type : "post" , dataType : "text" , url : "" , autoParam : [ ] , otherParam : [ ] , dataFilter : null } , callback : { beforeAsync : null , beforeClick : null , beforeDblClick : null , beforeRightClick : null , beforeMouseDown : null , beforeMouseUp : null , beforeExpand : null , beforeCollapse : null , beforeRemove : null , onAsyncError : null , onAsyncSuccess : null , onNodeCreated : null , onClick : null , onDblClick : null , onRightClick : null , onMouseDown : null , onMouseUp : null , onExpand : null , onCollapse : null , onRemove : null } } , _initRoot = function ( a
if ( f && ! b && 0 == tools . apply ( d . callback . beforeCollapse , [ d . treeId , a ] , ! 0 ) ) return null ; if ( b && a . parentTId && view . expandCollapseParentNode ( d , a . getParentNode ( ) , b , ! 1 ) , b === a . open && ! c ) return null ; if ( data . getRoot ( d ) . expandTriggerFlag = f , ! tools . canAsync ( d , a ) && c ) view . expandCollapseSonNode ( d , a , b , ! 0 , function ( ) { if ( e !== ! 1 ) try { $$ ( a , d ) . focus ( ) . blur ( ) } catch ( b ) { } } ) ; else if ( a . open = ! b , view . switchNode ( this . setting , a ) , e !== ! 1 ) try { $$ ( a , d ) . focus ( ) . blur ( ) } catch ( g ) { } return b } , getNodes : function ( ) { return data . getNodes ( d ) } , getNodeByParam : function ( a , b , c ) { return a ? data . getNodeByParam ( d , c ? c [ d . data . key . children ] : data . getNodes ( d ) , a , b ) : null } , getNodeByTId : function ( a ) { return data . getNodeCache ( d , a ) } , getNodesByParam : function ( a , b , c ) { return a ? data . getNodesByParam ( d , c ? c [ d . data . key . children ] : data . getNodes ( d ) , a , b ) : null } , getNodesByParamFuzzy : function ( a , b , c ) { return a ? data . getNodesByParamFuzzy ( d , c ? c [ d . data . key . children ] : data . getNodes ( d ) , a , b ) : null } , getNodesByFilter : function ( a , b , c , e ) { return b = ! ! b , a && "function" == typeof a ? data . getNodesByFilter ( d , c ? c [ d . data . key . children ] : data . getNodes ( d ) , a , b , e ) : b ? null : [ ] } , getNodeIndex : function ( a ) { if ( ! a ) return null ; for ( var b = d . data . key . children , c = a . parentTId ? a . getParentNode ( ) : data . getRoot ( d ) , e = 0 , f = c [ b ] . length ; e < f ; e ++ ) if ( c [ b ] [ e ] == a ) return e ; return - 1 } , getSelectedNodes : function ( ) { for ( var a = [ ] , b = data . getRoot ( d ) . curSelectedList , c = 0 , e = b . length ; c < e ; c ++ ) a . push ( b [ c ] ) ; return a } , isSelectedNode : function ( a ) { return data . isSelectedNode ( d , a ) } , reAsyncChildNodes : function ( a , b , c ) { if ( this . setting . async . enable ) { var e = ! a ; if ( e && ( a = data . getRoot ( d ) ) , "refresh" == b ) { for ( var f = this . setting . data . key . children , g = 0 , h = a [ f ] ? a [ f ] . length : 0 ; g < h ; g ++ ) data . removeNodeCache ( d , a [ f ] [ g ] ) ; if ( data . removeSelectedNode ( d ) , a [ f ] = [ ] , e ) this . setting . treeObj . empty ( ) ; else { var i = $$ ( a , consts . id . UL , d ) ; i . empty ( ) } } view . asyncNode ( this . setting , e ? null : a , ! ! c ) } } , refresh : function ( ) { this . setting . treeObj . empty ( ) ; var a = data . getRoot ( d ) , b = a [ d . data . key . children ] ; data . initRoot ( d ) , a [ d . data . key . children ] = b , data . initCache ( d ) , view . createNodes ( d , 0 , a [ d . data . key . children ] ) } , removeChildNodes : function ( a ) { if ( ! a ) return null ; var b = d . data . key . children , c = a [ b ] ; return view . removeChildNodes ( d , a ) , c ? c : null } , removeNode : function ( a , b ) { a && ( b = ! ! b , b && 0 == tools . apply ( d . callback . beforeRemove , [ d . treeId , a ] , ! 0 ) || ( view . removeNode ( d , a ) , b && this . setting . treeObj . trigger ( consts . event . REMOVE , [ d . treeId , a ] ) ) ) } , selectNode : function ( a , b ) { if ( a && tools . uCanDo ( d ) ) { if ( b = d . view . selectedMulti && b , a . parentTId ) view . expandCollapseParentNode ( d , a . getParentNode ( ) , ! 0 , ! 1 , function ( ) { try { $$ ( a , d ) . focus ( ) . blur ( ) } catch ( b ) { } } ) ; else try { $$ ( a , d ) . focus ( ) . blur ( ) } catch ( c ) { } view . selectNode ( d , a , b ) } } , transformTozTreeNodes : function ( a ) { return data . transformTozTreeFormat ( d , a ) } , transformToArray : function ( a ) { return data . transformToArrayFormat ( d , a ) } , updateNode : function ( a , b ) { if ( a ) { var c = $$ ( a , d ) ; c . get ( 0 ) && tools . uCanDo ( d ) && ( view . setNodeName ( d , a ) , view . setNodeTarget ( d , a ) , view . setNodeUrl ( d , a ) , view . setNodeLineIcos ( d , a ) , view . setNodeFontCss ( d , a ) ) } } } ; return e . treeTools = g , data . setZTreeTools ( d , g ) , e [ f ] && e [ f ] . length > 0 ? view . createNodes ( d , 0 , e [ f ] ) : d . async . enable && d . async . url && "" !== d . async . url && view . asyncNode ( d ) , g } } ; var zt = $ . fn . zTree , $$ = tools . $ , consts = zt . consts } ( jQuery ) , function ( a ) { var b = { event : { CHECK : "ztree_check" } , id : { CHECK : "_check" } , checkbox : { STYLE : "checkbox" , DEFAULT : "chk" , DISABLED : "disable" , FALSE : "false" , TRUE : "true" , FULL : "full" , PART : "part" , FOCUS : "focus" } , radio : { STYLE : "radio" , TYPE _ALL : "all" , TYPE _LEVEL : "level" } } , c = { check : { enable : ! 1 , autoCheckTrigger : ! 1 , chkStyle : b . checkbox . STYLE , nocheckInherit : ! 1 , chkDisabledInherit : ! 1 , radioType : b . radio . TYPE _LEVEL , chkboxType : { Y : "ps" , N : "ps" } } , data : { key : { checked : "checked" } } , callback : { beforeCheck : null , onCheck : null } } , d = function ( a ) { var b = v . getRoot ( a ) ; b . radioCheckedList = [ ] } , e = function ( a ) { } , f = function ( a ) { var b = a . treeObj , c = t . event ; b . bind ( c . CHECK , function ( b , c , d , e ) { b . srcEvent = c , s . apply ( a . callback . onCheck , [ b , d , e ] ) } ) } , g = function ( a ) { var b = a . treeObj , c = t . event ; b . unbind ( c . CHECK ) } , h = function ( a ) { var b = a . target , c = v . getSetting ( a . data . treeId ) , d = "" , e = null , f = "" , g = "" , h = null , i = null ; if ( s . eqs ( a . type , "mouseover" ) ? c . check . enable && s . eqs ( b . tagName , "span" ) && null !== b . getAttribute ( "treeNode" + t . id . CHECK ) && ( d = s . getNodeMai
a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) ; var c = BI . LogicFactory . createLogicTypeByDirection ( BI . Direction . Left ) , d = BI . LogicFactory . createLogicItemsByDirection ( BI . Direction . Left , { width : 24 , el : this . checkbox } , this . text ) ; BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( c , BI . extend ( b . logic , { items : d } ) ) ) ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . PlusGroupNode . superclass . doClick . apply ( this , arguments ) , this . checkbox . setSelected ( this . isSelected ( ) ) } , setOpened : function ( a ) { BI . PlusGroupNode . superclass . setOpened . apply ( this , arguments ) , this . checkbox && this . checkbox . setSelected ( a ) } } ) , BI . shortcut ( "bi.plus_group_node" , BI . PlusGroupNode ) , BI . Switch = BI . inherit ( BI . BasicButton , { props : { extraCls : "bi-switch" , height : 22 , width : 44 , logic : { dynamic : ! 1 } } , render : function ( ) { var a = this ; return { type : "bi.absolute" , ref : function ( ) { a . layout = this } , items : [ { el : { type : "bi.text_button" , cls : "circle-button bi-card" } , width : 18 , height : 18 , top : 2 , left : this . options . selected ? 24 : 2 } ] } } , setSelected : function ( a ) { BI . Switch . superclass . setSelected . apply ( this , arguments ) , this . layout . attr ( "items" ) [ 0 ] . left = a ? 24 : 2 , this . layout . resize ( ) } , doClick : function ( ) { BI . Switch . superclass . doClick . apply ( this , arguments ) , this . fireEvent ( BI . Switch . EVENT _CHANGE ) } } ) , BI . Switch . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.switch" , BI . Switch ) , BI . FirstTreeLeafItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . FirstTreeLeafItem . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-first-tree-leaf-item bi-list-item-active" , logic : { dynamic : ! 1 } , id : "" , pId : "" , layer : 0 , height : 24 } ) } , _init : function ( ) { BI . FirstTreeLeafItem . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . checkbox = BI . createWidget ( { type : "bi.checkbox" } ) , this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : b . height , height : b . height , hgap : b . hgap , text : b . text , value : b . value , py : b . py , keyword : b . keyword } ) , this . checkbox . on ( BI . Controller . EVENT _CHANGE , function ( b ) { b === BI . Events . CLICK && a . setSelected ( a . isSelected ( ) ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) ; var c = BI . LogicFactory . createLogicTypeByDirection ( BI . Direction . Left ) , d = BI . LogicFactory . createLogicItemsByDirection ( BI . Direction . Left , 0 === b . layer ? "" : { width : 12 , el : { type : "bi.layout" , cls : "base-line-conn-background" , width : 12 , height : b . height } } , { width : 24 , el : { type : "bi.layout" , cls : "mid-line-conn-background" , width : 24 , height : b . height } } , { el : this . text } ) ; BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( c , BI . extend ( b . logic , { items : d } ) ) ) ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doHighLight : function ( ) { this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } , getId : function ( ) { return this . options . id } , getPId : function ( ) { return this . options . pId } , doClick : function ( ) { BI . FirstTreeLeafItem . superclass . doClick . apply ( this , arguments ) , this . checkbox . setSelected ( this . isSelected ( ) ) } , setSelected : function ( a ) { BI . FirstTreeLeafItem . superclass . setSelected . apply ( this , arguments ) , this . checkbox . setSelected ( a ) } } ) , BI . shortcut ( "bi.first_tree_leaf_item" , BI . FirstTreeLeafItem ) , BI . IconTreeLeafItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . IconTreeLeafItem . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-icon-tree-leaf-item bi-list-item-active" , logic : { dynamic : ! 1 } , height : 24 , iconWidth : 16 , iconHeight : 16 , iconCls : "" } ) } , _init : function ( ) { BI . IconTreeLeafItem . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = BI . createWidget ( { type : "bi.center_adapt" , width : 24 , cls : a . iconCls , items : [ { type : "bi.icon" , width : a . iconWidth , height : a . iconHeight } ] } ) ; this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : a . height , height : a . height , hgap : a . hgap , text : a . text , value : a . value , py : a . py } ) ; var c = BI . LogicFactory . createLogicTypeByDirection ( BI . Direction . Left ) , d = BI . LogicFactory . createLogicItemsByDirection ( BI . Direction .
var c = a . extend ( { path : "ZeroClipboard.swf" , copy : null , beforeCopy : null , afterCopy : null , clickAfter : ! 0 , setHandCursor : ! 0 , setCSSEffects : ! 0 } , b ) ; return this . each ( function ( ) { var b = a ( this ) ; if ( b . is ( ":visible" ) && ( "string" == typeof c . copy || a . isFunction ( c . copy ) ) ) { ZeroClipboard . setMoviePath ( c . path ) ; var d = new ZeroClipboard . Client ; a . isFunction ( c . copy ) && b . bind ( "zClip_copy" , c . copy ) , a . isFunction ( c . beforeCopy ) && b . bind ( "zClip_beforeCopy" , c . beforeCopy ) , a . isFunction ( c . afterCopy ) && b . bind ( "zClip_afterCopy" , c . afterCopy ) , d . setHandCursor ( c . setHandCursor ) , d . setCSSEffects ( c . setCSSEffects ) , d . addEventListener ( "mouseOver" , function ( a ) { b . trigger ( "mouseenter" ) } ) , d . addEventListener ( "mouseOut" , function ( a ) { b . trigger ( "mouseleave" ) } ) , d . addEventListener ( "mouseDown" , function ( e ) { b . trigger ( "mousedown" ) , a . isFunction ( c . copy ) ? d . setText ( b . triggerHandler ( "zClip_copy" ) ) : d . setText ( c . copy ) , a . isFunction ( c . beforeCopy ) && b . trigger ( "zClip_beforeCopy" ) } ) , d . addEventListener ( "complete" , function ( d , e ) { a . isFunction ( c . afterCopy ) ? b . trigger ( "zClip_afterCopy" ) : ( e . length > 500 && ( e = e . substr ( 0 , 500 ) + "...\n\n(" + ( e . length - 500 ) + " characters not shown)" ) , b . removeClass ( "hover" ) , alert ( "Copied text to clipboard:\n\n " + e ) ) , c . clickAfter && b . trigger ( "click" ) } ) , d . glue ( b [ 0 ] , b . parent ( ) [ 0 ] ) , a ( window ) . bind ( "load resize" , function ( ) { d . reposition ( ) } ) } } ) } if ( "string" == typeof b ) return this . each ( function ( ) { var c = a ( this ) ; b = b . toLowerCase ( ) ; var d = c . data ( "zclipId" ) , e = a ( "#" + d + ".zclip" ) ; "remove" == b ? ( e . remove ( ) , c . removeClass ( "active hover" ) ) : "hide" == b ? ( e . hide ( ) , c . removeClass ( "active hover" ) ) : "show" == b && e . show ( ) } ) } } ( jQuery ) ; var ZeroClipboard = { version : "1.0.7" , clients : { } , moviePath : "ZeroClipboard.swf" , nextId : 1 , $ : function ( a ) { return "string" == typeof a && ( a = document . getElementById ( a ) ) , a . addClass || ( a . hide = function ( ) { this . style . display = "none" } , a . show = function ( ) { this . style . display = "" } , a . addClass = function ( a ) { this . removeClass ( a ) , this . className += " " + a } , a . removeClass = function ( a ) { for ( var b = this . className . split ( /\s+/ ) , c = - 1 , d = 0 ; d < b . length ; d ++ ) b [ d ] == a && ( c = d , d = b . length ) ; return c > - 1 && ( b . splice ( c , 1 ) , this . className = b . join ( " " ) ) , this } , a . hasClass = function ( a ) { return ! ! this . className . match ( new RegExp ( "\\s*" + a + "\\s*" ) ) } ) , a } , setMoviePath : function ( a ) { this . moviePath = a } , dispatch : function ( a , b , c ) { var d = this . clients [ a ] ; d && d . receiveEvent ( b , c ) } , register : function ( a , b ) { this . clients [ a ] = b } , getDOMObjectPosition : function ( a , b ) { var c = { left : 0 , top : 0 , width : a . width ? a . width : a . offsetWidth , height : a . height ? a . height : a . offsetHeight } ; return a && a != b && ( c . left += a . offsetLeft , c . top += a . offsetTop ) , c } , Client : function ( a ) { this . handlers = { } , this . id = ZeroClipboard . nextId ++ , this . movieId = "ZeroClipboardMovie_" + this . id , ZeroClipboard . register ( this . id , this ) , a && this . glue ( a ) } } ; ZeroClipboard . Client . prototype = { id : 0 , ready : ! 1 , movie : null , clipText : "" , handCursorEnabled : ! 0 , cssEffects : ! 0 , handlers : null , glue : function ( a , b , c ) { this . domElement = ZeroClipboard . $ ( a ) ; var d = 99 ; this . domElement . style . zIndex && ( d = parseInt ( this . domElement . style . zIndex , 10 ) + 1 ) , "string" == typeof b ? b = ZeroClipboard . $ ( b ) : "undefined" == typeof b && ( b = document . getElementsByTagName ( "body" ) [ 0 ] ) ; var e = ZeroClipboard . getDOMObjectPosition ( this . domElement , b ) ; this . div = document . createElement ( "div" ) , this . div . className = "zclip" , this . div . id = "zclip-" + this . movieId , $ ( this . domElement ) . data ( "zclipId" , "zclip-" + this . movieId ) ; var f = this . div . style ; if ( f . position = "absolute" , f . left = "" + e . left + "px" , f . top = "" + e . top + "px" , f . width = "" + e . width + "px" , f . height = "" + e . height + "px" , f . zIndex = d , "object" == typeof c ) for ( addedStyle in c ) f [ addedStyle ] = c [ addedStyle ] ; b . appendChild ( this . div ) , this . div . innerHTML = this . getHTML ( e . width , e . height ) } , getHTML : function ( a , b ) { var c = "" , d = "id=" + this . id + "&width=" + a + "&height=" + b ; if ( navigator . userAgent . match ( /MSIE/ ) ) { var e = location . href . match ( /^https/i ) ? "https://" : "http://" ; c += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="' + e + 'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="' + a + '" height="' + b + '" id="' + this . movieId + '" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="' + ZeroClipboard . moviePath + ' " /><param name=" loop " value=" false " /
} ) , $ ( ".sl-marker" , d ) . css ( { left : Math . round ( c . square * ( . 5 - c . hsl [ 1 ] ) + c . width / 2 ) + "px" , top : Math . round ( c . square * ( . 5 - c . hsl [ 2 ] ) + c . width / 2 ) + "px" } ) , $ ( ".color" , d ) . css ( "backgroundColor" , c . pack ( c . HSLToRGB ( [ c . hsl [ 0 ] , 1 , . 5 ] ) ) ) , "object" == typeof c . callback ? ( $ ( c . callback ) . css ( { backgroundColor : c . color , color : c . hsl [ 2 ] > . 5 ? "#000" : "#fff" } ) , $ ( c . callback ) . each ( function ( ) { this . value && this . value != c . color && ( this . value = c . color ) } ) ) : "function" == typeof c . callback && c . callback . call ( c , c . color ) } , c . absolutePosition = function ( a ) { var b = { x : a . offsetLeft , y : a . offsetTop } ; if ( a . offsetParent ) { var d = c . absolutePosition ( a . offsetParent ) ; b . x += d . x , b . y += d . y } return b } , c . pack = function ( a ) { var b = Math . round ( 255 * a [ 0 ] ) , c = Math . round ( 255 * a [ 1 ] ) , d = Math . round ( 255 * a [ 2 ] ) ; return "#" + ( b < 16 ? "0" : "" ) + b . toString ( 16 ) + ( c < 16 ? "0" : "" ) + c . toString ( 16 ) + ( d < 16 ? "0" : "" ) + d . toString ( 16 ) } , c . unpack = function ( a ) { return 7 == a . length ? [ parseInt ( "0x" + a . substring ( 1 , 3 ) ) / 255 , parseInt ( "0x" + a . substring ( 3 , 5 ) ) / 255 , parseInt ( "0x" + a . substring ( 5 , 7 ) ) / 255 ] : 4 == a . length ? [ parseInt ( "0x" + a . substring ( 1 , 2 ) ) / 15 , parseInt ( "0x" + a . substring ( 2 , 3 ) ) / 15 , parseInt ( "0x" + a . substring ( 3 , 4 ) ) / 15 ] : void 0 } , c . HSLToRGB = function ( a ) { var b , c , d = a [ 0 ] , e = a [ 1 ] , f = a [ 2 ] ; return c = f <= . 5 ? f * ( e + 1 ) : f + e - f * e , b = 2 * f - c , [ this . hueToRGB ( b , c , d + . 33333 ) , this . hueToRGB ( b , c , d ) , this . hueToRGB ( b , c , d - . 33333 ) ] } , c . hueToRGB = function ( a , b , c ) { return c = c < 0 ? c + 1 : c > 1 ? c - 1 : c , 6 * c < 1 ? a + ( b - a ) * c * 6 : 2 * c < 1 ? b : 3 * c < 2 ? a + ( b - a ) * ( . 66666 - c ) * 6 : a } , c . RGBToHSL = function ( a ) { var b , c , d , e , f , g , h = a [ 0 ] , i = a [ 1 ] , j = a [ 2 ] ; return b = Math . min ( h , Math . min ( i , j ) ) , c = Math . max ( h , Math . max ( i , j ) ) , d = c - b , g = ( b + c ) / 2 , f = 0 , g > 0 && g < 1 && ( f = d / ( g < . 5 ? 2 * g : 2 - 2 * g ) ) , e = 0 , d > 0 && ( c == h && c != i && ( e += ( i - j ) / d ) , c == i && c != j && ( e += 2 + ( j - h ) / d ) , c == j && c != h && ( e += 4 + ( h - i ) / d ) , e /= 6 ) , [ e , f , g ] } , $ ( "*" , d ) . click ( c . click ) , c . setColor ( "#000000" ) , b && c . linkTo ( b ) } , BI . BubbleCombo = BI . inherit ( BI . Widget , { _const : { TRIANGLE _LENGTH : 6 } , _defaultConfig : function ( ) { return BI . extend ( BI . BubbleCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-bubble-combo" , trigger : "click" , toggle : ! 0 , direction : "bottom" , isDefaultInit : ! 1 , destroyWhenHide : ! 1 , isNeedAdjustHeight : ! 0 , isNeedAdjustWidth : ! 0 , stopPropagation : ! 1 , adjustLength : 0 , hideChecker : BI . emptyFn , offsetStyle : "left" , el : { } , popup : { } } ) } , _init : function ( ) { BI . BubbleCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . combo = BI . createWidget ( { type : "bi.combo" , element : this , trigger : b . trigger , toggle : b . toggle , container : b . container , direction : b . direction , isDefaultInit : b . isDefaultInit , destroyWhenHide : b . destroyWhenHide , isNeedAdjustHeight : b . isNeedAdjustHeight , isNeedAdjustWidth : b . isNeedAdjustWidth , adjustLength : this . _getAdjustLength ( ) , stopPropagation : b . stopPropagation , adjustXOffset : 0 , adjustYOffset : 0 , hideChecker : b . hideChecker , offsetStyle : b . offsetStyle , el : b . el , popup : BI . extend ( { type : "bi.bubble_popup_view" } , b . popup ) } ) , this . combo . on ( BI . Combo . EVENT _TRIGGER _CHANGE , function ( ) { a . fireEvent ( BI . BubbleCombo . EVENT _TRIGGER _CHANGE , arguments ) } ) , this . combo . on ( BI . Combo . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . BubbleCombo . EVENT _CHANGE , arguments ) } ) , this . combo . on ( BI . Combo . EVENT _EXPAND , function ( ) { a . fireEvent ( BI . BubbleCombo . EVENT _EXPAND , arguments ) } ) , this . combo . on ( BI . Combo . EVENT _COLLAPSE , function ( ) { 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
a . valueMap [ d . value ] = { value : c . el . value , childValue : d . value } } ) : a . valueMap [ c . value ] = { value : c . value } } ) } , _digest : function ( a ) { return this . valueMap [ a ] } , setValue : function ( a ) { a = this . _digest ( a ) , this . combo . setValue ( [ a ] ) , this . trigger . setValue ( a ) } , getValue : function ( ) { var a = this . combo . getValue ( ) [ 0 ] ; return [ a . childValue || a . value ] } , populate : function ( a ) { this . options . items = BI . flatten ( a ) , this . combo . populate ( a ) , this . _createValueMap ( ) } } ) , BI . TextValueDownListCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.text_value_down_list_combo" , BI . TextValueDownListCombo ) , BI . DownListSelectTextTrigger = BI . inherit ( BI . Trigger , { _defaultConfig : function ( ) { return BI . extend ( BI . DownListSelectTextTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-down-list-select-text-trigger" , height : 24 , text : "" } ) } , _init : function ( ) { BI . DownListSelectTextTrigger . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . trigger = BI . createWidget ( { type : "bi.select_text_trigger" , element : this , height : a . height , items : this . _formatItemArray ( a . items ) , text : a . text , value : BI . isNull ( a . value ) ? "" : a . value . childValue || a . value . value } ) } , _formatItemArray : function ( ) { var a = BI . flatten ( BI . deepClone ( this . options . items ) ) , b = [ ] ; return BI . each ( a , function ( a , c ) { BI . has ( c , "el" ) ? ( BI . each ( c . children , function ( a , b ) { b . text = c . el . text + "(" + b . text + ")" } ) , b = BI . concat ( b , c . children ) ) : b . push ( c ) } ) , b } , setValue : function ( a ) { this . trigger . setValue ( a . childValue || a . value ) } , populate : function ( a ) { this . trigger . populate ( this . _formatItemArray ( a ) ) } } ) , BI . shortcut ( "bi.down_list_select_text_trigger" , BI . DownListSelectTextTrigger ) , BI . ClearEditor = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var a = BI . ClearEditor . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : "bi-clear-editor" , height : 24 , errorText : "" , watermark : "" , validationChecker : BI . emptyFn , quitChecker : BI . emptyFn } ) } , _init : function ( ) { BI . ClearEditor . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . editor = BI . createWidget ( { type : "bi.editor" , height : b . height , watermark : b . watermark , allowBlank : ! 0 , errorText : b . errorText , validationChecker : b . validationChecker , quitChecker : b . quitChecker , value : b . value } ) , this . clear = BI . createWidget ( { type : "bi.icon_button" , stopEvent : ! 0 , cls : "search-close-h-font" } ) , this . clear . on ( BI . IconButton . EVENT _CHANGE , function ( ) { a . setValue ( "" ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . STOPEDIT ) , a . fireEvent ( BI . ClearEditor . EVENT _CLEAR ) } ) , BI . createWidget ( { element : this , type : "bi.htape" , items : [ { el : this . editor } , { el : this . clear , width : 24 } ] } ) , 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 . ClearEditor . EVENT _FOCUS ) } ) , this . editor . on ( BI . Editor . EVENT _BLUR , function ( ) { a . fireEvent ( BI . ClearEditor . EVENT _BLUR ) } ) , this . editor . on ( BI . Editor . EVENT _CLICK , function ( ) { a . fireEvent ( BI . ClearEditor . EVENT _CLICK ) } ) , this . editor . on ( BI . Editor . EVENT _CHANGE , function ( ) { a . _checkClear ( ) , a . fireEvent ( BI . ClearEditor . EVENT _CHANGE ) } ) , this . editor . on ( BI . Editor . EVENT _KEY _DOWN , function ( b ) { a . fireEvent ( BI . ClearEditor . EVENT _KEY _DOWN , b ) } ) , this . editor . on ( BI . Editor . EVENT _SPACE , function ( ) { a . fireEvent ( BI . ClearEditor . EVENT _SPACE ) } ) , this . editor . on ( BI . Editor . EVENT _BACKSPACE , function ( ) { a . fireEvent ( BI . ClearEditor . EVENT _BACKSPACE ) } ) , this . editor . on ( BI . Editor . EVENT _VALID , function ( ) { a . fireEvent ( BI . ClearEditor . EVENT _VALID ) } ) , this . editor . on ( BI . Editor . EVENT _ERROR , function ( ) { a . fireEvent ( BI . ClearEditor . EVENT _ERROR ) } ) , this . editor . on ( BI . Editor . EVENT _ENTER , function ( ) { a . fireEvent ( BI . ClearEditor . EVENT _ENTER ) } ) , this . editor . on ( BI . Editor . EVENT _RESTRICT , function ( ) { a . fireEvent ( BI . ClearEditor . EVENT _RESTRICT ) } ) , this . editor . on ( BI . Editor . EVENT _EMPTY , function ( ) { a . _checkClear ( ) , a . fireEvent ( BI . ClearEditor . EVENT _EMPTY ) } ) , this . editor . on ( BI . Editor . EVENT _REMOVE , function ( ) { a . fireEvent ( BI . ClearEditor . EVENT _REMOVE ) } ) , this . editor . on ( BI . Editor . EVENT _CONFIRM , function ( ) { a . fireEvent ( BI . ClearEditor . EVENT _CONFIRM ) } ) , this . editor . on ( BI . Editor . EVENT _START , function ( ) { a . fireEvent ( BI . ClearEditor . EVENT _START ) } ) , this . editor . on ( BI . Editor . EVENT _PAUSE , function ( ) { a . fireEvent ( BI . ClearEditor . EVENT _PAUSE ) } ) , this . editor . on ( BI . Edit
times : 1 } , function ( ) { if ( 0 === arguments . length ) throw new Error ( "参数不能为空" ) ; b . populate . apply ( b , arguments ) } ] ) : ( BI . ListPane . superclass . populate . apply ( this , arguments ) , void this . button _group . populate . apply ( this . button _group , arguments ) ) } , empty : function ( ) { this . button _group . empty ( ) } , setNotSelectedValue : function ( ) { this . button _group . setNotSelectedValue . apply ( this . button _group , arguments ) } , getNotSelectedValue : function ( ) { return this . button _group . getNotSelectedValue ( ) } , setValue : function ( ) { this . button _group . setValue . apply ( this . button _group , arguments ) } , getValue : function ( ) { return this . button _group . getValue . apply ( this . button _group , arguments ) } , getAllButtons : function ( ) { return this . button _group . getAllButtons ( ) } , getAllLeaves : function ( ) { return this . button _group . getAllLeaves ( ) } , getSelectedButtons : function ( ) { return this . button _group . getSelectedButtons ( ) } , getNotSelectedButtons : function ( ) { return this . button _group . getNotSelectedButtons ( ) } , getIndexByValue : function ( a ) { return this . button _group . getIndexByValue ( a ) } , getNodeById : function ( a ) { return this . button _group . getNodeById ( a ) } , getNodeByValue : function ( a ) { return this . button _group . getNodeByValue ( a ) } } ) , BI . ListPane . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.list_pane" , BI . ListPane ) , BI . Panel = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . Panel . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-panel bi-border" , title : "" , titleButtons : [ ] , el : { } , logic : { dynamic : ! 1 } } ) } , _init : function ( ) { BI . Panel . superclass . _init . apply ( this , arguments ) ; var a = this . options ; BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "vertical" , BI . extend ( a . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "top" , this . _createTitle ( ) , this . options . el ) } ) ) ) ) } , _createTitle : function ( ) { var a = this , b = this . options ; return this . text = BI . createWidget ( { type : "bi.label" , cls : "panel-title-text" , text : b . title , height : 30 } ) , this . button _group = BI . createWidget ( { type : "bi.button_group" , items : b . titleButtons , layouts : [ { type : "bi.center_adapt" , lgap : 10 } ] } ) , this . button _group . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . button _group . on ( BI . ButtonGroup . EVENT _CHANGE , function ( b , c ) { a . fireEvent ( BI . Panel . EVENT _CHANGE , b , c ) } ) , { el : { type : "bi.left_right_vertical_adapt" , cls : "panel-title bi-border-bottom" , height : 29 , items : { left : [ this . text ] , right : [ this . button _group ] } , lhgap : 10 , rhgap : 10 } , height : 29 } } , setTitle : function ( a ) { this . text . setValue ( a ) } } ) , BI . Panel . EVENT _CHANGE = "Panel.EVENT_CHANGE" , BI . shortcut ( "bi.panel" , BI . Panel ) , BI . LinearSegmentButton = BI . inherit ( BI . BasicButton , { props : { extraCls : "bi-line-segment-button bi-list-item-effect" , once : ! 0 , readonly : ! 0 , hgap : 10 , height : 25 } , render : function ( ) { var a = this , b = this . options ; return [ { type : "bi.label" , text : b . text , height : b . height , value : b . value , hgap : b . hgap , ref : function ( ) { a . text = this } } , { type : "bi.absolute" , items : [ { el : { type : "bi.layout" , cls : "line-segment-button-line" , height : 2 , ref : function ( ) { a . line = this } } , left : 0 , right : 0 , bottom : 0 } ] } ] } , setSelected : function ( a ) { BI . LinearSegmentButton . superclass . setSelected . apply ( this , arguments ) , a ? this . line . element . addClass ( "bi-high-light-background" ) : this . line . element . removeClass ( "bi-high-light-background" ) } , setText : function ( a ) { this . text . setText ( a ) } } ) , BI . shortcut ( "bi.linear_segment_button" , BI . LinearSegmentButton ) , BI . LinearSegment = BI . inherit ( BI . Widget , { props : { baseCls : "bi-linear-segment bi-border-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 . superclas
BI . AdaptiveTable . superclass . setWidth . apply ( this , arguments ) , this . table . setWidth ( a ) } , setHeight : function ( a ) { BI . AdaptiveTable . superclass . setHeight . apply ( this , arguments ) , this . table . setHeight ( a ) } , setColumnSize : function ( a ) { this . options . columnSize = a } , getColumnSize : function ( ) { return this . table . getColumnSize ( ) } , setRegionColumnSize : function ( a ) { this . options . regionColumnSize = a } , getRegionColumnSize : function ( ) { return this . table . getRegionColumnSize ( ) } , setVerticalScroll : function ( a ) { this . table . setVerticalScroll ( a ) } , setLeftHorizontalScroll : function ( a ) { this . table . setLeftHorizontalScroll ( a ) } , setRightHorizontalScroll : function ( a ) { this . table . setRightHorizontalScroll ( a ) } , getVerticalScroll : function ( ) { return this . table . getVerticalScroll ( ) } , getLeftHorizontalScroll : function ( ) { return this . table . getLeftHorizontalScroll ( ) } , getRightHorizontalScroll : function ( ) { return this . table . getRightHorizontalScroll ( ) } , attr : function ( a , b ) { var c = BI . AdaptiveTable . superclass . attr . apply ( this , arguments ) ; return "freezeCols" === a ? c : this . table . attr . apply ( this . table , arguments ) } , restore : function ( ) { this . table . restore ( ) } , populate : function ( a ) { this . options ; this . _populate ( ) , this . table . populate . apply ( this . table , arguments ) } , destroy : function ( ) { this . table . destroy ( ) , BI . AdaptiveTable . superclass . destroy . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.adaptive_table" , BI . AdaptiveTable ) , BI . DynamicSummaryLayerTreeTable = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . DynamicSummaryLayerTreeTable . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-dynamic-summary-layer-tree-table" , el : { type : "bi.resizable_table" } , isNeedResize : ! 0 , isResizeAdapt : ! 0 , isNeedFreeze : ! 1 , freezeCols : [ ] , isNeedMerge : ! 0 , mergeCols : [ ] , mergeRule : BI . emptyFn , columnSize : [ ] , minColumnSize : [ ] , maxColumnSize : [ ] , headerRowSize : 25 , footerRowSize : 25 , rowSize : 25 , regionColumnSize : [ ] , rowHeaderCreator : null , headerCellStyleGetter : BI . emptyFn , summaryCellStyleGetter : BI . emptyFn , sequenceCellStyleGetter : BI . emptyFn , header : [ ] , footer : ! 1 , items : [ ] , crossHeader : [ ] , crossItems : [ ] } ) } , _getVDeep : function ( ) { return this . options . crossHeader . length } , _getHDeep : function ( ) { var a = this . options ; return Math . max ( a . mergeCols . length , a . freezeCols . length , BI . TableTree . maxDeep ( a . items ) - 1 ) } , _createHeader : function ( a ) { var b = this . options , c = b . header || [ ] , d = b . crossHeader || [ ] , e = BI . TableTree . formatCrossItems ( b . crossItems , a , b . headerCellStyleGetter ) , f = [ ] ; BI . each ( e , function ( a , b ) { var c = [ d [ a ] ] ; f . push ( c . concat ( b || [ ] ) ) } ) ; var g = BI . isFunction ( b . rowHeaderCreator ) ? b . rowHeaderCreator ( ) : b . rowHeaderCreator ; if ( c && c . length > 0 ) { var h = this . _formatColumns ( c ) , i = this . _getHDeep ( ) ; i <= 0 ? h . unshift ( g || { type : "bi.table_style_cell" , text : BI . i18nText ( "BI-Row_Header" ) , styleGetter : b . headerCellStyleGetter } ) : h [ 0 ] = g || { type : "bi.table_style_cell" , text : BI . i18nText ( "BI-Row_Header" ) , styleGetter : b . headerCellStyleGetter } , f . push ( h ) } return f } , _formatItems : function ( a , b , c ) { function d ( a , b ) { a . type || ( a . type = "bi.layer_tree_table_cell" ) , a . layer = b ; var c = [ a ] ; c = c . concat ( a . values || [ ] ) , c . length > 0 && f . push ( c ) , BI . isNotEmptyArray ( a . children ) && BI . each ( a . children , function ( a , c ) { d ( c , b + 1 ) } ) } var e = this . options , f = [ ] ; return BI . each ( a , function ( a , b ) { if ( BI . each ( b . children , function ( a , b ) { d ( b , 0 ) } ) , BI . isArray ( b . values ) ) { var c = [ { type : "bi.table_style_cell" , text : BI . i18nText ( "BI-Summary_Values" ) , styleGetter : function ( ) { return e . summaryCellStyleGetter ( ! 0 ) } } ] . concat ( b . values ) ; f . push ( c ) } } ) , BI . DynamicSummaryTreeTable . formatSummaryItems ( f , b , e . crossItems , 1 ) } , _formatColumns : function ( a , b ) { return BI . isNotEmptyArray ( a ) ? ( b = b || this . _getHDeep ( ) , a . slice ( Math . max ( 0 , b - 1 ) ) ) : a } , _formatFreezeCols : function ( ) { return this . options . freezeCols . length > 0 ? [ 0 ] : [ ] } , _formatColumnSize : function ( a , b ) { if ( a . length <= 0 ) return [ ] ; var c = [ 0 ] ; return b = b || this . _getHDeep ( ) , BI . each ( a , function ( a , d ) { return a < b ? void ( c [ 0 ] += d ) : void c . push ( d ) } ) , c } , _recomputeColumnSize : function ( ) { var a = this . options ; a . regionColumnSize = this . table . getRegionColumnSize ( ) ; var b = this . table . getColumnSize ( ) . slice ( ) ; if ( a . freezeCols . length > 1 ) for ( var c = 0 ; c < a . freezeCols . length - 1 ; c ++ ) b . splice ( 1 , 0 , 0 ) ; a . columnSize = b } , _digest : function ( ) { var a = this . options , b = this . _getHDeep ( ) , c = this . _getVDeep ( ) , d = this . _createHeader ( c ) , e = this . _formatItems ( a . it
var e = j [ a ] = b [ c . id ] ; d += "M" + ( e . y + g . centerOffset ) + "," + e . x + "L" + i + "," + e . x } ) , j . length > 0 && ( d += "M" + i + "," + BI . first ( j ) . x + "L" + i + "," + BI . last ( j ) . x ) , f . svg . path ( d ) . attr ( "stroke" , "#d4dadd" ) } } ) } ) ; break ; case BI . Direction . Right : BI . each ( a , function ( a , c ) { BI . each ( c , function ( a , c ) { if ( c . getChildrenLength ( ) > 0 && ! c . leaf ) { var d = "" , h = b [ c . id ] , i = h . y - e / 2 ; d += "M" + ( h . y - g . centerOffset ) + "," + h . x + "L" + i + "," + h . x ; var j = [ ] ; BI . each ( c . getChildren ( ) , function ( a , c ) { var e = j [ a ] = b [ c . id ] ; d += "M" + ( e . y - g . centerOffset ) + "," + e . x + "L" + i + "," + e . x } ) , j . length > 0 && ( d += "M" + i + "," + BI . first ( j ) . x + "L" + i + "," + BI . last ( j ) . x ) , f . svg . path ( d ) . attr ( "stroke" , "#d4dadd" ) } } ) } ) } } , _createBranches : function ( a ) { var b = this . options ; b . direction !== BI . Direction . Bottom && b . direction !== BI . Direction . Right || ( a = a . reverse ( ) ) ; var c = this . _calculateXY ( a ) ; this . _stroke ( a , c ) } , _isNeedAdjust : function ( ) { var a = this . options ; return a . direction === BI . Direction . Top && a . align === BI . VerticalAlign . Bottom || a . direction === BI . Direction . Bottom && a . align === BI . VerticalAlign . Top || a . direction === BI . Direction . Left && a . align === BI . HorizontalAlign . Right || a . direction === BI . Direction . Right && a . align === BI . HorizontalAlign . Left } , setValue : function ( a ) { } , getValue : function ( ) { } , populate : function ( a ) { var b = this . options ; b . items = a || [ ] , this . empty ( ) , a = BI . Tree . transformToTreeFormat ( b . items ) , this . tree = new BI . Tree , this . tree . initTree ( a ) , this . svg = BI . createWidget ( { type : "bi.svg" } ) ; var c = this . _stratification ( ) ; if ( this . _isNeedAdjust ( ) ) { var d = this . _translate ( c ) ; d = this . _adjust ( d ) , this . _createBranches ( d ) } else { var d = this . _fill ( c ) ; this . _createBranches ( d ) } var e = BI . createWidget ( { type : "bi.layout" , width : this . _isVertical ( ) ? this . _calculateWidth ( ) : this . _calculateHeight ( ) , height : this . _isVertical ( ) ? this . _calculateHeight ( ) : this . _calculateWidth ( ) } ) ; BI . createWidget ( { type : "bi.absolute" , element : e , items : [ { el : this . svg , top : 0 , left : 0 , right : 0 , bottom : 0 } ] } ) , a = this . _isVertical ( ) ? [ { type : "bi.handstand_branch_tree" , expander : { direction : b . direction } , el : { layouts : [ { type : "bi.horizontal_adapt" , verticalAlign : b . align } ] } , items : a } ] : [ { type : "bi.branch_tree" , expander : { direction : b . direction } , el : { layouts : [ { type : "bi.vertical" } , { type : b . align === BI . HorizontalAlign . Left ? "bi.left" : "bi.right" } ] } , items : a } ] , BI . createWidget ( { type : "bi.adaptive" , element : e , items : a } ) , BI . createWidget ( { type : "bi.center_adapt" , scrollable : ! 0 , element : this , items : [ e ] } ) } } ) , BI . BranchRelation . EVENT _CHANGE = "BranchRelation.EVENT_CHANGE" , BI . shortcut ( "bi.branch_relation" , BI . BranchRelation ) , BI . HandStandBranchExpander = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . HandStandBranchExpander . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-handstand-branch-expander" , direction : BI . Direction . Top , logic : { dynamic : ! 0 } , el : { type : "bi.label" } , popup : { } } ) } , _init : function ( ) { BI . HandStandBranchExpander . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . _initExpander ( ) , this . _initBranchView ( ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( BI . LogicFactory . createLogicTypeByDirection ( a . direction ) , BI . extend ( { } , a . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( a . direction , { type : "bi.center_adapt" , items : [ this . expander ] } , this . branchView ) } ) ) ) ) } , _initExpander : function ( ) { var a = this , b = this . options ; this . expander = BI . createWidget ( b . el ) , this . expander . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) } , _initBranchView : function ( ) { var a = this , b = this . options ; this . branchView = BI . createWidget ( b . popup , { } ) , this . branchView . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) } , populate : function ( a ) { this . branchView . populate . apply ( this . branchView , arguments ) } , getValue : function ( ) { return this . branchView . getValue ( ) } } ) , BI . HandStandBranchExpander . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.handstand_branch_expander" , BI . HandStandBranchExpander ) , BI . BranchExpander = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . BranchExpander . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-branch-expander" , direction : BI . Direction . Left , logic : { dynamic : ! 0 } , el : { } , popup : { } } ) } , _init : function ( ) { BI . BranchExpander . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this
year : this . _year , month : this . _month } , this . datePicker = BI . createWidget ( { type : "bi.date_picker" , behaviors : b . behaviors , min : b . min , max : b . max } ) , this . datePicker . on ( BI . DatePicker . EVENT _CHANGE , function ( ) { var b = a . datePicker . getValue ( ) , c = BI . getDate ( b . year , b . month - 1 , 1 ) . getMonthDays ( ) , d = a . selectedTime . day || 0 ; d > c && ( d = c ) , a . selectedTime = { year : b . year , month : b . month } , 0 !== d && ( a . selectedTime . day = d ) , a . calendar . setSelect ( BI . Calendar . getPageByDateJSON ( a . selectedTime ) ) , a . calendar . setValue ( a . selectedTime ) , 0 !== d && a . fireEvent ( BI . DateCalendarPopup . EVENT _CHANGE ) } ) , this . calendar = BI . createWidget ( { direction : "custom" , type : "bi.navigation" , tab : this . datePicker , cardCreator : BI . bind ( this . _createNav , this ) } ) , this . calendar . on ( BI . Navigation . EVENT _CHANGE , function ( ) { a . selectedTime = a . calendar . getValue ( ) , a . calendar . empty ( ) , a . setValue ( a . selectedTime ) , a . fireEvent ( BI . DateCalendarPopup . EVENT _CHANGE ) } ) , this . setValue ( b . selectedTime ) , BI . createWidget ( { type : "bi.vtape" , element : this , items : [ { el : this . datePicker , height : 40 } , this . calendar ] , hgap : 10 } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.layout" , cls : "bi-border-top" } , height : 1 , top : 40 , left : 0 , right : 0 } ] } ) } , _createNav : function ( a ) { var b = BI . Calendar . getDateJSONByPage ( a ) , c = BI . createWidget ( { type : "bi.calendar" , logic : { dynamic : ! 1 } , min : this . options . min , max : this . options . max , year : b . year , month : b . month , day : this . selectedTime . day } ) ; return c } , _getNewCurrentDate : function ( ) { var a = BI . getDate ( ) ; return { year : a . getFullYear ( ) , month : a . getMonth ( ) + 1 } } , _setCalenderValue : function ( a ) { this . calendar . setSelect ( BI . Calendar . getPageByDateJSON ( a ) ) , this . calendar . setValue ( a ) , this . selectedTime = a } , _setDatePicker : function ( a ) { BI . isNull ( a ) || BI . isNull ( a . year ) || BI . isNull ( a . month ) ? this . datePicker . setValue ( this . _getNewCurrentDate ( ) ) : this . datePicker . setValue ( a ) } , _setCalendar : function ( a ) { BI . isNull ( a ) || BI . isNull ( a . day ) ? ( this . calendar . empty ( ) , this . _setCalenderValue ( this . _getNewCurrentDate ( ) ) ) : this . _setCalenderValue ( a ) } , setValue : function ( a ) { this . _setDatePicker ( a ) , this . _setCalendar ( a ) } , getValue : function ( ) { return this . selectedTime } } ) , BI . shortcut ( "bi.static_date_pane_card" , BI . StaticDatePaneCard ) , BI . DynamicDatePane = BI . inherit ( BI . Widget , { props : { baseCls : "bi-dynamic-date-pane" } , render : function ( ) { var a = this , b = this . options ; return { type : "bi.vtape" , items : [ { el : { type : "bi.linear_segment" , cls : "bi-border-bottom" , height : 30 , items : BI . createItems ( [ { text : BI . i18nText ( "BI-Multi_Date_YMD" ) , value : BI . DynamicDatePane . Static } , { text : BI . i18nText ( "BI-Basic_Dynamic_Title" ) , value : BI . DynamicDatePane . Dynamic } ] , { textAlign : "center" } ) , listeners : [ { eventName : BI . ButtonGroup . EVENT _CHANGE , action : function ( ) { var b = this . getValue ( ) [ 0 ] ; switch ( a . dateTab . setSelect ( b ) , b ) { case BI . DynamicDatePane . Static : var c = BI . DynamicDateHelper . getCalculation ( a . dynamicPane . getValue ( ) ) ; a . ymd . setValue ( { year : c . getFullYear ( ) , month : c . getMonth ( ) + 1 , day : c . getDate ( ) } ) ; break ; case BI . DynamicDatePane . Dynamic : a . dynamicPane . setValue ( { year : 0 } ) } } } ] , ref : function ( ) { a . switcher = this } } , height : 30 } , { type : "bi.tab" , ref : function ( ) { a . dateTab = this } , showIndex : BI . DynamicDatePane . Static , cardCreator : function ( c ) { switch ( c ) { case BI . DynamicDatePane . Static : return { type : "bi.static_date_pane_card" , behaviors : b . behaviors , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { a . fireEvent ( "EVENT_CHANGE" ) } } ] , ref : function ( ) { a . ymd = this } } ; case BI . DynamicDatePane . Dynamic : default : return { type : "bi.dynamic_date_card" , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { a . _checkValue ( a . getValue ( ) ) && a . fireEvent ( "EVENT_CHANGE" ) } } ] , ref : function ( ) { a . dynamicPane = this } } } } } ] } } , mounted : function ( ) { this . setValue ( this . options . value ) } , _checkValueValid : function ( a ) { return BI . isNull ( a ) || BI . isEmptyObject ( a ) || BI . isEmptyString ( a ) } , _checkValue : function ( a ) { switch ( a . type ) { case BI . DynamicDateCombo . Dynamic : return BI . isNotEmptyObject ( a . value ) ; case BI . DynamicDateCombo . Static : default : return ! 0 } } , setValue : function ( a ) { a = a || { } ; var b = a . type || BI . DynamicDateCombo . Static , c = a . value || a ; switch ( this . switcher . setValue ( b ) , this . dateTab . setSelect ( b ) , b ) { case BI . DynamicDateCombo . Dynamic : this . dynamicPane . setValue ( c ) ; break ; case BI . DynamicDateCombo . Static : default : if ( this . _checkValueValid ( c ) ) { var d = BI . getDate ( ) ; this . ymd . setValue
action : function ( ) { var b = a . checkgroup . getValue ( ) ; 0 !== b . length && a . workDayBox . setSelected ( ! 1 ) ; var c = { } ; BI . each ( a . resultPane . getAllButtons ( ) , function ( a , b ) { var d = b . getValue ( ) ; BI . isNotNull ( d . dateType ) && ( c [ d . dateType ] = { value : d . value , offset : d . offset } ) } ) , a . resultPane . populate ( a . _getParamJson ( BI . map ( a . checkgroup . getValue ( ) , function ( a , b ) { var d = { dateType : b } ; return BI . has ( c , b ) && ( d . value = c [ b ] . value , d . offset = c [ b ] . offset ) , d } ) ) ) , a . position = BI . DynamicDateCard . OFFSET . CURRENT , a . fireEvent ( "EVENT_CHANGE" ) } } ] } , { type : "bi.vertical_adapt" , lgap : 2 , items : [ { el : { type : "bi.multi_select_item" , ref : function ( ) { a . workDayBox = this } , logic : { dynamic : ! 0 } , text : BI . i18nText ( "BI-Basic_Work_Day" ) , value : BI . DynamicDateCard . TYPE . WORK _DAY , listeners : [ { eventName : BI . MultiSelectItem . EVENT _CHANGE , action : function ( ) { this . isSelected ( ) && a . checkgroup . setValue ( ) , a . resultPane . populate ( this . isSelected ( ) ? a . _getParamJson ( [ { dateType : BI . DynamicDateCard . TYPE . WORK _DAY } ] ) : [ ] ) , a . position = BI . DynamicDateCard . OFFSET . CURRENT , a . fireEvent ( "EVENT_CHANGE" ) } } ] } } ] , ref : function ( ) { a . workDay = this } } , { type : "bi.button_group" , items : this . _getParamJson ( [ { dateType : BI . DynamicDateCard . TYPE . YEAR } ] ) , ref : function ( ) { a . resultPane = this } , layouts : [ { type : "bi.vertical" , bgap : 10 , hgap : 10 } ] } ] } } , _getParamJson : function ( a , b ) { var c = this , d = BI . map ( a , function ( a , b ) { return { el : { type : "bi.dynamic_date_param_item" , dateType : b . dateType , value : b . value , offset : b . offset , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { c . fireEvent ( "EVENT_CHANGE" ) } } ] } , tgap : 0 === a ? 5 : 0 } } ) ; if ( 1 === a . length && a [ 0 ] . dateType === BI . DynamicDateCard . TYPE . DAY ) { var e = this . _getText ( BI . DynamicDateCard . TYPE . MONTH ) ; e [ 0 ] . text = BI . i18nText ( "BI-Basic_Empty" ) , d . push ( { type : "bi.text_value_combo" , height : 24 , items : e , container : null , value : b || BI . DynamicDateCard . OFFSET . CURRENT , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { c . position = this . getValue ( ) [ 0 ] , c . fireEvent ( "EVENT_CHANGE" ) } } ] } ) } else 0 !== a . length && BI . last ( a ) . dateType !== BI . DynamicDateCard . TYPE . DAY && BI . last ( a ) . dateType !== BI . DynamicDateCard . TYPE . WORK _DAY && d . push ( { type : "bi.text_value_combo" , height : 24 , container : null , items : this . _getText ( BI . last ( a ) . dateType ) , value : b || BI . DynamicDateCard . OFFSET . CURRENT , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { c . position = this . getValue ( ) [ 0 ] , c . fireEvent ( "EVENT_CHANGE" ) } } ] } ) ; return d } , _getText : function ( a ) { switch ( a ) { case BI . DynamicDateCard . TYPE . YEAR : return [ { text : BI . i18nText ( "BI-Basic_Current_Day" ) , value : BI . DynamicDateCard . OFFSET . CURRENT } , { text : BI . i18nText ( "BI-Basic_Year_Begin" ) , value : BI . DynamicDateCard . OFFSET . BEGIN } , { text : BI . i18nText ( "BI-Basic_Year_End" ) , value : BI . DynamicDateCard . OFFSET . END } ] ; case BI . DynamicDateCard . TYPE . QUARTER : return [ { text : BI . i18nText ( "BI-Basic_Current_Day" ) , value : BI . DynamicDateCard . OFFSET . CURRENT } , { text : BI . i18nText ( "BI-Basic_Quarter_Begin" ) , value : BI . DynamicDateCard . OFFSET . BEGIN } , { text : BI . i18nText ( "BI-Basic_Quarter_End" ) , value : BI . DynamicDateCard . OFFSET . END } ] ; case BI . DynamicDateCard . TYPE . MONTH : return [ { text : BI . i18nText ( "BI-Basic_Current_Day" ) , value : BI . DynamicDateCard . OFFSET . CURRENT } , { text : BI . i18nText ( "BI-Basic_Month_Begin" ) , value : BI . DynamicDateCard . OFFSET . BEGIN } , { text : BI . i18nText ( "BI-Basic_Month_End" ) , value : BI . DynamicDateCard . OFFSET . END } ] ; case BI . DynamicDateCard . TYPE . WEEK : default : return [ { text : BI . i18nText ( "BI-Basic_Current_Day" ) , value : BI . DynamicDateCard . OFFSET . CURRENT } , { text : BI . i18nText ( "BI-Basic_Week_Begin" ) , value : BI . DynamicDateCard . OFFSET . BEGIN } , { text : BI . i18nText ( "BI-Basic_Week_End" ) , value : BI . DynamicDateCard . OFFSET . END } ] } } , _createValue : function ( a , b ) { return { dateType : a , value : Math . abs ( b ) , offset : b > 0 ? 1 : 0 } } , setValue : function ( a ) { a = a || { } , this . position = a . position || BI . DynamicDateCard . OFFSET . CURRENT ; var b = [ ] , c = [ ] ; BI . isNotNull ( a . year ) && ( b . push ( BI . DynamicDateCard . TYPE . YEAR ) , c . push ( this . _createValue ( BI . DynamicDateCard . TYPE . YEAR , a . year ) ) ) , BI . isNotNull ( a . quarter ) && ( b . push ( BI . DynamicDateCard . TYPE . QUARTER ) , c . push ( this . _createValue ( BI . DynamicDateCard . TYPE . QUARTER , a . quarter ) ) ) , BI . isNotNull ( a . month ) && ( b . push ( BI . DynamicDateCard . TYPE . MONTH ) , c . push ( this . _createValue ( BI . DynamicDateCard . TYPE . MONTH , a . month ) ) ) , BI . isNotNull ( a . week ) && ( b . push ( BI . DynamicDateCard . TYPE . WEEK ) , c . push ( this . _createValue ( BI . DynamicDa
hour : c . hour , minute : c . minute , second : c . second } ) , this . textButton . setValue ( BI . i18nText ( "BI-Multi_Date_Today" ) ) ; this . textButton . setEnable ( ! 0 ) } } , getValue : function ( ) { var a = this . dateTab . getSelect ( ) ; return { type : a , value : a === BI . DynamicDateTimeCombo . Static ? BI . extend ( this . ymd . getValue ( ) , this . timeSelect . getValue ( ) ) : this . dynamicPane . getValue ( ) } } } ) , BI . DynamicDateTimePopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . DynamicDateTimePopup . BUTTON _OK _EVENT _CHANGE = "BUTTON_OK_EVENT_CHANGE" , BI . DynamicDateTimePopup . BUTTON _lABEL _EVENT _CHANGE = "BUTTON_lABEL_EVENT_CHANGE" , BI . DynamicDateTimePopup . BUTTON _CLEAR _EVENT _CHANGE = "BUTTON_CLEAR_EVENT_CHANGE" , BI . shortcut ( "bi.dynamic_date_time_popup" , BI . DynamicDateTimePopup ) , BI . DynamicDateTimeSelect = BI . inherit ( BI . Widget , { props : { baseCls : "bi-date-time-select bi-border-top" } , render : function ( ) { var a = this ; return { type : "bi.center_adapt" , items : [ { type : "bi.vertical_adapt" , items : [ { el : { type : "bi.number_editor" , ref : function ( ) { a . hour = this } , validationChecker : function ( a ) { return BI . isNaturalNumber ( a ) && BI . parseInt ( a ) < 24 } , errorText : function ( a ) { return BI . isNumeric ( a ) ? BI . i18nText ( "BI-Basic_Input_From_To_Number" , '"00-23"' ) : BI . i18nText ( "BI-Numerical_Interval_Input_Data" ) } , listeners : [ { eventName : BI . SignEditor . EVENT _CONFIRM , action : function ( ) { var b = this . getValue ( ) ; a . _checkHour ( b ) , this . setValue ( a . _formatValueToDoubleDigit ( b ) ) , a . fireEvent ( BI . DynamicDateTimeSelect . EVENT _CONFIRM ) } } , { eventName : BI . SignEditor . EVENT _CHANGE , action : function ( ) { var b = a . _autoSwitch ( this . getValue ( ) , BI . DynamicDateTimeSelect . HOUR ) ; this . setValue ( b ) } } ] , width : 60 , height : 24 } , lgap : 14 } , { type : "bi.label" , text : ":" , width : 20 } , { type : "bi.number_editor" , ref : function ( ) { a . minute = this } , validationChecker : function ( a ) { return BI . isNaturalNumber ( a ) && BI . parseInt ( a ) < 60 } , errorText : function ( a ) { return BI . isNumeric ( a ) ? BI . i18nText ( "BI-Basic_Input_From_To_Number" , '"00-59"' ) : BI . i18nText ( "BI-Numerical_Interval_Input_Data" ) } , listeners : [ { eventName : BI . SignEditor . EVENT _CONFIRM , action : function ( ) { var b = this . getValue ( ) ; a . _checkMinute ( b ) , this . setValue ( a . _formatValueToDoubleDigit ( b ) , BI . DynamicDateTimeSelect . MINUTE ) , a . fireEvent ( BI . DynamicDateTimeSelect . EVENT _CONFIRM ) } } , { eventName : BI . SignEditor . EVENT _CHANGE , action : function ( ) { var b = a . _autoSwitch ( this . getValue ( ) , BI . DynamicDateTimeSelect . MINUTE ) ; this . setValue ( b ) } } ] , width : 60 , height : 24 } , { type : "bi.label" , text : ":" , width : 20 } , { type : "bi.number_editor" , ref : function ( ) { a . second = this } , validationChecker : function ( a ) { return BI . isNaturalNumber ( a ) && BI . parseInt ( a ) < 60 } , errorText : function ( a ) { return BI . isNumeric ( a ) ? BI . i18nText ( "BI-Basic_Input_From_To_Number" , '"00-59"' ) : BI . i18nText ( "BI-Numerical_Interval_Input_Data" ) } , listeners : [ { eventName : BI . SignEditor . EVENT _CONFIRM , action : function ( ) { var b = this . getValue ( ) ; a . _checkSecond ( b ) , this . setValue ( a . _formatValueToDoubleDigit ( b ) ) , a . fireEvent ( BI . DynamicDateTimeSelect . EVENT _CONFIRM ) } } ] , width : 60 , height : 24 } ] } ] } } , _checkBorder : function ( a ) { a = a || { } , this . _checkHour ( a . hour ) , this . _checkMinute ( a . minute ) , this . _checkSecond ( a . second ) } , _checkHour : function ( a ) { this . hour . setDownEnable ( BI . parseInt ( a ) > 0 ) , this . hour . setUpEnable ( BI . parseInt ( a ) < 23 ) } , _checkMinute : function ( a ) { this . minute . setDownEnable ( BI . parseInt ( a ) > 0 ) , this . minute . setUpEnable ( BI . parseInt ( a ) < 59 ) } , _checkSecond : function ( a ) { this . second . setDownEnable ( BI . parseInt ( a ) > 0 ) , this . second . setUpEnable ( BI . parseInt ( a ) < 59 ) } , _autoSwitch : function ( a , b ) { var c = 0 , d = a ; switch ( b ) { case BI . DynamicDateTimeSelect . HOUR : c = 2 ; break ; case BI . DynamicDateTimeSelect . MINUTE : c = 5 } return 1 === a . length && BI . parseInt ( a ) > c && ( d = "0" + d ) , 2 === d . length && ( b === BI . DynamicDateTimeSelect . HOUR ? this . minute . focus ( ) : this . second . focus ( ) ) , d } , _formatValueToDoubleDigit : function ( a ) { ( BI . isNull ( a ) || BI . isEmptyString ( a ) ) && ( a = 0 ) ; var b = BI . parseInt ( a ) ; return b < 10 && ( b = "0" + b ) , b } , _assertValue : function ( a ) { return a = a || { } , a . hour = this . _formatValueToDoubleDigit ( a . hour ) || "00" , a . minute = this . _formatValueToDoubleDigit ( a . minute ) || "00" , a . second = this . _formatValueToDoubleDigit ( a . second ) || "00" , a } , getValue : function ( ) { return { hour : BI . parseInt ( this . hour . getValue ( ) ) , minute : BI . parseInt ( this . minute . getValue ( ) ) , second : BI . parseInt ( this . second . getValue ( ) ) } } , setValue : function ( a ) { a = this . _assertValue ( a ) , this . hour . setValue ( a
var g = e + "." + f + d . numDecimal ; return BI . parseFloat ( g ) } , accurateSubtraction : function ( a , b ) { return a >= 0 && b >= 0 ? a >= b ? this . _accurateSubtraction ( a , b ) : - this . _accurateSubtraction ( b , a ) : a >= 0 && b < 0 ? this . _accurateAddition ( a , - b ) : a < 0 && b >= 0 ? - this . _accurateAddition ( - a , b ) : a < 0 && b < 0 ? a >= b ? this . _accurateSubtraction ( - b , - a ) : this . _accurateSubtraction ( - a , - b ) : void 0 } , accurateAddition : function ( a , b ) { return a >= 0 && b >= 0 ? this . _accurateAddition ( a , b ) : a >= 0 && b < 0 ? this . accurateSubtraction ( a , - b ) : a < 0 && b >= 0 ? this . accurateSubtraction ( b , - a ) : a < 0 && b < 0 ? - this . _accurateAddition ( - a , - b ) : void 0 } , accurateMultiplication : function ( a , b ) { return a >= 0 && b >= 0 ? this . _accurateMultiplication ( a , b ) : a >= 0 && b < 0 ? - this . _accurateMultiplication ( a , - b ) : a < 0 && b >= 0 ? - this . _accurateMultiplication ( - a , b ) : a < 0 && b < 0 ? this . _accurateMultiplication ( - a , - b ) : void 0 } , accurateDivisionTenExponent : function ( a , b ) { return a >= 0 ? this . _accurateDivisionTenExponent ( a , b ) : - this . _accurateDivisionTenExponent ( - a , b ) } } ) , BI . MonthCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MonthCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-month-combo" , behaviors : { } , height : 24 } ) } , _init : function ( ) { BI . MonthCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . trigger = BI . createWidget ( { type : "bi.month_trigger" , value : b . value } ) , this . trigger . on ( BI . MonthTrigger . EVENT _CONFIRM , function ( b ) { a . combo . isViewVisible ( ) || ( this . getKey ( ) && this . getKey ( ) !== a . storeValue ? a . setValue ( this . getValue ( ) ) : this . getKey ( ) || a . setValue ( ) , a . fireEvent ( BI . MonthCombo . EVENT _CONFIRM ) ) } ) , this . trigger . on ( BI . MonthTrigger . EVENT _FOCUS , function ( ) { a . storeValue = this . getKey ( ) } ) , this . trigger . on ( BI . MonthTrigger . EVENT _START , function ( ) { a . combo . hideView ( ) } ) , this . trigger . on ( BI . MonthTrigger . EVENT _STOP , function ( ) { a . combo . isViewVisible ( ) || a . combo . showView ( ) } ) , this . popup = BI . createWidget ( { type : "bi.month_popup" , behaviors : b . behaviors , value : b . value } ) , this . popup . on ( BI . MonthPopup . EVENT _CHANGE , function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . combo . hideView ( ) , a . fireEvent ( BI . MonthCombo . EVENT _CONFIRM ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , container : b . container , element : this , isNeedAdjustHeight : ! 1 , isNeedAdjustWidth : ! 1 , el : this . trigger , popup : { minWidth : 85 , el : this . popup } } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { a . fireEvent ( BI . MonthCombo . EVENT _BEFORE _POPUPVIEW ) } ) } , setValue : function ( a ) { this . trigger . setValue ( a ) , this . popup . setValue ( a ) } , getValue : function ( ) { return BI . isNull ( this . popup ) ? this . options . value || "" : this . popup . getValue ( ) || "" } } ) , BI . MonthCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . MonthCombo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . shortcut ( "bi.month_combo" , BI . MonthCombo ) , BI . MonthPopup = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MonthPopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-month-popup" , behaviors : { } } ) } , _init : function ( ) { BI . MonthPopup . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = [ 1 , 7 , 2 , 8 , 3 , 9 , 4 , 10 , 5 , 11 , 6 , 12 ] , d = [ ] ; d . push ( c . slice ( 0 , 2 ) ) , d . push ( c . slice ( 2 , 4 ) ) , d . push ( c . slice ( 4 , 6 ) ) , d . push ( c . slice ( 6 , 8 ) ) , d . push ( c . slice ( 8 , 10 ) ) , d . push ( c . slice ( 10 , 12 ) ) , d = BI . map ( d , function ( a , b ) { return BI . map ( b , function ( a , b ) { return { type : "bi.text_item" , cls : "bi-list-item-active" , textAlign : "center" , whiteSpace : "nowrap" , once : ! 1 , forceSelected : ! 0 , height : 23 , width : 38 , value : b , text : b } } ) } ) , this . month = BI . createWidget ( { type : "bi.button_group" , element : this , behaviors : b . behaviors , items : BI . createItems ( d , { } ) , layouts : [ BI . LogicFactory . createLogic ( "table" , BI . extend ( { dynamic : ! 0 } , { columns : 2 , rows : 6 , columnSize : [ . 5 , . 5 ] , rowSize : 25 } ) ) , { type : "bi.center_adapt" , vgap : 1 , hgap : 2 } ] , value : b . value } ) , this . month . on ( BI . Controller . EVENT _CHANGE , function ( b ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , b === BI . Events . CLICK && a . fireEvent ( BI . MonthPopup . EVENT _CHANGE ) } ) } , getValue : function ( ) { return this . month . getValue ( ) [ 0 ] } , setValue : function ( a ) { a = BI . parseInt ( a ) , this . month . setValue ( [ a ] ) } } ) , BI . MonthPopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.month_popup" , BI . MonthPopup ) , BI . MonthTrigger = BI . inherit ( BI . Trigger , { _const : { hgap : 4 , vgap : 2 } , _defaultConfig : function ( ) { return BI . extend ( BI . MonthTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls
var a = this , b = this . options ; this . node = BI . createWidget ( { type : "bi.mid_plus_group_node" , cls : "bi-list-item-none" , logic : { dynamic : ! 0 } , id : b . id , pId : b . pId , open : b . open , height : b . height , hgap : b . hgap , text : b . text , value : b . value , py : b . py , keyword : b . keyword } ) , this . node . on ( BI . Controller . EVENT _CHANGE , function ( b ) { b !== BI . Events . CLICK && a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) ; var c = [ ] ; BI . count ( 0 , b . layer , function ( ) { c . push ( { type : "bi.layout" , cls : "base-line-conn-background" , width : 12 , height : b . height } ) } ) , c . push ( this . node ) , BI . createWidget ( { type : "bi.td" , element : this , columnSize : BI . makeArray ( b . layer , 12 ) , items : [ c ] } ) } , doRedMark : function ( ) { this . node . doRedMark . apply ( this . node , arguments ) } , unRedMark : function ( ) { this . node . unRedMark . apply ( this . node , arguments ) } , doClick : function ( ) { BI . MultiLayerSingleTreeMidPlusGroupNode . superclass . doClick . apply ( this , arguments ) , this . node . setSelected ( this . isSelected ( ) ) } , setOpened : function ( a ) { BI . MultiLayerSingleTreeMidPlusGroupNode . superclass . setOpened . apply ( this , arguments ) , BI . isNotNull ( this . node ) && this . node . setOpened ( a ) } } ) , BI . shortcut ( "bi.multilayer_single_tree_mid_plus_group_node" , BI . MultiLayerSingleTreeMidPlusGroupNode ) , BI . MultiLayerSingleTreeFirstTreeLeafItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiLayerSingleTreeFirstTreeLeafItem . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-multilayer-single-tree-first-tree-leaf-item bi-list-item-active" , logic : { dynamic : ! 1 } , layer : 0 , id : "" , pId : "" , height : 24 } ) } , _init : function ( ) { BI . MultiLayerSingleTreeFirstTreeLeafItem . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . item = BI . createWidget ( { type : "bi.first_tree_leaf_item" , cls : "bi-list-item-none" , logic : { dynamic : ! 0 } , id : b . id , pId : b . pId , height : b . height , hgap : b . hgap , text : b . text , value : b . value , py : b . py , keyword : b . keyword } ) , this . item . on ( BI . Controller . EVENT _CHANGE , function ( b ) { b !== BI . Events . CLICK && a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) ; var c = [ ] ; BI . count ( 0 , b . layer , function ( ) { c . push ( { type : "bi.layout" , cls : "base-line-conn-background" , width : 12 , height : b . height } ) } ) , c . push ( this . item ) , BI . createWidget ( { type : "bi.td" , element : this , columnSize : BI . makeArray ( b . layer , 12 ) , items : [ c ] } ) } , doHighLight : function ( ) { this . item . doHighLight . apply ( this . item , arguments ) } , unHighLight : function ( ) { this . item . unHighLight . apply ( this . item , arguments ) } , getId : function ( ) { return this . options . id } , getPId : function ( ) { return this . options . pId } , doClick : function ( ) { BI . MultiLayerSingleTreeFirstTreeLeafItem . superclass . doClick . apply ( this , arguments ) , this . item . setSelected ( this . isSelected ( ) ) } , setSelected : function ( a ) { BI . MultiLayerSingleTreeFirstTreeLeafItem . superclass . setSelected . apply ( this , arguments ) , this . item . setSelected ( a ) } } ) , BI . shortcut ( "bi.multilayer_single_tree_first_tree_leaf_item" , BI . MultiLayerSingleTreeFirstTreeLeafItem ) , BI . MultiLayerSingleTreeLastTreeLeafItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiLayerSingleTreeLastTreeLeafItem . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-multilayer-single-tree-last-tree-leaf-item bi-list-item-active" , logic : { dynamic : ! 1 } , layer : 0 , id : "" , pId : "" , height : 24 } ) } , _init : function ( ) { BI . MultiLayerSingleTreeLastTreeLeafItem . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . item = BI . createWidget ( { type : "bi.last_tree_leaf_item" , cls : "bi-list-item-none" , logic : { dynamic : ! 0 } , id : b . id , pId : b . pId , height : b . height , hgap : b . hgap , text : b . text , value : b . value , py : b . py , keyword : b . keyword } ) , this . item . on ( BI . Controller . EVENT _CHANGE , function ( b ) { b !== BI . Events . CLICK && a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) ; var c = [ ] ; BI . count ( 0 , b . layer , function ( ) { c . push ( { type : "bi.layout" , cls : "base-line-conn-background" , width : 12 , height : b . height } ) } ) , c . push ( this . item ) , BI . createWidget ( { type : "bi.td" , element : this , columnSize : BI . makeArray ( b . layer , 12 ) , items : [ c ] } ) } , doHighLight : function ( ) { this . item . doHighLight . apply ( this . item , arguments ) } , unHighLight : function ( ) { this . item . unHighLight . apply ( this . item , arguments ) } , getId : function ( ) { return this . options . id } , getPId : function ( ) { return this . options . pId } , doClick : function ( ) { BI . MultiLayerSingleTreeLastTreeLeafItem . superclass . doClick . apply ( this ,
} , getValue : function ( ) { return this . searcher . getValue ( ) } } ) , BI . MultiSelectInsertTrigger . EVENT _TRIGGER _CLICK = "EVENT_TRIGGER_CLICK" , BI . MultiSelectInsertTrigger . EVENT _COUNTER _CLICK = "EVENT_COUNTER_CLICK" , BI . MultiSelectInsertTrigger . EVENT _CHANGE = "EVENT_CHANGE" , BI . MultiSelectInsertTrigger . EVENT _START = "EVENT_START" , BI . MultiSelectInsertTrigger . EVENT _STOP = "EVENT_STOP" , BI . MultiSelectInsertTrigger . EVENT _PAUSE = "EVENT_PAUSE" , BI . MultiSelectInsertTrigger . EVENT _SEARCHING = "EVENT_SEARCHING" , BI . MultiSelectInsertTrigger . EVENT _BEFORE _COUNTER _POPUPVIEW = "EVENT_BEFORE_COUNTER_POPUPVIEW" , BI . MultiSelectInsertTrigger . EVENT _ADD _ITEM = "EVENT_ADD_ITEM" , BI . shortcut ( "bi.multi_select_insert_trigger" , BI . MultiSelectInsertTrigger ) , BI . MultiSelectLoader = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectLoader . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-loader" , logic : { dynamic : ! 0 } , el : { height : 400 } , valueFormatter : BI . emptyFn , itemsCreator : BI . emptyFn , onLoaded : BI . emptyFn } ) } , _init : function ( ) { BI . MultiSelectLoader . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = ! 1 ; this . storeValue = b . value || { } , this . _assertValue ( this . storeValue ) , this . button _group = BI . createWidget ( { type : "bi.select_list" , logic : b . logic , el : BI . extend ( { onLoaded : b . onLoaded , 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" } ] } } } , b . el ) , itemsCreator : function ( d , e ) { var f = a . _startValue ; a . storeValue && ( d = BI . extend ( d || { } , { selectedValues : BI . isKey ( f ) && a . storeValue . type === BI . Selection . Multi ? a . storeValue . value . concat ( f ) : a . storeValue . value } ) ) , b . itemsCreator ( d , function ( g ) { c = g . hasNext ; var h = [ ] ; if ( 1 === d . times && a . storeValue ) { var i = BI . map ( a . storeValue . value , function ( c , d ) { var e = b . valueFormatter ( d ) || d ; return { text : e , value : d , title : e , selected : a . storeValue . type === BI . Selection . Multi } } ) ; if ( BI . isKey ( a . _startValue ) && ! a . storeValue . value . contains ( a . _startValue ) ) { var j = b . valueFormatter ( f ) || f ; i . unshift ( { text : j , value : f , title : j , selected : ! 0 } ) } h = a . _createItems ( i ) } e ( h . concat ( a . _createItems ( g . items ) ) , g . keyword || "" ) , 1 === d . times && a . storeValue && ( BI . isKey ( f ) && a . storeValue . value [ a . storeValue . type === BI . Selection . All ? "remove" : "pushDistinct" ] ( f ) , a . setValue ( a . storeValue ) ) , 1 === d . times && a . _scrollToTop ( ) } ) } , hasNext : function ( ) { return c } , value : this . storeValue } ) , BI . createWidget ( { type : "bi.vertical" , element : this , items : [ this . button _group ] , vgap : 5 } ) , 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 . MultiSelectLoader . EVENT _CHANGE , arguments ) } ) } , _createItems : function ( a ) { return BI . createItems ( a , { type : "bi.multi_select_item" , logic : this . options . logic , cls : "bi-list-item-active" , height : 24 , selected : this . isAllSelected ( ) , iconWrapperWidth : 36 } ) } , _scrollToTop : function ( ) { var a = this ; BI . delay ( function ( ) { a . button _group . element . scrollTop ( 0 ) } , 30 ) } , isAllSelected : function ( ) { return this . button _group . isAllSelected ( ) } , _assertValue : function ( a ) { a || ( a = { } ) , a . type || ( a . type = BI . Selection . Multi ) , a . value || ( a . value = [ ] ) } , setStartValue : function ( a ) { this . _startValue = a } , setValue : function ( a ) { this . storeValue = a || { } , this . _assertValue ( this . storeValue ) , this . button _group . setValue ( this . storeValue ) } , getValue : function ( ) { return this . button _group . getValue ( ) } , getAllButtons : function ( ) { return this . button _group . getAllButtons ( ) } , empty : function ( ) { this . button _group . empty ( ) } , populate : function ( a ) { arguments [ 0 ] = this . _createItems ( a ) , this . button _group . populate . apply ( this . button _group , arguments ) } , resetHeight : function ( a ) { this . button _group . resetHeight ( a ) } , resetWidth : function ( a ) { this . button _group . resetWidth ( a ) } } ) , BI . MultiSelectLoader . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multi_select_loader" , BI . MultiSelectLoader ) , BI . MultiSelectNoBarLoader = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectNoBarLoader . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-loader" , logic : { dynamic : ! 0 } , el : { height : 400 } , valueFormatter : BI . emptyFn , itemsCreator : BI . emptyFn , onLo
this . switcher . populate . apply ( this . switcher , arguments ) } } ) , BI . MultiSelectCheckSelectedSwitcher . EVENT _TRIGGER _CHANGE = "MultiSelectCheckSelectedSwitcher.EVENT_TRIGGER_CHANGE" , BI . MultiSelectCheckSelectedSwitcher . EVENT _BEFORE _POPUPVIEW = "MultiSelectCheckSelectedSwitcher.EVENT_BEFORE_POPUPVIEW" , BI . shortcut ( "bi.multi_select_check_selected_switcher" , BI . MultiSelectCheckSelectedSwitcher ) , BI . MultiSelectInsertList = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectInsertList . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-insert-list" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn } ) } , _init : function ( ) { BI . MultiSelectInsertList . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . storeValue = b . value || { } ; var c = function ( ) { BI . isKey ( a . _startValue ) && a . storeValue . value [ a . storeValue . type === BI . Selection . All ? "remove" : "pushDistinct" ] ( a . _startValue ) } ; this . adapter = BI . createWidget ( { type : "bi.multi_select_loader" , cls : "popup-multi-select-list bi-border-left bi-border-right bi-border-bottom" , itemsCreator : b . itemsCreator , valueFormatter : b . valueFormatter , logic : { dynamic : ! 0 } , el : { } , value : b . value } ) , this . adapter . on ( BI . MultiSelectLoader . EVENT _CHANGE , function ( ) { a . storeValue = this . getValue ( ) , c ( ) , a . fireEvent ( BI . MultiSelectInsertList . EVENT _CHANGE ) } ) , this . searcherPane = BI . createWidget ( { type : "bi.multi_select_search_insert_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 ) } , listeners : [ { eventName : BI . MultiSelectSearchInsertPane . EVENT _ADD _ITEM , action : function ( ) { var b = a . trigger . getKeyword ( ) ; a . trigger . hasMatched ( ) || ( a . storeValue . type === BI . Selection . Multi && a . storeValue . value . pushDistinct ( b ) , a . _showAdapter ( ) , a . adapter . setValue ( a . storeValue ) , a . adapter . populate ( ) , a . storeValue . type === BI . Selection . Multi && a . fireEvent ( BI . MultiSelectInsertList . EVENT _CHANGE ) ) } } ] } ) , 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 . storeValue . type === BI . Selection . Multi && a . storeValue . value . pushDistinct ( b ) , a . _showAdapter ( ) , a . adapter . setValue ( a . storeValue ) , a . _setStartValue ( b ) , c ( ) , a . adapter . populate ( ) , a . _setStartValue ( "" ) , a . fireEvent ( BI . MultiSelectInsertList . EVENT _CHANGE ) } ) , a . _showAdapter ( ) } } , { eventName : BI . Searcher . EVENT _SEARCHING , action : function ( ) { var b = this . getKeywords ( ) , 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 ( ) ) } ) } } , { eventName : BI . Searcher . EVENT _CHANGE , action : function ( b , d ) { d instanceof BI . MultiSelectBar ? a . _joinAll ( this . getValue ( ) , function ( ) { c ( ) , a . fireEvent ( BI . MultiSelectInsertList . EVENT _CHANGE ) } ) : a . _join ( this . getValue ( ) , function ( ) { c ( ) , a . fireEvent ( BI . MultiSelectInsertList . EVENT _CHANGE ) } ) } } ] , value : b . value } ) , BI . createWidget ( { type : "bi.vtape" , element : this , items : [ { el : this . trigger , height : 24 } , { el : this . adapter , height : "fill" } ] } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . searcherPane , top : 30 , bottom : 0 , left : 0 , right : 0 } ] } ) } , _showAdapter : function ( ) { this . adapter . setVisible ( ! 0 ) , this . searcherPane . setVisible ( ! 1 ) } , _showSearcherPane : function ( ) { this . searcherPane . setVisible ( ! 0 ) , this . adapter . setVisible ( ! 1 ) } , _defaultState : function ( ) { this . trigger . stopEditing ( ) } , _assertValue : function ( a ) { a || ( a = { } ) , a . type || ( a . type = BI . Selection . Multi ) , a . value || ( a . value = [ ] ) } , _makeMap : function ( a
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 = { } ) , this . setVisible ( BI . size ( a . value ) > 0 ) } } ) , BI . MultiTreeCheckSelectedButton . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multi_tree_check_selected_button" , BI . MultiTreeCheckSelectedButton ) , BI . MultiTreeSearcher = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiTreeSearcher . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-tree-searcher" , itemsCreator : BI . emptyFn , valueFormatter : function ( a ) { return a } , popup : { } , adapter : null , masker : { } } ) } , _init : function ( ) { BI . MultiTreeSearcher . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . editor = BI . createWidget ( { type : "bi.multi_select_editor" , height : b . height , el : { type : "bi.simple_state_editor" , height : b . height } } ) , this . searcher = BI . createWidget ( { type : "bi.searcher" , element : this , isAutoSearch : ! 1 , isAutoSync : ! 1 , onSearch : function ( b , c ) { c ( { keyword : a . editor . getValue ( ) } ) } , el : this . editor , popup : BI . extend ( { type : "bi.multi_tree_search_pane" , keywordGetter : function ( ) { return a . editor . getValue ( ) } , itemsCreator : function ( c , d ) { c . keyword = a . editor . getValue ( ) , b . itemsCreator ( c , d ) } , value : b . value } , b . popup ) , adapter : b . adapter , masker : b . masker } ) , this . searcher . on ( BI . Searcher . EVENT _START , function ( ) { a . fireEvent ( BI . MultiTreeSearcher . EVENT _START ) } ) , this . searcher . on ( BI . Searcher . EVENT _PAUSE , function ( ) { this . hasMatched ( ) , a . fireEvent ( BI . MultiTreeSearcher . EVENT _PAUSE ) } ) , this . searcher . on ( BI . Searcher . EVENT _STOP , function ( ) { a . fireEvent ( BI . MultiTreeSearcher . EVENT _STOP ) } ) , this . searcher . on ( BI . Searcher . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . MultiTreeSearcher . EVENT _CHANGE , arguments ) } ) , BI . isNotNull ( b . value ) && this . setState ( b . value ) } , adjustView : function ( ) { this . searcher . adjustView ( ) } , setAdapter : function ( a ) { this . searcher . setAdapter ( a ) } , isSearching : function ( ) { return this . searcher . isSearching ( ) } , stopSearch : function ( ) { this . searcher . stopSearch ( ) } , getKeyword : function ( ) { return this . editor . getValue ( ) } , hasMatched : function ( ) { return this . searcher . hasMatched ( ) } , hasChecked : function ( ) { return this . searcher . getView ( ) && this . searcher . getView ( ) . hasChecked ( ) } , setState : function ( a ) { function b ( a ) { var e = "" , f = 0 , g = BI . size ( a ) ; return BI . each ( a , function ( a , h ) { f ++ ; var i = b ( h ) ; e += ( c . valueFormatter ( a + "" ) || a ) + ( "" === i ? "" : ":" + i ) + ( f === g ? "" : "," ) , "" === i && d ++ } ) , e } var c = this . options ; a || ( a = { } ) , a . value || ( a . value = { } ) ; var d = 0 ; if ( BI . isNumber ( a ) ) this . editor . setState ( a ) ; else if ( 0 === BI . size ( a . value ) ) this . editor . setState ( BI . Selection . None ) ; else { var e = "" ; BI . each ( a . value , function ( a , f ) { var g = b ( f ) ; e += ( c . valueFormatter ( a + "" ) || a ) + ( "" === g ? "" : ":" + g ) + "; " , "" === g && d ++ } ) , d > 20 ? this . editor . setState ( BI . Selection . Multi ) : this . editor . setState ( e ) } } , setValue : function ( a ) { this . setState ( a ) , this . searcher . setValue ( a ) } , getKey : function ( ) { return this . editor . getValue ( ) } , getValue : function ( ) { return this . searcher . getValue ( ) } , populate : function ( a ) { this . searcher . populate . apply ( this . searcher , arguments ) } } ) , BI . MultiTreeSearcher . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . MultiTreeSearcher . EVENT _CHANGE = "EVENT_CHANGE" , BI . MultiTreeSearcher . EVENT _START = "EVENT_START" , BI . MultiTreeSearcher . EVENT _STOP = "EVENT_STOP" , BI . MultiTreeSearcher . EVENT _PAUSE = "EVENT_PAUSE" , BI . shortcut ( "bi.multi_tree_searcher" , BI . MultiTreeSearcher ) , BI . NumberEditor = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . NumberEditor . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-number-editor bi-border bi-focus-shadow" , validationChecker : function ( ) { return ! 0 } , valueFormatter : function ( a ) { return a } , value : 0 , allowBlank : ! 1 , errorText : "" , step : 1 } ) } , _init : function ( ) { BI . Number
return this . table . getRightHorizontalScroll ( ) } , getColumns : function ( ) { return this . table . getColumns ( ) } , attr : function ( ) { BI . ResponisveTable . superclass . attr . apply ( this , arguments ) , this . table . attr . apply ( this . table , arguments ) } , populate : function ( a ) { var b = this , c = this . options ; this . table . populate . apply ( this . table , arguments ) , c . isNeedFreeze === ! 0 && BI . nextTick ( function ( ) { b . _initRegionSize ( ) , b . table . resize ( ) , b . _resizeHeader ( ) } ) } } ) , BI . shortcut ( "bi.responsive_table" , BI . ResponisveTable ) , BI . SearchMultiTextValueCombo = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . SearchMultiTextValueCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-combo bi-search-multi-text-value-combo" , height : 24 , items : [ ] } ) } , _init : function ( ) { BI . SearchMultiTextValueCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = function ( ) { BI . isKey ( a . _startValue ) && a . storeValue . value [ a . storeValue . type === BI . Selection . All ? "remove" : "pushDistinct" ] ( a . _startValue ) , a . _updateAllValue ( ) , a . _checkError ( ) , a . trigger . getSearcher ( ) . setState ( a . storeValue ) , a . trigger . getCounter ( ) . setButtonChecked ( a . storeValue ) } ; this . storeValue = BI . deepClone ( b . value || { } ) , this . _updateAllValue ( ) , this . _assertValue ( this . storeValue ) , this . _checkError ( ) , this . requesting = ! 1 , this . trigger = BI . createWidget ( { type : "bi.search_multi_select_trigger" , text : b . text , height : b . height , masker : { offset : { left : 0 , top : 0 , right : 0 , bottom : 26 } } , allValueGetter : function ( ) { return a . allValue } , valueFormatter : b . valueFormatter , itemsCreator : function ( b , c ) { a . _itemsCreator ( b , function ( d ) { 1 === b . times && BI . isNotNull ( b . keywords ) && a . trigger . setValue ( BI . deepClone ( a . getValue ( ) ) ) , c . apply ( a , arguments ) } ) } , value : this . storeValue } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _START , function ( ) { a . _setStartValue ( "" ) , this . getSearcher ( ) . setValue ( a . storeValue ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _STOP , function ( ) { a . _setStartValue ( "" ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _PAUSE , function ( ) { if ( this . getSearcher ( ) . hasMatched ( ) ) { var b = this . getSearcher ( ) . getKeyword ( ) ; a . _join ( { type : BI . Selection . Multi , value : [ b ] } , function ( ) { a . combo . setValue ( a . storeValue ) , a . _setStartValue ( b ) , c ( ) , a . _populate ( ) , a . _setStartValue ( "" ) } ) } } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _SEARCHING , function ( b ) { var d = BI . last ( b ) ; b = BI . initial ( b || [ ] ) , b . length > 0 && a . _joinKeywords ( b , function ( ) { BI . isEndWithBlank ( d ) ? ( a . combo . setValue ( a . storeValue ) , c ( ) , a . combo . populate ( ) , a . _setStartValue ( "" ) ) : ( a . combo . setValue ( a . storeValue ) , c ( ) ) } ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _CHANGE , function ( b , d ) { d instanceof BI . MultiSelectBar ? a . _joinAll ( this . getValue ( ) , function ( ) { c ( ) } ) : a . _join ( this . getValue ( ) , function ( ) { c ( ) } ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _BEFORE _COUNTER _POPUPVIEW , function ( ) { this . getCounter ( ) . setValue ( a . storeValue ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _COUNTER _CLICK , function ( ) { a . combo . isViewVisible ( ) || a . combo . showView ( ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , toggle : ! 1 , container : b . container , el : this . trigger , adjustLength : 1 , popup : { type : "bi.search_multi_select_popup_view" , ref : function ( ) { a . popup = this , a . trigger . setAdapter ( this ) } , listeners : [ { eventName : BI . MultiSelectPopupView . EVENT _CHANGE , action : function ( ) { a . storeValue = this . getValue ( ) , a . _adjust ( function ( ) { c ( ) } ) } } , { eventName : BI . MultiSelectPopupView . EVENT _CLICK _CONFIRM , action : function ( ) { a . _defaultState ( ) } } , { eventName : BI . MultiSelectPopupView . EVENT _CLICK _CLEAR , action : function ( ) { a . setValue ( ) , a . _defaultState ( ) } } ] , itemsCreator : BI . bind ( a . _itemsCreator , this ) , valueFormatter : b . valueFormatter , onLoaded : function ( ) { BI . nextTick ( function ( ) { a . combo . adjustWidth ( ) , a . combo . adjustHeight ( ) , a . trigger . getCounter ( ) . adjustView ( ) , a . trigger . getSearcher ( ) . adjustView ( ) } ) } } , value : b . value , hideChecker : function ( a ) { return 0 === d . element . find ( a . target ) . length } } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _HIDEVIEW , function ( ) { a . element . removeClass ( "combo-show" ) } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { a . element . removeClass ( "combo-show" ) . addClass ( "combo-show" ) , this . setValue ( a . storeValue ) , BI . nextTick ( function ( ) { a . _populate ( ) } ) } ) , this . wants2Quit = ! 1 , this . combo . on ( BI . Combo . EVENT _AFTER _HIDEVIEW , function ( ) { a . trigger . st
BI . shortcut ( "bi.single_select_search_loader" , BI . SingleSelectSearchLoader ) , BI . SingleSelectSearchPane = BI . inherit ( BI . Widget , { constants : { height : 25 , lgap : 10 , tgap : 5 } , _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectSearchPane . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-select-search-pane bi-card" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , keywordGetter : BI . emptyFn } ) } , _init : function ( ) { BI . SingleSelectSearchPane . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . tooltipClick = BI . createWidget ( { type : "bi.label" , invisible : ! 0 , text : BI . i18nText ( "BI-Click_Blank_To_Select" ) , cls : "multi-select-toolbar" , height : this . constants . height } ) , this . loader = BI . createWidget ( { type : "bi.single_select_search_loader" , keywordGetter : b . keywordGetter , valueFormatter : b . valueFormatter , itemsCreator : function ( c , d ) { b . itemsCreator . apply ( a , [ c , function ( c ) { d ( c ) , a . setKeyword ( b . keywordGetter ( ) ) } ] ) } , value : b . value } ) , this . loader . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . resizer = BI . createWidget ( { type : "bi.vtape" , element : this , items : [ { el : this . tooltipClick , height : 0 } , { el : this . loader } ] } ) , this . tooltipClick . setVisible ( ! 1 ) } , setKeyword : function ( a ) { var b , c = this . loader . getAllButtons ( ) . length > 0 && ( b = this . loader . getAllButtons ( ) [ 0 ] ) && a === b . getValue ( ) ; c !== this . tooltipClick . isVisible ( ) && ( this . tooltipClick . setVisible ( c ) , this . resizer . attr ( "items" ) [ 0 ] . height = c ? this . constants . height : 0 , this . resizer . resize ( ) ) } , hasMatched : function ( ) { return this . tooltipClick . isVisible ( ) } , setValue : function ( a ) { this . loader . setValue ( a ) } , getValue : function ( ) { return this . loader . getValue ( ) } , empty : function ( ) { this . loader . empty ( ) } , populate : function ( a ) { this . loader . populate . apply ( this . loader , arguments ) } } ) , BI . SingleSelectSearchPane . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.single_select_search_pane" , BI . SingleSelectSearchPane ) , BI . SingleSelectCombo = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-select-combo" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , height : 24 , attributes : { tabIndex : 0 } } ) } , _init : function ( ) { BI . SingleSelectCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = function ( ) { BI . isKey ( a . _startValue ) && ( a . storeValue = a . _startValue ) , a . trigger . getSearcher ( ) . setState ( a . storeValue ) } ; this . storeValue = b . value , this . requesting = ! 1 , this . trigger = BI . createWidget ( { type : "bi.single_select_trigger" , height : b . height , valueFormatter : b . valueFormatter , itemsCreator : function ( c , d ) { b . itemsCreator ( c , function ( b ) { 1 === c . times && BI . isNotNull ( c . keywords ) && a . trigger . setValue ( a . getValue ( ) ) , d . apply ( a , arguments ) } ) } , value : this . storeValue } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _START , function ( ) { a . _setStartValue ( ) , this . getSearcher ( ) . setValue ( a . storeValue ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _STOP , function ( ) { a . _setStartValue ( ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _PAUSE , function ( ) { if ( this . getSearcher ( ) . hasMatched ( ) ) { var b = this . getSearcher ( ) . getKeyword ( ) ; a . combo . setValue ( a . storeValue ) , a . _setStartValue ( b ) , c ( ) , a . populate ( ) , a . _setStartValue ( ) } } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _SEARCHING , function ( b ) { var d = BI . last ( b ) ; b = BI . initial ( b || [ ] ) , b . length > 0 && a . _joinKeywords ( b , function ( ) { BI . isEndWithBlank ( d ) ? ( a . combo . setValue ( a . storeValue ) , c ( ) , a . combo . populate ( ) , a . _setStartValue ( ) ) : ( a . combo . setValue ( a . storeValue ) , c ( ) ) } ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _CHANGE , function ( b , d ) { a . storeValue = this . getValue ( ) , c ( ) , a . _defaultState ( ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _COUNTER _CLICK , function ( ) { a . combo . isViewVisible ( ) || a . combo . showView ( ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , container : b . container , toggle : ! 1 , el : this . trigger , adjustLength : 1 , popup : { type : "bi.single_select_popup_view" , ref : function ( ) { a . popup = this , a . trigger . setAdapter ( this ) } , listeners : [ { eventName : BI . SingleSelectPopupView . EVENT _CHANGE , action : function ( ) { a . storeValue = this . getValue ( ) , a . _adjust ( function ( ) { c ( ) , a . _defaultState ( ) } ) } } ] , itemsCreator : b . itemsCreator , valueFormatter : b . valueFormatter , onLoaded : function ( ) { BI . nextTick ( function ( ) { a . co
items : [ { el : { type : "bi.text_button" , forceNotSelected : ! 0 , cls : "slider-button bi-list-item-select3" , ref : function ( ) { a . slider = this } } } ] } } } ) , BI . shortcut ( "bi.single_slider_button" , BI . SliderIconButton ) , BI . SingleSlider = BI . inherit ( BI . Widget , { _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%" } , { el : d , top : 20 , left : 0 , width : "100%" } , { el : { type : "bi.vertical" , items : [ { type : "bi.horizontal_auto" , items : [ this . label ] } ] , height : c . EDITOR _HEIGHT } , top : 0 , left : 0 , width : "100%" } ] } } , _draggable : function ( a ) { function b ( a ) { return BI . clamp ( a , 0 , c . _getGrayTrackLength ( ) ) } var c = this , d = this . options , e = ! 1 , f = 0 , g = 0 , h = 0 , i = new BI . MouseMoveTracker ( function ( j ) { if ( i . isDragging ( ) ) { e = ! 0 , g += j , f = b ( h + g ) , a . element . addClass ( "dragging" ) ; var k = 100 * f / c . _getGrayTrackLength ( ) , l = BI . parseFloat ( k . toFixed ( 1 ) ) ; c . _setBlueTrack ( l ) , c . _setLabelPosition ( l ) , c . _setSliderPosition ( l ) ; var m = c . _getValueByPercent ( l ) ; m = d . digit === ! 1 ? m : m . toFixed ( d . digit ) , c . label . setValue ( m ) , c . value = m , c . fireEvent ( BI . SingleSlider . EVENT _CHANGE ) } } , function ( ) { if ( e === ! 0 ) { f = b ( f ) ; var d = 100 * f / c . _getGrayTrackLength ( ) , j = BI . parseFloat ( d . toFixed ( 1 ) ) ; c . _setSliderPosition ( j ) , f = 0 , g = 0 , h = f , e = ! 1 } a . element . removeClass ( "dragging" ) , i . releaseMouseMoves ( ) , c . fireEvent ( BI . SingleSlider . EVENT _CHANGE ) } , window ) ; a . element . on ( "mousedown" , function ( c ) { a . isEnabled ( ) && ( h = this . offsetLeft , b ( h ) , i . captureMouseMoves ( c ) ) } ) } , _createTrackWrapper : function ( ) { return BI . createWidget ( { type : "bi.absolute" , items : [ { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : this . grayTrack , top : 0 , left : 0 , width : "100%" } , { el : this . blueTrack , top : 0 , left : 0 , width : "0%" } ] } ] , hgap : 8 , height : 8 } , top : 8 , left : 0 , width : "100%" } ] } ) } , _checkValidation : function ( a ) { var b = this . options , c = ! 1 ; if ( BI . isNumeric ( a ) && ! ( BI . isNull ( a ) || a < this . min || a > this . max ) ) if ( b . digit === ! 1 ) c = ! 0 ; else { var d = ( a + "" ) . split ( "." ) [ 1 ] || "" ; c = d . length === b . digit } return c } , _setBlueTrack : function ( a ) { this . blueTrack . element . css ( { width : a + "%" } ) } , _setLabelPosition : function ( a ) { } , _setSliderPosition : function ( a ) { this . slider . element . css ( { left : a + "%" } ) } , _setAllPosition : function ( a ) { this . _setSliderPosition ( a ) , this . _setLabelPosition ( a ) , this . _setBlueTrack ( a ) } , _setVisible : function ( a ) { this . slider . setVisible ( a ) , this . label . setVisible ( a ) } , _getGrayTrackLength
a . combo . hideView ( ) , a . fireEvent ( BI . DynamicDateCombo . EVENT _CONFIRM ) } } ] , behaviors : b . behaviors , min : b . min , max : b . max } , value : b . value || "" } } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { a . popup . setValue ( a . storeValue ) , a . fireEvent ( BI . DynamicYearCombo . EVENT _BEFORE _POPUPVIEW ) } ) , BI . createWidget ( { type : "bi.htape" , element : this , ref : function ( ) { a . comboWrapper = this } , items : [ { el : { type : "bi.icon_button" , cls : "bi-trigger-icon-button date-change-h-font" , width : 24 , height : 24 , ref : function ( ) { a . changeIcon = this } } , width : 24 } , this . combo ] } ) , this . _checkDynamicValue ( b . value ) } , _checkDynamicValue : function ( a ) { var b = null ; switch ( BI . isNotNull ( a ) && ( b = a . type ) , b ) { case BI . DynamicYearCombo . Dynamic : this . changeIcon . setVisible ( ! 0 ) , this . comboWrapper . attr ( "items" ) [ 0 ] . width = 24 , this . comboWrapper . resize ( ) ; break ; default : this . comboWrapper . attr ( "items" ) [ 0 ] . width = 0 , this . comboWrapper . resize ( ) , this . changeIcon . setVisible ( ! 1 ) } } , setValue : function ( a ) { this . storeValue = a , this . trigger . setValue ( a ) , this . _checkDynamicValue ( a ) } , getValue : function ( ) { return this . storeValue } } ) , BI . DynamicYearCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . DynamicYearCombo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . shortcut ( "bi.dynamic_year_combo" , BI . DynamicYearCombo ) , BI . extend ( BI . DynamicYearCombo , { Static : 1 , Dynamic : 2 } ) , BI . DynamicYearPopup = BI . inherit ( BI . Widget , { constants : { tabHeight : 30 , buttonHeight : 24 } , props : { baseCls : "bi-year-popup" , behaviors : { } , min : "1900-01-01" , max : "2099-12-31" , width : 180 , height : 240 } , render : function ( ) { var a = this , b = ( this . options , this . constants ) ; return this . storeValue = { type : BI . DynamicYearCombo . Static } , { type : "bi.vtape" , items : [ { el : this . _getTabJson ( ) } , { el : { type : "bi.grid" , items : [ [ { type : "bi.text_button" , forceCenter : ! 0 , cls : "bi-border-top bi-high-light" , textHeight : b . buttonHeight - 1 , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_Clear" ) , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicYearPopup . BUTTON _CLEAR _EVENT _CHANGE ) } } ] } , { type : "bi.text_button" , forceCenter : ! 0 , textHeight : b . buttonHeight - 1 , cls : "bi-border-left bi-border-right bi-high-light bi-border-top" , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_Current_Year" ) , ref : function ( ) { a . textButton = this } , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicYearPopup . BUTTON _lABEL _EVENT _CHANGE ) } } ] } , { type : "bi.text_button" , forceCenter : ! 0 , cls : "bi-border-top bi-high-light" , textHeight : b . buttonHeight - 1 , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_OK" ) , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicYearPopup . BUTTON _OK _EVENT _CHANGE ) } } ] } ] ] } , height : 24 } ] } } , _setInnerValue : function ( ) { if ( this . dateTab . getSelect ( ) === BI . DynamicDateCombo . Static ) this . textButton . setValue ( BI . i18nText ( "BI-Basic_Current_Year" ) ) , this . textButton . setEnable ( ! 0 ) ; else { var a = BI . DynamicDateHelper . getCalculation ( this . dynamicPane . getValue ( ) ) ; a = a . print ( "%Y" ) , this . textButton . setValue ( a ) , this . textButton . setEnable ( ! 1 ) } } , _getTabJson : function ( ) { var a = this , b = this . options ; return { type : "bi.tab" , ref : function ( ) { a . dateTab = this } , tab : { type : "bi.linear_segment" , cls : "bi-border-bottom" , height : this . constants . tabHeight , items : BI . createItems ( [ { text : BI . i18nText ( "BI-Basic_Year_Fen" ) , value : BI . DynamicYearCombo . Static } , { text : BI . i18nText ( "BI-Basic_Dynamic_Title" ) , value : BI . DynamicYearCombo . Dynamic } ] , { textAlign : "center" } ) } , cardCreator : function ( c ) { switch ( c ) { case BI . DynamicYearCombo . Dynamic : return { type : "bi.dynamic_year_card" , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { a . _setInnerValue ( a . year , c ) } } ] , ref : function ( ) { a . dynamicPane = this } } ; case BI . DynamicYearCombo . Static : default : return { type : "bi.static_year_card" , behaviors : b . behaviors , min : a . options . min , max : a . options . max , listeners : [ { eventName : BI . StaticYearCard . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicYearPopup . EVENT _CHANGE ) } } ] , ref : function ( ) { a . year = this } } } } , listeners : [ { eventName : BI . Tab . EVENT _CHANGE , action : function ( ) { var b = a . dateTab . getSelect ( ) ; switch ( b ) { case BI . DynamicYearCombo . Static : var c = BI . DynamicDateHelper . getCalculation ( a . dynamicPane . getValue ( ) ) ; a . year . setValue ( { year : c . getFullYear ( ) } ) , a . _setInnerValue ( ) ; break ; case BI . DynamicYearCombo . Dynamic : default : a . storeValue && a . storeValue . type === BI
} ) , this . trigger . on ( BI . DynamicYearQuarterTrigger . EVENT _KEY _DOWN , function ( ) { a . combo . isViewVisible ( ) && a . combo . hideView ( ) } ) , this . trigger . on ( BI . DynamicYearQuarterTrigger . EVENT _START , function ( ) { a . combo . isViewVisible ( ) && a . combo . hideView ( ) } ) , this . trigger . on ( BI . DynamicYearQuarterTrigger . EVENT _STOP , function ( ) { a . combo . showView ( ) } ) , this . trigger . on ( BI . DynamicYearQuarterTrigger . EVENT _ERROR , function ( ) { a . combo . isViewVisible ( ) && a . combo . hideView ( ) } ) , this . trigger . on ( BI . DynamicYearQuarterTrigger . EVENT _CONFIRM , function ( ) { var b = a . storeTriggerValue , c = a . trigger . getKey ( ) ; BI . isNotEmptyString ( c ) && ! BI . isEqual ( c , b ) && ( a . storeValue = a . trigger . getValue ( ) , a . setValue ( a . trigger . getValue ( ) ) ) , a . _checkDynamicValue ( a . storeValue ) , a . fireEvent ( BI . DynamicYearQuarterCombo . EVENT _CONFIRM ) } ) , this . trigger . on ( BI . DynamicYearQuarterTrigger . EVENT _FOCUS , function ( ) { a . storeTriggerValue = a . trigger . getKey ( ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , container : b . container , isNeedAdjustHeight : ! 1 , isNeedAdjustWidth : ! 1 , el : this . trigger , popup : { minWidth : 85 , stopPropagation : ! 1 , el : { type : "bi.dynamic_year_quarter_popup" , ref : function ( ) { a . popup = this } , listeners : [ { eventName : BI . DynamicYearQuarterPopup . EVENT _CHANGE , action : function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . combo . hideView ( ) , a . fireEvent ( BI . DynamicYearQuarterCombo . EVENT _CONFIRM ) } } , { eventName : BI . DynamicYearQuarterPopup . BUTTON _CLEAR _EVENT _CHANGE , action : function ( ) { a . setValue ( ) , a . combo . hideView ( ) , a . fireEvent ( BI . DynamicYearQuarterCombo . EVENT _CONFIRM ) } } , { eventName : BI . DynamicYearQuarterPopup . BUTTON _lABEL _EVENT _CHANGE , action : function ( ) { var b = BI . getDate ( ) ; a . setValue ( { type : BI . DynamicYearMonthCombo . Static , value : { year : b . getFullYear ( ) , quarter : b . getQuarter ( ) } } ) , a . combo . hideView ( ) , a . fireEvent ( BI . DynamicDateCombo . EVENT _CONFIRM ) } } , { eventName : BI . DynamicYearQuarterPopup . BUTTON _OK _EVENT _CHANGE , action : function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . combo . hideView ( ) , a . fireEvent ( BI . DynamicDateCombo . EVENT _CONFIRM ) } } ] , behaviors : b . behaviors , min : b . min , max : b . max } , value : b . value || "" } } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { a . popup . setValue ( a . storeValue ) , a . fireEvent ( BI . DynamicYearQuarterCombo . EVENT _BEFORE _POPUPVIEW ) } ) , BI . createWidget ( { type : "bi.htape" , element : this , ref : function ( ) { a . comboWrapper = this } , items : [ { el : { type : "bi.icon_button" , cls : "bi-trigger-icon-button date-change-h-font" , width : 24 , height : 24 , ref : function ( ) { a . changeIcon = this } } , width : 24 } , this . combo ] } ) , this . _checkDynamicValue ( b . value ) } , _checkDynamicValue : function ( a ) { var b = null ; switch ( BI . isNotNull ( a ) && ( b = a . type ) , b ) { case BI . DynamicYearQuarterCombo . Dynamic : this . changeIcon . setVisible ( ! 0 ) , this . comboWrapper . attr ( "items" ) [ 0 ] . width = 24 , this . comboWrapper . resize ( ) ; break ; default : this . comboWrapper . attr ( "items" ) [ 0 ] . width = 0 , this . comboWrapper . resize ( ) , this . changeIcon . setVisible ( ! 1 ) } } , setValue : function ( a ) { this . storeValue = a , this . trigger . setValue ( a ) , this . _checkDynamicValue ( a ) } , getValue : function ( ) { return this . storeValue } } ) , BI . DynamicYearQuarterCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . DynamicYearQuarterCombo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . shortcut ( "bi.dynamic_year_quarter_combo" , BI . DynamicYearQuarterCombo ) , BI . extend ( BI . DynamicYearQuarterCombo , { Static : 1 , Dynamic : 2 } ) , BI . DynamicYearQuarterPopup = BI . inherit ( BI . Widget , { constants : { tabHeight : 30 , buttonHeight : 24 } , props : { baseCls : "bi-year-quarter-popup" , behaviors : { } , min : "1900-01-01" , max : "2099-12-31" , width : 180 , height : 240 } , render : function ( ) { var a = this , b = ( this . options , this . constants ) ; return this . storeValue = { type : BI . DynamicYearQuarterCombo . Static } , { type : "bi.vtape" , items : [ { el : this . _getTabJson ( ) } , { el : { type : "bi.grid" , items : [ [ { type : "bi.text_button" , forceCenter : ! 0 , cls : "bi-border-top bi-high-light" , shadow : ! 0 , textHeight : b . buttonHeight - 1 , text : BI . i18nText ( "BI-Basic_Clear" ) , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicYearQuarterPopup . BUTTON _CLEAR _EVENT _CHANGE ) } } ] } , { type : "bi.text_button" , forceCenter : ! 0 , cls : "bi-border-left bi-border-right bi-high-light bi-border-top" , textHeight : b . buttonHeight - 1 , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_Current_Quarter" ) , ref : function ( ) { a . textButton = this } , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : f
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 . 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 } ( ) , function ( ) { var a = { on : function ( a , b , d ) { if ( ! c ( this , "on" , a , [ b , d ] ) || ! b ) return this ; this . _events || ( this . _events = { } ) ; var e = this . _events [ a ] || ( this . _events [ a ] = [ ] ) ; return e . push ( { callback : b , context : d , ctx : d || this } ) , this } , once : function ( a , b , d ) { if ( ! c ( this , "once" , a , [ b , d ] ) || ! b ) return this ; var e = this , f = _ . once ( function ( ) { e . off ( a , f ) , b . apply ( this , arguments ) } ) ; return f . _callback = b , this . on ( a , f , d ) } , off : function ( a , b , d ) { if ( ! this . _events || ! c ( this , "off" , a , [ b , d ] ) ) return this ; if ( ! a && ! b && ! d ) return this . _events = void 0 , this ; for ( var e = a ? [ a ] : _ . keys ( this . _events ) , f = 0 , g = e . length ; f < g ; f ++ ) { a = e [ f ] ; var h = this . _events [ a ] ; if ( h ) if ( b || d ) { for ( var i = [ ] , j = 0 , k = h . length ; j < k ; j ++ ) { var l = h [ j ] ; ( b && b !== l . callback && b !== l . callback . _callback || d && d !== l . context ) && i . push ( l ) } i . length ? this . _events [ a ] = i : delete this . _events [ a ] } else delete this . _events [ a ] } return this } , un : function ( ) { this . off . apply ( this , arguments ) } , trigger : function ( a ) { if ( ! this . _events ) return this ; var b = slice . call ( arguments , 1 ) ; if ( ! c ( this , "trigger" , a , b ) ) return this ; var e = this . _events [ a ] , f = this . _events . all ; return e && d ( e , b ) , f && d ( f , arguments ) , this } , fireEvent : function ( ) { this . trigger . apply ( this , arguments ) } , listenTo : function ( a , b , c ) { var d = this . _listeningTo || ( this . _listeningTo = { } ) , e = a . _listenId || ( a . _listenId = _ . uniqueId ( "l" ) ) ; return d [ e ] = a , c || "object" != typeof b || ( c = this ) , a . on ( b , c , this ) , this } , listenToOnce : function ( a , c , d ) { if ( "object" == typeof c ) { for ( var e in c ) this . listenToOnce ( a , e , c [ e ] ) ; return this } if ( b . test ( c ) ) { for ( var f = c . split ( b ) , g = 0 , h = f . length ; g < h ; g ++ ) this . listenToOnce ( a , f [ g ] , d ) ; return this } if ( ! d ) return this ; var i = _ . once ( function ( ) { this . stopListening ( a , c , i ) , d . apply ( this , arguments ) } ) ; return i . _callback = d , this . listenTo ( a , c , i ) } , stopListening : function ( a , b , c ) { var d = this . _listeningTo ; if ( ! d ) return this ; var e = ! b && ! c ; c || "object" != typeof b || ( c = this ) , a && ( ( d = { } ) [ a . _listenId ] = a ) ; for ( var f in d ) a = d [ f ] , a . off ( b , c , this ) , ( e || _ . isEmpty ( a . _events ) ) && delete this . _listeningTo [ f ] ; return this } } , b = /\s+/ , c = function ( a , c , d , e ) { if ( ! d ) return ! 0 ; if ( "object" == typeof d ) { for ( var f in d ) a [ c ] . apply ( a , [ f , d [ f ] ] . concat ( e ) ) ; return ! 1 } if ( b . test ( d ) ) { for ( var g = d . split ( b ) , h = 0 , i = g . length ; h < i ; h ++ ) a [ c ] . apply ( a , [ g [ h ] ] . concat ( e ) ) ; return ! 1 } return ! 0 } , d = function ( a , b ) { var c , d = - 1 , e = a . length , f = b [ 0 ] , g = b [ 1 ] , h = b [ 2 ] ; switch ( b . length ) { case 0 : for ( ; ++ d < e ; ) ( c = a [ d ] ) . callback . call ( c . ctx ) ; return ; case 1 : for ( ; ++ d < e ; ) ( c = a [ d ] ) . callback . call ( c . ctx , f ) ; return ; case 2 : for ( ; ++ d < e ; ) ( c = a [ d ] ) . callback . call ( c . ctx , f , g ) ; return ; case 3 : for ( ; ++ d < e ; ) ( c = a [ d ] ) . callback . call ( c . ctx , f , g , h ) ; return ; default : for ( ; ++ d < e ; ) ( c = a [ d ] ) . callback . apply ( c . ctx , b ) ; return } } , e = BI . Router = function ( a ) { a || ( a = { } ) , a . routes && ( this . routes = a . routes ) , this . _bindRoutes ( ) , this . _init . apply ( this , arguments ) } , f = /\((.*?)\)/g , g = /(\(\?)?:\w+/g , h = /\*\w+/g , i = /[\-{}\[\]+?.,\\\^$|#\s]/g ; _ . extend ( e . prototype , a , { _init : function ( ) { } , route : function ( a , b , c ) { _ . isRegExp ( a ) || ( a = this . _routeToRegExp ( a ) ) , _ . isFunction ( b ) && ( c = b , b = "" ) , c || ( c = this [ b ] ) ; var d = this ; return BI . history . route ( a , function ( e ) { var f = d . _extractParameters ( a , e ) ; d . execute ( c , f , b ) !== ! 1 && ( d . trigger . apply ( d , [ "route:" + b ] . concat ( f ) ) , d . trigger ( "route" , b , f ) , BI . history . trigger ( "route" , d , b , f ) ) } ) , this } , execute : function ( a , b , c ) { a && a . apply ( this , b ) } , navigate : function ( a , b ) { return BI . history . navigate ( a , b ) , this } , _bindRoutes : function ( ) { if ( this . routes ) { this . routes = _ . result ( this , "routes" ) ; for ( var a , b = _ . keys ( this . routes ) ; null != ( a = b . pop ( ) ) ; ) this . route ( a , this . routes [ a ] ) } } , _routeToRegExp : function ( a ) { return a = a . replace ( i , "\\$&" ) . replace ( f , "(?:$1)?" ) . replace ( g , function ( a , b ) { return b ? a : "([^/?]+)" } ) . replace ( h , "([^?]*?)" ) , new RegExp ( "^" + a + "(?:\\?([\\s\\S]*))?$" ) } , _extractParameters : function ( a , b ) { var c = a . exec ( b ) . slice ( 1 ) ; return _ . map ( c , function ( a , b ) { return b === c . length - 1 ? a || null : a ? decodeURIComponent ( a ) : null } ) } } ) ; var j = function ( ) { this . handlers = [ ] , this . checkUrl = _ . bind ( this . checkUrl , this ) , "undefined" != typeof window && ( this . location = win